diff --git a/.changeset/config.json b/.changeset/config.json index a7c147d5c..f34bb73fb 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -11,6 +11,5 @@ "updateInternalDependencies": "patch", "privatePackages": { "version": false - }, - "ignore": ["@delvtech/hyperdrive-js-core"] + } } diff --git a/.gitignore b/.gitignore index 0e8562f58..8090b294b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ dist dist-ssr *.local +*.tgz # dependencies node_modules diff --git a/README.md b/README.md index 9897d91de..470b88f44 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,11 @@ Powered by [TurboRepo](https://turbo.build). Apps - [hyperdrive-trading](apps/hyperdrive-trading/) - A simple frontend for interacting with Hyperdrive. -- [hyperdrive-sdk-docs](apps/hyperdrive-sdk-docs/) - Docs site for the Hyperdrive SDK. - [sdk-sandbox](apps/sdk-sandbox/) - A sandbox for trying out the Hyperdrive SDK. Packages -- [@delvtech/hyperdrive-js-core](packages/hyperdrive-js-core/) - Hyperdrive SDK core logic. -- [@delvtech/hyperdrive-viem](packages/hyperdrive-viem/) - Viem bindings for `@delvtech/hyperdrive-js-core`. +- [@delvtech/hyperdrive-js](packages/hyperdrive-js/) - Hyperdrive SDK. - [@delvtech/hyperdrive-artifacts](packages/hyperdrive-artifacts/) - ABIs and bytecode for Hyperdrive contracts. - [@delvtech/fixed-point-wasm](packages/hyperdrive-artifacts/) - Wasm bindings for the [fixedpointmath](https://github.com/delvtech/hyperdrive-rs/tree/main/crates/fixedpointmath) Rust crate. - [@delvtech/hyperdrive-wasm](packages/hyperdrive-artifacts/) - Wasm bindings for the [Hyperdrive Rust SDK](https://github.com/delvtech/hyperdrive-rs). diff --git a/apps/hyperdrive-sdk-docs/.eslintrc b/apps/hyperdrive-sdk-docs/.eslintrc deleted file mode 100644 index cde9c3832..000000000 --- a/apps/hyperdrive-sdk-docs/.eslintrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": [ - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "plugin:@docusaurus/recommended", - "@hyperdrive/eslint-config" - ], - "parserOptions": { - "sourceType": "module" - }, - "rules": { - "@typescript-eslint/no-var-requires": "off", - "import/no-unresolved": [ - 2, - { - "ignore": ["^@theme", "^@docusaurus", "^@site"] - } - ] - } -} diff --git a/apps/hyperdrive-sdk-docs/.gitignore b/apps/hyperdrive-sdk-docs/.gitignore deleted file mode 100644 index 41f1b9bd2..000000000 --- a/apps/hyperdrive-sdk-docs/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Generated TypeDoc files -docs/sdk/api-reference - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/apps/hyperdrive-sdk-docs/.prettierignore b/apps/hyperdrive-sdk-docs/.prettierignore deleted file mode 100644 index c82357e6d..000000000 --- a/apps/hyperdrive-sdk-docs/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -build -node_modules -.docusaurus - -# generated files -docs/sdk/api-reference \ No newline at end of file diff --git a/apps/hyperdrive-sdk-docs/.prettierrc.mjs b/apps/hyperdrive-sdk-docs/.prettierrc.mjs deleted file mode 100644 index c9a63a1d6..000000000 --- a/apps/hyperdrive-sdk-docs/.prettierrc.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import repoConfig from "@hyperdrive/prettier-config"; - -/** @type {import("prettier").Config} */ -export default { - ...repoConfig, - plugins: ["prettier-plugin-organize-imports"], -}; diff --git a/apps/hyperdrive-sdk-docs/LICENSE b/apps/hyperdrive-sdk-docs/LICENSE deleted file mode 100644 index 4f4a9cf45..000000000 --- a/apps/hyperdrive-sdk-docs/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - 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 [2024] [DELV, Inc] - - 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/apps/hyperdrive-sdk-docs/README.md b/apps/hyperdrive-sdk-docs/README.md deleted file mode 100644 index 0c6c2c27b..000000000 --- a/apps/hyperdrive-sdk-docs/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Website - -This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. - -### Installation - -``` -$ yarn -``` - -### Local Development - -``` -$ yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -### Build - -``` -$ yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -### Deployment - -Using SSH: - -``` -$ USE_SSH=true yarn deploy -``` - -Not using SSH: - -``` -$ GIT_USER= yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/apps/hyperdrive-sdk-docs/babel.config.js b/apps/hyperdrive-sdk-docs/babel.config.js deleted file mode 100644 index bfd75dbdf..000000000 --- a/apps/hyperdrive-sdk-docs/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve("@docusaurus/core/lib/babel/preset")], -}; diff --git a/apps/hyperdrive-sdk-docs/docs/cli/index.md b/apps/hyperdrive-sdk-docs/docs/cli/index.md deleted file mode 100644 index 65b3206d9..000000000 --- a/apps/hyperdrive-sdk-docs/docs/cli/index.md +++ /dev/null @@ -1 +0,0 @@ -# Docs for the CLI diff --git a/apps/hyperdrive-sdk-docs/docs/sdk/_category_.yml b/apps/hyperdrive-sdk-docs/docs/sdk/_category_.yml deleted file mode 100644 index c5d5974f5..000000000 --- a/apps/hyperdrive-sdk-docs/docs/sdk/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "API" diff --git a/apps/hyperdrive-sdk-docs/docs/sdk/guides/_category_.yml b/apps/hyperdrive-sdk-docs/docs/sdk/guides/_category_.yml deleted file mode 100644 index 4d79c6089..000000000 --- a/apps/hyperdrive-sdk-docs/docs/sdk/guides/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Guides" diff --git a/apps/hyperdrive-sdk-docs/docs/sdk/guides/integrate-with-react.md b/apps/hyperdrive-sdk-docs/docs/sdk/guides/integrate-with-react.md deleted file mode 100644 index 3cd8906cd..000000000 --- a/apps/hyperdrive-sdk-docs/docs/sdk/guides/integrate-with-react.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -id: react -title: Integrate with React ---- - -## Overview - -In this short guide, we'll use [Wagmi](https://wagmi.sh) and -[`@delvtech/hyperdrive-viem`](https://github.com/delvtech/hyperdrive-frontend/tree/main/packages/hyperdrive-viem) -to create `useReadHyperdrive` and `useReadWriteHyperdrive` hooks for React apps. -The steps will be similar for other implementations of the SDK. - -### 1. Create a global sdk cache - -Create a cache instance that will be used for all SDK interactions. - -```ts -import { createLruSimpleCache } from "@delvtech/hyperdrive-viem"; - -export const sdkCache = createLruSimpleCache({ max: 500 }); -``` - -### 2. Create a `useReadHyperdrive` hook - -```ts -import { - ReadHyperdrive, - createReadHyperdrive, -} from "@delvtech/hyperdrive-viem"; -import { useMemo } from "react"; -import { useChainId, usePublicClient } from "wagmi"; -import { sdkCache } from "path/to/sdkCache"; // <- Change to your sdk path - -/** - * Returns a `ReadHyperdrive` instance for a given address. - */ -export function useReadHyperdrive( - address: `0x${string}` | undefined, -): ReadHyperdrive | undefined { - // Get the chain id and public client - const chainId = useChainId(); - const publicClient = usePublicClient(); - - // Optionally wrap the instance in useMemo - return useMemo(() => { - if (!address || !publicClient) { - return undefined; - } - - return createReadHyperdrive({ - address, - publicClient, - cache: sdkCache, - // Use the namespace to prefix cache keys - namespace: chainId.toString(), - }); - }, [address, chainId, publicClient]); -} -``` - -### 3. Create a `useReadWriteHyperdrive` hook - -```ts -import { - ReadHyperdrive, - createReadHyperdrive, -} from "@delvtech/hyperdrive-viem"; -import { useMemo } from "react"; -import { useChainId, usePublicClient, useWalletClient } from "wagmi"; -import { sdkCache } from "path/to/sdkCache"; // <- Change to your sdk path - -/** - * Returns a `ReadWriteHyperdrive` instance for a given address. - */ -export function useReadWriteHyperdrive( - address: `0x${string}` | undefined, -): ReadWriteHyperdrive | undefined { - // Get the chain id and clients - const chainId = useChainId(); - const publicClient = usePublicClient(); - const { data: walletClient } = useWalletClient(); - - // Optionally wrap the instance in useMemo - return useMemo(() => { - if (!address || !publicClient || !walletClient) { - return undefined; - } - - return createReadWriteHyperdrive({ - address, - publicClient, - walletClient, - cache: sdkCache, - // Use the namespace to prefix cache keys - namespace: chainId.toString(), - }); - }, [address, chainId, publicClient, walletClient]); -} -``` diff --git a/apps/hyperdrive-sdk-docs/docs/sdk/guides/open-a-position.md b/apps/hyperdrive-sdk-docs/docs/sdk/guides/open-a-position.md deleted file mode 100644 index 751340501..000000000 --- a/apps/hyperdrive-sdk-docs/docs/sdk/guides/open-a-position.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: position -title: Open a Position ---- - -## Overview - -In this short guide, we'll use a -[`ReadWriteHyperdrive`][ReadWriteHyperdrive-reference] instance to open a long -position, locking in a fixed rate (Read more about [long -positions](https://app.gitbook.com/o/-MXeT9pntmqRJiE1hMf6/s/XxVgcFIHiBW2xa7lepeu/~/changes/11/hyperdrive-overview/position-types/longs-fixed-rates) -in the [Hyperdrive -docs](https://app.gitbook.com/o/-MXeT9pntmqRJiE1hMf6/s/XxVgcFIHiBW2xa7lepeu/~/changes/11/hyperdrive-overview/overview)). -The steps will be similar for short and LP positions. - -> This guide assumes you've already installed an implementation of the Hyperdrive -> TypeScript SDK and created a -> [`ReadWriteHyperdrive`][ReadWriteHyperdrive-reference] instance. Checkout the -> [Getting Started](/docs/sdk/) guide to learn how. - -### 1. Get the current vault share price - -We'll start by getting the current share price of the pool using the -[`getPoolInfo`](/docs/sdk/api-reference/classes/ReadHyperdrive#getpoolinfo) method which -will be used as the minimum share price for the open long transaction: - -```ts -import { hyperdrive } from "./hyperdrive.ts"; - -const { vaultSharePrice } = await hyperdrive.getPoolInfo(); -``` - -### 2. Calculate slippage tolerance - -Use the -[`previewOpenLong`](/docs/sdk/api-reference/classes/ReadHyperdrive#previewopenlong) -method to get the expected proceeds and adjust to match your slippage tolerance: - -```ts -// Import path depends on the Hyperdrive SDK implementation you have installed. -import { adjustAmountByPercentage } from "@delvtech/hyperdrive-viem"; - -// 1. Preview the transaction -const { bondProceeds } = await hyperdrive.previewOpenLong({ - amountIn: 10000000000000000000000n, - asBase: true, // <- Or false to deposit share tokens - decimals: 18, -}); - -// 2. Adjust by your slippage tolerance -const minBondsOut = adjustAmountByPercentage({ - amount: bondProceeds, - percentage: parseUnits("1", 18), // <- Adjust for your tolerance - decimals: 18, - direction: "down", -}); -``` - -### 3. Open the position - -Use the [`openLong`](/docs/sdk/api-reference/classes/ReadWriteHyperdrive#openlong) method to -send the transaction with the minimum expected share price and your slippage -tolerance. - -```tsx -const pendingTransactionHash = await readWriteHyperdrive.openLong({ - amount: 10000000000000000000000n, - asBase: true, - destination: "0x123abc...", - minSharePrice: vaultSharePrice, - minBondsOut, -}); -``` - -[ReadWriteHyperdrive-reference]: /docs/sdk/api-reference/classes/ReadWriteHyperdrive diff --git a/apps/hyperdrive-sdk-docs/docs/sdk/index.md b/apps/hyperdrive-sdk-docs/docs/sdk/index.md deleted file mode 100644 index e4163adca..000000000 --- a/apps/hyperdrive-sdk-docs/docs/sdk/index.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -id: "index" -title: "Getting Started" -sidebar_position: 0 -custom_edit_url: null ---- - -# Getting Started - -A TypeScript SDK for the [Hyperdrive -AMM](https://www.github.com/delvtech/hyperdrive). - -The SDK has been designed to seamlessly integrate with multiple web3 libraries. -Choose one below to get started: - -- [Getting Started](#getting-started) - - [Viem Quickstart](#viem-quickstart) - - [Install](#install) - - [Using the `ReadHyperdrive`](#using-the-readhyperdrive) - - [Using the `ReadWriteHyperdrive`](#using-the-readwritehyperdrive) - - [Ethers Quickstart](#ethers-quickstart) - - [Web3.js Quickstart](#web3js-quickstart) - -## Viem Quickstart - -To use the Hyperdrive SDK with [Viem](https://viem.sh): - -### Install - -```sh -npm i viem @delvtech/hyperdrive-viem -``` - -### Using the `ReadHyperdrive` - -The [`ReadHyperdrive`][ReadHyperdrive-reference] interface provides methods for -fetching data and performing calculations with a public client. - -```ts -import { createPublicClient, http } from "viem"; -import { mainnet } from "viem/chains"; -import { createReadHyperdrive } from "@delvtech/hyperdrive-viem"; - -// 1. Create a public client -const publicClient = createPublicClient({ - chain: mainnet, - transport: http(), -}); - -// 2. Create a ReadHyperdrive instance -const hyperdrive = createReadHyperdrive({ - address: "0x...", - publicClient, -}); - -// 3. Get data from the contracts -const liquidity = await hyperdrive.getIdleLiquidity(); -``` - -### Using the `ReadWriteHyperdrive` - -The [`ReadWriteHyperdrive`][ReadWriteHyperdrive-reference] interface extends -[`ReadHyperdrive`][ReadHyperdrive-reference] with additional methods for sending -transactions with a wallet client. - -```ts -import { createPublicClient, createWalletClient, custom, http } from "viem"; -import { mainnet } from "viem/chains"; -import { createReadHyperdrive } from "@delvtech/hyperdrive-viem"; - -// 1. Create a public client -const publicClient = createPublicClient({ - chain: mainnet, - transport: http(), -}); - -// 2. Create a wallet client -const client = createWalletClient({ - chain: mainnet, - transport: custom(window.ethereum!), -}); - -// 3. Create a ReadWriteHyperdrive instance -const hyperdrive = createReadWriteHyperdrive({ - address: "0x...", - publicClient, - walletClient, -}); - -// 4. Send a transaction -const transactionHash = await hyperdrive.pause(true); -``` - -## Ethers Quickstart - -_Coming soon!_ - -## Web3.js Quickstart - -_Coming soon!_ - -[ReadHyperdrive-reference]: /docs/sdk/api-reference/classes/ReadHyperdrive "ReadHyperdrive Reference" -[ReadWriteHyperdrive-reference]: /docs/sdk/api-reference/classes/ReadWriteHyperdrive "ReadWriteHyperdrive - Reference" diff --git a/apps/hyperdrive-sdk-docs/docusaurus.config.ts b/apps/hyperdrive-sdk-docs/docusaurus.config.ts deleted file mode 100644 index af380f398..000000000 --- a/apps/hyperdrive-sdk-docs/docusaurus.config.ts +++ /dev/null @@ -1,163 +0,0 @@ -import type { Config } from "@docusaurus/types"; -import { themes as prismThemes } from "prism-react-renderer"; -import defaultTypeDocConfig from "./typedoc.json"; - -const config: Config = { - title: "Hyperdrive SDK Docs", - favicon: "/img/favicon.svg", - - stylesheets: [ - "https://fonts.googleapis.com/css2?family=Chakra+Petch:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700", - "https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500", - "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap", - ], - - // Set the production url of your site here - url: "https://hyperdrive.delv.tech", - // Set the // pathname under which your site is served - // For GitHub pages deployment, it is often '//' - baseUrl: "/", - - plugins: [ - "docusaurus-plugin-sass", - [ - "docusaurus-plugin-typedoc", - - // Plugin / TypeDoc options - { - id: "hyperdrive-js-core", - entryPoints: ["../../packages/hyperdrive-js-core"], - entryPointStrategy: "packages", - sidebar: { - fullNames: true, - }, - out: "sdk/api-reference", - - ...defaultTypeDocConfig, - }, - ], - ], - - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - // organizationName: "facebook", // Usually your GitHub org/user name. - // projectName: "docusaurus", // Usually your repo name. - - onBrokenLinks: "warn", - onBrokenMarkdownLinks: "warn", - - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". - i18n: { - defaultLocale: "en", - locales: ["en"], - }, - - presets: [ - [ - "classic", - { - docs: { - sidebarPath: "./sidebars.ts", - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - "https://github.com/delvtech/hyperdrive-frontend/tree/main/apps/hyperdrive-sdk-docs/", - }, - theme: { - customCss: "./src/css/custom.scss", - }, - }, - ], - ], - - themeConfig: { - // image: "img/docusaurus-social-card.jpg", - navbar: { - title: "Hyperdrive SDK", - // logo: { - // alt: "My Site Logo", - // src: "img/logo.svg", - // }, - items: [ - { - type: "docSidebar", - sidebarId: "tutorialSidebar", - position: "left", - label: "Docs", - }, - // { - // type: "doc", - // position: "left", - // label: "CLI", - // docId: "cli/index", - // }, - { - href: "https://github.com/delvtech/hyperdrive-frontend/tree/main/packages/hyperdrive-js-core", - label: "GitHub", - position: "right", - }, - ], - }, - footer: { - style: "dark", - links: [ - { - title: "Docs", - items: [ - { - label: "Getting Started", - to: "/docs/sdk/", - }, - { - label: "Open a Position", - to: "/docs/sdk/guides/position", - }, - { - label: "Integrate with React", - to: "/docs/sdk/guides/react", - }, - // { - // label: "CLI", - // to: "/docs/cli", - // }, - ], - }, - { - title: "Community", - items: [ - { - label: "Discord", - href: "https://delv.tech/discord", - }, - { - label: "X", - href: "https://twitter.com/delv_tech", - }, - ], - }, - { - title: "More", - items: [ - { - label: "GitHub", - href: "https://github.com/delvtech/hyperdrive-frontend/tree/main/packages/hyperdrive-js-core", - }, - { - label: "DELV Blog", - href: "https://blog.delv.tech/", - }, - ], - }, - ], - copyright: `Copyright © ${new Date().getFullYear()} Element Finance Inc., dba DELV. All rights reserved`, - }, - prism: { - theme: prismThemes.github, - darkTheme: prismThemes.dracula, - }, - }, -}; - -export default config; diff --git a/apps/hyperdrive-sdk-docs/package.json b/apps/hyperdrive-sdk-docs/package.json deleted file mode 100644 index a2cde0502..000000000 --- a/apps/hyperdrive-sdk-docs/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "hyperdrive-sdk-docs", - "version": "0.0.0", - "private": true, - "license": "AGPL-3.0", - "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc" - }, - "dependencies": { - "@docusaurus/core": "3.1.0", - "@docusaurus/preset-classic": "3.1.0", - "@mdx-js/react": "^3.0.0", - "clsx": "^2.0.0", - "docusaurus-plugin-sass": "^0.2.5", - "prism-react-renderer": "^2.3.0", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "sass": "^1.72.0" - }, - "devDependencies": { - "@docusaurus/eslint-plugin": "^3.2.1", - "@docusaurus/module-type-aliases": "3.1.0", - "@docusaurus/tsconfig": "3.1.0", - "@docusaurus/types": "3.1.0", - "@hyperdrive/eslint-config": "*", - "@hyperdrive/prettier-config": "*", - "docusaurus-plugin-typedoc": "^0.22.0", - "eslint-plugin-react": "^7.34.1", - "typedoc": "^0.25.7", - "typedoc-plugin-markdown": "^3.17.1", - "typescript": "~5.2.2" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 3 chrome version", - "last 3 firefox version", - "last 5 safari version" - ] - }, - "engines": { - "node": ">=20.0" - } -} diff --git a/apps/hyperdrive-sdk-docs/sidebars.ts b/apps/hyperdrive-sdk-docs/sidebars.ts deleted file mode 100644 index f0e31a2a2..000000000 --- a/apps/hyperdrive-sdk-docs/sidebars.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; - -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ -const sidebars: SidebarsConfig = { - // By default, Docusaurus generates a sidebar from the docs folder structure - // tutorialSidebar: [{ type: "autogenerated", dirName: "." }], - - // But you can create a sidebar manually - tutorialSidebar: [ - { - type: "doc", - id: "sdk/index", - }, - { - type: "category", - label: "Guides", - items: ["sdk/guides/position", "sdk/guides/react"], - }, - - { - type: "category", - label: "API Reference", - items: [ - { - type: "doc", - id: "sdk/api-reference/classes/ReadHyperdrive", - label: "Read Hyperdrive", - }, - { - type: "doc", - id: "sdk/api-reference/classes/ReadWriteHyperdrive", - label: "Write Hyperdrive", - }, - ], - }, - ], -}; - -export default sidebars; diff --git a/apps/hyperdrive-sdk-docs/src/css/custom.scss b/apps/hyperdrive-sdk-docs/src/css/custom.scss deleted file mode 100644 index 515f1db09..000000000 --- a/apps/hyperdrive-sdk-docs/src/css/custom.scss +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* You can override the default Infima variables here. */ -:root { - --eggplant: #753f53; - --eggplant-100: #f3e9ed; - --eggplant-200: #dac7ce; - --eggplant-300: #c1a5af; - --eggplant-400: #8e6172; - --eggplant-500: var(--eggplant); - --eggplant-600: #462632; - --eggplant-700: #231319; - --eggplant-800: #170d11; - --eggplant-900: #0c0608; - - --aquamarine: #15ffab; - --aquamarine-100: #e8fff7; - --aquamarine-200: #d0ffee; - --aquamarine-300: #a1ffdd; - --aquamarine-400: #73ffcd; - --aquamarine-500: var(--aquamarine); - --aquamarine-600: #11cc89; - --aquamarine-700: #086644; - --aquamarine-800: #043322; - --aquamarine-900: #021a11; - --aquamarine-fade: #bdffd7; - - --neutral: #565e6f; - --neutral-100: #ffffff; - --neutral-200: #f5f7fa; - --neutral-300: #d3d5da; - --neutral-400: #8a92a3; - --neutral-500: var(--neutral); - --neutral-600: #4a5263; - --neutral-700: #2d323e; - --neutral-800: #1b1e26; - --neutral-900: #0f1117; - --neutral-950: #05060b; - --neutral-icon: #2e3747; - --neutral-content: #a4abba; - - --sky-blue: #14d3f9; - - /* Docusaurus variables */ - --ifm-color-primary: #0c8f60; - --ifm-color-primary-dark: #0b8156; - --ifm-color-primary-darker: #0a7a52; - --ifm-color-primary-darkest: #086443; - --ifm-color-primary-light: #0d9d6a; - --ifm-color-primary-lighter: #0ea46e; - --ifm-color-primary-lightest: #10ba7d; - --ifm-code-font-size: 95%; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); - - font-family: "Inter", sans-serif; -} - -/* For readability concerns, you should choose a lighter palette in dark mode. */ -[data-theme="dark"] { - --ifm-color-primary: var(--aquamarine); - --ifm-color-primary-dark: #00f89f; - --ifm-color-primary-darker: #00eb96; - --ifm-color-primary-darkest: #00c17c; - --ifm-color-primary-light: #31ffb5; - --ifm-color-primary-lighter: #3effba; - --ifm-color-primary-lightest: #68ffc9; - --ifm-background-color: var(--neutral-900); - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); -} - -html { - background: var(--neutral-100); -} -html[data-theme="dark"] { - background: var(--neutral-900); -} - -code, -pre { - font-family: "DM Mono", monospace; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: "Chakra Petch"; - font-weight: 500; -} - -.navbar { - background-color: var(--neutral-100); - border-bottom: 1px solid var(--neutral-300); -} -[data-theme="dark"] .navbar { - background-color: var(--neutral-900); - border-bottom: 1px solid var(--neutral-700); -} - -.footer { - background-color: var(--neutral-900); -} - -.button { - background: none; - border: 1px solid var(--neutral); - color: var(--neutral-900); - border-radius: 0; - font-size: 16px; - text-transform: uppercase; - font-family: "DM Mono", monospace; - font-weight: 500; - transition: all 200ms; - - &.button--secondary { - background: none; - border: 1px solid var(--neutral); - color: var(--neutral-900); - } -} - -[data-theme="dark"] .button { - color: var(--neutral-100); - - &.button--secondary { - color: var(--neutral-100); - } - - &:hover { - border-color: var(--aquamarine); - } -} - diff --git a/apps/hyperdrive-sdk-docs/src/css/types.d.ts b/apps/hyperdrive-sdk-docs/src/css/types.d.ts deleted file mode 100644 index bc73d67e5..000000000 --- a/apps/hyperdrive-sdk-docs/src/css/types.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -// SCSS module type declaration -declare module "*.scss" { - const content: Record; - export default content; -} diff --git a/apps/hyperdrive-sdk-docs/src/pages/index.module.scss b/apps/hyperdrive-sdk-docs/src/pages/index.module.scss deleted file mode 100644 index e415318a1..000000000 --- a/apps/hyperdrive-sdk-docs/src/pages/index.module.scss +++ /dev/null @@ -1,30 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.hero { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; - background: var(--neutral-900); - color: var(--neutral-100); - min-height: 100vh; - - .title { - background: linear-gradient(to right, var(--aquamarine), var(--sky-blue)) - text; - } -} - -@media screen and (max-width: 996px) { - .hero { - padding: 2rem; - } -} - -.heroImageDark { - display: block; - margin: 60px auto 0; -} \ No newline at end of file diff --git a/apps/hyperdrive-sdk-docs/src/pages/index.tsx b/apps/hyperdrive-sdk-docs/src/pages/index.tsx deleted file mode 100644 index 36565aa3d..000000000 --- a/apps/hyperdrive-sdk-docs/src/pages/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import Link from "@docusaurus/Link"; -import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import Heading from "@theme/Heading"; -import Layout from "@theme/Layout"; -import clsx from "clsx"; - -import styles from "./index.module.scss"; - -function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); - return ( -
-
-
- - {siteConfig.title} - -

{siteConfig.tagline}

-
- - Get Started - -
-
- -
-
- ); -} - -export default function Home(): JSX.Element { - const { siteConfig } = useDocusaurusContext(); - return ( - - - - ); -} diff --git a/apps/hyperdrive-sdk-docs/static/.nojekyll b/apps/hyperdrive-sdk-docs/static/.nojekyll deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/hyperdrive-sdk-docs/static/img/docusaurus-social-card.jpg b/apps/hyperdrive-sdk-docs/static/img/docusaurus-social-card.jpg deleted file mode 100644 index ffcb44821..000000000 Binary files a/apps/hyperdrive-sdk-docs/static/img/docusaurus-social-card.jpg and /dev/null differ diff --git a/apps/hyperdrive-sdk-docs/static/img/docusaurus.png b/apps/hyperdrive-sdk-docs/static/img/docusaurus.png deleted file mode 100644 index f458149e3..000000000 Binary files a/apps/hyperdrive-sdk-docs/static/img/docusaurus.png and /dev/null differ diff --git a/apps/hyperdrive-sdk-docs/static/img/favicon.svg b/apps/hyperdrive-sdk-docs/static/img/favicon.svg deleted file mode 100644 index da8218408..000000000 --- a/apps/hyperdrive-sdk-docs/static/img/favicon.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/hyperdrive-sdk-docs/static/img/hero-car-bg-dark.svg b/apps/hyperdrive-sdk-docs/static/img/hero-car-bg-dark.svg deleted file mode 100644 index fff77a802..000000000 --- a/apps/hyperdrive-sdk-docs/static/img/hero-car-bg-dark.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/hyperdrive-sdk-docs/static/img/logo.svg b/apps/hyperdrive-sdk-docs/static/img/logo.svg deleted file mode 100644 index 9db6d0d06..000000000 --- a/apps/hyperdrive-sdk-docs/static/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_mountain.svg b/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index af961c49a..000000000 --- a/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,171 +0,0 @@ - - Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_react.svg b/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 94b5cf08f..000000000 --- a/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,170 +0,0 @@ - - Powered by React - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_tree.svg b/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index d9161d339..000000000 --- a/apps/hyperdrive-sdk-docs/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,40 +0,0 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/hyperdrive-sdk-docs/tsconfig.json b/apps/hyperdrive-sdk-docs/tsconfig.json deleted file mode 100644 index 9f28985aa..000000000 --- a/apps/hyperdrive-sdk-docs/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - // This file is not used in compilation. It is here just for a nice editor experience. - "extends": "@docusaurus/tsconfig", - "compilerOptions": { - "baseUrl": ".", - "jsx": "react-jsx" - }, - "include": ["src", "docs"] -} diff --git a/apps/hyperdrive-sdk-docs/turbo.json b/apps/hyperdrive-sdk-docs/turbo.json deleted file mode 100644 index ca72050f3..000000000 --- a/apps/hyperdrive-sdk-docs/turbo.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"], - "tasks": { - "build": { - "dependsOn": ["@delvtech/hyperdrive-js-core#build"] - } - } -} diff --git a/apps/hyperdrive-sdk-docs/typedoc.json b/apps/hyperdrive-sdk-docs/typedoc.json deleted file mode 100644 index 80349602d..000000000 --- a/apps/hyperdrive-sdk-docs/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "excludeInternal": true, - "excludePrivate": true, - "excludeProtected": true -} diff --git a/apps/hyperdrive-trading/package.json b/apps/hyperdrive-trading/package.json index 551e00053..3ea5dbe0f 100644 --- a/apps/hyperdrive-trading/package.json +++ b/apps/hyperdrive-trading/package.json @@ -28,8 +28,8 @@ "gen:walletconnect": "bash ./scripts/generate-walletconnect.sh" }, "dependencies": { - "@delvtech/drift": "^0.0.1-beta.11", - "@delvtech/drift-viem": "^0.0.1-beta.13", + "@delvtech/drift": "^1.0.0", + "@delvtech/drift-viem": "^1.0.0", "@delvtech/fixed-point-wasm": "^0.0.8", "@delvtech/hyperdrive-appconfig": "^0.1.1", "@delvtech/hyperdrive-js": "^0.0.2", @@ -46,7 +46,6 @@ "@tanstack/react-router": "^1.87.7", "@tanstack/react-table": "^8.20.5", "@tanstack/router-devtools": "^1.87.7", - "@types/d3-format": "^3.0.4", "@types/lodash.groupby": "^4.6.9", "@types/lodash.sortby": "^4.7.9", "@types/lodash.uniqby": "^4.7.9", @@ -56,15 +55,13 @@ "@uniswap/v3-sdk": "^3.24.1", "@usecapsule/rainbowkit-wallet": "^0.9.4", "@usecapsule/react-sdk": "^3.17.0", - "@wagmi/core": "^2.16.3", + "@wagmi/core": "^2.20.3", "addreth": "3.0.1", "assert-never": "^1.2.1", "buffer": "^6.0.3", "calendar-link": "^2.6.0", "classnames": "^2.3.2", - "d3-format": "^3.1.0", "daisyui": "^4.12.2", - "dnum": "^2.9.0", "fuse.js": "^7.0.0", "graphql": "^16.9.0", "graphql-request": "^7.1.0", @@ -81,8 +78,8 @@ "react-use": "^17.4.2", "rollbar": "^2.26.4", "semver": "^7.6.3", - "viem": "^2.22.19", - "wagmi": "^2.14.9", + "viem": "^2.37.2", + "wagmi": "^2.16.9", "zod": "^3.23.8" }, "devDependencies": { @@ -109,7 +106,7 @@ "prettier-plugin-tailwindcss": "^0.6.5", "tailwindcss": "^3.4.7", "tailwindcss-debug-screens": "2.2.1", - "typescript": "^5.5.4", + "typescript": "^5.9.2", "vite": "^5.3.5", "vite-plugin-node-polyfills": "^0.22.0", "vite-tsconfig-paths": "^4.3.2", diff --git a/apps/hyperdrive-trading/src/base/latestBlocks.ts b/apps/hyperdrive-trading/src/base/latestBlocks.ts index 821dbed5d..bfa544d32 100644 --- a/apps/hyperdrive-trading/src/base/latestBlocks.ts +++ b/apps/hyperdrive-trading/src/base/latestBlocks.ts @@ -1,30 +1,72 @@ type PositionType = "long" | "short" | "lp"; -export const LATEST_POSITION_BLOCKS_BY_CHAIN_ID: Record< +export const POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID: Record< number, - Record + Record< + PositionType, + { + fromBlock: bigint; + toBlock: bigint; + } + > > = { 1: { - long: 22090872n, - short: 21391567n, - lp: 22108665n, + long: { + fromBlock: 20402093n, + toBlock: 22090872n, + }, + short: { + fromBlock: 20630203n, + toBlock: 21391567n, + }, + lp: { + fromBlock: 20471623n, + toBlock: 22108665n, + }, }, // Gnosis 100: { - long: 39086666n, - short: 39145215n, - lp: 39083204n, + long: { + fromBlock: 37974814n, + toBlock: 39086666n, + }, + short: { + fromBlock: 35855083n, + toBlock: 39145215n, + }, + lp: { + fromBlock: 37745479n, + toBlock: 39083204n, + }, }, // Linea 59144: { - long: 10622294n, - short: 10621975n, - lp: 15639198n, + long: { + fromBlock: 9282349n, + toBlock: 10622294n, + }, + short: { + fromBlock: 10621975n, + toBlock: 10621975n, + }, + lp: { + fromBlock: 10622476n, + toBlock: 15639198n, + }, }, // Base 8453: { - long: 28017409n, - short: 26080016n, - lp: 27852111n, + long: { + fromBlock: 21412173n, + toBlock: 28017409n, + }, + short: { + fromBlock: 26006959n, + toBlock: 26080016n, + }, + lp: { + fromBlock: 21410728n, + toBlock: 27852111n, + }, }, }; diff --git a/apps/hyperdrive-trading/src/base/makeQueryKey.ts b/apps/hyperdrive-trading/src/base/makeQueryKey.ts index ff7689555..4649dfad8 100644 --- a/apps/hyperdrive-trading/src/base/makeQueryKey.ts +++ b/apps/hyperdrive-trading/src/base/makeQueryKey.ts @@ -1,4 +1,4 @@ -import { createSerializableKey } from "@delvtech/drift"; +import { stringifyKey } from "@delvtech/drift"; import { QueryKey } from "@tanstack/query-core"; /** * This is a factory function for generating application-level query keys. By @@ -35,7 +35,7 @@ export function makeQueryKey2< }): QueryKey { return [ ...makeNamespaceQueryKey({ namespace, queryId }), - createSerializableKey(params as any), + stringifyKey(params as any), ]; } diff --git a/apps/hyperdrive-trading/src/drift/getDrift.ts b/apps/hyperdrive-trading/src/drift/getDrift.ts index 5f15e70d2..e66495260 100644 --- a/apps/hyperdrive-trading/src/drift/getDrift.ts +++ b/apps/hyperdrive-trading/src/drift/getDrift.ts @@ -1,23 +1,34 @@ -import { createLruSimpleCache, Drift, DriftOptions } from "@delvtech/drift"; +import { createDrift, LruStore, type Drift, type Store } from "@delvtech/drift"; import { viemAdapter } from "@delvtech/drift-viem"; -import { getPublicClient, GetPublicClientParameters } from "@wagmi/core"; +import { + getPublicClient, + getWalletClient, + type GetPublicClientParameters, + type GetWalletClientParameters, +} from "@wagmi/core"; import { wagmiConfig } from "src/network/wagmiClient"; -// 1 minute TTL to match the queryClient's staleTime -export const sdkCache = createLruSimpleCache({ max: 500, ttl: 60_000 }); +export const driftStore = new LruStore({ + max: 500, + ttl: 60_000, // 1 minute TTL to match the queryClient's staleTime +}); -export function getDriftOptions({ - chainId, -}: { - chainId?: number; -} = {}): DriftOptions { - return { - cache: sdkCache, - cacheNamespace: chainId, +type WagmiConfig = typeof wagmiConfig; + +export type GetDriftOptions = GetPublicClientParameters & + GetWalletClientParameters & { + store?: Store; }; -} -export function getDrift(params?: GetPublicClientParameters): Drift { - const publicClient = getPublicClient(wagmiConfig as any, params) as any; - return new Drift(viemAdapter({ publicClient }), getDriftOptions(params)); +export async function getDrift(options?: GetDriftOptions): Promise { + const publicClient = getPublicClient(wagmiConfig, options); + const walletClient = await getWalletClient(wagmiConfig, options).catch( + () => undefined, + ); + return createDrift({ + adapter: publicClient + ? viemAdapter({ publicClient, walletClient }) + : undefined, + store: options?.store || driftStore, + }); } diff --git a/apps/hyperdrive-trading/src/hyperdrive/getLpApy.ts b/apps/hyperdrive-trading/src/hyperdrive/getLpApy.ts index 2489d41aa..f4973ffa2 100644 --- a/apps/hyperdrive-trading/src/hyperdrive/getLpApy.ts +++ b/apps/hyperdrive-trading/src/hyperdrive/getLpApy.ts @@ -1,4 +1,3 @@ -import { Block } from "@delvtech/drift"; import { fixed } from "@delvtech/fixed-point-wasm"; import { AppConfig, @@ -51,8 +50,8 @@ export async function getLpApy({ appConfig: AppConfig; }): Promise { // Get current block and configuration - const currentBlock = (await readHyperdrive.drift.getBlock()) as Block; - const currentBlockNumber = currentBlock.blockNumber!; + const currentBlock = await readHyperdrive.drift.getBlock(); + const currentBlockNumber = currentBlock.number; const chainConfig = appConfig.chains[hyperdrive.chainId]; // Get yield source and calculate historical block range diff --git a/apps/hyperdrive-trading/src/rewards/getYieldSourceRate.ts b/apps/hyperdrive-trading/src/rewards/getYieldSourceRate.ts index 2c22c18f1..e0c5bb68a 100644 --- a/apps/hyperdrive-trading/src/rewards/getYieldSourceRate.ts +++ b/apps/hyperdrive-trading/src/rewards/getYieldSourceRate.ts @@ -1,4 +1,3 @@ -import { Block } from "@delvtech/drift"; import { fixed } from "@delvtech/fixed-point-wasm"; import { AppConfig, @@ -37,18 +36,16 @@ export async function getYieldSourceRate({ hyperdrive, }); - const currentBlock = (await readHyperdrive.drift.getBlock()) as Block; + const currentBlock = await readHyperdrive.drift.getBlock(); const initializationBlock = hyperdrive.initializationBlock; const isPoolYoungerThanOneRatePeriod = - initializationBlock > - currentBlock.blockNumber! - numBlocksForHistoricalRate; + initializationBlock > currentBlock.number - numBlocksForHistoricalRate; // If we don't have enough blocks to go back 1 full historical period, then // grab the all-time rate instead. if (isPoolYoungerThanOneRatePeriod) { - const blocksSinceInitialization = - currentBlock.blockNumber! - initializationBlock; + const blocksSinceInitialization = currentBlock.number - initializationBlock; const daysSinceInitialization = convertMillisecondsToDays( Date.now() - Number(hyperdrive.initializationTimestamp * 1000n), diff --git a/apps/hyperdrive-trading/src/ui/chainlog/FactoriesTable.tsx b/apps/hyperdrive-trading/src/ui/chainlog/FactoriesTable.tsx index fe54476e3..e3adf502d 100644 --- a/apps/hyperdrive-trading/src/ui/chainlog/FactoriesTable.tsx +++ b/apps/hyperdrive-trading/src/ui/chainlog/FactoriesTable.tsx @@ -181,7 +181,7 @@ function useFactoriesQuery(): UseQueryResult { chainIds.map(async (chainId) => { const registry = new ReadRegistry({ address: connectedAppConfig.registries[chainId], - drift: getDrift({ chainId }), + drift: await getDrift({ chainId }), }); const factoryAddresses = await registry.getFactoryAddresses(); diff --git a/apps/hyperdrive-trading/src/ui/chainlog/PoolsTable.tsx b/apps/hyperdrive-trading/src/ui/chainlog/PoolsTable.tsx index 16fd09572..daa254c12 100644 --- a/apps/hyperdrive-trading/src/ui/chainlog/PoolsTable.tsx +++ b/apps/hyperdrive-trading/src/ui/chainlog/PoolsTable.tsx @@ -228,7 +228,7 @@ function usePoolsQuery(): UseQueryResult { chainIds.map(async (chainId) => { const registry = new ReadRegistry({ address: connectedAppConfig.registries[chainId], - drift: getDrift({ chainId }), + drift: await getDrift({ chainId }), }); return registry.getInstances().then((instances) => { diff --git a/apps/hyperdrive-trading/src/ui/drift/useDrift.ts b/apps/hyperdrive-trading/src/ui/drift/useDrift.ts index 2b9c6dd49..fb83ce129 100644 --- a/apps/hyperdrive-trading/src/ui/drift/useDrift.ts +++ b/apps/hyperdrive-trading/src/ui/drift/useDrift.ts @@ -1,7 +1,12 @@ -import { Drift, ReadWriteAdapter } from "@delvtech/drift"; +import { + createDrift, + Drift, + ReadWriteAdapter, + type Store, +} from "@delvtech/drift"; import { viemAdapter } from "@delvtech/drift-viem"; import { useMemo } from "react"; -import { getDriftOptions } from "src/drift/getDrift"; +import { driftStore } from "src/drift/getDrift"; import { usePublicClient, UsePublicClientParameters, @@ -9,22 +14,26 @@ import { UseWalletClientParameters, } from "wagmi"; -export function useDrift( - params?: UsePublicClientParameters, -): Drift | undefined { - const publicClient = usePublicClient(params); - const { data: walletClient } = useWalletClient(params); +export interface UseDriftViemOptions + extends UsePublicClientParameters, + UseWalletClientParameters { + store?: Store; +} - return useMemo( - () => - publicClient - ? new Drift( - viemAdapter({ publicClient, walletClient }), - getDriftOptions({ chainId: publicClient.chain.id }), - ) - : undefined, - [publicClient, walletClient], - ); +export function useDrift(options?: UseDriftViemOptions): Drift | undefined { + const publicClient = usePublicClient(options); + const { data: walletClient } = useWalletClient(options); + + return useMemo(() => { + if (!publicClient) { + return undefined; + } + + return createDrift({ + adapter: viemAdapter({ publicClient, walletClient }), + store: options?.store || driftStore, + }); + }, [publicClient, walletClient, options?.store]); } export function useReadWriteDrift( @@ -36,10 +45,10 @@ export function useReadWriteDrift( return useMemo( () => publicClient && walletClient - ? new Drift( - viemAdapter({ publicClient, walletClient }), - getDriftOptions({ chainId: publicClient.chain.id }), - ) + ? createDrift({ + adapter: viemAdapter({ publicClient, walletClient }), + store: driftStore, + }) : undefined, [publicClient, walletClient], ); diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadHyperdrive.ts b/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadHyperdrive.ts index b96bb82d7..67583151d 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadHyperdrive.ts +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadHyperdrive.ts @@ -32,7 +32,7 @@ export function useReadHyperdrive({ return getHyperdrive({ address, drift, - earliestBlock: initializationBlock, + epochBlock: initializationBlock, zapContractAddress: appConfig.zaps[chainId]?.address, }); } diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadWriteHyperdrive.ts b/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadWriteHyperdrive.ts index 57053ae3f..95391f0bc 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadWriteHyperdrive.ts +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useReadWriteHyperdrive.ts @@ -33,7 +33,7 @@ export function useReadWriteHyperdrive({ return getHyperdrive({ address, drift, - earliestBlock: initializationBlock, + epochBlock: initializationBlock, zapContractAddress: appConfig.zaps[chainId]?.address, }); } diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useUnpausedPools.ts b/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useUnpausedPools.ts index df3614079..0997a883a 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useUnpausedPools.ts +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/hooks/useUnpausedPools.ts @@ -47,8 +47,8 @@ export function useUnpausedPools(): { .map(async (hyperdrive) => { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, zapContractAddress: appConfig.zaps[hyperdrive.chainId]?.address, }); diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/longs/hooks/useTotalOpenLongsValue.ts b/apps/hyperdrive-trading/src/ui/hyperdrive/longs/hooks/useTotalOpenLongsValue.ts index a9afd7cdd..f4db64a6a 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/longs/hooks/useTotalOpenLongsValue.ts +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/longs/hooks/useTotalOpenLongsValue.ts @@ -45,8 +45,8 @@ export function useTotalOpenLongsValueTwo({ longs.map(async (long) => { const readHyperdrive = await getHyperdrive({ address: long.hyperdrive.address, - drift: getDrift({ chainId: long.hyperdrive.chainId }), - earliestBlock: long.hyperdrive.initializationBlock, + drift: await getDrift({ chainId: long.hyperdrive.chainId }), + epochBlock: long.hyperdrive.initializationBlock, }); const preview = await readHyperdrive.previewCloseLong({ maturityTime: long.details?.maturity || 0n, diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/lp/hooks/useTotalOpenLpPositions.ts b/apps/hyperdrive-trading/src/ui/hyperdrive/lp/hooks/useTotalOpenLpPositions.ts index 84cd95252..7321ebadd 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/lp/hooks/useTotalOpenLpPositions.ts +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/lp/hooks/useTotalOpenLpPositions.ts @@ -49,8 +49,8 @@ export function useTotalOpenLpPositions({ openLpPositions.map(async (position) => { const readHyperdrive = await getHyperdrive({ address: position.hyperdrive.address, - drift: getDrift({ chainId: position.hyperdrive.chainId }), - earliestBlock: position.hyperdrive.initializationBlock, + drift: await getDrift({ chainId: position.hyperdrive.chainId }), + epochBlock: position.hyperdrive.initializationBlock, }); const openLpPosition = await readHyperdrive.getOpenLpPosition({ account, diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/shorts/hooks/useTotalOpenShortsValue.ts b/apps/hyperdrive-trading/src/ui/hyperdrive/shorts/hooks/useTotalOpenShortsValue.ts index a84110f49..54eaba0ab 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/shorts/hooks/useTotalOpenShortsValue.ts +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/shorts/hooks/useTotalOpenShortsValue.ts @@ -33,8 +33,8 @@ export function useTotalOpenShortsValue({ shorts.map(async (short) => { const readHyperdrive = await getHyperdrive({ address: short.hyperdrive.address, - drift: getDrift({ chainId: short.hyperdrive.chainId }), - earliestBlock: short.hyperdrive.initializationBlock, + drift: await getDrift({ chainId: short.hyperdrive.chainId }), + epochBlock: short.hyperdrive.initializationBlock, }); const preview = await readHyperdrive.previewCloseShort({ maturityTime: short.maturity, diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useCloseLongZap.tsx b/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useCloseLongZap.tsx index c8e896263..cb4854370 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useCloseLongZap.tsx +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useCloseLongZap.tsx @@ -1,5 +1,3 @@ -import { Drift } from "@delvtech/drift"; -import { viemAdapter } from "@delvtech/drift-viem"; import { fixed } from "@delvtech/fixed-point-wasm"; import { getBaseToken, TokenConfig } from "@delvtech/hyperdrive-appconfig"; import { zapAbi } from "@delvtech/hyperdrive-js"; @@ -9,17 +7,12 @@ import { useMutation } from "@tanstack/react-query"; import toast from "react-hot-toast"; import { useAppConfigForConnectedChain } from "src/ui/appconfig/useAppConfigForConnectedChain"; import { SUCCESS_TOAST_DURATION } from "src/ui/base/toasts"; +import { useReadWriteDrift } from "src/ui/drift/useDrift"; import { usePreviewCloseLong } from "src/ui/hyperdrive/longs/hooks/usePreviewCloseLong"; import { useTokenFiatPrice } from "src/ui/token/hooks/useTokenFiatPrice"; import TransactionToast from "src/ui/transactions/TransactionToast"; -import { Address, encodePacked, WalletClient } from "viem"; -import { - useAccount, - useBlock, - useBlockNumber, - usePublicClient, - useWalletClient, -} from "wagmi"; +import { Address, encodePacked } from "viem"; +import { useAccount, useBlock, useBlockNumber } from "wagmi"; interface UseCloseLongOptions { hyperdriveAddress: Address; @@ -48,16 +41,14 @@ export function useCloseLongZap({ status: MutationStatus; } { const { address: account } = useAccount(); - const publicClient = usePublicClient(); const addTransaction = useAddRecentTransaction(); - const { data: walletClient } = useWalletClient({ chainId }); const appConfig = useAppConfigForConnectedChain(); const zapsConfig = appConfig.zaps[chainId]; const { data: blockNumber } = useBlockNumber(); const { data: block } = useBlock({ blockNumber }); + const drift = useReadWriteDrift(); - const isMutationEnabled = - !!zapsConfig && !!account && !!publicClient && !!walletClient && enabled; + const isMutationEnabled = !!zapsConfig && !!account && !!drift && enabled; const baseToken = getBaseToken({ hyperdriveChainId: chainId, hyperdriveAddress, @@ -97,13 +88,6 @@ export function useCloseLongZap({ return; } - const drift = new Drift( - viemAdapter({ - publicClient, - walletClient: walletClient as WalletClient, - }), - ); - try { const hash = await drift.write({ abi: zapAbi, diff --git a/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useOpenLongZap.tsx b/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useOpenLongZap.tsx index 0509cf74d..ace0e58c2 100644 --- a/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useOpenLongZap.tsx +++ b/apps/hyperdrive-trading/src/ui/hyperdrive/zaps/hooks/useOpenLongZap.tsx @@ -1,5 +1,3 @@ -import { Drift } from "@delvtech/drift"; -import { viemAdapter } from "@delvtech/drift-viem"; import { getBaseToken, TokenConfig } from "@delvtech/hyperdrive-appconfig"; import { zapAbi } from "@delvtech/hyperdrive-js"; import { useAddRecentTransaction } from "@rainbow-me/rainbowkit"; @@ -7,15 +5,10 @@ import { MutationStatus, useMutation } from "@tanstack/react-query"; import { toast } from "react-hot-toast"; import { useAppConfigForConnectedChain } from "src/ui/appconfig/useAppConfigForConnectedChain"; import { SUCCESS_TOAST_DURATION } from "src/ui/base/toasts"; +import { useReadWriteDrift } from "src/ui/drift/useDrift"; import TransactionToast from "src/ui/transactions/TransactionToast"; -import { Address, encodePacked, WalletClient } from "viem"; -import { - useAccount, - useBlock, - useBlockNumber, - usePublicClient, - useWalletClient, -} from "wagmi"; +import { Address, encodePacked } from "viem"; +import { useAccount, useBlock, useBlockNumber } from "wagmi"; interface UseOpenLongZapOptions { hyperdriveAddress: Address; chainId: number; @@ -47,17 +40,15 @@ export function useOpenLongZap({ const { data: block } = useBlock({ blockNumber }); const appConfig = useAppConfigForConnectedChain(); const zapsConfig = appConfig.zaps[chainId]; - const publicClient = usePublicClient({ chainId }); - const { data: walletClient } = useWalletClient({ chainId }); const addTransaction = useAddRecentTransaction(); const baseToken = getBaseToken({ hyperdriveChainId: chainId, hyperdriveAddress, appConfig, }); + const drift = useReadWriteDrift(); - const isMutationEnabled = - !!zapsConfig && !!account && !!publicClient && !!walletClient && enabled; + const isMutationEnabled = !!zapsConfig && !!account && !!drift && enabled; const openLongZapMutation = useMutation({ mutationFn: async () => { @@ -65,13 +56,6 @@ export function useOpenLongZap({ return; } - const drift = new Drift( - viemAdapter({ - publicClient, - walletClient: walletClient as WalletClient, - }), - ); - try { const hash = await drift.write({ abi: zapAbi, diff --git a/apps/hyperdrive-trading/src/ui/markets/hooks/usePoolsList.ts b/apps/hyperdrive-trading/src/ui/markets/hooks/usePoolsList.ts index 3feb00ac3..527a68ad7 100644 --- a/apps/hyperdrive-trading/src/ui/markets/hooks/usePoolsList.ts +++ b/apps/hyperdrive-trading/src/ui/markets/hooks/usePoolsList.ts @@ -24,7 +24,6 @@ import { PoolListFilters, usePoolListFilters, } from "src/ui/markets/PoolsList/usePoolListFilters"; -import { PublicClient } from "viem"; import { useChainId } from "wagmi"; export const PINNED_POOLS = [ @@ -157,13 +156,13 @@ function useSortedPools({ pools.map(async (hyperdrive) => { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, zapContractAddress: appConfig.zaps[hyperdrive.chainId]?.address, }); - const publicClient = getPublicClient(wagmiConfig as any, { + const publicClient = getPublicClient(wagmiConfig, { chainId: hyperdrive.chainId, - }) as PublicClient; + })!; const [fixedApr, lpApy, tvl, yieldSourceRate, longPrice] = await Promise.all([ readHyperdrive.getFixedApr(), diff --git a/apps/hyperdrive-trading/src/ui/portfolio/longs/usePortfolioLongsData.ts b/apps/hyperdrive-trading/src/ui/portfolio/longs/usePortfolioLongsData.ts index 73b746d30..029703249 100644 --- a/apps/hyperdrive-trading/src/ui/portfolio/longs/usePortfolioLongsData.ts +++ b/apps/hyperdrive-trading/src/ui/portfolio/longs/usePortfolioLongsData.ts @@ -4,7 +4,7 @@ import { OpenLongPositionReceived, } from "@delvtech/hyperdrive-js"; import { useQuery } from "@tanstack/react-query"; -import { LATEST_POSITION_BLOCKS_BY_CHAIN_ID } from "src/base/latestBlocks"; +import { POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID } from "src/base/latestBlocks"; import { makeQueryKey, makeQueryKey2 } from "src/base/makeQueryKey"; import { getDrift } from "src/drift/getDrift"; import { useAppConfigForConnectedChain } from "src/ui/appconfig/useAppConfigForConnectedChain"; @@ -29,6 +29,9 @@ export function usePortfolioLongsData({ { queryKey: makeQueryKey("portfolioLongs", { account }), enabled: queryEnabled, + retry: false, + refetchOnWindowFocus: false, + staleTime: Infinity, queryFn: queryEnabled ? async () => await Promise.all( @@ -36,8 +39,9 @@ export function usePortfolioLongsData({ try { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, + eventQueryRetries: 9, zapContractAddress: appConfigForConnectedChain.zaps[hyperdrive.chainId] ?.address, @@ -45,11 +49,9 @@ export function usePortfolioLongsData({ const allLongs = await readHyperdrive.getOpenLongPositions({ account, - options: { - block: - LATEST_POSITION_BLOCKS_BY_CHAIN_ID[hyperdrive.chainId] - .long, - }, + options: + POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID[hyperdrive.chainId] + .long, }); const openLongs = await Promise.all( allLongs.map(async (long) => ({ @@ -57,12 +59,10 @@ export function usePortfolioLongsData({ details: await readHyperdrive.getOpenLongDetails({ assetId: long.assetId, account, - options: { - block: - LATEST_POSITION_BLOCKS_BY_CHAIN_ID[ - hyperdrive.chainId - ].long, - }, + options: + POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID[ + hyperdrive.chainId + ].long, }), })), ); @@ -72,10 +72,7 @@ export function usePortfolioLongsData({ openLongs, }; } catch (e) { - console.error( - `Error fetching longs for ${hyperdrive.address}:`, - e, - ); + console.error(e); return { hyperdrive, openLongs: [], @@ -114,6 +111,9 @@ export function usePortfolioLongsDataFromHyperdrives({ queryId: "openLongPositions", params: { account, hyperdrives }, }), + retry: false, + refetchOnWindowFocus: false, + staleTime: Infinity, queryFn: queryEnabled ? async () => { const results = await Promise.all( @@ -121,19 +121,18 @@ export function usePortfolioLongsDataFromHyperdrives({ try { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, + eventQueryRetries: 9, zapContractAddress: appConfigForConnectedChain.zaps[hyperdrive.chainId] ?.address, }); const allLongs = await readHyperdrive.getOpenLongPositions({ account, - options: { - block: - LATEST_POSITION_BLOCKS_BY_CHAIN_ID[hyperdrive.chainId] - .long, - }, + options: + POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID[hyperdrive.chainId] + .long, }); const openLongs = await Promise.all( @@ -143,22 +142,17 @@ export function usePortfolioLongsDataFromHyperdrives({ details: await readHyperdrive.getOpenLongDetails({ assetId: long.assetId, account: account, - options: { - block: - LATEST_POSITION_BLOCKS_BY_CHAIN_ID[ - hyperdrive.chainId - ].long, - }, + options: + POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID[ + hyperdrive.chainId + ].long, }), })), ); return openLongs; } catch (e) { - console.error( - `Error fetching long data for ${hyperdrive.address}:`, - e, - ); + console.error(e); return [] as (OpenLongPositionReceived & { hyperdrive: HyperdriveConfig; details: any; diff --git a/apps/hyperdrive-trading/src/ui/portfolio/lp/usePortfolioLpData.ts b/apps/hyperdrive-trading/src/ui/portfolio/lp/usePortfolioLpData.ts index b63c88b93..d2cee71fb 100644 --- a/apps/hyperdrive-trading/src/ui/portfolio/lp/usePortfolioLpData.ts +++ b/apps/hyperdrive-trading/src/ui/portfolio/lp/usePortfolioLpData.ts @@ -38,8 +38,8 @@ export function usePortfolioLpDataFromHyperdrives({ hyperdrives.map(async (hyperdrive) => { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, zapContractAddress: appConfigForConnectedChain.zaps[hyperdrive.chainId]?.address, }); @@ -89,8 +89,8 @@ export function usePortfolioLpData({ appConfigForConnectedChain.hyperdrives.map(async (hyperdrive) => { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, zapContractAddress: appConfigForConnectedChain.zaps[hyperdrive.chainId]?.address, }); diff --git a/apps/hyperdrive-trading/src/ui/portfolio/shorts/usePortfolioShortsData.ts b/apps/hyperdrive-trading/src/ui/portfolio/shorts/usePortfolioShortsData.ts index ffd6b6061..26e2320be 100644 --- a/apps/hyperdrive-trading/src/ui/portfolio/shorts/usePortfolioShortsData.ts +++ b/apps/hyperdrive-trading/src/ui/portfolio/shorts/usePortfolioShortsData.ts @@ -1,7 +1,7 @@ import { HyperdriveConfig } from "@delvtech/hyperdrive-appconfig"; import { getHyperdrive, OpenShort } from "@delvtech/hyperdrive-js"; import { useQuery } from "@tanstack/react-query"; -import { LATEST_POSITION_BLOCKS_BY_CHAIN_ID } from "src/base/latestBlocks"; +import { POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID } from "src/base/latestBlocks"; import { makeQueryKey, makeQueryKey2 } from "src/base/makeQueryKey"; import { getDrift } from "src/drift/getDrift"; import { useAppConfigForConnectedChain } from "src/ui/appconfig/useAppConfigForConnectedChain"; @@ -27,6 +27,9 @@ export function usePortfolioShortsData({ useQuery({ queryKey: makeQueryKey("portfolioShorts", { account }), enabled: queryEnabled, + retry: false, + refetchOnWindowFocus: false, + staleTime: Infinity, queryFn: queryEnabled ? async () => await Promise.all( @@ -34,8 +37,9 @@ export function usePortfolioShortsData({ try { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, + eventQueryRetries: 9, zapContractAddress: appConfigForConnectedChain.zaps[hyperdrive.chainId] ?.address, @@ -45,18 +49,14 @@ export function usePortfolioShortsData({ hyperdrive, openShorts: await readHyperdrive.getOpenShorts({ account, - options: { - block: - LATEST_POSITION_BLOCKS_BY_CHAIN_ID[hyperdrive.chainId] - .short, - }, + options: + POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID[ + hyperdrive.chainId + ].short, }), }; } catch (e) { - console.error( - `Error fetching shorts for hyperdrive ${hyperdrive.address} on chain ${hyperdrive.chainId}:`, - e, - ); + console.error(e); return { hyperdrive, openShorts: [], @@ -93,6 +93,9 @@ export function usePortfolioShortsDataFromHyperdrives({ queryId: "openShortPositions", params: { account, hyperdrives }, }), + retry: false, + refetchOnWindowFocus: false, + staleTime: Infinity, queryFn: queryEnabled ? async () => { const results = await Promise.all( @@ -100,8 +103,9 @@ export function usePortfolioShortsDataFromHyperdrives({ try { const readHyperdrive = await getHyperdrive({ address: hyperdrive.address, - drift: getDrift({ chainId: hyperdrive.chainId }), - earliestBlock: hyperdrive.initializationBlock, + drift: await getDrift({ chainId: hyperdrive.chainId }), + epochBlock: hyperdrive.initializationBlock, + eventQueryRetries: 9, debugName: hyperdrive.name, zapContractAddress: appConfigForConnectedChain.zaps[hyperdrive.chainId] @@ -109,21 +113,16 @@ export function usePortfolioShortsDataFromHyperdrives({ }); const openShorts = await readHyperdrive.getOpenShorts({ account, - options: { - block: - LATEST_POSITION_BLOCKS_BY_CHAIN_ID[hyperdrive.chainId] - .short, - }, + options: + POSITION_BLOCK_BOUNDARIES_BY_CHAIN_ID[hyperdrive.chainId] + .short, }); return openShorts.map((openShort) => ({ ...openShort, hyperdrive, })); } catch (e) { - console.error( - `Error fetching shorts data for ${hyperdrive.address}:`, - e, - ); + console.error(e); return []; } }), diff --git a/apps/hyperdrive-trading/src/ui/registry/hooks/useReadRegistry.ts b/apps/hyperdrive-trading/src/ui/registry/hooks/useReadRegistry.ts index aaca40460..5a814d9e0 100644 --- a/apps/hyperdrive-trading/src/ui/registry/hooks/useReadRegistry.ts +++ b/apps/hyperdrive-trading/src/ui/registry/hooks/useReadRegistry.ts @@ -12,7 +12,6 @@ export function useReadRegistry(chainId: number): ReadRegistry | undefined { ? new ReadRegistry({ address: registries[chainId], drift, - cacheNamespace: chainId, }) : undefined, [drift, registries, chainId], diff --git a/apps/sdk-sandbox/package.json b/apps/sdk-sandbox/package.json index 91a433a31..1ea2f40ae 100644 --- a/apps/sdk-sandbox/package.json +++ b/apps/sdk-sandbox/package.json @@ -13,8 +13,8 @@ "deploy-multicall": "tsx -r dotenv/config scripts/deploy-multicall.ts" }, "dependencies": { - "@delvtech/drift": "^0.0.1-beta.11", - "@delvtech/drift-viem": "^0.0.1-beta.13", + "@delvtech/drift": "^1.0.0", + "@delvtech/drift-viem": "^1.0.0", "@delvtech/fixed-point-wasm": "*", "@delvtech/hyperdrive-appconfig": "*", "@delvtech/hyperdrive-js": "*", @@ -23,12 +23,12 @@ "@uniswap/smart-order-router": "^4.18.2", "@uniswap/v3-periphery": "^1.4.4", "ethers": "^5.7.2", - "viem": "^2.22.19" + "viem": "^2.37.2" }, "devDependencies": { "@types/node": "^20.14.2", "dotenv": "^16.4.5", "tsx": "^4.19.2", - "typescript": "^5.4.5" + "typescript": "^5.9.2" } } diff --git a/apps/sdk-sandbox/scripts/example.ts b/apps/sdk-sandbox/scripts/example.ts index adf896309..7fea46649 100644 --- a/apps/sdk-sandbox/scripts/example.ts +++ b/apps/sdk-sandbox/scripts/example.ts @@ -1,36 +1,26 @@ -import { Drift } from "@delvtech/drift"; +import { createDrift } from "@delvtech/drift"; import { viemAdapter } from "@delvtech/drift-viem"; import { appConfig } from "@delvtech/hyperdrive-appconfig"; -import { ReadHyperdrive, ReadWriteHyperdrive } from "@delvtech/hyperdrive-js"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { Token } from "@uniswap/sdk-core"; import { publicClient, walletClient } from "../client"; import { executeZapOpenAndClose } from "./executeZapAndClose"; import { fetchSwapPath } from "./fetchSwapPath"; const zapsConfig = appConfig.zaps[707]; -const drift = new Drift(viemAdapter({ publicClient, walletClient })); +const drift = createDrift({ + adapter: viemAdapter({ publicClient, walletClient }), +}); const poolAddress = "0x324395D5d835F84a02A75Aa26814f6fD22F25698"; -const earliestBlock = 20180617n; - -// Write instance for transactions -const writePool = new ReadWriteHyperdrive({ - address: poolAddress, - drift, - earliestBlock, -}); +const epochBlock = 20180617n; // Read instance (includes zapAddress) const readPool = new ReadHyperdrive({ address: poolAddress, drift, zapContractAddress: zapsConfig.address, - earliestBlock, -}); - -drift.contract({ - abi: writePool.contract.abi, - address: poolAddress, + epochBlock, }); async function main() { diff --git a/apps/sdk-sandbox/scripts/executeZapAndClose.ts b/apps/sdk-sandbox/scripts/executeZapAndClose.ts index 58a173f57..966e378f0 100644 --- a/apps/sdk-sandbox/scripts/executeZapAndClose.ts +++ b/apps/sdk-sandbox/scripts/executeZapAndClose.ts @@ -1,4 +1,4 @@ -import { Drift } from "@delvtech/drift"; +import { createDrift } from "@delvtech/drift"; import { viemAdapter } from "@delvtech/drift-viem"; import { fixed } from "@delvtech/fixed-point-wasm"; import { appConfig } from "@delvtech/hyperdrive-appconfig"; @@ -11,10 +11,16 @@ import { Address, erc20Abi, maxInt256 } from "viem"; import { publicClient, walletClient } from "../client"; const zapsConfig = appConfig.zaps[707]; -const drift = new Drift(viemAdapter({ publicClient, walletClient })); +const drift = createDrift({ + adapter: viemAdapter({ publicClient, walletClient }), +}); + +if (!drift.isReadWrite()) { + throw new Error("No wallet client available"); +} const poolAddress = "0x324395D5d835F84a02A75Aa26814f6fD22F25698"; -const earliestBlock = 20180617n; +const epochBlock = 20180617n; const usdcAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; const assetId: bigint = 452312848583266388373324160190187140051835877600158453279131187532667606656n; @@ -26,14 +32,14 @@ const defaultCloseLongAmount = BigInt(26e18); const writePool = new ReadWriteHyperdrive({ address: poolAddress, drift, - earliestBlock, + epochBlock, }); const readPool = new ReadHyperdrive({ address: poolAddress, drift, zapContractAddress: zapsConfig.address, - earliestBlock, + epochBlock, }); const poolContract = drift.contract({ diff --git a/apps/sdk-sandbox/scripts/merkl.ts b/apps/sdk-sandbox/scripts/merkl.ts index 70b6ab8e3..e15bd3521 100644 --- a/apps/sdk-sandbox/scripts/merkl.ts +++ b/apps/sdk-sandbox/scripts/merkl.ts @@ -1,9 +1,6 @@ -import { initSync, parseFixed, wasmBuffer } from "@delvtech/fixed-point-wasm"; +import { parseFixed } from "@delvtech/fixed-point-wasm"; import _ from "lodash"; -// Initialize the WASM module -initSync(wasmBuffer); - import { Address } from "viem"; interface MerklV3RewardsResult { diff --git a/crates/fixed-point-wasm/package.json b/crates/fixed-point-wasm/package.json index 5c07451c7..b5e5d0884 100644 --- a/crates/fixed-point-wasm/package.json +++ b/crates/fixed-point-wasm/package.json @@ -16,7 +16,7 @@ "proper-lockfile": "^4.1.2", "smol-toml": "^1.3.1", "tsx": "^4.19.3", - "typescript": "^5.8.2", + "typescript": "^5.9.2", "wasm-pkg-build": "^0.5.3" } } diff --git a/crates/hyperdrive-wasm/package.json b/crates/hyperdrive-wasm/package.json index c727d252e..a5a55d728 100644 --- a/crates/hyperdrive-wasm/package.json +++ b/crates/hyperdrive-wasm/package.json @@ -16,7 +16,7 @@ "proper-lockfile": "^4.1.2", "smol-toml": "^1.3.1", "tsx": "^4.19.3", - "typescript": "^5.8.2", + "typescript": "^5.9.2", "wasm-pkg-build": "^0.5.3" } } diff --git a/package.json b/package.json index 16d81de00..cbc00e199 100644 --- a/package.json +++ b/package.json @@ -35,11 +35,11 @@ "prettier-plugin-organize-imports": "4.0.0", "prettier-plugin-tailwindcss": "^0.6.5", "turbo": "^2.0.6", - "typescript": "^5.5.4" + "typescript": "^5.9.2" }, "resolutions": { - "typescript": "^5.5.4", - "viem": "2.9.2" + "typescript": "^5.9.2", + "viem": "2.37.2" }, "lint-staged": { "{apps,packages}/**/*.{gql,graphql,js,jsx,ts,tsx,json}": [ diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index ecc796afb..5a41016c6 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -13,7 +13,7 @@ "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", "eslint-plugin-unicorn": "^52.0.0", - "typescript": "^5.4.4" + "typescript": "^5.9.2" }, "publishConfig": { "access": "public" diff --git a/packages/hyperdrive-appconfig/package.json b/packages/hyperdrive-appconfig/package.json index 6d129e8c2..bdb0f8363 100644 --- a/packages/hyperdrive-appconfig/package.json +++ b/packages/hyperdrive-appconfig/package.json @@ -25,34 +25,39 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { + "@delvtech/drift": "^1.0.0", + "@delvtech/drift-viem": "^1.0.0", "@delvtech/fixed-point-wasm": "^0.0.8", "@delvtech/hyperdrive-artifacts": "^1.0.20", - "@delvtech/hyperdrive-viem": "^3.1.1", + "@delvtech/hyperdrive-js": "^0.0.2", "@hyperdrive/eslint-config": "*", "@hyperdrive/prettier-config": "*", "@hyperdrive/tsconfig": "*", + "@types/lodash": "4.17.15", "@types/lodash.camelcase": "^4.3.9", "@types/lodash.uniqby": "^4.7.9", - "lodash": "4.17.21", - "@types/lodash": "4.17.15", "abitype": "^0.9.8", "chalk": "^5.3.0", - "p-retry": "^6.2.1", "dotenv": "^16.0.3", + "lodash": "4.17.21", "lodash.camelcase": "^4.3.0", "lodash.uniqby": "^4.7.0", + "p-retry": "^6.2.1", "prettier-plugin-organize-imports": "3.2.4", "tsconfig-paths": "^4.1.0", "tsup": "^7.2.0", "tsx": "^4.7.0", - "typescript": "^5.0.2", + "typescript": "^5.9.2", + "viem": "^2.37.2", "vite-tsconfig-paths": "^4.2.0" }, "publishConfig": { "access": "public" }, "dependencies": { - "graphql-request": "^7.1.0", - "viem": "^2.7.8" + "graphql-request": "^7.1.0" + }, + "peerDependencies": { + "viem": "^2.37.2" } } diff --git a/packages/hyperdrive-appconfig/src/appconfig/HyperdriveConfigResolver.ts b/packages/hyperdrive-appconfig/src/appconfig/HyperdriveConfigResolver.ts index 255c05cab..676771c4d 100644 --- a/packages/hyperdrive-appconfig/src/appconfig/HyperdriveConfigResolver.ts +++ b/packages/hyperdrive-appconfig/src/appconfig/HyperdriveConfigResolver.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import type { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { AnyRewardId } from "src/rewards/actions/types"; import { RewardConfigId } from "src/rewards/resolvers"; diff --git a/packages/hyperdrive-appconfig/src/appconfig/getAppConfig.ts b/packages/hyperdrive-appconfig/src/appconfig/getAppConfig.ts index 580810ba1..c086076b4 100644 --- a/packages/hyperdrive-appconfig/src/appconfig/getAppConfig.ts +++ b/packages/hyperdrive-appconfig/src/appconfig/getAppConfig.ts @@ -1,4 +1,6 @@ -import { ReadHyperdrive, ReadRegistry } from "@delvtech/hyperdrive-viem"; +import { createDrift } from "@delvtech/drift"; +import { viemAdapter } from "@delvtech/drift-viem"; +import { ReadHyperdrive, ReadRegistry } from "@delvtech/hyperdrive-js"; import chalk from "chalk"; import uniqBy from "lodash.uniqby"; import { AppConfig } from "src/appconfig/AppConfig"; @@ -920,11 +922,11 @@ const hyperdriveKindResolvers: Record< export async function getAppConfig({ registryAddress, publicClient, - earliestBlock, + epochBlock, }: { registryAddress: Address; publicClient: PublicClient; - earliestBlock?: bigint; + epochBlock?: bigint; }): Promise { const tokens: TokenConfig[] = []; let allRewards: Record = {}; @@ -932,10 +934,13 @@ export async function getAppConfig({ // Get ReadHyperdrive instances from the registry to ensure // that only registered pools are delivered to the frontend + const drift = createDrift({ + adapter: viemAdapter({ publicClient }), + }); const registry = new ReadRegistry({ address: registryAddress, - publicClient, - earliestBlock, + drift, + epochBlock: epochBlock, }); const hyperdrives = await registry.getInstances(); @@ -948,7 +953,7 @@ export async function getAppConfig({ } const { hyperdriveConfig, baseTokenConfig, sharesTokenConfig, rewards } = - await hyperdriveResolver(hyperdrive, publicClient, earliestBlock); + await hyperdriveResolver(hyperdrive, publicClient, epochBlock); console.log( chalk.yellow(hyperdriveConfig.name), chalk.blue(kind), diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/HyperdriveConfig.ts b/packages/hyperdrive-appconfig/src/hyperdrives/HyperdriveConfig.ts index 43adf2847..460e2b7b2 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/HyperdriveConfig.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/HyperdriveConfig.ts @@ -1,4 +1,4 @@ -import { PoolConfig } from "@delvtech/hyperdrive-viem"; +import type { PoolConfig } from "@delvtech/hyperdrive-js"; import { YieldSourceId } from "src/yieldSources/types"; import { Address } from "viem"; diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/aero/getAeroHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/aero/getAeroHyperdrive.ts index 448ef796c..24b334bc5 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/aero/getAeroHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/aero/getAeroHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; import { getTokenConfig } from "src/tokens/getTokenConfig"; @@ -45,8 +45,7 @@ export async function getAeroLpHyperdrive({ const hyperdriveConfig: HyperdriveConfig = { chainId, kind: await hyperdrive.getKind(), - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, address: hyperdrive.address, version: version.string, diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/cbeth/getCbethHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/cbeth/getCbethHyperdrive.ts index 0bd37f79e..93150f544 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/cbeth/getCbethHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/cbeth/getCbethHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; import { ETH_MAGIC_NUMBER } from "src/tokens/ETH_MAGIC_NUMBER"; @@ -43,8 +43,7 @@ export async function getCbethHyperdrive({ const hyperdriveConfig: HyperdriveConfig = { chainId, kind: await hyperdrive.getKind(), - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, address: hyperdrive.address, version: version.string, diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/custom/getCustomHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/custom/getCustomHyperdrive.ts index c70cf9682..241581b4a 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/custom/getCustomHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/custom/getCustomHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; import { getTokenConfig } from "src/tokens/getTokenConfig"; @@ -73,8 +73,7 @@ export async function getCustomHyperdrive({ address: hyperdrive.address, version: version.string, name: hyperdriveName, - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, decimals: await hyperdrive.getDecimals(), yieldSource, diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/gnosisWsteth/getGnosisWstethHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/gnosisWsteth/getGnosisWstethHyperdrive.ts index 54ee12bdf..da929b389 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/gnosisWsteth/getGnosisWstethHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/gnosisWsteth/getGnosisWstethHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; import { ETH_MAGIC_NUMBER } from "src/tokens/ETH_MAGIC_NUMBER"; @@ -43,8 +43,7 @@ export async function getGnosisWstethHyperdrive({ const hyperdriveConfig: HyperdriveConfig = { chainId, kind: await hyperdrive.getKind(), - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, address: hyperdrive.address, version: version.string, diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/morpho/getMorphoHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/morpho/getMorphoHyperdrive.ts index 409dc69e0..fefc1a0f1 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/morpho/getMorphoHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/morpho/getMorphoHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import retry from "p-retry"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; @@ -56,8 +56,7 @@ export async function getMorphoHyperdrive({ const hyperdriveConfig: HyperdriveConfig = { chainId, kind: await hyperdrive.getKind(), - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, address: hyperdrive.address, version: version.string, diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/steth/getStethHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/steth/getStethHyperdrive.ts index 72bbe24e9..ce485df4d 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/steth/getStethHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/steth/getStethHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; import { getTokenConfig } from "src/tokens/getTokenConfig"; @@ -50,8 +50,7 @@ export async function getStethHyperdrive({ const hyperdriveConfig: HyperdriveConfig = { chainId, kind: await hyperdrive.getKind(), - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, address: hyperdrive.address, version: version.string, diff --git a/packages/hyperdrive-appconfig/src/hyperdrives/susds/getSusdsHyperdrive.ts b/packages/hyperdrive-appconfig/src/hyperdrives/susds/getSusdsHyperdrive.ts index 739b7506c..d29c3f0cc 100644 --- a/packages/hyperdrive-appconfig/src/hyperdrives/susds/getSusdsHyperdrive.ts +++ b/packages/hyperdrive-appconfig/src/hyperdrives/susds/getSusdsHyperdrive.ts @@ -1,4 +1,4 @@ -import { ReadHyperdrive } from "@delvtech/hyperdrive-viem"; +import { ReadHyperdrive } from "@delvtech/hyperdrive-js"; import { HyperdriveConfig } from "src/hyperdrives/HyperdriveConfig"; import { formatHyperdriveName } from "src/hyperdrives/formatHyperdriveName"; import { getTokenConfig } from "src/tokens/getTokenConfig"; @@ -44,8 +44,7 @@ export async function getSusdsHyperdrive({ const hyperdriveConfig: HyperdriveConfig = { chainId: await hyperdrive.drift.getChainId(), kind: await hyperdrive.getKind(), - // safe to cast here because we know the pool was initialized - initializationBlock: initializationBlock.blockNumber as bigint, + initializationBlock: initializationBlock.number, initializationTimestamp: initializationBlock.timestamp, address: hyperdrive.address, version: version.string, diff --git a/packages/hyperdrive-appconfig/src/scripts/generate.ts b/packages/hyperdrive-appconfig/src/scripts/generate.ts index 08096fcd1..6da464988 100644 --- a/packages/hyperdrive-appconfig/src/scripts/generate.ts +++ b/packages/hyperdrive-appconfig/src/scripts/generate.ts @@ -139,7 +139,7 @@ for (const { chain, rpcUrl, registryAddress, earliestBlock } of chainConfigs) { const appConfig = await getAppConfig({ registryAddress, publicClient, - earliestBlock, + epochBlock: earliestBlock, }); // Merge the current appConfig with the combinedAppConfig diff --git a/packages/hyperdrive-appconfig/src/tokens/getTokenConfig.ts b/packages/hyperdrive-appconfig/src/tokens/getTokenConfig.ts index aa9f4d041..3f61dfd16 100644 --- a/packages/hyperdrive-appconfig/src/tokens/getTokenConfig.ts +++ b/packages/hyperdrive-appconfig/src/tokens/getTokenConfig.ts @@ -1,4 +1,4 @@ -import { ReadToken } from "@delvtech/hyperdrive-viem"; +import { ReadToken } from "@delvtech/hyperdrive-js"; import { PriceOracleId, TokenConfig } from "src/tokens/types"; export async function getTokenConfig({ diff --git a/packages/hyperdrive-artifacts/package.json b/packages/hyperdrive-artifacts/package.json index 74d4e1335..1b0846394 100644 --- a/packages/hyperdrive-artifacts/package.json +++ b/packages/hyperdrive-artifacts/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@hyperdrive/tsconfig": "*", "tsc": "^2.0.4", - "typescript": "^5.3.3" + "typescript": "^5.9.2" }, "publishConfig": { "access": "public" diff --git a/packages/hyperdrive-js-core/.eslintrc b/packages/hyperdrive-js-core/.eslintrc deleted file mode 100644 index 5f015620f..000000000 --- a/packages/hyperdrive-js-core/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "root": true, - "extends": [ - "@hyperdrive/eslint-config" - ], - "ignorePatterns": [ - "generated.ts" - ], -} \ No newline at end of file diff --git a/packages/hyperdrive-js-core/.gitignore b/packages/hyperdrive-js-core/.gitignore deleted file mode 100644 index de4d1f007..000000000 --- a/packages/hyperdrive-js-core/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -node_modules diff --git a/packages/hyperdrive-js-core/.prettierignore b/packages/hyperdrive-js-core/.prettierignore deleted file mode 100644 index 5c07730ab..000000000 --- a/packages/hyperdrive-js-core/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -src/types -dist \ No newline at end of file diff --git a/packages/hyperdrive-js-core/.prettierrc.mjs b/packages/hyperdrive-js-core/.prettierrc.mjs deleted file mode 100644 index c9a63a1d6..000000000 --- a/packages/hyperdrive-js-core/.prettierrc.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import repoConfig from "@hyperdrive/prettier-config"; - -/** @type {import("prettier").Config} */ -export default { - ...repoConfig, - plugins: ["prettier-plugin-organize-imports"], -}; diff --git a/packages/hyperdrive-js-core/CHANGELOG.md b/packages/hyperdrive-js-core/CHANGELOG.md deleted file mode 100644 index 6aa7af0f8..000000000 --- a/packages/hyperdrive-js-core/CHANGELOG.md +++ /dev/null @@ -1,204 +0,0 @@ -# @delvtech/hyperdrive-js-core - -## 3.0.6 - -### Patch Changes - -- Updated dependencies [716c6f7] - - @delvtech/fixed-point-wasm@0.0.6 - -## 3.0.5 - -### Patch Changes - -- Updated dependencies [66133b5] -- Updated dependencies [3099256] - - @delvtech/fixed-point-wasm@0.0.5 - -## 3.0.4 - -### Patch Changes - -- bd6d2da: Fix bug in calcOpenLpPosition causing baseAmountPaid to be wrong when withdrawalShares are present. - -## 3.0.3 - -### Patch Changes - -- 40b8f1b: Return bigint instead of number for getLpApy - -## 3.0.1 - -### Patch Changes - -- 8e77c04: Add `earliestBlock` option to `ReadModel` and bump `evm-client-viem` version to use `eth_getLogs` rather than `eth_getFilterLogs`. -- Updated dependencies [4e841fc] - - @delvtech/hyperdrive-artifacts@1.0.18 - -## 3.0.0 - -### Major Changes - -- b26e00b: 🚨 **Breaking Change**: Upgraded to Hyperdrive `v1.0.16`. The updated models, e.g. `ReadHyperdrive` are no longer compatible for `<=1.0.14` contracts. To continue using the SDK with `<=1.0.14` contracts, import the corresponding model from the `/v1.0.14` import path. E.g., `import { ReadHyperdrive_v1_0_14 } from "@delvtech/hyperdrive-viem/v1.0.14"`. - -### Minor Changes - -- 19814a4: Add getKind to ReadHyperdrive - -### Patch Changes - -- Updated dependencies [c5a369d] -- Updated dependencies [b26e00b] -- Updated dependencies [eefe0fc] -- Updated dependencies [c5a369d] - - @delvtech/fixed-point-wasm@0.0.4 - - @delvtech/hyperdrive-wasm@0.15.3 - - @delvtech/hyperdrive-artifacts@1.0.16 - -## 2.4.3 - -### Patch Changes - -- Updated dependencies [e4f7227] - - @delvtech/hyperdrive-artifacts@0.4.0 - -## 2.4.2 - -### Patch Changes - -- Updated dependencies [e50602e] -- Updated dependencies [e50602e] -- Updated dependencies [ac419ee] -- Updated dependencies [09ef9ec] -- Updated dependencies [ac419ee] -- Updated dependencies [e50602e] -- Updated dependencies [ac419ee] - - @delvtech/fixed-point-wasm@0.0.3 - - @delvtech/hyperdrive-wasm@0.15.2 - -## 2.4.1 - -### Patch Changes - -- Updated dependencies [5af0afa] -- Updated dependencies [5af0afa] -- Updated dependencies [5af0afa] - - @delvtech/fixed-point-wasm@0.0.2 - -## 2.4.0 - -### Minor Changes - -- fc33e22: Add MVP Registry and Factory models. - -### Patch Changes - -- f8f4078: Add errors to exports -- Updated dependencies [b87f8c2] -- Updated dependencies [ff9e8a7] -- Updated dependencies [60bbc40] - - @delvtech/hyperdrive-wasm@0.15.1 - - @delvtech/fixed-point-wasm@0.0.1 - -## 2.3.1 - -### Patch Changes - -- 5913c54: Change "APR" to "Apr" -- Updated dependencies [5913c54] - - @delvtech/hyperdrive-wasm@0.15.0 - -## 2.3.0 - -### Minor Changes - -- 21dca9c: Cleanup - -### Patch Changes - -- 21dca9c: Simplify checkpoint retrieval. Add `getCheckpointTime` method. -- b91debc: Fix incorrect openVaultSharePrice argument for previewCloseShort -- Updated dependencies [a9aedb1] - - @delvtech/hyperdrive-wasm@0.14.4 - -## 2.2.1 - -### Patch Changes - -- 6a53f5a: Add calcHprGivenApy and calcHprGivenApr methods to hyperwasm -- Updated dependencies [6a53f5a] - - @delvtech/hyperdrive-wasm@0.14.3 - -## 2.2.0 - -### Minor Changes - -- 53bfffc: refactor previewCloseShort to add fees and use hyerwasm functions - -## 2.1.0 - -### Minor Changes - -- 1564468: Replace simulate call in previewAdddLiquidity with hyperwasm method - -### Patch Changes - -- 8283062: Refactor getYieldSourceRate to use internal calc based on vaultSharePrice -- c277e22: Add mainnet steth yield source apy - -## 2.0.0 - -### Minor Changes - -- 95b0406: Upgrade to the latest v1.0.6 smart contracts - -### Patch Changes - -- Updated dependencies [95b0406] - - @delvtech/hyperdrive-artifacts@0.3.0 - - @delvtech/hyperdrive-wasm@0.14.0 - -## 1.0.1 - -### Patch Changes - -- e43604f: Add getVersion to ReadHyperdrive - -## 1.0.0 - -### Patch Changes - -- Updated dependencies [7921848] - - @delvtech/hyperdrive-artifacts@0.2.0 - -## 0.0.4 - -### Patch Changes - -- ac4c4ee: Added a getSharesToken getter to ReadWriteHyperdrive. -- Updated dependencies [0696ad7] - - @delvtech/hyperdrive-artifacts@0.1.0 - -## 0.0.3 - -### Patch Changes - -- de73cff: Add default maxIterations to core-js -- Updated dependencies [de73cff] - - @delvtech/hyperdrive-artifacts@0.0.3 - -## 0.0.2 - -### Patch Changes - -- 1636855: Update license field in packages.json and add publishConfig to artifacts package.json -- Updated dependencies [1636855] - - @delvtech/hyperdrive-artifacts@0.0.2 - -## 0.0.1 - -### Patch Changes - -- 3c1bc5b: 🚀 -- Updated dependencies [3c1bc5b] - - @delvtech/hyperdrive-artifacts@0.0.1 diff --git a/packages/hyperdrive-js-core/LICENSE b/packages/hyperdrive-js-core/LICENSE deleted file mode 100644 index 4f4a9cf45..000000000 --- a/packages/hyperdrive-js-core/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - 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 [2024] [DELV, Inc] - - 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/packages/hyperdrive-js-core/README.md b/packages/hyperdrive-js-core/README.md deleted file mode 100644 index c11320c75..000000000 --- a/packages/hyperdrive-js-core/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# @delvtech/hyperdrive-js-core - -A TypeScript SDK for the [Hyperdrive -AMM](https://www.github.com/delvtech/hyperdrive). - -> This is a foundational package. If you're looking to use the SDK. Checkout the -> list of [binding packages](#Binding-Packages) below. - -This package contains the core logic for interacting with the Hyperdrive -contracts, but doesn't include a web3 library for communicating with a network. -For this, we publish thin binding packages which seamlessly integrate the SDK -with a specific web3 library and re-export everything from the core. This design -enables us to be flexible in the web3 libraries (and even persistence layers) -we support. - -## Binding Packages - -Use the Hyperdrive TypeScript SDK with your web3 library of choice: - -| Web3 Library | Package | -| ------------------------------ | --------------------------------------------------------------------------------------------------------------------- | -| [Viem](https://viem.sh) | [`@delvtech/hyperdrive-viem`](https://www.github.com/delvtech/hyperdrive-frontend/tree/main/packages/hyperdrive-viem) | -| [Ethers](https://ethers.org/) | `@delvtech/hyperdrive-ethers` _(coming soon)_ | -| [Web3.js](https://web3js.org/) | `@delvtech/hyperdrive-web3` _(coming soon)_ | - -## Creating a new binding package - -To abstract away the web3 library, the SDK uses -[@delvtech/evm-client](https://www.github.com/delvtech/evm-client). Each SDK binding -package uses a corresponding `@delvtech/evm-client` binding package. - -| SDK binding package | EVM Client binding package | -| --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| [`@delvtech/hyperdrive-viem`](https://www.github.com/delvtech/hyperdrive-frontend/tree/main/packages/hyperdrive-viem) | [`@delvtech/evm-client-viem`](https://www.github.com/delvtech/evm-client/tree/main/packages/evm-client-viem) | -| `@delvtech/hyperdrive-ethers` _(coming soon)_ | [`@delvtech/evm-client-ethers`](https://www.github.com/delvtech/evm-client/tree/main/packages/evm-client-ethers) | -| `@delvtech/hyperdrive-web3` _(coming soon)_ | `@delvtech/evm-client-web3` _(coming soon)_ | - -Find or create the evm-client package for the web3 library you want to support -and use it to create `CachedReadContract`, `CachedReadWriteContract`, and -`Network` instances. - -**Viem `ReadHyperdrive` example:** - -```ts -import { IHyperdrive } from "@delvtech/hyperdrive-artifacts/IHyperdrive"; -import { ReadHyperdrive } from "@delvtech/hyperdrive-js-core"; -import { - SimpleCache, - createCachedReadContract, - createNetwork, -} from "@delvtech/evm-client-viem"; -import { Address, PublicClient } from "viem"; - -interface CreateReadHyperdriveOptions { - address: Address; - publicClient: PublicClient; - cache?: SimpleCache; - namespace?: string; -} - -export function createReadHyperdrive({ - address, - publicClient, - cache, - namespace, -}: CreateReadHyperdriveOptions): ReadHyperdrive { - // Create a new ReadHyperdrive using the evm-client bindings for Viem. - return new ReadHyperdrive({ - contract: createCachedReadContract({ - abi: IHyperdrive.abi, - address, - publicClient, - cache, - namespace, - }), - network: createNetwork(publicClient), - }); -} -``` diff --git a/packages/hyperdrive-js-core/package.json b/packages/hyperdrive-js-core/package.json deleted file mode 100644 index f0578f371..000000000 --- a/packages/hyperdrive-js-core/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "@delvtech/hyperdrive-js-core", - "version": "3.0.6", - "license": "AGPL-3.0", - "type": "module", - "scripts": { - "build": "tsup", - "watch": "npm run build -- --watch", - "test": "vitest run", - "test:watch": "vitest --reporter=verbose", - "typecheck": "tsc --noEmit" - }, - "peerDependencies": { - "@delvtech/evm-client": "^0.5.1" - }, - "dependencies": { - "@delvtech/fixed-point-wasm": "^0.0.8", - "@delvtech/hyperdrive-artifacts": "^1.0.20", - "@delvtech/hyperdrive-wasm": "^0.16.1", - "lodash.groupby": "^4.6.0", - "lodash.mapvalues": "^4.6.0" - }, - "devDependencies": { - "@delvtech/evm-client": "^0.5.1", - "@hyperdrive/eslint-config": "*", - "@hyperdrive/prettier-config": "*", - "@hyperdrive/tsconfig": "*", - "@types/lodash.groupby": "^4.6.9", - "@types/lodash.mapvalues": "^4.6.9", - "@types/sinon": "^17.0.3", - "abitype": "^1.0.5", - "dotenv": "^16.4.5", - "prettier": "3.3.3", - "prettier-plugin-organize-imports": "4.0.0", - "sinon": "^18.0.0", - "tsconfig-paths": "^4.2.0", - "tsup": "^8.2.3", - "typescript": "^5.5.4", - "vite-tsconfig-paths": "^4.3.2", - "vitest": "^2.0.4" - }, - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./factory/*": { - "types": "./dist/factory/*.d.ts", - "default": "./dist/factory/*.js" - }, - "./hyperdrive/*": { - "types": "./dist/hyperdrive/*.d.ts", - "default": "./dist/hyperdrive/*.js" - }, - "./registry/*": { - "types": "./dist/registry/*.d.ts", - "default": "./dist/registry/*.js" - }, - "./token/*": { - "types": "./dist/token/*.d.ts", - "default": "./dist/token/*.js" - }, - "./contract": { - "types": "./dist/contract.d.ts", - "default": "./dist/contract.js" - }, - "./errors": { - "types": "./dist/errors.d.ts", - "default": "./dist/errors.js" - }, - "./model": { - "types": "./dist/model.d.ts", - "default": "./dist/model.js" - }, - "./utils": { - "types": "./dist/utils.d.ts", - "default": "./dist/utils.js" - }, - "./v1.0.14": { - "types": "./dist/v1.0.14/index.d.ts", - "default": "./dist/v1.0.14/index.js" - }, - "./v1.0.14/*": { - "types": "./dist/v1.0.14/*.d.ts", - "default": "./dist/v1.0.14/*.js" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/hyperdrive-js-core/src/base/adjustAmountByPercentage.test.ts b/packages/hyperdrive-js-core/src/base/adjustAmountByPercentage.test.ts deleted file mode 100644 index 6a65151f0..000000000 --- a/packages/hyperdrive-js-core/src/base/adjustAmountByPercentage.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { parseFixed } from "@delvtech/fixed-point-wasm"; -import { adjustAmountByPercentage } from "src/base/adjustAmountByPercentage"; -import { expect, test } from "vitest"; - -test("should return adjusted amount down when given a basic input", () => { - expect( - adjustAmountByPercentage({ - amount: parseFixed(100).bigint, - percentage: parseFixed(1).bigint, - decimals: 18, - direction: "down", - }), - ).toBe(parseFixed(99).bigint); -}); -test("should return adjusted amount up when given a basic input", () => { - expect( - adjustAmountByPercentage({ - amount: parseFixed(100).bigint, - percentage: parseFixed(1).bigint, - decimals: 18, - direction: "up", - }), - ).toBe(parseFixed(101).bigint); -}); - -test("should handle precision accurately when given precise input amounts", () => { - const amount = parseFixed("100.123456789012345678").bigint; - expect( - adjustAmountByPercentage({ - amount, - percentage: parseFixed(1).bigint, - decimals: 18, - direction: "down", - }), - ).toBe(amount - amount / 100n); -}); - -test("should return zero when input amount is zero", () => { - expect( - adjustAmountByPercentage({ - amount: 0n, - percentage: parseFixed(1).bigint, - decimals: 18, - direction: "down", - }), - ).toBe(0n); -}); diff --git a/packages/hyperdrive-js-core/src/base/adjustAmountByPercentage.ts b/packages/hyperdrive-js-core/src/base/adjustAmountByPercentage.ts deleted file mode 100644 index d654c04e1..000000000 --- a/packages/hyperdrive-js-core/src/base/adjustAmountByPercentage.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { fixed } from "@delvtech/fixed-point-wasm"; - -interface AdjustAmountByPercentageOptions { - /** - * The amount to adjust - */ - amount: bigint; - /** - * The percentage to adjust it by, eg: 1e18 for 1% - */ - percentage: bigint; - - /** - * The decimals of precision for the `amount` - */ - decimals: number; - direction: "up" | "down"; -} - -/** - * Adjusts a given amount by some percentage. Useful for slippage calculations. - * - * Example: - * - * ```ts - * adjustAmountByPercentage({ - * amount: parseUnits("100", 18), - * decimals: 18, - * percentage: BigInt(1e18), - * direction: "down", - * }) === parseUnits("99") - * ``` - * - * ```ts - * adjustAmountByPercentage({ - * amount: parseUnits("100", 18), - * decimals: 18, - * percentage: BigInt(1e18), - * direction: "up", - * }) === parseUnits("101") - * ``` - */ -export function adjustAmountByPercentage({ - amount, - percentage, - decimals, - direction, -}: AdjustAmountByPercentageOptions): bigint { - const slippageAmount = fixed(amount, decimals) - .mul(percentage, decimals) - .div(100, 0); - return direction === "down" - ? amount - slippageAmount.bigint - : amount + slippageAmount.bigint; -} diff --git a/packages/hyperdrive-js-core/src/base/assertNever.ts b/packages/hyperdrive-js-core/src/base/assertNever.ts deleted file mode 100644 index f23f00820..000000000 --- a/packages/hyperdrive-js-core/src/base/assertNever.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { HyperdriveSdkError } from "src/errors/HyperdriveSdkError"; - -/** - * Helper function for exhaustive checks of discriminated unions. - * https://basarat.gitbooks.io/typescript/docs/types/discriminated-unions.html - * - * @example - * - * type A = {type: 'a'}; - * type B = {type: 'b'}; - * type Union = A | B; - * - * function doSomething(arg: Union) { - * if (arg.type === 'a') { - * return something; - * } - * - * if (arg.type === 'b') { - * return somethingElse; - * } - * - * // TS will error if there are other types in the union - * // Will throw an Error when called at runtime. - * // Use `assertNever(arg, true)` instead to fail silently. - * return assertNever(arg); - * } - */ export function assertNever(value: never, noThrow?: boolean): never { - if (noThrow) { - return value; - } - - throw new HyperdriveSdkError( - `Unhandled discriminated union member: ${JSON.stringify(value)}`, - ); -} diff --git a/packages/hyperdrive-js-core/src/base/constants.ts b/packages/hyperdrive-js-core/src/base/constants.ts deleted file mode 100644 index 68e3c47c4..000000000 --- a/packages/hyperdrive-js-core/src/base/constants.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const SECONDS_PER_YEAR = 31536000n; - -export const MAX_UINT256 = - 115792089237316195423570985008687907853269984665640564039457584007913129639935n; - -export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; diff --git a/packages/hyperdrive-js-core/src/base/getHprFromApr.ts b/packages/hyperdrive-js-core/src/base/getHprFromApr.ts deleted file mode 100644 index ddcde9159..000000000 --- a/packages/hyperdrive-js-core/src/base/getHprFromApr.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { hyperwasm } from "src/hyperwasm"; -// TODO: This is now simply a renamed, re-exported hyperwasm function. We should -// consider re-exporting all hyperwasm functions directly or not at all. -export function getHprFromApr(apr: bigint, positionDuration: bigint): bigint { - return hyperwasm.calcHprGivenApr({ apr, positionDuration }); -} diff --git a/packages/hyperdrive-js-core/src/base/getHprFromApy.ts b/packages/hyperdrive-js-core/src/base/getHprFromApy.ts deleted file mode 100644 index 35a8d8c36..000000000 --- a/packages/hyperdrive-js-core/src/base/getHprFromApy.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { hyperwasm } from "src/hyperwasm"; -// TODO: This is now simply a renamed, re-exported hyperwasm function. We should -// consider re-exporting all hyperwasm functions directly or not at all. -export function getHprFromApy(apy: bigint, positionDuration: bigint): bigint { - return hyperwasm.calcHprGivenApy({ apy, positionDuration }); -} diff --git a/packages/hyperdrive-js-core/src/base/testing/accounts.ts b/packages/hyperdrive-js-core/src/base/testing/accounts.ts deleted file mode 100644 index f04008eed..000000000 --- a/packages/hyperdrive-js-core/src/base/testing/accounts.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const BOB = "0xBob"; -export const ALICE = "0xAlice"; -export const NANCY = "0xNancy"; diff --git a/packages/hyperdrive-js-core/src/base/types.ts b/packages/hyperdrive-js-core/src/base/types.ts deleted file mode 100644 index f00061a6a..000000000 --- a/packages/hyperdrive-js-core/src/base/types.ts +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Combines members of an intersection into a readable type. - * @see https://twitter.com/mattpocockuk/status/1622730173446557697?s=20&t=NdpAcmEFXY01xkqU3KO0Mg - */ -export type Prettify = { - [K in keyof T]: T[K]; -} & unknown; - -/** - * A generic constructor type. - */ -export type Constructor< - TInstanceType = any, - TArgs extends any[] = any[], -> = new (...args: TArgs) => TInstanceType; - -/** - * Overrides properties of `T` with properties of `U`. - */ -export type Override = Prettify & U>; - -/** - * Convert members of a union to an intersection. - * - * @example - * ```ts - * type Union = { a: number } | { b: string }; - * type Intersection = UnionToIntersection; - * // { a: number } & { b: string } - * ``` - * - * @privateRemarks - * This works by taking advantage of [distributive conditional - * types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types), - * which allows conditional types to be applied to each member of a union type - * individually, and [contravarience in function argument - * types](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-6.html#strict-function-types). - * - * The conditional type `T extends any ? (x: T) => any : never` is used to - * create a function type for each member of the union that takes the member as - * an argument. - * - * Then, the union of function types is checked to see if it can be assigned to - * a single function type with an inferred argument type. TypeScript infers the - * argument type as the intersection of the union members since it's the only - * argument type that satisfies all members of the function type union. - */ -type UnionToIntersection = ( - T extends any ? (member: T) => any : never -) extends (member: infer R) => any - ? R - : never; - -/** - * Merge the keys of a union or intersection of objects into a single type. - * - * @example - * ```ts - * type GetBlockOptions = { - * includeTransactions?: boolean | undefined - * } & ( - * | { - * blockHash?: string | undefined; - * blockNumber?: never | undefined; - * blockTag?: never | undefined; - * } - * | { - * blockHash?: never | undefined; - * blockNumber?: bigint | undefined; - * blockTag?: never | undefined; - * } - * | { - * blockHash?: never | undefined; - * blockNumber?: never | undefined; - * blockTag?: string | undefined; - * } - * ) - * - * type Merged = MergeKeys; - * // { - * // includeTransactions?: boolean | undefined; - * // blockHash?: string | undefined; - * // blockNumber?: bigint | undefined; - * // blockTag?: string | undefined; - * // } - * ``` - */ -export type MergeKeys = - UnionToIntersection extends infer I - ? { - // Each key of the intersection is first checked against the union type, - // T. If it exists in every member of T, then T[K] will be a union of - // the value types. Otherwise, I[K] is used. I[K] is the value type of - // the key in the intersection which will be `never` for keys with - // conflicting value types. - [K in keyof I]: K extends keyof T ? T[K] : I[K]; - } - : never; diff --git a/packages/hyperdrive-js-core/src/checkpoint/getCheckpointTime.ts b/packages/hyperdrive-js-core/src/checkpoint/getCheckpointTime.ts deleted file mode 100644 index 55bc54ada..000000000 --- a/packages/hyperdrive-js-core/src/checkpoint/getCheckpointTime.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function getCheckpointTime( - blockTimestamp: bigint, - checkpointDuration: bigint, -): bigint { - // https://github.com/delvtech/hyperdrive/blob/314cd408ffa4968d5a6daff95167cd9af17607d6/contracts/src/HyperdriveStorage.sol#L193 - return blockTimestamp - (blockTimestamp % checkpointDuration); -} diff --git a/packages/hyperdrive-js-core/src/checkpoint/types.ts b/packages/hyperdrive-js-core/src/checkpoint/types.ts deleted file mode 100644 index 2f3124768..000000000 --- a/packages/hyperdrive-js-core/src/checkpoint/types.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { - ContractReadOptions, - Event, - FunctionReturn, -} from "@delvtech/evm-client"; -import { Prettify } from "src/base/types"; -import { HyperdriveAbi } from "src/hyperdrive/base/abi"; - -export type Checkpoint = Prettify< - { - checkpointTime: bigint; - } & FunctionReturn ->; - -export type CheckpointEvent = Event; - -export type GetCheckpointTimeParams = ( - | { - /** - * A timestamp that falls within the checkpoint. - */ - timestamp?: bigint; - blockNumber?: never; - } - | { - timestamp?: never; - /** - * A block number that falls within the checkpoint. - */ - blockNumber?: bigint; - } -) & { - options?: ContractReadOptions; -}; - -export type GetCheckpointParams = ( - | { - /** - * The time of the checkpoint. - */ - checkpointTime?: bigint; - timestamp?: never; - blockNumber?: never; - } - | { - checkpointTime?: never; - /** - * A timestamp that falls within the checkpoint. - */ - timestamp?: bigint; - blockNumber?: never; - } - | { - checkpointTime?: never; - timestamp?: never; - /** - * A block number that falls within the checkpoint. - */ - blockNumber?: bigint; - } -) & { - options?: ContractReadOptions; -}; diff --git a/packages/hyperdrive-js-core/src/errors/BlockNotFoundError.ts b/packages/hyperdrive-js-core/src/errors/BlockNotFoundError.ts deleted file mode 100644 index 7c6279a53..000000000 --- a/packages/hyperdrive-js-core/src/errors/BlockNotFoundError.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NetworkGetBlockOptions } from "@delvtech/evm-client"; -import { HyperdriveSdkError } from "./HyperdriveSdkError"; - -export class BlockNotFoundError extends HyperdriveSdkError { - constructor(options?: NetworkGetBlockOptions) { - const block = - options?.blockHash ?? options?.blockNumber ?? options?.blockTag; - super(`Block${block !== undefined ? ` ${block}` : ""} not found`); - this.name = "BlockNotFound"; - } -} diff --git a/packages/hyperdrive-js-core/src/errors/HyperdriveSdkError.ts b/packages/hyperdrive-js-core/src/errors/HyperdriveSdkError.ts deleted file mode 100644 index c83978911..000000000 --- a/packages/hyperdrive-js-core/src/errors/HyperdriveSdkError.ts +++ /dev/null @@ -1,6 +0,0 @@ -export class HyperdriveSdkError extends Error { - constructor(...[message, options]: Parameters) { - super(message, options); - this.name = "HyperdriveSdkError"; - } -} diff --git a/packages/hyperdrive-js-core/src/errors/MethodNotImplementedError.ts b/packages/hyperdrive-js-core/src/errors/MethodNotImplementedError.ts deleted file mode 100644 index 77536f3fb..000000000 --- a/packages/hyperdrive-js-core/src/errors/MethodNotImplementedError.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { HyperdriveSdkError } from "./HyperdriveSdkError"; - -export interface MethodNotImplementedErrorOptions { - /** - * The name of the object that the method was not implemented in. - */ - objectName: string; - /** - * The name of the method that was not implemented. - */ - methodName: string; -} - -/** - * An error that is thrown when a method is not implemented in an object. - */ -export class MethodNotImplementedError extends HyperdriveSdkError { - constructor({ methodName, objectName }: MethodNotImplementedErrorOptions) { - super(`${objectName} does not implement the method ${methodName}.`); - this.name = "MethodNotImplemented"; - } -} diff --git a/packages/hyperdrive-js-core/src/evm-client/contractFactory.ts b/packages/hyperdrive-js-core/src/evm-client/contractFactory.ts deleted file mode 100644 index 1c670754e..000000000 --- a/packages/hyperdrive-js-core/src/evm-client/contractFactory.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { - CachedReadContract, - CachedReadWriteContract, - SimpleCache, -} from "@delvtech/evm-client"; -import { Abi } from "abitype"; - -export interface ContractFactoryOptions { - abi: TAbi; - address: `0x${string}`; - cache?: SimpleCache; - namespace?: string; -} - -/** - * A factory function that creates a `CachedReadContract` instance. - */ -export type ReadContractFactory = ( - options: ContractFactoryOptions, -) => CachedReadContract; - -/** - * A factory function that creates a `CachedReadWriteContract` instance. - */ -export type ReadWriteContractFactory = ( - options: ContractFactoryOptions, -) => CachedReadWriteContract; diff --git a/packages/hyperdrive-js-core/src/evm-client/syncCacheWithTransaction.ts b/packages/hyperdrive-js-core/src/evm-client/syncCacheWithTransaction.ts deleted file mode 100644 index efa681d87..000000000 --- a/packages/hyperdrive-js-core/src/evm-client/syncCacheWithTransaction.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - CachedReadWriteContract, - ContractReadOptions, - FunctionArgs, - FunctionName, -} from "@delvtech/evm-client"; -import { Abi } from "abitype"; - -/** - * Clears the cache and calls the transaction handlers provided to a "Write" - * method on any CachedReadWriteContract class. - * - * This decorator accepts an argument of cache keys to clear. By default it will - * clear the entire cache. - * - * @example - * ```ts - * class ReadWriteFooBar extends CachedReadWriteContract { - * - * // Listen for tx complete and clear the entire cache - * @syncCacheWithTransaction() - * setFoo() { - * return this.contract.write("setFoo", []); - * } - * - * // Listen for tx complete and clear a partial or specific cache entry - * @syncCacheWithTransaction({ cacheEntries: [{ functionName: "getBar" }]}) - * setBar() { - * return this.contract.write("setBar", []); - * } - * } - * ``` - * - * @internal - */ -export function syncCacheWithTransaction(options?: { - cacheEntries?: { - functionName?: FunctionName; - args?: FunctionArgs>; - options?: ContractReadOptions; - }[]; -}) { - return function ( - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any - target: any, - propertyKey: string, - descriptor: PropertyDescriptor, - ): void { - const originalMethod = descriptor.value; - - // Wrap the original method in a function that does the transaction - // side-effects we want after the tx completes - // eslint-disable-next-line @typescript-eslint/no-explicit-any - descriptor.value = async function (...args: any[]) { - // Access the target class instance from within a decorator - // @ts-expect-error The `this` keyword will be the target class instance - const network = this.network; - // @ts-expect-error The `this` keyword will be the target class instance - const contract = this.contract as CachedReadWriteContract; - - // call the original function and await the hash - const hash = await originalMethod.apply(this, args); - - // Dont await this part, we want it to happen in the background once the - // tx is completed - network.waitForTransaction(hash).then(() => { - if (options?.cacheEntries) { - options.cacheEntries.forEach((cacheKey) => { - return contract.deleteReadsMatching( - cacheKey.functionName, - cacheKey.args, - cacheKey.options, - ); - }); - } else { - contract.clearCache(); - } - args[0]?.onTransactionCompleted?.(hash); - }); - - // Return the original method's result hash - return hash; - }; - }; -} diff --git a/packages/hyperdrive-js-core/src/evm-client/utils/getBlockFromReadOptions.ts b/packages/hyperdrive-js-core/src/evm-client/utils/getBlockFromReadOptions.ts deleted file mode 100644 index d5119604d..000000000 --- a/packages/hyperdrive-js-core/src/evm-client/utils/getBlockFromReadOptions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { BlockTag, ContractReadOptions } from "@delvtech/evm-client"; - -// TODO: Move this to @delvtech/evm-client -export type BlockLike = BlockTag | bigint; - -/** - * Extracts a block number or block tag from a `ContractReadOptions` object. - */ -export function getBlockFromReadOptions( - options?: ContractReadOptions, -): BlockLike | undefined { - return options?.blockNumber || options?.blockTag; -} diff --git a/packages/hyperdrive-js-core/src/evm-client/utils/getBlockOrThrow.ts b/packages/hyperdrive-js-core/src/evm-client/utils/getBlockOrThrow.ts deleted file mode 100644 index 7343d180a..000000000 --- a/packages/hyperdrive-js-core/src/evm-client/utils/getBlockOrThrow.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Block, Network, NetworkGetBlockOptions } from "@delvtech/evm-client"; -import { BlockNotFoundError } from "src/errors/BlockNotFoundError"; - -/** - * A utility that tries to fetch a block from a given network and throws an - * error if no block is found. Useful for unified error handling when fetching - * blocks that may not exist. - * @throws `BlockNotFoundError` - */ -export async function getBlockOrThrow( - network: Network, - options?: NetworkGetBlockOptions, -): Promise { - const fetched = await network.getBlock(options); - if (!fetched) { - throw new BlockNotFoundError(options); - } - return fetched; -} diff --git a/packages/hyperdrive-js-core/src/evm-client/utils/isReadWriteContract.ts b/packages/hyperdrive-js-core/src/evm-client/utils/isReadWriteContract.ts deleted file mode 100644 index 26057a907..000000000 --- a/packages/hyperdrive-js-core/src/evm-client/utils/isReadWriteContract.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { - CachedReadContract, - CachedReadWriteContract, -} from "@delvtech/evm-client"; - -// TODO: Consider better type checking if more use cases arise, possibly with a -// library like zod. -export function isReadWriteContract( - contract: CachedReadContract | CachedReadWriteContract, -): contract is CachedReadWriteContract { - return "write" in contract; -} diff --git a/packages/hyperdrive-js-core/src/exports/contract.ts b/packages/hyperdrive-js-core/src/exports/contract.ts deleted file mode 100644 index 0d319d3e3..000000000 --- a/packages/hyperdrive-js-core/src/exports/contract.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type { - ContractFactoryOptions, - ReadContractFactory, - ReadWriteContractFactory, -} from "src/evm-client/contractFactory"; diff --git a/packages/hyperdrive-js-core/src/exports/errors.ts b/packages/hyperdrive-js-core/src/exports/errors.ts deleted file mode 100644 index d12be0f93..000000000 --- a/packages/hyperdrive-js-core/src/exports/errors.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { BlockNotFoundError } from "src/errors/BlockNotFoundError"; -export { HyperdriveSdkError } from "src/errors/HyperdriveSdkError"; -export { MethodNotImplementedError } from "src/errors/MethodNotImplementedError"; diff --git a/packages/hyperdrive-js-core/src/exports/factory/index.ts b/packages/hyperdrive-js-core/src/exports/factory/index.ts deleted file mode 100644 index 29cd2058f..000000000 --- a/packages/hyperdrive-js-core/src/exports/factory/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./model"; -export * from "./rest"; diff --git a/packages/hyperdrive-js-core/src/exports/factory/model.ts b/packages/hyperdrive-js-core/src/exports/factory/model.ts deleted file mode 100644 index bdbe55aea..000000000 --- a/packages/hyperdrive-js-core/src/exports/factory/model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { ReadFactory, type ReadFactoryOptions } from "src/factory/ReadFactory"; -export { - ReadWriteFactory, - type ReadWriteFactoryOptions, -} from "src/factory/ReadWriteFactory"; diff --git a/packages/hyperdrive-js-core/src/exports/factory/rest.ts b/packages/hyperdrive-js-core/src/exports/factory/rest.ts deleted file mode 100644 index 05e2b407a..000000000 --- a/packages/hyperdrive-js-core/src/exports/factory/rest.ts +++ /dev/null @@ -1 +0,0 @@ -export { factoryAbi, type FactoryAbi } from "src/factory/abi"; diff --git a/packages/hyperdrive-js-core/src/exports/hyperdrive/index.ts b/packages/hyperdrive-js-core/src/exports/hyperdrive/index.ts deleted file mode 100644 index 29cd2058f..000000000 --- a/packages/hyperdrive-js-core/src/exports/hyperdrive/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./model"; -export * from "./rest"; diff --git a/packages/hyperdrive-js-core/src/exports/hyperdrive/model.ts b/packages/hyperdrive-js-core/src/exports/hyperdrive/model.ts deleted file mode 100644 index a0cfcf284..000000000 --- a/packages/hyperdrive-js-core/src/exports/hyperdrive/model.ts +++ /dev/null @@ -1,40 +0,0 @@ -export { - ReadHyperdrive, - type ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; -export { - ReadWriteHyperdrive, - type ReadWriteHyperdriveOptions, -} from "src/hyperdrive/base/ReadWriteHyperdrive"; - -// erc-4626 -export { ReadErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadErc4626Hyperdrive"; -export { ReadMockErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive"; -export { ReadWriteErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive"; -export { ReadWriteMockErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive"; - -// ezeth -export { ReadEzEthHyperdrive } from "src/hyperdrive/ezeth/ReadEzEthHyperdrive"; -export { ReadWriteEzEthHyperdrive } from "src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive"; - -// lseth -export { ReadLsEthHyperdrive } from "src/hyperdrive/lseth/ReadLsEthHyperdrive"; -export { ReadWriteLsEthHyperdrive } from "src/hyperdrive/lseth/ReadWriteLsEthHyperdrive"; - -// morpho -export { ReadMetaMorphoHyperdrive } from "src/hyperdrive/metamorpho/ReadMetaMorphoHyperdrive"; -export { ReadWriteMetaMorphoHyperdrive } from "src/hyperdrive/metamorpho/ReadWriteMetaMorphoHyperdrive"; - -// reth -export { ReadREthHyperdrive } from "src/hyperdrive/reth/ReadREthHyperdrive"; -export { ReadWriteREthHyperdrive } from "src/hyperdrive/reth/ReadWriteREthHyperdrive"; - -// steth -export { - ReadStEthHyperdrive, - type ReadStEthHyperdriveOptions, -} from "src/hyperdrive/steth/ReadStEthHyperdrive"; -export { - ReadWriteStEthHyperdrive, - type ReadWriteStEthHyperdriveOptions, -} from "src/hyperdrive/steth/ReadWriteStEthHyperdrive"; diff --git a/packages/hyperdrive-js-core/src/exports/hyperdrive/rest.ts b/packages/hyperdrive-js-core/src/exports/hyperdrive/rest.ts deleted file mode 100644 index 55a51a6e8..000000000 --- a/packages/hyperdrive-js-core/src/exports/hyperdrive/rest.ts +++ /dev/null @@ -1,34 +0,0 @@ -export { hyperdriveAbi, type HyperdriveAbi } from "src/hyperdrive/base/abi"; - -// ezeth -export { - ezEthHyperdriveAbi, - type EzEthHyperdriveAbi, -} from "src/hyperdrive/ezeth/abi"; - -// morpho -export { - metaMorphoSnippetsABI, - type MetaMorphoSnippetsABI, -} from "src/hyperdrive/metamorpho/abi"; - -// pool -export type { PoolConfig, PoolInfo } from "src/pool/types"; - -// shorts -export type { ClosedShort, OpenShort, Short } from "src/shorts/types"; - -// longs -export { calculateAprFromPrice } from "src/hyperdrive/utils/calculateAprFromPrice"; -export { calculateMatureLongYieldAfterFees } from "src/longs/calculateMatureLongYieldAfterFees"; -export type { - ClosedLong, - Long, - OpenLongPositionReceived, -} from "src/longs/types"; - -// lp -export type { ClosedLpShares } from "src/lp/ClosedLpShares"; - -// withdrawal shares -export type { RedeemedWithdrawalShares } from "src/withdrawalShares/RedeemedWithdrawalShares"; diff --git a/packages/hyperdrive-js-core/src/exports/index.ts b/packages/hyperdrive-js-core/src/exports/index.ts deleted file mode 100644 index 8fd78ac3a..000000000 --- a/packages/hyperdrive-js-core/src/exports/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from "./contract"; -export * from "./errors"; -export * from "./factory"; -export * from "./hyperdrive"; -export * from "./model"; -export * from "./registry"; -export * from "./token"; -export * from "./utils"; diff --git a/packages/hyperdrive-js-core/src/exports/model.ts b/packages/hyperdrive-js-core/src/exports/model.ts deleted file mode 100644 index 24ba9e724..000000000 --- a/packages/hyperdrive-js-core/src/exports/model.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { - ReadModel, - type ReadContractModelOptions, - type ReadModelOptions, -} from "src/model/ReadModel"; -export { - ReadWriteModel, - type ReadWriteContractModelOptions, - type ReadWriteModelOptions, -} from "src/model/ReadWriteModel"; diff --git a/packages/hyperdrive-js-core/src/exports/registry/index.ts b/packages/hyperdrive-js-core/src/exports/registry/index.ts deleted file mode 100644 index 29cd2058f..000000000 --- a/packages/hyperdrive-js-core/src/exports/registry/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./model"; -export * from "./rest"; diff --git a/packages/hyperdrive-js-core/src/exports/registry/model.ts b/packages/hyperdrive-js-core/src/exports/registry/model.ts deleted file mode 100644 index 194822a85..000000000 --- a/packages/hyperdrive-js-core/src/exports/registry/model.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { - ReadRegistry, - type ReadRegistryOptions, -} from "src/registry/ReadRegistry"; -export { - ReadWriteRegistry, - type ReadWriteRegistryOptions, -} from "src/registry/ReadWriteRegistry"; diff --git a/packages/hyperdrive-js-core/src/exports/registry/rest.ts b/packages/hyperdrive-js-core/src/exports/registry/rest.ts deleted file mode 100644 index 29e3390b5..000000000 --- a/packages/hyperdrive-js-core/src/exports/registry/rest.ts +++ /dev/null @@ -1 +0,0 @@ -export { registryAbi, type RegistryAbi } from "src/registry/abi"; diff --git a/packages/hyperdrive-js-core/src/exports/token/index.ts b/packages/hyperdrive-js-core/src/exports/token/index.ts deleted file mode 100644 index 29cd2058f..000000000 --- a/packages/hyperdrive-js-core/src/exports/token/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./model"; -export * from "./rest"; diff --git a/packages/hyperdrive-js-core/src/exports/token/model.ts b/packages/hyperdrive-js-core/src/exports/token/model.ts deleted file mode 100644 index fd8033027..000000000 --- a/packages/hyperdrive-js-core/src/exports/token/model.ts +++ /dev/null @@ -1,34 +0,0 @@ -export type { ReadToken } from "src/token/ReadToken"; -export type { ReadWriteToken } from "src/token/ReadWriteToken"; - -// eth -export { ReadEth, type ReadEthOptions } from "src/token/eth/ReadEth"; -export { - ReadWriteEth, - type ReadWriteEthOptions, -} from "src/token/eth/ReadWriteEth"; - -// erc-20 -export { ReadErc20, type ReadErc20Options } from "src/token/erc20/ReadErc20"; -export { - ReadWriteErc20, - type ReadWriteErc20Options, -} from "src/token/erc20/ReadWriteErc20"; - -// erc-4626 -export { ReadErc4626 } from "src/token/erc4626/ReadErc4626"; -export { ReadMockErc4626 } from "src/token/erc4626/ReadMockErc4626"; -export { ReadWriteErc4626 } from "src/token/erc4626/ReadWriteErc4626"; -export { ReadWriteMockErc4626 } from "src/token/erc4626/ReadWriteMockErc4626"; - -// lseth -export { ReadLsEth } from "src/token/lseth/ReadLsEth"; -export { ReadWriteLsEth } from "src/token/lseth/ReadWriteLsEth"; - -// reth -export { ReadREth } from "src/token/reth/ReadREth"; -export { ReadWriteREth } from "src/token/reth/ReadWriteREth"; - -// steth -export { ReadStEth } from "src/token/steth/ReadStEth"; -export { ReadWriteStEth } from "src/token/steth/ReadWriteStEth"; diff --git a/packages/hyperdrive-js-core/src/exports/token/rest.ts b/packages/hyperdrive-js-core/src/exports/token/rest.ts deleted file mode 100644 index 317a005ad..000000000 --- a/packages/hyperdrive-js-core/src/exports/token/rest.ts +++ /dev/null @@ -1,19 +0,0 @@ -// erc-20 -export { erc20Abi, type Erc20Abi } from "src/token/erc20/abi"; - -// erc-4626 -export { - erc4626Abi, - mockErc4626Abi, - type Erc4626Abi, - type MockErc4626Abi, -} from "src/token/erc4626/abi"; - -// lseth -export { lsEthAbi, type LsEthAbi } from "src/token/lseth/abi"; - -// reth -export { rEthAbi, type REthAbi } from "src/token/reth/abi"; - -// steth -export { stEthAbi, type StEthAbi } from "src/token/steth/abi"; diff --git a/packages/hyperdrive-js-core/src/exports/utils.ts b/packages/hyperdrive-js-core/src/exports/utils.ts deleted file mode 100644 index 0acd4a93c..000000000 --- a/packages/hyperdrive-js-core/src/exports/utils.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { adjustAmountByPercentage } from "src/base/adjustAmountByPercentage"; -export { getHprFromApr } from "src/base/getHprFromApr"; -export { getHprFromApy } from "src/base/getHprFromApy"; -export { calculateAprFromPrice } from "src/hyperdrive/utils/calculateAprFromPrice"; -export { calculateMatureLongYieldAfterFees } from "src/longs/calculateMatureLongYieldAfterFees"; - -// types -export type { - Constructor, - MergeKeys, - Override, - Prettify, -} from "src/base/types"; diff --git a/packages/hyperdrive-js-core/src/exports/v1.0.14/hyperdrive/index.ts b/packages/hyperdrive-js-core/src/exports/v1.0.14/hyperdrive/index.ts deleted file mode 100644 index b6837c3e2..000000000 --- a/packages/hyperdrive-js-core/src/exports/v1.0.14/hyperdrive/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./model"; diff --git a/packages/hyperdrive-js-core/src/exports/v1.0.14/hyperdrive/model.ts b/packages/hyperdrive-js-core/src/exports/v1.0.14/hyperdrive/model.ts deleted file mode 100644 index d041c708d..000000000 --- a/packages/hyperdrive-js-core/src/exports/v1.0.14/hyperdrive/model.ts +++ /dev/null @@ -1,28 +0,0 @@ -// base -export { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -export { ReadWriteHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14"; - -// erc-4626 -export { ReadErc4626Hyperdrive_v1_0_14 } from "src/hyperdrive/erc4626/v1.0.14/ReadErc4626Hyperdrive_v1_0_14"; -export { ReadMockErc4626Hyperdrive_v1_0_14 } from "src/hyperdrive/erc4626/v1.0.14/ReadMockErc4626Hyperdrive_v1_0_14"; -export { ReadWriteErc4626Hyperdrive_v1_0_14 } from "src/hyperdrive/erc4626/v1.0.14/ReadWriteErc4626Hyperdrive_v1_0_14"; -export { ReadWriteMockErc4626Hyperdrive_v1_0_14 } from "src/hyperdrive/erc4626/v1.0.14/ReadWriteMockErc4626Hyperdrive_v1_0_14"; - -// ezeth -export { ReadEzEthHyperdrive_v1_0_14 } from "src/hyperdrive/ezeth/v1.0.14/ReadEzEthHyperdrive_v1_0_14"; -export { ReadWriteEzEthHyperdrive_v1_0_14 } from "src/hyperdrive/ezeth/v1.0.14/ReadWriteEzEthHyperdrive_v1_0_14"; - -// lseth -export { ReadLsEthHyperdrive_v1_0_14 } from "src/hyperdrive/lseth/v1.0.14/ReadLsEthHyperdrive_v1_0_14"; -export { ReadWriteLsEthHyperdrive_v1_0_14 } from "src/hyperdrive/lseth/v1.0.14/ReadWriteLsEthHyperdrive_v1_0_14"; - -// morpho -export { ReadMetaMorphoHyperdrive_v1_0_14 } from "src/hyperdrive/metamorpho/v1.0.14/ReadMetaMorphoHyperdrive_v1_0_14"; - -// reth -export { ReadREthHyperdrive_v1_0_14 } from "src/hyperdrive/reth/v1.0.14/ReadREthHyperdrive_v1_0_14"; -export { ReadWriteREthHyperdrive_v1_0_14 } from "src/hyperdrive/reth/v1.0.14/ReadWriteREthHyperdrive_v1_0_14"; - -// steth -export { ReadStEthHyperdrive_v1_0_14 } from "src/hyperdrive/steth/v1.0.14/ReadStEthHyperdrive_v1_0_14"; -export { ReadWriteStEthHyperdrive_v1_0_14 } from "src/hyperdrive/steth/v1.0.14/ReadWriteStEthHyperdrive_v1_0_14"; diff --git a/packages/hyperdrive-js-core/src/exports/v1.0.14/index.ts b/packages/hyperdrive-js-core/src/exports/v1.0.14/index.ts deleted file mode 100644 index 85fbc6375..000000000 --- a/packages/hyperdrive-js-core/src/exports/v1.0.14/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./hyperdrive"; diff --git a/packages/hyperdrive-js-core/src/factory/ReadFactory.ts b/packages/hyperdrive-js-core/src/factory/ReadFactory.ts deleted file mode 100644 index 515729686..000000000 --- a/packages/hyperdrive-js-core/src/factory/ReadFactory.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Address } from "abitype"; -import { FactoryAbi, factoryAbi } from "src/factory/abi"; -import { ReadHyperdrive } from "src/hyperdrive/base/ReadHyperdrive"; -import { ReadContractModelOptions, ReadModel } from "src/model/ReadModel"; - -export interface ReadFactoryOptions extends ReadContractModelOptions {} - -export class ReadFactory extends ReadModel { - address: Address; - contract: CachedReadContract; - - constructor({ - debugName = "Hyperdrive Factory", - address, - cache, - namespace, - ...modelOptions - }: ReadFactoryOptions) { - super({ debugName, ...modelOptions }); - this.address = address; - this.contract = this.contractFactory({ - abi: factoryAbi, - address, - cache, - namespace, - }); - } - - /** - * Find out if the given address is an instance deployed by the factory. - */ - async getIsInstance(address: Address): Promise { - return this.contract.read("isInstance", { _instance: address }); - } - - /** - * Find out if the given address is a deployer coordinator registered with the - * factory. - */ - async getIsDeployerCoordinator(address: Address): Promise { - return this.contract.read("isDeployerCoordinator", { - _deployerCoordinator: address, - }); - } - - /** - * Get the address of all registered deployer coordinators. - */ - async getDeployerCoordinatorAddresses({ - instances, - options, - }: { - /** - * Only return deployer coordinators that deployed the given instances. - */ - instances?: Address[]; - options?: ContractReadOptions; - } = {}): Promise { - if (instances) { - const readOnlyAddresses = await this.contract.read( - "getDeployerCoordinatorByInstances", - { - __instances: instances, - }, - ); - return readOnlyAddresses.slice(); - } - - const count = await this.contract.read( - "getNumberOfDeployerCoordinators", - {}, - options, - ); - - if (count === 0n) { - return []; - } - - const readOnlyAddresses = await this.contract.read( - "getDeployerCoordinatorsInRange", - { - _startIndex: 0n, - _endIndex: count, - }, - options, - ); - return readOnlyAddresses.slice(); - } - - /** - * Get a {@linkcode ReadHyperdrive} instance for each Hyperdrive instance - * deployed by the deployer factory. - */ - async getInstances(options?: ContractReadOptions): Promise { - const hyperdriveAddresses = await this.getInstanceAddresses(options); - return hyperdriveAddresses.map( - (address) => - new ReadHyperdrive({ - address, - contractFactory: this.contractFactory, - network: this.network, - }), - ); - } - - /** - * Get the address of all Hyperdrive instances deployed by the factory. - */ - async getInstanceAddresses( - options?: ContractReadOptions, - ): Promise { - const count = await this.contract.read("getNumberOfInstances", {}, options); - - if (count === 0n) { - return []; - } - - const readOnlyAddresses = await this.contract.read( - "getInstancesInRange", - { - _startIndex: 0n, - _endIndex: count, - }, - options, - ); - return readOnlyAddresses.slice(); - } -} diff --git a/packages/hyperdrive-js-core/src/factory/ReadWriteFactory.ts b/packages/hyperdrive-js-core/src/factory/ReadWriteFactory.ts deleted file mode 100644 index be6f7193c..000000000 --- a/packages/hyperdrive-js-core/src/factory/ReadWriteFactory.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - CachedReadWriteContract, - ContractReadOptions, -} from "@delvtech/evm-client"; -import { Override } from "src/base/types"; -import { ReadWriteContractFactory } from "src/evm-client/contractFactory"; -import { ReadFactory, ReadFactoryOptions } from "src/factory/ReadFactory"; -import { FactoryAbi } from "src/factory/abi"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { ReadWriteContractModelOptions } from "src/model/ReadWriteModel"; - -export interface ReadWriteFactoryOptions - extends Override {} - -export class ReadWriteFactory extends ReadFactory { - declare contract: CachedReadWriteContract; - declare contractFactory: ReadWriteContractFactory; - - constructor(options: ReadWriteFactoryOptions) { - super(options); - } - - /** - * Get a {@linkcode ReadWriteHyperdrive} instance for each Hyperdrive instance - * deployed by the deployer factory. - */ - async getInstances( - options?: ContractReadOptions - ): Promise { - const hyperdriveAddresses = await this.getInstanceAddresses(options); - return hyperdriveAddresses.map( - (address) => - new ReadWriteHyperdrive({ - address, - contractFactory: this.contractFactory, - network: this.network, - }) - ); - } -} diff --git a/packages/hyperdrive-js-core/src/factory/abi.ts b/packages/hyperdrive-js-core/src/factory/abi.ts deleted file mode 100644 index 1a0f44818..000000000 --- a/packages/hyperdrive-js-core/src/factory/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IHyperdriveFactory } from "@delvtech/hyperdrive-artifacts/IHyperdriveFactory"; - -export const factoryAbi = IHyperdriveFactory.abi; -export type FactoryAbi = typeof factoryAbi; diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/ReadHyperdrive.test.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/ReadHyperdrive.test.ts deleted file mode 100644 index 8b663ed69..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/ReadHyperdrive.test.ts +++ /dev/null @@ -1,1830 +0,0 @@ -import { fixed, parseFixed } from "@delvtech/fixed-point-wasm"; -import { ALICE, BOB } from "src/base/testing/accounts"; -import { CheckpointEvent } from "src/checkpoint/types"; -import { setupReadHyperdrive } from "src/hyperdrive/base/testing/setupReadHyperdrive"; -import { decodeAssetFromTransferSingleEventData } from "src/pool/decodeAssetFromTransferSingleEventData"; -import { - simplePoolConfig30Days, - simplePoolConfig7Days, -} from "src/pool/testing/PoolConfig"; -import { simplePoolInfo } from "src/pool/testing/PoolInfo"; -import { assert, expect, test } from "vitest"; - -test("getVersion should return the parsed version of the contract", async () => { - const { contract, readHyperdrive } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "version", - value: "v1.0.14", - }); - - const value = await readHyperdrive.getVersion(); - expect(value).toEqual({ - major: 1, - minor: 0, - patch: 14, - string: "v1.0.14", - }); -}); - -// The sdk should return the exact PoolConfig from the contracts. It should not -// do any conversions or transformations, eg: converting seconds to ms, -// formatting bigints, etc.. -test("getPoolConfig should return the PoolConfig from the contract as-is", async () => { - const { contract, readHyperdrive } = setupReadHyperdrive(); - - // stub out the contract call the sdk is going to make - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig7Days, - }); - - // The sdk should return the correct data - const value = await readHyperdrive.getPoolConfig(); - expect(value).toBe(simplePoolConfig7Days); -}); - -// The sdk should return the exact PoolInfo from the contracts. It should not do -// any conversions or transformations, eg: converting seconds into ms, -// formatting bigints, etc.. -test("getPoolInfo should return the PoolInfo from the contract as-is", async () => { - const { contract, readHyperdrive } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolInfo", - value: simplePoolInfo, - }); - - const value = await readHyperdrive.getPoolInfo(); - expect(value).toBe(simplePoolInfo); -}); - -// The sdk should return the exact APR from the contracts. It should not do any -// conversions or transformations, eg: formatting bigints, etc.. -test("getFixedRate should get the fixed rate as-is", async () => { - const { contract, readHyperdrive } = setupReadHyperdrive(); - - // These are necessary to stub, but the values won't be used since we stub - // calculateAPRFromReserves directly - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig7Days, - }); - contract.stubRead({ - functionName: "getPoolInfo", - value: simplePoolInfo, - }); - - const value = await readHyperdrive.getFixedApr(); - expect(value).toBe(50000000000000000n); -}); - -test("getTradingVolume should get the trading volume in terms of bonds", async () => { - const { contract, readHyperdrive } = setupReadHyperdrive(); - - contract.stubEvents("OpenLong", {}, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - amount: parseFixed("1").bigint, - bondAmount: parseFixed("1.3").bigint, - maturityTime: 1729209600n, - vaultSharePrice: 1n, - asBase: false, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 2n, - amount: parseFixed("1").bigint, - bondAmount: parseFixed("1.4").bigint, - maturityTime: 1733961600n, - asBase: false, - trader: ALICE, - vaultSharePrice: 0n, - }, - }, - ]); - - contract.stubEvents("CloseLong", {}, [ - { - eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: 123456789n, - trader: BOB, - destination: BOB, - // received back 1 base - asBase: true, - amount: parseFixed("1").bigint, - vaultSharePrice: 0n, - // closed out 0.9 bonds - bondAmount: parseFixed("0.9").bigint, - }, - }, - ]); - - contract.stubEvents("OpenShort", {}, [ - { - eventName: "OpenShort", - args: { - extraData: "0x", - assetId: 3n, - amount: parseFixed("1").bigint, - bondAmount: parseFixed("100").bigint, - maturityTime: 1729296000n, - vaultSharePrice: 1n, - asBase: false, - baseProceeds: parseFixed("100").bigint, - trader: BOB, - }, - }, - { - eventName: "OpenShort", - args: { - extraData: "0x", - assetId: 4n, - amount: parseFixed("2").bigint, - bondAmount: parseFixed("190").bigint, - maturityTime: 1729296000n, - vaultSharePrice: 1n, - asBase: false, - baseProceeds: parseFixed("190").bigint, - trader: BOB, - }, - }, - ]); - - contract.stubEvents("CloseShort", {}, []); - - const value = await readHyperdrive.getTradingVolume(); - - expect(value).toEqual({ - shortVolume: parseFixed("290").bigint, // sum of bondAmount in short events - longVolume: parseFixed("3.6").bigint, // sum of bondAmount in long events - totalVolume: parseFixed("293.6").bigint, - }); -}); - -test("getShortAccruedYield should return the amount of yield a non-mature position has earned", async () => { - const { contract, network, readHyperdrive } = setupReadHyperdrive(); - - network.stubGetBlock({ - value: { blockNumber: 1n, timestamp: 100n }, - }); - - contract.stubRead({ - functionName: "getPoolConfig", - value: { - ...simplePoolConfig7Days, - positionDuration: 86400n, // one day in seconds - checkpointDuration: 86400n, // one day in seconds - }, - }); - - // The pool info gives us the current price - contract.stubRead({ - functionName: "getPoolInfo", - value: { ...simplePoolInfo, vaultSharePrice: parseFixed("1.01").bigint }, - }); - - // The checkpoint gives us the price when the bond was opened - contract.stubRead({ - functionName: "getCheckpoint", - value: { - vaultSharePrice: parseFixed("1.008").bigint, - weightedSpotPrice: 0n, - lastWeightedSpotPriceUpdateTime: 0n, - }, - }); - - const accruedYield = await readHyperdrive.getShortAccruedYield({ - checkpointTime: 0n, - bondAmount: parseFixed("100").bigint, - }); - - // If you opened a short position on 100 bonds at a previous checkpoint price - // of 1.008 and the current price is 1.01, your accrued profit would - // be 0.20. - expect(accruedYield).toEqual(parseFixed("0.20").bigint); -}); - -test("getShortAccruedYield should return the amount of yield a mature position has earned", async () => { - const { network, contract, readHyperdrive } = setupReadHyperdrive(); - - network.stubGetBlock({ - value: { blockNumber: 1n, timestamp: 1699503565n }, - }); - contract.stubRead({ - functionName: "getPoolConfig", - value: { - ...simplePoolConfig7Days, - positionDuration: 86400n, // one day in seconds - checkpointDuration: 86400n, // one day in seconds - }, - }); - - // This checkpoint gives us the price when the short was opened - contract.stubRead({ - functionName: "getCheckpoint", - args: { _checkpointTime: 1n }, - value: { - vaultSharePrice: parseFixed("1.008").bigint, - weightedSpotPrice: 0n, - lastWeightedSpotPriceUpdateTime: 0n, - }, - }); - - // This checkpoint gives us the price when the shorts matured - contract.stubRead({ - functionName: "getCheckpoint", - args: { _checkpointTime: 86401n }, - value: { - vaultSharePrice: parseFixed("1.01").bigint, - weightedSpotPrice: 0n, - lastWeightedSpotPriceUpdateTime: 0n, - }, - }); - - const accruedYield = await readHyperdrive.getShortAccruedYield({ - checkpointTime: 1n, - bondAmount: parseFixed("100").bigint, - }); - - // If you opened a short position on 100 bonds at a previous checkpoint price - // of 1.008 and the price was 1.01 at maturity, your accrued profit would - // be 0.20. - expect(accruedYield).toEqual(parseFixed("0.20").bigint); -}); - -test("getCheckpointEvents should return an array of CheckpointEvents", async () => { - const { contract, readHyperdrive } = setupReadHyperdrive(); - const checkPointEvents = [ - { - eventName: "CreateCheckpoint", - args: { - vaultSharePrice: 423890n, - checkpointTime: 1699480800n, - lpSharePrice: 1000276463406900050n, - maturedLongs: 1010694n, - maturedShorts: 0n, - }, - }, - { - eventName: "CreateCheckpoint", - args: { - sharePrice: 1000378348050038939n, - checkpointTime: 1729299000n, - lpSharePrice: 80120n, - maturedLongs: 923162n, - maturedShorts: 230904n, - }, - }, - ] as CheckpointEvent[]; - contract.stubEvents("CreateCheckpoint", undefined, checkPointEvents); - - const events = await readHyperdrive.getCheckpointEvents(); - - expect(events).toEqual(checkPointEvents); -}); - -// opened with base -test("getOpenLongs should account for longs opened with base", async () => { - // Description: - // Bob opens up a long position over 2 txs in the same checkpoint, for a total - // cost 2 base, and receiving 2.7 bonds. As a result, he should now have - // an open position with the 2.7 bonds and a total cost of 2 base. - - const { contract, readHyperdrive } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: 1n, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, []); - - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountPaid: 2000000000000000000n, // Bob paid 2 base over 2 txs that opened a long - bondAmount: 2700000000000000000n, // Bob received a total of 2.7 bonds from these txs - maturity: 1708545600n, - }, - ]); -}); - -test("getOpenLongs should account for longs opened with shares", async () => { - // Description: - // Bob opens up a long position over 2 txs, for a total cost 2 shares, and - // receiving 2.7 bonds. As a result, he should now have an open position with - // the 2.7 bonds and a total cost of 2.35 base. (because 1 share = 1.15 base in - // the first tx, and 1 share = 1.2 base in the second tx) - - const { contract, readHyperdrive } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in shares - vaultSharePrice: parseFixed("1.15").bigint, - amount: parseFixed("1").bigint, - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: false, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in shares - vaultSharePrice: parseFixed("1.2").bigint, - amount: parseFixed("1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: false, - trader: BOB, - }, - }, - ]); - - // Bob has not closed the position at all, these are just stubbed out - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, []); - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountPaid: parseFixed("2.35").bigint, // Bob paid in shares, for the equivalent cost of 2.35 base - bondAmount: parseFixed("2.7").bigint, // Bob received a total of 2.7 bond - maturity: 1708545600n, - }, - ]); -}); -test("getOpenLongs should account for longs partially closed to base", async () => { - // Description: - // Bob opens up a long position over 2 txs in the same checkpoint, for a total - // cost 2 base, and receiving 2.7 bonds. He then partially closes this - // position, redeeming 0.9 bonds for 1 base. As a result, he should now have - // an open position with the remaining 1.8 bonds and a total cost of 1 base. - - const { contract, readHyperdrive } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 1 base - asBase: true, - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 0.9 bonds - bondAmount: parseFixed("0.9").bigint, - }, - }, - ]); - - // mints - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountPaid: 1000000000000000000n, // Bob has now paid 1 base total - bondAmount: 1800000000000000000n, // Bob currently hold 1.8 bonds - maturity: 1708545600n, - }, - ]); -}); - -test("getOpenLongs should account for longs fully closed to base", async () => { - // Description: - // Bob opens up a long position over 2 txs in the same checkpoint, for a total - // cost 2 base, and receiving 2.7 bonds. He then completely closes this - // position, redeeming 2.7 bonds for 2.5 base. As a result, he no longer has - // any open long positions. - - const { contract, readHyperdrive } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 1 base - asBase: true, - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 0.9 bonds - bondAmount: parseFixed("0.9").bigint, - }, - }, - ]); - - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 2.5 base - asBase: true, - amount: parseFixed("2.5").bigint, - vaultSharePrice: parseFixed("1.19").bigint, - - // closed out 2.7 bonds - bondAmount: parseFixed("2.7").bigint, - }, - }, - ]); - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([]); -}); - -test("getOpenLongs should handle when user fully closes then re-opens a position in the same checkpoint", async () => { - // Description: - // Bob opens a Long, then fully closes it at a loss. Then he re-opens a long - // in the same checkpoint, resulting in a single position with new accounting - // (ie: the previous loss is not factored in). - - const { contract, readHyperdrive } = setupReadHyperdrive(); - - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - args: { - extraData: "0x", - trader: BOB, - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - maturityTime: 1715299200n, - amount: parseFixed("2000").bigint, - vaultSharePrice: parseFixed("1.0002871459674").bigint, - asBase: true, - bondAmount: parseFixed("2020.518819362004558105").bigint, - }, - blockNumber: 1n, - data: "0x00000000000000000000000000000000000000000000000000000000663d638000000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000006c639ba602f70a9a7f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006d8854d90acff06119", - eventName: "OpenLong", - transactionHash: - "0x8b938ee12cc519b7a76debcad41aab61ef3de2cecc8a858adea7575671b1d9b4", - }, - { - args: { - extraData: "0x", - trader: BOB, - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - maturityTime: 1715299200n, - amount: parseFixed("9.0931").bigint, - vaultSharePrice: parseFixed("1.0003519789758").bigint, - asBase: true, - bondAmount: parseFixed("9.196435772384927298").bigint, - }, - blockNumber: 3n, - data: "0x00000000000000000000000000000000000000000000000000000000663d63800000000000000000000000000000000000000000000000007e312e45cf1ac0000000000000000000000000000000000000000000000000007e25d062e6d4586900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000007fa04d9c34b2de42", - eventName: "OpenLong", - transactionHash: - "0x5130c7a919f7303343e102020705cfe3db2ab5ca200410d119cef296c4693621", - } as const, - ]); - - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - maturityTime: 1715299200n, - amount: parseFixed("1998.524066158245200112").bigint, - vaultSharePrice: parseFixed("1.0002973144644").bigint, - asBase: true, - bondAmount: parseFixed("2020.518819362004558105").bigint, - }, - blockNumber: 2n, - data: "0x00000000000000000000000000000000000000000000000000000000663d638000000000000000000000000000000000000000000000006c5717c9895f7a40f000000000000000000000000000000000000000000000006c4ed96d6708a25d07000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006d8854d90acff06119", - eventName: "CloseLong", - transactionHash: - "0x8fff6dfc2498356b665542c5517e895dd6c0364e2fa9bf011d373781dad22655", - }, - ]); - - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([ - { - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - baseAmountPaid: parseFixed("9.0931").bigint, - bondAmount: parseFixed("9.196435772384927298").bigint, - maturity: 1715299200n, - }, - ]); -}); - -test("getOpenLongs should account for longs partially closed to shares", async () => { - // Description: - // Bob opens up a long position, for a total cost 2 base, and receiving 2.2 - // bonds. He then closes half of this position, redeeming 1.1 bonds for 0.8 - // shares. Shares are worth 1.1 base at the time he closes, As a result, he - // has 1.1 bonds left with a total cost paid of 1.12 base. - - const { contract, readHyperdrive } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - asBase: true, - amount: parseFixed("2").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("2.2").bigint, - maturityTime: timestamp, - trader: BOB, - }, - }, - ]); - - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 0.8 shares - asBase: false, - amount: parseFixed("0.88").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 1.1 bonds - bondAmount: parseFixed("1.1").bigint, - }, - }, - ]); - - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountPaid: parseFixed("1.032").bigint, - bondAmount: parseFixed("1.1").bigint, - maturity: 1708545600n, - }, - ]); -}); - -test("getOpenLongs should account for longs fully closed to shares", async () => { - // Description: - // Bob opens up a long position, for a total cost 2 base, and receiving 2.2 - // bonds. He then closes the entirety of this position to shares at a time - // when shares are worth 1.1 base. As a result, he gets back 2 shares, for a - // value of 2.2 base. - const { contract, readHyperdrive } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.stubEvents("OpenLong", { filter: { trader: BOB } }, [ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("2").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("2.2").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 2 shares, and no base - asBase: false, - amount: parseFixed("2.2").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 2.2 bonds - bondAmount: parseFixed("2.2").bigint, - }, - }, - ]); - - const value = await readHyperdrive.getOpenLongs({ account: BOB }); - - expect(value).toEqual([]); -}); - -test("getClosedLongs should account for closing out to base", async () => { - // Description: - // Bob closes a long position of 2 bonds and receives back 2.2 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 2.2 base, and no shares - asBase: true, - amount: parseFixed("2.2").bigint, - vaultSharePrice: parseFixed("2.0").bigint, - - // closed out 2.0 bonds - bondAmount: parseFixed("2.0").bigint, - }, - }, - ]); - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - const value = await readHyperdrive.getClosedLongs({ account: BOB }); - expect(value).toEqual([ - { - assetId: 1n, - baseAmount: parseFixed("2.2").bigint, - baseAmountPaid: 0n, - bondAmount: parseFixed("2.0").bigint, - closedTimestamp: 123456789n, - maturity: 1708545600n, - }, - ]); -}); - -test("getClosedLongs should account for closing out to shares", async () => { - // Description: - // Bob closes a long position of 2 bonds and receives back 1.9 shares. Shares - // are worth 1.1 base at the time he closes, therefore his closed position is - // valued at 2.09 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - const eventData = - "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - - contract.stubEvents("CloseLong", { filter: { trader: BOB } }, [ - { - eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 1.9 shares, and no base - asBase: false, - vaultSharePrice: parseFixed("1.1").bigint, - amount: parseFixed("1.9").bigint, - - // closed out 2 bonds - bondAmount: parseFixed("2.0").bigint, - }, - }, - ]); - - // getBlock gives us the timestamp of when he closed the position - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const value = await readHyperdrive.getClosedLongs({ account: BOB }); - expect(value).toEqual([ - { - assetId: 1n, - baseAmount: parseFixed("2.09").bigint, - baseAmountPaid: 0n, - bondAmount: parseFixed("2.0").bigint, - closedTimestamp: 123456789n, - maturity: 1708545600n, - }, - ]); -}); - -test("getOpenShorts should account for shorts opened with base", async () => { - // Description: - // Bob opens up a short position for 100 bonds over 2 txs in the same - // checkpoint, for a total cost of around 1.44 base. - - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("0.721996107012129147").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "OpenShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.72527013345635719").bigint, - vaultSharePrice: parseFixed("0.721952948135251528").bigint, - asBase: true, - baseProceeds: parseFixed("49.288611983218631127").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ]); - - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, []); - - network.stubGetBlock({ - value: { - timestamp: 1713801432n, - blockNumber: 1n, - }, - }); - - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - checkpointTime: 1713798000n, - baseAmountPaid: parseFixed("1.450580466488873595").bigint, - bondAmount: parseFixed("100").bigint, - baseProceeds: parseFixed("98.576966043666144584").bigint, - fixedRatePaid: parseFixed("0.175635145784387390").bigint, - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - maturity: 1716336000n, - openedTimestamp: 1713801432n, - }, - ]); -}); - -test("getOpenShorts should account for shorts opened with shares", async () => { - // Description: - // Bob opens up a short position for 100 bonds over 2 txs in the same - // checkpoint, for a total cost of around 1.44 shares. - - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.721996107012129147").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: false, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "OpenShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.721952948135251528").bigint, - vaultSharePrice: parseFixed("1.004594738936").bigint, - asBase: false, - baseProceeds: parseFixed("49.288611983218631127").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ]); - - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, []); - - network.stubGetBlock({ - value: { - timestamp: 1713801432n, - blockNumber: 1n, - }, - }); - - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - checkpointTime: 1713798000n, - baseAmountPaid: parseFixed("1.450580466488178492").bigint, - bondAmount: parseFixed("100").bigint, - baseProceeds: parseFixed("98.576966043666144584").bigint, - fixedRatePaid: parseFixed("0.175635145784387390").bigint, - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - maturity: 1716336000n, - openedTimestamp: 1713801432n, - }, - ]); -}); - -test("getOpenShorts should account for shorts partially closed to base", async () => { - // Description: - // Bob shorts 50 bonds for a total cost of 0.73 base. He then partially - // closes this position, redeeming 25 bonds for 0.36 base. As a result, he has 25 - // bonds left with a total cost of 0.37 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - - const events = [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("0.721996107012129147").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.357390566309610627").bigint, - vaultSharePrice: parseFixed("0.355730805024955393").bigint, - asBase: true, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("25").bigint, - }, - }, - ] as const; - - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [events[0]]); - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [events[1]]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - bondAmount: parseFixed("25").bigint, - baseAmountPaid: parseFixed("0.367919766722905778").bigint, - baseProceeds: parseFixed("24.637035274042034163").bigint, - checkpointTime: 123454800n, - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - fixedRatePaid: parseFixed("0.179245221000329770").bigint, - maturity: 1716336000n, - openedTimestamp: 123456789n, - }, - ]); -}); - -test("getOpenShorts should account for shorts fully closed to base", async () => { - // Description: - // Bob opens up a short position, then completely closes this position, As a - // result, he no longer has any open short positions. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - - const events = [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("0.721996107012129147").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.357390566309610627").bigint, - vaultSharePrice: parseFixed("0.355730805024955393").bigint, - asBase: true, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ] as const; - - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [events[0]]); - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [events[1]]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([]); -}); - -test("getOpenShorts should account for shorts partially closed to shares", async () => { - // Description: - // Bob shorts 50 bonds for a total cost of 0.73 base. He then partially - // closes this position, redeeming 25 bonds for 0.36 shares. As a result, he - // has 25 bonds left with a total cost of 0.37 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - - const events = [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.355730805024955393").bigint, - vaultSharePrice: parseFixed("1.004665778901").bigint, - asBase: false, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("25").bigint, - }, - }, - ] as const; - - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [events[0]]); - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [events[1]]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - bondAmount: parseFixed("25").bigint, - baseAmountPaid: parseFixed("0.367919766723039831").bigint, - baseProceeds: parseFixed("24.637035274042034163").bigint, - checkpointTime: 123454800n, - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - fixedRatePaid: parseFixed("0.179245221000329770").bigint, - maturity: 1716336000n, - openedTimestamp: 123456789n, - }, - ]); -}); - -test("getOpenShorts should account for shorts fully closed to shares", async () => { - // Description: - // Bob opens up a short position, then completely closes this position, As a - // result, he no longer has any open short positions. - - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - const events = [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - vaultSharePrice: parseFixed("1.004665778901").bigint, - amount: parseFixed("0.355730805024955393").bigint, - asBase: false, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ] as const; - - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [events[0]]); - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [events[1]]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([]); -}); - -test("getOpenShorts should handle when user fully closes then re-opens a position in the same checkpoint", async () => { - // Description: - // Bob opens a Short, then fully closes it at a loss. Then he re-opens a short - // in the same checkpoint, resulting in a single position with new accounting - // (ie: the previous loss is not factored in). - - const { contract, network, readHyperdrive } = setupReadHyperdrive(); - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - // pool info to get the price of shares at the time he closes the short - contract.stubRead({ - functionName: "getPoolInfo", - value: { ...simplePoolInfo, vaultSharePrice: parseFixed("1.1").bigint }, - options: { blockNumber: 5n }, - }); - - // Stub the timestamp so getOpenShorts can construct the checkpoint id - network.stubGetBlock({ - value: { - timestamp: 123456789n, - // this blockNumber is unused, but setting this to 3n, as there should be - // 3 blocks in this test flow - blockNumber: 3n, - }, - }); - - const events = [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.355730805024955393").bigint, - vaultSharePrice: parseFixed("1.004665778901").bigint, - asBase: false, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "OpenShort", - blockNumber: 3n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ] as const; - - contract.stubEvents("OpenShort", { filter: { trader: BOB } }, [ - events[0], - events[2], - ]); - - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [events[1]]); - - const value = await readHyperdrive.getOpenShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountPaid: parseFixed("0.725310333032516405").bigint, - bondAmount: parseFixed("50").bigint, - baseProceeds: parseFixed("49.288354060447513457").bigint, - fixedRatePaid: parseFixed("0.175667439018216348").bigint, - maturity: 1716336000n, - checkpointTime: 123454800n, - openedTimestamp: 123456789n, - hyperdriveAddress: readHyperdrive.contract.address, - }, - ]); -}); - -test("getShortBondsGivenDeposit & previewOpenShort should align within a given tolerance", async () => { - const { contract, network, readHyperdrive } = setupReadHyperdrive(); - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig30Days, - }); - contract.stubRead({ - functionName: "getPoolInfo", - value: simplePoolInfo, - }); - contract.stubRead({ - functionName: "getCheckpointExposure", - value: 0n, - }); - contract.stubRead({ - functionName: "getCheckpoint", - value: { - vaultSharePrice: parseFixed(1.05).bigint, - weightedSpotPrice: 0n, - lastWeightedSpotPriceUpdateTime: 0n, - }, - }); - network.stubGetBlock({ - value: { - timestamp: 123456789n, - blockNumber: 1n, - }, - }); - - const targetDeposit = parseFixed(1.123); - const tolerance = fixed(1e9); - const amountOfBondsToShort = await readHyperdrive.getShortBondsGivenDeposit({ - amountIn: targetDeposit.bigint, - asBase: true, - tolerance: tolerance.bigint, - }); - const { traderDeposit } = await readHyperdrive.previewOpenShort({ - amountOfBondsToShort, - asBase: true, - }); - - assert(targetDeposit.absDiff(traderDeposit).lte(tolerance)); -}); - -test("getClosedShorts should account for shorts closed to base", async () => { - // Description: - // Bob completely closes his position, redeeming 100 shorted bonds for 2 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - const eventData = - "0x0200000000000000000000000000000000000000000000000000000065d76f800000000000000000000000000000000000000000000000056bc75e2d63100000"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig7Days, - }); - - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [ - { - eventName: "CloseShort", - args: { - extraData: "0x", - assetId: 1n, - asBase: true, - amount: parseFixed("2").bigint, // closed out to base - vaultSharePrice: parseFixed("1.8").bigint, // did not close out to shares - bondAmount: parseFixed("100").bigint, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - basePayment: parseFixed("2").bigint, // did not close out to base - }, - }, - ]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const value = await readHyperdrive.getClosedShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountReceived: parseFixed("2").bigint, - bondAmount: parseFixed("100").bigint, - checkpointTime: 123454800n, - closedTimestamp: 123456789n, - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - maturity: 1708617600n, - }, - ]); -}); - -test("getClosedShorts should account for shorts closed to shares", async () => { - // Description: - // Bob completely closes his position, redeeming 100 shorted bonds for 1.1 shares. - // Shares are worth 1.1 base at the time he closes, therefore his closed position - // is valued at 1.21 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - const eventData = - "0x0200000000000000000000000000000000000000000000000000000065d76f800000000000000000000000000000000000000000000000056bc75e2d63100000"; - const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - - contract.stubRead({ - functionName: "getPoolConfig", - value: simplePoolConfig7Days, - }); - - contract.stubEvents("CloseShort", { filter: { trader: BOB } }, [ - { - eventName: "CloseShort", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - asBase: false, - vaultSharePrice: parseFixed("1.1").bigint, - amount: parseFixed("1.1").bigint, // closed out to shares - bondAmount: parseFixed("100").bigint, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - basePayment: parseFixed("1.21").bigint, - }, - }, - ]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const value = await readHyperdrive.getClosedShorts({ account: BOB }); - - expect(value).toEqual([ - { - assetId: 1n, - baseAmountReceived: parseFixed("1.21").bigint, - bondAmount: parseFixed("100").bigint, - checkpointTime: 123454800n, - closedTimestamp: 123456789n, - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - maturity: 1708617600n, - }, - ]); -}); - -test("getOpenLpPosition should return zero when a position is fully closed", async () => { - // Description: - // Bob opens up an lp position, receiving 498 LP shares, depositing 500 base. - // Bob then closes all of his 498 LP shares, receiving 499 base (he lost - // 1 base on this position) Bob is left with 0 LP shares and 0 base paid in his - // current LP position. - - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - contract.stubRead({ - functionName: "getPoolInfo", - value: simplePoolInfo, - }); - contract.stubSimulateWrite("removeLiquidity", { - proceeds: parseFixed("100").bigint, - withdrawalShares: 0n, - }); - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 175n } }); - contract.stubEvents("AddLiquidity", { filter: { provider: BOB } }, [ - { - eventName: "AddLiquidity", - blockNumber: 174n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("500").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.000000590811771717").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("498.570512905658351934").bigint, - }, - }, - ]); - - contract.stubEvents("RemoveLiquidity", { filter: { provider: BOB } }, [ - { - eventName: "RemoveLiquidity", - blockNumber: 175n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("499").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.002867781011873985").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("498.567723245858722697").bigint, - withdrawalShareAmount: 0n, - destination: BOB, - }, - }, - ]); - - const value = await readHyperdrive.getOpenLpPosition({ - account: BOB, - asBase: false, - }); - expect(value).toEqual({ - lpShareBalance: parseFixed("0").bigint, - baseAmountPaid: parseFixed("0").bigint, - baseValue: parseFixed("0").bigint, - sharesValue: parseFixed("0").bigint, - }); -}); - -test("getOpenLpPosition should return the current lpShareBalance and baseAmountPaid", async () => { - // Description: - // Bob opens up an lp position, receiving 498 LP shares, depositing 500 base. - // Bob then closes his entire position of 498 LP shares, receiving 499 base - // (he lost 1 base on this position). Then he opens up a new LP position, - // receiving 99 LP shares, depositing 100 base. Bob now has with 99 LP - // shares and 100 base paid in his current LP position. - - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 175n } }); - contract.stubSimulateWrite("removeLiquidity", { - proceeds: parseFixed("100").bigint, - withdrawalShares: 0n, - }); - contract.stubRead({ - functionName: "getPoolInfo", - value: simplePoolInfo, - }); - contract.stubEvents("AddLiquidity", { filter: { provider: BOB } }, [ - { - eventName: "AddLiquidity", - blockNumber: 174n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("500").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.000000590811771717").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("1.002867171358").bigint, - }, - }, - { - eventName: "AddLiquidity", - blockNumber: 176n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("100").bigint, - lpAmount: parseFixed("99").bigint, - lpSharePrice: parseFixed("1.000000576182752684").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("1.002867314461").bigint, - }, - }, - ]); - - contract.stubEvents("RemoveLiquidity", { filter: { provider: BOB } }, [ - { - eventName: "RemoveLiquidity", - blockNumber: 175n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("499").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.002867781011873985").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("1.0008670371827").bigint, - withdrawalShareAmount: 0n, - destination: BOB, - }, - }, - ]); - - const value = await readHyperdrive.getOpenLpPosition({ - account: BOB, - asBase: false, - }); - expect(value).toEqual({ - lpShareBalance: parseFixed("99").bigint, - baseAmountPaid: parseFixed("100").bigint, - baseValue: parseFixed("100").bigint, - sharesValue: parseFixed("100").bigint, - }); -}); - -test("getClosedLpShares should account for LP shares closed to base", async () => { - // Description: - // Bob completely closes his LP position of 5 LP shares and receives back - // base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubEvents("RemoveLiquidity", { filter: { provider: BOB } }, [ - { - eventName: "RemoveLiquidity", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("10").bigint, - vaultSharePrice: parseFixed("9").bigint, - provider: BOB, - withdrawalShareAmount: 0n, - lpAmount: parseFixed("5").bigint, - lpSharePrice: parseFixed("2").bigint, - destination: BOB, - }, - }, - ]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const closedLpShares = await readHyperdrive.getClosedLpShares({ - account: BOB, - }); - expect(closedLpShares).toEqual([ - { - lpAmount: parseFixed("5").bigint, - baseAmount: parseFixed("10").bigint, - lpSharePrice: parseFixed("2").bigint, - withdrawalShareAmount: 0n, - closedTimestamp: 123456789n, - }, - ]); -}); - -test("getClosedLpShares should account for LP shares closed to vault shares", async () => { - // Description: - // Bob completely closes his LP position of 5 LP shares and receives back - // shares. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubEvents("RemoveLiquidity", { filter: { provider: BOB } }, [ - { - eventName: "RemoveLiquidity", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: false, - amount: parseFixed("9").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - provider: BOB, - withdrawalShareAmount: 0n, - lpAmount: parseFixed("5").bigint, - lpSharePrice: parseFixed("2").bigint, - destination: BOB, - }, - }, - ]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const closedLpShares = await readHyperdrive.getClosedLpShares({ - account: BOB, - }); - expect(closedLpShares).toEqual([ - { - lpAmount: parseFixed("5").bigint, - baseAmount: parseFixed("9.9").bigint, - withdrawalShareAmount: 0n, - lpSharePrice: parseFixed("2").bigint, - closedTimestamp: 123456789n, - }, - ]); -}); - -test("getRedeemedWithdrawalShares should account for withdrawal shares closed to base", async () => { - // Description: - // Bob completely redeems 5 withdrawal shares and receives 10 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubEvents("RedeemWithdrawalShares", { filter: { provider: BOB } }, [ - { - eventName: "RedeemWithdrawalShares", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("10").bigint, - vaultSharePrice: parseFixed("9.8").bigint, - provider: BOB, - withdrawalShareAmount: parseFixed("5").bigint, - destination: BOB, - }, - }, - ]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const redeemedWithdrawalShares = - await readHyperdrive.getRedeemedWithdrawalShares({ - account: BOB, - }); - expect(redeemedWithdrawalShares).toEqual([ - { - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - baseAmount: parseFixed("10").bigint, - withdrawalShareAmount: parseFixed("5").bigint, - redeemedTimestamp: 123456789n, - }, - ]); -}); -test("getRedeemedWithdrawalShares should account for withdrawal shares closed to vault shares", async () => { - // Description: - // Bob completely redeems 5 withdrawal shares and receives 8 shares that are worth 10 base. - const { contract, readHyperdrive, network } = setupReadHyperdrive(); - - contract.stubEvents("RedeemWithdrawalShares", { filter: { provider: BOB } }, [ - { - eventName: "RedeemWithdrawalShares", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: false, - vaultSharePrice: parseFixed("1.25").bigint, - amount: parseFixed("8").bigint, - provider: BOB, - withdrawalShareAmount: parseFixed("5").bigint, - destination: BOB, - }, - }, - ]); - - network.stubGetBlock({ value: { timestamp: 123456789n, blockNumber: 5n } }); - - const redeemedWithdrawalShares = - await readHyperdrive.getRedeemedWithdrawalShares({ - account: BOB, - }); - expect(redeemedWithdrawalShares).toEqual([ - { - hyperdriveAddress: "0x0000000000000000000000000000000000000000", - baseAmount: parseFixed("10").bigint, - withdrawalShareAmount: parseFixed("5").bigint, - redeemedTimestamp: 123456789n, - }, - ]); -}); diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/ReadHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/ReadHyperdrive.ts deleted file mode 100644 index fe4597e04..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/ReadHyperdrive.ts +++ /dev/null @@ -1,2082 +0,0 @@ -import { - Block, - BlockTag, - CachedReadContract, - ContractGetEventsOptions, - ContractReadOptions, - ContractWriteOptions, - Event, -} from "@delvtech/evm-client"; -import { fixed } from "@delvtech/fixed-point-wasm"; -import { Address } from "abitype"; -import { assertNever } from "src/base/assertNever"; -import { MAX_UINT256, SECONDS_PER_YEAR } from "src/base/constants"; -import { MergeKeys } from "src/base/types"; -import { getCheckpointTime } from "src/checkpoint/getCheckpointTime"; -import { - Checkpoint, - CheckpointEvent, - GetCheckpointParams, - GetCheckpointTimeParams, -} from "src/checkpoint/types"; -import { HyperdriveSdkError } from "src/errors/HyperdriveSdkError"; -import { getBlockFromReadOptions } from "src/evm-client/utils/getBlockFromReadOptions"; -import { getBlockOrThrow } from "src/evm-client/utils/getBlockOrThrow"; -import { HyperdriveAbi, hyperdriveAbi } from "src/hyperdrive/base/abi"; -import { MAX_ITERATIONS, NULL_BYTES } from "src/hyperdrive/constants"; -import { calculateAprFromPrice } from "src/hyperdrive/utils/calculateAprFromPrice"; -import { hyperwasm } from "src/hyperwasm"; -import { - ClosedLong, - Long, - OpenLongPositionReceivedWithoutDetails, -} from "src/longs/types"; -import { ClosedLpShares } from "src/lp/ClosedLpShares"; -import { LP_ASSET_ID } from "src/lp/assetId"; -import { ReadContractModelOptions, ReadModel } from "src/model/ReadModel"; -import { decodeAssetFromTransferSingleEventData } from "src/pool/decodeAssetFromTransferSingleEventData"; -import { MarketState, PoolConfig, PoolInfo } from "src/pool/types"; -import { calculateShortAccruedYield } from "src/shorts/calculateShortAccruedYield"; -import { ClosedShort, OpenShort } from "src/shorts/types"; -import { ReadErc20 } from "src/token/erc20/ReadErc20"; -import { ReadEth } from "src/token/eth/ReadEth"; -import { RedeemedWithdrawalShares } from "src/withdrawalShares/RedeemedWithdrawalShares"; -import { WITHDRAW_SHARES_ASSET_ID } from "src/withdrawalShares/assetId"; - -export interface ReadHyperdriveOptions extends ReadContractModelOptions {} - -export class ReadHyperdrive extends ReadModel { - readonly address: Address; - readonly contract: CachedReadContract; - - /** - * @hidden - */ - constructor({ - debugName = "Hyperdrive", - address, - cache, - namespace, - ...modelOptions - }: ReadHyperdriveOptions) { - super({ debugName, ...modelOptions }); - this.address = address; - this.contract = this.contractFactory({ - abi: hyperdriveAbi, - address, - cache, - namespace, - }); - } - - async getKind(): Promise { - return this.contract.read("kind"); - } - - async getVersion(): Promise<{ - major: number; - minor: number; - patch: number; - string: string; - }> { - const string = await this.contract.read("version"); - const [major, minor, patch] = string - .replace(/^\D*/, "") - .split(".") - .map((num) => parseInt(num)); - - return { - major, - minor, - patch, - string, - }; - } - - /** - * Returns the base token of the pool. - * - * @privateRemarks - * The default implementation supports ERC20 and ETH base tokens. If - * the address returned by the contract is not the ETH address, it is assumed - * to be an ERC20 token. - */ - async getBaseToken(): Promise { - const address = await this.contract.read("baseToken"); - return address === ReadEth.address - ? new ReadEth({ - contractFactory: this.contractFactory, - network: this.network, - }) - : new ReadErc20({ - address, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - /** - * Returns the share token of the pool. - * - * @privateRemarks - * The share token is assumed to be an ERC20 token. This can be overwritten - * in instances of Hyperdrive to return custom tokens. - */ - async getSharesToken(): Promise { - const address = await this.contract.read("vaultSharesToken"); - return new ReadErc20({ - address, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - getDecimals(): Promise { - return this.contract.read("decimals"); - } - - /** - * Convert an amount of shares to base tokens using the current vault share price. - */ - async convertToBase({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.contract.read( - "convertToBase", - { - _shareAmount: sharesAmount, - }, - options, - ); - } - - /** - * Convert an amount of base tokens to shares using the current vault share price. - */ - async convertToShares({ - baseAmount, - options, - }: { - baseAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.contract.read( - "convertToShares", - { - _baseAmount: baseAmount, - }, - options, - ); - } - - async getInitializationBlock(options?: { - fromBlock?: BlockTag | bigint; - toBlock?: BlockTag | bigint; - }): Promise { - const events = await this.contract.getEvents("Initialize", options); - - if (!events.length || events[0].blockNumber === undefined) { - throw new HyperdriveSdkError( - "Pool has not been initialized, no block found.", - ); - } - const blockNumber = events[0].blockNumber; - - return getBlockOrThrow(this.network, { blockNumber }); - } - - /** - * Get a standardized variable rate using vault share prices from blocks in - * the last `timeRange` seconds. - * - * Note: This function will throw an error if the pool was deployed within the - * last `timeRange` seconds. - * - * See Agent0 for calculation: - * https://github.com/delvtech/agent0/blob/854e9392e09898e65aeed0040c5e648c8d3d1380/src/agent0/ethpy/hyperdrive/interface/read_interface.py#L421 - * - * @param blockRange The block range (in blocks) to use to calculate the variable rate. - */ - async getYieldSourceRate({ - blockRange, - options, - }: { - blockRange: bigint; - options?: ContractReadOptions; - }): Promise { - const currentBlock = await getBlockOrThrow(this.network, options); - // Clamp the start block to the pool's initialization block if the - // blockRange is too big. - let startBlockNumber = currentBlock.blockNumber! - blockRange; - const { blockNumber: initializationBlock } = - await this.getInitializationBlock(); - if (initializationBlock && initializationBlock > startBlockNumber) { - startBlockNumber = initializationBlock; - } - - // NOTE: Cloudchain will throw an error if the block number is too far back - // in history. - const startBlock = await getBlockOrThrow(this.network, { - blockNumber: startBlockNumber, - }); - - // Get the info from fromBlock to get the starting vault share price - const { vaultSharePrice: startVaultSharePrice } = await this.getPoolInfo({ - blockNumber: startBlockNumber, - }); - - // Get the current vaultSharePrice from the latest pool info - const { vaultSharePrice: currentVaultSharePrice } = - await this.getPoolInfo(options); - - const timeFrame = currentBlock.timestamp - startBlock.timestamp; // bigint - - const vaultApy = calculateApyFromPrice({ - startPrice: startVaultSharePrice, - endPrice: currentVaultSharePrice, - timeFrame, - }); - - return vaultApy; - } - - /** - * Get the checkpoint time for a given timestamp or block number, defaulting - * to the latest block. - * @returns The time of the checkpoint. - */ - getCheckpointTime(params: GetCheckpointTimeParams = {}): Promise { - return this._getCheckpointTime(params); - } - - /** - * A protected version of `ReadHyperdrive.getCheckpointTime` with - * more relaxed types to streamline internal usage. The public API ensures - * only one of `timestamp` or `blockNumber` is provided to avoid ambiguity, - * but this function allows both to be provided, in which case `timestamp` - * will take precedence. - */ - protected async _getCheckpointTime({ - timestamp, - blockNumber, - options, - }: MergeKeys = {}): Promise { - const { checkpointDuration } = await this.getPoolConfig(options); - - // If no timestamp is provided, try to get one from the block number - if (timestamp === undefined) { - // Default to the block from read options - const getBlockOptions = blockNumber ? { blockNumber } : options; - const block = await getBlockOrThrow(this.network, getBlockOptions); - timestamp = block.timestamp; - } - - return getCheckpointTime(timestamp, checkpointDuration); - } - - async getCheckpoint({ - checkpointTime, - timestamp, - blockNumber, - options, - }: GetCheckpointParams = {}): Promise { - if (checkpointTime === undefined) { - checkpointTime = await this._getCheckpointTime({ - timestamp, - blockNumber, - options, - }); - } - - const { - lastWeightedSpotPriceUpdateTime, - vaultSharePrice, - weightedSpotPrice, - } = await this.contract.read( - "getCheckpoint", - { _checkpointTime: checkpointTime }, - options, - ); - - return { - checkpointTime, - lastWeightedSpotPriceUpdateTime, - vaultSharePrice, - weightedSpotPrice, - }; - } - - async getCheckpointExposure({ - checkpointTime, - blockNumber, - timestamp, - options, - }: GetCheckpointParams = {}): Promise { - if (checkpointTime === undefined) { - checkpointTime = await this._getCheckpointTime({ - blockNumber, - timestamp, - options, - }); - } - - return this.contract.read( - "getCheckpointExposure", - { _checkpointTime: checkpointTime }, - options, - ); - } - - /** - * - * This function retrieves the market state. This is helpful for retrieving - * general market state statistics, such as whether the market has been - * paused. - */ - getMarketState(options?: ContractReadOptions): Promise { - return this.contract.read("getMarketState", undefined, options); - } - - /** - * Gets the pool's configuration parameters - */ - getPoolConfig(options?: ContractReadOptions): Promise { - return this.contract.read("getPoolConfig", undefined, options); - } - - /** - * Gets info about the pool's reserves and other state that is important to - * evaluate potential trades. - */ - getPoolInfo(options?: ContractReadOptions): Promise { - return this.contract.read("getPoolInfo", undefined, options); - } - - /** - * Gets the pool's fixed APR, i.e. the fixed rate a user locks in when they - * open a long. - */ - async getFixedApr(options?: ContractReadOptions): Promise { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - return hyperwasm.spotRate({ poolConfig, poolInfo }); - } - - /** - * Gets the implied variable rate of opening a short. - */ - async getImpliedRate({ - bondAmount, - timestamp, - variableApy, - options, - }: { - bondAmount: bigint; - timestamp: bigint; - // TODO: Get this from sdk instead - variableApy: bigint; - options?: ContractReadOptions; - }): Promise { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - - // The vault share price at the time the current checkpoint was minted is - // the most accurate, however if there is no current checkpoint we should - // just use the current vault share price. - let { vaultSharePrice: openVaultSharePrice } = await this.getCheckpoint({ - timestamp, - }); - if (!openVaultSharePrice) { - openVaultSharePrice = (await this.getPoolInfo()).vaultSharePrice; - } - - return hyperwasm.calcImpliedRate({ - poolInfo, - poolConfig, - bondAmount, - openVaultSharePrice, - variableApy, - }); - } - - /** - * Gets the market liquidity available for trading and removing LP. - */ - async getIdleLiquidity(options?: ContractReadOptions): Promise { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - - return hyperwasm.idleShareReservesInBase({ poolInfo, poolConfig }); - } - - /** - * Gets the total present value of the pool in base. - * @param options - * @returns - */ - async getPresentValue(options?: ContractReadOptions): Promise { - // presentValueInShares 33997119981629446n - // Start block: {blockNumber: 20486359n, timestamp: 1723150091n} - // Start vault share price: 1015896019620210959n - // Current vault share price: 1017273050693203130n - // Time frame: 1203624n - // Vault APY: 36128140020150719n - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - - const presentValueInShares = hyperwasm.presentValue({ - poolInfo, - poolConfig, - currentTime: BigInt(Date.now()) / 1000n, - }); - - return this.convertToBase({ - sharesAmount: presentValueInShares, - options, - }); - } - - /** - * Gets the yield accrued on an amount of bonds shorted in a given checkpoint. - * Note that shorts stop accruing yield once they reach maturity. - * @param checkpointTime - The checkpoint the short was opened in - * @param bondAmount - The number of bonds shorted - * @param decimals - * @param options - */ - async getShortAccruedYield({ - checkpointTime, - bondAmount, - options, - }: { - checkpointTime: bigint; - bondAmount: bigint; - options?: ContractReadOptions; - }): Promise { - // Get the vault share price when the short was opened - let { vaultSharePrice: openVaultSharePrice } = await this.getCheckpoint({ - checkpointTime, - options, - }); - - const { positionDuration } = await this.getPoolConfig(options); - const maturityTime = checkpointTime + positionDuration; - const latestCheckpointTime = await this.getCheckpointTime({ options }); - const isMatured = latestCheckpointTime >= maturityTime; - - // If the short is mature, get the vault share price at maturity - let endingVaultSharePrice; - if (isMatured) { - const checkpointAtMaturity = await this.getCheckpoint({ - checkpointTime: maturityTime, - options, - }); - endingVaultSharePrice = checkpointAtMaturity.vaultSharePrice; - } else { - // Otherwise get the current vault share price - const poolInfo = await this.getPoolInfo(options); - endingVaultSharePrice = poolInfo.vaultSharePrice; - // Also check if the latest checkpoint was minted - const checkpointIsMinted = openVaultSharePrice != 0n; - // If not, this tx will mint it and set its vaultSharePrice - if (!checkpointIsMinted) { - openVaultSharePrice = poolInfo.vaultSharePrice; - } - } - - return calculateShortAccruedYield({ - openVaultSharePrice, - endingVaultSharePrice, - bondAmount, - decimals: await this.getDecimals(), - }); - } - - /** - * Calculates the total trading volume in bonds given a block window. - * @param options.fromBlock - The start block, defaults to "earliest" - * @param options.toBlock - The end block, defaults to "latest" - * @returns the total amount of bonds traded - */ - async getTradingVolume(options?: { - fromBlock?: BlockTag | bigint; - toBlock?: BlockTag | bigint; - }): Promise<{ - totalVolume: bigint; - longVolume: bigint; - shortVolume: bigint; - }> { - const { fromBlock, toBlock } = options || {}; - const longEvents = await this.getLongEvents({ - fromBlock, - toBlock, - }); - const shortEvents = await this.getShortEvents({ - fromBlock, - toBlock, - }); - - const longVolume = longEvents.reduce( - (sum, { bondAmount }) => sum + bondAmount, - 0n, - ); - const shortVolume = shortEvents.reduce( - (sum, { bondAmount }) => sum + bondAmount, - 0n, - ); - return { - longVolume, - shortVolume, - totalVolume: longVolume + shortVolume, - }; - } - - /** - * Gets the spot price of a long - * @param options - The read options - * @returns the spot price of a long - */ - async getLongPrice(options?: ContractReadOptions): Promise { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - - return hyperwasm.spotPrice({ poolConfig, poolInfo }); - } - - async getLongEvents( - options?: ContractGetEventsOptions & - ContractGetEventsOptions, - ): Promise< - { - trader: `0x${string}`; - assetId: bigint; - bondAmount: bigint; - baseAmount: bigint; - eventName: "OpenLong" | "CloseLong"; - blockNumber: bigint | undefined; - transactionHash: `0x${string}` | undefined; - }[] - > { - const openLongEvents = await this.contract.getEvents("OpenLong", options); - const closeLongEvents = await this.contract.getEvents("CloseLong", options); - return [...openLongEvents, ...closeLongEvents] - .map(({ args, eventName, blockNumber, transactionHash }) => { - const baseAmount = args.asBase - ? args.amount - : fixed(args.amount).mul(args.vaultSharePrice).bigint; - return { - trader: args.trader, - assetId: args.assetId, - bondAmount: args.bondAmount, - baseAmount, - eventName, - blockNumber, - transactionHash, - }; - }) - .sort((a, b) => Number(a.blockNumber) - Number(b.blockNumber)); - } - - async getShortEvents( - options?: ContractGetEventsOptions & - ContractGetEventsOptions, - ): Promise< - { - trader: `0x${string}`; - assetId: bigint; - bondAmount: bigint; - baseAmount: bigint; - eventName: "OpenShort" | "CloseShort"; - blockNumber: bigint | undefined; - transactionHash: `0x${string}` | undefined; - }[] - > { - const openShortEvents = await this.contract.getEvents("OpenShort", options); - const closeShortEvents = await this.contract.getEvents( - "CloseShort", - options, - ); - return [...openShortEvents, ...closeShortEvents] - .map(({ args, eventName, blockNumber, transactionHash }) => { - const baseAmount = args.asBase - ? args.amount - : fixed(args.amount).mul(args.vaultSharePrice).bigint; - return { - trader: args.trader, - assetId: args.assetId, - bondAmount: args.bondAmount, - baseAmount, - eventName, - blockNumber, - transactionHash, - }; - }) - .sort((a, b) => Number(a.blockNumber) - Number(b.blockNumber)); - } - - async getLpEvents( - options?: ContractGetEventsOptions & - ContractGetEventsOptions & - ContractGetEventsOptions, - ): Promise<{ - addLiquidity: Event[]; - removeLiquidity: Event[]; - redeemWithdrawalShares: Event[]; - }> { - const addLiquidityEvents = await this.contract.getEvents( - "AddLiquidity", - options, - ); - const removeLiquidityEvents = await this.contract.getEvents( - "RemoveLiquidity", - options, - ); - const redeemWithdrawalSharesEvents = await this.contract.getEvents( - "RedeemWithdrawalShares", - options, - ); - - return { - addLiquidity: addLiquidityEvents, - removeLiquidity: removeLiquidityEvents, - redeemWithdrawalShares: redeemWithdrawalSharesEvents, - }; - } - - /** - * This returns the LP APY using the following formula for continuous compounding: - * r = rate of return - * p_0 = from lpSharePrice - * p_1 = to lpSharePrice - * t = time frame between p_0 and p_1 - * - * r = (p_1 / p_0) ^ (1 / t) - 1 - */ - async getLpApy({ - fromBlock, - options, - }: { - fromBlock: bigint; - options?: ContractReadOptions; - }): Promise<{ lpApy: bigint }> { - // If the 24 hour rate doesn't exist, assume the pool was initialized less - // than 24 hours before and try to get the all-time rate until toBlock - const { blockNumber: initializationBlock } = - await this.getInitializationBlock(); - if (initializationBlock && initializationBlock > fromBlock) { - fromBlock = initializationBlock; - } - - // Attempt to fetch the blocks first to fail early if the block is not found - const currentBlock = await getBlockOrThrow(this.network, options); - const startBlock = await getBlockOrThrow(this.network, { - blockNumber: fromBlock, - }); - - // Get the info from fromBlock to get the starting lp share price - const { lpSharePrice: startLpSharePrice } = await this.getPoolInfo({ - blockNumber: fromBlock, - }); - - // Get the current lpSharePrice from the latest pool info - const { lpSharePrice: currentLpSharePrice } = await this.getPoolInfo(); - - const timeFrame = currentBlock.timestamp - startBlock.timestamp; - - const lpApy = calculateApyFromPrice({ - startPrice: startLpSharePrice, - endPrice: currentLpSharePrice, - timeFrame, - }); - - return { lpApy }; - } - - async getCheckpointEvents( - options?: ContractGetEventsOptions, - ): Promise { - const checkPointEvents = await this.contract.getEvents( - "CreateCheckpoint", - options, - ); - return checkPointEvents; - } - - private _calcOpenLongs({ - openLongEvents, - closeLongEvents, - }: { - openLongEvents: Event[]; - closeLongEvents: Event[]; - }): Long[] { - // Put open and long events in block order. We spread openLongEvents first - // since you have to open a long before you can close one. - const orderedLongEvents = [...openLongEvents, ...closeLongEvents].sort( - (a, b) => Number(a.blockNumber) - Number(b.blockNumber), - ); - - const openLongs: Record = {}; - - orderedLongEvents.forEach((event) => { - const assetId = event.args.assetId.toString(); - - const long: Long = openLongs[assetId] || { - assetId: event.args.assetId, - maturity: event.args.maturityTime, - baseAmountPaid: 0n, - bondAmount: 0n, - }; - - const baseAmount = event.args.asBase - ? event.args.amount - : fixed(event.args.amount).mul(event.args.vaultSharePrice).bigint; - - switch (event.eventName) { - case "OpenLong": - openLongs[assetId] = { - ...long, - baseAmountPaid: long.baseAmountPaid + baseAmount, - bondAmount: long.bondAmount + event.args.bondAmount, - }; - return; - - case "CloseLong": - // If a user closes their whole position, we should remove the whole - // position since it's basically starting over - if (event.args.bondAmount === long.bondAmount) { - delete openLongs[assetId]; - } else { - // otherwise just subtract the amount of bonds they closed and baseAmount - // they received back from the running total - openLongs[assetId] = { - ...long, - baseAmountPaid: long.baseAmountPaid - baseAmount, - bondAmount: long.bondAmount - event.args.bondAmount, - }; - } - return; - - default: - assertNever(event, true); - } - }); - - return Object.values(openLongs).filter((long) => long.bondAmount); - } - - // TODO: Rename this to getOpenLongs once this function replaces the existing getOpenLongs - async getOpenLongPositions({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const toBlock = getBlockFromReadOptions(options); - - const transfersReceived = await this.contract.getEvents("TransferSingle", { - filter: { to: account }, - toBlock, - }); - const transfersSent = await this.contract.getEvents("TransferSingle", { - filter: { from: account }, - toBlock, - }); - - const longsReceived = transfersReceived.filter((event) => { - const { assetType } = decodeAssetFromTransferSingleEventData( - event.data as `0x${string}`, - ); - return assetType === "LONG"; - }); - - const longsSent = transfersSent.filter((event) => { - const { assetType } = decodeAssetFromTransferSingleEventData( - event.data as `0x${string}`, - ); - return assetType === "LONG"; - }); - - // Put open and long events in block order. We spread openLongEvents first - // since you have to open a long before you can close one. - const orderedLongEvents = [...longsReceived, ...longsSent].sort( - (a, b) => Number(a.blockNumber) - Number(b.blockNumber), - ); - - const openLongs: Record = - {}; - - orderedLongEvents.forEach((event) => { - const assetId = event.args.id.toString(); - - const long: OpenLongPositionReceivedWithoutDetails = openLongs[ - assetId - ] || { - assetId, - maturity: decodeAssetFromTransferSingleEventData( - event.data as `0x${string}`, - ).timestamp, - value: 0n, - }; - - const isLongReceived = event.args.to === account; - if (isLongReceived) { - const updatedLong: OpenLongPositionReceivedWithoutDetails = { - ...long, - value: long.value + event.args.value, - }; - openLongs[assetId] = updatedLong; - return; - } - - const isLongSent = event.args.from === account; - if (isLongSent) { - // If a user closes their whole position, we should remove the whole - // position since it's basically starting over - if (event.args.value === long.value) { - delete openLongs[assetId]; - return; - } - // otherwise just subtract the amount of bonds they closed and baseAmount - // they received back from the running total - const updatedLong: OpenLongPositionReceivedWithoutDetails = { - ...long, - value: long.value - event.args.value, - }; - openLongs[assetId] = updatedLong; - } - }); - return Object.values(openLongs).filter((long) => long.value); - } - - async getOpenLongDetails({ - assetId, - account, - options, - }: { - assetId: bigint; - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const allLongPositions = await this.getOpenLongPositions({ - account, - options, - }); - - const longPosition = allLongPositions.find((p) => p.assetId === assetId); - - if (!longPosition) { - throw new HyperdriveSdkError( - `No position with asset id: ${assetId} found for account ${account}`, - ); - } - - const openLongEvents = await this.contract.getEvents("OpenLong", { - filter: { trader: account }, - }); - - const closeLongEvents = await this.contract.getEvents("CloseLong", { - filter: { trader: account }, - }); - - const allOpenLongDetails = this._calcOpenLongs({ - openLongEvents, - closeLongEvents, - }); - - const openLongDetails = allOpenLongDetails.find( - (details) => - details.assetId.toString() === longPosition.assetId.toString(), - ); - // If no details exists for the position, the user must have just received - // some longs via transfer but never opened them themselves. - // OR If the amounts aren't the same, then they may have opened some and - // received some from another wallet. In this case, we still can't be sure - // of the details, so we return undefined. - if (!openLongDetails || openLongDetails.bondAmount !== longPosition.value) { - return; - } - - return openLongDetails; - } - /** - * @deprecated Use ReadHyperdrive.getOpenLongPositions and ReadHyperdrive.getOpenLongDetails instead to retrieve all longs opened or received by a user. - * Gets the active longs opened by a specific user. - * @param account - The user's address - * @param options.toBlock - The end block, defaults to "latest" - * @returns the active longs opened by a specific user - */ - async getOpenLongs({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const toBlock = getBlockFromReadOptions(options); - - const openLongEvents = await this.contract.getEvents("OpenLong", { - filter: { trader: account }, - toBlock, - }); - const closeLongEvents = await this.contract.getEvents("CloseLong", { - filter: { trader: account }, - toBlock, - }); - - return this._calcOpenLongs({ - openLongEvents, - closeLongEvents, - }); - } - - /** - * Gets the active shorts opened by a specific user. - * @param account - The user's address - * @param options.toBlock - The end block, defaults to "latest" - * @returns the active shorts opened by a specific user - * */ - async getOpenShorts({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const toBlock = getBlockFromReadOptions(options); - - const { checkpointDuration, positionDuration } = - await this.getPoolConfig(options); - - const openShortEvents = await this.contract.getEvents("OpenShort", { - filter: { trader: account }, - toBlock, - }); - const closeShortEvents = await this.contract.getEvents("CloseShort", { - filter: { trader: account }, - toBlock, - }); - - return this._calcOpenShorts({ - hyperdriveAddress: this.contract.address, - checkpointDuration, - positionDuration, - openShortEvents, - closeShortEvents, - }); - } - - private async _calcOpenShorts({ - hyperdriveAddress, - checkpointDuration, - positionDuration, - closeShortEvents, - openShortEvents, - }: { - hyperdriveAddress: Address; - checkpointDuration: bigint; - positionDuration: bigint; - openShortEvents: Event[]; - closeShortEvents: Event[]; - }): Promise { - // Put open and short events in block order. We spread openShortEvents first - // since you have to open a short before you can close one. - const orderedShortEvents = [...openShortEvents, ...closeShortEvents].sort( - (a, b) => Number(a.blockNumber) - Number(b.blockNumber), - ); - - const openShorts: Record = {}; - - for (const event of orderedShortEvents) { - const assetId = event.args.assetId.toString(); - const { timestamp } = await getBlockOrThrow(this.network, { - blockNumber: event.blockNumber, - }); - - // Create a default empty short that we will update based on the events - // const short: OpenShort = openShorts[assetId] || { - openShorts[assetId] = openShorts[assetId] || { - hyperdriveAddress, - assetId: event.args.assetId, - maturity: event.args.maturityTime, - checkpointTime: getCheckpointTime(timestamp, checkpointDuration), - // The openedTimestamp will always reflect the latest short, if you open - // twice in the same checkpoint - openedTimestamp: timestamp, - baseAmountPaid: 0n, - bondAmount: 0n, - baseProceeds: 0n, - fixedRatePaid: 0n, - }; - - const baseAmount = event.args.asBase - ? event.args.amount - : fixed(event.args.amount).mul(event.args.vaultSharePrice).bigint; - - const { eventName } = event; - switch (eventName) { - // When you open a short, we add up how much you've paid and your new - // total bond amount, then update the average price and fixed rate - // paid - case "OpenShort": - openShorts[assetId].baseAmountPaid += baseAmount; - openShorts[assetId].bondAmount += event.args.bondAmount; - openShorts[assetId].baseProceeds += event.args.baseProceeds; - openShorts[assetId].fixedRatePaid = calculateAprFromPrice({ - positionDuration, - baseAmount: openShorts[assetId].baseProceeds, - bondAmount: openShorts[assetId].bondAmount, - }); - continue; - - case "CloseShort": { - // If a user closes their whole position, we should remove the whole - // position since it's basically starting over - if (event.args.bondAmount === openShorts[assetId].bondAmount) { - delete openShorts[assetId]; - continue; - } - // otherwise just subtract the amount of bonds they closed and baseAmount - // they received back from the running total - openShorts[assetId].baseAmountPaid -= baseAmount; - openShorts[assetId].bondAmount -= event.args.bondAmount; - openShorts[assetId].baseProceeds -= event.args.basePayment; - openShorts[assetId].fixedRatePaid = calculateAprFromPrice({ - positionDuration, - baseAmount: openShorts[assetId].baseProceeds, - bondAmount: openShorts[assetId].bondAmount, - }); - continue; - } - - default: - assertNever(eventName, true); - } - } - - return Object.values(openShorts).filter((short) => short.bondAmount); - } - - /** - * Gets the closed longs by a specific user. - */ - async getClosedLongs({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const toBlock = getBlockFromReadOptions(options); - - const closedLongs = await this.contract.getEvents("CloseLong", { - filter: { trader: account }, - toBlock, - }); - - const closedLongsList: ClosedLong[] = await Promise.all( - closedLongs.map(async (event) => { - const assetId = event.args.assetId; - - const baseAmount = event.args.asBase - ? event.args.amount - : fixed(event.args.amount).mul(event.args.vaultSharePrice).bigint; - - return { - assetId, - bondAmount: event.args.bondAmount, - baseAmount, - baseAmountPaid: 0n, // TODO: Remove this field, this is copy/paste from @hyperdrive/queries - maturity: event.args.maturityTime, - closedTimestamp: ( - await getBlockOrThrow(this.network, { - blockNumber: event.blockNumber, - }) - ).timestamp, - }; - }), - ); - return closedLongsList.filter((long) => long.bondAmount); - } - - /** - * Gets the inactive shorts opened by a specific user. - */ - async getClosedShorts({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const toBlock = getBlockFromReadOptions(options); - const closedShorts = await this.contract.getEvents("CloseShort", { - filter: { trader: account }, - toBlock, - }); - - const { checkpointDuration } = await this.getPoolConfig(options); - const closedShortsList: ClosedShort[] = await Promise.all( - closedShorts.map(async (event) => { - const { assetId, maturityTime } = event.args; - const { timestamp } = await getBlockOrThrow(this.network, { - blockNumber: event.blockNumber, - }); - - const baseAmount = event.args.asBase - ? event.args.amount - : fixed(event.args.amount).mul(event.args.vaultSharePrice).bigint; - - return { - hyperdriveAddress: this.contract.address, - assetId, - bondAmount: event.args.bondAmount, - baseAmountReceived: baseAmount, - maturity: maturityTime, - closedTimestamp: timestamp, - checkpointTime: getCheckpointTime(timestamp, checkpointDuration), - }; - }), - ); - - return closedShortsList.filter((short) => short.bondAmount); - } - /** - * Gets the maximum amount of bonds a user can open a short for. - */ - async getMaxShort({ - budget, - options, - }: { - budget: bigint; - options?: ContractReadOptions; - }): Promise<{ - maxBaseIn: bigint; - maxSharesIn: bigint; - maxBondsOut: bigint; - }> { - const poolInfo = await this.getPoolInfo(options); - const poolConfig = await this.getPoolConfig(options); - const checkpointExposure = await this.getCheckpointExposure({ options }); - const { vaultSharePrice: openVaultSharePrice } = await this.getCheckpoint({ - options, - }); - - const maxBondsOut = hyperwasm.maxShort({ - budget, - poolInfo, - poolConfig, - maxIterations: MAX_ITERATIONS, - openVaultSharePrice, - checkpointExposure, - }); - - const maxBaseIn = hyperwasm.calcOpenShort({ - poolInfo, - poolConfig, - bondAmount: maxBondsOut, - openVaultSharePrice, - }); - const maxSharesIn = await this.convertToShares({ - baseAmount: maxBaseIn, - options, - }); - - return { - maxBaseIn, - maxSharesIn, - maxBondsOut, - }; - } - /** - * Gets the maximum amount of bonds a user can open a long for. - */ - async getMaxLong(options?: ContractReadOptions): Promise<{ - maxBaseIn: bigint; - maxSharesIn: bigint; - maxBondsOut: bigint; - }> { - const poolInfo = await this.getPoolInfo(options); - const poolConfig = await this.getPoolConfig(options); - const checkpointExposure = await this.getCheckpointExposure({ options }); - - const maxBaseIn = hyperwasm.maxLong({ - poolInfo, - poolConfig, - budget: MAX_UINT256, - checkpointExposure, - }); - - const maxSharesIn = await this.convertToShares({ - baseAmount: maxBaseIn, - options, - }); - - const maxBondsOut = hyperwasm.calcOpenLong({ - poolInfo, - poolConfig, - baseAmount: maxBaseIn, - }); - - return { - maxBaseIn, - maxSharesIn, - maxBondsOut, - }; - } - - getLpSharesTotalSupply(args?: { - options?: ContractReadOptions; - }): Promise { - return this.contract.read( - "totalSupply", - { tokenId: LP_ASSET_ID }, - args?.options, - ); - } - - /** - * Gets the amount of LP shares a user has. - */ - getLpShares({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.contract.read( - "balanceOf", - { tokenId: LP_ASSET_ID, owner: account }, - options, - ); - } - - /** - * Gets a user's current LP position. - */ - async getOpenLpPosition({ - account, - // TODO: Remove asBase parameter when we can use hyperwasm to calculate the - // preview remove liquidity - asBase, - options, - }: { - asBase: boolean; - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise<{ - lpShareBalance: bigint; - baseAmountPaid: bigint; - baseValue: bigint; - sharesValue: bigint; - }> { - const toBlock = getBlockFromReadOptions(options); - const addLiquidityEvents = await this.contract.getEvents("AddLiquidity", { - filter: { provider: account }, - toBlock, - }); - const removeLiquidityEvents = await this.contract.getEvents( - "RemoveLiquidity", - { - filter: { provider: account }, - toBlock, - }, - ); - - const decimals = await this.getDecimals(); - const { lpShareBalance, baseAmountPaid } = this._calcOpenLpPosition({ - addLiquidityEvents, - removeLiquidityEvents, - }); - - if (!lpShareBalance) { - return { - lpShareBalance, - baseAmountPaid, - baseValue: 0n, - sharesValue: 0n, - }; - } - - // Note: `previewRemoveLiquidity` uses the `simulateWrite` method which - // simulates the transaction at the current block. This means that the - // calculated value of the position will always be based on the current - // state of the pool, even if the lp balance and amount paid were - // calculated using past events via the block in options. - - const { proceeds, withdrawalShares } = await this.previewRemoveLiquidity({ - lpSharesIn: lpShareBalance, - minOutputPerShare: 1n, - asBase, - destination: account, - }); - - // Note: we don't pass in the options here because we want the current - // prices that were used in the previewRemoveLiquidity call. - const proceedsBaseValue = asBase - ? proceeds - : await this.convertToBase({ - sharesAmount: proceeds, - }); - - // convert the withdrawal shares into base using lpSharePrice - const { lpSharePrice } = await this.getPoolInfo(); - const withdrawalSharesBaseValue = fixed(lpSharePrice, decimals).mul( - withdrawalShares, - decimals, - ).bigint; - const withdrawalSharesSharesValue = await this.convertToShares({ - baseAmount: withdrawalSharesBaseValue, - }); - - return { - lpShareBalance, - baseAmountPaid, - baseValue: proceedsBaseValue + withdrawalSharesBaseValue, - sharesValue: proceeds + withdrawalSharesSharesValue, - }; - } - - /** - * Combine the adds and removes in order of block number to get the full - * transaction history in the order the user executed them - */ - private _calcOpenLpPosition({ - addLiquidityEvents, - removeLiquidityEvents, - }: { - addLiquidityEvents: Event[]; - removeLiquidityEvents: Event[]; - }) { - const combinedEventsInOrder = [ - ...addLiquidityEvents, - ...removeLiquidityEvents, - ].sort((a, b) => Number(a.blockNumber) - Number(b.blockNumber)); - - let baseAmountPaid = 0n; - let lpShareBalance = 0n; - combinedEventsInOrder.forEach((event) => { - const baseAmount = event.args.asBase - ? event.args.amount - : fixed(event.args.amount).mul(event.args.vaultSharePrice).bigint; - - switch (event.eventName) { - case "AddLiquidity": - lpShareBalance += event.args.lpAmount; - baseAmountPaid += baseAmount; - return; - - case "RemoveLiquidity": { - lpShareBalance -= event.args.lpAmount; - - // If a user removes all their lp shares, we should zero out - // baseAmountPaid, since it's basically starting over - if (lpShareBalance <= 0n) { - baseAmountPaid = 0n; - } else { - // Include the base value of withdrawal shares received when - // recalculating baseAmountPaid. - const withdrawalSharesBaseValue = fixed( - event.args.withdrawalShareAmount, - ).mul(event.args.lpSharePrice).bigint; - baseAmountPaid = - baseAmountPaid - baseAmount - withdrawalSharesBaseValue; - } - return; - } - - default: - assertNever(event, true); - } - }); - - return { lpShareBalance, baseAmountPaid }; - } - - /** - * Gets the amount of closed LP shares a user has. - */ - async getClosedLpShares({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const removeLiquidityEvents = await this.contract.getEvents( - "RemoveLiquidity", - { - filter: { provider: account }, - toBlock: getBlockFromReadOptions(options), - }, - ); - return Promise.all( - removeLiquidityEvents.map(async ({ blockNumber, args }) => { - const { - lpAmount, - withdrawalShareAmount, - asBase, - amount, - lpSharePrice, - } = args; - - const baseAmount = asBase - ? amount - : fixed(args.amount).mul(args.vaultSharePrice).bigint; - - return { - lpAmount, - baseAmount, - withdrawalShareAmount, - lpSharePrice, - closedTimestamp: ( - await getBlockOrThrow(this.network, { - blockNumber, - }) - ).timestamp, - }; - }), - ); - } - - /** - * Gets the amount of withdrawal shares a user has. - */ - getWithdrawalShares({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.contract.read( - "balanceOf", - { tokenId: WITHDRAW_SHARES_ASSET_ID, owner: account }, - options, - ); - } - - /** - * Gets the amount of redeemed withdrawal shares a user has. - */ - async getRedeemedWithdrawalShares({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const redeemedWithdrawalShareEvents = await this.contract.getEvents( - "RedeemWithdrawalShares", - { - filter: { provider: account }, - toBlock: getBlockFromReadOptions(options), - }, - ); - - return Promise.all( - redeemedWithdrawalShareEvents.map(async ({ blockNumber, args }) => { - const { withdrawalShareAmount, amount, asBase, vaultSharePrice } = args; - const baseAmount = asBase - ? args.amount - : fixed(amount).mul(vaultSharePrice).bigint; - - return { - hyperdriveAddress: this.contract.address, - withdrawalShareAmount, - baseAmount, - redeemedTimestamp: ( - await getBlockOrThrow(this.network, { blockNumber }) - ).timestamp, - }; - }), - ); - } - - /** - * Predicts the amount of bonds a user will receive when opening a long in - * either base or shares. The curve fee returned from this function is paid in bonds. - */ - async previewOpenLong({ - amountIn, - asBase, - options, - }: { - amountIn: bigint; - asBase: boolean; - options?: ContractReadOptions; - }): Promise<{ - maturityTime: bigint; - bondProceeds: bigint; - spotPriceAfterOpen: bigint; - spotRateAfterOpen: bigint; - curveFee: bigint; - }> { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - const checkpointTime = await this.getCheckpointTime({ options }); - - // calcOpenLong only accepts base, so if the user is depositing shares we - // need to convert that value to base before we can preview the trade for them - let depositAmountConvertedToBase = amountIn; - if (!asBase) { - depositAmountConvertedToBase = await this.convertToBase({ - sharesAmount: amountIn, - options, - }); - } - - const spotPriceAfterOpen = hyperwasm.spotPriceAfterLong({ - poolInfo, - poolConfig, - baseAmount: depositAmountConvertedToBase, - }); - - const spotRateAfterOpen = hyperwasm.calcAprGivenFixedPrice({ - price: spotPriceAfterOpen, - positionDuration: poolConfig.positionDuration, - }); - - const bondProceeds = hyperwasm.calcOpenLong({ - poolInfo, - poolConfig, - baseAmount: depositAmountConvertedToBase, - }); - - const curveFeeInBonds = hyperwasm.openLongCurveFee({ - poolInfo, - poolConfig, - baseAmount: depositAmountConvertedToBase, - }); - - return { - maturityTime: checkpointTime + poolConfig.positionDuration, - bondProceeds, - spotPriceAfterOpen, - spotRateAfterOpen, - curveFee: curveFeeInBonds, - }; - } - - /** - * Calculates the cost to open a short given the current pool state and the - * amount of bonds the user wants to short. - * @param amountOfBondsToShort The number of bonds to short - * @param asBase If true, the traderDeposit will be in base. If false, the traderDeposit will be in shares - */ - async previewOpenShort({ - amountOfBondsToShort, - asBase, - options, - }: { - amountOfBondsToShort: bigint; - asBase: boolean; - options?: ContractReadOptions; - }): Promise<{ - maturityTime: bigint; - traderDeposit: bigint; - spotPriceAfterOpen: bigint; - spotRateAfterOpen: bigint; - curveFee: bigint; - fixedRatePaid: bigint; - }> { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - const latestCheckpoint = await this.getCheckpoint({ options }); - const accruedYield = await this.getShortAccruedYield({ - checkpointTime: latestCheckpoint.checkpointTime, - bondAmount: amountOfBondsToShort, - options, - }); - - const baseDepositAmount = hyperwasm.calcOpenShort({ - poolInfo, - poolConfig, - bondAmount: amountOfBondsToShort, - openVaultSharePrice: latestCheckpoint.vaultSharePrice, - }); - - // Calculation for fixed rate paid. This is the rate the user pays upfront - // to open a short. - const fixedTimeRangeInYears = fixed(poolConfig.positionDuration).div( - SECONDS_PER_YEAR, - ); - const baseAmountMinusYield = fixed(baseDepositAmount).sub(accruedYield); - const bondsMinusBaseAmount = - fixed(amountOfBondsToShort).sub(baseAmountMinusYield); - const fixedRatePaid = baseAmountMinusYield - .div(bondsMinusBaseAmount) - .div(fixedTimeRangeInYears).bigint; - - const spotPriceAfterOpen = hyperwasm.spotPriceAfterShort({ - poolInfo, - poolConfig, - bondAmount: amountOfBondsToShort, - }); - - const spotRateAfterOpen = hyperwasm.calcAprGivenFixedPrice({ - price: spotPriceAfterOpen, - positionDuration: poolConfig.positionDuration, - }); - - const curveFeeInBase = hyperwasm.openShortCurveFee({ - poolInfo, - poolConfig, - bondAmount: amountOfBondsToShort, - }); - - if (asBase) { - return { - maturityTime: - latestCheckpoint.checkpointTime + poolConfig.positionDuration, - traderDeposit: baseDepositAmount, - spotPriceAfterOpen, - spotRateAfterOpen, - curveFee: curveFeeInBase, - fixedRatePaid, - }; - } - - return { - maturityTime: - latestCheckpoint.checkpointTime + poolConfig.positionDuration, - traderDeposit: await this.convertToShares({ - baseAmount: baseDepositAmount, - options, - }), - spotPriceAfterOpen, - spotRateAfterOpen, - curveFee: await this.convertToShares({ - baseAmount: curveFeeInBase, - options, - }), - fixedRatePaid, - }; - } - - /** - * Predicts the amount of bonds that can be shorted given a target deposit - * amount in either base or shares. - */ - async getShortBondsGivenDeposit({ - amountIn, - asBase, - tolerance, - options, - }: { - amountIn: bigint; - asBase: boolean; - /** - * The maximum difference between the target and actual base amount. - * - * @default 1e9 - */ - tolerance?: bigint; - options?: ContractReadOptions; - }): Promise { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - const latestCheckpoint = await this.getCheckpoint({ options }); - const checkpointExposure = await this.getCheckpointExposure({ options }); - - let targetBaseAmount = amountIn; - if (!asBase) { - targetBaseAmount = await this.convertToBase({ - sharesAmount: amountIn, - options, - }); - } - - const absoluteMaxBondAmount = hyperwasm.absoluteMaxShort({ - poolInfo, - poolConfig, - checkpointExposure, - }); - - return hyperwasm.shortBondsGivenDeposit({ - poolInfo, - poolConfig, - targetBaseAmount, - absoluteMaxBondAmount, - openVaultSharePrice: latestCheckpoint.vaultSharePrice, - maybeTolerance: tolerance, - }); - } - - /** - * Predicts the amount of base asset a user will receive when closing a long. - */ - async previewCloseLong({ - maturityTime, - bondAmountIn, - asBase, - options, - }: { - maturityTime: bigint; - bondAmountIn: bigint; - asBase: boolean; - options?: ContractReadOptions; - }): Promise<{ amountOut: bigint; flatPlusCurveFee: bigint }> { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - const currentTime = BigInt(Math.floor(Date.now() / 1000)); - - const flatFeeInShares = hyperwasm.closeLongFlatFee({ - poolInfo, - poolConfig, - bondAmount: bondAmountIn, - maturityTime, - currentTime, - }); - const curveFeeInShares = hyperwasm.closeLongCurveFee({ - poolInfo, - poolConfig, - bondAmount: bondAmountIn, - maturityTime, - currentTime, - }); - const flatPlusCurveFee = flatFeeInShares + curveFeeInShares; - - const amountOutInShares = hyperwasm.calcCloseLong({ - poolInfo, - poolConfig, - bondAmount: bondAmountIn, - maturityTime, - currentTime, - }); - - if (!asBase) { - return { - amountOut: amountOutInShares, - flatPlusCurveFee, - }; - } - - return { - amountOut: await this.convertToBase({ - sharesAmount: amountOutInShares, - options, - }), - flatPlusCurveFee: await this.convertToBase({ - sharesAmount: flatPlusCurveFee, - options, - }), - }; - } - /** - * Get a rough estimate of the market value of a short. This can be used to - * value a position that cannot be fully closed. - */ - async estimateShortMarketValue({ - maturityTime, - asBase, - shortAmountIn, - options, - }: { - maturityTime: bigint; - shortAmountIn: bigint; - asBase: boolean; - extraData?: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - - // The checkpoint in which this position was opened. - // This is always maturity time - position duration thanks to mint on demand - const openCheckpointTimestamp = maturityTime - poolConfig.positionDuration; - const { vaultSharePrice: openVaultSharePrice } = await this.getCheckpoint({ - timestamp: openCheckpointTimestamp, - options, - }); - - const currentTime = BigInt(Math.floor(Date.now() / 1000)); - - // If the position is mature, we use the closing vault share price otherwise - // use the current vault share price - let closeVaultSharePrice = poolInfo.vaultSharePrice; - if (maturityTime <= currentTime) { - const closingCheckpoint = await this.getCheckpoint({ - timestamp: maturityTime, - options, - }); - closeVaultSharePrice = closingCheckpoint.vaultSharePrice; - } - - const marketEstimateInShares = hyperwasm.calcShortMarketValue({ - poolInfo, - poolConfig, - bondAmount: shortAmountIn, - openVaultSharePrice, - closeVaultSharePrice, - maturityTime, - currentTime, - }); - - if (!asBase) { - return marketEstimateInShares; - } - - return this.convertToBase({ - sharesAmount: marketEstimateInShares, - options, - }); - } - - /** - * Predicts the amount of base asset a user will receive when closing a short. - * If closing the short would result in negative interest, an error will be - * thrown. - */ - async previewCloseShort({ - maturityTime, - shortAmountIn, - asBase, - options, - }: { - maturityTime: bigint; - shortAmountIn: bigint; - asBase: boolean; - extraData?: `0x${string}`; - options?: ContractReadOptions; - }): Promise<{ - amountOut: bigint; - flatPlusCurveFee: bigint; - }> { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - - // The checkpoint in which this position was opened. - // This is always maturity time - position duration thanks to mint on demand - const openCheckpointTimestamp = maturityTime - poolConfig.positionDuration; - const { vaultSharePrice: openVaultSharePrice } = await this.getCheckpoint({ - timestamp: openCheckpointTimestamp, - options, - }); - - const currentTime = BigInt(Math.floor(Date.now() / 1000)); - - // If the position is mature, we use the closing vault share price otherwise - // use the current vault share price - let closeVaultSharePrice = poolInfo.vaultSharePrice; - if (maturityTime <= currentTime) { - const closingCheckpoint = await this.getCheckpoint({ - timestamp: maturityTime, - options, - }); - closeVaultSharePrice = closingCheckpoint.vaultSharePrice; - } - - const flatFeeInShares = hyperwasm.closeShortFlatFee({ - poolInfo, - poolConfig, - bondAmount: shortAmountIn, - maturityTime, - currentTime, - }); - const curveFeeInShares = hyperwasm.closeShortCurveFee({ - poolInfo, - poolConfig, - bondAmount: shortAmountIn, - maturityTime, - currentTime, - }); - const flatPlusCurveFee = flatFeeInShares + curveFeeInShares; - - const amountOutInShares = hyperwasm.calcCloseShort({ - poolInfo, - poolConfig, - bondAmount: shortAmountIn, - openVaultSharePrice, - closeVaultSharePrice, - maturityTime, - currentTime, - }); - - if (!asBase) { - return { - amountOut: amountOutInShares, - flatPlusCurveFee, - }; - } - - return { - amountOut: await this.convertToBase({ - sharesAmount: amountOutInShares, - options, - }), - flatPlusCurveFee: await this.convertToBase({ - sharesAmount: flatPlusCurveFee, - options, - }), - }; - } - - /** - * Predicts the amount of LP shares a user will receive when adding liquidity. - */ - async previewAddLiquidity({ - contribution, - minApr, - minLpSharePrice, - maxApr, - asBase, - options, - }: { - contribution: bigint; - minApr: bigint; - minLpSharePrice: bigint; - maxApr: bigint; - destination: `0x${string}`; - asBase: boolean; - extraData?: `0x${string}`; - options?: ContractReadOptions; - }): Promise<{ lpSharesOut: bigint; slippagePaid: bigint }> { - const poolConfig = await this.getPoolConfig(options); - const poolInfo = await this.getPoolInfo(options); - const currentTime = BigInt(Math.floor(Date.now() / 1000)); - const lpSharesOut = hyperwasm.calcAddLiquidity({ - poolInfo, - poolConfig, - currentTime, - contribution, - asBase, - minLpSharePrice, - minApr: minApr, - maxApr: maxApr, - }); - const decimals = await this.getDecimals(); - - const lpSharesOutInBase = fixed(lpSharesOut, decimals).mul( - poolInfo.lpSharePrice, - decimals, - ).bigint; - const valueOfLpShares = asBase - ? lpSharesOutInBase - : await this.convertToShares({ - baseAmount: lpSharesOutInBase, - options, - }); - - return { - lpSharesOut, - slippagePaid: contribution - valueOfLpShares, - }; - } - - /** - * Predicts the amount of base asset and withdrawal shares a user will receive when removing liquidity. - */ - async previewRemoveLiquidity({ - lpSharesIn, - minOutputPerShare, - destination, - asBase, - extraData = NULL_BYTES, - options, - }: { - lpSharesIn: bigint; - minOutputPerShare: bigint; - destination: `0x${string}`; - asBase: boolean; - extraData?: `0x${string}`; - options?: ContractWriteOptions; - }): Promise<{ proceeds: bigint; withdrawalShares: bigint }> { - const { proceeds, withdrawalShares } = await this.contract.simulateWrite( - "removeLiquidity", - { - _lpShares: lpSharesIn, - _minOutputPerShare: minOutputPerShare, - _options: { destination, asBase, extraData }, - }, - { - ...options, - // since this is calling a write method in view mode, we must specify - // the `from` in order to have an account to preview with - from: destination, - }, - ); - - return { - proceeds, - withdrawalShares, - }; - } - - /** - * Predicts the amount of base asset and redeemed shares a user will receive when redeeming withdrawal shares. - */ - async previewRedeemWithdrawalShares({ - withdrawalSharesIn, - minOutputPerShare, - destination, - asBase, - extraData = NULL_BYTES, - options, - }: { - withdrawalSharesIn: bigint; - minOutputPerShare: bigint; - destination: `0x${string}`; - asBase: boolean; - extraData?: `0x${string}`; - options?: ContractWriteOptions; - }): Promise<{ - baseProceeds: bigint; - withdrawalSharesRedeemed: bigint; - asBase: boolean; - sharesProceeds: bigint; - }> { - const { proceeds, withdrawalSharesRedeemed } = - await this.contract.simulateWrite( - "redeemWithdrawalShares", - { - _withdrawalShares: withdrawalSharesIn, - _minOutputPerShare: minOutputPerShare, - _options: { destination, asBase, extraData }, - }, - options, - ); - - return { - asBase, - baseProceeds: asBase - ? proceeds - : await this.convertToBase({ sharesAmount: proceeds }), - sharesProceeds: asBase - ? await this.convertToShares({ baseAmount: proceeds }) - : proceeds, - withdrawalSharesRedeemed, - }; - } -} - -/* - * This returns the APY using the following formula for continuous compounding: - - * r = rate of return - * p_0 = start price - * p_1 = end price - * t = term length in fractions of a year - * - * r = (p_1 / p_0) ^ (1 / t) - 1 - */ -function calculateApyFromPrice({ - startPrice, - endPrice, - timeFrame, // seconds -}: { - startPrice: bigint; - endPrice: bigint; - timeFrame: bigint; -}): bigint { - const priceRatio = fixed(endPrice).div(startPrice); - const yearFraction = fixed(timeFrame).div(SECONDS_PER_YEAR); - return priceRatio.pow(fixed(1e18).div(yearFraction)).sub(1e18).bigint; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/ReadWriteHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/ReadWriteHyperdrive.ts deleted file mode 100644 index 33c8a9c50..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/ReadWriteHyperdrive.ts +++ /dev/null @@ -1,434 +0,0 @@ -import { - CachedReadWriteContract, - ContractReadOptions, - ContractWriteOptions, -} from "@delvtech/evm-client"; -import { ReadWriteContractFactory } from "src/evm-client/contractFactory"; -import { syncCacheWithTransaction } from "src/evm-client/syncCacheWithTransaction"; -import { HyperdriveAbi } from "src/hyperdrive/base/abi"; -import { ReadHyperdrive } from "src/hyperdrive/base/ReadHyperdrive"; -import { NULL_BYTES } from "src/hyperdrive/constants"; -import { ReadWriteContractModelOptions } from "src/model/ReadWriteModel"; -import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; -import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; - -type ReadWriteParams = { - args: Args; - options?: ContractWriteOptions; - onTransactionCompleted?: (hash: `0x${string}`) => void; -}; - -export interface ReadWriteHyperdriveOptions - extends ReadWriteContractModelOptions {} - -export class ReadWriteHyperdrive extends ReadHyperdrive { - declare contract: CachedReadWriteContract; - declare contractFactory: ReadWriteContractFactory; - - constructor(options: ReadWriteHyperdriveOptions) { - super(options); - } - - async getBaseToken( - options?: ContractReadOptions, - ): Promise { - const address = await this.contract.read("baseToken", {}, options); - return address === ReadWriteEth.address - ? new ReadWriteEth({ - contractFactory: this.contractFactory, - network: this.network, - }) - : new ReadWriteErc20({ - address, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - async getSharesToken(): Promise { - const address = await this.contract.read("vaultSharesToken"); - return new ReadWriteErc20({ - address, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - /** - * Allows anyone to mint a new checkpoint. - * @param time - The time (in seconds) of the checkpoint to create. - */ - @syncCacheWithTransaction() - async checkpoint({ - args: { time }, - options, - }: ReadWriteParams<{ time: number }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "checkpoint", - { _checkpointTime: BigInt(time), _maxIterations: 4n }, - options, - ); - return hash; - } - - /** - * Allows an authorized address to pause this contract - * @param paused - True to pause all deposits and false to unpause them - */ - @syncCacheWithTransaction({ - cacheEntries: [{ functionName: "getMarketState" }], - }) - async pause({ - args: { paused }, - options, - }: ReadWriteParams<{ - paused: boolean; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "pause", - { _status: paused }, - options, - ); - return hash; - } - - /** - * Allows the first LP to initialize the market with a target APR. - * @param args.contribution - The amount of base to supply. - * @param args.apr - The target APR. - * @param args.destination - The destination of the LP shares. - * @param args.asBase - If true the user is charged in underlying if false - * the contract transfers in yield source directly. Note - * - for some paths one choice may be disabled or - * blocked. - * @returns The initial number of LP shares created. - */ - @syncCacheWithTransaction() - async initialize({ - args: { - contribution, - apr, - destination, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - contribution: bigint; - apr: bigint; - destination: `0x${string}`; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "initialize", - { - _apr: apr, - _contribution: contribution, - _options: { - destination: destination, - asBase: asBase, - extraData: extraData, - }, - }, - options, - ); - return hash; - } - - /** - * Opens a new long position. - * @param destination - The account opening the position - * @param baseAmount - The amount of base supplied to the position - * @param bondAmountOut - The amount of bonds to send to the destination - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @return bondProceeds - The amount of bonds the user received - * - */ - @syncCacheWithTransaction() - async openLong({ - args: { - destination, - amount, - minBondsOut, - minVaultSharePrice, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - destination: `0x${string}`; - amount: bigint; - minVaultSharePrice: bigint; - minBondsOut: bigint; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "openLong", - { - _amount: amount, - _minOutput: minBondsOut, - _minVaultSharePrice: minVaultSharePrice, - _options: { destination, asBase, extraData }, - }, - options, - ); - return hash; - } - - /** - * Opens a new short position. - * @param destination - The account opening the position - * @param baseAmount - The amount of base supplied to the position - * @param bondAmountOut - The amount of bonds to send to the destination - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @return maturityTime - The maturity time of the short. - * @return traderDeposit - The amount the user deposited for this trade. - */ - @syncCacheWithTransaction() - async openShort({ - args: { - destination, - bondAmount, - minVaultSharePrice, - maxDeposit, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - destination: `0x${string}`; - minVaultSharePrice: bigint; - bondAmount: bigint; - maxDeposit: bigint; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "openShort", - { - _bondAmount: bondAmount, - _maxDeposit: maxDeposit, - _minVaultSharePrice: minVaultSharePrice, - _options: { destination, asBase, extraData }, - }, - options, - ); - return hash; - } - - /** - * Closes a long position. - * @param maturityTime - The maturity time of the long - * @param bondAmountIn - The amount of of bonds to remove from the position - * @param minBaseAmountOut - The minimum amount of base to send to the destination - * @param destination - The account receiving the base - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @return The amount of underlying asset the user receives. - */ - @syncCacheWithTransaction() - async closeLong({ - args: { - maturityTime, - bondAmountIn, - minAmountOut, - destination, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - maturityTime: bigint; - bondAmountIn: bigint; - minAmountOut: bigint; - destination: `0x${string}`; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "closeLong", - { - _maturityTime: maturityTime, - _bondAmount: bondAmountIn, - _minOutput: minAmountOut, - _options: { destination, asBase, extraData }, - }, - options, - ); - return hash; - } - - /** - * Closes a short position. - * @param maturityTime - The maturity time of the short - * @param bondAmountIn - The amount of bonds to remove from the position - * @param minBaseAmountOut - The minimum amount of base to send to the destination - * @param destination - The account receiving the base - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @return The amount of base tokens produced by closing this short - */ - @syncCacheWithTransaction() - async closeShort({ - args: { - maturityTime, - bondAmountIn, - minAmountOut, - destination, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - maturityTime: bigint; - bondAmountIn: bigint; - minAmountOut: bigint; - destination: `0x${string}`; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "closeShort", - { - _maturityTime: maturityTime, - _bondAmount: bondAmountIn, - _minOutput: minAmountOut, - _options: { destination, asBase, extraData }, - }, - options, - ); - return hash; - } - - /** - * Adds liquidity to the pool. - * @param destination - The account adding liquidity - * @param contribution - The amount of base to supply - * @param minApr - The minimum APR to accept - * @param minLpSharePrice - The minimum LP share price to accept - * @param maxApr - The maximum APR to accept - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @return lpShares The number of LP tokens created - */ - @syncCacheWithTransaction() - async addLiquidity({ - args: { - destination, - contribution, - minApr, - minLpSharePrice, - maxApr, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - destination: `0x${string}`; - contribution: bigint; - minApr: bigint; - minLpSharePrice: bigint; - maxApr: bigint; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "addLiquidity", - { - _contribution: contribution, - _minLpSharePrice: minLpSharePrice, - _minApr: minApr, - _maxApr: maxApr, - _options: { destination, asBase, extraData }, - }, - options, - ); - return hash; - } - - /** - * Removes liquidity from the pool. - * @param destination - The account removing liquidity - * @param lpSharesIn - The amount of LP shares to remove - * @param minBaseAmountOut - The minimum amount of base to send to the destination - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @returns baseProceeds - The base the LP removing liquidity receives. The LP - receives a proportional amount of the pool's idle capital - * @returns withdrawShares - The base that the LP receives buys out some of their LP shares, but it may not be sufficient to fully buy the LP out. In this case, the LP receives withdrawal shares equal in value to the present value they are owed. As idle capital becomes available, the pool will buy back these shares. - */ - @syncCacheWithTransaction() - async removeLiquidity({ - args: { - destination, - lpSharesIn, - minOutputPerShare, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - destination: `0x${string}`; - lpSharesIn: bigint; - minOutputPerShare: bigint; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "removeLiquidity", - { - _lpShares: lpSharesIn, - _minOutputPerShare: minOutputPerShare, - _options: { destination, asBase, extraData }, - }, - options, - ); - - return hash; - } - - /** - * Redeems withdrawal shares. - * @param withdrawalSharesIn - The amount of withdrawal shares to redeem - * @param minBaseAmountOutPerShare - The minimum amount of base to send to the destination per share - * @param destination - The account receiving the base - * @param asUnderlying - A flag indicating whether the sender will pay in base or using another currency. Implementations choose which currencies they accept. - * @param options - Contract Write Options - * @return baseProceeds The amount of base the LP received. - * @return sharesRedeemed The amount of withdrawal shares that were redeemed. - */ - @syncCacheWithTransaction() - async redeemWithdrawalShares({ - args: { - withdrawalSharesIn, - minOutputPerShare, - destination, - asBase = true, - extraData = NULL_BYTES, - }, - options, - }: ReadWriteParams<{ - withdrawalSharesIn: bigint; - minOutputPerShare: bigint; - destination: `0x${string}`; - asBase?: boolean; - extraData?: `0x${string}`; - }>): Promise<`0x${string}`> { - const hash = await this.contract.write( - "redeemWithdrawalShares", - { - _withdrawalShares: withdrawalSharesIn, - _minOutputPerShare: minOutputPerShare, - _options: { destination, asBase, extraData }, - }, - options, - ); - return hash; - } -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/abi.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/abi.ts deleted file mode 100644 index 406da38f7..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IHyperdrive } from "@delvtech/hyperdrive-artifacts/IHyperdrive"; - -export const hyperdriveAbi = IHyperdrive.abi; -export type HyperdriveAbi = typeof IHyperdrive.abi; diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/testing/setupReadHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/testing/setupReadHyperdrive.ts deleted file mode 100644 index 951c875c3..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/testing/setupReadHyperdrive.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { - CachedReadContract, - createCachedReadContract, -} from "@delvtech/evm-client"; -import { NetworkStub, ReadContractStub } from "@delvtech/evm-client/stubs"; -import { Abi } from "abitype"; -import { ReadHyperdrive_v1_0_14 } from "src/exports/v1.0.14"; -import { HyperdriveAbi } from "src/hyperdrive/base/abi"; - -// No need to explicitly set return types as they are already set in the Stubs -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -export function setupReadHyperdrive() { - const network = new NetworkStub(); - - // TODO: We use the v1.0.14 version of ReadHyperdrive to avoid the need to - // stub every `convertToShares` and `convertToBase` call since evm-client only - // supports stubbing calls with static values. It should be refactored to - // support stubbing a call with a function to dynamically calculate the return - // value based on arguments and options. - const readHyperdrive = new ReadHyperdrive_v1_0_14({ - address: "0x123", - contractFactory: ({ abi }: { abi: TAbi }) => { - const contract = new ReadContractStub(abi); - return createCachedReadContract({ contract }); - }, - network: network, - }); - - // The ReadHyperdrive class doesn't infer that the contract is a Stub - // so we need to cast it to the correct type. - const contract = - readHyperdrive.contract as unknown as CachedReadContract & - ReadContractStub; - - contract.stubRead({ functionName: "decimals", value: 18 }); - return { - contract, - network, - readHyperdrive, - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14.ts deleted file mode 100644 index 7724cfd5a..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { fixed } from "@delvtech/fixed-point-wasm"; -import { Constructor } from "src/base/types"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; - -/** - * A Hyperdrive instance that is compatible with Hyperdrive <= v1.0.14. - */ -export class ReadHyperdrive_v1_0_14 extends readHyperdriveMixin_v1_0_14( - ReadHyperdrive, -) {} - -/** - * Overrides for compatibility with Hyperdrive <= v1.0.14. - */ -export function readHyperdriveMixin_v1_0_14< - T extends Constructor, ->(Base: T): T { - return class extends Base { - /** - * @hidden - */ - constructor(...[options]: any[]) { - const { debugName = "Hyperdrive v1.0.14", ...restOptions } = - options as ReadHyperdriveOptions; - super({ - debugName, - ...restOptions, - }); - } - - async convertToBase({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise { - const { vaultSharePrice } = await this.getPoolInfo(options); - const decimals = await this.getDecimals(); - return fixed(sharesAmount, decimals).mul(vaultSharePrice, decimals) - .bigint; - } - - async convertToShares({ - baseAmount, - options, - }: { - baseAmount: bigint; - options?: ContractReadOptions; - }): Promise { - const { vaultSharePrice } = await this.getPoolInfo(options); - const decimals = await this.getDecimals(); - return fixed(baseAmount, decimals).div(vaultSharePrice).bigint; - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14.ts deleted file mode 100644 index 5dbd7e56c..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { readHyperdriveMixin_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; - -export class ReadWriteHyperdrive_v1_0_14 extends readHyperdriveMixin_v1_0_14( - ReadWriteHyperdrive -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/constants.ts b/packages/hyperdrive-js-core/src/hyperdrive/constants.ts deleted file mode 100644 index 48b50f611..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/constants.ts +++ /dev/null @@ -1,5 +0,0 @@ -// This is the null bytes, which is different than the zero address -export const NULL_BYTES = "0x"; - -// The maximum number of iterations to run the Newton's method for. Used in `readHyperdrive.getMaxShort`. -export const MAX_ITERATIONS = 14; diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts deleted file mode 100644 index 379eaea11..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; -import { ReadErc4626 } from "src/token/erc4626/ReadErc4626"; - -export class ReadErc4626Hyperdrive extends readErc4626HyperdriveMixin( - ReadHyperdrive, -) {} - -/** - * @internal - */ -export interface ReadErc4626HyperdriveMixin { - /** - * Get a model of the tokenized vault for this Hyperdrive instance. - */ - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readErc4626HyperdriveMixin< - T extends Constructor, ->(Base: T): Constructor & T { - return class extends Base { - constructor(...[options]: any[]) { - const { debugName = "ERC-4626 Hyperdrive", ...restOptions } = - options as ReadHyperdriveOptions; - super({ debugName, ...restOptions }); - } - - async getSharesToken(options?: ContractReadOptions): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - - return new ReadErc4626({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts deleted file mode 100644 index bc06ca533..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadHyperdriveOptions } from "src/exports"; -import { ReadErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadErc4626Hyperdrive"; -import { ReadMockErc4626 } from "src/token/erc4626/ReadMockErc4626"; - -export class ReadMockErc4626Hyperdrive extends readMockErc4626HyperdriveMixin( - ReadErc4626Hyperdrive -) {} - -/** - * @internal - */ -export interface ReadMockErc4626HyperdriveMixin { - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readMockErc4626HyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - return class extends Base { - constructor(...[options]: any[]) { - const { debugName } = options as ReadHyperdriveOptions; - super({ debugName: debugName ?? "Mock ERC-4626 Hyperdrive", ...options }); - } - - async getSharesToken( - options?: ContractReadOptions - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - - return new ReadMockErc4626({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts deleted file mode 100644 index 4370a7180..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { - ReadErc4626HyperdriveMixin, - readErc4626HyperdriveMixin, -} from "src/hyperdrive/erc4626/ReadErc4626Hyperdrive"; -import { ReadWriteErc4626 } from "src/token/erc4626/ReadWriteErc4626"; - -export class ReadWriteErc4626Hyperdrive extends readWriteErc4626HyperdriveMixin( - ReadWriteHyperdrive -) {} - -export interface ReadWriteErc4626HyperdriveMixin - extends ReadErc4626HyperdriveMixin { - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readWriteErc4626HyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - return class extends readErc4626HyperdriveMixin(Base) { - async getSharesToken( - options?: ContractReadOptions - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - - return new ReadWriteErc4626({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts deleted file mode 100644 index 9c497d0bf..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadWriteErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive"; -import { ReadWriteMockErc4626 } from "src/token/erc4626/ReadWriteMockErc4626"; -import { - ReadMockErc4626HyperdriveMixin, - readMockErc4626HyperdriveMixin, -} from "./ReadMockErc4626Hyperdrive"; - -export class ReadWriteMockErc4626Hyperdrive extends readWriteMockErc4626HyperdriveMixin( - ReadWriteErc4626Hyperdrive -) {} - -export interface ReadWriteMockErc4626HyperdriveMixin - extends ReadMockErc4626HyperdriveMixin { - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readWriteMockErc4626HyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - // return class extends readErc4626HyperdriveMixin(Base) { - return class extends readMockErc4626HyperdriveMixin(Base) { - async getSharesToken( - options?: ContractReadOptions - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - - return new ReadWriteMockErc4626({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadErc4626Hyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadErc4626Hyperdrive_v1_0_14.ts deleted file mode 100644 index b6d05657e..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadErc4626Hyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -import { readErc4626HyperdriveMixin } from "src/hyperdrive/erc4626/ReadErc4626Hyperdrive"; - -export class ReadErc4626Hyperdrive_v1_0_14 extends readErc4626HyperdriveMixin( - ReadHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadMockErc4626Hyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadMockErc4626Hyperdrive_v1_0_14.ts deleted file mode 100644 index cc7152de8..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadMockErc4626Hyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { readMockErc4626HyperdriveMixin } from "src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive"; -import { ReadErc4626Hyperdrive_v1_0_14 } from "src/hyperdrive/erc4626/v1.0.14/ReadErc4626Hyperdrive_v1_0_14"; - -export class ReadMockErc4626Hyperdrive_v1_0_14 extends readMockErc4626HyperdriveMixin( - ReadErc4626Hyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadWriteErc4626Hyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadWriteErc4626Hyperdrive_v1_0_14.ts deleted file mode 100644 index bd4ad5cc2..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadWriteErc4626Hyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadWriteHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14"; -import { readWriteErc4626HyperdriveMixin } from "src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive"; - -export class ReadWriteErc4626Hyperdrive_v1_0_14 extends readWriteErc4626HyperdriveMixin( - ReadWriteHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadWriteMockErc4626Hyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadWriteMockErc4626Hyperdrive_v1_0_14.ts deleted file mode 100644 index 233350bf5..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/erc4626/v1.0.14/ReadWriteMockErc4626Hyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { readWriteMockErc4626HyperdriveMixin } from "src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive"; -import { ReadWriteErc4626Hyperdrive_v1_0_14 } from "src/hyperdrive/erc4626/v1.0.14/ReadWriteErc4626Hyperdrive_v1_0_14"; - -export class ReadWriteMockErc4626Hyperdrive_v1_0_14 extends readWriteMockErc4626HyperdriveMixin( - ReadWriteErc4626Hyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts deleted file mode 100644 index f279c55a6..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadHyperdrive } from "src/hyperdrive/base/ReadHyperdrive"; -import { - EzEthHyperdriveAbi, - ezEthHyperdriveAbi, -} from "src/hyperdrive/ezeth/abi"; -import { ReadErc20 } from "src/token/erc20/ReadErc20"; -import { ReadEth } from "src/token/eth/ReadEth"; - -export class ReadEzEthHyperdrive extends readEzEthHyperdriveMixin( - ReadHyperdrive, -) {} - -/** - * @internal - */ -export interface ReadEzEthHyperdriveMixin { - ezEthHyperdriveContract: CachedReadContract; - - /** - * Get a model of ETH, the base token for this Hyperdrive instance. - */ - getBaseToken(options?: ContractReadOptions): Promise; - - /** - * Get a model of the EzETH token for this Hyperdrive instance. - */ - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readEzEthHyperdriveMixin>( - Base: T, -): Constructor & T { - return class extends Base { - ezEthHyperdriveContract: CachedReadContract; - - constructor(...[options]: any[]) { - const { - debugName = "EzETH Hyperdrive", - address, - cache, - namespace, - ...modelOptions - } = options as ConstructorParameters[0]; - super({ debugName, address, cache, namespace, ...modelOptions }); - this.ezEthHyperdriveContract = this.contractFactory({ - abi: ezEthHyperdriveAbi, - address, - cache, - namespace, - }); - } - - async getBaseToken(): Promise { - return new ReadEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken(): Promise { - const { vaultSharesToken } = await this.getPoolConfig(); - return new ReadErc20({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts deleted file mode 100644 index 556ce4d7b..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { - CachedReadWriteContract, - ContractReadOptions, -} from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { - ReadEzEthHyperdriveMixin, - readEzEthHyperdriveMixin, -} from "src/hyperdrive/ezeth/ReadEzEthHyperdrive"; -import { EzEthHyperdriveAbi } from "src/hyperdrive/ezeth/abi"; -import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; -import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; - -export class ReadWriteEzEthHyperdrive extends readWriteEzEthHyperdriveMixin( - ReadWriteHyperdrive -) {} - -export interface ReadWriteEzEthHyperdriveMixin - extends ReadEzEthHyperdriveMixin { - ezEthHyperdriveContract: CachedReadWriteContract; - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readWriteEzEthHyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - return class extends readEzEthHyperdriveMixin(Base) { - declare ezEthHyperdriveContract: CachedReadWriteContract; - - async getBaseToken(): Promise { - return new ReadWriteEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken( - options?: ContractReadOptions - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadWriteErc20({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/abi.ts b/packages/hyperdrive-js-core/src/hyperdrive/ezeth/abi.ts deleted file mode 100644 index a0ccb4885..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IEzETHHyperdrive } from "@delvtech/hyperdrive-artifacts/IEzETHHyperdrive"; - -export const ezEthHyperdriveAbi = IEzETHHyperdrive.abi; -export type EzEthHyperdriveAbi = typeof ezEthHyperdriveAbi; diff --git a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/v1.0.14/ReadEzEthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/ezeth/v1.0.14/ReadEzEthHyperdrive_v1_0_14.ts deleted file mode 100644 index 297028746..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/v1.0.14/ReadEzEthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -import { readEzEthHyperdriveMixin } from "src/hyperdrive/ezeth/ReadEzEthHyperdrive"; - -export class ReadEzEthHyperdrive_v1_0_14 extends readEzEthHyperdriveMixin( - ReadHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/v1.0.14/ReadWriteEzEthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/ezeth/v1.0.14/ReadWriteEzEthHyperdrive_v1_0_14.ts deleted file mode 100644 index 22dab9ecb..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/ezeth/v1.0.14/ReadWriteEzEthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadWriteHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14"; -import { readWriteEzEthHyperdriveMixin } from "src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive"; - -export class ReadWriteEzEthHyperdrive_v1_0_14 extends readWriteEzEthHyperdriveMixin( - ReadWriteHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts deleted file mode 100644 index 0bf5eec48..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; -import { ReadEth } from "src/token/eth/ReadEth"; -import { ReadLsEth } from "src/token/lseth/ReadLsEth"; - -export class ReadLsEthHyperdrive extends readLsEthHyperdriveMixin( - ReadHyperdrive, -) {} - -/** - * @internal - */ -export interface ReadLsEthHyperdriveMixin { - /** - * Get a model of ETH, the base token for this Hyperdrive instance. - */ - getBaseToken(options?: ContractReadOptions): Promise; - - /** - * Get a model of the LsETH token for this Hyperdrive instance. - */ - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readLsEthHyperdriveMixin>( - Base: T, -): Constructor & T { - return class extends Base { - constructor(...[options]: any[]) { - const { debugName = "lsETH Hyperdrive", ...restOptions } = - options as ReadHyperdriveOptions; - super({ debugName, ...restOptions }); - } - - async getBaseToken(): Promise { - return new ReadEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken(options?: ContractReadOptions): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - - return new ReadLsEth({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts deleted file mode 100644 index 9e0a15fbb..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { - ReadLsEthHyperdriveMixin, - readLsEthHyperdriveMixin, -} from "src/hyperdrive/lseth/ReadLsEthHyperdrive"; -import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; -import { ReadWriteLsEth } from "src/token/lseth/ReadWriteLsEth"; - -export class ReadWriteLsEthHyperdrive extends readWriteLsEthHyperdriveMixin( - ReadWriteHyperdrive -) {} - -export interface ReadWriteLsEthHyperdriveMixin - extends ReadLsEthHyperdriveMixin { - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; -} - -export function readWriteLsEthHyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - return class extends readLsEthHyperdriveMixin(Base) { - async getSharesToken( - options?: ContractReadOptions - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadWriteLsEth({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - async getBaseToken(): Promise { - return new ReadWriteEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/lseth/v1.0.14/ReadLsEthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/lseth/v1.0.14/ReadLsEthHyperdrive_v1_0_14.ts deleted file mode 100644 index 7d7ebf9ef..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/lseth/v1.0.14/ReadLsEthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -import { readLsEthHyperdriveMixin } from "src/hyperdrive/lseth/ReadLsEthHyperdrive"; - -export class ReadLsEthHyperdrive_v1_0_14 extends readLsEthHyperdriveMixin( - ReadHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/lseth/v1.0.14/ReadWriteLsEthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/lseth/v1.0.14/ReadWriteLsEthHyperdrive_v1_0_14.ts deleted file mode 100644 index 072f50e6c..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/lseth/v1.0.14/ReadWriteLsEthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadWriteHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14"; -import { readWriteLsEthHyperdriveMixin } from "src/hyperdrive/lseth/ReadWriteLsEthHyperdrive"; - -export class ReadWriteLsEthHyperdrive_v1_0_14 extends readWriteLsEthHyperdriveMixin( - ReadWriteHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/ReadMetaMorphoHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/ReadMetaMorphoHyperdrive.ts deleted file mode 100644 index 764e9fed1..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/ReadMetaMorphoHyperdrive.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { ReadContract } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; -import { - MetaMorphoSnippetsABI, - metaMorphoSnippetsABI, -} from "src/hyperdrive/metamorpho/abi"; - -// See: https://www.notion.so/delv-tech/Testnet-Addresses-911a0f422f374059afa5c40d76373de6 -const SEPOLIA_METAMORPHO_SNIPPETS_ADDRESS = - "0xf5461A30b3723085F8E702fCc7461db85481c173"; - -export class ReadMetaMorphoHyperdrive extends readMetaMorphoHyperdriveMixin( - ReadHyperdrive, -) {} - -/** - * @internal - */ -export interface ReadMetaMorphoHyperdriveMixin { - metaMorphoContract: ReadContract; -} - -/** - * @internal - */ -export function readMetaMorphoHyperdriveMixin< - T extends Constructor, ->(Base: T): Constructor & T { - return class extends Base { - metaMorphoContract: ReadContract; - - constructor(...[options]: any[]) { - const { - debugName = "MetaMorpho Hyperdrive", - address, - cache, - namespace, - ...modelOptions - } = options as ReadHyperdriveOptions; - super({ debugName, address, cache, namespace, ...modelOptions }); - - this.metaMorphoContract = this.contractFactory({ - abi: metaMorphoSnippetsABI, - // TODO: Refactor to a switch/case on chainId once evm-client has chainId - // support on the Network interface - address: SEPOLIA_METAMORPHO_SNIPPETS_ADDRESS, - cache, - namespace, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/ReadWriteMetaMorphoHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/ReadWriteMetaMorphoHyperdrive.ts deleted file mode 100644 index 76ab82dbb..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/ReadWriteMetaMorphoHyperdrive.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ReadContract as ReadWriteContract } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { MetaMorphoSnippetsABI } from "src/hyperdrive/metamorpho/abi"; - -export class ReadWriteMetaMorphoHyperdrive extends readWriteMetaMorphoHyperdriveMixin( - ReadWriteHyperdrive -) {} - -/** - * @internal - */ -export interface ReadWriteMetaMorphoHyperdriveMixin { - metaMorphoContract: ReadWriteContract; -} - -/** - * @internal - */ -export function readWriteMetaMorphoHyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - return class extends Base { - declare metaMorphoContract: ReadWriteContract; - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/abi.ts b/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/abi.ts deleted file mode 100644 index 6b4f66e9f..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/abi.ts +++ /dev/null @@ -1,61 +0,0 @@ -export type MetaMorphoSnippetsABI = typeof metaMorphoSnippetsABI; -export const metaMorphoSnippetsABI = [ - { - inputs: [ - { - components: [ - { internalType: "address", name: "loanToken", type: "address" }, - { internalType: "address", name: "collateralToken", type: "address" }, - { internalType: "address", name: "oracle", type: "address" }, - { internalType: "address", name: "irm", type: "address" }, - { internalType: "uint256", name: "lltv", type: "uint256" }, - ], - internalType: "struct MarketParams", - name: "marketParams", - type: "tuple", - }, - { - components: [ - { - internalType: "uint128", - name: "totalSupplyAssets", - type: "uint128", - }, - { - internalType: "uint128", - name: "totalSupplyShares", - type: "uint128", - }, - { - internalType: "uint128", - name: "totalBorrowAssets", - type: "uint128", - }, - { - internalType: "uint128", - name: "totalBorrowShares", - type: "uint128", - }, - { internalType: "uint128", name: "lastUpdate", type: "uint128" }, - { internalType: "uint128", name: "fee", type: "uint128" }, - ], - internalType: "struct Market", - name: "market", - type: "tuple", - }, - ], - name: "supplyAPYMarket", - outputs: [{ internalType: "uint256", name: "supplyApy", type: "uint256" }], - stateMutability: "view", - type: "function", - }, - { - inputs: [{ internalType: "address", name: "vault", type: "address" }], - name: "supplyAPYVault", - outputs: [ - { internalType: "uint256", name: "avgSupplyApy", type: "uint256" }, - ], - stateMutability: "view", - type: "function", - }, -] as const; diff --git a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/v1.0.14/ReadMetaMorphoHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/v1.0.14/ReadMetaMorphoHyperdrive_v1_0_14.ts deleted file mode 100644 index 333e8cfa1..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/metamorpho/v1.0.14/ReadMetaMorphoHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -import { readMetaMorphoHyperdriveMixin } from "src/hyperdrive/metamorpho/ReadMetaMorphoHyperdrive"; - -export class ReadMetaMorphoHyperdrive_v1_0_14 extends readMetaMorphoHyperdriveMixin( - ReadHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/reth/ReadREthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/reth/ReadREthHyperdrive.ts deleted file mode 100644 index f463a34e0..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/reth/ReadREthHyperdrive.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { fixed } from "@delvtech/fixed-point-wasm"; -import { Constructor } from "src/base/types"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; -import { ReadEth } from "src/token/eth/ReadEth"; -import { ReadREth } from "src/token/reth/ReadREth"; - -export class ReadREthHyperdrive extends readREthHyperdriveMixin( - ReadHyperdrive, -) {} - -/** - * @internal - */ -export interface ReadREthHyperdriveMixin { - /** - * Get a model of ETH, the base token for this Hyperdrive instance. - */ - getBaseToken(options?: ContractReadOptions): Promise; - - /** - * Get a model of the rETH token for this Hyperdrive instance. - */ - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readREthHyperdriveMixin>( - Base: T, -): Constructor & T { - return class extends Base { - constructor(...[options]: any[]) { - const { debugName = "rETH Hyperdrive", ...restOptions } = - options as ReadHyperdriveOptions; - super({ debugName, ...restOptions }); - } - - async getBaseToken(): Promise { - return new ReadEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken(options?: ContractReadOptions): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadREth({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - // Calculations - - async getMaxShort({ - budget, - options, - }: { - budget: bigint; - options: Parameters[0]["options"]; - }): ReturnType { - const result = await super.getMaxShort({ budget, options }); - const decimals = await this.getDecimals(); - return { - ...result, - // FIXME: MockRocketPool updates its price based on the current - // timestamp, so the accuracy of max calculations will slowly drift - // every second. This pads the max shares to avoid errors trying to open - // the max, but may not be needed for mainnet. - maxSharesIn: fixed(result.maxSharesIn, decimals).mul(1e18 - 1e12, 18) - .bigint, - }; - } - - async getMaxLong( - options?: Parameters[0], - ): ReturnType { - const result = await super.getMaxLong(options); - const decimals = await this.getDecimals(); - return { - ...result, - // FIXME: MockRocketPool updates its price based on the current - // timestamp, so the accuracy of max calculations will slowly drift - // every second. This pads the max shares to avoid errors trying to open - // the max, but may not be needed for mainnet. - maxSharesIn: fixed(result.maxSharesIn, decimals).mul(1e18 - 1e12, 18) - .bigint, - }; - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts deleted file mode 100644 index aac239e18..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { readREthHyperdriveMixin } from "src/hyperdrive/reth/ReadREthHyperdrive"; -import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; -import { ReadWriteREth } from "src/token/reth/ReadWriteREth"; - -export class ReadWriteREthHyperdrive extends readWriteREthHyperdriveMixin( - ReadWriteHyperdrive, -) {} - -export interface ReadWriteREthHyperdriveMixin { - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readWriteREthHyperdriveMixin< - T extends Constructor, ->(Base: T): Constructor & T { - return class extends readREthHyperdriveMixin(Base) { - async getBaseToken(): Promise { - return new ReadWriteEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken( - options?: ContractReadOptions, - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadWriteREth({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/reth/v1.0.14/ReadREthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/reth/v1.0.14/ReadREthHyperdrive_v1_0_14.ts deleted file mode 100644 index 42081f044..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/reth/v1.0.14/ReadREthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -import { readREthHyperdriveMixin } from "src/hyperdrive/reth/ReadREthHyperdrive"; - -export class ReadREthHyperdrive_v1_0_14 extends readREthHyperdriveMixin( - ReadHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/reth/v1.0.14/ReadWriteREthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/reth/v1.0.14/ReadWriteREthHyperdrive_v1_0_14.ts deleted file mode 100644 index c8776d4df..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/reth/v1.0.14/ReadWriteREthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadWriteHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14"; -import { readWriteREthHyperdriveMixin } from "src/hyperdrive/reth/ReadWriteREthHyperdrive"; - -export class ReadWriteREthHyperdrive_v1_0_14 extends readWriteREthHyperdriveMixin( - ReadWriteHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/steth/ReadStEthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/steth/ReadStEthHyperdrive.ts deleted file mode 100644 index a6fda2e86..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/steth/ReadStEthHyperdrive.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { fixed } from "@delvtech/fixed-point-wasm"; -import { Constructor } from "src/base/types"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, -} from "src/hyperdrive/base/ReadHyperdrive"; -import { ReadEth } from "src/token/eth/ReadEth"; -import { ReadStEth } from "src/token/steth/ReadStEth"; - -export interface ReadStEthHyperdriveOptions extends ReadHyperdriveOptions { - /** - * The `StETHHyperdrive` contract stores and operates on Lido balances in - * shares. However, since users are most familiar with stETH public balances, - * this model will accept and return balances in stETH by default and convert - * them to shares when interacting with the contract to ease UI integration. - * - * To use shares instead of stETH, set this to `true`. - * - * @default false - * - * @see - * https://docs.lido.fi/guides/lido-tokens-integration-guide#bookkeeping-shares - */ - useSharesAccounting?: boolean; -} - -export class ReadStEthHyperdrive extends readStEthHyperdriveMixin( - ReadHyperdrive, -) { - constructor(options: ReadStEthHyperdriveOptions) { - super(options); - } -} - -/** - * @internal - */ -export interface ReadStEthHyperdriveMixin { - /** - * Get a model of ETH, the base token for this Hyperdrive instance. - */ - getBaseToken(options?: ContractReadOptions): Promise; - - /** - * Get a model of the Lido stETH token for this Hyperdrive instance. - */ - getSharesToken(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readStEthHyperdriveMixin>( - Base: T, -): Constructor & T { - return class extends Base { - constructor(...[options]: any[]) { - const { debugName = "stETH Hyperdrive", ...restOptions } = - options as ReadStEthHyperdriveOptions; - super({ debugName, ...restOptions }); - } - - async getBaseToken(): Promise { - return new ReadEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken(): Promise { - const { vaultSharesToken } = await this.getPoolConfig(); - return new ReadStEth({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - - // Calculations - - async getMaxShort({ - budget, - options, - }: { - budget: bigint; - options?: Parameters[0]["options"]; - }): ReturnType { - const result = await super.getMaxShort({ budget, options }); - const decimals = await this.getDecimals(); - return { - ...result, - // FIXME: MockLido updates its price based on the current timestamp, so - // the accuracy of max calculations will slowly drift every second. - // This pads the max shares to avoid errors trying to open the max, - // but may not be needed for mainnet. - maxSharesIn: fixed(result.maxSharesIn, decimals).mul(1e18 - 1e12, 18) - .bigint, - }; - } - - async getMaxLong( - options?: Parameters[0], - ): ReturnType { - const result = await super.getMaxLong(options); - const decimals = await this.getDecimals(); - return { - ...result, - // FIXME: MockLido updates its price based on the current timestamp, so - // the accuracy of max calculations will slowly drift every second. - // This pads the max shares to avoid errors trying to open the max, - // but may not be needed for mainnet. - maxSharesIn: fixed(result.maxSharesIn, decimals).mul(1e18 - 1e12, 18) - .bigint, - }; - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts b/packages/hyperdrive-js-core/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts deleted file mode 100644 index 0d39e3ce6..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { - CachedReadWriteContract, - ContractReadOptions, -} from "@delvtech/evm-client"; -import { Constructor, Override } from "src/base/types"; -import { HyperdriveAbi } from "src/hyperdrive/base/abi"; -import { - ReadWriteHyperdrive, - ReadWriteHyperdriveOptions, -} from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { - ReadStEthHyperdriveMixin, - readStEthHyperdriveMixin, - ReadStEthHyperdriveOptions, -} from "src/hyperdrive/steth/ReadStEthHyperdrive"; -import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; -import { ReadWriteStEth } from "src/token/steth/ReadWriteStEth"; - -export class ReadWriteStEthHyperdrive extends readWriteStEthHyperdriveMixin( - ReadWriteHyperdrive -) {} - -export interface ReadWriteStEthHyperdriveMixin - extends ReadStEthHyperdriveMixin { - stEthHyperdriveContract: CachedReadWriteContract; - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; -} - -export interface ReadWriteStEthHyperdriveOptions - extends Override {} - -export function readWriteStEthHyperdriveMixin< - T extends Constructor ->(Base: T): Constructor & T { - return class extends readStEthHyperdriveMixin(Base) { - declare stEthHyperdriveContract: CachedReadWriteContract; - - async getBaseToken(): Promise { - return new ReadWriteEth({ - contractFactory: this.contractFactory, - network: this.network, - }); - } - - async getSharesToken( - options?: ContractReadOptions - ): Promise { - const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadWriteStEth({ - address: vaultSharesToken, - contractFactory: this.contractFactory, - namespace: this.contract.namespace, - network: this.network, - }); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/steth/v1.0.14/ReadStEthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/steth/v1.0.14/ReadStEthHyperdrive_v1_0_14.ts deleted file mode 100644 index d452c0b11..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/steth/v1.0.14/ReadStEthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadHyperdrive_v1_0_14"; -import { readStEthHyperdriveMixin } from "src/hyperdrive/steth/ReadStEthHyperdrive"; - -export class ReadStEthHyperdrive_v1_0_14 extends readStEthHyperdriveMixin( - ReadHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/steth/v1.0.14/ReadWriteStEthHyperdrive_v1_0_14.ts b/packages/hyperdrive-js-core/src/hyperdrive/steth/v1.0.14/ReadWriteStEthHyperdrive_v1_0_14.ts deleted file mode 100644 index 3b2a36bbc..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/steth/v1.0.14/ReadWriteStEthHyperdrive_v1_0_14.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ReadWriteHyperdrive_v1_0_14 } from "src/hyperdrive/base/v1.0.14/ReadWriteHyperdrive_v1_0_14"; -import { readWriteStEthHyperdriveMixin } from "src/hyperdrive/steth/ReadWriteStEthHyperdrive"; - -export class ReadWriteStEthHyperdrive_v1_0_14 extends readWriteStEthHyperdriveMixin( - ReadWriteHyperdrive_v1_0_14 -) {} diff --git a/packages/hyperdrive-js-core/src/hyperdrive/utils/calculateAprFromPrice.test.ts b/packages/hyperdrive-js-core/src/hyperdrive/utils/calculateAprFromPrice.test.ts deleted file mode 100644 index a76928fcf..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/utils/calculateAprFromPrice.test.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { calculateAprFromPrice } from "src/hyperdrive/utils/calculateAprFromPrice"; -import { expect, test } from "vitest"; - -test("calculateAprFromPrice should return fixed rate an open long position is currently earning", async () => { - const rate = calculateAprFromPrice({ - positionDuration: 604800n, - baseAmount: 100000000000000000000n, - bondAmount: 100086217686058270990n, - }); - - expect(rate).toEqual(44956364873241333n); -}); diff --git a/packages/hyperdrive-js-core/src/hyperdrive/utils/calculateAprFromPrice.ts b/packages/hyperdrive-js-core/src/hyperdrive/utils/calculateAprFromPrice.ts deleted file mode 100644 index 11b273116..000000000 --- a/packages/hyperdrive-js-core/src/hyperdrive/utils/calculateAprFromPrice.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { fixed } from "@delvtech/fixed-point-wasm"; -import { hyperwasm } from "src/hyperwasm"; - -/** - * Calculate the APR of a position given the position duration, the amount paid - * in base, and the amount of bonds received. - */ -export function calculateAprFromPrice({ - positionDuration, - baseAmount, - bondAmount, -}: { - /** - * The position duration in seconds. - */ - positionDuration: bigint; - /** - * The amount paid in base. - */ - baseAmount: bigint; - /** - * The amount of bonds received. - */ - bondAmount: bigint; -}): bigint { - return hyperwasm.calcAprGivenFixedPrice({ - positionDuration, - price: fixed(baseAmount).div(bondAmount).bigint, - }); -} diff --git a/packages/hyperdrive-js-core/src/hyperwasm.ts b/packages/hyperdrive-js-core/src/hyperwasm.ts deleted file mode 100644 index 71fbae232..000000000 --- a/packages/hyperdrive-js-core/src/hyperwasm.ts +++ /dev/null @@ -1,5 +0,0 @@ -// The types resolve, but ESLINT still compalins, so we ignore the error. -// eslint-disable-next-line import/no-unresolved -import * as hyperwasm from "@delvtech/hyperdrive-wasm"; - -export { hyperwasm }; diff --git a/packages/hyperdrive-js-core/src/longs/calculateMatureLongYieldAfterFees.test.ts b/packages/hyperdrive-js-core/src/longs/calculateMatureLongYieldAfterFees.test.ts deleted file mode 100644 index 7ad8e9be7..000000000 --- a/packages/hyperdrive-js-core/src/longs/calculateMatureLongYieldAfterFees.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { expect, test } from "vitest"; - -import { calculateMatureLongYieldAfterFees } from "src/longs/calculateMatureLongYieldAfterFees"; - -test("calculateMatureLongYieldAfterFees should return the yield a mature long has earned after fees", async () => { - const value = calculateMatureLongYieldAfterFees({ - flatFee: 500000000000000n, - bondAmount: 1000862573239041776123n, - baseAmountPaid: 1000000000000000000000n, - decimals: 18, - }); - - expect(value).toEqual(362141952422255235n); -}); - -test("calculateMatureLongYieldAfterFees should work with mixed decimals", async () => { - const value = calculateMatureLongYieldAfterFees({ - flatFee: 500000000000000n, - bondAmount: 5000862n, - baseAmountPaid: 4000000n, - decimals: 6, - }); - - expect(value).toEqual(998362n); -}); diff --git a/packages/hyperdrive-js-core/src/longs/calculateMatureLongYieldAfterFees.ts b/packages/hyperdrive-js-core/src/longs/calculateMatureLongYieldAfterFees.ts deleted file mode 100644 index 1198f2a18..000000000 --- a/packages/hyperdrive-js-core/src/longs/calculateMatureLongYieldAfterFees.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { fixed } from "@delvtech/fixed-point-wasm"; - -export function calculateMatureLongYieldAfterFees({ - flatFee, - bondAmount, - baseAmountPaid, - decimals, -}: { - flatFee: bigint; - bondAmount: bigint; - baseAmountPaid: bigint; - decimals: number; -}): bigint { - // Flat fee is always 18 decimals - const poolFee = fixed(bondAmount, decimals).mul(flatFee).bigint; - return bondAmount - baseAmountPaid - poolFee; -} diff --git a/packages/hyperdrive-js-core/src/longs/types.ts b/packages/hyperdrive-js-core/src/longs/types.ts deleted file mode 100644 index 242ba269b..000000000 --- a/packages/hyperdrive-js-core/src/longs/types.ts +++ /dev/null @@ -1,29 +0,0 @@ -export interface Long { - assetId: bigint; - bondAmount: bigint; - /** - * Time in seconds when this long will mature - */ - maturity: bigint; - - baseAmountPaid: bigint; -} - -export interface ClosedLong extends Long { - // A closed long will include the baseAmount that was redeemed - baseAmount: bigint; - closedTimestamp: bigint; -} - -// TODO: This is a temporary type until all the long positions are migrated to the new format with details used for the long which includes all bond details if those are able to be calculated. -export interface OpenLongPositionReceived { - assetId: bigint; - value: bigint; - maturity: bigint; - details: Long | undefined; -} -// TODO: This is a temporary type for describing the OpenLongPositionReceived without the details field. This will be a position a user has received from another account and we will not be able to calculate the bond details for it. -export type OpenLongPositionReceivedWithoutDetails = Omit< - OpenLongPositionReceived, - "details" ->; diff --git a/packages/hyperdrive-js-core/src/lp/ClosedLpShares.ts b/packages/hyperdrive-js-core/src/lp/ClosedLpShares.ts deleted file mode 100644 index 44ce183dd..000000000 --- a/packages/hyperdrive-js-core/src/lp/ClosedLpShares.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface ClosedLpShares { - lpAmount: bigint; - baseAmount: bigint; - withdrawalShareAmount: bigint; - lpSharePrice: bigint; - closedTimestamp: bigint; -} diff --git a/packages/hyperdrive-js-core/src/lp/assetId.ts b/packages/hyperdrive-js-core/src/lp/assetId.ts deleted file mode 100644 index ca10f51c6..000000000 --- a/packages/hyperdrive-js-core/src/lp/assetId.ts +++ /dev/null @@ -1 +0,0 @@ -export const LP_ASSET_ID = 0n; diff --git a/packages/hyperdrive-js-core/src/model/ReadModel.ts b/packages/hyperdrive-js-core/src/model/ReadModel.ts deleted file mode 100644 index 81084113d..000000000 --- a/packages/hyperdrive-js-core/src/model/ReadModel.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Network } from "@delvtech/evm-client"; -import { Prettify } from "src/base/types"; -import { - ContractFactoryOptions, - ReadContractFactory, -} from "src/evm-client/contractFactory"; - -/** - * The base options required for all read models. - */ -export interface ReadModelOptions { - contractFactory: ReadContractFactory; - network: Network; - - /** - * An arbitrary name for the instance. This is for convenience only (e.g., for - * use as a display name or in logging) and has no affect on the model's - * behavior. - */ - debugName?: string; - - /** - * The earliest block to fetch events from. - */ - earliestBlock?: bigint; -} - -/** - * A base class for read-only models. - */ -export class ReadModel { - debugName: string; - network: Network; - contractFactory: ReadContractFactory; - - constructor({ - debugName, - network, - contractFactory, - earliestBlock, - }: ReadModelOptions) { - this.debugName = debugName ?? this.constructor.name; - this.network = network; - this.contractFactory = contractFactory; - - // Override the contract factory to ensure that events are fetched from the - // earliest block if necessary. - if (earliestBlock) { - this.contractFactory = (options) => { - const contract = contractFactory(options); - - // Override the getEvents method - const originalGetEvents = contract.getEvents; - contract.getEvents = async function (eventName, options) { - const _options = { ...options }; - const fromBlock = _options?.fromBlock; - const isBeforeEarliest = - typeof fromBlock === "bigint" && fromBlock < earliestBlock; - if (!fromBlock || fromBlock === "earliest" || isBeforeEarliest) { - _options.fromBlock = earliestBlock; - } - - return originalGetEvents(eventName, _options); - }; - - return contract; - }; - } - } -} - -/** - * The options required to create a read model that represents a specific - * contract. - */ -export type ReadContractModelOptions = Prettify< - // The abi is omitted because it's assumed the model will import its own ABI - ReadModelOptions & Omit ->; diff --git a/packages/hyperdrive-js-core/src/model/ReadWriteModel.ts b/packages/hyperdrive-js-core/src/model/ReadWriteModel.ts deleted file mode 100644 index 8647d4221..000000000 --- a/packages/hyperdrive-js-core/src/model/ReadWriteModel.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Prettify } from "src/base/types"; -import { - ContractFactoryOptions, - ReadWriteContractFactory, -} from "src/evm-client/contractFactory"; -import { ReadModel, ReadModelOptions } from "src/model/ReadModel"; - -/** - * The base options required for all read-write models. - */ -export interface ReadWriteModelOptions extends ReadModelOptions { - contractFactory: ReadWriteContractFactory; -} - -/** - * A base class for read-write models. - */ -export class ReadWriteModel extends ReadModel { - declare contractFactory: ReadWriteContractFactory; - - constructor(options: ReadWriteModelOptions) { - super(options); - } -} - -/** - * The options required to create a read-write model that represents a specific - * contract. - */ -export type ReadWriteContractModelOptions = Prettify< - // The abi is omitted because it's assumed the model will import its own ABI - ReadWriteModelOptions & Omit ->; diff --git a/packages/hyperdrive-js-core/src/pool/decodeAssetFromTransferSingleEventData.ts b/packages/hyperdrive-js-core/src/pool/decodeAssetFromTransferSingleEventData.ts deleted file mode 100644 index 2e5d3695b..000000000 --- a/packages/hyperdrive-js-core/src/pool/decodeAssetFromTransferSingleEventData.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AssetType, parseAssetType } from "src/pool/parseAssetType"; - -export function decodeAssetFromTransferSingleEventData( - eventData: `0x${string}`, -): { - assetType: AssetType; - /** - * in seconds - */ - timestamp: bigint; -} { - const cleanEventData = eventData.slice(2); - - const identifier = Number(cleanEventData.slice(0, 2)); - const assetType = parseAssetType(identifier); - // 62 hexadecimal digits (248 bits) = timestamp (in seconds) - const timestampPart = cleanEventData.slice(2, 64); - const timestamp = BigInt(parseInt(timestampPart, 16)); - return { - assetType, - timestamp, - }; -} diff --git a/packages/hyperdrive-js-core/src/pool/parseAssetType.ts b/packages/hyperdrive-js-core/src/pool/parseAssetType.ts deleted file mode 100644 index 73c8e6dae..000000000 --- a/packages/hyperdrive-js-core/src/pool/parseAssetType.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { HyperdriveSdkError } from "src/errors/HyperdriveSdkError"; - -export type AssetType = "LP" | "LONG" | "SHORT" | "WITHDRAWAL_SHARE"; -export function parseAssetType(identifier: number): AssetType { - if (identifier === 0) { - return "LP"; - } - if (identifier === 1) { - return "LONG"; - } - if (identifier === 2) { - return "SHORT"; - } - if (identifier === 3) { - return "WITHDRAWAL_SHARE"; - } - - throw new HyperdriveSdkError( - `parseAssetType(${identifier}) did not match a valid asset type.`, - ); -} diff --git a/packages/hyperdrive-js-core/src/pool/testing/PoolConfig.ts b/packages/hyperdrive-js-core/src/pool/testing/PoolConfig.ts deleted file mode 100644 index e33846877..000000000 --- a/packages/hyperdrive-js-core/src/pool/testing/PoolConfig.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ZERO_ADDRESS } from "src/base/constants"; -import { PoolConfig } from "src/pool/types"; - -const SEVEN_DAYS = 604_800n; -export const simplePoolConfig7Days: PoolConfig = { - baseToken: ZERO_ADDRESS, - vaultSharesToken: ZERO_ADDRESS, - governance: ZERO_ADDRESS, - feeCollector: ZERO_ADDRESS, - sweepCollector: ZERO_ADDRESS, - fees: { - curve: 100000000000000000n, - flat: 500000000000000n, - governanceLP: 10000000000000000n, - governanceZombie: 100000000000000000n, - }, - initialVaultSharePrice: 1000000000000000000n, - minimumShareReserves: 10000000000000000000n, - minimumTransactionAmount: 1000000000000000n, - timeStretch: 44463125629060298n, - positionDuration: SEVEN_DAYS, - checkpointDuration: 3600n, - linkerCodeHash: "0x".padEnd(66, "0") as `0x${string}`, - linkerFactory: ZERO_ADDRESS, - circuitBreakerDelta: 0n, - checkpointRewarder: ZERO_ADDRESS, -}; - -const THIRTY_DAYS = 2_592_000n; -export const simplePoolConfig30Days: PoolConfig = { - ...simplePoolConfig7Days, - positionDuration: THIRTY_DAYS, -}; diff --git a/packages/hyperdrive-js-core/src/pool/testing/PoolInfo.ts b/packages/hyperdrive-js-core/src/pool/testing/PoolInfo.ts deleted file mode 100644 index eab8000b6..000000000 --- a/packages/hyperdrive-js-core/src/pool/testing/PoolInfo.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { PoolInfo } from "src/pool/types"; - -export const simplePoolInfo: PoolInfo = { - shareReserves: 10000000000000000000000000n, - bondReserves: 10217899519533796120000000n, - vaultSharePrice: 1000000000000000000n, - longsOutstanding: 0n, - shortsOutstanding: 0n, - longExposure: 0n, - shareAdjustment: 0n, - longAverageMaturityTime: 0n, - shortAverageMaturityTime: 0n, - lpTotalSupply: 9999990000000000000000000n, - lpSharePrice: 1000000000000000000n, - withdrawalSharesProceeds: 0n, - withdrawalSharesReadyToWithdraw: 0n, - zombieBaseProceeds: 0n, - zombieShareReserves: 0n, -}; diff --git a/packages/hyperdrive-js-core/src/pool/types.ts b/packages/hyperdrive-js-core/src/pool/types.ts deleted file mode 100644 index b3cf3623d..000000000 --- a/packages/hyperdrive-js-core/src/pool/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FunctionReturn } from "@delvtech/evm-client"; -import { HyperdriveAbi } from "src/hyperdrive/base/abi"; - -export type PoolConfig = FunctionReturn; -export type PoolInfo = FunctionReturn; -export type MarketState = FunctionReturn; diff --git a/packages/hyperdrive-js-core/src/registry/ReadRegistry.ts b/packages/hyperdrive-js-core/src/registry/ReadRegistry.ts deleted file mode 100644 index b5ff6db2c..000000000 --- a/packages/hyperdrive-js-core/src/registry/ReadRegistry.ts +++ /dev/null @@ -1,200 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Address } from "abitype"; -import { ReadFactory } from "src/factory/ReadFactory"; -import { ReadHyperdrive } from "src/hyperdrive/base/ReadHyperdrive"; -import { ReadContractModelOptions, ReadModel } from "src/model/ReadModel"; -import { RegistryAbi, registryAbi } from "src/registry/abi"; -import { - FactoryInfoWithMetadata, - ReadInstanceInfoWithMetadata, -} from "src/registry/types"; - -export interface ReadRegistryOptions extends ReadContractModelOptions {} - -export class ReadRegistry extends ReadModel { - address: Address; - contract: CachedReadContract; - - constructor({ - debugName = "Hyperdrive Registry", - address, - cache, - namespace, - ...modelOptions - }: ReadRegistryOptions) { - super({ debugName, ...modelOptions }); - this.address = address; - this.contract = this.contractFactory({ - abi: registryAbi, - address, - cache, - namespace, - }); - } - - /** - * Get a {@linkcode ReadFactory} instance for each registered factory. - */ - async getFactories(options?: ContractReadOptions): Promise { - const factoryAddresses = await this.getFactoryAddresses(options); - return factoryAddresses.map( - (address) => - new ReadFactory({ - address, - contractFactory: this.contractFactory, - network: this.network, - }), - ); - } - - /** - * Get the address of all registered factories. - */ - async getFactoryAddresses(options?: ContractReadOptions): Promise { - const count = await this.contract.read("getNumberOfFactories", {}, options); - - if (count === 0n) { - return []; - } - - const readOnlyAddresses = await this.contract.read( - "getFactoriesInRange", - { - _startIndex: 0n, - _endIndex: count, - }, - options, - ); - return readOnlyAddresses.slice(); - } - - /** - * Gets the Hyperdrive factory info with associated metadata for a factory. - */ - async getFactoryInfo( - factoryAddress: Address, - options?: ContractReadOptions, - ): Promise { - const { kind, name, version, data } = await this.contract.read( - "getFactoryInfoWithMetadata", - { _factory: factoryAddress }, - options, - ); - return { - kind, - name, - version, - data: `0x${data.toString(16)}`, - }; - } - - /** - * Gets the Hyperdrive factory info with associated metadata for a list of - * factories - */ - async getFactoryInfos( - factoryAddresses: Address[], - options?: ContractReadOptions, - ): Promise { - const infos = await this.contract.read( - "getFactoryInfosWithMetadata", - { __factories: factoryAddresses }, - options, - ); - return infos.map(({ kind, name, version, data }) => ({ - kind, - name, - version, - data: `0x${data.toString(16)}`, - })); - } - - /** - * Get a {@linkcode ReadHyperdrive} instance for each Hyperdrive instance - * registered in the registry. - */ - async getInstances(options?: ContractReadOptions): Promise { - const hyperdriveAddresses = await this.getInstanceAddresses(options); - return hyperdriveAddresses.map( - (address) => - new ReadHyperdrive({ - address, - contractFactory: this.contractFactory, - network: this.network, - }), - ); - } - - /** - * Get the address of all Hyperdrive instances registered in the registry. - */ - async getInstanceAddresses( - options?: ContractReadOptions, - ): Promise { - const count = await this.contract.read("getNumberOfInstances", {}, options); - - if (count === 0n) { - return []; - } - - const readOnlyAddresses = await this.contract.read( - "getInstancesInRange", - { - _startIndex: 0n, - _endIndex: count, - }, - options, - ); - return readOnlyAddresses.slice(); - } - - /** - * Gets the instance info with associated metadata for an instance. - */ - async getInstanceInfo( - instanceAddress: Address, - options?: ContractReadOptions, - ): Promise { - const { kind, name, version, data, factory } = await this.contract.read( - "getInstanceInfoWithMetadata", - { _instance: instanceAddress }, - options, - ); - return { - kind, - name, - version, - data: `0x${data.toString(16)}`, - factory: new ReadFactory({ - address: factory, - contractFactory: this.contractFactory, - network: this.network, - }), - }; - } - - /** - * Gets the instance info with associated metadata for a list of instances. - */ - async getInstanceInfos( - instanceAddresses: Address[], - options?: ContractReadOptions, - ): Promise { - const infos = await this.contract.read( - "getInstanceInfosWithMetadata", - { __instances: instanceAddresses }, - options, - ); - return infos.map(({ kind, name, version, data, factory }) => ({ - kind, - name, - version, - data: `0x${data.toString(16)}`, - factory: new ReadFactory({ - address: factory, - contractFactory: this.contractFactory, - network: this.network, - }), - })); - } -} diff --git a/packages/hyperdrive-js-core/src/registry/ReadWriteRegistry.ts b/packages/hyperdrive-js-core/src/registry/ReadWriteRegistry.ts deleted file mode 100644 index a8cfad672..000000000 --- a/packages/hyperdrive-js-core/src/registry/ReadWriteRegistry.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { - CachedReadWriteContract, - ContractReadOptions, -} from "@delvtech/evm-client"; -import { Address } from "abitype"; -import { Override } from "src/base/types"; -import { ReadWriteContractFactory } from "src/evm-client/contractFactory"; -import { ReadWriteFactory } from "src/factory/ReadWriteFactory"; -import { ReadWriteHyperdrive } from "src/hyperdrive/base/ReadWriteHyperdrive"; -import { ReadWriteContractModelOptions } from "src/model/ReadWriteModel"; -import { ReadRegistry, ReadRegistryOptions } from "src/registry/ReadRegistry"; -import { RegistryAbi } from "src/registry/abi"; -import { ReadWriteInstanceInfoWithMetadata } from "src/registry/types"; - -export interface ReadWriteRegistryOptions - extends Override {} - -export class ReadWriteRegistry extends ReadRegistry { - declare contract: CachedReadWriteContract; - declare contractFactory: ReadWriteContractFactory; - - constructor(options: ReadWriteRegistryOptions) { - super(options); - } - - /** - * Get a {@linkcode ReadWriteFactory} instance for each registered factory. - */ - async getFactories( - options?: ContractReadOptions, - ): Promise { - const factoryAddresses = await this.getFactoryAddresses(options); - return factoryAddresses.map( - (address) => - new ReadWriteFactory({ - address, - contractFactory: this.contractFactory, - network: this.network, - }), - ); - } - - /** - * Get a {@linkcode ReadWriteHyperdrive} instance for each Hyperdrive instance - * registered in the registry. - */ - async getInstances( - options?: ContractReadOptions, - ): Promise { - const count = await this.contract.read("getNumberOfInstances", {}, options); - - if (count === 0n) { - return []; - } - - const hyperdriveAddresses = await this.contract.read( - "getInstancesInRange", - { - _startIndex: 0n, - _endIndex: count, - }, - options, - ); - return hyperdriveAddresses.map( - (address) => - new ReadWriteHyperdrive({ - address, - contractFactory: this.contractFactory, - network: this.network, - }), - ); - } - - async getInstanceInfo( - instanceAddress: Address, - options?: ContractReadOptions, - ): Promise { - const { kind, name, version, data, factory } = await this.contract.read( - "getInstanceInfoWithMetadata", - { _instance: instanceAddress }, - options, - ); - return { - kind, - name, - version, - data: `0x${data.toString(16)}`, - factory: new ReadWriteFactory({ - address: factory, - contractFactory: this.contractFactory, - network: this.network, - }), - }; - } - - /** - * Gets the instance info with associated metadata for a list of instances. - */ - async getInstanceInfos( - instanceAddresses: Address[], - options?: ContractReadOptions, - ): Promise { - const infos = await this.contract.read( - "getInstanceInfosWithMetadata", - { __instances: instanceAddresses }, - options, - ); - return infos.map(({ kind, name, version, data, factory }) => ({ - kind, - name, - version, - data: `0x${data.toString(16)}`, - factory: new ReadWriteFactory({ - address: factory, - contractFactory: this.contractFactory, - network: this.network, - }), - })); - } -} diff --git a/packages/hyperdrive-js-core/src/registry/abi.ts b/packages/hyperdrive-js-core/src/registry/abi.ts deleted file mode 100644 index 00aada691..000000000 --- a/packages/hyperdrive-js-core/src/registry/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IHyperdriveRegistry } from "@delvtech/hyperdrive-artifacts/IHyperdriveRegistry"; - -export const registryAbi = IHyperdriveRegistry.abi; -export type RegistryAbi = typeof registryAbi; diff --git a/packages/hyperdrive-js-core/src/registry/types.ts b/packages/hyperdrive-js-core/src/registry/types.ts deleted file mode 100644 index 61eaf513e..000000000 --- a/packages/hyperdrive-js-core/src/registry/types.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { FunctionReturn } from "@delvtech/evm-client"; -import { Override } from "src/base/types"; -import { ReadFactory } from "src/factory/ReadFactory"; -import { ReadWriteFactory } from "src/factory/ReadWriteFactory"; -import { RegistryAbi } from "src/registry/abi"; - -/** - * The info collected for each Hyperdrive factory along with the metadata - * associated with each instance. - */ -export type FactoryInfoWithMetadata = Override< - FunctionReturn, - { - /** - * Data about the factory. Different registries can utilize different - * schemas for these values. - */ - data: `0x${string}`; - } ->; - -/** - * The info related to each Hyperdrive instance along with the metadata - * associated with each instance. - */ -export type ReadInstanceInfoWithMetadata = Override< - FunctionReturn, - { - /** - * Data about the instance. Different registries can utilize different - * schemas for these values. - */ - data: `0x${string}`; - /** - * The factory that deployed this instance. - */ - factory: ReadFactory; - } ->; - -/** {@inheritDoc ReadInstanceInfoWithMetadata} */ -export type ReadWriteInstanceInfoWithMetadata = Override< - ReadInstanceInfoWithMetadata, - { - /** {@inheritDoc ReadInstanceInfoWithMetadata.factory} */ - factory: ReadWriteFactory; - } ->; diff --git a/packages/hyperdrive-js-core/src/shorts/calculateShortAccruedYield.test.ts b/packages/hyperdrive-js-core/src/shorts/calculateShortAccruedYield.test.ts deleted file mode 100644 index 52bc43e9d..000000000 --- a/packages/hyperdrive-js-core/src/shorts/calculateShortAccruedYield.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { calculateShortAccruedYield } from "src/shorts/calculateShortAccruedYield"; -import { expect, test } from "vitest"; - -test("calculateShortAccruedYield should return the yield a short has accrued since it was opened", async () => { - const value = calculateShortAccruedYield({ - bondAmount: 100_000n, - openVaultSharePrice: 1_008n, - endingVaultSharePrice: 1_010n, - decimals: 3, - }); - // If you opened a short position on 100 bonds at a previous checkpoint price - // of 1.008 and the current checkpoint price is 1.01, your accrued profit would - // be 0.20. - expect(value).toEqual(200n); -}); diff --git a/packages/hyperdrive-js-core/src/shorts/calculateShortAccruedYield.ts b/packages/hyperdrive-js-core/src/shorts/calculateShortAccruedYield.ts deleted file mode 100644 index cf0864066..000000000 --- a/packages/hyperdrive-js-core/src/shorts/calculateShortAccruedYield.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { fixed } from "@delvtech/fixed-point-wasm"; - -export function calculateShortAccruedYield({ - openVaultSharePrice, - endingVaultSharePrice, - bondAmount, - decimals, -}: { - openVaultSharePrice: bigint; - endingVaultSharePrice: bigint; - bondAmount: bigint; - decimals: number; -}): bigint { - // Current Accrued yield = (current share price - checkpoint share price) x - // number of bonds - const result = - // vaultSharePrice is always 18 decimals - fixed(endingVaultSharePrice - openVaultSharePrice).mul( - bondAmount, - decimals, - ).bigint; - return result; -} diff --git a/packages/hyperdrive-js-core/src/shorts/types.ts b/packages/hyperdrive-js-core/src/shorts/types.ts deleted file mode 100644 index 2e13f8a5b..000000000 --- a/packages/hyperdrive-js-core/src/shorts/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface Short { - hyperdriveAddress: `0x${string}`; - assetId: bigint; - bondAmount: bigint; - checkpointTime: bigint; - /** - * Time in seconds when this short will mature - */ - maturity: bigint; -} - -export interface ClosedShort extends Short { - baseAmountReceived: bigint; - closedTimestamp: bigint; -} - -export interface OpenShort extends Short { - baseAmountPaid: bigint; - baseProceeds: bigint; - fixedRatePaid: bigint; - - openedTimestamp: bigint; -} diff --git a/packages/hyperdrive-js-core/src/token/ReadToken.ts b/packages/hyperdrive-js-core/src/token/ReadToken.ts deleted file mode 100644 index 2b313b6e6..000000000 --- a/packages/hyperdrive-js-core/src/token/ReadToken.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { ReadModel } from "src/model/ReadModel"; - -export interface ReadToken extends ReadModel { - address: `0x${string}`; - - /** - * Get the name of this token - */ - getName(): Promise; - - /** - * Get the symbol for this token. - */ - getSymbol(): Promise; - - /** - * Get the number of decimal places this token uses. - */ - getDecimals(): Promise; - - /** - * Get the spending allowance of a given spender for a given owner of this - * token. - */ - getAllowance({ - owner, - spender, - options, - }: { - owner: `0x${string}`; - spender: `0x${string}`; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the token balance of a given address - */ - getBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise; -} diff --git a/packages/hyperdrive-js-core/src/token/ReadWriteToken.ts b/packages/hyperdrive-js-core/src/token/ReadWriteToken.ts deleted file mode 100644 index ebd3a1f2c..000000000 --- a/packages/hyperdrive-js-core/src/token/ReadWriteToken.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ContractWriteOptions } from "@delvtech/evm-client"; -import { ReadWriteContractFactory } from "src/evm-client/contractFactory"; -import { ReadWriteModel } from "src/model/ReadWriteModel"; -import { ReadToken } from "src/token/ReadToken"; - -export interface ReadWriteToken extends ReadToken, ReadWriteModel { - contractFactory: ReadWriteContractFactory; - - /** - * Give a spending allowance to a given spender. - * @param spender - The address of the spender. - * @param amount - The amount of tokens the spender can spend. - * @returns The transaction hash. - */ - approve({ - spender, - amount, - options, - }: { - owner?: `0x${string}`; - spender: `0x${string}`; - amount: bigint; - options?: ContractWriteOptions; - }): Promise<`0x${string}`>; -} diff --git a/packages/hyperdrive-js-core/src/token/erc20/ReadErc20.ts b/packages/hyperdrive-js-core/src/token/erc20/ReadErc20.ts deleted file mode 100644 index 7d2e94769..000000000 --- a/packages/hyperdrive-js-core/src/token/erc20/ReadErc20.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { ReadContractModelOptions, ReadModel } from "src/model/ReadModel"; -import { erc20Abi, Erc20Abi } from "src/token/erc20/abi"; -import { ReadToken } from "src/token/ReadToken"; - -export interface ReadErc20Options extends ReadContractModelOptions {} - -export class ReadErc20 extends ReadModel implements ReadToken { - contract: CachedReadContract; - - constructor({ - debugName = "ERC-20 Token", - address, - cache, - namespace, - ...modelOptions - }: ReadErc20Options) { - super({ debugName, ...modelOptions }); - this.contract = this.contractFactory({ - abi: erc20Abi, - address, - cache, - namespace, - }); - } - - get address(): `0x${string}` { - return this.contract.address; - } - get namespace(): string | undefined { - return this.contract.namespace; - } - - getName(): Promise { - return this.contract.read("name"); - } - - getSymbol(): Promise { - return this.contract.read("symbol"); - } - - getDecimals(): Promise { - return this.contract.read("decimals"); - } - - getAllowance({ - owner, - spender, - options, - }: { - owner: `0x${string}`; - spender: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.contract.read("allowance", { owner, spender }, options); - } - - getBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.contract.read("balanceOf", { account }, options); - } - - /** - * Get the total supply of the token. - */ - getTotalSupply(options?: ContractReadOptions): Promise { - return this.contract.read("totalSupply", {}, options); - } -} diff --git a/packages/hyperdrive-js-core/src/token/erc20/ReadWriteErc20.ts b/packages/hyperdrive-js-core/src/token/erc20/ReadWriteErc20.ts deleted file mode 100644 index 90fee23dc..000000000 --- a/packages/hyperdrive-js-core/src/token/erc20/ReadWriteErc20.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - CachedReadWriteContract, - ContractWriteOptions, -} from "@delvtech/evm-client"; -import { ReadWriteContractFactory } from "src/evm-client/contractFactory"; -import { syncCacheWithTransaction } from "src/evm-client/syncCacheWithTransaction"; -import { ReadWriteContractModelOptions } from "src/model/ReadWriteModel"; -import { ReadWriteToken } from "src/token/ReadWriteToken"; -import { ReadErc20 } from "src/token/erc20/ReadErc20"; -import { Erc20Abi } from "src/token/erc20/abi"; - -export interface ReadWriteErc20Options extends ReadWriteContractModelOptions {} - -export class ReadWriteErc20 extends ReadErc20 implements ReadWriteToken { - declare contract: CachedReadWriteContract; - declare contractFactory: ReadWriteContractFactory; - - constructor(options: ReadWriteErc20Options) { - super(options); - } - - @syncCacheWithTransaction({ - cacheEntries: [{ functionName: "allowance" }], - }) - async approve({ - spender, - amount, - options, - }: { - owner?: `0x${string}`; - spender: `0x${string}`; - amount: bigint; - options?: ContractWriteOptions; - }): Promise<`0x${string}`> { - const hash = await this.contract.write( - "approve", - { spender, amount }, - options, - ); - return hash; - } -} diff --git a/packages/hyperdrive-js-core/src/token/erc20/abi.ts b/packages/hyperdrive-js-core/src/token/erc20/abi.ts deleted file mode 100644 index 1d5e35c1c..000000000 --- a/packages/hyperdrive-js-core/src/token/erc20/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IERC20 } from "@delvtech/hyperdrive-artifacts/IERC20"; - -export const erc20Abi = IERC20.abi; -export type Erc20Abi = typeof erc20Abi; diff --git a/packages/hyperdrive-js-core/src/token/erc4626/ReadErc4626.ts b/packages/hyperdrive-js-core/src/token/erc4626/ReadErc4626.ts deleted file mode 100644 index 935e5296f..000000000 --- a/packages/hyperdrive-js-core/src/token/erc4626/ReadErc4626.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; -import { Erc4626Abi, erc4626Abi } from "src/token/erc4626/abi"; - -export class ReadErc4626 extends readErc4626Mixin(ReadErc20) {} - -/** - * @internal - */ -export interface ReadErc4626Mixin { - erc4626Contract: CachedReadContract; - - /** - * Get the total supply of assets in the vault. - */ - getTotalAssets(options?: ContractReadOptions): Promise; - - /** - * Convert a shares amount to an assets amount. - */ - convertToAssets({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise; - - /** - * Convert an assets amount to a shares amount. - */ - convertToShares({ - assetsAmount, - options, - }: { - assetsAmount: bigint; - options?: ContractReadOptions; - }): Promise; -} - -/** - * @internal - */ -export function readErc4626Mixin>( - Base: T, -): Constructor & T { - return class extends Base implements ReadErc4626Mixin { - erc4626Contract: CachedReadContract; - - constructor(...[options]: any[]) { - const { - debugName = "ERC-4626 Tokenized Vault", - address, - cache, - namespace, - ...modelOptions - } = options as ReadErc20Options; - super({ debugName, address, cache, namespace, ...modelOptions }); - this.erc4626Contract = this.contractFactory({ - abi: erc4626Abi, - address, - cache, - namespace, - }); - } - - getTotalAssets(options?: ContractReadOptions): Promise { - return this.erc4626Contract.read("totalAssets", {}, options); - } - - convertToAssets({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.erc4626Contract.read( - "convertToAssets", - { shares: sharesAmount }, - options, - ); - } - - convertToShares({ - assetsAmount, - options, - }: { - assetsAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.erc4626Contract.read( - "convertToShares", - { assets: assetsAmount }, - options, - ); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/token/erc4626/ReadMockErc4626.ts b/packages/hyperdrive-js-core/src/token/erc4626/ReadMockErc4626.ts deleted file mode 100644 index 17809c137..000000000 --- a/packages/hyperdrive-js-core/src/token/erc4626/ReadMockErc4626.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { mockErc4626Abi, MockErc4626Abi } from "src/token/erc4626/abi"; -import { ReadErc4626 } from "src/token/erc4626/ReadErc4626"; - -export class ReadMockErc4626 extends readMockErc4626Mixin(ReadErc4626) {} - -/** - * @internal - */ -export interface ReadMockErc4626Mixin { - mockErc4626Contract: CachedReadContract; - - /** - * Get the rate of the vault. - */ - getRate(options?: ContractReadOptions): Promise; -} - -/** - * @internal - */ -export function readMockErc4626Mixin>( - BaseReadErc4626: T, -): Constructor & T { - return class extends BaseReadErc4626 implements ReadMockErc4626Mixin { - mockErc4626Contract: CachedReadContract; - - constructor(...[options]: any[]) { - const { - debugName = "Mock ERC-4626 Tokenized Vault", - address, - cache, - namespace, - ...modelOptions - } = options as ConstructorParameters[0]; - super({ debugName, address, cache, namespace, ...modelOptions }); - this.mockErc4626Contract = this.contractFactory({ - abi: mockErc4626Abi, - address, - cache, - namespace, - }); - } - - /** - * Get the rate of the vault. - */ - getRate(options?: ContractReadOptions): Promise { - return this.mockErc4626Contract.read("getRate", {}, options); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/token/erc4626/ReadWriteErc4626.ts b/packages/hyperdrive-js-core/src/token/erc4626/ReadWriteErc4626.ts deleted file mode 100644 index 5762a88b9..000000000 --- a/packages/hyperdrive-js-core/src/token/erc4626/ReadWriteErc4626.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CachedReadWriteContract } from "@delvtech/evm-client"; -import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; -import { readErc4626Mixin } from "src/token/erc4626/ReadErc4626"; -import { Erc4626Abi } from "src/token/erc4626/abi"; - -export class ReadWriteErc4626 extends readErc4626Mixin(ReadWriteErc20) { - declare erc4626Contract: CachedReadWriteContract; -} diff --git a/packages/hyperdrive-js-core/src/token/erc4626/ReadWriteMockErc4626.ts b/packages/hyperdrive-js-core/src/token/erc4626/ReadWriteMockErc4626.ts deleted file mode 100644 index 86dca9f4e..000000000 --- a/packages/hyperdrive-js-core/src/token/erc4626/ReadWriteMockErc4626.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { - CachedReadWriteContract, - ContractWriteOptions, -} from "@delvtech/evm-client"; -import { MockErc4626Abi } from "src/token/erc4626/abi"; -import { readMockErc4626Mixin } from "src/token/erc4626/ReadMockErc4626"; -import { ReadWriteErc4626 } from "src/token/erc4626/ReadWriteErc4626"; - -export class ReadWriteMockErc4626 extends readMockErc4626Mixin( - ReadWriteErc4626, -) { - declare mockErc4626Contract: CachedReadWriteContract; - - /** - * Mint shares. - */ - mint({ - receiver, - sharesAmount, - options, - }: { - receiver: `0x${string}`; - sharesAmount: bigint; - options?: ContractWriteOptions; - }): Promise<`0x${string}`> { - return this.mockErc4626Contract.write( - "mint", - { - _receiver: receiver, - _shares: sharesAmount, - }, - options, - ); - } - - /** - * Set the vault's rate. - */ - setRate({ - rate, - options, - }: { - rate: bigint; - options?: ContractWriteOptions; - }): Promise<`0x${string}`> { - return this.mockErc4626Contract.write("setRate", { _rate_: rate }, options); - } -} diff --git a/packages/hyperdrive-js-core/src/token/erc4626/abi.ts b/packages/hyperdrive-js-core/src/token/erc4626/abi.ts deleted file mode 100644 index 374dfc855..000000000 --- a/packages/hyperdrive-js-core/src/token/erc4626/abi.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { IERC4626 } from "@delvtech/hyperdrive-artifacts/IERC4626"; -import { MockERC4626 } from "@delvtech/hyperdrive-artifacts/MockERC4626"; - -export const erc4626Abi = IERC4626.abi; -export type Erc4626Abi = typeof erc4626Abi; - -export const mockErc4626Abi = MockERC4626.abi; -export type MockErc4626Abi = typeof mockErc4626Abi; diff --git a/packages/hyperdrive-js-core/src/token/eth/ReadEth.ts b/packages/hyperdrive-js-core/src/token/eth/ReadEth.ts deleted file mode 100644 index 4fbc627d7..000000000 --- a/packages/hyperdrive-js-core/src/token/eth/ReadEth.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { ContractReadOptions } from "@delvtech/evm-client"; -import { ReadModel, ReadModelOptions } from "src/model/ReadModel"; -import { ReadToken } from "src/token/ReadToken"; - -export interface ReadEthOptions extends ReadModelOptions {} - -export class ReadEth extends ReadModel implements ReadToken { - static address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" as const; - address = ReadEth.address; - - constructor({ debugName = "ETH", ...restOptions }: ReadEthOptions) { - super({ debugName, ...restOptions }); - } - - async getName(): Promise { - return "Ethereum"; - } - - async getSymbol(): Promise { - return "ETH"; - } - - async getDecimals(): Promise { - return 18; - } - - /** - * @remarks - * Native ETH does not require allowances as it is sent directly as the - * message value when used in Hyperdrive. This method returns a maximum - * value to indicate the absence of an allowance mechanism for ETH. - */ - async getAllowance(): Promise { - // Max value for uint256 - return 2n ** 256n - 1n; - } - - async getBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.network.getBalance(account, options); - } -} diff --git a/packages/hyperdrive-js-core/src/token/eth/ReadWriteEth.ts b/packages/hyperdrive-js-core/src/token/eth/ReadWriteEth.ts deleted file mode 100644 index f7f26a6f7..000000000 --- a/packages/hyperdrive-js-core/src/token/eth/ReadWriteEth.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { MethodNotImplementedError } from "src/errors/MethodNotImplementedError"; -import { ReadWriteContractFactory } from "src/evm-client/contractFactory"; -import { ReadWriteModelOptions } from "src/model/ReadWriteModel"; -import { ReadWriteToken } from "src/token/ReadWriteToken"; -import { ReadEth } from "src/token/eth/ReadEth"; - -export interface ReadWriteEthOptions extends ReadWriteModelOptions {} - -export class ReadWriteEth extends ReadEth implements ReadWriteToken { - declare contractFactory: ReadWriteContractFactory; - - constructor(options: ReadWriteEthOptions) { - super(options); - } - - /** - * This method is not available for the native ETH token. - * @throws A {@linkcode MethodNotImplementedError} - */ - async approve(): Promise<`0x${string}`> { - throw new MethodNotImplementedError({ - objectName: this.debugName, - methodName: "approve", - }); - } -} diff --git a/packages/hyperdrive-js-core/src/token/lseth/ReadLsEth.ts b/packages/hyperdrive-js-core/src/token/lseth/ReadLsEth.ts deleted file mode 100644 index 0f9d06c05..000000000 --- a/packages/hyperdrive-js-core/src/token/lseth/ReadLsEth.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; -import { LsEthAbi, lsEthAbi } from "src/token/lseth/abi"; - -export class ReadLsEth extends readLsEthMixin(ReadErc20) {} - -/** - * @internal - */ -export interface ReadLsEthMixin { - lsEthContract: CachedReadContract; - - /** - * Get the total supply of underlying eth in the lsEth contract. - */ - getTotalEthSupply(options?: ContractReadOptions): Promise; - - /** - * Get the underlying eth balance of an account. - */ - getEthBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the amount of ETH that would be received for a given number of shares. - */ - getEthBalanceFromShares({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the number of shares that would be received for a given amount of ETH. - */ - getSharesFromEthBalance({ - ethBalance, - options, - }: { - ethBalance: bigint; - options?: ContractReadOptions; - }): Promise; -} - -/** - * @internal - */ -export function readLsEthMixin>( - Base: T, -): Constructor & T { - return class extends Base implements ReadLsEthMixin { - lsEthContract: CachedReadContract; - - constructor(...[options]: any[]) { - const { contractFactory, address, cache, namespace } = - options as ReadErc20Options; - super({ address, contractFactory, cache, namespace }); - this.lsEthContract = contractFactory({ - abi: lsEthAbi, - address, - cache, - namespace, - }); - } - - async getTotalEthSupply(options?: ContractReadOptions): Promise { - return this.lsEthContract.read("totalUnderlyingSupply", {}, options); - } - - async getEthBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.lsEthContract.read( - "balanceOfUnderlying", - { _owner: account }, - options, - ); - } - - async getEthBalanceFromShares({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.lsEthContract.read( - "underlyingBalanceFromShares", - { - _shares: sharesAmount, - }, - options, - ); - } - - async getSharesFromEthBalance({ - ethBalance, - options, - }: { - ethBalance: bigint; - options?: ContractReadOptions; - }): Promise { - return this.lsEthContract.read( - "sharesFromUnderlyingBalance", - { - _underlyingAssetAmount: ethBalance, - }, - options, - ); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/token/lseth/ReadWriteLsEth.ts b/packages/hyperdrive-js-core/src/token/lseth/ReadWriteLsEth.ts deleted file mode 100644 index 622c91bac..000000000 --- a/packages/hyperdrive-js-core/src/token/lseth/ReadWriteLsEth.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CachedReadWriteContract } from "@delvtech/evm-client"; -import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; -import { readLsEthMixin } from "src/token/lseth/ReadLsEth"; -import { LsEthAbi } from "src/token/lseth/abi"; - -export class ReadWriteLsEth extends readLsEthMixin(ReadWriteErc20) { - declare lsEthContract: CachedReadWriteContract; -} diff --git a/packages/hyperdrive-js-core/src/token/lseth/abi.ts b/packages/hyperdrive-js-core/src/token/lseth/abi.ts deleted file mode 100644 index 5d936fa8c..000000000 --- a/packages/hyperdrive-js-core/src/token/lseth/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IRiverV1 } from "@delvtech/hyperdrive-artifacts/IRiverV1"; - -export const lsEthAbi = IRiverV1.abi; -export type LsEthAbi = typeof lsEthAbi; diff --git a/packages/hyperdrive-js-core/src/token/reth/ReadREth.ts b/packages/hyperdrive-js-core/src/token/reth/ReadREth.ts deleted file mode 100644 index 5814887bd..000000000 --- a/packages/hyperdrive-js-core/src/token/reth/ReadREth.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; -import { REthAbi, rEthAbi } from "src/token/reth/abi"; - -export class ReadREth extends readREthMixin(ReadErc20) {} - -/** - * @internal - */ -export interface ReadREthMixin { - rEthContract: CachedReadContract; - - /** - * Get the total supply of underlying eth in the rETH contract. - */ - getTotalEthSupply(options?: ContractReadOptions): Promise; - - /** - * Get the underlying eth balance of an account. - */ - getEthBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the amount of ETH backing an amount of rETH. - */ - getEthValue({ - rEthAmount, - options, - }: { - rEthAmount: bigint; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the amount of rETH backing an amount of ETH. - */ - getREthValue({ - ethAmount, - options, - }: { - ethAmount: bigint; - options?: ContractReadOptions; - }): Promise; -} - -/** - * @internal - */ -export function readREthMixin>( - Base: T, -): Constructor & T { - return class extends Base implements ReadREthMixin { - rEthContract: CachedReadContract; - - constructor(...[options]: any[]) { - const { contractFactory, address, cache, namespace } = - options as ReadErc20Options; - super({ address, contractFactory, cache, namespace }); - this.rEthContract = contractFactory({ - abi: rEthAbi, - address, - cache, - namespace, - }); - } - - async getTotalEthSupply(options?: ContractReadOptions): Promise { - return this.rEthContract.read("getTotalCollateral", {}, options); - } - - async getEthBalanceOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - const rEthBalance = await this.getBalanceOf({ account, options }); - return this.rEthContract.read( - "getEthValue", - { _rethAmount: rEthBalance }, - options, - ); - } - - async getEthValue({ - rEthAmount, - options, - }: { - rEthAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.rEthContract.read( - "getEthValue", - { - _rethAmount: rEthAmount, - }, - options, - ); - } - - async getREthValue({ - ethAmount, - options, - }: { - ethAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.rEthContract.read( - "getRethValue", - { - _ethAmount: ethAmount, - }, - options, - ); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/token/reth/ReadWriteREth.ts b/packages/hyperdrive-js-core/src/token/reth/ReadWriteREth.ts deleted file mode 100644 index 58dcb09b6..000000000 --- a/packages/hyperdrive-js-core/src/token/reth/ReadWriteREth.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CachedReadWriteContract } from "@delvtech/evm-client"; -import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; -import { readREthMixin } from "src/token/reth/ReadREth"; -import { REthAbi } from "src/token/reth/abi"; - -export class ReadWriteREth extends readREthMixin(ReadWriteErc20) { - declare rEthContract: CachedReadWriteContract; -} diff --git a/packages/hyperdrive-js-core/src/token/reth/abi.ts b/packages/hyperdrive-js-core/src/token/reth/abi.ts deleted file mode 100644 index 50f68b410..000000000 --- a/packages/hyperdrive-js-core/src/token/reth/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { IRocketTokenRETH } from "@delvtech/hyperdrive-artifacts/IRocketTokenRETH"; - -export const rEthAbi = IRocketTokenRETH.abi; -export type REthAbi = typeof rEthAbi; diff --git a/packages/hyperdrive-js-core/src/token/steth/ReadStEth.ts b/packages/hyperdrive-js-core/src/token/steth/ReadStEth.ts deleted file mode 100644 index b3bd469ff..000000000 --- a/packages/hyperdrive-js-core/src/token/steth/ReadStEth.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { CachedReadContract, ContractReadOptions } from "@delvtech/evm-client"; -import { Constructor } from "src/base/types"; -import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; -import { StEthAbi, stEthAbi } from "src/token/steth/abi"; - -export class ReadStEth extends readStEthMixin(ReadErc20) {} - -/** - * @internal - */ -export interface ReadStEthMixin { - stEthContract: CachedReadContract; - - /** - * Get the number of stETH shares held by an account. - */ - getSharesOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the amount of pooled ETH (stETH) that would be received for a given - * number of shares. - */ - getPooledEthByShares({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise; - - /** - * Get the number of shares that would be received for a given amount of - * pooled ETH (stETH). - */ - getSharesByPooledEth({ - ethAmount, - options, - }: { - ethAmount: bigint; - options?: ContractReadOptions; - }): Promise; -} - -/** - * @internal - */ -export function readStEthMixin>( - Base: T, -): Constructor & T { - return class extends Base implements ReadStEthMixin { - stEthContract: CachedReadContract; - - constructor(...[options]: any[]) { - const { - debugName = "stETH Token", - address, - cache, - namespace, - ...modelOptions - } = options as ReadErc20Options; - super({ debugName, address, cache, namespace, ...modelOptions }); - this.stEthContract = this.contractFactory({ - abi: stEthAbi, - address, - cache, - namespace, - }); - } - - getSharesOf({ - account, - options, - }: { - account: `0x${string}`; - options?: ContractReadOptions; - }): Promise { - return this.stEthContract.read( - "sharesOf", - { _account: account }, - options, - ); - } - - getPooledEthByShares({ - sharesAmount, - options, - }: { - sharesAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.stEthContract.read( - "getPooledEthByShares", - { _sharesAmount: sharesAmount }, - options, - ); - } - - getSharesByPooledEth({ - ethAmount, - options, - }: { - ethAmount: bigint; - options?: ContractReadOptions; - }): Promise { - return this.stEthContract.read( - "getSharesByPooledEth", - { _ethAmount: ethAmount }, - options, - ); - } - }; -} diff --git a/packages/hyperdrive-js-core/src/token/steth/ReadWriteStEth.ts b/packages/hyperdrive-js-core/src/token/steth/ReadWriteStEth.ts deleted file mode 100644 index 24b25aec6..000000000 --- a/packages/hyperdrive-js-core/src/token/steth/ReadWriteStEth.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CachedReadWriteContract } from "@delvtech/evm-client"; -import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; -import { StEthAbi } from "src/token/steth/abi"; -import { readStEthMixin } from "src/token/steth/ReadStEth"; - -export class ReadWriteStEth extends readStEthMixin(ReadWriteErc20) { - declare stEthContract: CachedReadWriteContract; -} diff --git a/packages/hyperdrive-js-core/src/token/steth/abi.ts b/packages/hyperdrive-js-core/src/token/steth/abi.ts deleted file mode 100644 index 9ca120fd4..000000000 --- a/packages/hyperdrive-js-core/src/token/steth/abi.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { ILido } from "@delvtech/hyperdrive-artifacts/ILido"; - -export const stEthAbi = ILido.abi; -export type StEthAbi = typeof stEthAbi; diff --git a/packages/hyperdrive-js-core/src/withdrawalShares/RedeemedWithdrawalShares.ts b/packages/hyperdrive-js-core/src/withdrawalShares/RedeemedWithdrawalShares.ts deleted file mode 100644 index b62e8a608..000000000 --- a/packages/hyperdrive-js-core/src/withdrawalShares/RedeemedWithdrawalShares.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface RedeemedWithdrawalShares { - hyperdriveAddress: `0x${string}`; - withdrawalShareAmount: bigint; - baseAmount: bigint; - redeemedTimestamp: bigint; -} diff --git a/packages/hyperdrive-js-core/src/withdrawalShares/assetId.ts b/packages/hyperdrive-js-core/src/withdrawalShares/assetId.ts deleted file mode 100644 index 807a2cbf1..000000000 --- a/packages/hyperdrive-js-core/src/withdrawalShares/assetId.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const WITHDRAW_SHARES_ASSET_ID = - 0x0300000000000000000000000000000000000000000000000000000000000000n; diff --git a/packages/hyperdrive-js-core/tsconfig.json b/packages/hyperdrive-js-core/tsconfig.json deleted file mode 100644 index f92f27a67..000000000 --- a/packages/hyperdrive-js-core/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "@hyperdrive/tsconfig/base.json", - "include": ["src"], - "exclude": ["node_modules"], - "compilerOptions": { - "rootDir": ".", - "baseUrl": ".", - "moduleResolution": "Bundler", - "experimentalDecorators": true, - "target": "esnext", - "module": "ESNext", - "paths": { - "src/*": ["src/*"] - }, - "resolveJsonModule": true - } -} diff --git a/packages/hyperdrive-js-core/tsup.config.ts b/packages/hyperdrive-js-core/tsup.config.ts deleted file mode 100644 index 41747e1e2..000000000 --- a/packages/hyperdrive-js-core/tsup.config.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - // Splitting the entry points in foundational packages like this makes it - // easier for wrapper packages to selectively re-export `*` from some entry - // points and while augmenting or modifying others. - entry: [ - "src/exports/index.ts", - - "src/exports/contract.ts", - "src/exports/errors.ts", - "src/exports/model.ts", - "src/exports/utils.ts", - - // factory - "src/exports/factory/index.ts", - "src/exports/factory/model.ts", - "src/exports/factory/rest.ts", - - // hyperdrive - "src/exports/hyperdrive/index.ts", - "src/exports/hyperdrive/model.ts", - "src/exports/hyperdrive/rest.ts", - - // registry - "src/exports/registry/index.ts", - "src/exports/registry/model.ts", - "src/exports/registry/rest.ts", - - // token - "src/exports/token/index.ts", - "src/exports/token/model.ts", - "src/exports/token/rest.ts", - - // v1.0.14 - "src/exports/v1.0.14/index.ts", - "src/exports/v1.0.14/hyperdrive/index.ts", - "src/exports/v1.0.14/hyperdrive/model.ts", - "src/exports/v1.0.14/hyperdrive/rest.ts", - ], - format: ["esm"], - dts: true, - clean: true, - minify: true, - cjsInterop: true, -}); diff --git a/packages/hyperdrive-js-core/typedoc.json b/packages/hyperdrive-js-core/typedoc.json deleted file mode 100644 index 73462b98e..000000000 --- a/packages/hyperdrive-js-core/typedoc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://typedoc.org/schema.json", - "entryPoints": ["./src/index.ts"], - "name": "Hyperdrive SDK", - "titleLink": "Hyperdrive SDK", - "excludePrivate": true, - "excludeProtected": true, - "excludeExternals": true, - "excludeInternal": true -} diff --git a/packages/hyperdrive-js-core/vite.config.ts b/packages/hyperdrive-js-core/vite.config.ts deleted file mode 100644 index d03cfd3d0..000000000 --- a/packages/hyperdrive-js-core/vite.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import tsconfigPaths from "vite-tsconfig-paths"; -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - plugins: [tsconfigPaths()], - test: { - alias: { - "@delvtech/hyperdrive-wasm?v0.14.2": "@delvtech/hyperdrive-wasm", - }, - }, -}); diff --git a/packages/hyperdrive-js/package.json b/packages/hyperdrive-js/package.json index db5503577..4f07dacff 100644 --- a/packages/hyperdrive-js/package.json +++ b/packages/hyperdrive-js/package.json @@ -11,7 +11,7 @@ "typecheck": "tsc --noEmit" }, "peerDependencies": { - "@delvtech/drift": "^0.0.1-beta.11" + "@delvtech/drift": "^1.0.0" }, "dependencies": { "@delvtech/fixed-point-wasm": "^0.0.8", @@ -22,7 +22,7 @@ "semver": "^7.6.3" }, "devDependencies": { - "@delvtech/drift": "^0.0.1-beta.11", + "@delvtech/drift": "^1.0.0", "@hyperdrive/eslint-config": "*", "@hyperdrive/prettier-config": "*", "@hyperdrive/tsconfig": "*", @@ -37,7 +37,7 @@ "sinon": "^18.0.0", "tsconfig-paths": "^4.2.0", "tsup": "^8.2.3", - "typescript": "^5.5.4", + "typescript": "^5.9.2", "vite-tsconfig-paths": "^4.3.2", "vitest": "^2.0.4" }, diff --git a/packages/hyperdrive-js/src/HyperdriveSdkError.ts b/packages/hyperdrive-js/src/HyperdriveSdkError.ts index 32f6a41f8..4da2f742b 100644 --- a/packages/hyperdrive-js/src/HyperdriveSdkError.ts +++ b/packages/hyperdrive-js/src/HyperdriveSdkError.ts @@ -1,7 +1,7 @@ import { DriftError } from "@delvtech/drift"; export class HyperdriveSdkError extends DriftError { - constructor(error: string, options?: ErrorOptions) { + constructor(error: unknown, options?: ErrorOptions) { super(error, { ...options, prefix: "ᛋ ", diff --git a/packages/hyperdrive-js/src/base/assertNever.ts b/packages/hyperdrive-js/src/base/assertNever.ts index d3fe8b7ae..dfd0544b3 100644 --- a/packages/hyperdrive-js/src/base/assertNever.ts +++ b/packages/hyperdrive-js/src/base/assertNever.ts @@ -24,7 +24,8 @@ import { HyperdriveSdkError } from "src/HyperdriveSdkError"; * // Use `assertNever(arg, true)` instead to fail silently. * return assertNever(arg); * } - */ export function assertNever(value: never, noThrow?: boolean): never { + */ +export function assertNever(value: never, noThrow?: boolean): never { if (noThrow) { return value; } diff --git a/packages/hyperdrive-js/src/base/constants.ts b/packages/hyperdrive-js/src/base/constants.ts index e26a49b3b..a73cd6381 100644 --- a/packages/hyperdrive-js/src/base/constants.ts +++ b/packages/hyperdrive-js/src/base/constants.ts @@ -3,6 +3,4 @@ export const SECONDS_PER_YEAR = 31536000n; export const MAX_UINT256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n; -export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; - export const NULL_BYTES = "0x"; diff --git a/packages/hyperdrive-js/src/base/getEventsWithSplitAndRetry.ts b/packages/hyperdrive-js/src/base/getEventsWithSplitAndRetry.ts new file mode 100644 index 000000000..b0950a21e --- /dev/null +++ b/packages/hyperdrive-js/src/base/getEventsWithSplitAndRetry.ts @@ -0,0 +1,183 @@ +import { + Abi, + Drift, + EventLog, + EventName, + GetEventsParams, + type RangeBlock, +} from "@delvtech/drift"; +import { HyperdriveSdkError } from "src/HyperdriveSdkError"; + +class EventFetchError extends HyperdriveSdkError { + constructor(chainId: number, chunkedParams: GetEventsParams[]) { + const { event, address } = chunkedParams[0]; + let message = `Failed to fetch "${event}" events from ${address} on chain ${chainId}.`; + message += "\n Requested block ranges:"; + for (const params of chunkedParams) { + message += `\n - ${params.fromBlock} to ${params.toBlock}`; + } + super(message); + } +} + +/** + * @internal + */ +export async function getEventsWithSplitAndRetry< + A extends Abi, + E extends EventName, +>({ + params, + drift, + epochBlock = 0n, + retries = 3, + backoff = (attempt: number) => 2 ** attempt * 100, +}: { + params: GetEventsParams; + drift: Drift; + epochBlock?: bigint; + /** + * The maximum number of times to split failed event requests into smaller + * requests before giving up. + * + * **Caution:** this has the potential to increase the number of requests + * _exponentially_, so it should be used with care. + * + * @default 3 + */ + retries?: number; + /** + * The time (in milliseconds) to wait before each retry attempt. + * + * @default 2 ** attempt * 100 + */ + backoff?: number | ((attempt: number) => number); +}): Promise[]> { + const backoffFn = typeof backoff === "number" ? () => backoff : backoff; + const chainId = await drift.getChainId(); + const rangeMap = new Map[]>(); + let chunks: GetEventsParams[] = [params]; + + for (let attempt = 0; attempt <= retries; attempt++) { + const nextChunks: GetEventsParams[][] = []; + let hadErrors = false; + + const events = await Promise.all( + chunks.map(async (params, i) => { + // 1. Check the range map (fast) + const rangeKey = [params.fromBlock, params.toBlock].join("-"); + let cachedEvents = rangeMap.get(rangeKey); + if (cachedEvents) { + nextChunks[i] = [params]; + return cachedEvents; + } + + // 2. Check the cache (most-likely fast, but cache dependent) + cachedEvents = await drift.cache.getEvents(params); + if (cachedEvents) { + rangeMap.set(rangeKey, cachedEvents); + nextChunks[i] = [params]; + return cachedEvents; + } + + // 3. Try to fetch (network dependent) + try { + const events = await drift.adapter.getEvents(params); + rangeMap.set(rangeKey, events); + drift.cache.preloadEvents({ + ...params, + value: events, + }); + nextChunks[i] = [params]; + return events; + } catch { + // 4. Split on failure + hadErrors = true; + const halves = await splitParams(drift, params, epochBlock); + if (!halves) { + // Throw if the params can't be split further + throw new EventFetchError(chainId, chunks); + } + nextChunks[i] = halves; + return []; + } + }), + ); + + // Return the events if there were no errors + if (!hadErrors) { + return events.flat(); + } + + const error = new EventFetchError(chainId, chunks); + + // Throw if this was the last attempt + if (attempt === retries) { + throw error; + } + + chunks = nextChunks.flat(); + let warning = error.message; + warning += `\n Number of attempts left: ${retries - attempt}`; + warning += `\n Retrying with ${chunks.length} requests...`; + console.warn(warning); + + // Exponential backoff before retrying + const retryDelay = backoffFn(attempt); + const jitteredRetryDelay = Math.floor(retryDelay * (0.5 + Math.random())); + await sleep(jitteredRetryDelay); + } + + throw new EventFetchError(chainId, [params]); +} + +async function resolveRangeBlock( + drift: Drift, + block: RangeBlock | undefined, + epochBlock = 0n, +): Promise { + if (typeof block === "bigint") { + return block; + } + if (block === "earliest") { + return epochBlock; + } + const { number } = await drift.getBlock(block); + return number; +} + +async function splitParams>( + drift: Drift, + { fromBlock, toBlock, ...restParams }: GetEventsParams, + epochBlock = 0n, +): Promise<[GetEventsParams, GetEventsParams] | null> { + if (fromBlock === toBlock) { + return null; + } + fromBlock = await resolveRangeBlock(drift, fromBlock, epochBlock); + if (fromBlock === undefined) { + return null; + } + toBlock = await resolveRangeBlock(drift, toBlock, epochBlock); + if (toBlock === undefined || fromBlock >= toBlock) { + return null; + } + const blockRangeSize = toBlock - fromBlock; + const middleBlock = fromBlock + blockRangeSize / 2n; + return [ + { + fromBlock, + toBlock: middleBlock, + ...restParams, + }, + { + fromBlock: middleBlock + 1n, + toBlock, + ...restParams, + }, + ]; +} + +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/packages/hyperdrive-js/src/base/types.ts b/packages/hyperdrive-js/src/base/types.ts index 13e33b13b..1d6d38fef 100644 --- a/packages/hyperdrive-js/src/base/types.ts +++ b/packages/hyperdrive-js/src/base/types.ts @@ -1,3 +1,5 @@ +import type { Eval } from "@delvtech/drift"; + /** * A generic constructor type. */ @@ -5,3 +7,125 @@ export type Constructor< TInstanceType = any, TArgs extends any[] = any[], > = new (...args: TArgs) => TInstanceType; + +/** + * Get a union of all keys from all members of `T`. + * + * @example + * ```ts + * type Foo = { a: string; b: number }; + * type Bar = { a: boolean; b: bigint; c: string }; + * + * type FoobarKey = keyof (Foo | Bar); + * // => "a" | "b" ❌ missing "c" + * + * type FoobarKey = keyof (Foo & Bar); + * // => string | number | symbol ❌ intersecting incompatible types returns never + * + * type FoobarKey = UnionKey; + * // => "a" | "b" | "c" ✅ + * ``` + */ +export type UnionKey = T extends T ? keyof T : never; + +/** + * Get a union of all keys that are optional or missing in at least one member + * of `T`. + * + * @example + * ```ts + * type Foo = { a: string; b?: number }; + * type Bar = { a: boolean; b: bigint; c: string }; + * + * type OptionalFoobarKey = OptionalUnionKey; + * // => "b" | "c" + * // "c" is included because it doesn't exist in Foo + * ``` + */ +export type OptionalUnionKey = keyof { + [K in UnionKey as T extends { + [_ in K]: any; + } + ? never + : K]: never; +}; + +/** + * Get a union of all keys that are required in all members of `T`. + * + * @example + * ```ts + * type Foo = { a: string; b?: number }; + * type Bar = { a: boolean; b: bigint; c: string }; + * + * type RequiredFoobarKey = RequiredUnionKey; + * // => "a" + * ``` + */ +export type RequiredUnionKey = Exclude, OptionalUnionKey>; + +/** + * Get a union of all values for `K` from all members of `T`. + * + * @example + * ```ts + * type Foo = { a: string; b?: number }; + * type Bar = { a: boolean; b: bigint; c: string }; + * + * type FooBar_A = UnionValue; + * // => string | boolean + * + * type FooBar_B = UnionValue; + * // => number | bigint | undefined + * + * type FooBar_C = UnionValue; + * // => string | undefined + * ``` + */ +export type UnionValue> = T extends T + ? K extends keyof T + ? T[K] + : undefined + : never; + +/** + * Merge a union or intersection of objects into a single type. + * + * @example + * ```ts + * type GetBlockOptions = { + * includeTransactions?: boolean; + * } & ( + * | { + * blockHash: string; + * blockNumber?: undefined; + * blockTag?: undefined; + * } + * | { + * blockHash?: undefined; + * blockNumber: bigint; + * blockTag?: undefined; + * } + * | { + * blockHash?: undefined; + * blockNumber?: undefined; + * blockTag: string; + * } + * ) + * + * type Merged = Merge; + * // { + * // includeTransactions?: boolean | undefined; + * // blockHash?: string | undefined; + * // blockNumber?: bigint | undefined; + * // blockTag?: string | undefined; + * // } + * ``` + */ +export type Merge = Eval< + { + [K in RequiredUnionKey]: UnionValue; + } & { + [K in OptionalUnionKey]?: UnionValue; + } +>; diff --git a/packages/hyperdrive-js/src/drift/ContractClient.ts b/packages/hyperdrive-js/src/drift/ContractClient.ts index 735b64c52..47fa639d6 100644 --- a/packages/hyperdrive-js/src/drift/ContractClient.ts +++ b/packages/hyperdrive-js/src/drift/ContractClient.ts @@ -1,32 +1,11 @@ -import { SimpleCache } from "@delvtech/drift"; -import { Address } from "abitype"; +import type { Address } from "@delvtech/drift"; import { ReadClientOptions } from "src/drift/ReadClient"; import { ReadWriteClientOptions } from "src/drift/ReadWriteClient"; -/** - * Additional options required for clients that represent a specific contract. - */ -export interface ContractClientOptions { - /** - * The address of the contract. - */ +export interface ReadContractClientOptions extends ReadClientOptions { address: Address; - - /** - * The cache to use for the contract. - */ - cache?: SimpleCache; - - /** - * The namespace to use for the cache. - */ - cacheNamespace?: PropertyKey; } -export interface ReadContractClientOptions - extends ReadClientOptions, - ContractClientOptions {} - -export interface ReadWriteContractClientOptions - extends ReadWriteClientOptions, - ContractClientOptions {} +export interface ReadWriteContractClientOptions extends ReadWriteClientOptions { + address: Address; +} diff --git a/packages/hyperdrive-js/src/drift/ReadClient.ts b/packages/hyperdrive-js/src/drift/ReadClient.ts index 515130daa..67d42897e 100644 --- a/packages/hyperdrive-js/src/drift/ReadClient.ts +++ b/packages/hyperdrive-js/src/drift/ReadClient.ts @@ -1,4 +1,5 @@ import { Drift } from "@delvtech/drift"; +import { getEventsWithSplitAndRetry } from "src/base/getEventsWithSplitAndRetry"; /** * The base options required for all read clients. @@ -14,9 +15,27 @@ export interface ReadClientOptions { debugName?: string; /** - * The earliest block to fetch events from. + * The earliest block number to use for event queries. */ - earliestBlock?: bigint; + epochBlock?: bigint; + + /** + * The maximum number of times to split failed event requests into smaller + * requests before giving up. + * + * **Caution:** this has the potential to increase the number of requests + * _exponentially_, so it should be used with care. + * + * @default 3 + */ + eventQueryRetries?: number; + + /** + * The time (in milliseconds) to wait before each event request retry attempt. + * + * @default 2 ** attempt * 100 + */ + eventQueryRetryBackoff?: number | ((attempt: number) => number); } /** @@ -26,33 +45,32 @@ export class ReadClient { drift: Drift; debugName: string; - constructor({ debugName, drift, earliestBlock }: ReadClientOptions) { + constructor({ + debugName, + drift, + epochBlock, + eventQueryRetries = 3, + eventQueryRetryBackoff = (attempt: number) => 2 ** attempt * 100, + }: ReadClientOptions) { this.debugName = debugName ?? this.constructor.name; this.drift = drift; - // Override the contract factory to ensure that events are fetched from the - // earliest block if necessary. - if (earliestBlock) { - const originalContractFactory = this.drift.contract; - this.drift.contract = (options) => { - const contract = originalContractFactory(options); - - // Override the getEvents method - const originalGetEvents = contract.getEvents; - contract.getEvents = async function (eventName, options) { - const _options = { ...options }; - const fromBlock = _options?.fromBlock; - const isBeforeEarliest = - typeof fromBlock === "bigint" && fromBlock < earliestBlock; - if (!fromBlock || fromBlock === "earliest" || isBeforeEarliest) { - _options.fromBlock = earliestBlock; - } - - return originalGetEvents(eventName, _options); - }; - - return contract as any; - }; - } + // Add a hook to split failed requests into multiple smaller requests to + // accommodate block range and/or event count limits. + drift.hooks.on("before:getEvents", async ({ args, resolve }) => { + const [{ fromBlock, toBlock, ...restParams }] = args; + const events = await getEventsWithSplitAndRetry({ + params: { + fromBlock, + toBlock, + ...restParams, + }, + drift, + epochBlock, + retries: eventQueryRetries, + backoff: eventQueryRetryBackoff, + }); + resolve(events); + }); } } diff --git a/packages/hyperdrive-js/src/drift/getBlockOrThrow.ts b/packages/hyperdrive-js/src/drift/getBlockOrThrow.ts deleted file mode 100644 index 7ede661ce..000000000 --- a/packages/hyperdrive-js/src/drift/getBlockOrThrow.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - Block, - ContractReadOptions, - Drift, - GetBlockParams, -} from "@delvtech/drift"; -import { HyperdriveSdkError } from "src/HyperdriveSdkError"; - -export type GetBlockOrThrowParams = GetBlockParams & ContractReadOptions; - -/** - * A utility that tries to fetch a block from a given network and throws an - * error if no block is found. Useful for unified error handling when fetching - * blocks that may not exist. - * @throws `BlockNotFoundError` - */ -export async function getBlockOrThrow( - drift: Drift, - options?: GetBlockOrThrowParams, -): Promise { - const fetched = await drift.getBlock(options); - if (!fetched) { - const block = - options?.blockHash ?? options?.blockNumber ?? options?.blockTag; - throw new HyperdriveSdkError( - `Block${block !== undefined ? ` ${block}` : ""} not found`, - ); - } - return fetched; -} diff --git a/packages/hyperdrive-js/src/exports/index.ts b/packages/hyperdrive-js/src/exports/index.ts index ac63577b2..2f0475b24 100644 --- a/packages/hyperdrive-js/src/exports/index.ts +++ b/packages/hyperdrive-js/src/exports/index.ts @@ -152,7 +152,6 @@ export { // Drift // export type { - ContractClientOptions, ReadContractClientOptions, ReadWriteContractClientOptions, } from "src/drift/ContractClient"; diff --git a/packages/hyperdrive-js/src/factory/ReadFactory.ts b/packages/hyperdrive-js/src/factory/ReadFactory.ts index 936b6b607..cd0a1dd05 100644 --- a/packages/hyperdrive-js/src/factory/ReadFactory.ts +++ b/packages/hyperdrive-js/src/factory/ReadFactory.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, type ReadOptions } from "@delvtech/drift"; import { Address } from "abitype"; import { ReadContractClientOptions } from "src/drift/ContractClient"; import { ReadClient } from "src/drift/ReadClient"; @@ -14,17 +14,15 @@ export class ReadFactory extends ReadClient { constructor({ debugName = "Hyperdrive Factory", address, - cache, - cacheNamespace, + epochBlock, ...rest }: ReadFactoryOptions) { - super({ debugName, ...rest }); + super({ debugName, epochBlock, ...rest }); this.address = address; this.contract = this.drift.contract({ abi: factoryAbi, address, - cache, - cacheNamespace, + epochBlock, }); } @@ -56,7 +54,7 @@ export class ReadFactory extends ReadClient { * Only return deployer coordinators that deployed the given instances. */ instances?: Address[]; - options?: ContractReadOptions; + options?: ReadOptions; } = {}): Promise { if (instances) { const readOnlyAddresses = await this.contract.read( @@ -93,15 +91,14 @@ export class ReadFactory extends ReadClient { * Get a {@linkcode ReadHyperdrive} instance for each Hyperdrive instance * deployed by the deployer factory. */ - async getInstances(options?: ContractReadOptions): Promise { + async getInstances(options?: ReadOptions): Promise { const hyperdriveAddresses = await this.getInstanceAddresses(options); return hyperdriveAddresses.map( (address) => new ReadHyperdrive({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ); } @@ -109,9 +106,7 @@ export class ReadFactory extends ReadClient { /** * Get the address of all Hyperdrive instances deployed by the factory. */ - async getInstanceAddresses( - options?: ContractReadOptions, - ): Promise { + async getInstanceAddresses(options?: ReadOptions): Promise { const count = await this.contract.read("getNumberOfInstances", {}, options); if (count === 0n) { diff --git a/packages/hyperdrive-js/src/factory/ReadWriteFactory.ts b/packages/hyperdrive-js/src/factory/ReadWriteFactory.ts index f37740105..4ae82595f 100644 --- a/packages/hyperdrive-js/src/factory/ReadWriteFactory.ts +++ b/packages/hyperdrive-js/src/factory/ReadWriteFactory.ts @@ -1,9 +1,9 @@ import { - ContractReadOptions, Drift, + ReadOptions, ReadWriteAdapter, ReadWriteContract, - ReplaceProps, + type Replace, } from "@delvtech/drift"; import { ReadWriteContractClientOptions } from "src/drift/ContractClient"; import { ReadFactory, ReadFactoryOptions } from "src/factory/ReadFactory"; @@ -11,7 +11,7 @@ import { FactoryAbi } from "src/factory/abi"; import { ReadWriteHyperdrive } from "src/hyperdrive/ReadWriteHyperdrive"; export interface ReadWriteFactoryOptions - extends ReplaceProps {} + extends Replace {} export class ReadWriteFactory extends ReadFactory { declare contract: ReadWriteContract; @@ -25,17 +25,13 @@ export class ReadWriteFactory extends ReadFactory { * Get a {@linkcode ReadWriteHyperdrive} instance for each Hyperdrive instance * deployed by the deployer factory. */ - async getInstances( - options?: ContractReadOptions, - ): Promise { + async getInstances(options?: ReadOptions): Promise { const hyperdriveAddresses = await this.getInstanceAddresses(options); return hyperdriveAddresses.map( (address) => new ReadWriteHyperdrive({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }), ); } diff --git a/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.test.ts b/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.test.ts index 347d55c07..ff4937f34 100644 --- a/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.test.ts +++ b/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.test.ts @@ -1,13 +1,15 @@ import { ZERO_ADDRESS } from "@delvtech/drift"; +import { createStubBlock, createStubEvents } from "@delvtech/drift/testing"; import { fixed, parseFixed } from "@delvtech/fixed-point-wasm"; import { ALICE, BOB } from "src/base/testing/accounts"; +import type { ClosedLong } from "src/exports"; +import { hyperdriveAbi } from "src/hyperdrive/abi"; import { decodeAssetFromTransferSingleEventData } from "src/hyperdrive/assetId/decodeAssetFromTransferSingleEventData"; -import { CheckpointEvent } from "src/hyperdrive/checkpoint/types"; import { - simplePoolConfig30Days, - simplePoolConfig7Days, + stubPoolConfig30Days, + stubPoolConfig7Days, } from "src/hyperdrive/testing/PoolConfig"; -import { simplePoolInfo } from "src/hyperdrive/testing/PoolInfo"; +import { stubPoolInfo } from "src/hyperdrive/testing/PoolInfo"; import { setupReadHyperdrive } from "src/hyperdrive/testing/setupReadHyperdrive"; import { assert, expect, test } from "vitest"; @@ -32,11 +34,11 @@ test("getPoolConfig should return the PoolConfig from the contract as-is", async const { contract, readHyperdrive } = setupReadHyperdrive(); // stub out the contract call the sdk is going to make - contract.onRead("getPoolConfig").resolves(simplePoolConfig7Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig7Days); // The sdk should return the correct data const value = await readHyperdrive.getPoolConfig(); - expect(value).toBe(simplePoolConfig7Days); + expect(value).toBe(stubPoolConfig7Days); }); // The sdk should return the exact PoolInfo from the contracts. It should not do @@ -45,10 +47,10 @@ test("getPoolConfig should return the PoolConfig from the contract as-is", async test("getPoolInfo should return the PoolInfo from the contract as-is", async () => { const { contract, readHyperdrive } = setupReadHyperdrive(); - contract.onRead("getPoolInfo").resolves(simplePoolInfo); + contract.onRead("getPoolInfo").resolves(stubPoolInfo); const value = await readHyperdrive.getPoolInfo(); - expect(value).toBe(simplePoolInfo); + expect(value).toBe(stubPoolInfo); }); // The sdk should return the exact APR from the contracts. It should not do any @@ -58,8 +60,8 @@ test("getFixedRate should get the fixed rate as-is", async () => { // These are necessary to stub, but the values won't be used since we stub // calculateAPRFromReserves directly - contract.onRead("getPoolConfig").resolves(simplePoolConfig7Days); - contract.onRead("getPoolInfo").resolves(simplePoolInfo); + contract.onRead("getPoolConfig").resolves(stubPoolConfig7Days); + contract.onRead("getPoolInfo").resolves(stubPoolInfo); const value = await readHyperdrive.getFixedApr(); expect(value).toBe(50000000000000000n); @@ -68,84 +70,97 @@ test("getFixedRate should get the fixed rate as-is", async () => { test("getTradingVolume should get the trading volume in terms of bonds", async () => { const { contract, readHyperdrive } = setupReadHyperdrive(); - contract.onGetEvents("OpenLong").resolves([ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - amount: parseFixed("1").bigint, - bondAmount: parseFixed("1.3").bigint, - maturityTime: 1729209600n, - vaultSharePrice: 1n, - asBase: false, - trader: BOB, - }, - }, - { + contract.onGetEvents("OpenLong").resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 2n, - amount: parseFixed("1").bigint, - bondAmount: parseFixed("1.4").bigint, - maturityTime: 1733961600n, - asBase: false, - trader: ALICE, - vaultSharePrice: 0n, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + amount: parseFixed("1").bigint, + bondAmount: parseFixed("1.3").bigint, + maturityTime: 1729209600n, + vaultSharePrice: 1n, + asBase: false, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 2n, + amount: parseFixed("1").bigint, + bondAmount: parseFixed("1.4").bigint, + maturityTime: 1733961600n, + asBase: false, + trader: ALICE, + vaultSharePrice: 0n, + }, + }, + ], + }), + ); - contract.onGetEvents("CloseLong").resolves([ - { + contract.onGetEvents("CloseLong").resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: 123456789n, - trader: BOB, - destination: BOB, - // received back 1 base - asBase: true, - amount: parseFixed("1").bigint, - vaultSharePrice: 0n, - // closed out 0.9 bonds - bondAmount: parseFixed("0.9").bigint, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + maturityTime: 123456789n, + trader: BOB, + destination: BOB, + // received back 1 base + asBase: true, + amount: parseFixed("1").bigint, + vaultSharePrice: 0n, + // closed out 0.9 bonds + bondAmount: parseFixed("0.9").bigint, + }, + }, + ], + }), + ); - contract.onGetEvents("OpenShort").resolves([ - { - eventName: "OpenShort", - args: { - extraData: "0x", - assetId: 3n, - amount: parseFixed("1").bigint, - bondAmount: parseFixed("100").bigint, - maturityTime: 1729296000n, - vaultSharePrice: 1n, - asBase: false, - baseProceeds: parseFixed("100").bigint, - trader: BOB, - }, - }, - { + contract.onGetEvents("OpenShort").resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - args: { - extraData: "0x", - assetId: 4n, - amount: parseFixed("2").bigint, - bondAmount: parseFixed("190").bigint, - maturityTime: 1729296000n, - vaultSharePrice: 1n, - asBase: false, - baseProceeds: parseFixed("190").bigint, - trader: BOB, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 3n, + amount: parseFixed("1").bigint, + bondAmount: parseFixed("100").bigint, + maturityTime: 1729296000n, + vaultSharePrice: 1n, + asBase: false, + baseProceeds: parseFixed("100").bigint, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 4n, + amount: parseFixed("2").bigint, + bondAmount: parseFixed("190").bigint, + maturityTime: 1729296000n, + vaultSharePrice: 1n, + asBase: false, + baseProceeds: parseFixed("190").bigint, + trader: BOB, + }, + }, + ], + }), + ); contract.onGetEvents("CloseShort").resolves([]); @@ -159,19 +174,19 @@ test("getTradingVolume should get the trading volume in terms of bonds", async ( }); test("getShortAccruedYield should return the amount of yield a non-mature position has earned", async () => { - const { contract, drift, readHyperdrive } = setupReadHyperdrive(); + const { drift, contract, readHyperdrive } = setupReadHyperdrive(); - drift.onGetBlock().resolves({ blockNumber: 1n, timestamp: 100n }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 100n })); contract.onRead("getPoolConfig").resolves({ - ...simplePoolConfig7Days, + ...stubPoolConfig7Days, positionDuration: 86400n, // one day in seconds checkpointDuration: 86400n, // one day in seconds }); // The pool info gives us the current price contract.onRead("getPoolInfo").resolves({ - ...simplePoolInfo, + ...stubPoolInfo, vaultSharePrice: parseFixed("1.01").bigint, }); @@ -194,12 +209,10 @@ test("getShortAccruedYield should return the amount of yield a non-mature positi }); test("getShortAccruedYield should return the amount of yield a mature position has earned", async () => { - const { drift, contract, readHyperdrive } = setupReadHyperdrive(); - - drift.onGetBlock().resolves({ blockNumber: 1n, timestamp: 1699503565n }); + const { contract, readHyperdrive } = setupReadHyperdrive(); contract.onRead("getPoolConfig").resolves({ - ...simplePoolConfig7Days, + ...stubPoolConfig7Days, positionDuration: 86400n, // one day in seconds checkpointDuration: 86400n, // one day in seconds }); @@ -231,28 +244,32 @@ test("getShortAccruedYield should return the amount of yield a mature position h test("getCheckpointEvents should return an array of CheckpointEvents", async () => { const { contract, readHyperdrive } = setupReadHyperdrive(); - const checkPointEvents = [ - { - eventName: "CreateCheckpoint", - args: { - vaultSharePrice: 423890n, - checkpointTime: 1699480800n, - lpSharePrice: 1000276463406900050n, - maturedLongs: 1010694n, - maturedShorts: 0n, + const checkPointEvents = createStubEvents({ + abi: hyperdriveAbi, + eventName: "CreateCheckpoint", + events: [ + { + args: { + vaultSharePrice: 423890n, + checkpointVaultSharePrice: 423890n, + checkpointTime: 1699480800n, + lpSharePrice: 1000276463406900050n, + maturedLongs: 1010694n, + maturedShorts: 0n, + }, }, - }, - { - eventName: "CreateCheckpoint", - args: { - sharePrice: 1000378348050038939n, - checkpointTime: 1729299000n, - lpSharePrice: 80120n, - maturedLongs: 923162n, - maturedShorts: 230904n, + { + args: { + vaultSharePrice: 1000378348050038939n, + checkpointVaultSharePrice: 1000378348050038939n, + checkpointTime: 1729299000n, + lpSharePrice: 80120n, + maturedLongs: 923162n, + maturedShorts: 230904n, + }, }, - }, - ] as CheckpointEvent[]; + ], + }); contract.onGetEvents("CreateCheckpoint").resolves(checkPointEvents); const events = await readHyperdrive.getCheckpointEvents(); @@ -272,38 +289,42 @@ test("getOpenLongs should account for longs opened with base", async () => { const eventData = "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: 1n, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + // received bonds + bondAmount: parseFixed("1.3").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: 1n, + // received bonds + bondAmount: parseFixed("1.4").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + ], + }), + ); contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([]); const value = await readHyperdrive.getOpenLongs({ account: BOB }); @@ -330,38 +351,42 @@ test("getOpenLongs should account for longs opened with shares", async () => { const eventData = "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in shares - vaultSharePrice: parseFixed("1.15").bigint, - amount: parseFixed("1").bigint, - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: false, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in shares - vaultSharePrice: parseFixed("1.2").bigint, - amount: parseFixed("1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: false, - trader: BOB, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in shares + vaultSharePrice: parseFixed("1.15").bigint, + amount: parseFixed("1").bigint, + // received bonds + bondAmount: parseFixed("1.3").bigint, + maturityTime: timestamp, + asBase: false, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in shares + vaultSharePrice: parseFixed("1.2").bigint, + amount: parseFixed("1").bigint, + // received bonds + bondAmount: parseFixed("1.4").bigint, + maturityTime: timestamp, + asBase: false, + trader: BOB, + }, + }, + ], + }), + ); // Bob has not closed the position at all, these are just stubbed out contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([]); @@ -389,59 +414,68 @@ test("getOpenLongs should account for longs partially closed to base", async () const eventData = "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // received bonds + bondAmount: parseFixed("1.3").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + // received bonds + bondAmount: parseFixed("1.4").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + ], + }), + ); + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 1 base - asBase: true, - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 0.9 bonds - bondAmount: parseFixed("0.9").bigint, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 1 base + asBase: true, + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // closed out 0.9 bonds + bondAmount: parseFixed("0.9").bigint, + }, + }, + ], + }), + ); // mints const value = await readHyperdrive.getOpenLongs({ account: BOB }); @@ -468,114 +502,132 @@ test("getOpenLongs should account for longs fully closed to base", async () => { const eventData = "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // received bonds + bondAmount: parseFixed("1.3").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + // received bonds + bondAmount: parseFixed("1.4").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + ], + }), + ); + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 1 base - asBase: true, - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 0.9 bonds - bondAmount: parseFixed("0.9").bigint, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 1 base + asBase: true, + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // closed out 0.9 bonds + bondAmount: parseFixed("0.9").bigint, + }, + }, + ], + }), + ); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { - eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("1.3").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("1").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("1.4").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // received bonds + bondAmount: parseFixed("1.3").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("1").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + // received bonds + bondAmount: parseFixed("1.4").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + ], + }), + ); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 2.5 base - asBase: true, - amount: parseFixed("2.5").bigint, - vaultSharePrice: parseFixed("1.19").bigint, - - // closed out 2.7 bonds - bondAmount: parseFixed("2.7").bigint, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 2.5 base + asBase: true, + amount: parseFixed("2.5").bigint, + vaultSharePrice: parseFixed("1.19").bigint, + + // closed out 2.7 bonds + bondAmount: parseFixed("2.7").bigint, + }, + }, + ], + }), + ); const value = await readHyperdrive.getOpenLongs({ account: BOB }); expect(value).toEqual([]); @@ -589,66 +641,75 @@ test("getOpenLongs should handle when user fully closes then re-opens a position const { contract, readHyperdrive } = setupReadHyperdrive(); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { - args: { - extraData: "0x", - trader: BOB, - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - maturityTime: 1715299200n, - amount: parseFixed("2000").bigint, - vaultSharePrice: parseFixed("1.0002871459674").bigint, - asBase: true, - bondAmount: parseFixed("2020.518819362004558105").bigint, - }, - blockNumber: 1n, - data: "0x00000000000000000000000000000000000000000000000000000000663d638000000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000006c639ba602f70a9a7f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006d8854d90acff06119", + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - transactionHash: - "0x8b938ee12cc519b7a76debcad41aab61ef3de2cecc8a858adea7575671b1d9b4", - }, - { - args: { - extraData: "0x", - trader: BOB, - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - maturityTime: 1715299200n, - amount: parseFixed("9.0931").bigint, - vaultSharePrice: parseFixed("1.0003519789758").bigint, - asBase: true, - bondAmount: parseFixed("9.196435772384927298").bigint, - }, - blockNumber: 3n, - data: "0x00000000000000000000000000000000000000000000000000000000663d63800000000000000000000000000000000000000000000000007e312e45cf1ac0000000000000000000000000000000000000000000000000007e25d062e6d4586900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000007fa04d9c34b2de42", - eventName: "OpenLong", - transactionHash: - "0x5130c7a919f7303343e102020705cfe3db2ab5ca200410d119cef296c4693621", - } as const, - ]); - - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: - 452312848583266388373324160190187140051835877600158453279131187532625961856n, - maturityTime: 1715299200n, - amount: parseFixed("1998.524066158245200112").bigint, - vaultSharePrice: parseFixed("1.0002973144644").bigint, - asBase: true, - bondAmount: parseFixed("2020.518819362004558105").bigint, - }, - blockNumber: 2n, - data: "0x00000000000000000000000000000000000000000000000000000000663d638000000000000000000000000000000000000000000000006c5717c9895f7a40f000000000000000000000000000000000000000000000006c4ed96d6708a25d07000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006d8854d90acff06119", + events: [ + { + args: { + extraData: "0x", + trader: BOB, + assetId: + 452312848583266388373324160190187140051835877600158453279131187532625961856n, + maturityTime: 1715299200n, + amount: parseFixed("2000").bigint, + vaultSharePrice: parseFixed("1.0002871459674").bigint, + asBase: true, + bondAmount: parseFixed("2020.518819362004558105").bigint, + }, + blockNumber: 1n, + data: "0x00000000000000000000000000000000000000000000000000000000663d638000000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000006c639ba602f70a9a7f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006d8854d90acff06119", + transactionHash: + "0x8b938ee12cc519b7a76debcad41aab61ef3de2cecc8a858adea7575671b1d9b4", + }, + { + args: { + extraData: "0x", + trader: BOB, + assetId: + 452312848583266388373324160190187140051835877600158453279131187532625961856n, + maturityTime: 1715299200n, + amount: parseFixed("9.0931").bigint, + vaultSharePrice: parseFixed("1.0003519789758").bigint, + asBase: true, + bondAmount: parseFixed("9.196435772384927298").bigint, + }, + blockNumber: 3n, + data: "0x00000000000000000000000000000000000000000000000000000000663d63800000000000000000000000000000000000000000000000007e312e45cf1ac0000000000000000000000000000000000000000000000000007e25d062e6d4586900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000007fa04d9c34b2de42", + transactionHash: + "0x5130c7a919f7303343e102020705cfe3db2ab5ca200410d119cef296c4693621", + } as const, + ], + }), + ); + + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - transactionHash: - "0x8fff6dfc2498356b665542c5517e895dd6c0364e2fa9bf011d373781dad22655", - }, - ]); + events: [ + { + args: { + extraData: "0x", + trader: BOB, + destination: BOB, + assetId: + 452312848583266388373324160190187140051835877600158453279131187532625961856n, + maturityTime: 1715299200n, + amount: parseFixed("1998.524066158245200112").bigint, + vaultSharePrice: parseFixed("1.0002973144644").bigint, + asBase: true, + bondAmount: parseFixed("2020.518819362004558105").bigint, + }, + blockNumber: 2n, + data: "0x00000000000000000000000000000000000000000000000000000000663d638000000000000000000000000000000000000000000000006c5717c9895f7a40f000000000000000000000000000000000000000000000006c4ed96d6708a25d07000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006d8854d90acff06119", + transactionHash: + "0x8fff6dfc2498356b665542c5517e895dd6c0364e2fa9bf011d373781dad22655", + }, + ], + }), + ); const value = await readHyperdrive.getOpenLongs({ account: BOB }); @@ -675,45 +736,55 @@ test("getOpenLongs should account for longs partially closed to shares", async ( const eventData = "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - asBase: true, - amount: parseFixed("2").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - // received bonds - bondAmount: parseFixed("2.2").bigint, - maturityTime: timestamp, - trader: BOB, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + asBase: true, + amount: parseFixed("2").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + // received bonds + bondAmount: parseFixed("2.2").bigint, + maturityTime: timestamp, + trader: BOB, + }, + }, + ], + }), + ); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 0.8 shares - asBase: false, - amount: parseFixed("0.88").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 1.1 bonds - bondAmount: parseFixed("1.1").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 0.8 shares + asBase: false, + amount: parseFixed("0.88").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // closed out 1.1 bonds + bondAmount: parseFixed("1.1").bigint, + }, + }, + ], + }), + ); const value = await readHyperdrive.getOpenLongs({ account: BOB }); @@ -738,46 +809,56 @@ test("getOpenLongs should account for longs fully closed to shares", async () => const eventData = "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("OpenLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenLong", - args: { - extraData: "0x", - assetId: 1n, - // paid for in base - amount: parseFixed("2").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // received bonds - bondAmount: parseFixed("2.2").bigint, - maturityTime: timestamp, - asBase: true, - trader: BOB, - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + // paid for in base + amount: parseFixed("2").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // received bonds + bondAmount: parseFixed("2.2").bigint, + maturityTime: timestamp, + asBase: true, + trader: BOB, + }, + }, + ], + }), + ); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 2 shares, and no base - asBase: false, - amount: parseFixed("2.2").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - - // closed out 2.2 bonds - bondAmount: parseFixed("2.2").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 2 shares, and no base + asBase: false, + amount: parseFixed("2.2").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + + // closed out 2.2 bonds + bondAmount: parseFixed("2.2").bigint, + }, + }, + ], + }), + ); const value = await readHyperdrive.getOpenLongs({ account: BOB }); @@ -793,39 +874,43 @@ test("getClosedLongs should account for closing out to base", async () => { "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 2.2 base, and no shares - asBase: true, - amount: parseFixed("2.2").bigint, - vaultSharePrice: parseFixed("2.0").bigint, - - // closed out 2.0 bonds - bondAmount: parseFixed("2.0").bigint, - }, - }, - ]); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 2.2 base, and no shares + asBase: true, + amount: parseFixed("2.2").bigint, + vaultSharePrice: parseFixed("2.0").bigint, + + // closed out 2.0 bonds + bondAmount: parseFixed("2.0").bigint, + }, + }, + ], + }), + ); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const value = await readHyperdrive.getClosedLongs({ account: BOB }); expect(value).toEqual([ { assetId: 1n, baseAmount: parseFixed("2.2").bigint, - baseAmountPaid: 0n, bondAmount: parseFixed("2.0").bigint, closedTimestamp: 123456789n, maturity: 1708545600n, }, - ]); + ] satisfies ClosedLong[]); }); test("getClosedLongs should account for closing out to shares", async () => { @@ -839,42 +924,46 @@ test("getClosedLongs should account for closing out to shares", async () => { "0x0100000000000000000000000000000000000000000000000000000065d65640000000000000000000000000000000000000000000000001bc82c3277b2dc665"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseLong", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseLong", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - - // received back 1.9 shares, and no base - asBase: false, - vaultSharePrice: parseFixed("1.1").bigint, - amount: parseFixed("1.9").bigint, - - // closed out 2 bonds - bondAmount: parseFixed("2.0").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + assetId: 1n, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + + // received back 1.9 shares, and no base + asBase: false, + vaultSharePrice: parseFixed("1.1").bigint, + amount: parseFixed("1.9").bigint, + + // closed out 2 bonds + bondAmount: parseFixed("2.0").bigint, + }, + }, + ], + }), + ); // getBlock gives us the timestamp of when he closed the position - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const value = await readHyperdrive.getClosedLongs({ account: BOB }); expect(value).toEqual([ { assetId: 1n, baseAmount: parseFixed("2.09").bigint, - baseAmountPaid: 0n, bondAmount: parseFixed("2.0").bigint, closedTimestamp: 123456789n, maturity: 1708545600n, }, - ]); + ] satisfies ClosedLong[]); }); test("getOpenShorts should account for shorts opened with base", async () => { @@ -884,46 +973,47 @@ test("getOpenShorts should account for shorts opened with base", async () => { const { contract, readHyperdrive, drift } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); - contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves([ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("0.721996107012129147").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.72527013345635719").bigint, - vaultSharePrice: parseFixed("0.721952948135251528").bigint, - asBase: true, - baseProceeds: parseFixed("49.288611983218631127").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("0.721996107012129147").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.72527013345635719").bigint, + vaultSharePrice: parseFixed("0.721952948135251528").bigint, + asBase: true, + baseProceeds: parseFixed("49.288611983218631127").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves([]); - drift.onGetBlock().resolves({ - timestamp: 1713801432n, - blockNumber: 1n, - }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 1713801432n })); const value = await readHyperdrive.getOpenShorts({ account: BOB }); @@ -949,46 +1039,47 @@ test("getOpenShorts should account for shorts opened with shares", async () => { const { contract, readHyperdrive, drift } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); - contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves([ - { + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.721996107012129147").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: false, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "OpenShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.721952948135251528").bigint, - vaultSharePrice: parseFixed("1.004594738936").bigint, - asBase: false, - baseProceeds: parseFixed("49.288611983218631127").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.721996107012129147").bigint, + vaultSharePrice: parseFixed("1.004590365499").bigint, + asBase: false, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.721952948135251528").bigint, + vaultSharePrice: parseFixed("1.004594738936").bigint, + asBase: false, + baseProceeds: parseFixed("49.288611983218631127").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves([]); - drift.onGetBlock().resolves({ - timestamp: 1713801432n, - blockNumber: 1n, - }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 1713801432n })); const value = await readHyperdrive.getOpenShorts({ account: BOB }); @@ -1014,50 +1105,55 @@ test("getOpenShorts should account for shorts partially closed to base", async ( // bonds left with a total cost of 0.37 base. const { contract, readHyperdrive, drift } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); - const events = [ - { + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("0.721996107012129147").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("0.721996107012129147").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.357390566309610627").bigint, - vaultSharePrice: parseFixed("0.355730805024955393").bigint, - asBase: true, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("25").bigint, - }, - }, - ] as const; - - contract - .onGetEvents("OpenShort", { filter: { trader: BOB } }) - .resolves([events[0]]); - contract - .onGetEvents("CloseShort", { filter: { trader: BOB } }) - .resolves([events[1]]); + events: [ + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + destination: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.357390566309610627").bigint, + vaultSharePrice: parseFixed("0.355730805024955393").bigint, + asBase: true, + basePayment: parseFixed("24.651318786405479294").bigint, + bondAmount: parseFixed("25").bigint, + }, + }, + ], + }), + ); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const value = await readHyperdrive.getOpenShorts({ account: BOB }); expect(value).toEqual([ @@ -1079,52 +1175,56 @@ test("getOpenShorts should account for shorts fully closed to base", async () => // Description: // Bob opens up a short position, then completely closes this position, As a // result, he no longer has any open short positions. - const { contract, readHyperdrive, drift } = setupReadHyperdrive(); + const { contract, readHyperdrive } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); - const events = [ - { + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("0.721996107012129147").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("0.721996107012129147").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.357390566309610627").bigint, - vaultSharePrice: parseFixed("0.355730805024955393").bigint, - asBase: true, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ] as const; - - contract - .onGetEvents("OpenShort", { filter: { trader: BOB } }) - .resolves([events[0]]); - contract - .onGetEvents("CloseShort", { filter: { trader: BOB } }) - .resolves([events[1]]); + events: [ + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + destination: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.357390566309610627").bigint, + vaultSharePrice: parseFixed("0.355730805024955393").bigint, + asBase: true, + basePayment: parseFixed("24.651318786405479294").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); const value = await readHyperdrive.getOpenShorts({ account: BOB }); expect(value).toEqual([]); @@ -1137,50 +1237,55 @@ test("getOpenShorts should account for shorts partially closed to shares", async // has 25 bonds left with a total cost of 0.37 base. const { contract, readHyperdrive, drift } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); - const events = [ - { + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("1.004590365499").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.355730805024955393").bigint, - vaultSharePrice: parseFixed("1.004665778901").bigint, - asBase: false, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("25").bigint, - }, - }, - ] as const; - - contract - .onGetEvents("OpenShort", { filter: { trader: BOB } }) - .resolves([events[0]]); - contract - .onGetEvents("CloseShort", { filter: { trader: BOB } }) - .resolves([events[1]]); + events: [ + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + destination: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.355730805024955393").bigint, + vaultSharePrice: parseFixed("1.004665778901").bigint, + asBase: false, + basePayment: parseFixed("24.651318786405479294").bigint, + bondAmount: parseFixed("25").bigint, + }, + }, + ], + }), + ); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const value = await readHyperdrive.getOpenShorts({ account: BOB }); expect(value).toEqual([ @@ -1203,51 +1308,56 @@ test("getOpenShorts should account for shorts fully closed to shares", async () // Bob opens up a short position, then completely closes this position, As a // result, he no longer has any open short positions. - const { contract, readHyperdrive, drift } = setupReadHyperdrive(); + const { contract, readHyperdrive } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); - const events = [ - { + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); + + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("1.004590365499").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - vaultSharePrice: parseFixed("1.004665778901").bigint, - amount: parseFixed("0.355730805024955393").bigint, - asBase: false, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ] as const; - - contract - .onGetEvents("OpenShort", { filter: { trader: BOB } }) - .resolves([events[0]]); - contract - .onGetEvents("CloseShort", { filter: { trader: BOB } }) - .resolves([events[1]]); + events: [ + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + destination: BOB, + assetId: 1n, + maturityTime: 1716336000n, + vaultSharePrice: parseFixed("1.004665778901").bigint, + amount: parseFixed("0.355730805024955393").bigint, + asBase: false, + basePayment: parseFixed("24.651318786405479294").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); const value = await readHyperdrive.getOpenShorts({ account: BOB }); expect(value).toEqual([]); @@ -1260,76 +1370,75 @@ test("getOpenShorts should handle when user fully closes then re-opens a positio // (ie: the previous loss is not factored in). const { contract, drift, readHyperdrive } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); // pool info to get the price of shares at the time he closes the short contract .onRead("getPoolInfo", {}, { block: 5n }) - .resolves({ ...simplePoolInfo, vaultSharePrice: parseFixed("1.1").bigint }); + .resolves({ ...stubPoolInfo, vaultSharePrice: parseFixed("1.1").bigint }); // Stub the timestamp so getOpenShorts can construct the checkpoint id - drift.onGetBlock().resolves({ - timestamp: 123456789n, - // this blockNumber is unused, but setting this to 3n, as there should be - // 3 blocks in this test flow - blockNumber: 3n, - }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); - const events = [ - { - eventName: "OpenShort", - blockNumber: 1n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { - eventName: "CloseShort", - blockNumber: 2n, - args: { - extraData: "0x", - trader: BOB, - destination: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.355730805024955393").bigint, - vaultSharePrice: parseFixed("1.004665778901").bigint, - asBase: false, - basePayment: parseFixed("24.651318786405479294").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - { + contract.onGetEvents("OpenShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "OpenShort", - blockNumber: 3n, - args: { - extraData: "0x", - trader: BOB, - assetId: 1n, - maturityTime: 1716336000n, - amount: parseFixed("0.725310333032516405").bigint, - vaultSharePrice: parseFixed("1.004590365499").bigint, - asBase: true, - baseProceeds: parseFixed("49.288354060447513457").bigint, - bondAmount: parseFixed("50").bigint, - }, - }, - ] as const; - - contract - .onGetEvents("OpenShort", { filter: { trader: BOB } }) - .resolves([events[0], events[2]]); + events: [ + { + blockNumber: 1n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("1.004590365499").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + { + blockNumber: 3n, + args: { + extraData: "0x", + trader: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.725310333032516405").bigint, + vaultSharePrice: parseFixed("1.004590365499").bigint, + asBase: true, + baseProceeds: parseFixed("49.288354060447513457").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); - contract - .onGetEvents("CloseShort", { filter: { trader: BOB } }) - .resolves([events[1]]); + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, + eventName: "CloseShort", + events: [ + { + blockNumber: 2n, + args: { + extraData: "0x", + trader: BOB, + destination: BOB, + assetId: 1n, + maturityTime: 1716336000n, + amount: parseFixed("0.355730805024955393").bigint, + vaultSharePrice: parseFixed("1.004665778901").bigint, + asBase: false, + basePayment: parseFixed("24.651318786405479294").bigint, + bondAmount: parseFixed("50").bigint, + }, + }, + ], + }), + ); const value = await readHyperdrive.getOpenShorts({ account: BOB }); @@ -1349,19 +1458,15 @@ test("getOpenShorts should handle when user fully closes then re-opens a positio }); test("getShortBondsGivenDeposit & previewOpenShort should align within a given tolerance", async () => { - const { contract, drift, readHyperdrive } = setupReadHyperdrive(); - contract.onRead("getPoolConfig").resolves(simplePoolConfig30Days); - contract.onRead("getPoolInfo").resolves(simplePoolInfo); + const { contract, readHyperdrive } = setupReadHyperdrive(); + contract.onRead("getPoolConfig").resolves(stubPoolConfig30Days); + contract.onRead("getPoolInfo").resolves(stubPoolInfo); contract.onRead("getCheckpointExposure").resolves(0n); contract.onRead("getCheckpoint").resolves({ vaultSharePrice: parseFixed(1.05).bigint, weightedSpotPrice: 0n, lastWeightedSpotPriceUpdateTime: 0n, }); - drift.onGetBlock().resolves({ - timestamp: 123456789n, - blockNumber: 1n, - }); const targetDeposit = parseFixed(1.123); const tolerance = fixed(1e9); @@ -1386,27 +1491,32 @@ test("getClosedShorts should account for shorts closed to base", async () => { "0x0200000000000000000000000000000000000000000000000000000065d76f800000000000000000000000000000000000000000000000056bc75e2d63100000"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onRead("getPoolConfig").resolves(simplePoolConfig7Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig7Days); - contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseShort", - args: { - extraData: "0x", - assetId: 1n, - asBase: true, - amount: parseFixed("2").bigint, // closed out to base - vaultSharePrice: parseFixed("1.8").bigint, // did not close out to shares - bondAmount: parseFixed("100").bigint, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - basePayment: parseFixed("2").bigint, // did not close out to base - }, - }, - ]); + events: [ + { + args: { + extraData: "0x", + assetId: 1n, + asBase: true, + amount: parseFixed("2").bigint, // closed out to base + vaultSharePrice: parseFixed("1.8").bigint, // did not close out to shares + bondAmount: parseFixed("100").bigint, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + basePayment: parseFixed("2").bigint, // did not close out to base + }, + }, + ], + }), + ); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const value = await readHyperdrive.getClosedShorts({ account: BOB }); @@ -1433,28 +1543,33 @@ test("getClosedShorts should account for shorts closed to shares", async () => { "0x0200000000000000000000000000000000000000000000000000000065d76f800000000000000000000000000000000000000000000000056bc75e2d63100000"; const { timestamp } = decodeAssetFromTransferSingleEventData(eventData); - contract.onRead("getPoolConfig").resolves(simplePoolConfig7Days); + contract.onRead("getPoolConfig").resolves(stubPoolConfig7Days); - contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves([ - { + contract.onGetEvents("CloseShort", { filter: { trader: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "CloseShort", - blockNumber: 5n, - args: { - extraData: "0x", - assetId: 1n, - asBase: false, - vaultSharePrice: parseFixed("1.1").bigint, - amount: parseFixed("1.1").bigint, // closed out to shares - bondAmount: parseFixed("100").bigint, - maturityTime: timestamp, - trader: BOB, - destination: BOB, - basePayment: parseFixed("1.21").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + assetId: 1n, + asBase: false, + vaultSharePrice: parseFixed("1.1").bigint, + amount: parseFixed("1.1").bigint, // closed out to shares + bondAmount: parseFixed("100").bigint, + maturityTime: timestamp, + trader: BOB, + destination: BOB, + basePayment: parseFixed("1.21").bigint, + }, + }, + ], + }), + ); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const value = await readHyperdrive.getClosedShorts({ account: BOB }); @@ -1478,48 +1593,57 @@ test("getOpenLpPosition should return zero when a position is fully closed", asy // 1 base on this position) Bob is left with 0 LP shares and 0 base paid in his // current LP position. - const { contract, readHyperdrive, drift } = setupReadHyperdrive(); - contract.onRead("getPoolInfo").resolves(simplePoolInfo); + const { contract, readHyperdrive } = setupReadHyperdrive(); + contract.onRead("getPoolInfo").resolves(stubPoolInfo); contract.onSimulateWrite("removeLiquidity").resolves({ proceeds: parseFixed("100").bigint, withdrawalShares: 0n, }); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 175n }); - contract.onGetEvents("AddLiquidity", { filter: { provider: BOB } }).resolves([ - { + contract.onGetEvents("AddLiquidity", { filter: { provider: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "AddLiquidity", - blockNumber: 174n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("500").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.000000590811771717").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("498.570512905658351934").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 174n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("500").bigint, + lpAmount: parseFixed("498").bigint, + lpSharePrice: parseFixed("1.000000590811771717").bigint, + provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", + vaultSharePrice: parseFixed("498.570512905658351934").bigint, + }, + }, + ], + }), + ); contract .onGetEvents("RemoveLiquidity", { filter: { provider: BOB } }) - .resolves([ - { + .resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "RemoveLiquidity", - blockNumber: 175n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("499").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.002867781011873985").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("498.567723245858722697").bigint, - withdrawalShareAmount: 0n, - destination: BOB, - }, - }, - ]); + events: [ + { + blockNumber: 175n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("499").bigint, + lpAmount: parseFixed("498").bigint, + lpSharePrice: parseFixed("1.002867781011873985").bigint, + provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", + vaultSharePrice: parseFixed("498.567723245858722697").bigint, + withdrawalShareAmount: 0n, + destination: BOB, + }, + }, + ], + }), + ); const value = await readHyperdrive.getOpenLpPosition({ account: BOB, @@ -1541,61 +1665,81 @@ test("getOpenLpPosition should return the current lpShareBalance and baseAmountP // receiving 99 LP shares, depositing 100 base. Bob now has with 99 LP // shares and 100 base paid in his current LP position. - const { contract, readHyperdrive, drift } = setupReadHyperdrive(); - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 175n }); + const { contract, readHyperdrive } = setupReadHyperdrive(); contract.onSimulateWrite("removeLiquidity").resolves({ proceeds: parseFixed("100").bigint, withdrawalShares: 0n, }); - contract.onRead("getPoolInfo").resolves(simplePoolInfo); - contract.onGetEvents("AddLiquidity", { filter: { provider: BOB } }).resolves([ - { - eventName: "AddLiquidity", - blockNumber: 174n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("500").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.000000590811771717").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("1.002867171358").bigint, - }, - }, - { + contract.onRead("getPoolInfo").resolves(stubPoolInfo); + contract + .onRead("convertToBase") + .callsFake( + async ({ args }) => + fixed(args._shareAmount).mul(stubPoolInfo.vaultSharePrice).bigint, + ); + contract + .onRead("convertToShares") + .callsFake( + async ({ args }) => + fixed(args._baseAmount).div(stubPoolInfo.vaultSharePrice).bigint, + ); + contract.onGetEvents("AddLiquidity", { filter: { provider: BOB } }).resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "AddLiquidity", - blockNumber: 176n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("100").bigint, - lpAmount: parseFixed("99").bigint, - lpSharePrice: parseFixed("1.000000576182752684").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("1.002867314461").bigint, - }, - }, - ]); + events: [ + { + blockNumber: 174n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("500").bigint, + lpAmount: parseFixed("498").bigint, + lpSharePrice: parseFixed("1.000000590811771717").bigint, + provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", + vaultSharePrice: parseFixed("1.002867171358").bigint, + }, + }, + { + blockNumber: 176n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("100").bigint, + lpAmount: parseFixed("99").bigint, + lpSharePrice: parseFixed("1.000000576182752684").bigint, + provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", + vaultSharePrice: parseFixed("1.002867314461").bigint, + }, + }, + ], + }), + ); contract .onGetEvents("RemoveLiquidity", { filter: { provider: BOB } }) - .resolves([ - { + .resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "RemoveLiquidity", - blockNumber: 175n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("499").bigint, - lpAmount: parseFixed("498").bigint, - lpSharePrice: parseFixed("1.002867781011873985").bigint, - provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", - vaultSharePrice: parseFixed("1.0008670371827").bigint, - withdrawalShareAmount: 0n, - destination: BOB, - }, - }, - ]); + events: [ + { + blockNumber: 175n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("499").bigint, + lpAmount: parseFixed("498").bigint, + lpSharePrice: parseFixed("1.002867781011873985").bigint, + provider: "0x020a898437E9c9DCdF3c2ffdDB94E759C0DAdFB6", + vaultSharePrice: parseFixed("1.0008670371827").bigint, + withdrawalShareAmount: 0n, + destination: BOB, + }, + }, + ], + }), + ); const value = await readHyperdrive.getOpenLpPosition({ account: BOB, @@ -1617,25 +1761,30 @@ test("getClosedLpShares should account for LP shares closed to base", async () = contract .onGetEvents("RemoveLiquidity", { filter: { provider: BOB } }) - .resolves([ - { + .resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "RemoveLiquidity", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("10").bigint, - vaultSharePrice: parseFixed("9").bigint, - provider: BOB, - withdrawalShareAmount: 0n, - lpAmount: parseFixed("5").bigint, - lpSharePrice: parseFixed("2").bigint, - destination: BOB, - }, - }, - ]); - - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("10").bigint, + vaultSharePrice: parseFixed("9").bigint, + provider: BOB, + withdrawalShareAmount: 0n, + lpAmount: parseFixed("5").bigint, + lpSharePrice: parseFixed("2").bigint, + destination: BOB, + }, + }, + ], + }), + ); + + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const closedLpShares = await readHyperdrive.getClosedLpShares({ account: BOB, @@ -1659,25 +1808,30 @@ test("getClosedLpShares should account for LP shares closed to vault shares", as contract .onGetEvents("RemoveLiquidity", { filter: { provider: BOB } }) - .resolves([ - { + .resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "RemoveLiquidity", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: false, - amount: parseFixed("9").bigint, - vaultSharePrice: parseFixed("1.1").bigint, - provider: BOB, - withdrawalShareAmount: 0n, - lpAmount: parseFixed("5").bigint, - lpSharePrice: parseFixed("2").bigint, - destination: BOB, - }, - }, - ]); - - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + asBase: false, + amount: parseFixed("9").bigint, + vaultSharePrice: parseFixed("1.1").bigint, + provider: BOB, + withdrawalShareAmount: 0n, + lpAmount: parseFixed("5").bigint, + lpSharePrice: parseFixed("2").bigint, + destination: BOB, + }, + }, + ], + }), + ); + + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const closedLpShares = await readHyperdrive.getClosedLpShares({ account: BOB, @@ -1700,23 +1854,28 @@ test("getRedeemedWithdrawalShares should account for withdrawal shares closed to contract .onGetEvents("RedeemWithdrawalShares", { filter: { provider: BOB } }) - .resolves([ - { + .resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "RedeemWithdrawalShares", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: true, - amount: parseFixed("10").bigint, - vaultSharePrice: parseFixed("9.8").bigint, - provider: BOB, - withdrawalShareAmount: parseFixed("5").bigint, - destination: BOB, - }, - }, - ]); - - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + asBase: true, + amount: parseFixed("10").bigint, + vaultSharePrice: parseFixed("9.8").bigint, + provider: BOB, + withdrawalShareAmount: parseFixed("5").bigint, + destination: BOB, + }, + }, + ], + }), + ); + + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const redeemedWithdrawalShares = await readHyperdrive.getRedeemedWithdrawalShares({ @@ -1738,23 +1897,28 @@ test("getRedeemedWithdrawalShares should account for withdrawal shares closed to contract .onGetEvents("RedeemWithdrawalShares", { filter: { provider: BOB } }) - .resolves([ - { + .resolves( + createStubEvents({ + abi: hyperdriveAbi, eventName: "RedeemWithdrawalShares", - blockNumber: 5n, - args: { - extraData: "0x", - asBase: false, - vaultSharePrice: parseFixed("1.25").bigint, - amount: parseFixed("8").bigint, - provider: BOB, - withdrawalShareAmount: parseFixed("5").bigint, - destination: BOB, - }, - }, - ]); - - drift.onGetBlock().resolves({ timestamp: 123456789n, blockNumber: 5n }); + events: [ + { + blockNumber: 5n, + args: { + extraData: "0x", + asBase: false, + vaultSharePrice: parseFixed("1.25").bigint, + amount: parseFixed("8").bigint, + provider: BOB, + withdrawalShareAmount: parseFixed("5").bigint, + destination: BOB, + }, + }, + ], + }), + ); + + drift.onGetBlock().resolves(createStubBlock({ timestamp: 123456789n })); const redeemedWithdrawalShares = await readHyperdrive.getRedeemedWithdrawalShares({ diff --git a/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.ts index 6ab224d30..c467635bf 100644 --- a/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/ReadHyperdrive.ts @@ -2,12 +2,11 @@ import { Address, Block, BlockTag, - ContractEvent, - ContractGetEventsOptions, - ContractReadOptions, - ContractWriteOptions, - MergeKeys, + EventLog, + GetEventsOptions, ReadContract, + ReadOptions, + WriteOptions, } from "@delvtech/drift"; import { fixed } from "@delvtech/fixed-point-wasm"; import retry from "p-retry"; @@ -15,9 +14,9 @@ import { HyperdriveSdkError } from "src/HyperdriveSdkError"; import { assertNever } from "src/base/assertNever"; import { calculateAprFromPrice } from "src/base/calculateAprFromPrice"; import { MAX_UINT256, NULL_BYTES, SECONDS_PER_YEAR } from "src/base/constants"; +import type { Merge } from "src/base/types"; import { ReadContractClientOptions } from "src/drift/ContractClient"; import { ReadClient } from "src/drift/ReadClient"; -import { getBlockOrThrow } from "src/drift/getBlockOrThrow"; import { HyperdriveAbi, hyperdriveAbi } from "src/hyperdrive/abi"; import { decodeAssetFromTransferSingleEventData } from "src/hyperdrive/assetId/decodeAssetFromTransferSingleEventData"; import { getCheckpointTime } from "src/hyperdrive/checkpoint/getCheckpointTime"; @@ -45,6 +44,9 @@ import { ReadErc20 } from "src/token/erc20/ReadErc20"; import { ReadEth } from "src/token/eth/ReadEth"; export interface ReadHyperdriveOptions extends ReadContractClientOptions { + /** + * The optional address of the zap contract. + */ zapContractAddress?: Address; } @@ -63,20 +65,17 @@ export class ReadHyperdrive extends ReadClient { constructor({ debugName = "Hyperdrive", address, - cache, - cacheNamespace, - drift, + epochBlock, zapContractAddress, ...rest }: ReadHyperdriveOptions) { - super({ debugName, drift, ...rest }); + super({ debugName, epochBlock, ...rest }); this.address = address; this.zapContractAddress = zapContractAddress; this.contract = this.drift.contract({ abi: hyperdriveAbi, address, - cache, - cacheNamespace, + epochBlock, }); } @@ -121,8 +120,6 @@ export class ReadHyperdrive extends ReadClient { : new ReadErc20({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } @@ -138,8 +135,6 @@ export class ReadHyperdrive extends ReadClient { return new ReadErc20({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } @@ -155,7 +150,7 @@ export class ReadHyperdrive extends ReadClient { options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.contract.read( "convertToBase", @@ -174,7 +169,7 @@ export class ReadHyperdrive extends ReadClient { options, }: { baseAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.contract.read( "convertToShares", @@ -219,7 +214,7 @@ export class ReadHyperdrive extends ReadClient { const blockNumber = events[0].blockNumber; - return getBlockOrThrow(this.drift, { blockNumber }); + return this.drift.getBlock(blockNumber, { throws: true }); } /** @@ -239,22 +234,23 @@ export class ReadHyperdrive extends ReadClient { options, }: { blockRange: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { - const currentBlock = await getBlockOrThrow(this.drift, options); + const currentBlock = await this.drift.getBlock(options?.block, { + throws: true, + }); // Clamp the start block to the pool's initialization block if the // blockRange is too big. - let startBlockNumber = currentBlock.blockNumber! - blockRange; - const { blockNumber: initializationBlock } = - await this.getInitializationBlock(); + let startBlockNumber = currentBlock.number! - blockRange; + const { number: initializationBlock } = await this.getInitializationBlock(); if (initializationBlock && initializationBlock > startBlockNumber) { startBlockNumber = initializationBlock; } // NOTE: Cloudchain will throw an error if the block number is too far back // in history. - const startBlock = await getBlockOrThrow(this.drift, { - blockNumber: startBlockNumber, + const startBlock = await this.drift.getBlock(startBlockNumber, { + throws: true, }); // Get the info from fromBlock to get the starting vault share price @@ -297,14 +293,15 @@ export class ReadHyperdrive extends ReadClient { timestamp, blockNumber, options, - }: MergeKeys = {}): Promise { + }: Merge = {}): Promise { const { checkpointDuration } = await this.getPoolConfig(options); // If no timestamp is provided, try to get one from the block number if (timestamp === undefined) { // Default to the block from read options - const getBlockOptions = blockNumber ? { blockNumber } : options; - const block = await getBlockOrThrow(this.drift, getBlockOptions); + const block = await this.drift.getBlock(blockNumber ?? options?.block, { + throws: true, + }); timestamp = block.timestamp; } @@ -370,14 +367,14 @@ export class ReadHyperdrive extends ReadClient { * general market state statistics, such as whether the market has been * paused. */ - getMarketState(options?: ContractReadOptions): Promise { + getMarketState(options?: ReadOptions): Promise { return this.contract.read("getMarketState", undefined, options); } /** * Gets the pool's configuration parameters */ - getPoolConfig(options?: ContractReadOptions): Promise { + getPoolConfig(options?: ReadOptions): Promise { return this.contract.read("getPoolConfig", undefined, options); } @@ -385,7 +382,7 @@ export class ReadHyperdrive extends ReadClient { * Gets info about the pool's reserves and other state that is important to * evaluate potential trades. */ - getPoolInfo(options?: ContractReadOptions): Promise { + getPoolInfo(options?: ReadOptions): Promise { return this.contract.read("getPoolInfo", undefined, options); } @@ -393,7 +390,7 @@ export class ReadHyperdrive extends ReadClient { * Gets the pool's fixed APR, i.e. the fixed rate a user locks in when they * open a long. */ - async getFixedApr(options?: ContractReadOptions): Promise { + async getFixedApr(options?: ReadOptions): Promise { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); return hyperwasm.spotRate({ poolConfig, poolInfo }); @@ -412,7 +409,7 @@ export class ReadHyperdrive extends ReadClient { timestamp: bigint; // TODO: Get this from sdk instead variableApy: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -439,7 +436,7 @@ export class ReadHyperdrive extends ReadClient { /** * Gets the market liquidity available for trading and removing LP. */ - async getIdleLiquidity(options?: ContractReadOptions): Promise { + async getIdleLiquidity(options?: ReadOptions): Promise { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -451,7 +448,7 @@ export class ReadHyperdrive extends ReadClient { * @param options * @returns */ - async getPresentValue(options?: ContractReadOptions): Promise { + async getPresentValue(options?: ReadOptions): Promise { // presentValueInShares 33997119981629446n // Start block: {blockNumber: 20486359n, timestamp: 1723150091n} // Start vault share price: 1015896019620210959n @@ -488,7 +485,7 @@ export class ReadHyperdrive extends ReadClient { }: { checkpointTime: bigint; bondAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { // Get the vault share price when the short was opened let { vaultSharePrice: openVaultSharePrice } = await this.getCheckpoint({ @@ -573,7 +570,7 @@ export class ReadHyperdrive extends ReadClient { * @param options - The read options * @returns the spot price of a long */ - async getLongPrice(options?: ContractReadOptions): Promise { + async getLongPrice(options?: ReadOptions): Promise { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -581,8 +578,8 @@ export class ReadHyperdrive extends ReadClient { } async getLongEvents( - options?: ContractGetEventsOptions & - ContractGetEventsOptions, + options?: GetEventsOptions & + GetEventsOptions, ): Promise< { trader: `0x${string}`; @@ -615,8 +612,8 @@ export class ReadHyperdrive extends ReadClient { } async getShortEvents( - options?: ContractGetEventsOptions & - ContractGetEventsOptions, + options?: GetEventsOptions & + GetEventsOptions, ): Promise< { trader: `0x${string}`; @@ -652,16 +649,13 @@ export class ReadHyperdrive extends ReadClient { } async getLpEvents( - options?: ContractGetEventsOptions & - ContractGetEventsOptions & - ContractGetEventsOptions, + options?: GetEventsOptions & + GetEventsOptions & + GetEventsOptions, ): Promise<{ - addLiquidity: ContractEvent[]; - removeLiquidity: ContractEvent[]; - redeemWithdrawalShares: ContractEvent< - HyperdriveAbi, - "RedeemWithdrawalShares" - >[]; + addLiquidity: EventLog[]; + removeLiquidity: EventLog[]; + redeemWithdrawalShares: EventLog[]; }> { const addLiquidityEvents = await this.contract.getEvents( "AddLiquidity", @@ -697,21 +691,20 @@ export class ReadHyperdrive extends ReadClient { options, }: { fromBlock: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ lpApy: bigint }> { // If the 24 hour rate doesn't exist, assume the pool was initialized less // than 24 hours before and try to get the all-time rate until toBlock - const { blockNumber: initializationBlock } = - await this.getInitializationBlock(); + const { number: initializationBlock } = await this.getInitializationBlock(); if (initializationBlock && initializationBlock > fromBlock) { fromBlock = initializationBlock; } // Attempt to fetch the blocks first to fail early if the block is not found - const currentBlock = await getBlockOrThrow(this.drift, options); - const startBlock = await getBlockOrThrow(this.drift, { - blockNumber: fromBlock, + const currentBlock = await this.drift.getBlock(options?.block, { + throws: true, }); + const startBlock = await this.drift.getBlock(fromBlock, { throws: true }); // Get the info from fromBlock to get the starting lp share price const { lpSharePrice: startLpSharePrice } = await this.getPoolInfo({ @@ -733,7 +726,7 @@ export class ReadHyperdrive extends ReadClient { } async getCheckpointEvents( - options?: ContractGetEventsOptions, + options?: GetEventsOptions, ): Promise { const checkPointEvents = await this.contract.getEvents( "CreateCheckpoint", @@ -746,8 +739,8 @@ export class ReadHyperdrive extends ReadClient { openLongEvents, closeLongEvents, }: { - openLongEvents: ContractEvent[]; - closeLongEvents: ContractEvent[]; + openLongEvents: EventLog[]; + closeLongEvents: EventLog[]; }): Long[] { // Put open and long events in block order. We spread openLongEvents first // since you have to open a long before you can close one. @@ -809,15 +802,15 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { const transfersReceived = await this.contract.getEvents("TransferSingle", { filter: { to: account }, - toBlock: options?.block, + ...options, }); const transfersSent = await this.contract.getEvents("TransferSingle", { filter: { from: account }, - toBlock: options?.block, + ...options, }); const longsReceived = transfersReceived.filter(isLongEvent); @@ -862,7 +855,7 @@ export class ReadHyperdrive extends ReadClient { }: { assetId: bigint; account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { // Ensure the account has an open long position for this asset. const allPositions = await this.getOpenLongPositions({ account, options }); @@ -876,9 +869,11 @@ export class ReadHyperdrive extends ReadClient { // Fetch the standard OpenLong and CloseLong events. const openLongEvents = await this.contract.getEvents("OpenLong", { filter: { trader: account, assetId }, + ...options, }); const closeLongEvents = await this.contract.getEvents("CloseLong", { filter: { trader: account, assetId }, + ...options, }); if (this.zapContractAddress) { @@ -887,7 +882,7 @@ export class ReadHyperdrive extends ReadClient { "TransferSingle", { filter: { from: account, to: this.zapContractAddress }, - toBlock: options?.block, + ...options, }, ); @@ -930,15 +925,15 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { const openLongEvents = await this.contract.getEvents("OpenLong", { filter: { trader: account }, - toBlock: options?.block, + ...options, }); const closeLongEvents = await this.contract.getEvents("CloseLong", { filter: { trader: account }, - toBlock: options?.block, + ...options, }); return this._calcOpenLongs({ @@ -958,18 +953,19 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { - const { checkpointDuration, positionDuration } = - await this.getPoolConfig(options); + const { checkpointDuration, positionDuration } = await this.getPoolConfig({ + block: options?.toBlock, + }); const openShortEvents = await this.contract.getEvents("OpenShort", { filter: { trader: account }, - toBlock: options?.block, + ...options, }); const closeShortEvents = await this.contract.getEvents("CloseShort", { filter: { trader: account }, - toBlock: options?.block, + ...options, }); return this._calcOpenShorts({ @@ -991,8 +987,8 @@ export class ReadHyperdrive extends ReadClient { hyperdriveAddress: Address; checkpointDuration: bigint; positionDuration: bigint; - openShortEvents: ContractEvent[]; - closeShortEvents: ContractEvent[]; + openShortEvents: EventLog[]; + closeShortEvents: EventLog[]; }): Promise { // Put open and short events in block order. We spread openShortEvents first // since you have to open a short before you can close one. @@ -1004,8 +1000,8 @@ export class ReadHyperdrive extends ReadClient { for (const event of orderedShortEvents) { const assetId = event.args.assetId.toString(); - const { timestamp } = await getBlockOrThrow(this.drift, { - blockNumber: event.blockNumber, + const { timestamp } = await this.drift.getBlock(event.blockNumber, { + throws: true, }); // Create a default empty short that we will update based on the events @@ -1079,11 +1075,11 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { const closedLongs = await this.contract.getEvents("CloseLong", { filter: { trader: account }, - toBlock: options?.block, + ...options, }); const closedLongsList: ClosedLong[] = await Promise.all( @@ -1098,12 +1094,9 @@ export class ReadHyperdrive extends ReadClient { assetId, bondAmount: event.args.bondAmount, baseAmount, - baseAmountPaid: 0n, // TODO: Remove this field, this is copy/paste from @hyperdrive/queries maturity: event.args.maturityTime, closedTimestamp: ( - await getBlockOrThrow(this.drift, { - blockNumber: event.blockNumber, - }) + await this.drift.getBlock(event.blockNumber, { throws: true }) ).timestamp, }; }), @@ -1119,19 +1112,21 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { const closedShorts = await this.contract.getEvents("CloseShort", { filter: { trader: account }, - toBlock: options?.block, + ...options, }); - const { checkpointDuration } = await this.getPoolConfig(options); + const { checkpointDuration } = await this.getPoolConfig({ + block: options?.toBlock, + }); const closedShortsList: ClosedShort[] = await Promise.all( closedShorts.map(async (event) => { const { assetId, maturityTime } = event.args; - const { timestamp } = await getBlockOrThrow(this.drift, { - blockNumber: event.blockNumber, + const { timestamp } = await this.drift.getBlock(event.blockNumber, { + throws: true, }); const baseAmount = event.args.asBase @@ -1160,7 +1155,7 @@ export class ReadHyperdrive extends ReadClient { options, }: { budget: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ maxBaseIn: bigint; maxSharesIn: bigint; @@ -1202,7 +1197,7 @@ export class ReadHyperdrive extends ReadClient { /** * Gets the maximum amount of bonds a user can open a long for. */ - async getMaxLong(options?: ContractReadOptions): Promise<{ + async getMaxLong(options?: ReadOptions): Promise<{ maxBaseIn: bigint; maxSharesIn: bigint; maxBondsOut: bigint; @@ -1236,9 +1231,7 @@ export class ReadHyperdrive extends ReadClient { }; } - getLpSharesTotalSupply(args?: { - options?: ContractReadOptions; - }): Promise { + getLpSharesTotalSupply(args?: { options?: ReadOptions }): Promise { return this.contract.read( "totalSupply", { tokenId: LP_ASSET_ID }, @@ -1254,7 +1247,7 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.contract.read( "balanceOf", @@ -1275,7 +1268,7 @@ export class ReadHyperdrive extends ReadClient { }: { asBase: boolean; account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise<{ lpShareBalance: bigint; baseAmountPaid: bigint; @@ -1284,13 +1277,13 @@ export class ReadHyperdrive extends ReadClient { }> { const addLiquidityEvents = await this.contract.getEvents("AddLiquidity", { filter: { provider: account }, - toBlock: options?.block, + ...options, }); const removeLiquidityEvents = await this.contract.getEvents( "RemoveLiquidity", { filter: { provider: account }, - toBlock: options?.block, + ...options, }, ); @@ -1356,11 +1349,8 @@ export class ReadHyperdrive extends ReadClient { addLiquidityEvents, removeLiquidityEvents, }: { - addLiquidityEvents: ContractEvent[]; - removeLiquidityEvents: ContractEvent< - typeof hyperdriveAbi, - "RemoveLiquidity" - >[]; + addLiquidityEvents: EventLog[]; + removeLiquidityEvents: EventLog[]; }) { const combinedEventsInOrder = [ ...addLiquidityEvents, @@ -1415,13 +1405,13 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { const removeLiquidityEvents = await this.contract.getEvents( "RemoveLiquidity", { filter: { provider: account }, - toBlock: options?.block, + ...options, }, ); return Promise.all( @@ -1444,9 +1434,7 @@ export class ReadHyperdrive extends ReadClient { withdrawalShareAmount, lpSharePrice, closedTimestamp: ( - await getBlockOrThrow(this.drift, { - blockNumber, - }) + await this.drift.getBlock(blockNumber, { throws: true }) ).timestamp, }; }), @@ -1461,7 +1449,7 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.contract.read( "balanceOf", @@ -1478,13 +1466,13 @@ export class ReadHyperdrive extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: Omit; }): Promise { const redeemedWithdrawalShareEvents = await this.contract.getEvents( "RedeemWithdrawalShares", { filter: { provider: account }, - toBlock: options?.block, + ...options, }, ); @@ -1500,7 +1488,7 @@ export class ReadHyperdrive extends ReadClient { withdrawalShareAmount, baseAmount, redeemedTimestamp: ( - await getBlockOrThrow(this.drift, { blockNumber }) + await this.drift.getBlock(blockNumber, { throws: true }) ).timestamp, }; }), @@ -1518,7 +1506,7 @@ export class ReadHyperdrive extends ReadClient { }: { amountIn: bigint; asBase: boolean; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ maturityTime: bigint; bondProceeds: bigint; @@ -1585,7 +1573,7 @@ export class ReadHyperdrive extends ReadClient { }: { amountOfBondsToShort: bigint; asBase: boolean; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ maturityTime: bigint; traderDeposit: bigint; @@ -1686,7 +1674,7 @@ export class ReadHyperdrive extends ReadClient { * @default 1e9 */ tolerance?: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -1729,7 +1717,7 @@ export class ReadHyperdrive extends ReadClient { maturityTime: bigint; bondAmountIn: bigint; asBase: boolean; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ amountOut: bigint; flatPlusCurveFee: bigint }> { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -1791,7 +1779,7 @@ export class ReadHyperdrive extends ReadClient { shortAmountIn: bigint; asBase: boolean; extraData?: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -1852,7 +1840,7 @@ export class ReadHyperdrive extends ReadClient { shortAmountIn: bigint; asBase: boolean; extraData?: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ amountOut: bigint; flatPlusCurveFee: bigint; @@ -1944,7 +1932,7 @@ export class ReadHyperdrive extends ReadClient { destination: `0x${string}`; asBase: boolean; extraData?: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise<{ lpSharesOut: bigint; slippagePaid: bigint }> { const poolConfig = await this.getPoolConfig(options); const poolInfo = await this.getPoolInfo(options); @@ -1994,7 +1982,7 @@ export class ReadHyperdrive extends ReadClient { destination: `0x${string}`; asBase: boolean; extraData?: `0x${string}`; - options?: ContractWriteOptions; + options?: WriteOptions; }): Promise<{ proceeds: bigint; withdrawalShares: bigint }> { const { proceeds, withdrawalShares } = await this.contract.simulateWrite( "removeLiquidity", @@ -2033,7 +2021,7 @@ export class ReadHyperdrive extends ReadClient { destination: `0x${string}`; asBase: boolean; extraData?: `0x${string}`; - options?: ContractWriteOptions; + options?: WriteOptions; }): Promise<{ baseProceeds: bigint; withdrawalSharesRedeemed: bigint; @@ -2089,7 +2077,7 @@ function calculateApyFromPrice({ } function isLongEvent( - event: ContractEvent, + event: EventLog, ): boolean { const { assetType } = decodeAssetFromTransferSingleEventData( event.data as `0x${string}`, diff --git a/packages/hyperdrive-js/src/hyperdrive/ReadWriteHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/ReadWriteHyperdrive.ts index 9b4506979..69fb1c136 100644 --- a/packages/hyperdrive-js/src/hyperdrive/ReadWriteHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/ReadWriteHyperdrive.ts @@ -1,9 +1,9 @@ import { - ContractReadOptions, - ContractWriteOptions, Drift, + ReadOptions, ReadWriteAdapter, ReadWriteContract, + WriteOptions, } from "@delvtech/drift"; import { NULL_BYTES } from "src/base/constants"; import { ReadWriteContractClientOptions } from "src/drift/ContractClient"; @@ -14,7 +14,7 @@ import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; type ReadWriteParams = { args: Args; - options?: ContractWriteOptions; + options?: WriteOptions; }; export interface ReadWriteHyperdriveOptions @@ -29,7 +29,7 @@ export class ReadWriteHyperdrive extends ReadHyperdrive { } async getBaseToken( - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { const address = await this.contract.read("baseToken", {}, options); return address === ReadWriteEth.address @@ -39,8 +39,6 @@ export class ReadWriteHyperdrive extends ReadHyperdrive { : new ReadWriteErc20({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } @@ -49,7 +47,6 @@ export class ReadWriteHyperdrive extends ReadHyperdrive { return new ReadWriteErc20({ address, drift: this.drift, - cacheNamespace: this.contract.cacheNamespace, }); } @@ -90,7 +87,7 @@ export class ReadWriteHyperdrive extends ReadHyperdrive { { ...options, onMined: (receipt) => { - this.contract.invalidateReadsMatching("getMarketState"); + this.contract.cache.invalidateReadsMatching("getMarketState"); options?.onMined?.(receipt); }, }, diff --git a/packages/hyperdrive-js/src/hyperdrive/checkpoint/types.ts b/packages/hyperdrive-js/src/hyperdrive/checkpoint/types.ts index 67b0c0450..0a79cc217 100644 --- a/packages/hyperdrive-js/src/hyperdrive/checkpoint/types.ts +++ b/packages/hyperdrive-js/src/hyperdrive/checkpoint/types.ts @@ -1,18 +1,13 @@ -import { - ContractEvent, - ContractReadOptions, - FunctionReturn, - Pretty, -} from "@delvtech/drift"; +import { Eval, EventLog, FunctionReturn, ReadOptions } from "@delvtech/drift"; import { HyperdriveAbi } from "src/hyperdrive/abi"; -export type Checkpoint = Pretty< +export type Checkpoint = Eval< { checkpointTime: bigint; } & FunctionReturn >; -export type CheckpointEvent = ContractEvent; +export type CheckpointEvent = EventLog; export type GetCheckpointTimeParams = ( | { @@ -30,7 +25,7 @@ export type GetCheckpointTimeParams = ( blockNumber?: bigint; } ) & { - options?: ContractReadOptions; + options?: ReadOptions; }; export type GetCheckpointParams = ( @@ -59,5 +54,5 @@ export type GetCheckpointParams = ( blockNumber?: bigint; } ) & { - options?: ContractReadOptions; + options?: ReadOptions; }; diff --git a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts index 0d571bdcd..85feb6b11 100644 --- a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadErc4626Hyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadHyperdrive, @@ -17,7 +17,7 @@ export interface ReadErc4626HyperdriveMixin { /** * Get a client for the tokenized vault for this Hyperdrive instance. */ - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -33,14 +33,12 @@ export function readErc4626HyperdriveMixin< super({ debugName, ...restOptions }); } - async getSharesToken(options?: ContractReadOptions): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadErc4626({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts index 598ed4e22..71c62799c 100644 --- a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadMockErc4626Hyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadHyperdriveOptions } from "src/hyperdrive/ReadHyperdrive"; import { ReadErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadErc4626Hyperdrive"; @@ -12,7 +12,7 @@ export class ReadMockErc4626Hyperdrive extends readMockErc4626HyperdriveMixin( * @internal */ export interface ReadMockErc4626HyperdriveMixin { - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -23,20 +23,19 @@ export function readMockErc4626HyperdriveMixin< >(Base: T): Constructor & T { return class extends Base { constructor(...[options]: any[]) { - const { debugName } = options as ReadHyperdriveOptions; - super({ debugName: debugName ?? "Mock ERC-4626 Hyperdrive", ...options }); + const { debugName = "Mock ERC-4626 Hyperdrive", ...restOptions } = + options as ReadHyperdriveOptions; + super({ + debugName, + ...restOptions, + }); } - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadMockErc4626({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts index dd3765b9c..846c609e0 100644 --- a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadWriteHyperdrive } from "src/hyperdrive/ReadWriteHyperdrive"; import { @@ -13,7 +13,7 @@ export class ReadWriteErc4626Hyperdrive extends readWriteErc4626HyperdriveMixin( export interface ReadWriteErc4626HyperdriveMixin extends ReadErc4626HyperdriveMixin { - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -23,16 +23,11 @@ export function readWriteErc4626HyperdriveMixin< T extends Constructor, >(Base: T): Constructor & T { return class extends readErc4626HyperdriveMixin(Base) { - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadWriteErc4626({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts index 1bbd691d3..ddac92e68 100644 --- a/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/erc4626/ReadWriteMockErc4626Hyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadWriteErc4626Hyperdrive } from "src/hyperdrive/erc4626/ReadWriteErc4626Hyperdrive"; import { ReadWriteMockErc4626 } from "src/token/erc4626/ReadWriteMockErc4626"; @@ -13,7 +13,7 @@ export class ReadWriteMockErc4626Hyperdrive extends readWriteMockErc4626Hyperdri export interface ReadWriteMockErc4626HyperdriveMixin extends ReadMockErc4626HyperdriveMixin { - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -22,18 +22,12 @@ export interface ReadWriteMockErc4626HyperdriveMixin export function readWriteMockErc4626HyperdriveMixin< T extends Constructor, >(Base: T): Constructor & T { - // return class extends readErc4626HyperdriveMixin(Base) { return class extends readMockErc4626HyperdriveMixin(Base) { - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); - return new ReadWriteMockErc4626({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts index 3371f388e..7ba90d5ce 100644 --- a/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadEzEthHyperdrive.ts @@ -1,10 +1,9 @@ -import { Contract, ContractReadOptions, ReadContract } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; -import { ReadHyperdrive } from "src/hyperdrive/ReadHyperdrive"; import { - EzEthHyperdriveAbi, - ezEthHyperdriveAbi, -} from "src/hyperdrive/ezeth/abi"; + ReadHyperdrive, + type ReadHyperdriveOptions, +} from "src/hyperdrive/ReadHyperdrive"; import { ReadErc20 } from "src/token/erc20/ReadErc20"; import { ReadEth } from "src/token/eth/ReadEth"; @@ -16,17 +15,15 @@ export class ReadEzEthHyperdrive extends readEzEthHyperdriveMixin( * @internal */ export interface ReadEzEthHyperdriveMixin { - ezEthHyperdriveContract: Contract; - /** * Get a client for ETH, the base token for this Hyperdrive instance. */ - getBaseToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; /** * Get a client for the EzETH token for this Hyperdrive instance. */ - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -36,23 +33,10 @@ export function readEzEthHyperdriveMixin>( Base: T, ): Constructor & T { return class extends Base { - ezEthHyperdriveContract: ReadContract; - constructor(...[options]: any[]) { - const { - debugName = "EzETH Hyperdrive", - address, - cache, - cacheNamespace, - ...rest - } = options as ConstructorParameters[0]; - super({ debugName, address, cache, cacheNamespace, ...rest }); - this.ezEthHyperdriveContract = this.drift.contract({ - abi: ezEthHyperdriveAbi, - address, - cache, - cacheNamespace, - }); + const { debugName = "EzETH Hyperdrive", ...restOptions } = + options as ReadHyperdriveOptions; + super({ debugName, ...restOptions }); } async getBaseToken(): Promise { @@ -66,8 +50,6 @@ export function readEzEthHyperdriveMixin>( return new ReadErc20({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts index 9b46bdc3d..d7ede03db 100644 --- a/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/ezeth/ReadWriteEzEthHyperdrive.ts @@ -1,11 +1,10 @@ -import { ContractReadOptions, ReadWriteContract } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadWriteHyperdrive } from "src/hyperdrive/ReadWriteHyperdrive"; import { ReadEzEthHyperdriveMixin, readEzEthHyperdriveMixin, } from "src/hyperdrive/ezeth/ReadEzEthHyperdrive"; -import { EzEthHyperdriveAbi } from "src/hyperdrive/ezeth/abi"; import { ReadWriteErc20 } from "src/token/erc20/ReadWriteErc20"; import { ReadWriteEth } from "src/token/eth/ReadWriteEth"; @@ -15,9 +14,8 @@ export class ReadWriteEzEthHyperdrive extends readWriteEzEthHyperdriveMixin( export interface ReadWriteEzEthHyperdriveMixin extends ReadEzEthHyperdriveMixin { - ezEthHyperdriveContract: ReadWriteContract; - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -27,23 +25,17 @@ export function readWriteEzEthHyperdriveMixin< T extends Constructor, >(Base: T): Constructor & T { return class extends readEzEthHyperdriveMixin(Base) { - declare ezEthHyperdriveContract: ReadWriteContract; - async getBaseToken(): Promise { return new ReadWriteEth({ drift: this.drift, }); } - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadWriteErc20({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/getHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/getHyperdrive.ts index efc2f2811..014885a60 100644 --- a/packages/hyperdrive-js/src/hyperdrive/getHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/getHyperdrive.ts @@ -22,35 +22,18 @@ export interface HyperdriveOptions } export type Hyperdrive = - T extends Drift ? ReadWriteHyperdrive : ReadHyperdrive; + T["adapter"] extends ReadWriteAdapter ? ReadWriteHyperdrive : ReadHyperdrive; -export async function getHyperdrive({ - address, - drift, - cache = drift.cache, - cacheNamespace, - earliestBlock, - debugName, - zapContractAddress, -}: HyperdriveOptions): Promise> { - cacheNamespace ??= await drift.getChainId(); - - const options: HyperdriveOptions = { - address, - drift, - cache, - cacheNamespace, - earliestBlock, - debugName, - zapContractAddress, - }; +export async function getHyperdrive( + options: HyperdriveOptions, +): Promise> { + const { address, drift } = options; const isReadWrite = isReadWriteOptions(options); const version = await drift.read({ abi: hyperdriveAbi, address, fn: "version", - cacheNamespace, }); const isV1_0_14 = semver.lte(version, "1.0.14"); @@ -60,7 +43,6 @@ export async function getHyperdrive({ abi: hyperdriveAbi, address, fn: "kind", - cacheNamespace, }); switch (kind) { @@ -99,5 +81,5 @@ export async function getHyperdrive({ function isReadWriteOptions( options: HyperdriveOptions, ): options is ReadWriteHyperdriveOptions { - return typeof options.drift.write === "function"; + return options.drift.isReadWrite(); } diff --git a/packages/hyperdrive-js/src/hyperdrive/longs/calculateMatureLongYieldAfterFees.ts b/packages/hyperdrive-js/src/hyperdrive/longs/calculateMatureLongYieldAfterFees.ts index 1198f2a18..a28c1ca24 100644 --- a/packages/hyperdrive-js/src/hyperdrive/longs/calculateMatureLongYieldAfterFees.ts +++ b/packages/hyperdrive-js/src/hyperdrive/longs/calculateMatureLongYieldAfterFees.ts @@ -12,6 +12,6 @@ export function calculateMatureLongYieldAfterFees({ decimals: number; }): bigint { // Flat fee is always 18 decimals - const poolFee = fixed(bondAmount, decimals).mul(flatFee).bigint; + const poolFee = fixed(bondAmount, decimals).mul(flatFee, 18).bigint; return bondAmount - baseAmountPaid - poolFee; } diff --git a/packages/hyperdrive-js/src/hyperdrive/longs/types.ts b/packages/hyperdrive-js/src/hyperdrive/longs/types.ts index 242ba269b..44d7b07d5 100644 --- a/packages/hyperdrive-js/src/hyperdrive/longs/types.ts +++ b/packages/hyperdrive-js/src/hyperdrive/longs/types.ts @@ -9,7 +9,7 @@ export interface Long { baseAmountPaid: bigint; } -export interface ClosedLong extends Long { +export interface ClosedLong extends Omit { // A closed long will include the baseAmount that was redeemed baseAmount: bigint; closedTimestamp: bigint; diff --git a/packages/hyperdrive-js/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts index d3cc5f1c4..f4957128d 100644 --- a/packages/hyperdrive-js/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/lseth/ReadLsEthHyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadHyperdrive, @@ -18,12 +18,12 @@ export interface ReadLsEthHyperdriveMixin { /** * Get a client for ETH, the base token for this Hyperdrive instance. */ - getBaseToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; /** * Get a client for the LsETH token for this Hyperdrive instance. */ - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -45,14 +45,12 @@ export function readLsEthHyperdriveMixin>( }); } - async getSharesToken(options?: ContractReadOptions): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadLsEth({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts index c612beac8..88dabbf47 100644 --- a/packages/hyperdrive-js/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/lseth/ReadWriteLsEthHyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadWriteHyperdrive } from "src/hyperdrive/ReadWriteHyperdrive"; import { @@ -14,23 +14,19 @@ export class ReadWriteLsEthHyperdrive extends readWriteLsEthHyperdriveMixin( export interface ReadWriteLsEthHyperdriveMixin extends ReadLsEthHyperdriveMixin { - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } export function readWriteLsEthHyperdriveMixin< T extends Constructor, >(Base: T): Constructor & T { return class extends readLsEthHyperdriveMixin(Base) { - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadWriteLsEth({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } diff --git a/packages/hyperdrive-js/src/hyperdrive/reth/ReadREthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/reth/ReadREthHyperdrive.ts index 379f9744f..c96aa2a34 100644 --- a/packages/hyperdrive-js/src/hyperdrive/reth/ReadREthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/reth/ReadREthHyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { fixed } from "@delvtech/fixed-point-wasm"; import { Constructor } from "src/base/types"; import { @@ -19,12 +19,12 @@ export interface ReadREthHyperdriveMixin { /** * Get a client for ETH, the base token for this Hyperdrive instance. */ - getBaseToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; /** * Get a client for the rETH token for this Hyperdrive instance. */ - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -46,13 +46,11 @@ export function readREthHyperdriveMixin>( }); } - async getSharesToken(options?: ContractReadOptions): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadREth({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } diff --git a/packages/hyperdrive-js/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts index 6c3f708d3..77fd399d2 100644 --- a/packages/hyperdrive-js/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/reth/ReadWriteREthHyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadWriteHyperdrive } from "src/hyperdrive/ReadWriteHyperdrive"; import { readREthHyperdriveMixin } from "src/hyperdrive/reth/ReadREthHyperdrive"; @@ -10,8 +10,8 @@ export class ReadWriteREthHyperdrive extends readWriteREthHyperdriveMixin( ) {} export interface ReadWriteREthHyperdriveMixin { - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -27,15 +27,11 @@ export function readWriteREthHyperdriveMixin< }); } - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadWriteREth({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/steth/ReadStEthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/steth/ReadStEthHyperdrive.ts index df8b07919..638cdf465 100644 --- a/packages/hyperdrive-js/src/hyperdrive/steth/ReadStEthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/steth/ReadStEthHyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { fixed } from "@delvtech/fixed-point-wasm"; import { Constructor } from "src/base/types"; import { @@ -25,12 +25,12 @@ export interface ReadStEthHyperdriveMixin { /** * Get a client for ETH, the base token for this Hyperdrive instance. */ - getBaseToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; /** * Get a client for the Lido stETH token for this Hyperdrive instance. */ - getSharesToken(options?: ContractReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } /** @@ -57,8 +57,6 @@ export function readStEthHyperdriveMixin>( return new ReadStEth({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } diff --git a/packages/hyperdrive-js/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts index 2e9713b95..be4cf1a30 100644 --- a/packages/hyperdrive-js/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/steth/ReadWriteStEthHyperdrive.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions, ReplaceProps } from "@delvtech/drift"; +import { ReadOptions, Replace } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadWriteHyperdrive, @@ -18,15 +18,12 @@ export class ReadWriteStEthHyperdrive extends readWriteStEthHyperdriveMixin( export interface ReadWriteStEthHyperdriveMixin extends ReadStEthHyperdriveMixin { - getBaseToken(options?: ContractReadOptions): Promise; - getSharesToken(options?: ContractReadOptions): Promise; + getBaseToken(options?: ReadOptions): Promise; + getSharesToken(options?: ReadOptions): Promise; } export interface ReadWriteStEthHyperdriveOptions - extends ReplaceProps< - ReadWriteHyperdriveOptions, - ReadStEthHyperdriveOptions - > {} + extends Replace {} export function readWriteStEthHyperdriveMixin< T extends Constructor, @@ -38,15 +35,11 @@ export function readWriteStEthHyperdriveMixin< }); } - async getSharesToken( - options?: ContractReadOptions, - ): Promise { + async getSharesToken(options?: ReadOptions): Promise { const { vaultSharesToken } = await this.getPoolConfig(options); return new ReadWriteStEth({ address: vaultSharesToken, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, }); } }; diff --git a/packages/hyperdrive-js/src/hyperdrive/testing/PoolConfig.ts b/packages/hyperdrive-js/src/hyperdrive/testing/PoolConfig.ts index 8a4b9ddb9..69dd7200b 100644 --- a/packages/hyperdrive-js/src/hyperdrive/testing/PoolConfig.ts +++ b/packages/hyperdrive-js/src/hyperdrive/testing/PoolConfig.ts @@ -1,8 +1,10 @@ -import { ZERO_ADDRESS } from "src/base/constants"; +import { ZERO_ADDRESS } from "@delvtech/drift"; import { PoolConfig } from "src/hyperdrive/types"; const SEVEN_DAYS = 604_800n; -export const simplePoolConfig7Days: PoolConfig = { +const THIRTY_DAYS = 2_592_000n; + +export const stubPoolConfig7Days: PoolConfig = { baseToken: ZERO_ADDRESS, vaultSharesToken: ZERO_ADDRESS, governance: ZERO_ADDRESS, @@ -26,8 +28,7 @@ export const simplePoolConfig7Days: PoolConfig = { checkpointRewarder: ZERO_ADDRESS, }; -const THIRTY_DAYS = 2_592_000n; -export const simplePoolConfig30Days: PoolConfig = { - ...simplePoolConfig7Days, +export const stubPoolConfig30Days: PoolConfig = { + ...stubPoolConfig7Days, positionDuration: THIRTY_DAYS, }; diff --git a/packages/hyperdrive-js/src/hyperdrive/testing/PoolInfo.ts b/packages/hyperdrive-js/src/hyperdrive/testing/PoolInfo.ts index e5c0eab58..3b8b1b30f 100644 --- a/packages/hyperdrive-js/src/hyperdrive/testing/PoolInfo.ts +++ b/packages/hyperdrive-js/src/hyperdrive/testing/PoolInfo.ts @@ -1,6 +1,6 @@ import { PoolInfo } from "src/hyperdrive/types"; -export const simplePoolInfo: PoolInfo = { +export const stubPoolInfo: PoolInfo = { shareReserves: 10000000000000000000000000n, bondReserves: 10217899519533796120000000n, vaultSharePrice: 1000000000000000000n, diff --git a/packages/hyperdrive-js/src/hyperdrive/testing/setupReadHyperdrive.ts b/packages/hyperdrive-js/src/hyperdrive/testing/setupReadHyperdrive.ts index dc618f56f..d9c68376d 100644 --- a/packages/hyperdrive-js/src/hyperdrive/testing/setupReadHyperdrive.ts +++ b/packages/hyperdrive-js/src/hyperdrive/testing/setupReadHyperdrive.ts @@ -1,27 +1,28 @@ import { ZERO_ADDRESS } from "@delvtech/drift"; -import { MockDrift } from "@delvtech/drift/testing"; -import { ReadHyperdrive_v1_0_14 } from "src/hyperdrive/v1.0.14/ReadHyperdrive_v1_0_14"; +import { + createMockDrift, + createStubBlock, + type MockContract, + type MockDrift, +} from "@delvtech/drift/testing"; +import type { HyperdriveAbi } from "src/hyperdrive/abi"; +import { ReadHyperdrive } from "src/hyperdrive/ReadHyperdrive"; -// No need to explicitly set return types as they are already set in the Stubs -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -export function setupReadHyperdrive() { - const drift = new MockDrift(); - // TODO: We use the v1.0.14 version of ReadHyperdrive to avoid the need to - // stub every `convertToShares` and `convertToBase` call since drift only - // supports stubbing calls with static values. It should be refactored to - // support stubbing a call with a function to dynamically calculate the return - // value based on arguments and options. - const readHyperdrive = new ReadHyperdrive_v1_0_14({ +export function setupReadHyperdrive(): { + drift: MockDrift; + contract: MockContract; + readHyperdrive: ReadHyperdrive; +} { + const drift = createMockDrift(); + const readHyperdrive = new ReadHyperdrive({ address: ZERO_ADDRESS, drift, }); - - // The ReadHyperdrive class doesn't infer that the contract is a MockContract. const contract = drift.contract({ abi: readHyperdrive.contract.abi, address: readHyperdrive.contract.address, }); - + drift.onGetBlock().resolves(createStubBlock()); contract.onRead("decimals").resolves(18); return { drift, diff --git a/packages/hyperdrive-js/src/hyperdrive/v1.0.14/ReadHyperdrive_v1_0_14.ts b/packages/hyperdrive-js/src/hyperdrive/v1.0.14/ReadHyperdrive_v1_0_14.ts index 6740f8fbd..5a1c4a790 100644 --- a/packages/hyperdrive-js/src/hyperdrive/v1.0.14/ReadHyperdrive_v1_0_14.ts +++ b/packages/hyperdrive-js/src/hyperdrive/v1.0.14/ReadHyperdrive_v1_0_14.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { fixed } from "@delvtech/fixed-point-wasm"; import { Constructor } from "src/base/types"; import { @@ -37,7 +37,7 @@ export function readHyperdriveMixin_v1_0_14< options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { const { vaultSharePrice } = await this.getPoolInfo(options); const decimals = await this.getDecimals(); @@ -50,7 +50,7 @@ export function readHyperdriveMixin_v1_0_14< options, }: { baseAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { const { vaultSharePrice } = await this.getPoolInfo(options); const decimals = await this.getDecimals(); diff --git a/packages/hyperdrive-js/src/registry/ReadRegistry.ts b/packages/hyperdrive-js/src/registry/ReadRegistry.ts index 1ea364381..c9309a953 100644 --- a/packages/hyperdrive-js/src/registry/ReadRegistry.ts +++ b/packages/hyperdrive-js/src/registry/ReadRegistry.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Address } from "abitype"; import { ReadContractClientOptions } from "src/drift/ContractClient"; import { ReadClient } from "src/drift/ReadClient"; @@ -19,8 +19,7 @@ export class ReadRegistry extends ReadClient { constructor({ debugName = "Hyperdrive Registry", address, - cache, - cacheNamespace, + epochBlock, ...rest }: ReadRegistryOptions) { super({ debugName, ...rest }); @@ -28,23 +27,21 @@ export class ReadRegistry extends ReadClient { this.contract = this.drift.contract({ abi: registryAbi, address, - cache, - cacheNamespace, + epochBlock, }); } /** * Get a {@linkcode ReadFactory} instance for each registered factory. */ - async getFactories(options?: ContractReadOptions): Promise { + async getFactories(options?: ReadOptions): Promise { const factoryAddresses = await this.getFactoryAddresses(options); return factoryAddresses.map( (address) => new ReadFactory({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ); } @@ -52,7 +49,7 @@ export class ReadRegistry extends ReadClient { /** * Get the address of all registered factories. */ - async getFactoryAddresses(options?: ContractReadOptions): Promise { + async getFactoryAddresses(options?: ReadOptions): Promise { const count = await this.contract.read("getNumberOfFactories", {}, options); if (count === 0n) { @@ -75,7 +72,7 @@ export class ReadRegistry extends ReadClient { */ async getFactoryInfo( factoryAddress: Address, - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { return this.contract.read( "getFactoryInfoWithMetadata", @@ -90,7 +87,7 @@ export class ReadRegistry extends ReadClient { */ async getFactoryInfos( factoryAddresses: Address[], - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { const readonlyInfos = await this.contract.read( "getFactoryInfosWithMetadata", @@ -104,15 +101,14 @@ export class ReadRegistry extends ReadClient { * Get a {@linkcode ReadHyperdrive} instance for each Hyperdrive instance * registered in the registry. */ - async getInstances(options?: ContractReadOptions): Promise { + async getInstances(options?: ReadOptions): Promise { const hyperdriveAddresses = await this.getInstanceAddresses(options); return hyperdriveAddresses.map( (address) => new ReadHyperdrive({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ); } @@ -120,9 +116,7 @@ export class ReadRegistry extends ReadClient { /** * Get the address of all Hyperdrive instances registered in the registry. */ - async getInstanceAddresses( - options?: ContractReadOptions, - ): Promise { + async getInstanceAddresses(options?: ReadOptions): Promise { const count = await this.contract.read("getNumberOfInstances", {}, options); if (count === 0n) { @@ -145,7 +139,7 @@ export class ReadRegistry extends ReadClient { */ async getInstanceInfo( instanceAddress: Address, - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { const { factory, ...rest } = await this.contract.read( "getInstanceInfoWithMetadata", @@ -156,8 +150,7 @@ export class ReadRegistry extends ReadClient { factory: new ReadFactory({ address: factory, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ...rest, }; @@ -168,7 +161,7 @@ export class ReadRegistry extends ReadClient { */ async getInstanceInfos( instanceAddresses: Address[], - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { const infos = await this.contract.read( "getInstanceInfosWithMetadata", @@ -179,8 +172,7 @@ export class ReadRegistry extends ReadClient { factory: new ReadFactory({ address: factory, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ...rest, })); diff --git a/packages/hyperdrive-js/src/registry/ReadWriteRegistry.ts b/packages/hyperdrive-js/src/registry/ReadWriteRegistry.ts index a539c77b0..d1627f9bc 100644 --- a/packages/hyperdrive-js/src/registry/ReadWriteRegistry.ts +++ b/packages/hyperdrive-js/src/registry/ReadWriteRegistry.ts @@ -1,9 +1,9 @@ import { - ContractReadOptions, Drift, + ReadOptions, ReadWriteAdapter, ReadWriteContract, - ReplaceProps, + Replace, } from "@delvtech/drift"; import { Address } from "abitype"; import { ReadWriteContractClientOptions } from "src/drift/ContractClient"; @@ -14,7 +14,7 @@ import { RegistryAbi } from "src/registry/abi"; import { ReadWriteInstanceInfoWithMetadata } from "src/registry/types"; export interface ReadWriteRegistryOptions - extends ReplaceProps {} + extends Replace {} export class ReadWriteRegistry extends ReadRegistry { declare drift: Drift; @@ -27,17 +27,14 @@ export class ReadWriteRegistry extends ReadRegistry { /** * Get a {@linkcode ReadWriteFactory} instance for each registered factory. */ - async getFactories( - options?: ContractReadOptions, - ): Promise { + async getFactories(options?: ReadOptions): Promise { const factoryAddresses = await this.getFactoryAddresses(options); return factoryAddresses.map( (address) => new ReadWriteFactory({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ); } @@ -46,9 +43,7 @@ export class ReadWriteRegistry extends ReadRegistry { * Get a {@linkcode ReadWriteHyperdrive} instance for each Hyperdrive instance * registered in the registry. */ - async getInstances( - options?: ContractReadOptions, - ): Promise { + async getInstances(options?: ReadOptions): Promise { const count = await this.contract.read("getNumberOfInstances", {}, options); if (count === 0n) { @@ -68,15 +63,14 @@ export class ReadWriteRegistry extends ReadRegistry { new ReadWriteHyperdrive({ address, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ); } async getInstanceInfo( instanceAddress: Address, - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { const { factory, ...rest } = await this.contract.read( "getInstanceInfoWithMetadata", @@ -87,8 +81,7 @@ export class ReadWriteRegistry extends ReadRegistry { factory: new ReadWriteFactory({ address: factory, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ...rest, }; @@ -99,7 +92,7 @@ export class ReadWriteRegistry extends ReadRegistry { */ async getInstanceInfos( instanceAddresses: Address[], - options?: ContractReadOptions, + options?: ReadOptions, ): Promise { const infos = await this.contract.read( "getInstanceInfosWithMetadata", @@ -110,8 +103,7 @@ export class ReadWriteRegistry extends ReadRegistry { factory: new ReadWriteFactory({ address: factory, drift: this.drift, - cache: this.contract.cache, - cacheNamespace: this.contract.cacheNamespace, + epochBlock: this.contract.epochBlock, }), ...rest, })); diff --git a/packages/hyperdrive-js/src/registry/types.ts b/packages/hyperdrive-js/src/registry/types.ts index 137c7469e..69f2ffab8 100644 --- a/packages/hyperdrive-js/src/registry/types.ts +++ b/packages/hyperdrive-js/src/registry/types.ts @@ -1,4 +1,4 @@ -import { FunctionReturn, ReplaceProps } from "@delvtech/drift"; +import { FunctionReturn, Replace } from "@delvtech/drift"; import { ReadFactory } from "src/factory/ReadFactory"; import { ReadWriteFactory } from "src/factory/ReadWriteFactory"; import { RegistryAbi } from "src/registry/abi"; @@ -16,7 +16,7 @@ export type FactoryInfoWithMetadata = FunctionReturn< * The info related to each Hyperdrive instance along with the metadata * associated with each instance. */ -export type ReadInstanceInfoWithMetadata = ReplaceProps< +export type ReadInstanceInfoWithMetadata = Replace< FunctionReturn, { /** @@ -27,7 +27,7 @@ export type ReadInstanceInfoWithMetadata = ReplaceProps< >; /** {@inheritDoc ReadInstanceInfoWithMetadata} */ -export type ReadWriteInstanceInfoWithMetadata = ReplaceProps< +export type ReadWriteInstanceInfoWithMetadata = Replace< ReadInstanceInfoWithMetadata, { /** {@inheritDoc ReadInstanceInfoWithMetadata.factory} */ diff --git a/packages/hyperdrive-js/src/token/ReadToken.ts b/packages/hyperdrive-js/src/token/ReadToken.ts index a582e2f25..2529ab37d 100644 --- a/packages/hyperdrive-js/src/token/ReadToken.ts +++ b/packages/hyperdrive-js/src/token/ReadToken.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { ReadClient } from "src/drift/ReadClient"; export interface ReadToken extends ReadClient { @@ -30,7 +30,7 @@ export interface ReadToken extends ReadClient { }: { owner: `0x${string}`; spender: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -41,6 +41,6 @@ export interface ReadToken extends ReadClient { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; } diff --git a/packages/hyperdrive-js/src/token/ReadWriteToken.ts b/packages/hyperdrive-js/src/token/ReadWriteToken.ts index 8515c6bbd..2b7575b9f 100644 --- a/packages/hyperdrive-js/src/token/ReadWriteToken.ts +++ b/packages/hyperdrive-js/src/token/ReadWriteToken.ts @@ -1,9 +1,8 @@ -import { ContractWriteOptions, ReplaceProps } from "@delvtech/drift"; +import { Replace, WriteOptions } from "@delvtech/drift"; import { ReadWriteClient } from "src/drift/ReadWriteClient"; import { ReadToken } from "src/token/ReadToken"; -export interface ReadWriteToken - extends ReplaceProps { +export interface ReadWriteToken extends Replace { /** * Give a spending allowance to a given spender. * @param spender - The address of the spender. @@ -18,6 +17,6 @@ export interface ReadWriteToken owner?: `0x${string}`; spender: `0x${string}`; amount: bigint; - options?: ContractWriteOptions; + options?: WriteOptions; }): Promise<`0x${string}`>; } diff --git a/packages/hyperdrive-js/src/token/erc20/ReadErc20.ts b/packages/hyperdrive-js/src/token/erc20/ReadErc20.ts index 9fac7e2b0..89ac1b008 100644 --- a/packages/hyperdrive-js/src/token/erc20/ReadErc20.ts +++ b/packages/hyperdrive-js/src/token/erc20/ReadErc20.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Address } from "abitype"; import { ReadContractClientOptions } from "src/drift/ContractClient"; import { ReadClient } from "src/drift/ReadClient"; @@ -13,25 +13,20 @@ export class ReadErc20 extends ReadClient implements ReadToken { constructor({ debugName = "ERC-20 Token", address, - cache, - cacheNamespace, + epochBlock, ...rest }: ReadErc20Options) { - super({ debugName, ...rest }); + super({ debugName, epochBlock, ...rest }); this.contract = this.drift.contract({ abi: erc20Abi, address, - cache, - cacheNamespace, + epochBlock, }); } get address(): Address { return this.contract.address; } - get namespace(): PropertyKey | undefined { - return this.contract.cacheNamespace; - } getName(): Promise { return this.contract.read("name"); @@ -52,7 +47,7 @@ export class ReadErc20 extends ReadClient implements ReadToken { }: { owner: `0x${string}`; spender: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.contract.read("allowance", { owner, spender }, options); } @@ -62,7 +57,7 @@ export class ReadErc20 extends ReadClient implements ReadToken { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.contract.read("balanceOf", { account }, options); } @@ -70,7 +65,7 @@ export class ReadErc20 extends ReadClient implements ReadToken { /** * Get the total supply of the token. */ - getTotalSupply(options?: ContractReadOptions): Promise { + getTotalSupply(options?: ReadOptions): Promise { return this.contract.read("totalSupply", {}, options); } } diff --git a/packages/hyperdrive-js/src/token/erc20/ReadWriteErc20.ts b/packages/hyperdrive-js/src/token/erc20/ReadWriteErc20.ts index f1075bd3d..f64dd4710 100644 --- a/packages/hyperdrive-js/src/token/erc20/ReadWriteErc20.ts +++ b/packages/hyperdrive-js/src/token/erc20/ReadWriteErc20.ts @@ -1,8 +1,8 @@ import { - ContractWriteOptions, Drift, ReadWriteAdapter, ReadWriteContract, + WriteOptions, } from "@delvtech/drift"; import { ReadWriteContractClientOptions } from "src/drift/ContractClient"; import { ReadWriteToken } from "src/token/ReadWriteToken"; @@ -27,7 +27,7 @@ export class ReadWriteErc20 extends ReadErc20 implements ReadWriteToken { owner?: `0x${string}`; spender: `0x${string}`; amount: bigint; - options?: ContractWriteOptions; + options?: WriteOptions; }): Promise<`0x${string}`> { const hash = await this.contract.write( "approve", @@ -35,7 +35,7 @@ export class ReadWriteErc20 extends ReadErc20 implements ReadWriteToken { { ...options, onMined: (receipt) => { - this.contract.invalidateReadsMatching("allowance"); + this.contract.cache.invalidateReadsMatching("allowance"); options?.onMined?.(receipt); }, }, diff --git a/packages/hyperdrive-js/src/token/erc4626/ReadErc4626.ts b/packages/hyperdrive-js/src/token/erc4626/ReadErc4626.ts index d263fe299..45cbfe162 100644 --- a/packages/hyperdrive-js/src/token/erc4626/ReadErc4626.ts +++ b/packages/hyperdrive-js/src/token/erc4626/ReadErc4626.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; import { Erc4626Abi, erc4626Abi } from "src/token/erc4626/abi"; @@ -14,7 +14,7 @@ export interface ReadErc4626Mixin { /** * Get the total supply of assets in the vault. */ - getTotalAssets(options?: ContractReadOptions): Promise; + getTotalAssets(options?: ReadOptions): Promise; /** * Convert a shares amount to an assets amount. @@ -24,7 +24,7 @@ export interface ReadErc4626Mixin { options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -35,7 +35,7 @@ export interface ReadErc4626Mixin { options, }: { assetsAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; } @@ -52,20 +52,18 @@ export function readErc4626Mixin>( const { debugName = "ERC-4626 Tokenized Vault", address, - cache, - cacheNamespace, - ...rest + epochBlock, + ...restOptions } = options as ReadErc20Options; - super({ debugName, address, cache, cacheNamespace, ...rest }); + super({ debugName, address, epochBlock, ...restOptions }); this.erc4626Contract = this.drift.contract({ abi: erc4626Abi, address, - cache, - cacheNamespace, + epochBlock, }); } - getTotalAssets(options?: ContractReadOptions): Promise { + getTotalAssets(options?: ReadOptions): Promise { return this.erc4626Contract.read("totalAssets", {}, options); } @@ -74,7 +72,7 @@ export function readErc4626Mixin>( options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.erc4626Contract.read( "convertToAssets", @@ -88,7 +86,7 @@ export function readErc4626Mixin>( options, }: { assetsAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.erc4626Contract.read( "convertToShares", diff --git a/packages/hyperdrive-js/src/token/erc4626/ReadMockErc4626.ts b/packages/hyperdrive-js/src/token/erc4626/ReadMockErc4626.ts index 657c2b13a..2ebe66aa6 100644 --- a/packages/hyperdrive-js/src/token/erc4626/ReadMockErc4626.ts +++ b/packages/hyperdrive-js/src/token/erc4626/ReadMockErc4626.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { mockErc4626Abi, MockErc4626Abi } from "src/token/erc4626/abi"; import { ReadErc4626 } from "src/token/erc4626/ReadErc4626"; @@ -14,7 +14,7 @@ export interface ReadMockErc4626Mixin { /** * Get the rate of the vault. */ - getRate(options?: ContractReadOptions): Promise; + getRate(options?: ReadOptions): Promise; } /** @@ -30,23 +30,21 @@ export function readMockErc4626Mixin>( const { debugName = "Mock ERC-4626 Tokenized Vault", address, - cache, - cacheNamespace, + epochBlock, ...rest } = options as ConstructorParameters[0]; - super({ debugName, address, cache, cacheNamespace, ...rest }); + super({ debugName, address, epochBlock, ...rest }); this.mockErc4626Contract = this.drift.contract({ abi: mockErc4626Abi, address, - cache, - cacheNamespace, + epochBlock, }); } /** * Get the rate of the vault. */ - getRate(options?: ContractReadOptions): Promise { + getRate(options?: ReadOptions): Promise { return this.mockErc4626Contract.read("getRate", {}, options); } }; diff --git a/packages/hyperdrive-js/src/token/erc4626/ReadWriteMockErc4626.ts b/packages/hyperdrive-js/src/token/erc4626/ReadWriteMockErc4626.ts index 4c04a4ae0..c39ff8b82 100644 --- a/packages/hyperdrive-js/src/token/erc4626/ReadWriteMockErc4626.ts +++ b/packages/hyperdrive-js/src/token/erc4626/ReadWriteMockErc4626.ts @@ -1,4 +1,4 @@ -import { ContractWriteOptions, ReadWriteContract } from "@delvtech/drift"; +import { ReadWriteContract, WriteOptions } from "@delvtech/drift"; import { MockErc4626Abi } from "src/token/erc4626/abi"; import { readMockErc4626Mixin } from "src/token/erc4626/ReadMockErc4626"; import { ReadWriteErc4626 } from "src/token/erc4626/ReadWriteErc4626"; @@ -18,7 +18,7 @@ export class ReadWriteMockErc4626 extends readMockErc4626Mixin( }: { receiver: `0x${string}`; sharesAmount: bigint; - options?: ContractWriteOptions; + options?: WriteOptions; }): Promise<`0x${string}`> { return this.mockErc4626Contract.write( "mint", @@ -38,7 +38,7 @@ export class ReadWriteMockErc4626 extends readMockErc4626Mixin( options, }: { rate: bigint; - options?: ContractWriteOptions; + options?: WriteOptions; }): Promise<`0x${string}`> { return this.mockErc4626Contract.write("setRate", { _rate_: rate }, options); } diff --git a/packages/hyperdrive-js/src/token/eth/ReadEth.ts b/packages/hyperdrive-js/src/token/eth/ReadEth.ts index 48a4f552e..ffae9ed3b 100644 --- a/packages/hyperdrive-js/src/token/eth/ReadEth.ts +++ b/packages/hyperdrive-js/src/token/eth/ReadEth.ts @@ -1,4 +1,4 @@ -import { ContractReadOptions } from "@delvtech/drift"; +import { ReadOptions } from "@delvtech/drift"; import { ReadClient, ReadClientOptions } from "src/drift/ReadClient"; import { ReadToken } from "src/token/ReadToken"; @@ -40,7 +40,7 @@ export class ReadEth extends ReadClient implements ReadToken { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.drift.getBalance({ address: account, diff --git a/packages/hyperdrive-js/src/token/lseth/ReadLsEth.ts b/packages/hyperdrive-js/src/token/lseth/ReadLsEth.ts index 5fd3792e3..74d88fcc5 100644 --- a/packages/hyperdrive-js/src/token/lseth/ReadLsEth.ts +++ b/packages/hyperdrive-js/src/token/lseth/ReadLsEth.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; import { LsEthAbi, lsEthAbi } from "src/token/lseth/abi"; @@ -14,7 +14,7 @@ export interface ReadLsEthMixin { /** * Get the total supply of underlying eth in the lsEth contract. */ - getTotalEthSupply(options?: ContractReadOptions): Promise; + getTotalEthSupply(options?: ReadOptions): Promise; /** * Get the underlying eth balance of an account. @@ -24,7 +24,7 @@ export interface ReadLsEthMixin { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -35,7 +35,7 @@ export interface ReadLsEthMixin { options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -46,7 +46,7 @@ export interface ReadLsEthMixin { options, }: { ethBalance: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; } @@ -60,18 +60,22 @@ export function readLsEthMixin>( lsEthContract: Contract; constructor(...[options]: any[]) { - const { drift, address, cache, cacheNamespace } = - options as ReadErc20Options; - super({ address, drift, cache, cacheNamespace }); + const { + debugName = "lsETH Token", + drift, + address, + epochBlock, + ...restOptions + } = options as ReadErc20Options; + super({ debugName, address, drift, epochBlock, ...restOptions }); this.lsEthContract = drift.contract({ abi: lsEthAbi, address, - cache, - cacheNamespace, + epochBlock, }); } - async getTotalEthSupply(options?: ContractReadOptions): Promise { + async getTotalEthSupply(options?: ReadOptions): Promise { return this.lsEthContract.read("totalUnderlyingSupply", {}, options); } @@ -80,7 +84,7 @@ export function readLsEthMixin>( options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.lsEthContract.read( "balanceOfUnderlying", @@ -94,7 +98,7 @@ export function readLsEthMixin>( options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.lsEthContract.read( "underlyingBalanceFromShares", @@ -110,7 +114,7 @@ export function readLsEthMixin>( options, }: { ethBalance: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.lsEthContract.read( "sharesFromUnderlyingBalance", diff --git a/packages/hyperdrive-js/src/token/reth/ReadREth.ts b/packages/hyperdrive-js/src/token/reth/ReadREth.ts index 2bcdb7691..f28cec05c 100644 --- a/packages/hyperdrive-js/src/token/reth/ReadREth.ts +++ b/packages/hyperdrive-js/src/token/reth/ReadREth.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; import { REthAbi, rEthAbi } from "src/token/reth/abi"; @@ -14,7 +14,7 @@ export interface ReadREthMixin { /** * Get the total supply of underlying eth in the rETH contract. */ - getTotalEthSupply(options?: ContractReadOptions): Promise; + getTotalEthSupply(options?: ReadOptions): Promise; /** * Get the underlying eth balance of an account. @@ -24,7 +24,7 @@ export interface ReadREthMixin { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -35,7 +35,7 @@ export interface ReadREthMixin { options, }: { rEthAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -46,7 +46,7 @@ export interface ReadREthMixin { options, }: { ethAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; } @@ -60,18 +60,22 @@ export function readREthMixin>( rEthContract: Contract; constructor(...[options]: any[]) { - const { drift, address, cache, cacheNamespace } = - options as ReadErc20Options; - super({ address, drift, cache, cacheNamespace }); + const { + debugName = "rETH Token", + drift, + address, + epochBlock, + ...restOptions + } = options as ReadErc20Options; + super({ debugName, address, drift, epochBlock, ...restOptions }); this.rEthContract = drift.contract({ abi: rEthAbi, address, - cache, - cacheNamespace, + epochBlock, }); } - async getTotalEthSupply(options?: ContractReadOptions): Promise { + async getTotalEthSupply(options?: ReadOptions): Promise { return this.rEthContract.read("getTotalCollateral", {}, options); } @@ -80,7 +84,7 @@ export function readREthMixin>( options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { const rEthBalance = await this.getBalanceOf({ account, options }); return this.rEthContract.read( @@ -95,7 +99,7 @@ export function readREthMixin>( options, }: { rEthAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.rEthContract.read( "getEthValue", @@ -111,7 +115,7 @@ export function readREthMixin>( options, }: { ethAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.rEthContract.read( "getRethValue", diff --git a/packages/hyperdrive-js/src/token/steth/ReadStEth.ts b/packages/hyperdrive-js/src/token/steth/ReadStEth.ts index dadbc9f19..0514318c4 100644 --- a/packages/hyperdrive-js/src/token/steth/ReadStEth.ts +++ b/packages/hyperdrive-js/src/token/steth/ReadStEth.ts @@ -1,4 +1,4 @@ -import { Contract, ContractReadOptions } from "@delvtech/drift"; +import { Contract, ReadOptions } from "@delvtech/drift"; import { Constructor } from "src/base/types"; import { ReadErc20, ReadErc20Options } from "src/token/erc20/ReadErc20"; import { StEthAbi, stEthAbi } from "src/token/steth/abi"; @@ -19,7 +19,7 @@ export interface ReadStEthMixin { options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -31,7 +31,7 @@ export interface ReadStEthMixin { options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; /** @@ -43,7 +43,7 @@ export interface ReadStEthMixin { options, }: { ethAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise; } @@ -60,16 +60,14 @@ export function readStEthMixin>( const { debugName = "stETH Token", address, - cache, - cacheNamespace, - ...rest + epochBlock, + ...restOptions } = options as ReadErc20Options; - super({ debugName, address, cache, cacheNamespace, ...rest }); + super({ debugName, address, epochBlock, ...restOptions }); this.stEthContract = this.drift.contract({ abi: stEthAbi, address, - cache, - cacheNamespace, + epochBlock, }); } @@ -78,7 +76,7 @@ export function readStEthMixin>( options, }: { account: `0x${string}`; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.stEthContract.read( "sharesOf", @@ -92,7 +90,7 @@ export function readStEthMixin>( options, }: { sharesAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.stEthContract.read( "getPooledEthByShares", @@ -106,7 +104,7 @@ export function readStEthMixin>( options, }: { ethAmount: bigint; - options?: ContractReadOptions; + options?: ReadOptions; }): Promise { return this.stEthContract.read( "getSharesByPooledEth", diff --git a/packages/hyperdrive-viem/.eslintrc b/packages/hyperdrive-viem/.eslintrc deleted file mode 100644 index 18046649e..000000000 --- a/packages/hyperdrive-viem/.eslintrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "root": true, - "extends": ["@hyperdrive/eslint-config"] -} diff --git a/packages/hyperdrive-viem/.gitignore b/packages/hyperdrive-viem/.gitignore deleted file mode 100644 index db4c6d9b6..000000000 --- a/packages/hyperdrive-viem/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -node_modules \ No newline at end of file diff --git a/packages/hyperdrive-viem/.prettierignore b/packages/hyperdrive-viem/.prettierignore deleted file mode 100644 index f06235c46..000000000 --- a/packages/hyperdrive-viem/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist diff --git a/packages/hyperdrive-viem/.prettierrc.mjs b/packages/hyperdrive-viem/.prettierrc.mjs deleted file mode 100644 index c9a63a1d6..000000000 --- a/packages/hyperdrive-viem/.prettierrc.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import repoConfig from "@hyperdrive/prettier-config"; - -/** @type {import("prettier").Config} */ -export default { - ...repoConfig, - plugins: ["prettier-plugin-organize-imports"], -}; diff --git a/packages/hyperdrive-viem/CHANGELOG.md b/packages/hyperdrive-viem/CHANGELOG.md deleted file mode 100644 index 99f1381ac..000000000 --- a/packages/hyperdrive-viem/CHANGELOG.md +++ /dev/null @@ -1,173 +0,0 @@ -# @delvtech/hyperdrive-viem - -## 3.1.1 - -### Patch Changes - -- Updated dependencies [722047a] - - @delvtech/hyperdrive-js@0.0.2 - -## 3.1.0 - -### Minor Changes - -- 7a034fc: Refactored to drift under the hood - -### Patch Changes - -- Updated dependencies [7a034fc] - - @delvtech/hyperdrive-js@0.0.1 - -## 3.0.6 - -### Patch Changes - -- @delvtech/hyperdrive-js-core@3.0.6 - -## 3.0.5 - -### Patch Changes - -- @delvtech/hyperdrive-js-core@3.0.5 - -## 3.0.4 - -### Patch Changes - -- Updated dependencies [bd6d2da] - - @delvtech/hyperdrive-js-core@3.0.4 - -## 3.0.3 - -### Patch Changes - -- Updated dependencies [40b8f1b] - - @delvtech/hyperdrive-js-core@3.0.3 - -## 3.0.2 - -### Patch Changes - -- 5eaa737: Bump evm-client-viem version to 0.6.3 to fix bug causing event args to not be sent in ethGetLogs - -## 3.0.1 - -### Patch Changes - -- 8e77c04: Add `earliestBlock` option to `ReadModel` and bump `evm-client-viem` version to use `eth_getLogs` rather than `eth_getFilterLogs`. -- Updated dependencies [8e77c04] - - @delvtech/hyperdrive-js-core@3.0.1 - -## 3.0.0 - -### Major Changes - -- b26e00b: 🚨 **Breaking Change**: Upgraded to Hyperdrive `v1.0.16`. The updated models, e.g. `ReadHyperdrive` are no longer compatible for `<=1.0.14` contracts. To continue using the SDK with `<=1.0.14` contracts, import the corresponding model from the `/v1.0.14` import path. E.g., `import { ReadHyperdrive_v1_0_14 } from "@delvtech/hyperdrive-viem/v1.0.14"`. - -### Patch Changes - -- Updated dependencies [19814a4] -- Updated dependencies [b26e00b] - - @delvtech/hyperdrive-js-core@3.0.0 - -## 2.4.3 - -### Patch Changes - -- @delvtech/hyperdrive-js-core@2.4.3 - -## 2.4.2 - -### Patch Changes - -- @delvtech/hyperdrive-js-core@2.4.2 - -## 2.4.1 - -### Patch Changes - -- @delvtech/hyperdrive-js-core@2.4.1 - -## 2.4.0 - -### Patch Changes - -- Updated dependencies [fc33e22] -- Updated dependencies [f8f4078] - - @delvtech/hyperdrive-js-core@2.4.0 - -## 2.3.1 - -### Patch Changes - -- Updated dependencies [5913c54] - - @delvtech/hyperdrive-js-core@2.3.1 - -## 2.3.0 - -### Minor Changes - -- fece201: Updated the `@delvtech/hyperdrive-core` version and made it fixed. - -### Patch Changes - -- Updated dependencies [21dca9c] -- Updated dependencies [21dca9c] -- Updated dependencies [b91debc] - - @delvtech/hyperdrive-js-core@2.3.0 - -## 0.1.0 - -### Minor Changes - -- 95b0406: Upgrade to the latest v1.0.6 smart contracts - -### Patch Changes - -- Updated dependencies [95b0406] - - @delvtech/hyperdrive-js-core@2.0.0 - - @delvtech/hyperdrive-artifacts@0.3.0 - -## 0.0.5 - -### Patch Changes - -- Updated dependencies [7921848] - - @delvtech/hyperdrive-artifacts@0.2.0 - - @delvtech/hyperdrive-js-core@1.0.0 - -## 0.0.4 - -### Patch Changes - -- Updated dependencies [0696ad7] -- Updated dependencies [ac4c4ee] - - @delvtech/hyperdrive-artifacts@0.1.0 - - @delvtech/hyperdrive-js-core@0.0.4 - -## 0.0.3 - -### Patch Changes - -- Updated dependencies [de73cff] -- Updated dependencies [de73cff] - - @delvtech/hyperdrive-js-core@0.0.3 - - @delvtech/hyperdrive-artifacts@0.0.3 - -## 0.0.2 - -### Patch Changes - -- 1636855: Update license field in packages.json and add publishConfig to artifacts package.json -- Updated dependencies [1636855] - - @delvtech/hyperdrive-artifacts@0.0.2 - - @delvtech/hyperdrive-js-core@0.0.2 - -## 0.0.1 - -### Patch Changes - -- 3c1bc5b: 🚀 -- Updated dependencies [3c1bc5b] - - @delvtech/hyperdrive-js-core@0.0.1 - - @delvtech/hyperdrive-artifacts@0.0.1 diff --git a/packages/hyperdrive-viem/LICENSE b/packages/hyperdrive-viem/LICENSE deleted file mode 100644 index 4f4a9cf45..000000000 --- a/packages/hyperdrive-viem/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - 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 [2024] [DELV, Inc] - - 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/packages/hyperdrive-viem/README.md b/packages/hyperdrive-viem/README.md deleted file mode 100644 index c9ad7dcf7..000000000 --- a/packages/hyperdrive-viem/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# @delvtech/hyperdrive-viem - -A [Viem](https://viem.sh) implementation of the [Hyperdrive Typescript SDK](https://hyperdrive-js.delv.tech) - -### Installation - -```bash -npm install viem @delvtech/hyperdrive-viem -``` - -### Quick Start - -```typescript -import { createReadHyperdrive } from "@delvtech/hyperdrive-viem"; -import { publicClient } from "./client"; - -const hyperdrive = createReadHyperdrive({ - address: "0x...", // hyperdrive contract address - publicClient, -}); - -const myLongs = hyperdrive.getOpenLongs({ - account: "0x..." -}); -``` diff --git a/packages/hyperdrive-viem/package.json b/packages/hyperdrive-viem/package.json deleted file mode 100644 index 36f741068..000000000 --- a/packages/hyperdrive-viem/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "@delvtech/hyperdrive-viem", - "version": "3.1.1", - "license": "AGPL-3.0", - "type": "module", - "scripts": { - "build": "tsup", - "watch": "npm run build -- --watch", - "typecheck": "tsc --noEmit" - }, - "peerDependencies": { - "viem": "^2.7.8" - }, - "dependencies": { - "@delvtech/drift": "^0.0.1-beta.11", - "@delvtech/drift-viem": "^0.0.1-beta.13", - "@delvtech/hyperdrive-js": "0.0.2" - }, - "devDependencies": { - "@hyperdrive/eslint-config": "*", - "@hyperdrive/prettier-config": "*", - "@hyperdrive/tsconfig": "*", - "prettier-plugin-organize-imports": "3.2.4", - "tsup": "^7.2.0", - "typescript": "^5.0.2", - "viem": "^2.7.8" - }, - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - ".": { - "types": "./dist/index.d.ts", - "default": "./dist/index.js", - "require": "./dist/index.cjs" - }, - "./v1.0.14": { - "types": "./dist/v1.0.14.d.ts", - "default": "./dist/v1.0.14.js", - "require": "./dist/v1.0.14.cjs" - }, - "./package.json": "./package.json" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/hyperdrive-viem/src/exports/index.ts b/packages/hyperdrive-viem/src/exports/index.ts deleted file mode 100644 index 9f724f516..000000000 --- a/packages/hyperdrive-viem/src/exports/index.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { - ReadClientOptions as BaseReadClientOptions, - ReadWriteClientOptions as BaseReadWriteClientOptions, -} from "@delvtech/hyperdrive-js"; -import { ViemReadClientOptions } from "src/viem/viemReadMixin"; -import { ViemReadWriteClientOptions } from "src/viem/viemReadWriteMixin"; - -// Factory -export { - ReadFactory, - ReadWriteFactory, - type ReadFactoryOptions, - type ReadWriteFactoryOptions, -} from "src/factory"; - -// Registry -export { - ReadRegistry, - ReadWriteRegistry, - type ReadRegistryOptions, - type ReadWriteRegistryOptions, -} from "src/registry"; - -// Hyperdrive // - -export { - getHyperdrive, - type Hyperdrive, - type HyperdriveOptions, -} from "src/hyperdrive/getHyperdrive"; - -// base -export { - ReadHyperdrive, - ReadWriteHyperdrive, - type ReadHyperdriveOptions, - type ReadWriteHyperdriveOptions, -} from "src/hyperdrive/base"; - -// erc-4626 -export { - ReadErc4626Hyperdrive, - ReadMockErc4626Hyperdrive, - ReadWriteErc4626Hyperdrive, - ReadWriteMockErc4626Hyperdrive, -} from "src/hyperdrive/erc4626"; - -// ezeth -export { - ReadEzEthHyperdrive, - ReadWriteEzEthHyperdrive, -} from "src/hyperdrive/ezeth"; - -// lseth -export { - ReadLsEthHyperdrive, - ReadWriteLsEthHyperdrive, -} from "src/hyperdrive/lseth"; - -// reth -export { - ReadREthHyperdrive, - ReadWriteREthHyperdrive, -} from "src/hyperdrive/reth"; - -// steth -export { - ReadStEthHyperdrive, - ReadWriteStEthHyperdrive, - type ReadStEthHyperdriveOptions, - type ReadWriteStEthHyperdriveOptions, -} from "src/hyperdrive/steth"; - -// Client -export type ReadClientOptions = ViemReadClientOptions; -export type ReadWriteClientOptions = - ViemReadWriteClientOptions; - -// Re-exports // - -export type { BaseReadClientOptions, BaseReadWriteClientOptions }; - -export { - adjustAmountByPercentage, - calculateAprFromPrice, - calculateMatureLongYieldAfterFees, - erc20Abi, - erc4626Abi, - ezEthHyperdriveAbi, - factoryAbi, - getHprFromApr, - getHprFromApy, - hyperdriveAbi, - HyperdriveSdkError, - lsEthAbi, - mockErc4626Abi, - ReadClient, - ReadErc20, - ReadErc4626, - ReadEth, - ReadLsEth, - ReadMockErc4626, - ReadREth, - ReadStEth, - ReadWriteClient, - ReadWriteErc20, - ReadWriteErc4626, - ReadWriteEth, - ReadWriteLsEth, - ReadWriteMockErc4626, - ReadWriteREth, - ReadWriteStEth, - registryAbi, - rEthAbi, - stEthAbi, - type ClosedLong, - type ClosedLpShares, - type ClosedShort, - type Constructor, - type ContractClientOptions, - type Erc20Abi, - type Erc4626Abi, - type EzEthHyperdriveAbi, - type FactoryAbi, - type HyperdriveAbi, - type Long, - type LsEthAbi, - type MarketState, - type MockErc4626Abi, - type OpenLongPositionReceived, - type OpenShort, - type PoolConfig, - type PoolInfo, - type ReadContractClientOptions, - type ReadErc20Options, - type ReadEthOptions, - type ReadToken, - type ReadWriteContractClientOptions, - type ReadWriteErc20Options, - type ReadWriteEthOptions, - type ReadWriteToken, - type RedeemedWithdrawalShares, - type RegistryAbi, - type REthAbi, - type Short, - type StEthAbi, -} from "@delvtech/hyperdrive-js"; diff --git a/packages/hyperdrive-viem/src/exports/v1.0.14.ts b/packages/hyperdrive-viem/src/exports/v1.0.14.ts deleted file mode 100644 index ba4875e5c..000000000 --- a/packages/hyperdrive-viem/src/exports/v1.0.14.ts +++ /dev/null @@ -1,37 +0,0 @@ -// base -export { - ReadHyperdrive_v1_0_14, - ReadWriteHyperdrive_v1_0_14, -} from "src/hyperdrive/v1.0.14/base"; - -// erc-4626 -export { - ReadErc4626Hyperdrive_v1_0_14, - ReadMockErc4626Hyperdrive_v1_0_14, - ReadWriteErc4626Hyperdrive_v1_0_14, - ReadWriteMockErc4626Hyperdrive_v1_0_14, -} from "src/hyperdrive/v1.0.14/erc4626"; - -// ezeth -export { - ReadEzEthHyperdrive_v1_0_14, - ReadWriteEzEthHyperdrive_v1_0_14, -} from "src/hyperdrive/v1.0.14/ezeth"; - -// lseth -export { - ReadLsEthHyperdrive_v1_0_14, - ReadWriteLsEthHyperdrive_v1_0_14, -} from "src/hyperdrive/v1.0.14/lseth"; - -// reth -export { - ReadREthHyperdrive_v1_0_14, - ReadWriteREthHyperdrive_v1_0_14, -} from "src/hyperdrive/v1.0.14/reth"; - -// steth -export { - ReadStEthHyperdrive_v1_0_14, - ReadWriteStEthHyperdrive_v1_0_14, -} from "src/hyperdrive/v1.0.14/steth"; diff --git a/packages/hyperdrive-viem/src/factory.ts b/packages/hyperdrive-viem/src/factory.ts deleted file mode 100644 index e4e056b05..000000000 --- a/packages/hyperdrive-viem/src/factory.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { - ReadFactory as BaseReadFactory, - ReadFactoryOptions as BaseReadFactoryOptions, - ReadWriteFactory as BaseReadWriteFactory, - ReadWriteFactoryOptions as BaseReadWriteFactoryOptions, -} from "@delvtech/hyperdrive-js"; -import { ViemReadClientOptions, viemReadMixin } from "src/viem/viemReadMixin"; -import { - ViemReadWriteClientOptions, - viemReadWriteMixin, -} from "src/viem/viemReadWriteMixin"; - -export interface ReadFactoryOptions - extends ViemReadClientOptions {} - -export class ReadFactory extends viemReadMixin(BaseReadFactory) {} - -export interface ReadWriteFactoryOptions - extends ViemReadWriteClientOptions {} - -export class ReadWriteFactory extends viemReadWriteMixin( - BaseReadWriteFactory, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/base.ts b/packages/hyperdrive-viem/src/hyperdrive/base.ts deleted file mode 100644 index 544fe5414..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/base.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { - ReadHyperdrive as BaseReadHyperdrive, - ReadHyperdriveOptions as BaseReadHyperdriveOptions, - ReadWriteHyperdrive as BaseReadWriteHyperdrive, - ReadWriteHyperdriveOptions as BaseReadWriteHyperdriveOptions, -} from "@delvtech/hyperdrive-js"; -import { ViemReadClientOptions, viemReadMixin } from "src/viem/viemReadMixin"; -import { - ViemReadWriteClientOptions, - viemReadWriteMixin, -} from "src/viem/viemReadWriteMixin"; - -export interface ReadHyperdriveOptions - extends ViemReadClientOptions {} - -export class ReadHyperdrive extends viemReadMixin(BaseReadHyperdrive) {} - -export interface ReadWriteHyperdriveOptions - extends ViemReadWriteClientOptions {} - -export class ReadWriteHyperdrive extends viemReadWriteMixin( - BaseReadWriteHyperdrive, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/erc4626.ts b/packages/hyperdrive-viem/src/hyperdrive/erc4626.ts deleted file mode 100644 index 337f70212..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/erc4626.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - ReadErc4626Hyperdrive as BaseReadErc4626Hyperdrive, - ReadMockErc4626Hyperdrive as BaseReadMockErc4626Hyperdrive, - ReadWriteErc4626Hyperdrive as BaseReadWriteErc4626Hyperdrive, - ReadWriteMockErc4626Hyperdrive as BaseReadWriteMockErc4626Hyperdrive, -} from "@delvtech/hyperdrive-js"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadErc4626Hyperdrive extends viemReadMixin( - BaseReadErc4626Hyperdrive, -) {} - -export class ReadWriteErc4626Hyperdrive extends viemReadWriteMixin( - BaseReadWriteErc4626Hyperdrive, -) {} - -export class ReadMockErc4626Hyperdrive extends viemReadMixin( - BaseReadMockErc4626Hyperdrive, -) {} - -export class ReadWriteMockErc4626Hyperdrive extends viemReadWriteMixin( - BaseReadWriteMockErc4626Hyperdrive, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/ezeth.ts b/packages/hyperdrive-viem/src/hyperdrive/ezeth.ts deleted file mode 100644 index 82c173924..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/ezeth.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadEzEthHyperdrive as BaseReadEzEthHyperdrive, - ReadWriteEzEthHyperdrive as BaseReadWriteEzEthHyperdrive, -} from "@delvtech/hyperdrive-js"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadEzEthHyperdrive extends viemReadMixin( - BaseReadEzEthHyperdrive, -) {} - -export class ReadWriteEzEthHyperdrive extends viemReadWriteMixin( - BaseReadWriteEzEthHyperdrive, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/getHyperdrive.ts b/packages/hyperdrive-viem/src/hyperdrive/getHyperdrive.ts deleted file mode 100644 index d2c5767c4..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/getHyperdrive.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Drift } from "@delvtech/drift"; -import { viemAdapter } from "@delvtech/drift-viem"; -import { getHyperdrive as baseGetHyperdrive } from "@delvtech/hyperdrive-js"; -import { - ReadHyperdrive, - ReadHyperdriveOptions, - ReadWriteHyperdrive, -} from "src/hyperdrive/base"; -import { WalletClient } from "viem"; - -export interface HyperdriveOptions< - T extends WalletClient | undefined = undefined, -> extends ReadHyperdriveOptions { - walletClient?: T; -} - -export type Hyperdrive = - T extends void ? ReadHyperdrive : ReadWriteHyperdrive; - -export async function getHyperdrive< - T extends WalletClient | undefined = undefined, ->({ - address, - publicClient, - walletClient, - cache, - cacheNamespace = publicClient.chain?.id, - debugName, - earliestBlock, -}: HyperdriveOptions): Promise> { - const drift = new Drift( - viemAdapter({ - publicClient, - walletClient, - }), - ); - return baseGetHyperdrive({ - address, - drift, - cache, - cacheNamespace, - debugName, - earliestBlock, - }) as Promise>; -} diff --git a/packages/hyperdrive-viem/src/hyperdrive/lseth.ts b/packages/hyperdrive-viem/src/hyperdrive/lseth.ts deleted file mode 100644 index 588bf78b0..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/lseth.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadLsEthHyperdrive as BaseReadLsEthHyperdrive, - ReadWriteLsEthHyperdrive as BaseReadWriteLsEthHyperdrive, -} from "@delvtech/hyperdrive-js"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadLsEthHyperdrive extends viemReadMixin( - BaseReadLsEthHyperdrive, -) {} - -export class ReadWriteLsEthHyperdrive extends viemReadWriteMixin( - BaseReadWriteLsEthHyperdrive, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/reth.ts b/packages/hyperdrive-viem/src/hyperdrive/reth.ts deleted file mode 100644 index 55b30cf91..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/reth.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { - ReadREthHyperdrive as BaseReadREthHyperdrive, - ReadWriteREthHyperdrive as BaseReadWriteREthHyperdrive, -} from "@delvtech/hyperdrive-js"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadREthHyperdrive extends viemReadMixin(BaseReadREthHyperdrive) {} - -export class ReadWriteREthHyperdrive extends viemReadWriteMixin( - BaseReadWriteREthHyperdrive, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/steth.ts b/packages/hyperdrive-viem/src/hyperdrive/steth.ts deleted file mode 100644 index b05cb951f..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/steth.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { - ReadStEthHyperdrive as BaseReadStEthHyperdrive, - ReadStEthHyperdriveOptions as BaseReadStEthHyperdriveOptions, - ReadWriteStEthHyperdrive as BaseReadWriteStEthHyperdrive, - ReadWriteStEthHyperdriveOptions as BaseReadWriteStEthHyperdriveOptions, -} from "@delvtech/hyperdrive-js"; -import { ViemReadClientOptions, viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export interface ReadStEthHyperdriveOptions - extends ViemReadClientOptions {} - -export class ReadStEthHyperdrive extends viemReadMixin( - BaseReadStEthHyperdrive, -) {} - -export interface ReadWriteStEthHyperdriveOptions - extends ViemReadClientOptions {} - -export class ReadWriteStEthHyperdrive extends viemReadWriteMixin( - BaseReadWriteStEthHyperdrive, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/base.ts b/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/base.ts deleted file mode 100644 index f621def98..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/base.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadHyperdrive_v1_0_14 as BaseReadHyperdrive_v1_0_14, - ReadWriteHyperdrive_v1_0_14 as BaseReadWriteHyperdrive_v1_0_14, -} from "@delvtech/hyperdrive-js/v1.0.14"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadHyperdrive_v1_0_14 extends viemReadMixin( - BaseReadHyperdrive_v1_0_14, -) {} - -export class ReadWriteHyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteHyperdrive_v1_0_14, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/erc4626.ts b/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/erc4626.ts deleted file mode 100644 index c20ea66fb..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/erc4626.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - ReadErc4626Hyperdrive_v1_0_14 as BaseReadErc4626Hyperdrive_v1_0_14, - ReadMockErc4626Hyperdrive_v1_0_14 as BaseReadMockErc4626Hyperdrive_v1_0_14, - ReadWriteErc4626Hyperdrive_v1_0_14 as BaseReadWriteErc4626Hyperdrive_v1_0_14, - ReadWriteMockErc4626Hyperdrive_v1_0_14 as BaseReadWriteMockErc4626Hyperdrive_v1_0_14, -} from "@delvtech/hyperdrive-js/v1.0.14"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadErc4626Hyperdrive_v1_0_14 extends viemReadMixin( - BaseReadErc4626Hyperdrive_v1_0_14, -) {} - -export class ReadWriteErc4626Hyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteErc4626Hyperdrive_v1_0_14, -) {} - -export class ReadMockErc4626Hyperdrive_v1_0_14 extends viemReadMixin( - BaseReadMockErc4626Hyperdrive_v1_0_14, -) {} - -export class ReadWriteMockErc4626Hyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteMockErc4626Hyperdrive_v1_0_14, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/ezeth.ts b/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/ezeth.ts deleted file mode 100644 index 8437db49c..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/ezeth.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadEzEthHyperdrive_v1_0_14 as BaseReadEzEthHyperdrive_v1_0_14, - ReadWriteEzEthHyperdrive_v1_0_14 as BaseReadWriteEzEthHyperdrive_v1_0_14, -} from "@delvtech/hyperdrive-js/v1.0.14"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadEzEthHyperdrive_v1_0_14 extends viemReadMixin( - BaseReadEzEthHyperdrive_v1_0_14, -) {} - -export class ReadWriteEzEthHyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteEzEthHyperdrive_v1_0_14, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/lseth.ts b/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/lseth.ts deleted file mode 100644 index 141bb1235..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/lseth.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadLsEthHyperdrive_v1_0_14 as BaseReadLsEthHyperdrive_v1_0_14, - ReadWriteLsEthHyperdrive_v1_0_14 as BaseReadWriteLsEthHyperdrive_v1_0_14, -} from "@delvtech/hyperdrive-js/v1.0.14"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadLsEthHyperdrive_v1_0_14 extends viemReadMixin( - BaseReadLsEthHyperdrive_v1_0_14, -) {} - -export class ReadWriteLsEthHyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteLsEthHyperdrive_v1_0_14, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/reth.ts b/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/reth.ts deleted file mode 100644 index c37efdd12..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/reth.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadREthHyperdrive_v1_0_14 as BaseReadREthHyperdrive_v1_0_14, - ReadWriteREthHyperdrive_v1_0_14 as BaseReadWriteREthHyperdrive_v1_0_14, -} from "@delvtech/hyperdrive-js/v1.0.14"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadREthHyperdrive_v1_0_14 extends viemReadMixin( - BaseReadREthHyperdrive_v1_0_14, -) {} - -export class ReadWriteREthHyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteREthHyperdrive_v1_0_14, -) {} diff --git a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/steth.ts b/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/steth.ts deleted file mode 100644 index 5446c873f..000000000 --- a/packages/hyperdrive-viem/src/hyperdrive/v1.0.14/steth.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { - ReadStEthHyperdrive_v1_0_14 as BaseReadStEthHyperdrive_v1_0_14, - ReadWriteStEthHyperdrive_v1_0_14 as BaseReadWriteStEthHyperdrive_v1_0_14, -} from "@delvtech/hyperdrive-js/v1.0.14"; -import { viemReadMixin } from "src/viem/viemReadMixin"; -import { viemReadWriteMixin } from "src/viem/viemReadWriteMixin"; - -export class ReadStEthHyperdrive_v1_0_14 extends viemReadMixin( - BaseReadStEthHyperdrive_v1_0_14, -) {} - -export class ReadWriteStEthHyperdrive_v1_0_14 extends viemReadWriteMixin( - BaseReadWriteStEthHyperdrive_v1_0_14, -) {} diff --git a/packages/hyperdrive-viem/src/registry.ts b/packages/hyperdrive-viem/src/registry.ts deleted file mode 100644 index de36bd1fc..000000000 --- a/packages/hyperdrive-viem/src/registry.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { - ReadRegistry as BaseReadRegistry, - ReadRegistryOptions as BaseReadRegistryOptions, - ReadWriteRegistry as BaseReadWriteRegistry, - ReadWriteRegistryOptions as BaseReadWriteRegistryOptions, -} from "@delvtech/hyperdrive-js"; -import { ViemReadClientOptions, viemReadMixin } from "src/viem/viemReadMixin"; -import { - ViemReadWriteClientOptions, - viemReadWriteMixin, -} from "src/viem/viemReadWriteMixin"; - -export type ReadRegistryOptions = - ViemReadClientOptions; - -export class ReadRegistry extends viemReadMixin(BaseReadRegistry) {} - -export type ReadWriteRegistryOptions = - ViemReadWriteClientOptions; - -export class ReadWriteRegistry extends viemReadWriteMixin( - BaseReadWriteRegistry, -) {} diff --git a/packages/hyperdrive-viem/src/viem/viemReadMixin.ts b/packages/hyperdrive-viem/src/viem/viemReadMixin.ts deleted file mode 100644 index 6a2afd4d7..000000000 --- a/packages/hyperdrive-viem/src/viem/viemReadMixin.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Drift, Pretty } from "@delvtech/drift"; -import { viemAdapter } from "@delvtech/drift-viem"; -import { - Constructor, - ReadClient, - ReadClientOptions, -} from "@delvtech/hyperdrive-js"; -import { PublicClient } from "viem"; - -// Replace the `drift` option with `publicClient`. -export type ViemReadClientOptions = Pretty< - Omit & { - publicClient: PublicClient; - } ->; - -/** - * A mixin that overrides a read client's `drift` option with a `publicClient` - * option. - */ -export function viemReadMixin>( - Base: T, -): ViemReadClientConstructor { - return class extends (Base as Constructor) { - constructor(...[options, ...restArgs]: any[]) { - const { publicClient, ...restOptions } = - options as ViemReadClientOptions; - - const clientOptions: ReadClientOptions = { - // TODO: Fix type casting needed for conflicting viem versions - drift: new Drift(viemAdapter({ publicClient: publicClient as any })), - ...restOptions, - }; - - super(clientOptions, ...restArgs); - } - } as ViemReadClientConstructor; -} - -// A `ReadClient` class constructor that takes a `publicClient` instead of a -// `drift` option. -export type ViemReadClientConstructor> = - Constructor< - InstanceType, - [options: ViemReadClientOptions[0]>] - >; diff --git a/packages/hyperdrive-viem/src/viem/viemReadWriteMixin.ts b/packages/hyperdrive-viem/src/viem/viemReadWriteMixin.ts deleted file mode 100644 index 73891ce0f..000000000 --- a/packages/hyperdrive-viem/src/viem/viemReadWriteMixin.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Drift, Pretty, ReadWriteAdapter } from "@delvtech/drift"; -import { viemAdapter } from "@delvtech/drift-viem"; -import { - Constructor, - ReadWriteClient, - ReadWriteClientOptions, -} from "@delvtech/hyperdrive-js"; -import { PublicClient, WalletClient } from "viem"; - -// Replace the `drift` option with `publicClient` and `walletClient`. -export type ViemReadWriteClientOptions = - Pretty< - Omit & { - publicClient: PublicClient; - walletClient: WalletClient; - } - >; - -export function viemReadWriteMixin>( - Base: T, -): ViemReadWriteClientConstructor { - return class extends (Base as Constructor) { - constructor(...[options, ...restArgs]: any[]) { - const { publicClient, walletClient, ...restOptions } = - options as ViemReadWriteClientOptions; - - const clientOptions: ReadWriteClientOptions = { - // TODO: Fix type casting needed for conflicting viem versions - drift: new Drift( - viemAdapter({ - publicClient: publicClient as any, - walletClient: walletClient as any, - }) as ReadWriteAdapter, - ), - ...restOptions, - }; - - super(clientOptions, ...restArgs); - } - } as ViemReadWriteClientConstructor; -} - -// A `ReadWriteClient` class constructor that takes a `publicClient` instead of -// a `drift` option. -export type ViemReadWriteClientConstructor< - T extends Constructor, -> = Constructor< - InstanceType, - [options: ViemReadWriteClientOptions[0]>] ->; diff --git a/packages/hyperdrive-viem/tsconfig.json b/packages/hyperdrive-viem/tsconfig.json deleted file mode 100644 index 10857d91e..000000000 --- a/packages/hyperdrive-viem/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "@hyperdrive/tsconfig/base.json", - "include": ["src"], - "exclude": ["node_modules"], - "compilerOptions": { - "rootDir": ".", - "baseUrl": ".", - "target": "esnext", - "module": "ESNext", - "moduleResolution": "Bundler", - "paths": { - "src/*": ["src/*"] - }, - "resolveJsonModule": true - } -} diff --git a/packages/hyperdrive-viem/tsup.config.ts b/packages/hyperdrive-viem/tsup.config.ts deleted file mode 100644 index 07ca24f96..000000000 --- a/packages/hyperdrive-viem/tsup.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/exports/index.ts", "src/exports/v1.0.14.ts"], - format: ["esm", "cjs"], - sourcemap: true, - dts: true, - clean: true, - minify: true, - cjsInterop: true, -}); diff --git a/yarn.lock b/yarn.lock index ea73151b1..e3adde678 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,146 +7,10 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adraffy/ens-normalize@1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" - integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== - -"@algolia/autocomplete-core@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" - integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-plugin-algolia-insights@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" - integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-preset-algolia@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" - integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-shared@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" - integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== - -"@algolia/cache-browser-local-storage@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz#14b6dc9abc9e3a304a5fffb063d15f30af1032d1" - integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== - dependencies: - "@algolia/cache-common" "4.22.1" - -"@algolia/cache-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.22.1.tgz#c625dff4bc2a74e79f9aed67b4e053b0ef1b3ec1" - integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== - -"@algolia/cache-in-memory@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz#858a3d887f521362e87d04f3943e2810226a0d71" - integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== - dependencies: - "@algolia/cache-common" "4.22.1" - -"@algolia/client-account@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.22.1.tgz#a7fb8b66b9a4f0a428e1426b2561144267d76d43" - integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-analytics@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.22.1.tgz#506558740b4d49b1b1e3393861f729a8ce921851" - integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.22.1.tgz#042b19c1b6157c485fa1b551349ab313944d2b05" - integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== - dependencies: - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-personalization@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.22.1.tgz#ff088d797648224fb582e9fe5828f8087835fa3d" - integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/client-search@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.22.1.tgz#508cc6ab3d1f4e9c02735a630d4dff6fbb8514a2" - integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== - dependencies: - "@algolia/client-common" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/transporter" "4.22.1" - -"@algolia/events@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" - integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== - -"@algolia/logger-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.22.1.tgz#79cf4cd295de0377a94582c6aaac59b1ded731d9" - integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== - -"@algolia/logger-console@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.22.1.tgz#0355345f6940f67aaa78ae9b81c06e44e49f2336" - integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== - dependencies: - "@algolia/logger-common" "4.22.1" - -"@algolia/requester-browser-xhr@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz#f04df6fe9690a071b267c77d26b83a3be9280361" - integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== - dependencies: - "@algolia/requester-common" "4.22.1" - -"@algolia/requester-common@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.22.1.tgz#27be35f3718aafcb6b388ff9c3aa2defabd559ff" - integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== - -"@algolia/requester-node-http@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz#589a6fa828ad0f325e727a6fcaf4e1a2343cc62b" - integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== - dependencies: - "@algolia/requester-common" "4.22.1" - -"@algolia/transporter@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.22.1.tgz#8843841b857dc021668f31647aa557ff19cd9cb1" - integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== - dependencies: - "@algolia/cache-common" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/requester-common" "4.22.1" +"@adraffy/ens-normalize@^1.10.1", "@adraffy/ens-normalize@^1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" + integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== "@alloc/quick-lru@^5.2.0": version "5.2.0" @@ -161,7 +25,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -178,7 +42,7 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.1": +"@babel/compat-data@^7.23.5": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== @@ -188,7 +52,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== -"@babel/core@^7.19.6", "@babel/core@^7.20.12", "@babel/core@^7.23.3": +"@babel/core@^7.20.12": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== @@ -230,7 +94,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.3", "@babel/generator@^7.24.1": +"@babel/generator@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== @@ -262,21 +126,7 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": +"@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== @@ -298,47 +148,12 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz#db58bf57137b623b916e24874ab7188d93d7f68f" - integrity sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" - integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -353,13 +168,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" @@ -368,7 +176,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": +"@babel/helper-module-imports@^7.22.15": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== @@ -395,14 +203,7 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== @@ -412,24 +213,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -437,13 +220,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -461,860 +237,101 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" - integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" - -"@babel/helpers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" - integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== - dependencies: - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.0" - -"@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.6", "@babel/parser@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" - integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== - dependencies: - "@babel/types" "^7.26.3" - -"@babel/parser@^7.22.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" - integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== - -"@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" - integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== - dependencies: - "@babel/types" "^7.26.0" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-typescript@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== - dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-block-scoping@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz#27af183d7f6dad890531256c7a45019df768ac1f" - integrity sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-static-block@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz#4e37efcca1d9f2fcb908d1bae8b56b4b6e9e1cb6" - integrity sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" - -"@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== - dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" - -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-constant-elements@^7.18.12": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d" - integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" - -"@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" - integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-jsx-source@^7.19.6": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz#a2dedb12b09532846721b5df99e52ef8dc3351d0" - integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" - -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-runtime@^7.22.9": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== - dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== -"@babel/plugin-transform-typeof-symbol@^7.24.1": +"@babel/helpers@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" + integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" -"@babel/plugin-transform-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz#5c05e28bb76c7dfe7d6c5bed9951324fd2d3ab07" - integrity sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w== +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-typescript" "^7.24.1" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.6", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/types" "^7.26.3" -"@babel/plugin-transform-unicode-regex@^7.24.1": +"@babel/parser@^7.24.0", "@babel/parser@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== +"@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/types" "^7.26.0" -"@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.9": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.3.tgz#f3f138c844ffeeac372597b29c51b5259e8323a3" - integrity sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA== +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/compat-data" "^7.24.1" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.1" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.1" - "@babel/plugin-transform-classes" "^7.24.1" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" - semver "^6.3.1" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== +"@babel/plugin-syntax-typescript@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.5": +"@babel/plugin-transform-react-jsx-self@^7.18.6": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" + integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== dependencies: "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" -"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5": +"@babel/plugin-transform-react-jsx-source@^7.19.6": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz#a2dedb12b09532846721b5df99e52ef8dc3351d0" + integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== dependencies: "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime-corejs3@^7.22.6": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.1.tgz#f39707b213441dec645ce8285ae14f281a5077c6" - integrity sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg== - dependencies: - core-js-pure "^3.30.2" - regenerator-runtime "^0.14.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.21.0": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== @@ -1360,7 +377,20 @@ "@babel/parser" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.1": +"@babel/traverse@^7.23.7", "@babel/traverse@^7.26.4": + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/traverse@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== @@ -1376,19 +406,6 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/traverse@^7.23.7", "@babel/traverse@^7.26.4": - version "7.26.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" - integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.3" - "@babel/parser" "^7.26.3" - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.3" - debug "^4.3.1" - globals "^11.1.0" - "@babel/traverse@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" @@ -1410,7 +427,7 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" -"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": +"@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -1427,6 +444,20 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@base-org/account@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@base-org/account/-/account-1.1.1.tgz#779f1fa7d10501201c4b6d5e21bfe17580cfddbc" + integrity sha512-IfVJPrDPhHfqXRDb89472hXkpvJuQQR7FDI9isLPHEqSYt/45whIoBxSPgZ0ssTt379VhQo4+87PWI1DoLSfAQ== + dependencies: + "@noble/hashes" "1.4.0" + clsx "1.2.1" + eventemitter3 "5.0.1" + idb-keyval "6.2.1" + ox "0.6.9" + preact "10.24.2" + viem "^2.31.7" + zustand "5.0.3" + "@blakeembrey/deque@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@blakeembrey/deque/-/deque-1.0.5.tgz#f4fa17fc5ee18317ec01a763d355782c7b395eaf" @@ -1665,45 +696,35 @@ human-id "^1.0.2" prettier "^2.7.1" -"@coinbase/wallet-sdk@4.2.3": - version "4.2.3" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.2.3.tgz#a30fa0605b24bc42c37f52a62d2442bcbb7734af" - integrity sha512-BcyHZ/Ec84z0emORzqdXDv4P0oV+tV3a0OirfA8Ko1JGBIAVvB+hzLvZzCDvnuZx7MTK+Dd8Y9Tjlo446BpCIg== +"@coinbase/wallet-sdk@4.3.6": + version "4.3.6" + resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-4.3.6.tgz#bf9935fea404ecaa4aa5f00ea508fa01c007b3a8" + integrity sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA== dependencies: - "@noble/hashes" "^1.4.0" - clsx "^1.2.1" - eventemitter3 "^5.0.1" - preact "^10.24.2" - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@noble/hashes" "1.4.0" + clsx "1.2.1" + eventemitter3 "5.0.1" + idb-keyval "6.2.1" + ox "0.6.9" + preact "10.24.2" + viem "^2.27.2" + zustand "5.0.3" -"@delvtech/drift-viem@^0.0.1-beta.13": - version "0.0.1-beta.13" - resolved "https://registry.yarnpkg.com/@delvtech/drift-viem/-/drift-viem-0.0.1-beta.13.tgz#9f5f38a50f72ea887319ea9480559fa01956c29b" - integrity sha512-i7PUAmUdq7IRRSjQO4JozV7swvYFcED3X4TT1l5RF0kXAD5drbMHIcpIB1D+2N7V2H2MCd2D4PDWDqVu+Hotzg== +"@delvtech/drift-viem@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@delvtech/drift-viem/-/drift-viem-1.0.0.tgz#5cb91072d3b5c46e862a4e633cc2f07ae37d41aa" + integrity sha512-gWGdPWLrDKiQUQ0RStTEUvKdFsgqGacJIAZYQDvgBwh/xfhxWjEKZTFcTEksEX7W/RBBPjaNj07W/uZ0KnfDNA== -"@delvtech/drift@^0.0.1-beta.11": - version "0.0.1-beta.11" - resolved "https://registry.yarnpkg.com/@delvtech/drift/-/drift-0.0.1-beta.11.tgz#939c2fe6a07dacfa58ba72cf30ba4917fde7e91d" - integrity sha512-YjMLT4xJszZPVfNVK+t7rINwereQ4yMgVOS+VNm0NsMqWmv5vXxjnDGtLHg1RyeZy93DVnxPxTFj0YJxB/4t3g== +"@delvtech/drift@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@delvtech/drift/-/drift-1.0.0.tgz#40448c6a361b6e3e64f6da380c0ff24a5c57644c" + integrity sha512-EkUsR67Nq9J1b/SQiwUMMLb2Sq/y/zOF4egZ414MTvvQEIIURMBvvdoy08ML8/hr2CjFkR9BnoY2MXX9soePmg== dependencies: lodash.ismatch "^4.4.0" - lru-cache "^10.0.1" + lru-cache "^11.1.0" + ox "^0.8.6" safe-stable-stringify "^2.5.0" -"@delvtech/evm-client@^0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@delvtech/evm-client/-/evm-client-0.5.1.tgz#b69bd04ecb9f1690c1ce94acb7362e4d30b9e1e5" - integrity sha512-Ixx7coKko1l9i2CkrrkhzRVnxzf+b3ROEppWvN7Q0+Gx3DLq1lq8oorXjZb5dZhs5K07LtJM7sUJLztxx8BIEA== - dependencies: - "@types/lodash.ismatch" "^4.4.9" - fast-safe-stringify "^2.1.1" - lodash.ismatch "^4.4.0" - lru-cache "^10.0.1" - "@discordjs/builders@^1.10.1": version "1.10.1" resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.10.1.tgz#f30b5d74f8ebaae47c7c70eaf0f8df45eadf9f47" @@ -1769,459 +790,6 @@ tslib "^2.6.2" ws "^8.17.0" -"@discoveryjs/json-ext@0.5.7": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@docsearch/css@3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.6.0.tgz#0e9f56f704b3a34d044d15fd9962ebc1536ba4fb" - integrity sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ== - -"@docsearch/react@^3.5.2": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.6.0.tgz#b4f25228ecb7fc473741aefac592121e86dd2958" - integrity sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w== - dependencies: - "@algolia/autocomplete-core" "1.9.3" - "@algolia/autocomplete-preset-algolia" "1.9.3" - "@docsearch/css" "3.6.0" - algoliasearch "^4.19.1" - -"@docusaurus/core@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.0.tgz#b66e7eaf867c1f44738d725d217a1c0e879629d7" - integrity sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ== - dependencies: - "@babel/core" "^7.23.3" - "@babel/generator" "^7.23.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/preset-react" "^7.22.5" - "@babel/preset-typescript" "^7.22.5" - "@babel/runtime" "^7.22.6" - "@babel/runtime-corejs3" "^7.22.6" - "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.1.0" - "@docusaurus/logger" "3.1.0" - "@docusaurus/mdx-loader" "3.1.0" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-common" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - "@slorber/static-site-generator-webpack-plugin" "^4.0.7" - "@svgr/webpack" "^6.5.1" - autoprefixer "^10.4.14" - babel-loader "^9.1.3" - babel-plugin-dynamic-import-node "^2.3.3" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - clean-css "^5.3.2" - cli-table3 "^0.6.3" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^11.0.0" - core-js "^3.31.1" - css-loader "^6.8.1" - css-minimizer-webpack-plugin "^4.2.2" - cssnano "^5.1.15" - del "^6.1.1" - detect-port "^1.5.1" - escape-html "^1.0.3" - eta "^2.2.0" - file-loader "^6.2.0" - fs-extra "^11.1.1" - html-minifier-terser "^7.2.0" - html-tags "^3.3.1" - html-webpack-plugin "^5.5.3" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.7.6" - postcss "^8.4.26" - postcss-loader "^7.3.3" - prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.3.4" - react-router-config "^5.1.1" - react-router-dom "^5.3.4" - rtl-detect "^1.0.4" - semver "^7.5.4" - serve-handler "^6.1.5" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.9" - tslib "^2.6.0" - update-notifier "^6.0.2" - url-loader "^4.1.1" - webpack "^5.88.1" - webpack-bundle-analyzer "^4.9.0" - webpack-dev-server "^4.15.1" - webpack-merge "^5.9.0" - webpackbar "^5.0.2" - -"@docusaurus/cssnano-preset@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.0.tgz#b3fe7134cc4d0c1950eeb1c940089a190591ad4e" - integrity sha512-ned7qsgCqSv/e7KyugFNroAfiszuxLwnvMW7gmT2Ywxb/Nyt61yIw7KHyAZCMKglOalrqnYA4gMhLUCK/mVePA== - dependencies: - cssnano-preset-advanced "^5.3.10" - postcss "^8.4.26" - postcss-sort-media-queries "^4.4.1" - tslib "^2.6.0" - -"@docusaurus/eslint-plugin@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@docusaurus/eslint-plugin/-/eslint-plugin-3.2.1.tgz#21501804fc58632fd76c14e5d0113aad020dc7ea" - integrity sha512-DIhptlFPvSFZm7ZyisxorEzWK6SF0SvyHTR5NzljnGSTn8lln9mlc18xYhm0zYI/TLoDRGN/fkwCMWPkxB8YVQ== - dependencies: - "@typescript-eslint/utils" "^5.62.0" - tslib "^2.6.0" - -"@docusaurus/logger@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.0.tgz#eef6475c2d59a3ae7e138ac1f60007d6fafd76b0" - integrity sha512-p740M+HCst1VnKKzL60Hru9xfG4EUYJDarjlEC4hHeBy9+afPmY3BNPoSHx9/8zxuYfUlv/psf7I9NvRVdmdvg== - dependencies: - chalk "^4.1.2" - tslib "^2.6.0" - -"@docusaurus/mdx-loader@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.0.tgz#61d562ff442f62ef04cc31d3f0d5865a8dd390e4" - integrity sha512-D7onDz/3mgBonexWoQXPw3V2E5Bc4+jYRf9gGUUK+KoQwU8xMDaDkUUfsr7t6UBa/xox9p5+/3zwLuXOYMzGSg== - dependencies: - "@babel/parser" "^7.22.7" - "@babel/traverse" "^7.22.8" - "@docusaurus/logger" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - "@mdx-js/mdx" "^3.0.0" - "@slorber/remark-comment" "^1.0.0" - escape-html "^1.0.3" - estree-util-value-to-estree "^3.0.1" - file-loader "^6.2.0" - fs-extra "^11.1.1" - image-size "^1.0.2" - mdast-util-mdx "^3.0.0" - mdast-util-to-string "^4.0.0" - rehype-raw "^7.0.0" - remark-directive "^3.0.0" - remark-emoji "^4.0.0" - remark-frontmatter "^5.0.0" - remark-gfm "^4.0.0" - stringify-object "^3.3.0" - tslib "^2.6.0" - unified "^11.0.3" - unist-util-visit "^5.0.0" - url-loader "^4.1.1" - vfile "^6.0.1" - webpack "^5.88.1" - -"@docusaurus/module-type-aliases@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.0.tgz#f3451702f143557bfde0502287713a08086a0415" - integrity sha512-XUl7Z4PWlKg4l6KF05JQ3iDHQxnPxbQUqTNKvviHyuHdlalOFv6qeDAm7IbzyQPJD5VA6y4dpRbTWSqP9ClwPg== - dependencies: - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "3.1.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - -"@docusaurus/plugin-content-blog@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.0.tgz#d2102e9286486e526dbc0dfc741e53dc5cee0ff0" - integrity sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/logger" "3.1.0" - "@docusaurus/mdx-loader" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-common" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - cheerio "^1.0.0-rc.12" - feed "^4.2.2" - fs-extra "^11.1.1" - lodash "^4.17.21" - reading-time "^1.5.0" - srcset "^4.0.0" - tslib "^2.6.0" - unist-util-visit "^5.0.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-docs@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.0.tgz#55d7bdb8e14f854ea6c6e256f1b51b8c17963c19" - integrity sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/logger" "3.1.0" - "@docusaurus/mdx-loader" "3.1.0" - "@docusaurus/module-type-aliases" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - "@types/react-router-config" "^5.0.7" - combine-promises "^1.1.0" - fs-extra "^11.1.1" - js-yaml "^4.1.0" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - webpack "^5.88.1" - -"@docusaurus/plugin-content-pages@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.0.tgz#cdb73c804ded307e81ceea39874dc0bb540c2dc4" - integrity sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/mdx-loader" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - fs-extra "^11.1.1" - tslib "^2.6.0" - webpack "^5.88.1" - -"@docusaurus/plugin-debug@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.0.tgz#545872bc8f9cd697d9f1d6c695f8a1674bfc149c" - integrity sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils" "3.1.0" - fs-extra "^11.1.1" - react-json-view-lite "^1.2.0" - tslib "^2.6.0" - -"@docusaurus/plugin-google-analytics@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.0.tgz#3035eace3121db16aec7c10852ebb4cd860f4434" - integrity sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - tslib "^2.6.0" - -"@docusaurus/plugin-google-gtag@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.0.tgz#2f4040da81d36bfc6324abc1a12b258e6c7f202a" - integrity sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - "@types/gtag.js" "^0.0.12" - tslib "^2.6.0" - -"@docusaurus/plugin-google-tag-manager@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.0.tgz#4c026e9f65468a332326770f95ccd9c6e12d564b" - integrity sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - tslib "^2.6.0" - -"@docusaurus/plugin-sitemap@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.0.tgz#9d9dbb4d87e6dc46ae9321badf6ac7cd9aa96b23" - integrity sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/logger" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-common" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - fs-extra "^11.1.1" - sitemap "^7.1.1" - tslib "^2.6.0" - -"@docusaurus/preset-classic@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.0.tgz#ca67d5e416c211b4c23f0fb01f0e3e36b759dfa0" - integrity sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/plugin-content-blog" "3.1.0" - "@docusaurus/plugin-content-docs" "3.1.0" - "@docusaurus/plugin-content-pages" "3.1.0" - "@docusaurus/plugin-debug" "3.1.0" - "@docusaurus/plugin-google-analytics" "3.1.0" - "@docusaurus/plugin-google-gtag" "3.1.0" - "@docusaurus/plugin-google-tag-manager" "3.1.0" - "@docusaurus/plugin-sitemap" "3.1.0" - "@docusaurus/theme-classic" "3.1.0" - "@docusaurus/theme-common" "3.1.0" - "@docusaurus/theme-search-algolia" "3.1.0" - "@docusaurus/types" "3.1.0" - -"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" - integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== - dependencies: - "@types/react" "*" - prop-types "^15.6.2" - -"@docusaurus/theme-classic@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.0.tgz#6ee68bf4d4db53c8d9b18d4866512abadb00a802" - integrity sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw== - dependencies: - "@docusaurus/core" "3.1.0" - "@docusaurus/mdx-loader" "3.1.0" - "@docusaurus/module-type-aliases" "3.1.0" - "@docusaurus/plugin-content-blog" "3.1.0" - "@docusaurus/plugin-content-docs" "3.1.0" - "@docusaurus/plugin-content-pages" "3.1.0" - "@docusaurus/theme-common" "3.1.0" - "@docusaurus/theme-translations" "3.1.0" - "@docusaurus/types" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-common" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - "@mdx-js/react" "^3.0.0" - clsx "^2.0.0" - copy-text-to-clipboard "^3.2.0" - infima "0.2.0-alpha.43" - lodash "^4.17.21" - nprogress "^0.2.0" - postcss "^8.4.26" - prism-react-renderer "^2.3.0" - prismjs "^1.29.0" - react-router-dom "^5.3.4" - rtlcss "^4.1.0" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-common@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.0.tgz#d176af1d0fc8ea27fea0afb298157f9a75256336" - integrity sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw== - dependencies: - "@docusaurus/mdx-loader" "3.1.0" - "@docusaurus/module-type-aliases" "3.1.0" - "@docusaurus/plugin-content-blog" "3.1.0" - "@docusaurus/plugin-content-docs" "3.1.0" - "@docusaurus/plugin-content-pages" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-common" "3.1.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - clsx "^2.0.0" - parse-numeric-range "^1.3.0" - prism-react-renderer "^2.3.0" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-search-algolia@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.0.tgz#3cdb1f0e8d15698a60110856ca5a06f10d3b049d" - integrity sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ== - dependencies: - "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.1.0" - "@docusaurus/logger" "3.1.0" - "@docusaurus/plugin-content-docs" "3.1.0" - "@docusaurus/theme-common" "3.1.0" - "@docusaurus/theme-translations" "3.1.0" - "@docusaurus/utils" "3.1.0" - "@docusaurus/utils-validation" "3.1.0" - algoliasearch "^4.18.0" - algoliasearch-helper "^3.13.3" - clsx "^2.0.0" - eta "^2.2.0" - fs-extra "^11.1.1" - lodash "^4.17.21" - tslib "^2.6.0" - utility-types "^3.10.0" - -"@docusaurus/theme-translations@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.0.tgz#1c6bdc19723a87e042b5e89b6cdc8b747fdcbc13" - integrity sha512-DApE4AbDI+WBajihxB54L4scWQhVGNZAochlC9fkbciPuFAgdRBD3NREb0rgfbKexDC/rioppu/WJA0u8tS+yA== - dependencies: - fs-extra "^11.1.1" - tslib "^2.6.0" - -"@docusaurus/tsconfig@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/tsconfig/-/tsconfig-3.1.0.tgz#ab6936a72b5a52904f37c0ef7d65c6d6aa6ab46d" - integrity sha512-PE6fSuj5gJy5sNC1OO+bYAU1/xZH5YqddGjhrNu3/T7OAUroqkMZfVl13Tz70CjYB8no4OWcraqSkObAeNdIcQ== - -"@docusaurus/types@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.0.tgz#1dbb60ea38e98ba869f8d7ea2323e4460f05ab65" - integrity sha512-VaczOZf7+re8aFBIWnex1XENomwHdsSTkrdX43zyor7G/FY4OIsP6X28Xc3o0jiY0YdNuvIDyA5TNwOtpgkCVw== - dependencies: - "@mdx-js/mdx" "^3.0.0" - "@types/history" "^4.7.11" - "@types/react" "*" - commander "^5.1.0" - joi "^17.9.2" - react-helmet-async "^1.3.0" - utility-types "^3.10.0" - webpack "^5.88.1" - webpack-merge "^5.9.0" - -"@docusaurus/utils-common@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.0.tgz#846ce9c12b9ebf1ebf513e65303fb8158dcd2e1b" - integrity sha512-SfvnRLHoZ9bwTw67knkSs7IcUR0GY2SaGkpdB/J9pChrDiGhwzKNUhcieoPyPYrOWGRPk3rVNYtoy+Bc7psPAw== - dependencies: - tslib "^2.6.0" - -"@docusaurus/utils-validation@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.0.tgz#3e88c42caec29cd3eedbbd17af97f88719613340" - integrity sha512-dFxhs1NLxPOSzmcTk/eeKxLY5R+U4cua22g9MsAMiRWcwFKStZ2W3/GDY0GmnJGqNS8QAQepJrxQoyxXkJNDeg== - dependencies: - "@docusaurus/logger" "3.1.0" - "@docusaurus/utils" "3.1.0" - joi "^17.9.2" - js-yaml "^4.1.0" - tslib "^2.6.0" - -"@docusaurus/utils@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.0.tgz#6ef821bc4c40a91586835a385110b5c0082c590c" - integrity sha512-LgZfp0D+UBqAh7PZ//MUNSFBMavmAPku6Si9x8x3V+S318IGCNJ6hUr2O29UO0oLybEWUjD5Jnj9IUN6XyZeeg== - dependencies: - "@docusaurus/logger" "3.1.0" - "@svgr/webpack" "^6.5.1" - escape-string-regexp "^4.0.0" - file-loader "^6.2.0" - fs-extra "^11.1.1" - github-slugger "^1.5.0" - globby "^11.1.0" - gray-matter "^4.0.3" - jiti "^1.20.0" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.6.0" - url-loader "^4.1.1" - webpack "^5.88.1" - "@ecies/ciphers@^0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@ecies/ciphers/-/ciphers-0.2.2.tgz#82a15b10a6e502b63fb30915d944b2eaf3ff17ff" @@ -3507,6 +2075,14 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429" integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg== +"@gemini-wallet/core@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@gemini-wallet/core/-/core-0.2.0.tgz#6d7c82614d811f7f23b4018808684a39e0dd111f" + integrity sha512-vv9aozWnKrrPWQ3vIFcWk7yta4hQW1Ie0fsNNPeXnjAxkbXr2hqMagEptLuMxpEP2W3mnRu05VDNKzcvAuuZDw== + dependencies: + "@metamask/rpc-errors" "7.0.2" + eventemitter3 "5.0.1" + "@google-cloud/paginator@^5.0.0": version "5.0.2" resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-5.0.2.tgz#86ad773266ce9f3b82955a8f75e22cd012ccc889" @@ -3577,18 +2153,6 @@ gsap "^3.12.4" react ">=16" -"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - "@headlessui/react@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-2.1.5.tgz#a686d16d3bcabaa36386c08c68fbab25c0c24f9b" @@ -3642,25 +2206,6 @@ dependencies: minipass "^7.0.4" -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" @@ -3680,20 +2225,12 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -3706,22 +2243,17 @@ resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== -"@leichtgewicht/ip-codec@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" - integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== - -"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd" - integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== +"@lit-labs/ssr-dom-shim@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz#55eb80ab5ef6e188f7e541c1e2bea1ef582413b8" + integrity sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw== -"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.3.tgz#25b4eece2592132845d303e091bad9b04cdcfe03" - integrity sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ== +"@lit/reactive-element@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-2.1.1.tgz#0662ac4a43d4898974aef9a6c5cd47b9e331919a" + integrity sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg== dependencies: - "@lit-labs/ssr-dom-shim" "^1.0.0" + "@lit-labs/ssr-dom-shim" "^1.4.0" "@manypkg/find-root@^1.1.0": version "1.1.0" @@ -3745,42 +2277,6 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@mdx-js/mdx@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.0.1.tgz#617bd2629ae561fdca1bb88e3badd947f5a82191" - integrity sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA== - dependencies: - "@types/estree" "^1.0.0" - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdx" "^2.0.0" - collapse-white-space "^2.0.0" - devlop "^1.0.0" - estree-util-build-jsx "^3.0.0" - estree-util-is-identifier-name "^3.0.0" - estree-util-to-js "^2.0.0" - estree-walker "^3.0.0" - hast-util-to-estree "^3.0.0" - hast-util-to-jsx-runtime "^2.0.0" - markdown-extensions "^2.0.0" - periscopic "^3.0.0" - remark-mdx "^3.0.0" - remark-parse "^11.0.0" - remark-rehype "^11.0.0" - source-map "^0.7.0" - unified "^11.0.0" - unist-util-position-from-estree "^2.0.0" - unist-util-stringify-position "^4.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -"@mdx-js/react@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.0.1.tgz#997a19b3a5b783d936c75ae7c47cfe62f967f746" - integrity sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A== - dependencies: - "@types/mdx" "^2.0.0" - "@merkl/api@^0.16.34": version "0.16.34" resolved "https://registry.yarnpkg.com/@merkl/api/-/api-0.16.34.tgz#4238843c476d47474df008c7092ed6089def4f30" @@ -3898,6 +2394,14 @@ readable-stream "^3.6.2" webextension-polyfill "^0.10.0" +"@metamask/rpc-errors@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-7.0.2.tgz#d07b2ebfcf111556dfe93dc78699742ebe755359" + integrity sha512-YYYHsVYd46XwY2QZzpGeU4PSdRhHdxnzkB8piWGvJW2xbikZ3R+epAYEL4q/K8bh9JPTucsUdwRFnACor1aOYw== + dependencies: + "@metamask/utils" "^11.0.1" + fast-safe-stringify "^2.0.6" + "@metamask/rpc-errors@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-6.2.1.tgz#f5daf429ededa7cb83069dc621bd5738fe2a1d80" @@ -3921,10 +2425,10 @@ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz#bfac8c7a1a149b5bbfe98f59fbfea512dfa3bad4" integrity sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA== -"@metamask/sdk-communication-layer@0.31.0": - version "0.31.0" - resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.31.0.tgz#0acc063b62aa09d044c7aab65801712d760e53b2" - integrity sha512-V9CxdzabDPjQVgmKGHsyU3SYt4Af27g+4DbGCx0fLoHqN/i1RBDZqs/LYbJX3ykJCANzE+llz/MolMCMrzM2RA== +"@metamask/sdk-communication-layer@0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@metamask/sdk-communication-layer/-/sdk-communication-layer-0.32.0.tgz#89710e807806836138ea5018b087731d6acab627" + integrity sha512-dmj/KFjMi1fsdZGIOtbhxdg3amxhKL/A5BqSU4uh/SyDKPub/OT+x5pX8bGjpTL1WPWY/Q0OIlvFyX3VWnT06Q== dependencies: bufferutil "^4.0.8" date-fns "^2.29.3" @@ -3932,23 +2436,23 @@ utf-8-validate "^5.0.2" uuid "^8.3.2" -"@metamask/sdk-install-modal-web@0.31.5": - version "0.31.5" - resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.31.5.tgz#b5e903b63f936b9ae795f31137b4c9f0873c382d" - integrity sha512-ZfrVkPAabfH4AIxcTlxQN5oyyzzVXFTLZrm1/BJ+X632d9MiyAVHNtiqa9EZpZYkZGk2icmDVP+xCpvJmVOVpQ== +"@metamask/sdk-install-modal-web@0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@metamask/sdk-install-modal-web/-/sdk-install-modal-web-0.32.0.tgz#86f80420ca364fa0d7710016fa5c81f95537ab23" + integrity sha512-TFoktj0JgfWnQaL3yFkApqNwcaqJ+dw4xcnrJueMP3aXkSNev2Ido+WVNOg4IIMxnmOrfAC9t0UJ0u/dC9MjOQ== dependencies: "@paulmillr/qr" "^0.2.1" -"@metamask/sdk@0.31.5": - version "0.31.5" - resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.31.5.tgz#804b68382d9f4c74ab0296f1b5c54143622ef2c8" - integrity sha512-i7wteqO/fU2JWQrMZz+addHokYThHYznp4nYXviv+QysdxGVgAYvcW/PBA+wpeP3veX7QGfNqMPgSsZbBrASYw== +"@metamask/sdk@0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@metamask/sdk/-/sdk-0.32.0.tgz#f0e179746fe69dccd032a9026884b45b519c1975" + integrity sha512-WmGAlP1oBuD9hk4CsdlG1WJFuPtYJY+dnTHJMeCyohTWD2GgkcLMUUuvu9lO1/NVzuOoSi1OrnjbuY1O/1NZ1g== dependencies: "@babel/runtime" "^7.26.0" "@metamask/onboarding" "^1.0.1" "@metamask/providers" "16.1.0" - "@metamask/sdk-communication-layer" "0.31.0" - "@metamask/sdk-install-modal-web" "0.31.5" + "@metamask/sdk-communication-layer" "0.32.0" + "@metamask/sdk-install-modal-web" "0.32.0" "@paulmillr/qr" "^0.2.1" bowser "^2.9.0" cross-fetch "^4.0.0" @@ -3964,6 +2468,28 @@ util "^0.12.4" uuid "^8.3.2" +"@metamask/superstruct@^3.1.0": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@metamask/superstruct/-/superstruct-3.2.1.tgz#fca933017c5b78529f8f525560cef32c57e889d2" + integrity sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g== + +"@metamask/utils@^11.0.1": + version "11.7.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-11.7.0.tgz#d6b7dad510eef5d19e756fa8d3e43c1a95cf1c5e" + integrity sha512-IamqpZF8Lr4WeXJ84fD+Sy+v1Zo05SYuMPHHBrZWpzVbnHAmXQpL4ckn9s5dfA+zylp3WGypaBPb6SBZdOhuNQ== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@metamask/superstruct" "^3.1.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + "@types/lodash" "^4.17.20" + debug "^4.3.4" + lodash "^4.17.21" + pony-cause "^2.1.10" + semver "^7.5.4" + uuid "^9.0.1" + "@metamask/utils@^5.0.1": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" @@ -4014,75 +2540,6 @@ dependencies: ts-toolbelt "^9.6.0" -"@motionone/animation@^10.15.1", "@motionone/animation@^10.17.0": - version "10.17.0" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.17.0.tgz#7633c6f684b5fee2b61c405881b8c24662c68fca" - integrity sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg== - dependencies: - "@motionone/easing" "^10.17.0" - "@motionone/types" "^10.17.0" - "@motionone/utils" "^10.17.0" - tslib "^2.3.1" - -"@motionone/dom@^10.16.2", "@motionone/dom@^10.16.4": - version "10.17.0" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.17.0.tgz#519dd78aab0750a94614c69a82da5290cd617383" - integrity sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q== - dependencies: - "@motionone/animation" "^10.17.0" - "@motionone/generators" "^10.17.0" - "@motionone/types" "^10.17.0" - "@motionone/utils" "^10.17.0" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/easing@^10.17.0": - version "10.17.0" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.17.0.tgz#d66cecf7e3ee30104ad00389fb3f0b2282d81aa9" - integrity sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg== - dependencies: - "@motionone/utils" "^10.17.0" - tslib "^2.3.1" - -"@motionone/generators@^10.17.0": - version "10.17.0" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.17.0.tgz#878d292539c41434c13310d5f863a87a94e6e689" - integrity sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ== - dependencies: - "@motionone/types" "^10.17.0" - "@motionone/utils" "^10.17.0" - tslib "^2.3.1" - -"@motionone/svelte@^10.16.2": - version "10.16.4" - resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.4.tgz#5daf117cf5b2576fc6dd487c5e0500938a742470" - integrity sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA== - dependencies: - "@motionone/dom" "^10.16.4" - tslib "^2.3.1" - -"@motionone/types@^10.15.1", "@motionone/types@^10.17.0": - version "10.17.0" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.17.0.tgz#179571ce98851bac78e19a1c3974767227f08ba3" - integrity sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA== - -"@motionone/utils@^10.15.1", "@motionone/utils@^10.17.0": - version "10.17.0" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.17.0.tgz#cc0ba8acdc6848ff48d8c1f2d0d3e7602f4f942e" - integrity sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg== - dependencies: - "@motionone/types" "^10.17.0" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/vue@^10.16.2": - version "10.16.4" - resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.4.tgz#07d09e3aa5115ca0bcc0076cb9e5322775277c09" - integrity sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg== - dependencies: - "@motionone/dom" "^10.16.4" - tslib "^2.3.1" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -4091,17 +2548,15 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@noble/ciphers@^1.0.0": +"@noble/ciphers@1.2.1", "@noble/ciphers@^1.0.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.2.1.tgz#3812b72c057a28b44ff0ad4aff5ca846e5b9cdc9" integrity sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA== -"@noble/curves@1.2.0", "@noble/curves@~1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" - integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== - dependencies: - "@noble/hashes" "1.3.2" +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== "@noble/curves@1.3.0", "@noble/curves@~1.3.0": version "1.3.0" @@ -4117,19 +2572,35 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/curves@^1.6.0": +"@noble/curves@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.0.tgz#fe035a23959e6aeadf695851b51a87465b5ba8f7" + integrity sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ== + dependencies: + "@noble/hashes" "1.7.0" + +"@noble/curves@1.8.1", "@noble/curves@^1.6.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.1.tgz#19bc3970e205c99e4bdb1c64a4785706bce497ff" integrity sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ== dependencies: "@noble/hashes" "1.7.1" -"@noble/hashes@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@^1.9.1", "@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" -"@noble/hashes@1.3.3", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": +"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== @@ -4139,11 +2610,21 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== -"@noble/hashes@1.7.1", "@noble/hashes@^1.4.0", "@noble/hashes@^1.5.0": +"@noble/hashes@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.0.tgz#5d9e33af2c7d04fee35de1519b80c958b2e35e39" + integrity sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w== + +"@noble/hashes@1.7.1", "@noble/hashes@^1.5.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== +"@noble/hashes@1.8.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -5269,32 +3750,6 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pnpm/config.env-replace@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" - integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== - -"@pnpm/network.ca-file@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" - integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^2.1.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" - integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== - dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@polka/url@^1.0.0-next.24": - version "1.0.0-next.25" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" - integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== - "@prisma/client@6.3.1": version "6.3.1" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-6.3.1.tgz#4e4b05b27f4541ea541a601c57a8ada10b526848" @@ -5465,6 +3920,111 @@ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.1.0.tgz#cba454c05ec201bd5547aaf55286d44682ac8eb5" integrity sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g== +"@reown/appkit-common@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-common/-/appkit-common-1.7.8.tgz#6fc29db977b7325e8170b1fd08176fe15ea0b39c" + integrity sha512-ridIhc/x6JOp7KbDdwGKY4zwf8/iK8EYBl+HtWrruutSLwZyVi5P8WaZa+8iajL6LcDcDF7LoyLwMTym7SRuwQ== + dependencies: + big.js "6.2.2" + dayjs "1.11.13" + viem ">=2.29.0" + +"@reown/appkit-controllers@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-controllers/-/appkit-controllers-1.7.8.tgz#0e4c24afaacca2251745c8844463589dda6d9e66" + integrity sha512-IdXlJlivrlj6m63VsGLsjtPHHsTWvKGVzWIP1fXZHVqmK+rZCBDjCi9j267Rb9/nYRGHWBtlFQhO8dK35WfeDA== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-wallet" "1.7.8" + "@walletconnect/universal-provider" "2.21.0" + valtio "1.13.2" + viem ">=2.29.0" + +"@reown/appkit-pay@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-pay/-/appkit-pay-1.7.8.tgz#c1ff423635869578f6ad12e6c08180c0532bf8ab" + integrity sha512-OSGQ+QJkXx0FEEjlpQqIhT8zGJKOoHzVnyy/0QFrl3WrQTjCzg0L6+i91Ad5Iy1zb6V5JjqtfIFpRVRWN4M3pw== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-controllers" "1.7.8" + "@reown/appkit-ui" "1.7.8" + "@reown/appkit-utils" "1.7.8" + lit "3.3.0" + valtio "1.13.2" + +"@reown/appkit-polyfills@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-polyfills/-/appkit-polyfills-1.7.8.tgz#a0d362df8479cc66b7c6aa89e696f30783a3d21b" + integrity sha512-W/kq786dcHHAuJ3IV2prRLEgD/2iOey4ueMHf1sIFjhhCGMynMkhsOhQMUH0tzodPqUgAC494z4bpIDYjwWXaA== + dependencies: + buffer "6.0.3" + +"@reown/appkit-scaffold-ui@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.7.8.tgz#36b5eb71b2e4d6525fa9a696af5c4ae83ae17f63" + integrity sha512-RCeHhAwOrIgcvHwYlNWMcIDibdI91waaoEYBGw71inE0kDB8uZbE7tE6DAXJmDkvl0qPh+DqlC4QbJLF1FVYdQ== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-controllers" "1.7.8" + "@reown/appkit-ui" "1.7.8" + "@reown/appkit-utils" "1.7.8" + "@reown/appkit-wallet" "1.7.8" + lit "3.3.0" + +"@reown/appkit-ui@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-ui/-/appkit-ui-1.7.8.tgz#014b30a7378cfc685aa1d5a543d59ac5a9dd8ed2" + integrity sha512-1hjCKjf6FLMFzrulhl0Y9Vb9Fu4royE+SXCPSWh4VhZhWqlzUFc7kutnZKx8XZFVQH4pbBvY62SpRC93gqoHow== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-controllers" "1.7.8" + "@reown/appkit-wallet" "1.7.8" + lit "3.3.0" + qrcode "1.5.3" + +"@reown/appkit-utils@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-utils/-/appkit-utils-1.7.8.tgz#86a35184976a9ba8a935ba44ca68567eea10fba0" + integrity sha512-8X7UvmE8GiaoitCwNoB86pttHgQtzy4ryHZM9kQpvjQ0ULpiER44t1qpVLXNM4X35O0v18W0Dk60DnYRMH2WRw== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-controllers" "1.7.8" + "@reown/appkit-polyfills" "1.7.8" + "@reown/appkit-wallet" "1.7.8" + "@walletconnect/logger" "2.1.2" + "@walletconnect/universal-provider" "2.21.0" + valtio "1.13.2" + viem ">=2.29.0" + +"@reown/appkit-wallet@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit-wallet/-/appkit-wallet-1.7.8.tgz#291b8c225fd3c2585d1f3e65c689a791d5ce3e5d" + integrity sha512-kspz32EwHIOT/eg/ZQbFPxgXq0B/olDOj3YMu7gvLEFz4xyOFd/wgzxxAXkp5LbG4Cp++s/elh79rVNmVFdB9A== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-polyfills" "1.7.8" + "@walletconnect/logger" "2.1.2" + zod "3.22.4" + +"@reown/appkit@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@reown/appkit/-/appkit-1.7.8.tgz#6174bca032a4a2bf4fcfc78969e09210dff85214" + integrity sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA== + dependencies: + "@reown/appkit-common" "1.7.8" + "@reown/appkit-controllers" "1.7.8" + "@reown/appkit-pay" "1.7.8" + "@reown/appkit-polyfills" "1.7.8" + "@reown/appkit-scaffold-ui" "1.7.8" + "@reown/appkit-ui" "1.7.8" + "@reown/appkit-utils" "1.7.8" + "@reown/appkit-wallet" "1.7.8" + "@walletconnect/types" "2.21.0" + "@walletconnect/universal-provider" "2.21.0" + bs58 "6.0.0" + valtio "1.13.2" + viem ">=2.29.0" + "@rollbar/react@^0.11.1": version "0.11.2" resolved "https://registry.yarnpkg.com/@rollbar/react/-/react-0.11.2.tgz#f5d71f21e9207f183080fa8a05a618ad78cf6d17" @@ -5715,10 +4275,10 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.1.tgz#5f2c40d3f1b53ede80fb4e6964f840c0f8936832" integrity sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg== -"@safe-global/safe-apps-provider@0.18.5": - version "0.18.5" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.5.tgz#745a932bda3739a8a298ae44ec6c465f6c4773b7" - integrity sha512-9v9wjBi3TwLsEJ3C2ujYoexp3pFJ0omDLH/GX91e2QB+uwCKTBYyhxFSrTQ9qzoyQd+bfsk4gjOGW87QcJhf7g== +"@safe-global/safe-apps-provider@0.18.6": + version "0.18.6" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.6.tgz#b5756176549e35350b7e090824b71507a0d1f749" + integrity sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q== dependencies: "@safe-global/safe-apps-sdk" "^9.1.0" events "^3.3.0" @@ -5793,7 +4353,7 @@ "@scalar/openapi-types" "0.1.1" "@unhead/schema" "^1.9.5" -"@scure/base@^1.1.3", "@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.4": +"@scure/base@^1.1.3", "@scure/base@~1.1.4": version "1.1.6" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== @@ -5803,14 +4363,10 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== -"@scure/bip32@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.2.tgz#90e78c027d5e30f0b22c1f8d50ff12f3fb7559f8" - integrity sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA== - dependencies: - "@noble/curves" "~1.2.0" - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.2" +"@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== "@scure/bip32@1.3.3": version "1.3.3" @@ -5830,13 +4386,14 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" -"@scure/bip39@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" - integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== +"@scure/bip32@1.7.0", "@scure/bip32@^1.5.0", "@scure/bip32@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" + integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== dependencies: - "@noble/hashes" "~1.3.0" - "@scure/base" "~1.1.0" + "@noble/curves" "~1.9.0" + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" "@scure/bip39@1.2.2": version "1.2.2" @@ -5854,48 +4411,24 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== +"@scure/bip39@1.6.0", "@scure/bip39@^1.4.0", "@scure/bip39@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" + integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" "@sinclair/typebox@0.32.34": version "0.32.34" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.32.34.tgz#a1c59d4df30982263cc7aa64c2c853878050838d" integrity sha512-a3Z3ytYl6R/+7ldxx04PO1semkwWlX/8pTqxsPw4quIcIXDFPZhOc1Wx8azWmkU26ccK3mHwcWenn0avNgAKQg== -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - "@sinclair/typebox@^0.34.15": version "0.34.29" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.29.tgz#7eaf1201484bf3e9aa87f943fdfa8bf0248c5c10" integrity sha512-xTzI0LlHZ0eahKuN+2R+yJbEIUyV/ZSdtqvR3sHukgN56nvCW1tz+Yr6fQ6/7+WJ34AhaU9ZmYcHXv8xgj2Lvg== -"@sindresorhus/is@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - -"@sindresorhus/is@^5.2.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" - integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== - "@sinonjs/commons@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" @@ -5931,163 +4464,11 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@slorber/remark-comment@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a" - integrity sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.1.0" - micromark-util-symbol "^1.0.1" - -"@slorber/static-site-generator-webpack-plugin@^4.0.7": - version "4.0.7" - resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz#fc1678bddefab014e2145cbe25b3ce4e1cfc36f3" - integrity sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA== - dependencies: - eval "^0.1.8" - p-map "^4.0.0" - webpack-sources "^3.2.2" - "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@stablelib/aead@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" - integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== - -"@stablelib/binary@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" - integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== - dependencies: - "@stablelib/int" "^1.0.1" - -"@stablelib/bytes@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" - integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== - -"@stablelib/chacha20poly1305@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" - integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== - dependencies: - "@stablelib/aead" "^1.0.1" - "@stablelib/binary" "^1.0.1" - "@stablelib/chacha" "^1.0.1" - "@stablelib/constant-time" "^1.0.1" - "@stablelib/poly1305" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/chacha@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" - integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/constant-time@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" - integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== - -"@stablelib/ed25519@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" - integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== - dependencies: - "@stablelib/random" "^1.0.2" - "@stablelib/sha512" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/hash@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" - integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== - -"@stablelib/hkdf@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" - integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== - dependencies: - "@stablelib/hash" "^1.0.1" - "@stablelib/hmac" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/hmac@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" - integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== - dependencies: - "@stablelib/constant-time" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/int@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" - integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== - -"@stablelib/keyagreement@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" - integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== - dependencies: - "@stablelib/bytes" "^1.0.1" - -"@stablelib/poly1305@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" - integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== - dependencies: - "@stablelib/constant-time" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" - integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/sha256@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" - integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/sha512@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" - integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/wipe@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" - integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== - -"@stablelib/x25519@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" - integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== - dependencies: - "@stablelib/keyagreement" "^1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/wipe" "^1.0.1" - "@stencil/core@^4.7.0": version "4.15.0" resolved "https://registry.yarnpkg.com/@stencil/core/-/core-4.15.0.tgz#84db0d9e34cd6e420222e76fb8ada1c5bdee41a2" @@ -6103,112 +4484,6 @@ resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-3.5.0.tgz#7fff3d9d931e972c24dcc8ee25f7481a58879b2b" integrity sha512-pKS3wZnJoL1iTyGBXAvCwduNNeghJHY6QSRSNNvpYnrrQrLZ6Owsazjyynu0e0ObRgks0i7Rv+pe2M7/MBTZpQ== -"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== - -"@svgr/babel-plugin-remove-jsx-attribute@*": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" - integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - -"@svgr/babel-plugin-remove-jsx-empty-expression@*": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" - integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== - -"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== - -"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== - -"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== - -"@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== - -"@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" - "@svgr/babel-plugin-remove-jsx-attribute" "*" - "@svgr/babel-plugin-remove-jsx-empty-expression" "*" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" - "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" - "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" - "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" - "@svgr/babel-plugin-transform-svg-component" "^6.5.1" - -"@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - camelcase "^6.2.0" - cosmiconfig "^7.0.1" - -"@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== - dependencies: - "@babel/types" "^7.20.0" - entities "^4.4.0" - -"@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/hast-util-to-babel-ast" "^6.5.1" - svg-parser "^2.0.4" - -"@svgr/plugin-svgo@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" - integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== - dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.8.0" - -"@svgr/webpack@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" - integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== - dependencies: - "@babel/core" "^7.19.6" - "@babel/plugin-transform-react-constant-elements" "^7.18.12" - "@babel/preset-env" "^7.19.4" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@svgr/core" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - "@svgr/plugin-svgo" "^6.5.1" - "@swc/helpers@^0.5.0": version "0.5.13" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" @@ -6216,13 +4491,6 @@ dependencies: tslib "^2.4.0" -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" - "@tanstack/eslint-plugin-query@^5.28.11": version "5.28.11" resolved "https://registry.yarnpkg.com/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.28.11.tgz#0a46f2b301b706d993fc4bc25fef60c1fb639101" @@ -6355,18 +4623,6 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/acorn@^4.0.0": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" - integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== - dependencies: - "@types/estree" "*" - "@types/aws-lambda@8.10.147": version "8.10.147" resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.147.tgz#dc5c89aa32f47a9b35e52c32630545c83afa6f2f" @@ -6412,21 +4668,6 @@ dependencies: "@types/node" "*" -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/bonjour@^3.5.9": - version "3.5.13" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" - integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== - dependencies: - "@types/node" "*" - "@types/brotli@^1.3.4": version "1.3.4" resolved "https://registry.yarnpkg.com/@types/brotli/-/brotli-1.3.4.tgz#3eefc5493218a99141771f351142dd640efde5d8" @@ -6446,15 +4687,7 @@ resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" integrity sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" - integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*", "@types/connect@3.4.38": +"@types/connect@3.4.38": version "3.4.38" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== @@ -6466,12 +4699,7 @@ resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.2.tgz#771c4a768d94eb5922cc202a3009558204df0cea" integrity sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== -"@types/d3-format@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" - integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== - -"@types/debug@^4.0.0", "@types/debug@^4.1.7": +"@types/debug@^4.1.7": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== @@ -6485,30 +4713,7 @@ dependencies: "@types/bn.js" "*" -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.56.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.6.tgz#d5dc16cac025d313ee101108ba5714ea10eb3ed0" - integrity sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree-jsx@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.5.tgz#858a88ea20f34fe65111f005a689fa1ebf70dc18" - integrity sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg== - dependencies: - "@types/estree" "*" - -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -6521,26 +4726,6 @@ "@types/bn.js" "*" "@types/node" "*" -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.43" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54" - integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@*", "@types/express@^4.17.13": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - "@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -6549,70 +4734,12 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/gtag.js@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572" - integrity sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg== - -"@types/hast@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/history@^4.7.11": - version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" - integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== - -"@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== - -"@types/http-cache-semantics@^4.0.2": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - "@types/js-cookie@^2.2.6": version "2.2.7" resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.12": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -6636,13 +4763,6 @@ dependencies: "@types/lodash" "*" -"@types/lodash.ismatch@^4.4.9": - version "4.4.9" - resolved "https://registry.yarnpkg.com/@types/lodash.ismatch/-/lodash.ismatch-4.4.9.tgz#97b4317f7dc3975bb51660a0f9a055ac7b67b134" - integrity sha512-qWihnStOPKH8urljLGm6ZOEdN/5Bt4vxKR81tL3L4ArUNLvcf9RW3QSnPs21eix5BiqioSWq4aAXD4Iep+d0fw== - dependencies: - "@types/lodash" "*" - "@types/lodash.mapvalues@^4.6.9": version "4.6.9" resolved "https://registry.yarnpkg.com/@types/lodash.mapvalues/-/lodash.mapvalues-4.6.9.tgz#1edb4b1d299db332166b474221b06058b34030a7" @@ -6679,17 +4799,10 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.16.tgz#94ae78fab4a38d73086e962d0b65c30d816bfb0a" integrity sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g== -"@types/mdast@^4.0.0", "@types/mdast@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333" - integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== - dependencies: - "@types/unist" "*" - -"@types/mdx@^2.0.0": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.12.tgz#38db34cc8999b982beaec01399620bee6c65ef2e" - integrity sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw== +"@types/lodash@^4.17.20": + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.20.tgz#1ca77361d7363432d29f5e55950d9ec1e1c6ea93" + integrity sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA== "@types/memcached@^2.2.6": version "2.2.10" @@ -6698,16 +4811,6 @@ dependencies: "@types/node" "*" -"@types/mime@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" - integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - "@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -6738,13 +4841,6 @@ "@types/node" "*" form-data "^4.0.0" -"@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== - dependencies: - "@types/node" "*" - "@types/node@*": version "20.11.30" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f" @@ -6769,11 +4865,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^17.0.5": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== - "@types/node@^20.14.2": version "20.14.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" @@ -6830,11 +4921,6 @@ pg-protocol "*" pg-types "^2.2.0" -"@types/prismjs@^1.26.0": - version "1.26.3" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.3.tgz#47fe8e784c2dee24fe636cab82e090d3da9b7dec" - integrity sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw== - "@types/prop-types@*": version "15.7.12" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" @@ -6847,16 +4933,6 @@ dependencies: "@types/retry" "*" -"@types/qs@*": - version "6.9.14" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.14.tgz#169e142bfe493895287bee382af6039795e9b75b" - integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - "@types/react-dom@^18.0.10": version "18.2.22" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.22.tgz#d332febf0815403de6da8a97e5fe282cbe609bae" @@ -6871,32 +4947,6 @@ dependencies: "@types/react" "*" -"@types/react-router-config@*", "@types/react-router-config@^5.0.7": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@types/react-router-config/-/react-router-config-5.0.11.tgz#2761a23acc7905a66a94419ee40294a65aaa483a" - integrity sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "^5.1.0" - -"@types/react-router-dom@*": - version "5.3.3" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" - integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*", "@types/react-router@^5.1.0": - version "5.1.20" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" - integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react@*", "@types/react@^18.0.9": version "18.2.70" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.70.tgz#89a37f9e0a6a4931f4259c598f40fd44dd6abf71" @@ -6921,23 +4971,11 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.5.tgz#f090ff4bd8d2e5b940ff270ab39fd5ca1834a07e" integrity sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw== -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - "@types/retry@0.12.2": version "0.12.2" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== -"@types/sax@^1.2.1": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/sax/-/sax-1.2.7.tgz#ba5fe7df9aa9c89b6dff7688a19023dd2963091d" - integrity sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A== - dependencies: - "@types/node" "*" - "@types/scheduler@*": version "0.16.8" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" @@ -6950,34 +4988,10 @@ dependencies: "@types/node" "*" -"@types/semver@^7.3.12", "@types/semver@^7.5.0": +"@types/semver@^7.5.0": version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-index@^1.9.1": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" - integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== - dependencies: - "@types/express" "*" - -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== - dependencies: - "@types/http-errors" "*" - "@types/mime" "*" - "@types/node" "*" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/shimmer@^1.2.0": version "1.2.0" @@ -6996,13 +5010,6 @@ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== -"@types/sockjs@^0.3.33": - version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" - integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== - dependencies: - "@types/node" "*" - "@types/stylis@4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" @@ -7025,16 +5032,6 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" - integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== - -"@types/unist@^2.0.0": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== - "@types/ws@^8.5.10": version "8.18.0" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.0.tgz#8a2ec491d6f0685ceaab9a9b7ff44146236993b5" @@ -7042,25 +5039,6 @@ dependencies: "@types/node" "*" -"@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - "@typescript-eslint/eslint-plugin@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.5.0.tgz#1dc52fe48454d5b54be2d5f089680452f1628a5a" @@ -7089,14 +5067,6 @@ "@typescript-eslint/visitor-keys" "7.5.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" @@ -7123,11 +5093,6 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - "@typescript-eslint/types@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" @@ -7138,19 +5103,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.5.0.tgz#0a284bcdef3cb850ec9fd57992df9f29d6bde1bc" integrity sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg== -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" @@ -7192,20 +5144,6 @@ "@typescript-eslint/typescript-estree" "7.5.0" semver "^7.5.4" -"@typescript-eslint/utils@^5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - "@typescript-eslint/utils@^6.20.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" @@ -7219,14 +5157,6 @@ "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" @@ -7243,7 +5173,7 @@ "@typescript-eslint/types" "7.5.0" eslint-visitor-keys "^3.4.1" -"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": +"@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== @@ -7795,47 +5725,73 @@ resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz#508b6c45b03f917112a9008180b308ba0e4d1805" integrity sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA== -"@wagmi/connectors@5.7.5": - version "5.7.5" - resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.7.5.tgz#59c4d3abfcb342aa4640749c7a0dcf96dcd5089d" - integrity sha512-btqHHUSTzg4BZe9at/7SnRPv4cz8O3pisbeZBh0qxKz7PVm+9vRxY0bSala3xQPDcS0PRTB30Vn/+lM73GCjbw== +"@wagmi/connectors@5.9.9": + version "5.9.9" + resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-5.9.9.tgz#e7a2c41a90dadad450f8145a29a69332b9376c14" + integrity sha512-6+eqU7P2OtxU2PkIw6kHojfYYUJykYG2K5rSkzVh29RDCAjhJqGEZW5f1b8kV5rUBORip1NpST8QTBNi96JHGQ== dependencies: - "@coinbase/wallet-sdk" "4.2.3" - "@metamask/sdk" "0.31.5" - "@safe-global/safe-apps-provider" "0.18.5" + "@base-org/account" "1.1.1" + "@coinbase/wallet-sdk" "4.3.6" + "@gemini-wallet/core" "0.2.0" + "@metamask/sdk" "0.32.0" + "@safe-global/safe-apps-provider" "0.18.6" "@safe-global/safe-apps-sdk" "9.1.0" - "@walletconnect/ethereum-provider" "2.17.0" + "@walletconnect/ethereum-provider" "2.21.1" cbw-sdk "npm:@coinbase/wallet-sdk@3.9.3" -"@wagmi/core@2.16.3", "@wagmi/core@^2.16.3": - version "2.16.3" - resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.16.3.tgz#abbff0a19e75beaad56ffb90da772641552d49c3" - integrity sha512-SVovoWHaQ2AIkmGf+ucNijT6AHXcTMffFcLmcFF6++y21x+ge7Gkh3UoJiU91SDDv8n08eTQ9jbyia3GEgU5jQ== +"@wagmi/core@2.20.3", "@wagmi/core@^2.20.3": + version "2.20.3" + resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-2.20.3.tgz#39faba39cb3b1710232574557f357a2bdd31a217" + integrity sha512-gsbuHnWxf0AYZISvR8LvF/vUCIq6/ZwT5f5/FKd6wLA7Wq05NihCvmQpIgrcVbpSJPL67wb6S8fXm3eJGJA1vQ== dependencies: eventemitter3 "5.0.1" mipd "0.0.7" zustand "5.0.0" -"@walletconnect/core@2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.0.tgz#bf490e85a4702eff0f7cf81ba0d3c1016dffff33" - integrity sha512-On+uSaCfWdsMIQsECwWHZBmUXfrnqmv6B8SXRRuTJgd8tUpEvBkLQH4X7XkSm3zW6ozEkQTCagZ2ox2YPn3kbw== +"@walletconnect/core@2.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.21.0.tgz#a8927c79cd5ff47a2eaa8dd6a8e8f0060619393d" + integrity sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw== + dependencies: + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.16" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.1.0" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.21.0" + "@walletconnect/utils" "2.21.0" + "@walletconnect/window-getters" "1.0.1" + es-toolkit "1.33.0" + events "3.3.0" + uint8arrays "3.1.0" + +"@walletconnect/core@2.21.1": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.21.1.tgz#fb5ba547acb2b297a8b29b4f972167886374c9dc" + integrity sha512-Tp4MHJYcdWD846PH//2r+Mu4wz1/ZU/fr9av1UWFiaYQ2t2TPLDiZxjLw54AAEpMqlEHemwCgiRiAmjR1NDdTQ== dependencies: "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.14" + "@walletconnect/jsonrpc-ws-connection" "1.0.16" "@walletconnect/keyvaluestorage" "1.1.1" "@walletconnect/logger" "2.1.2" "@walletconnect/relay-api" "1.0.11" - "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/relay-auth" "1.1.0" "@walletconnect/safe-json" "1.0.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.17.0" - "@walletconnect/utils" "2.17.0" + "@walletconnect/types" "2.21.1" + "@walletconnect/utils" "2.21.1" + "@walletconnect/window-getters" "1.0.1" + es-toolkit "1.33.0" events "3.3.0" - lodash.isequal "4.5.0" uint8arrays "3.1.0" "@walletconnect/environment@^1.0.1": @@ -7845,20 +5801,21 @@ dependencies: tslib "1.14.1" -"@walletconnect/ethereum-provider@2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.17.0.tgz#d74feaaed6180a6799e96760d7ee867ff3a083d2" - integrity sha512-b+KTAXOb6JjoxkwpgYQQKPUcTwENGmdEdZoIDLeRicUmZTn/IQKfkMoC2frClB4YxkyoVMtj1oMV2JAax+yu9A== +"@walletconnect/ethereum-provider@2.21.1": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.21.1.tgz#b1e3cdcf4894613b11353bd702c019027e5a2cde" + integrity sha512-SSlIG6QEVxClgl1s0LMk4xr2wg4eT3Zn/Hb81IocyqNSGfXpjtawWxKxiC5/9Z95f1INyBD6MctJbL/R1oBwIw== dependencies: + "@reown/appkit" "1.7.8" "@walletconnect/jsonrpc-http-connection" "1.0.8" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/modal" "2.7.0" - "@walletconnect/sign-client" "2.17.0" - "@walletconnect/types" "2.17.0" - "@walletconnect/universal-provider" "2.17.0" - "@walletconnect/utils" "2.17.0" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/sign-client" "2.21.1" + "@walletconnect/types" "2.21.1" + "@walletconnect/universal-provider" "2.21.1" + "@walletconnect/utils" "2.21.1" events "3.3.0" "@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": @@ -7922,10 +5879,10 @@ "@walletconnect/jsonrpc-types" "^1.0.3" tslib "1.14.1" -"@walletconnect/jsonrpc-ws-connection@1.0.14": - version "1.0.14" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" - integrity sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA== +"@walletconnect/jsonrpc-ws-connection@1.0.16": + version "1.0.16" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz#666bb13fbf32a2d4f7912d5b4d0bdef26a1d057b" + integrity sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q== dependencies: "@walletconnect/jsonrpc-utils" "^1.0.6" "@walletconnect/safe-json" "^1.0.2" @@ -7949,31 +5906,6 @@ "@walletconnect/safe-json" "^1.0.2" pino "7.11.0" -"@walletconnect/modal-core@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.7.0.tgz#73c13c3b7b0abf9ccdbac9b242254a86327ce0a4" - integrity sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA== - dependencies: - valtio "1.11.2" - -"@walletconnect/modal-ui@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz#dbbb7ee46a5a25f7d39db622706f2d197b268cbb" - integrity sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ== - dependencies: - "@walletconnect/modal-core" "2.7.0" - lit "2.8.0" - motion "10.16.2" - qrcode "1.5.3" - -"@walletconnect/modal@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.7.0.tgz#55f969796d104cce1205f5f844d8f8438b79723a" - integrity sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw== - dependencies: - "@walletconnect/modal-core" "2.7.0" - "@walletconnect/modal-ui" "2.7.0" - "@walletconnect/relay-api@1.0.11": version "1.0.11" resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" @@ -7981,16 +5913,15 @@ dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" -"@walletconnect/relay-auth@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" - integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== +"@walletconnect/relay-auth@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz#c3c5f54abd44a5138ea7d4fe77970597ba66c077" + integrity sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ== dependencies: - "@stablelib/ed25519" "^1.0.2" - "@stablelib/random" "^1.0.1" + "@noble/curves" "1.8.0" + "@noble/hashes" "1.7.0" "@walletconnect/safe-json" "^1.0.1" "@walletconnect/time" "^1.0.2" - tslib "1.14.1" uint8arrays "^3.0.0" "@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": @@ -8000,19 +5931,34 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.0.tgz#efe811b1bb10082d964e2f0378aaa1b40f424503" - integrity sha512-sErYwvSSHQolNXni47L3Bm10ptJc1s1YoJvJd34s5E9h9+d3rj7PrhbiW9X82deN+Dm5oA8X9tC4xty1yIBrVg== +"@walletconnect/sign-client@2.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.21.0.tgz#3dc3be83be58ad9a9fb53d0fd8fa5e571cfdd046" + integrity sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA== + dependencies: + "@walletconnect/core" "2.21.0" + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "2.1.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.21.0" + "@walletconnect/utils" "2.21.0" + events "3.3.0" + +"@walletconnect/sign-client@2.21.1": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.21.1.tgz#a0d42ae44f801d131208df7216a0326a9fad61bb" + integrity sha512-QaXzmPsMnKGV6tc4UcdnQVNOz4zyXgarvdIQibJ4L3EmLat73r5ZVl4c0cCOcoaV7rgM9Wbphgu5E/7jNcd3Zg== dependencies: - "@walletconnect/core" "2.17.0" + "@walletconnect/core" "2.21.1" "@walletconnect/events" "1.0.1" "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "2.1.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.17.0" - "@walletconnect/utils" "2.17.0" + "@walletconnect/types" "2.21.1" + "@walletconnect/utils" "2.21.1" events "3.3.0" "@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": @@ -8022,10 +5968,22 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.0.tgz#20eda5791e3172f8ab9146caa3f317701d4b3232" - integrity sha512-i1pn9URpvt9bcjRDkabuAmpA9K7mzyKoLJlbsAujRVX7pfaG7wur7u9Jz0bk1HxvuABL5LHNncTnVKSXKQ5jZA== +"@walletconnect/types@2.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.21.0.tgz#afb47ff5966d57f97dd955dc3fa4817c616b9c24" + integrity sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + events "3.3.0" + +"@walletconnect/types@2.21.1": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.21.1.tgz#258c1b94eac20f20896b7998a76ff4f18c935983" + integrity sha512-UeefNadqP6IyfwWC1Yi7ux+ljbP2R66PLfDrDm8izmvlPmYlqRerJWJvYO4t0Vvr9wrG4Ko7E0c4M7FaPKT/sQ== dependencies: "@walletconnect/events" "1.0.1" "@walletconnect/heartbeat" "1.2.2" @@ -8034,42 +5992,87 @@ "@walletconnect/logger" "2.1.2" events "3.3.0" -"@walletconnect/universal-provider@2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.17.0.tgz#c9d4bbd9b8f0e41b500b2488ccbc207dc5f7a170" - integrity sha512-d3V5Be7AqLrvzcdMZSBS8DmGDRdqnyLk1DWmRKAGgR6ieUWykhhUKlvfeoZtvJrIXrY7rUGYpH1X41UtFkW5Pw== +"@walletconnect/universal-provider@2.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.21.0.tgz#fb21e9726a8eb983df70cf2b304b110b6a0b1354" + integrity sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/jsonrpc-http-connection" "1.0.8" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + "@walletconnect/sign-client" "2.21.0" + "@walletconnect/types" "2.21.0" + "@walletconnect/utils" "2.21.0" + es-toolkit "1.33.0" + events "3.3.0" + +"@walletconnect/universal-provider@2.21.1": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.21.1.tgz#e6047b89454c64ee0766595b36ec308fba3b55e2" + integrity sha512-Wjx9G8gUHVMnYfxtasC9poGm8QMiPCpXpbbLFT+iPoQskDDly8BwueWnqKs4Mx2SdIAWAwuXeZ5ojk5qQOxJJg== dependencies: + "@walletconnect/events" "1.0.1" "@walletconnect/jsonrpc-http-connection" "1.0.8" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" "@walletconnect/logger" "2.1.2" - "@walletconnect/sign-client" "2.17.0" - "@walletconnect/types" "2.17.0" - "@walletconnect/utils" "2.17.0" + "@walletconnect/sign-client" "2.21.1" + "@walletconnect/types" "2.21.1" + "@walletconnect/utils" "2.21.1" + es-toolkit "1.33.0" events "3.3.0" -"@walletconnect/utils@2.17.0": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.0.tgz#02b3af0b80d0c1a994d692d829d066271b04d071" - integrity sha512-1aeQvjwsXy4Yh9G6g2eGmXrEl+BzkNjHRdCrGdMYqFTFa8ROEJfTGsSH3pLsNDlOY94CoBUvJvM55q/PMoN/FQ== +"@walletconnect/utils@2.21.0": + version "2.21.0" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.21.0.tgz#53517aab2ba456b9765b8ab064c7f721acfc4626" + integrity sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig== + dependencies: + "@noble/ciphers" "1.2.1" + "@noble/curves" "1.8.1" + "@noble/hashes" "1.7.1" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.1.0" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.21.0" + "@walletconnect/window-getters" "1.0.1" + "@walletconnect/window-metadata" "1.0.1" + bs58 "6.0.0" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "3.1.0" + viem "2.23.2" + +"@walletconnect/utils@2.21.1": + version "2.21.1" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.21.1.tgz#acdadc38685cefbc6b49b7d7853893dfcb8ee044" + integrity sha512-VPZvTcrNQCkbGOjFRbC24mm/pzbRMUq2DSQoiHlhh0X1U7ZhuIrzVtAoKsrzu6rqjz0EEtGxCr3K1TGRqDG4NA== dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "1.0.3" + "@noble/ciphers" "1.2.1" + "@noble/curves" "1.8.1" + "@noble/hashes" "1.7.1" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" "@walletconnect/relay-api" "1.0.11" - "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/relay-auth" "1.1.0" "@walletconnect/safe-json" "1.0.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.17.0" + "@walletconnect/types" "2.21.1" "@walletconnect/window-getters" "1.0.1" "@walletconnect/window-metadata" "1.0.1" + bs58 "6.0.0" detect-browser "5.3.0" - elliptic "^6.5.7" query-string "7.1.3" uint8arrays "3.1.0" + viem "2.23.2" "@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": version "1.0.1" @@ -8086,127 +6089,6 @@ "@walletconnect/window-getters" "^1.0.1" tslib "1.14.1" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== - -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== - -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== - -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== - -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" - -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@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" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@xtuc/long" "4.2.2" - "@welldone-software/why-did-you-render@^10.0.1": version "10.0.1" resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-10.0.1.tgz#4513c1883add0496b98bcdcdcd243ff10c0f5ece" @@ -8219,20 +6101,10 @@ resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abitype@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" - integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== +abitype@1.1.0, abitype@^1.0.6, abitype@^1.0.8, abitype@^1.0.9: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" + integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== abitype@^0.9.8: version "0.9.10" @@ -8251,19 +6123,6 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - acorn-import-attributes@^1.9.5: version "1.9.5" resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" @@ -8274,7 +6133,7 @@ acorn-jsx-walk@^2.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx-walk/-/acorn-jsx-walk-2.0.0.tgz#a5ed648264e68282d7c2aead80216bfdf232573a" integrity sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA== -acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -8286,11 +6145,6 @@ acorn-loose@^8.4.0: dependencies: acorn "^8.11.0" -acorn-walk@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - acorn-walk@^8.3.4: version "8.3.4" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" @@ -8298,20 +6152,15 @@ acorn-walk@^8.3.4: dependencies: acorn "^8.11.0" -acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.3, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - acorn@^8.11.0, acorn@^8.14.0: version "8.14.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== -address@^1.0.1, address@^1.1.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== +acorn@^8.11.3, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== addreth@3.0.1: version "3.0.1" @@ -8335,34 +6184,7 @@ agent-base@^7.1.2: resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -8372,16 +6194,6 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ajv@^8.17.1: version "8.17.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" @@ -8402,40 +6214,6 @@ alge@0.8.1: ts-toolbelt "^9.6.0" zod "^3.17.3" -algoliasearch-helper@^3.13.3: - version "3.16.3" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.16.3.tgz#38c3a18e278306f565823cc7f3dd706825b4bfb9" - integrity sha512-1OuJT6sONAa9PxcOmWo5WCAT3jQSpCR9/m5Azujja7nhUQwAUDvaaAYrcmUySsrvHh74usZHbE3jFfGnWtZj8w== - dependencies: - "@algolia/events" "^4.0.1" - -algoliasearch@^4.18.0, algoliasearch@^4.19.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" - integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== - dependencies: - "@algolia/cache-browser-local-storage" "4.22.1" - "@algolia/cache-common" "4.22.1" - "@algolia/cache-in-memory" "4.22.1" - "@algolia/client-account" "4.22.1" - "@algolia/client-analytics" "4.22.1" - "@algolia/client-common" "4.22.1" - "@algolia/client-personalization" "4.22.1" - "@algolia/client-search" "4.22.1" - "@algolia/logger-common" "4.22.1" - "@algolia/logger-console" "4.22.1" - "@algolia/requester-browser-xhr" "4.22.1" - "@algolia/requester-common" "4.22.1" - "@algolia/requester-node-http" "4.22.1" - "@algolia/transporter" "4.22.1" - -ansi-align@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -8448,11 +6226,6 @@ ansi-escapes@^5.0.0: dependencies: type-fest "^1.0.2" -ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -8463,11 +6236,6 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-sequence-parser@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" - integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -8505,7 +6273,7 @@ arg@^4.1.3: resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -arg@^5.0.0, arg@^5.0.2: +arg@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== @@ -8545,11 +6313,6 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" @@ -8713,11 +6476,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -astring@^1.8.0: - version "1.8.6" - resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" - integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== - async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -8742,11 +6500,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -8757,7 +6510,7 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -autoprefixer@^10.4.12, autoprefixer@^10.4.13, autoprefixer@^10.4.14: +autoprefixer@^10.4.13: version "10.4.19" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== @@ -8825,21 +6578,6 @@ babel-dead-code-elimination@^1.0.6: "@babel/traverse" "^7.23.7" "@babel/types" "^7.23.6" -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -8849,35 +6587,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1" - integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.1" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" - integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - -bail@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -8890,6 +6599,11 @@ base-x@^3.0.2: dependencies: safe-buffer "^5.0.1" +base-x@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.1.tgz#16bf35254be1df8aca15e36b7c1dda74b2aa6b03" + integrity sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg== + base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -8918,11 +6632,6 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -8935,16 +6644,16 @@ better-path-resolve@1.0.0: dependencies: is-windows "^1.0.0" +big.js@6.2.2, big.js@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" + integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -big.js@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" - integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== - bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.0.2: version "9.1.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" @@ -8975,75 +6684,16 @@ bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - body-scroll-lock@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/body-scroll-lock/-/body-scroll-lock-3.1.5.tgz#c1392d9217ed2c3e237fee1e910f6cdd80b7aaec" integrity sha512-Yi1Xaml0EvNA0OYWxXiYNqY24AfWkbA6w5vxE7GWxtKfzIbZM+Qw+aSmkgsbWzbHiy/RCSkUZBplVxTA+E4jJg== -bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - bowser@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== -boxen@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" - integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== - dependencies: - ansi-align "^3.0.1" - camelcase "^6.2.0" - chalk "^4.1.2" - cli-boxes "^3.0.0" - string-width "^5.0.1" - type-fest "^2.5.0" - widest-line "^4.0.1" - wrap-ansi "^8.0.1" - -boxen@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" - integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== - dependencies: - ansi-align "^3.0.1" - camelcase "^7.0.1" - chalk "^5.2.0" - cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.1.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -9170,7 +6820,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -9190,6 +6840,13 @@ browserslist@^4.24.0: node-releases "^2.0.18" update-browserslist-db "^1.1.1" +bs58@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -9211,11 +6868,6 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - buffer-reverse@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" @@ -9300,16 +6952,6 @@ bunyan@^1.8.15: mv "~2" safe-json-stringify "~1" -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - cac@^6.7.12, cac@^6.7.14: version "6.7.14" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" @@ -9330,24 +6972,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cacheable-lookup@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" - integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== - -cacheable-request@^10.2.8: - version "10.2.14" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" - integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== - dependencies: - "@types/http-cache-semantics" "^4.0.2" - get-stream "^6.0.1" - http-cache-semantics "^4.1.1" - keyv "^4.5.3" - mimic-response "^4.0.0" - normalize-url "^8.0.0" - responselike "^3.0.0" - calendar-link@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/calendar-link/-/calendar-link-2.6.0.tgz#47cec3d9a2d0c13ac87f732898867e92ea423c98" @@ -9385,14 +7009,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" @@ -9412,32 +7028,12 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" - integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== - camelize@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: +caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: version "1.0.30001600" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ== @@ -9465,12 +7061,7 @@ cbor-web@8.1.0: eventemitter3 "^5.0.1" keccak "^3.0.3" preact "^10.16.0" - sha.js "^2.4.11" - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + sha.js "^2.4.11" chai@^4.3.10, chai@^4.3.4: version "4.5.0" @@ -9496,7 +7087,7 @@ chai@^5.1.1: loupe "^3.1.0" pathval "^2.0.0" -chalk@5.3.0, chalk@^5.0.1, chalk@^5.2.0, chalk@^5.3.0: +chalk@5.3.0, chalk@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -9518,31 +7109,6 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -character-entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" - integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== - -character-reference-invalid@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" - integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -9560,32 +7126,7 @@ check-error@^2.1.1: resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.12: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.1, chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3, chokidar@^3.6.0: +chokidar@^3.3.1, chokidar@^3.5.1, chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -9605,12 +7146,7 @@ chownr@^3.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^3.2.0, ci-info@^3.7.0: +ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== @@ -9655,13 +7191,6 @@ classnames@^2.3.2: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== -clean-css@^5.2.2, clean-css@^5.3.2, clean-css@~5.3.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== - dependencies: - source-map "~0.6.0" - clean-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" @@ -9669,16 +7198,6 @@ clean-regexp@^1.0.0: dependencies: escape-string-regexp "^1.0.5" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - cli-cursor@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" @@ -9686,15 +7205,6 @@ cli-cursor@^4.0.0: dependencies: restore-cursor "^4.0.0" -cli-table3@^0.6.3: - version "0.6.4" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.4.tgz#d1c536b8a3f2e7bec58f67ac9e5769b1b30088b0" - integrity sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - cli-truncate@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" @@ -9730,15 +7240,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - clone@2.x: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -9749,16 +7250,16 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +clsx@1.2.1, clsx@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + clsx@2.1.1, clsx@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== -clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - clsx@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" @@ -9769,11 +7270,6 @@ cluster-key-slot@1.1.2: resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== -collapse-white-space@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca" - integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -9816,21 +7312,11 @@ color2k@^2.0.3: resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.3.tgz#a771244f6b6285541c82aa65ff0a0c624046e533" integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog== -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.10, colorette@^2.0.20, colorette@^2.0.7: +colorette@^2.0.20, colorette@^2.0.7: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -combine-promises@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a" - integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ== - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -9838,21 +7324,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - commander@11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - commander@^12.0.0, commander@^12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -9873,85 +7349,16 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - component-emitter@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" - integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== - dependencies: - dot-prop "^6.0.1" - graceful-fs "^4.2.6" - unique-string "^3.0.0" - write-file-atomic "^3.0.3" - xdg-basedir "^5.0.1" - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -consola@^2.15.3: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - consola@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" @@ -9972,23 +7379,6 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" @@ -10004,16 +7394,6 @@ cookie-es@^1.0.0: resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.0.0.tgz#4759684af168dfc54365b2c2dda0a8d7ee1e4865" integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ== -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - cookie@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" @@ -10024,11 +7404,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -copy-text-to-clipboard@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz#0202b2d9bdae30a49a53f898626dcc3b49ad960b" - integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== - copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -10036,52 +7411,19 @@ copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -copy-webpack-plugin@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" - integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== - dependencies: - fast-glob "^3.2.11" - glob-parent "^6.0.1" - globby "^13.1.1" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -core-js-compat@^3.31.0, core-js-compat@^3.34.0, core-js-compat@^3.36.1: +core-js-compat@^3.34.0: version "3.36.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== dependencies: browserslist "^4.23.0" -core-js-pure@^3.30.2: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.36.1.tgz#1461c89e76116528b54eba20a0aff30164087a94" - integrity sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA== - -core-js@^3.31.1: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578" - integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: +cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== @@ -10092,16 +7434,6 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^8.3.5: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -10209,23 +7541,11 @@ crypto-js@^4.2.0: resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== -crypto-random-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" - integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== - dependencies: - type-fest "^1.0.1" - css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== - css-in-js-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" @@ -10233,54 +7553,6 @@ css-in-js-utils@^3.1.0: dependencies: hyphenate-style-name "^1.0.3" -css-loader@^6.8.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" - integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.4" - postcss-modules-scope "^3.1.1" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" - -css-minimizer-webpack-plugin@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35" - integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA== - dependencies: - cssnano "^5.1.8" - jest-worker "^29.1.2" - postcss "^8.4.17" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - css-selector-tokenizer@^0.8: version "0.8.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz#88267ef6238e64f2215ea2764b3e2cf498b845dd" @@ -10298,7 +7570,7 @@ css-to-react-native@3.2.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -10306,7 +7578,7 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-what@^6.0.1, css-what@^6.1.0: +css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -10316,74 +7588,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef" - integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ== - dependencies: - autoprefixer "^10.4.12" - cssnano-preset-default "^5.2.14" - postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.1" - postcss-reduce-idents "^5.2.0" - postcss-zindex "^5.1.0" - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.1.15, cssnano@^5.1.8: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - csstype@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -10424,11 +7628,6 @@ culori@^3: resolved "https://registry.yarnpkg.com/culori/-/culori-3.3.0.tgz#e33530adbd124d53bd6550394397e695eaaed739" integrity sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ== -d3-format@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" - integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== - daisyui@^4.12.2: version "4.12.2" resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-4.12.2.tgz#9abdd513572502e7905f2aa12c5e958df417520e" @@ -10478,30 +7677,30 @@ dateformat@^4.6.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== +dayjs@1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + dayjs@^1.9.3: version "1.11.10" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: +debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -10541,13 +7740,6 @@ decimal.js-light@^2.5.0: resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== -decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== - dependencies: - character-entities "^2.0.0" - decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -10560,13 +7752,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - dedent@^1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" @@ -10584,11 +7769,6 @@ deep-eql@^5.0.1: resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -10604,13 +7784,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - defaults@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -10618,11 +7791,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - define-data-property@^1.0.1, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" @@ -10632,11 +7800,6 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" @@ -10673,35 +7836,11 @@ defu@^6.1.3, defu@^6.1.4: resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== -del@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - dependency-cruiser@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/dependency-cruiser/-/dependency-cruiser-16.6.0.tgz#ff73285621f86b618837fd9fe03bc27ee40f8dc7" @@ -10730,10 +7869,10 @@ dependency-cruiser@^16.6.0: tsconfig-paths-webpack-plugin "^4.1.0" watskeburt "^4.1.0" -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +derive-valtio@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/derive-valtio/-/derive-valtio-0.1.0.tgz#4b9fb393dfefccfef15fcbbddd745dd22d5d63d7" + integrity sha512-OCg2UsLbXK7GmmpzMXhYkdO64vhJ1ROUUGaTFyHjVwEdMEcTTRj7W1TxLbSBxdY8QLBPCcp66MTyaSy0RpO17A== des.js@^1.0.0: version "1.1.0" @@ -10748,11 +7887,6 @@ destr@^2.0.3: resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449" integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ== -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - detect-browser@5.3.0, detect-browser@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" @@ -10773,34 +7907,6 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detect-port@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - dependencies: - address "^1.0.1" - debug "4" - -devlop@^1.0.0, devlop@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -10867,20 +7973,6 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== - dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" - -dnum@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/dnum/-/dnum-2.11.0.tgz#0b69ea68c1ff95fad050d3d4e636bf84f8d7098e" - integrity sha512-JaVo6HlaVC3xHqoKmiiqTqk2/z2khBmkQTaPw78WkDsJESVX0zPPAhQ3Zv/QKx4L18LkbbPHg6pKl5vdQA5YEA== - dependencies: - from-exponential "^1.1.1" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -10895,43 +7987,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -docusaurus-plugin-sass@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/docusaurus-plugin-sass/-/docusaurus-plugin-sass-0.2.5.tgz#6bfb8a227ac6265be685dcbc24ba1989e27b8005" - integrity sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg== - dependencies: - sass-loader "^10.1.1" - -docusaurus-plugin-typedoc@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/docusaurus-plugin-typedoc/-/docusaurus-plugin-typedoc-0.22.0.tgz#3731c19e18083c1217ef954dc64b667ddbd0b120" - integrity sha512-5q+oT+iq3g9DvsMin11pSSmqHRw0i62csHBzkWVtgmsqN/BwGDHnxDiTbHhhkBNQpmRIRgltyNdMnO5x+JUK8Q== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" @@ -10942,58 +7997,6 @@ domain-browser@^4.22.0: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.23.0.tgz#427ebb91efcb070f05cffdfb8a4e9a6c25f8c94b" integrity sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA== -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - dotenv@16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" @@ -11030,11 +8033,6 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - duplexify@^4.1.2, duplexify@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" @@ -11067,11 +8065,6 @@ eciesjs@^0.4.11: "@noble/curves" "^1.6.0" "@noble/hashes" "^1.5.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - electron-to-chromium@^1.4.668: version "1.4.717" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz#99db370cae8cd090d5b01f8748e9ad369924d0f8" @@ -11108,19 +8101,6 @@ elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6. minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -elliptic@^6.5.7: - version "6.6.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - elysia-rate-limit@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/elysia-rate-limit/-/elysia-rate-limit-4.2.1.tgz#d93b15e786ffab81fa7ed5d1812e1ffd64251b06" @@ -11149,31 +8129,11 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojilib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" - integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -emoticon@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-4.0.1.tgz#2d2bbbf231ce3a5909e185bbb64a9da703a1e749" - integrity sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw== - encode-utf8@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - end-of-stream@^1.1.0, end-of-stream@^1.4.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -11197,7 +8157,7 @@ engine.io-parser@~5.2.1: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== -enhanced-resolve@^5.12.0, enhanced-resolve@^5.16.0: +enhanced-resolve@^5.12.0: version "5.16.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== @@ -11221,16 +8181,6 @@ enquirer@^2.3.0: ansi-colors "^4.1.1" strip-ansi "^6.0.1" -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -11334,11 +8284,6 @@ es-iterator-helpers@^1.0.17: iterator.prototype "^1.1.2" safe-array-concat "^1.1.2" -es-module-lexer@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236" - integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== - es-object-atoms@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" @@ -11381,6 +8326,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-toolkit@1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.33.0.tgz#bcc9d92ef2e1ed4618c00dd30dfda9faddf4a0b7" + integrity sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg== + esbuild@^0.19.2, esbuild@~0.19.10: version "0.19.12" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" @@ -11538,17 +8488,7 @@ escalade@^3.1.1: escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-goat@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" - integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@^1.0.5: version "1.0.5" @@ -11560,11 +8500,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - eslint-config-prettier@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" @@ -11700,14 +8635,6 @@ eslint-plugin-unicorn@^52.0.0: semver "^7.5.4" strip-indent "^3.0.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" @@ -11793,69 +8720,17 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-util-attach-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" - integrity sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== - dependencies: - "@types/estree" "^1.0.0" - -estree-util-build-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1" - integrity sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== - dependencies: - "@types/estree-jsx" "^1.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - estree-walker "^3.0.0" - -estree-util-is-identifier-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" - integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== - -estree-util-to-js@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17" - integrity sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== - dependencies: - "@types/estree-jsx" "^1.0.0" - astring "^1.8.0" - source-map "^0.7.0" - -estree-util-value-to-estree@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz#0b7b5d6b6a4aaad5c60999ffbc265a985df98ac5" - integrity sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA== - dependencies: - "@types/estree" "^1.0.0" - is-plain-obj "^4.0.0" - -estree-util-visit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb" - integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/unist" "^3.0.0" - estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -estree-walker@^3.0.0, estree-walker@^3.0.3: +estree-walker@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== @@ -11867,16 +8742,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eta@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/eta/-/eta-2.2.0.tgz#eb8b5f8c4e8b6306561a455e62cd7492fe3a9b8a" - integrity sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - eth-block-tracker@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz#dfc16085c6817cc30caabba381deb8d204c1c766" @@ -12052,14 +8917,6 @@ ethjs-util@^0.1.3: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -eval@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" - integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== - dependencies: - "@types/node" "*" - require-like ">= 0.1.1" - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -12075,12 +8932,7 @@ eventemitter3@5.0.1, eventemitter3@^5.0.1: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@3.3.0, events@^3.0.0, events@^3.2.0, events@^3.3.0: +events@3.3.0, events@^3.0.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -12151,43 +9003,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -12203,7 +9018,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@^3.0.2: +extend@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -12276,7 +9091,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.2.11, fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -12322,13 +9137,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== -fast-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== - dependencies: - punycode "^1.3.2" - fast-xml-parser@^4.4.1: version "4.5.3" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" @@ -12353,27 +9161,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fault@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" - integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== - dependencies: - format "^0.2.0" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -feed@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" - integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ== - dependencies: - xml-js "^1.6.11" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -12381,19 +9168,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" - integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -12416,39 +9190,11 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -12465,14 +9211,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - find-yarn-workspace-root2@1.2.16: version "1.2.16" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" @@ -12497,26 +9235,21 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@^1.0.0, follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - follow-redirects@^1.14.0: version "1.15.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -12537,30 +9270,6 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -form-data-encoder@^2.1.2: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" - integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== - form-data@^2.5.0: version "2.5.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.3.tgz#f9bcf87418ce748513c0c3494bb48ec270c97acc" @@ -12591,21 +9300,11 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== - forwarded-parse@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/forwarded-parse/-/forwarded-parse-2.1.2.tgz#08511eddaaa2ddfd56ba11138eee7df117a09325" integrity sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw== -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - fraction.js@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" @@ -12618,25 +9317,6 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -from-exponential@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/from-exponential/-/from-exponential-1.1.1.tgz#41caff748d22e9c195713802cdac31acbe4b1b83" - integrity sha512-VBE7f5OVnYwdgB3LHa+Qo29h8qVpxhVO9Trlc+AWm+/XNAgks1tAwMFHb33mjeiof77GglsJzeYF7OqXrROP/A== - -fs-extra@^11.1.1: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -12655,21 +9335,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -12777,11 +9442,6 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - get-port-please@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" @@ -12833,11 +9493,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -github-slugger@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" - integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -12853,7 +9508,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1, glob-parent@^6.0.2: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -12865,11 +9520,6 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@^10.3.10: version "10.3.10" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" @@ -12904,7 +9554,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: +glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -12923,29 +9573,6 @@ global-directory@^4.0.1: dependencies: ini "4.1.1" -global-dirs@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" - integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== - dependencies: - ini "2.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - global@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" @@ -12973,7 +9600,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^11.0.0, globby@^11.0.1, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.0, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -12985,17 +9612,6 @@ globby@^11.0.0, globby@^11.0.1, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.1: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - globby@^9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -13054,29 +9670,7 @@ gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -got@^12.1.0: - version "12.6.1" - resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" - integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== - dependencies: - "@sindresorhus/is" "^5.2.0" - "@szmarczak/http-timer" "^5.0.1" - cacheable-lookup "^7.0.0" - cacheable-request "^10.2.8" - decompress-response "^6.0.0" - form-data-encoder "^2.1.2" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^3.0.0" - -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -13126,16 +9720,6 @@ graphql@^16.9.0: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f" integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw== -gray-matter@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" - integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== - dependencies: - js-yaml "^3.13.1" - kind-of "^6.0.2" - section-matter "^1.0.0" - strip-bom-string "^1.0.0" - gsap@^3.12.4, gsap@^3.12.5: version "3.12.5" resolved "https://registry.yarnpkg.com/gsap/-/gsap-3.12.5.tgz#136c02dad4c673b441bdb1ca00104bfcb4eae7f4" @@ -13149,13 +9733,6 @@ gtoken@^7.0.0: gaxios "^6.0.0" jws "^4.0.0" -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - h3@^1.10.2, h3@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/h3/-/h3-1.11.1.tgz#e9414ae6f2a076a345ea07256b320edb29bab9f7" @@ -13172,23 +9749,6 @@ h3@^1.10.2, h3@^1.11.1: uncrypto "^0.1.3" unenv "^1.9.0" -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -13276,11 +9836,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" - integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== - hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -13313,147 +9868,11 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hast-util-from-parse5@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz#654a5676a41211e14ee80d1b1758c399a0327651" - integrity sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - hastscript "^8.0.0" - property-information "^6.0.0" - vfile "^6.0.0" - vfile-location "^5.0.0" - web-namespaces "^2.0.0" - -hast-util-parse-selector@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" - integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== - dependencies: - "@types/hast" "^3.0.0" - -hast-util-raw@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.2.tgz#39b4a4886bd9f0a5dd42e86d02c966c2c152884c" - integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - "@ungap/structured-clone" "^1.0.0" - hast-util-from-parse5 "^8.0.0" - hast-util-to-parse5 "^8.0.0" - html-void-elements "^3.0.0" - mdast-util-to-hast "^13.0.0" - parse5 "^7.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - web-namespaces "^2.0.0" - zwitch "^2.0.0" - -hast-util-to-estree@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz#f2afe5e869ddf0cf690c75f9fc699f3180b51b19" - integrity sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== - dependencies: - "@types/estree" "^1.0.0" - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - estree-util-attach-comments "^3.0.0" - estree-util-is-identifier-name "^3.0.0" - hast-util-whitespace "^3.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^0.4.0" - unist-util-position "^5.0.0" - zwitch "^2.0.0" - -hast-util-to-jsx-runtime@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz#3ed27caf8dc175080117706bf7269404a0aa4f7c" - integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== - dependencies: - "@types/estree" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - hast-util-whitespace "^3.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^1.0.0" - unist-util-position "^5.0.0" - vfile-message "^4.0.0" - -hast-util-to-parse5@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" - integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== - dependencies: - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - web-namespaces "^2.0.0" - zwitch "^2.0.0" - -hast-util-whitespace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" - integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== - dependencies: - "@types/hast" "^3.0.0" - -hastscript@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-8.0.0.tgz#4ef795ec8dee867101b9f23cc830d4baf4fd781a" - integrity sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== - dependencies: - "@types/hast" "^3.0.0" - comma-separated-tokens "^2.0.0" - hast-util-parse-selector "^4.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - help-me@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== -hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -13463,7 +9882,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1: +hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -13480,129 +9899,11 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^2.3.2, html-entities@^2.5.2: +html-entities@^2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== -html-escaper@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== - dependencies: - camel-case "^4.1.2" - clean-css "^5.2.2" - commander "^8.3.0" - he "^1.2.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.10.0" - -html-minifier-terser@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz#18752e23a2f0ed4b0f550f217bb41693e975b942" - integrity sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA== - dependencies: - camel-case "^4.1.2" - clean-css "~5.3.2" - commander "^10.0.0" - entities "^4.4.0" - param-case "^3.0.4" - relateurl "^0.2.7" - terser "^5.15.1" - -html-tags@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" - integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ== - -html-void-elements@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" - integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== - -html-webpack-plugin@^5.5.3: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== - dependencies: - "@types/html-minifier-terser" "^6.0.0" - html-minifier-terser "^6.0.2" - lodash "^4.17.21" - pretty-error "^4.0.0" - tapable "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -13612,39 +9913,11 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== - dependencies: - "@types/http-proxy" "^1.17.8" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - http-shutdown@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== -http2-wrapper@^2.1.10: - version "2.2.1" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" - integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -13696,19 +9969,14 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb-keyval@^6.2.1: +idb-keyval@6.2.1, idb-keyval@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== @@ -13733,24 +10001,7 @@ ignore@^6.0.2: resolved "https://registry.yarnpkg.com/ignore/-/ignore-6.0.2.tgz#77cccb72a55796af1b6d2f9eb14fa326d24f4283" integrity sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A== -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== - dependencies: - queue "6.0.2" - -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - -immutable@^4.0.0: - version "4.3.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== - -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -13768,11 +10019,6 @@ import-in-the-middle@^1.8.1: cjs-module-lexer "^1.2.2" module-details-from-path "^1.0.3" -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -13783,11 +10029,6 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.43: - version "0.2.0-alpha.43" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.43.tgz#f7aa1d7b30b6c08afef441c726bac6150228cbe0" - integrity sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -13796,41 +10037,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - ini@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -inline-style-parser@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" - integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== - -inline-style-parser@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633" - integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== - inline-style-prefixer@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-7.0.0.tgz#991d550735d42069f528ac1bcdacd378d1305442" @@ -13848,11 +10064,6 @@ internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - interpret@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" @@ -13870,16 +10081,6 @@ io-ts@2.0.1: resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.0.1.tgz#1261c12f915c2f48d16393a36966636b48a45aa1" integrity sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== - iron-webcrypto@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz#f902f0cdbd77554b2195ecbb65558c311b01edfd" @@ -13892,19 +10093,6 @@ is-accessor-descriptor@^1.0.1: dependencies: hasown "^2.0.0" -is-alphabetical@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" - integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== - -is-alphanumerical@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" - integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - is-arguments@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" @@ -13972,13 +10160,6 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" @@ -14014,11 +10195,6 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" -is-decimal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" - integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== - is-descriptor@^0.1.0: version "0.1.7" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33" @@ -14035,11 +10211,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-accessor-descriptor "^1.0.1" is-data-descriptor "^1.0.1" -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - is-docker@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" @@ -14110,11 +10281,6 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== -is-hexadecimal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" - integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== - is-inside-container@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" @@ -14122,14 +10288,6 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - is-installed-globally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-1.0.0.tgz#08952c43758c33d815692392f7f8437b9e436d5a" @@ -14161,11 +10319,6 @@ is-network-error@^1.0.0: resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" integrity sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g== -is-npm@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" - integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== - is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" @@ -14185,22 +10338,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2, is-path-inside@^3.0.3: +is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -14213,17 +10351,7 @@ is-path-inside@^4.0.0: is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -14232,18 +10360,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-reference@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" - integrity sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg== - dependencies: - "@types/estree" "*" - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -14252,16 +10368,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - is-set@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" @@ -14312,11 +10418,6 @@ is-typed-array@^1.1.13, is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -14342,13 +10443,6 @@ is-windows@^1.0.0, is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - is-wsl@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" @@ -14356,11 +10450,6 @@ is-wsl@^3.1.0: dependencies: is-inside-container "^1.0.0" -is-yarn-global@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" - integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== - is64bit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is64bit/-/is64bit-2.0.0.tgz#198c627cbcb198bbec402251f88e5e1a51236c07" @@ -14368,11 +10457,6 @@ is64bit@^2.0.0: dependencies: system-architecture "^0.1.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -14410,10 +10494,10 @@ isomorphic-timers-promises@^1.0.1: resolved "https://registry.yarnpkg.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz#e4137c24dbc54892de8abae3a4b5c1ffff381598" integrity sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ== -isows@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" - integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== +isows@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== iterator.prototype@^1.1.2: version "1.1.2" @@ -14444,53 +10528,11 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.1.2: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jiti@^1.20.0, jiti@^1.21.0: +jiti@^1.21.0: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== -joi@^17.9.2: - version "17.12.2" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521" - integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw== - dependencies: - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - joycon@^3.0.1, joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -14563,7 +10605,7 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: +json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -14617,7 +10659,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: +json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -14634,15 +10676,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - jsonpack@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/jsonpack/-/jsonpack-1.1.5.tgz#d42b0dcfd91ac58ef3110f96d2c599404c3dc27c" @@ -14715,7 +10748,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -14730,31 +10763,6 @@ kleur@^4.1.5: resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -klona@^2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - -latest-version@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" - integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== - dependencies: - package-json "^8.1.0" - -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -14773,7 +10781,7 @@ libphonenumber-js@^1.11.1: resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.11.4.tgz#e63fe553f45661b30bb10bb8c82c9cf2b22ec32a" integrity sha512-F/R50HQuWWYcmU/esP5jrH5LiWYaN7DpN0a/99U8+mnGGtnx8kmRE+649dQh3v+CowXXZc8vpkf5AmYkO0AQ7Q== -lilconfig@2.1.0, lilconfig@^2.0.3, lilconfig@^2.1.0: +lilconfig@2.1.0, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== @@ -14845,30 +10853,30 @@ listr2@6.6.1: rfdc "^1.3.0" wrap-ansi "^8.1.0" -lit-element@^3.3.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.3.tgz#10bc19702b96ef5416cf7a70177255bfb17b3209" - integrity sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA== +lit-element@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.2.1.tgz#0a3782f36eaa545862fe07f84abcb14b2903a042" + integrity sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw== dependencies: - "@lit-labs/ssr-dom-shim" "^1.1.0" - "@lit/reactive-element" "^1.3.0" - lit-html "^2.8.0" + "@lit-labs/ssr-dom-shim" "^1.4.0" + "@lit/reactive-element" "^2.1.0" + lit-html "^3.3.0" -lit-html@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.8.0.tgz#96456a4bb4ee717b9a7d2f94562a16509d39bffa" - integrity sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q== +lit-html@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.3.1.tgz#f0a7e4b9ea0a1d034eb28a4bf2d1b0a0096253e3" + integrity sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA== dependencies: "@types/trusted-types" "^2.0.2" -lit@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.8.0.tgz#4d838ae03059bf9cafa06e5c61d8acc0081e974e" - integrity sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA== +lit@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lit/-/lit-3.3.0.tgz#b3037ea94676fb89c3dde9951914efefd0441f17" + integrity sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw== dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.8.0" + "@lit/reactive-element" "^2.1.0" + lit-element "^4.2.0" + lit-html "^3.3.0" load-tsconfig@^0.2.3: version "0.2.5" @@ -14885,33 +10893,6 @@ load-yaml-file@^0.2.0: pify "^4.0.1" strip-bom "^3.0.0" -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -14926,23 +10907,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -14953,11 +10922,6 @@ lodash.groupby@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1" integrity sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw== -lodash.isequal@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -14968,11 +10932,6 @@ lodash.mapvalues@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -14993,17 +10952,12 @@ lodash.startcase@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - lodash.uniqby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@4.17.21, lodash@^4, lodash@^4.17.20, lodash@^4.17.21: +lodash@4.17.21, lodash@^4, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -15024,12 +10978,7 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.3.1.tgz#9d4222d3213f38a5ec809674834e0f0ab21abe96" integrity sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng== -longest-streak@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" - integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -15055,24 +11004,12 @@ loupe@^3.1.0, loupe@^3.1.1: dependencies: get-func-name "^2.0.1" -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - lru-cache@10.2.2: version "10.2.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== -lru-cache@^10.0.1, lru-cache@^10.2.0, "lru-cache@^9.1.1 || ^10.0.0": +lru-cache@^10.2.0, "lru-cache@^9.1.1 || ^10.0.0": version "10.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== @@ -15082,6 +11019,11 @@ lru-cache@^10.4.3: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== +lru-cache@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" + integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -15109,11 +11051,6 @@ lru-cache@~2.2.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" integrity sha512-Q5pAgXs+WEAfoEdw2qKQhNFFhMoFMTYqRVKKUMnzuiR7oKFHS7fWo848cPcTKw+4j/IdN17NyzdhVKgabFV0EA== -lunr@^2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" - integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== - lzma@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/lzma/-/lzma-2.3.2.tgz#3783b24858b9c0e747a0df3cbf1fb5fcaa92c441" @@ -15167,21 +11104,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" - integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== - -markdown-table@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" - integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== - -marked@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" - integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== - math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" @@ -15196,223 +11118,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdast-util-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz#3fb1764e705bbdf0afb0d3f889e4404c3e82561f" - integrity sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0" - integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== - dependencies: - "@types/mdast" "^4.0.0" - escape-string-regexp "^5.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-from-markdown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88" - integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - mdast-util-to-string "^4.0.0" - micromark "^4.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-decode-string "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-stringify-position "^4.0.0" - -mdast-util-frontmatter@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz#f5f929eb1eb36c8a7737475c7eb438261f964ee8" - integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - escape-string-regexp "^5.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-extension-frontmatter "^2.0.0" - -mdast-util-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz#5baf35407421310a08e68c15e5d8821e8898ba2a" - integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== - dependencies: - "@types/mdast" "^4.0.0" - ccount "^2.0.0" - devlop "^1.0.0" - mdast-util-find-and-replace "^3.0.0" - micromark-util-character "^2.0.0" - -mdast-util-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" - integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - -mdast-util-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" - integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" - integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - markdown-table "^3.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-task-list-item@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" - integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" - integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-gfm-autolink-literal "^2.0.0" - mdast-util-gfm-footnote "^2.0.0" - mdast-util-gfm-strikethrough "^2.0.0" - mdast-util-gfm-table "^2.0.0" - mdast-util-gfm-task-list-item "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-expression@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz#4968b73724d320a379110d853e943a501bfd9d87" - integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-jsx@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz#daae777c72f9c4a106592e3025aa50fb26068e1b" - integrity sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-remove-position "^5.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -mdast-util-mdx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41" - integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdxjs-esm@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" - integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-phrasing@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz#7cc0a8dec30eaf04b7b1a9661a92adb3382aa6e3" - integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w== - dependencies: - "@types/mdast" "^4.0.0" - unist-util-is "^6.0.0" - -mdast-util-to-hast@^13.0.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz#1ae54d903150a10fe04d59f03b2b95fd210b2124" - integrity sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -mdast-util-to-markdown@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4" - integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - longest-streak "^3.0.0" - mdast-util-phrasing "^4.0.0" - mdast-util-to-string "^4.0.0" - micromark-util-decode-string "^2.0.0" - unist-util-visit "^5.0.0" - zwitch "^2.0.0" - -mdast-util-to-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" - integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== - dependencies: - "@types/mdast" "^4.0.0" - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -15425,18 +11130,6 @@ media-query-parser@^2.0.2: dependencies: "@babel/runtime" "^7.12.5" -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memfs@^3.1.2, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== - dependencies: - fs-monkey "^1.0.4" - memoize@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/memoize/-/memoize-10.0.0.tgz#43fa66b2022363c7c50cf5dfab732a808a3d7147" @@ -15461,11 +11154,6 @@ meow@^6.0.0: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -15484,434 +11172,13 @@ merkletreejs@^0.3.11: bignumber.js "^9.0.1" buffer-reverse "^1.0.1" crypto-js "^4.2.0" - treeify "^1.1.0" - web3-utils "^1.3.4" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== - -micromark-core-commonmark@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3" - integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz#527869de497a6de9024138479091bc885dae076b" - integrity sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - parse-entities "^4.0.0" - -micromark-extension-frontmatter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz#651c52ffa5d7a8eeed687c513cd869885882d67a" - integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg== - dependencies: - fault "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz#f1e50b42e67d441528f39a67133eddde2bbabfd9" - integrity sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz#91afad310065a94b636ab1e9dab2c60d1aab953c" - integrity sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg== - dependencies: - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz#6917db8e320da70e39ffbf97abdbff83e6783e61" - integrity sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz#2cf3fe352d9e089b7ef5fff003bdfe0da29649b7" - integrity sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-tagfilter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" - integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-gfm-task-list-item@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz#ee8b208f1ced1eb9fb11c19a23666e59d86d4838" - integrity sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" - integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== - dependencies: - micromark-extension-gfm-autolink-literal "^2.0.0" - micromark-extension-gfm-footnote "^2.0.0" - micromark-extension-gfm-strikethrough "^2.0.0" - micromark-extension-gfm-table "^2.0.0" - micromark-extension-gfm-tagfilter "^2.0.0" - micromark-extension-gfm-task-list-item "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-mdx-expression@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz#1407b9ce69916cf5e03a196ad9586889df25302a" - integrity sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-factory-mdx-expression "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-mdx-jsx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz#4aba0797c25efb2366a3fd2d367c6b1c1159f4f5" - integrity sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w== - dependencies: - "@types/acorn" "^4.0.0" - "@types/estree" "^1.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - micromark-factory-mdx-expression "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - vfile-message "^4.0.0" - -micromark-extension-mdx-md@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d" - integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-mdxjs-esm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a" - integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-position-from-estree "^2.0.0" - vfile-message "^4.0.0" - -micromark-extension-mdxjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18" - integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== - dependencies: - acorn "^8.0.0" - acorn-jsx "^5.0.0" - micromark-extension-mdx-expression "^3.0.0" - micromark-extension-mdx-jsx "^3.0.0" - micromark-extension-mdx-md "^2.0.0" - micromark-extension-mdxjs-esm "^3.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-destination@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07" - integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-label@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a" - integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== - dependencies: - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-mdx-expression@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz#f2a9724ce174f1751173beb2c1f88062d3373b1b" - integrity sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg== - dependencies: - "@types/estree" "^1.0.0" - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-events-to-acorn "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-position-from-estree "^2.0.0" - vfile-message "^4.0.0" - -micromark-factory-space@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" - integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-space@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030" - integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-title@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95" - integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-whitespace@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763" - integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-character@^1.0.0, micromark-util-character@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" - integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-character@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.1.0.tgz#31320ace16b4644316f6bf057531689c71e2aee1" - integrity sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-chunked@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89" - integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-classify-character@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34" - integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-combine-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5" - integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== - dependencies: - micromark-util-chunked "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5" - integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-decode-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a" - integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" - integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== - -micromark-util-events-to-acorn@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz#4275834f5453c088bd29cd72dfbf80e3327cec07" - integrity sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== - dependencies: - "@types/acorn" "^4.0.0" - "@types/estree" "^1.0.0" - "@types/unist" "^3.0.0" - devlop "^1.0.0" - estree-util-visit "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - vfile-message "^4.0.0" - -micromark-util-html-tag-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4" - integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== - -micromark-util-normalize-identifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b" - integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-resolve-all@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364" - integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== - dependencies: - micromark-util-types "^2.0.0" - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" - integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-subtokenize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581" - integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-symbol@^1.0.0, micromark-util-symbol@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" - integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== - -micromark-util-symbol@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" - integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== - -micromark-util-types@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" - integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== - -micromark-util-types@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" - integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== + treeify "^1.1.0" + web3-utils "^1.3.4" -micromark@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249" - integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" @@ -15948,35 +11215,18 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" - -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.35: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - mime@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" @@ -16002,16 +11252,6 @@ mimic-response@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -mimic-response@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" - integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== - min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -16024,14 +11264,6 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@^2.7.6: - version "2.8.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7" - integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA== - dependencies: - schema-utils "^4.0.0" - tapable "^2.2.1" - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -16042,14 +11274,14 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@2 || 3", minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +"minimatch@2 || 3", minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@9.0.3, minimatch@^9.0.1, minimatch@^9.0.3: +minimatch@9.0.3, minimatch@^9.0.1: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -16072,7 +11304,7 @@ minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -16157,28 +11389,11 @@ moment@^2.19.3, moment@^2.30.1: resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== -motion@10.16.2: - version "10.16.2" - resolved "https://registry.yarnpkg.com/motion/-/motion-10.16.2.tgz#7dc173c6ad62210a7e9916caeeaf22c51e598d21" - integrity sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ== - dependencies: - "@motionone/animation" "^10.15.1" - "@motionone/dom" "^10.16.2" - "@motionone/svelte" "^10.16.2" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" - "@motionone/vue" "^10.16.2" - mri@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== -mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -16189,19 +11404,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - multiformats@^9.4.2: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" @@ -16281,16 +11488,6 @@ ncp@~2.0.0: resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - nise@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/nise/-/nise-6.0.0.tgz#ae56fccb5d912037363c3b3f29ebbfa28bde8b48" @@ -16302,14 +11499,6 @@ nise@^6.0.0: just-extend "^6.2.0" path-to-regexp "^6.2.1" -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - node-addon-api@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" @@ -16327,16 +11516,6 @@ node-cache@^5.1.2: dependencies: clone "2.x" -node-emoji@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" - integrity sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA== - dependencies: - "@sindresorhus/is" "^4.6.0" - char-regex "^1.0.2" - emojilib "^2.4.0" - skin-tone "^2.0.0" - node-fetch-native@^1.6.1, node-fetch-native@^1.6.2, node-fetch-native@^1.6.3: version "1.6.4" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" @@ -16349,7 +11528,7 @@ node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9, nod dependencies: whatwg-url "^5.0.0" -node-forge@1.3.1, node-forge@^1, node-forge@^1.3.1: +node-forge@1.3.1, node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== @@ -16422,16 +11601,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -normalize-url@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" - integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -16446,18 +11615,6 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" @@ -16519,7 +11676,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.5: +object.assign@^4.1.4, object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -16587,7 +11744,7 @@ obliterator@^2.0.0: resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.5.tgz#031e0145354b0c18840336ae51d41e7d6d2c76aa" integrity sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw== -obuf@^1.0.0, obuf@^1.1.2, obuf@~1.1.2: +obuf@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== @@ -16616,18 +11773,6 @@ on-exit-leak-free@^2.1.0: resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -16662,25 +11807,11 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -open@^8.0.9, open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - openapi-types@^12.1.3: version "12.1.3" resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== -opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -16708,10 +11839,46 @@ outdent@^0.5.0: resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== +ox@0.6.9: + version "0.6.9" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.6.9.tgz#da1ee04fa10de30c8d04c15bfb80fe58b1f554bd" + integrity sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug== + dependencies: + "@adraffy/ens-normalize" "^1.10.1" + "@noble/curves" "^1.6.0" + "@noble/hashes" "^1.5.0" + "@scure/bip32" "^1.5.0" + "@scure/bip39" "^1.4.0" + abitype "^1.0.6" + eventemitter3 "5.0.1" + +ox@0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.3.tgz#92cc1008dcd913e919364fd4175c860b3eeb18db" + integrity sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.0.9" + eventemitter3 "5.0.1" + +ox@^0.8.6: + version "0.8.9" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.8.9.tgz#a161de1ac83af0eef0192c79a920bda3125616ca" + integrity sha512-8pDZzrfZ3EE/ubomc57Nf+ZEQzvtdDjJaW8/ygI8O026V8oVWV4+WwBRCaSP0IYc3Pi0fQCgpg9WDQjl9qN3yQ== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "^1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.0.8" + eventemitter3 "5.0.1" p-filter@^2.1.0: version "2.1.0" @@ -16720,7 +11887,7 @@ p-filter@^2.1.0: dependencies: p-map "^2.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -16734,20 +11901,6 @@ p-limit@^3.0.1, p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -16762,33 +11915,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== - dependencies: - "@types/retry" "0.12.0" - retry "^0.13.1" - p-retry@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" @@ -16808,29 +11939,11 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -package-json@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" - integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== - dependencies: - got "^12.1.0" - registry-auth-token "^5.0.1" - registry-url "^6.0.0" - semver "^7.3.7" - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -16850,26 +11963,12 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.7: pbkdf2 "^3.1.2" safe-buffer "^5.2.1" -parse-entities@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e" - integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== - dependencies: - "@types/unist" "^2.0.0" - character-entities "^2.0.0" - character-entities-legacy "^3.0.0" - character-reference-invalid "^2.0.0" - decode-named-character-reference "^1.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - parse-headers@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -16879,39 +11978,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-numeric-range@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" - integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -16927,31 +11993,16 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-is-inside@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -16983,23 +12034,6 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-to-regexp@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -17043,15 +12077,6 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.1.2: safe-buffer "^5.0.1" sha.js "^2.4.8" -periscopic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" - integrity sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^3.0.0" - is-reference "^3.0.0" - pg-int8@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" @@ -17106,7 +12131,7 @@ picocolors@^1.1.0, picocolors@^1.1.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -17238,13 +12263,6 @@ pkg-dir@^5.0.0: dependencies: find-up "^5.0.0" -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - pkg-types@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" @@ -17254,318 +12272,70 @@ pkg-types@^1.0.3: mlly "^1.2.0" pathe "^1.1.0" -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - -pony-cause@^2.1.10: - version "2.1.10" - resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.10.tgz#828457ad6f13be401a075dbf14107a9057945174" - integrity sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-discard-unused@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" - integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4, postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== - dependencies: - lilconfig "^3.0.0" - yaml "^2.3.4" - -postcss-load-config@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-6.0.1.tgz#6fd7dcd8ae89badcf1b2d644489cbabf83aa8096" - integrity sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g== - dependencies: - lilconfig "^3.1.1" - -postcss-loader@^7.3.3: - version "7.3.4" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" - integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== - dependencies: - cosmiconfig "^8.3.5" - jiti "^1.20.0" - semver "^7.5.4" - -postcss-merge-idents@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" - integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" - integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" - integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" +pony-cause@^2.1.10: + version "2.1.10" + resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.10.tgz#828457ad6f13be401a075dbf14107a9057945174" + integrity sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw== -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== +postcss-js@^4, postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" + camelcase-css "^2.0.1" -postcss-reduce-idents@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" - integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - postcss-value-parser "^4.2.0" + lilconfig "^3.0.0" + yaml "^2.3.4" -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== +postcss-load-config@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-6.0.1.tgz#6fd7dcd8ae89badcf1b2d644489cbabf83aa8096" + integrity sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g== dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" + lilconfig "^3.1.1" -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - postcss-value-parser "^4.2.0" + postcss-selector-parser "^6.0.11" -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.11: version "6.0.16" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== @@ -17573,38 +12343,11 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selecto cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-sort-media-queries@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128" - integrity sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw== - dependencies: - sort-css-media-queries "2.1.0" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss-zindex@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" - integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== - postcss@8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" @@ -17614,7 +12357,7 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.4: +postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -17681,16 +12424,16 @@ postgres-range@^1.1.1: resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== +preact@10.24.2: + version "10.24.2" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.2.tgz#42179771d3b06e7adb884e3f8127ddd3d99b78f6" + integrity sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q== + preact@^10.16.0: version "10.20.1" resolved "https://registry.yarnpkg.com/preact/-/preact-10.20.1.tgz#1bc598ab630d8612978f7533da45809a8298542b" integrity sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw== -preact@^10.24.2: - version "10.25.4" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.25.4.tgz#c1d00bee9d7b9dcd06a2311d9951973b506ae8ac" - integrity sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA== - preferred-pm@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.1.3.tgz#4125ea5154603136c3b6444e5f5c94ecf90e4916" @@ -17741,32 +12484,6 @@ prettier@^3.4.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" - integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== - -prism-react-renderer@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-2.3.1.tgz#e59e5450052ede17488f6bc85de1553f584ff8d5" - integrity sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw== - dependencies: - "@types/prismjs" "^1.26.0" - clsx "^2.0.0" - -prismjs@^1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -17795,7 +12512,7 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -17813,16 +12530,6 @@ proper-lockfile@^4.1.2: retry "^0.12.0" signal-exit "^3.0.2" -property-information@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" - integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - protobufjs@^7.2.5, protobufjs@^7.3.0: version "7.4.0" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" @@ -17841,18 +12548,10 @@ protobufjs@^7.2.5, protobufjs@^7.3.0: "@types/node" ">=13.7.0" long "^5.0.0" -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-compare@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600" - integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA== +proxy-compare@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.6.0.tgz#5e8c8b5c3af7e7f17e839bf6cf1435bcc4d315b0" + integrity sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw== proxy-from-env@^1.1.0: version "1.1.0" @@ -17884,7 +12583,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^1.3.2, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -17894,13 +12593,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -pupa@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" - integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== - dependencies: - escape-goat "^4.0.0" - qr-code-styling@^1.6.0-rc.1: version "1.6.0-rc.1" resolved "https://registry.yarnpkg.com/qr-code-styling/-/qr-code-styling-1.6.0-rc.1.tgz#6c89e185fa50cc9135101085c12ae95b06f1b290" @@ -17932,13 +12624,6 @@ qrcode@1.5.4: pngjs "^5.0.0" yargs "^15.3.1" -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - qs@^6.11.2, qs@^6.12.0: version "6.12.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.0.tgz#edd40c3b823995946a8a0b1f208669c7a200db77" @@ -17985,13 +12670,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - quick-format-unescaped@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" @@ -18002,11 +12680,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - radix3@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" @@ -18027,36 +12700,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-awesome-reveal@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/react-awesome-reveal/-/react-awesome-reveal-4.3.1.tgz#ffbd474b346e9581657ab335f74f995d251361a0" @@ -18065,44 +12708,6 @@ react-awesome-reveal@^4.3.1: react-intersection-observer "^9.13.0" react-is "^18.3.1" -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -react-dom@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - react-dom@^18.3.1: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" @@ -18111,36 +12716,11 @@ react-dom@^18.3.1: loose-envify "^1.1.0" scheduler "^0.23.2" -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-fast-compare@^3.1.1, react-fast-compare@^3.2.0, react-fast-compare@^3.2.2: +react-fast-compare@^3.1.1: version "3.2.2" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-helmet-async@*: - version "2.0.4" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-2.0.4.tgz#50a4377778f380ed1d0136303916b38eff1bf153" - integrity sha512-yxjQMWposw+akRfvpl5+8xejl4JtUlHnEBcji6u8/e6oc7ozT+P9PNTWMhCbz2y9tc5zPegw2BvKjQA+NwdEjQ== - dependencies: - invariant "^2.2.4" - react-fast-compare "^3.2.2" - shallowequal "^1.1.0" - -react-helmet-async@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" - integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== - dependencies: - "@babel/runtime" "^7.12.5" - invariant "^2.2.4" - prop-types "^15.7.2" - react-fast-compare "^3.2.0" - shallowequal "^1.1.0" - react-helmet@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" @@ -18163,7 +12743,7 @@ react-intersection-observer@^9.13.0: resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.14.1.tgz#c9d42576d64dfde18336acdcdf097761fb79ad19" integrity sha512-k1xIUn3sCQi3ugNeF64FJb3zwve5mcetvAUR9JazXeOmtap4IP2evN8rs+yf6SQ7F1QydsOGiqTmt+lySKZ9uA== -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -18173,18 +12753,6 @@ react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-json-view-lite@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.3.0.tgz#1f1feee6f1b1d75cc498cd57812f441b88b51e21" - integrity sha512-aN1biKC5v4DQkmQBlZjuMFR09MKZGMPtIg+cut8zEeg2HXd6gl2gRy0n4HMacHf0dznQgo0SVXN7eT8zV3hEuQ== - -react-loadable-ssr-addon-v5-slorber@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" - integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A== - dependencies: - "@babel/runtime" "^7.10.3" - react-loading-skeleton@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz#c71a3a17259d08e4064974aa0b07f150a09dfd57" @@ -18214,41 +12782,6 @@ react-remove-scroll@2.6.2: use-callback-ref "^1.3.3" use-sidecar "^1.1.2" -react-router-config@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" - integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg== - dependencies: - "@babel/runtime" "^7.1.2" - -react-router-dom@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" - integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.3.4" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.3.4, react-router@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" - integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - react-side-effect@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.2.tgz#dc6345b9e8f9906dc2eeb68700b615e0b4fe752a" @@ -18296,7 +12829,7 @@ react-use@^17.4.2: ts-easing "^0.2.0" tslib "^2.1.0" -react@>=16, react@^18.0.0: +react@>=16: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -18346,7 +12879,7 @@ read-yaml-file@^1.1.0: pify "^4.0.1" strip-bom "^3.0.0" -readable-stream@^2.0.1, readable-stream@^2.3.3, readable-stream@^2.3.8: +readable-stream@^2.3.3, readable-stream@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -18359,7 +12892,7 @@ readable-stream@^2.0.1, readable-stream@^2.3.3, readable-stream@^2.3.8: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: +readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -18386,11 +12919,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -reading-time@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" - integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== - readline-sync@^1.4.10: version "1.4.10" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" @@ -18406,13 +12934,6 @@ real-require@^0.2.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - rechoir@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" @@ -18420,13 +12941,6 @@ rechoir@^0.8.0: dependencies: resolve "^1.20.0" -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== - dependencies: - minimatch "^3.0.5" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -18460,30 +12974,11 @@ reflect.getprototypeof@^1.0.4: globalthis "^1.0.3" which-builtin-type "^1.1.3" -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -18507,32 +13002,6 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -registry-auth-token@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" - integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== - dependencies: - "@pnpm/npm-conf" "^2.1.0" - -registry-url@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" - integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== - dependencies: - rc "1.2.8" - regjsparser@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" @@ -18540,124 +13009,11 @@ regjsparser@^0.10.0: dependencies: jsesc "~0.5.0" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -rehype-raw@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-7.0.0.tgz#59d7348fd5dbef3807bbaa1d443efd2dd85ecee4" - integrity sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww== - dependencies: - "@types/hast" "^3.0.0" - hast-util-raw "^9.0.0" - vfile "^6.0.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remark-directive@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.0.tgz#34452d951b37e6207d2e2a4f830dc33442923268" - integrity sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-directive "^3.0.0" - micromark-extension-directive "^3.0.0" - unified "^11.0.0" - -remark-emoji@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-4.0.1.tgz#671bfda668047689e26b2078c7356540da299f04" - integrity sha512-fHdvsTR1dHkWKev9eNyhTo4EFwbUvJ8ka9SgeWkMPYFX4WoI7ViVBms3PjlQYgw5TLvNQso3GUB/b/8t3yo+dg== - dependencies: - "@types/mdast" "^4.0.2" - emoticon "^4.0.1" - mdast-util-find-and-replace "^3.0.1" - node-emoji "^2.1.0" - unified "^11.0.4" - -remark-frontmatter@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz#b68d61552a421ec412c76f4f66c344627dc187a2" - integrity sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-frontmatter "^2.0.0" - micromark-extension-frontmatter "^2.0.0" - unified "^11.0.0" - -remark-gfm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" - integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-gfm "^3.0.0" - micromark-extension-gfm "^3.0.0" - remark-parse "^11.0.0" - remark-stringify "^11.0.0" - unified "^11.0.0" - -remark-mdx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.0.1.tgz#8f73dd635c1874e44426e243f72c0977cf60e212" - integrity sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA== - dependencies: - mdast-util-mdx "^3.0.0" - micromark-extension-mdxjs "^3.0.0" - -remark-parse@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" - integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - micromark-util-types "^2.0.0" - unified "^11.0.0" - -remark-rehype@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.0.tgz#d5f264f42bcbd4d300f030975609d01a1697ccdc" - integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - mdast-util-to-hast "^13.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -remark-stringify@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" - integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-to-markdown "^2.0.0" - unified "^11.0.0" - remeda@^1.0.0: version "1.61.0" resolved "https://registry.yarnpkg.com/remeda/-/remeda-1.61.0.tgz#dccd31ab75d0f02865f3ef89e4f0ce0076096464" integrity sha512-caKfSz9rDeSKBQQnlJnVW3mbVdFgxgGWQKq1XlFokqjf+hQD5gxutLGTTY2A/x24UxVyJe9gH5fAkFI63ULw4A== -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^6.0.1" - repeat-element@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" @@ -18692,31 +13048,16 @@ require-in-the-middle@^7.1.1: module-details-from-path "^1.0.3" resolve "^1.22.8" -"require-like@>= 0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa" - integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A== - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== -resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -18727,11 +13068,6 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - resolve-pkg-maps@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" @@ -18742,7 +13078,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -18769,13 +13105,6 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -responselike@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" - integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== - dependencies: - lowercase-keys "^3.0.0" - restore-cursor@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" @@ -18948,21 +13277,6 @@ rtl-css-js@^1.16.1: dependencies: "@babel/runtime" "^7.1.2" -rtl-detect@^1.0.4: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.1.2.tgz#ca7f0330af5c6bb626c15675c642ba85ad6273c6" - integrity sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ== - -rtlcss@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/rtlcss/-/rtlcss-4.1.1.tgz#f20409fcc197e47d1925996372be196fee900c0c" - integrity sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - postcss "^8.4.21" - strip-json-comments "^3.1.1" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -18980,16 +13294,16 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-json-stringify@~1: version "1.2.0" resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" @@ -19026,44 +13340,12 @@ safe-stable-stringify@^2.1.0: safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-loader@^10.1.1: - version "10.5.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.5.2.tgz#1ca30534fff296417b853c7597ca3b0bbe8c37d0" - integrity sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ== - dependencies: - klona "^2.0.4" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" - -sass@^1.72.0: - version "1.72.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c" - integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== scheduler@^0.23.2: version "0.23.2" @@ -19072,34 +13354,6 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - screenfull@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" @@ -19119,39 +13373,11 @@ secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -section-matter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" - integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== - dependencies: - extend-shallow "^2.0.1" - kind-of "^6.0.0" - secure-json-parse@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== - dependencies: - "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" - integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== - dependencies: - semver "^7.3.5" - "semver@2 || 3 || 4 || 5": version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -19162,7 +13388,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -19179,69 +13405,6 @@ semver@^7.6.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-handler@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" - integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.1.2" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -19289,16 +13452,6 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -19307,14 +13460,7 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@1.1.0, shallowequal@^1.1.0: +shallowequal@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== @@ -19343,30 +13489,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3, shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shiki@^0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.7.tgz#c3c9e1853e9737845f1d2ef81b31bcfb07056d4e" - integrity sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg== - dependencies: - ansi-sequence-parser "^1.1.0" - jsonc-parser "^3.2.0" - vscode-oniguruma "^1.7.0" - vscode-textmate "^8.0.0" - shimmer@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" @@ -19423,37 +13545,11 @@ sinon@^18.0.0: nise "^6.0.0" supports-color "^7" -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== - dependencies: - "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -sitemap@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" - integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== - dependencies: - "@types/node" "^17.0.5" - "@types/sax" "^1.2.1" - arg "^5.0.0" - sax "^1.2.4" - -skin-tone@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/skin-tone/-/skin-tone-2.0.0.tgz#4e3933ab45c0d4f4f781745d64b9f4c208e41237" - integrity sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA== - dependencies: - unicode-emoji-modifier-base "^1.0.0" - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -19464,11 +13560,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - slice-ansi@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" @@ -19542,15 +13633,6 @@ socket.io-parser@~4.2.4: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - sonic-boom@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" @@ -19565,12 +13647,7 @@ sonic-boom@^4.0.1: dependencies: atomic-sleep "^1.0.0" -sort-css-media-queries@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce" - integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: +source-map-js@^1.0.2, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -19586,14 +13663,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" @@ -19616,21 +13685,11 @@ source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.0: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - spawndamnit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" @@ -19665,29 +13724,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - split-on-first@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" @@ -19710,16 +13746,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -srcset@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" - integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - stack-generator@^2.0.5: version "2.0.10" resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" @@ -19769,17 +13795,7 @@ stats-lite@^2.2.0: dependencies: isnumber "~1.0.0" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -std-env@^3.0.1, std-env@^3.7.0: +std-env@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== @@ -19926,23 +13942,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" - integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -19957,11 +13956,6 @@ strip-ansi@^7.0.1, strip-ansi@^7.1.0: dependencies: ansi-regex "^6.0.1" -strip-bom-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -19996,11 +13990,6 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - strnum@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" @@ -20011,20 +14000,6 @@ stubs@^3.0.0: resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== -style-to-object@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec" - integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== - dependencies: - inline-style-parser "0.1.1" - -style-to-object@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.5.tgz#5e918349bc3a39eee3a804497d97fcbbf2f0d7c0" - integrity sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ== - dependencies: - inline-style-parser "0.2.2" - styled-components@^6.1.8: version "6.1.8" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.8.tgz#c109d36aeea52d8f049e12de2f3be39a6fc86201" @@ -20040,14 +14015,6 @@ styled-components@^6.1.8: stylis "4.3.1" tslib "2.5.0" -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - stylis@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" @@ -20090,36 +14057,11 @@ supports-color@^7, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^2.7.0, svgo@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - system-architecture@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" @@ -20163,12 +14105,7 @@ tailwindcss@^3.4.7: resolve "^1.22.2" sucrase "^3.32.0" -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: +tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -20206,27 +14143,6 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@^5.10.0, terser@^5.15.1, terser@^5.26.0: - version "5.29.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.29.2.tgz#c17d573ce1da1b30f21a877bffd5655dd86fdb35" - integrity sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -20265,11 +14181,6 @@ throttle-debounce@^3.0.1: resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -20282,12 +14193,12 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tiny-invariant@^1.0.2, tiny-invariant@^1.1.0, tiny-invariant@^1.3.3: +tiny-invariant@^1.1.0, tiny-invariant@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== -tiny-warning@^1.0.0, tiny-warning@^1.0.3: +tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== @@ -20366,21 +14277,11 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - toml@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -20408,21 +14309,11 @@ treeify@^1.1.0: resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trough@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" - integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== - ts-api-utils@^1.0.1: version "1.3.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" @@ -20495,7 +14386,7 @@ tscpaths@^0.0.9: commander "^2.20.0" globby "^9.2.0" -tslib@1.14.1, tslib@^1.8.1: +tslib@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -20505,7 +14396,7 @@ tslib@2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.6.0: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -20562,13 +14453,6 @@ tsup@^8.2.3: sucrase "^3.35.0" tree-kill "^1.2.2" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tsx@^4.19.2: version "4.19.2" resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c" @@ -20696,29 +14580,16 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^1.0.1, type-fest@^1.0.2: +type-fest@^1.0.2: version "1.4.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== -type-fest@^2.13.0, type-fest@^2.5.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - type-fest@^4.3.1: version "4.26.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - typed-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" @@ -20763,34 +14634,10 @@ typed-array-length@^1.0.5: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedoc-plugin-markdown@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.17.1.tgz#c33f42363c185adf842f4699166015f7fe0ed02b" - integrity sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw== - dependencies: - handlebars "^4.7.7" - -typedoc@^0.25.7: - version "0.25.12" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.12.tgz#f73f0a8d3731d418cc604d4230f95a857799e27a" - integrity sha512-F+qhkK2VoTweDXd1c42GS/By2DvI2uDF4/EpG424dTexSHdtCH52C6IcAvMA6jR3DzAWZjHpUOW+E02kyPNUNw== - dependencies: - lunr "^2.3.9" - marked "^4.3.0" - minimatch "^9.0.3" - shiki "^0.14.7" - -typescript@^5.0.2, typescript@^5.3.3, typescript@^5.4.4, typescript@^5.4.5, typescript@^5.5.4, typescript@^5.8.2, typescript@~5.2.2: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== +typescript@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== ua-parser-js@^1.0.37: version "1.0.37" @@ -20802,11 +14649,6 @@ ufo@^1.3.2, ufo@^1.4.0, ufo@^1.5.3: resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== -uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - uint8arrays@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" @@ -20867,47 +14709,6 @@ unenv@^1.9.0: node-fetch-native "^1.6.1" pathe "^1.1.1" -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-emoji-modifier-base@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" - integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -unified@^11.0.0, unified@^11.0.3, unified@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015" - integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ== - dependencies: - "@types/unist" "^3.0.0" - bail "^2.0.0" - devlop "^1.0.0" - extend "^3.0.0" - is-plain-obj "^4.0.0" - trough "^2.0.0" - vfile "^6.0.0" - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -20918,81 +14719,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-string@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" - integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== - dependencies: - crypto-random-string "^4.0.0" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position-from-estree@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200" - integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-remove-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz#fea68a25658409c9460408bc6b4991b965b52163" - integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== - dependencies: - "@types/unist" "^3.0.0" - unist-util-visit "^5.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - unplugin@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.16.0.tgz#ca0f248bf8798cd752dd02e5b381223b737cef72" @@ -21050,26 +14781,6 @@ update-browserslist-db@^1.1.1: escalade "^3.2.0" picocolors "^1.1.0" -update-notifier@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" - integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== - dependencies: - boxen "^7.0.0" - chalk "^5.0.1" - configstore "^6.0.0" - has-yarn "^3.0.0" - import-lazy "^4.0.0" - is-ci "^3.0.1" - is-installed-globally "^0.4.0" - is-npm "^6.0.0" - is-yarn-global "^0.4.0" - latest-version "^7.0.0" - pupa "^3.1.0" - semver "^7.3.7" - semver-diff "^4.0.0" - xdg-basedir "^5.1.0" - uqr@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" @@ -21087,15 +14798,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" @@ -21167,21 +14869,6 @@ util@^0.12.4, util@^0.12.5: is-typed-array "^1.1.3" which-typed-array "^1.1.2" -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utility-types@^3.10.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" - integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - uuid@^11.0.5: version "11.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" @@ -21205,62 +14892,28 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -valtio@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.11.2.tgz#b8049c02dfe65620635d23ebae9121a741bb6530" - integrity sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw== +valtio@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.13.2.tgz#e31d452d5da3550935417670aafd34d832dc7241" + integrity sha512-Qik0o+DSy741TmkqmRfjq+0xpZBXi/Y6+fXZLn0xNF1z/waFMbE3rkivv5Zcf9RrMUp6zswf2J7sbh2KBlba5A== dependencies: - proxy-compare "2.5.1" + derive-valtio "0.1.0" + proxy-compare "2.6.0" use-sync-external-store "1.2.0" -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vfile-location@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.2.tgz#220d9ca1ab6f8b2504a4db398f7ebc149f9cb464" - integrity sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== - dependencies: - "@types/unist" "^3.0.0" - vfile "^6.0.0" - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== +viem@2.23.2, viem@2.37.2, viem@>=2.29.0, viem@^2.1.1, viem@^2.22.21, viem@^2.27.2, viem@^2.31.7, viem@^2.37.2: + version "2.37.2" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.37.2.tgz#4eae5693862f8de65eff15f34faaea542b271ab8" + integrity sha512-soXSUhPEnHzXVo1sSFg2KiUUwOTCtqGNnR/NOHr+4vZcbM6sTyS62asg9EfDpaJQFNduRQituxTcflaK6OIaPA== dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^6.0.0, vfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536" - integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -viem@2.9.2, viem@^2.1.1, viem@^2.22.19, viem@^2.22.21, viem@^2.7.8: - version "2.9.2" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.9.2.tgz#29bd2425222be136bf969a90dd3a8d6032221904" - integrity sha512-GRakUTNiYE9W+vL+Be9JkQfzWnkczerHtSpEe2JR/jEGTYZAs4shrA4WLgiaVCI9JxpnduZhQfRWNvy2dlyP2g== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@scure/bip32" "1.3.2" - "@scure/bip39" "1.2.1" - abitype "1.0.0" - isows "1.0.3" - ws "8.13.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.1.0" + isows "1.0.7" + ox "0.9.3" + ws "8.18.3" vite-node@2.0.4: version "2.0.4" @@ -21331,23 +14984,13 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -vscode-oniguruma@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" - integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== - -vscode-textmate@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" - integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== - -wagmi@^2.14.9: - version "2.14.9" - resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.14.9.tgz#44c47ac6fc119e5ce40bee2c4e4dd5069a0d651a" - integrity sha512-nDJ5hwPaiVpn/8Bi82m5K4BCqDiOSnOV976p/jKXt0svQABGdAxUxej0UgDRoVlrp+NutmejN+SyQKmhV477/A== +wagmi@^2.16.9: + version "2.16.9" + resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-2.16.9.tgz#a80f316fe1e1009c65ba1e2cb5438d95e6a0abfb" + integrity sha512-5NbjvuNNhT0t0lQsDD5otQqZ5RZBM1UhInHoBq/Lpnr6xLLa8AWxYqHg5oZtGCdiUNltys11iBOS6z4mLepIqw== dependencies: - "@wagmi/connectors" "5.7.5" - "@wagmi/core" "2.16.3" + "@wagmi/connectors" "5.9.9" + "@wagmi/core" "2.20.3" use-sync-external-store "1.4.0" wasm-pkg-build@^0.5.3: @@ -21362,26 +15005,11 @@ wasm-pkg-build@^0.5.3: tar "^7.0.0" toml "^3.0.0" -watchpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - watskeburt@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/watskeburt/-/watskeburt-4.1.0.tgz#3c0227669be646a97424b631164b1afe3d4d5344" integrity sha512-KkY5H51ajqy9HYYI+u9SIURcWnqeVVhdH0I+ab6aXPGHfZYxgRCwnR6Lm3+TYB6jJVt5jFqw4GAKmwf1zHmGQw== -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -21389,11 +15017,6 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -web-namespaces@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" - integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== - web3-eth-abi@1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz#4272ca48d817aa651bbf97b269f5ff10abc2b8a9" @@ -21446,145 +15069,11 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-bundle-analyzer@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" - integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== - dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - is-plain-object "^5.0.0" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@^4.15.1: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" - -webpack-merge@^5.9.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-sources@^3.2.2, webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - webpack-virtual-modules@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== -webpack@^5.88.1: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -webpackbar@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" - integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== - dependencies: - chalk "^4.1.0" - consola "^2.15.3" - pretty-time "^1.1.0" - std-env "^3.0.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -21665,7 +15154,7 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2, gopd "^1.0.1" has-tostringtag "^1.0.2" -which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -21687,23 +15176,6 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== - dependencies: - string-width "^5.0.1" - -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -21736,36 +15208,21 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@8.18.3: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -ws@^7.3.1, ws@^7.5.1: +ws@^7.5.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@^8.13.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== - ws@^8.17.0: version "8.18.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" @@ -21776,11 +15233,6 @@ ws@~8.11.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" - integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== - xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" @@ -21811,13 +15263,6 @@ xhr@^2.0.4: parse-headers "^2.0.0" xtend "^4.0.0" -xml-js@^1.6.11: - version "1.6.11" - resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" - integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== - dependencies: - sax "^1.2.4" - xmlhttprequest-ssl@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" @@ -21863,7 +15308,7 @@ yaml@2.3.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: +yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -21921,16 +15366,16 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - zhead@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/zhead/-/zhead-2.2.4.tgz#87cd1e2c3d2f465fa9f43b8db23f9716dfe6bed7" integrity sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag== +zod@3.22.4: + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== + zod@^3.17.3, zod@^3.22.2, zod@^3.23.8: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" @@ -21941,14 +15386,14 @@ zustand@5.0.0: resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.0.tgz#71f8aaecf185592a3ba2743d7516607361899da9" integrity sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ== +zustand@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.3.tgz#b323435b73d06b2512e93c77239634374b0e407f" + integrity sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg== + zustand@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g== dependencies: use-sync-external-store "1.2.0" - -zwitch@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==