diff --git a/apps/abstraxion-dashboard/.env.example b/apps/abstraxion-dashboard/.env.example
deleted file mode 100644
index 67c4d946..00000000
--- a/apps/abstraxion-dashboard/.env.example
+++ /dev/null
@@ -1,7 +0,0 @@
-# DEFAULTS
-NEXT_PUBLIC_DEPLOYMENT_ENV="mainnet"
-NEXT_PUBLIC_DEFAULT_API_URL="https://aa.xion-testnet-1.burnt.com"
-NEXT_PUBLIC_DEFAULT_INDEXER_URL="https://api.subquery.network/sq/burnt-labs/xion-indexer"
-NEXT_PUBLIC_DEFAULT_STYTCH_PUBLIC_TOKEN="public-token-live-87901ec3-ef19-48ca-b3f4-842be750181b"
-NEXT_PUBLIC_DEFAULT_CHAIN_INFO="{"rpc":"https://testnet-rpc.xion-api.com:443","rest":"https://testnet-api.xion-api.com:443","chainId":"xion-testnet-1","chainName":"Xion Testnet","bip44":{"coinType":118},"bech32Config":{"bech32PrefixAccAddr":"xion","bech32PrefixValAddr":"xionvaloper","bech32PrefixValPub":"xionvaloperpub","bech32PrefixAccPub":"xionpub","bech32PrefixConsAddr":"xionvalcons","bech32PrefixConsPub":"xionvalconspub"},"stakeCurrency":{"coinDenom":"XION","coinMinimalDenom":"uxion","coinDecimals":6,"gasPriceStep":{"low":0.01,"average":0.025,"high":0.03}},"currencies":[{"coinDenom":"XION","coinMinimalDenom":"uxion","coinDecimals":6,"gasPriceStep":{"low":0.01,"average":0.025,"high":0.03}}],"feeCurrencies":[{"coinDenom":"XION","coinMinimalDenom":"uxion","coinDecimals":6,"gasPriceStep":{"low":0.01,"average":0.025,"high":0.03}}],"features":["cosmwasm"]}"
-NEXT_PUBLIC_OKX_FLAG="false"
\ No newline at end of file
diff --git a/apps/abstraxion-dashboard/.eslintrc.json b/apps/abstraxion-dashboard/.eslintrc.json
deleted file mode 100644
index bffb357a..00000000
--- a/apps/abstraxion-dashboard/.eslintrc.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "extends": "next/core-web-vitals"
-}
diff --git a/apps/abstraxion-dashboard/.gitignore b/apps/abstraxion-dashboard/.gitignore
deleted file mode 100644
index 2de1f470..00000000
--- a/apps/abstraxion-dashboard/.gitignore
+++ /dev/null
@@ -1,40 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# local env files
-.env
-.env*.local
-
-# vercel
-.vercel
-
-# typescript
-*.tsbuildinfo
-next-env.d.ts
-
-# Sentry Config File
-.sentryclirc
diff --git a/apps/abstraxion-dashboard/CHANGELOG.md b/apps/abstraxion-dashboard/CHANGELOG.md
deleted file mode 100644
index 4f8f5051..00000000
--- a/apps/abstraxion-dashboard/CHANGELOG.md
+++ /dev/null
@@ -1,423 +0,0 @@
-# abstraxion-dashboard
-
-## 0.2.0-alpha.28
-
-### Minor Changes
-
-- [#198](https://github.com/burnt-labs/xion.js/pull/198) [`e9dd176`](https://github.com/burnt-labs/xion.js/commit/e9dd1766dbfe4994948e028b51c07eb6dd52cced) Thanks [@BurntVal](https://github.com/BurntVal)! - Update chainInfo vars across monorepo. Please view the abstraxion package readme for more info on opting into mainnet
-
-### Patch Changes
-
-- Updated dependencies [[`e9dd176`](https://github.com/burnt-labs/xion.js/commit/e9dd1766dbfe4994948e028b51c07eb6dd52cced)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.47
- - @burnt-labs/constants@0.1.0-alpha.10
-
-## 0.2.0-alpha.27
-
-### Minor Changes
-
-- [#183](https://github.com/burnt-labs/xion.js/pull/183) [`750803b`](https://github.com/burnt-labs/xion.js/commit/750803b1a4235334322262d1e932f81d3ea13060) Thanks [@BurntVal](https://github.com/BurntVal)! - General cleanup and build optimization
-
-- [#185](https://github.com/burnt-labs/xion.js/pull/185) [`b1a90e9`](https://github.com/burnt-labs/xion.js/commit/b1a90e956180d3262c69122dacd3cdfee55d5afb) Thanks [@BurntVal](https://github.com/BurntVal)! - revert to explicit flow for creating initial meta account
-
-- [#189](https://github.com/burnt-labs/xion.js/pull/189) [`7556cda`](https://github.com/burnt-labs/xion.js/commit/7556cda956eddf2e37d154ffb10c4ec6165c79ed) Thanks [@justinbarry](https://github.com/justinbarry)! - Disable sentry replays and performance tracing for dashboard
-
-- [#181](https://github.com/burnt-labs/xion.js/pull/181) [`b618cc8`](https://github.com/burnt-labs/xion.js/commit/b618cc8edc57463925e3e8945dd2c5ee55d87879) Thanks [@BurntVal](https://github.com/BurntVal)! - usdc iteration for sending tokens
-
-- [#178](https://github.com/burnt-labs/xion.js/pull/178) [`a0b5031`](https://github.com/burnt-labs/xion.js/commit/a0b5031f8766369b00562387b692450f396a9d7f) Thanks [@BurntVal](https://github.com/BurntVal)! - Implement ability to remove authenticators
-
-### Patch Changes
-
-- Updated dependencies [[`bcc35c9`](https://github.com/burnt-labs/xion.js/commit/bcc35c9ed8faf2edb6f1e19f06e8b8ced9530067), [`750803b`](https://github.com/burnt-labs/xion.js/commit/750803b1a4235334322262d1e932f81d3ea13060), [`33493c5`](https://github.com/burnt-labs/xion.js/commit/33493c5a33224d59e517ddd84aec3e35d1f5c291), [`b618cc8`](https://github.com/burnt-labs/xion.js/commit/b618cc8edc57463925e3e8945dd2c5ee55d87879), [`a0b5031`](https://github.com/burnt-labs/xion.js/commit/a0b5031f8766369b00562387b692450f396a9d7f)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.46
- - @burnt-labs/constants@0.1.0-alpha.9
- - @burnt-labs/signers@0.1.0-alpha.11
- - @burnt-labs/ui@0.1.0-alpha.13
-
-## 0.2.0-alpha.26
-
-### Minor Changes
-
-- [#176](https://github.com/burnt-labs/xion.js/pull/176) [`a80ed9c`](https://github.com/burnt-labs/xion.js/commit/a80ed9c32f0c5c91a8ec7aacfba5bddddfc43f84) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added UI Fixes and new button style
-
-### Patch Changes
-
-- Updated dependencies [[`a80ed9c`](https://github.com/burnt-labs/xion.js/commit/a80ed9c32f0c5c91a8ec7aacfba5bddddfc43f84), [`b3ecf24`](https://github.com/burnt-labs/xion.js/commit/b3ecf24cf8c240c2b0c721ed803decca9f6a91a4)]:
- - @burnt-labs/ui@0.1.0-alpha.12
- - @burnt-labs/abstraxion@1.0.0-alpha.45
-
-## 0.2.0-alpha.25
-
-### Minor Changes
-
-- [#165](https://github.com/burnt-labs/xion.js/pull/165) [`e53a5bd`](https://github.com/burnt-labs/xion.js/commit/e53a5bd382481001f1968d3314c858de0fe2b5ea) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added prop for more direct access to input styles
-
-- [#167](https://github.com/burnt-labs/xion.js/pull/167) [`1cddf5b`](https://github.com/burnt-labs/xion.js/commit/1cddf5bd9c91393b93e177d8f625ab00d3d284c5) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added mobile UI fixes for dashboard
-
-### Patch Changes
-
-- Updated dependencies [[`2edf674`](https://github.com/burnt-labs/xion.js/commit/2edf674428695388127a24c93cd28e815db43425), [`210bac1`](https://github.com/burnt-labs/xion.js/commit/210bac17b576cba3b470084aed6b07c991a91453), [`e53a5bd`](https://github.com/burnt-labs/xion.js/commit/e53a5bd382481001f1968d3314c858de0fe2b5ea), [`1cddf5b`](https://github.com/burnt-labs/xion.js/commit/1cddf5bd9c91393b93e177d8f625ab00d3d284c5), [`f018dc1`](https://github.com/burnt-labs/xion.js/commit/f018dc124615bbf467abbea35cb656852233593d)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.44
- - @burnt-labs/ui@0.1.0-alpha.11
-
-## 0.2.0-alpha.24
-
-### Patch Changes
-
-- Updated dependencies [[`aa57bfd`](https://github.com/burnt-labs/xion.js/commit/aa57bfdd0ed1651b652b2a9a39a2eeb54ab25d11)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.43
-
-## 0.2.0-alpha.23
-
-### Minor Changes
-
-- [#147](https://github.com/burnt-labs/xion.js/pull/147) [`bed091d`](https://github.com/burnt-labs/xion.js/commit/bed091d74557457efb681734a27b46d97cdefbbe) Thanks [@BurntVal](https://github.com/BurntVal)! - Implementation of OKX wallet (cosmos provider)
-
-- [#161](https://github.com/burnt-labs/xion.js/pull/161) [`deb1a8d`](https://github.com/burnt-labs/xion.js/commit/deb1a8dae04fe878a56e9e17d090b94c56069f44) Thanks [@justinbarry](https://github.com/justinbarry)! - Update the url used to check for grants to include the granter to avoid the rest node having to do a table scan.
-
-### Patch Changes
-
-- Updated dependencies [[`bed091d`](https://github.com/burnt-labs/xion.js/commit/bed091d74557457efb681734a27b46d97cdefbbe), [`deb1a8d`](https://github.com/burnt-labs/xion.js/commit/deb1a8dae04fe878a56e9e17d090b94c56069f44)]:
- - @burnt-labs/signers@0.1.0-alpha.10
- - @burnt-labs/ui@0.1.0-alpha.10
- - @burnt-labs/abstraxion@1.0.0-alpha.42
-
-## 0.2.0-alpha.22
-
-### Minor Changes
-
-- [#151](https://github.com/burnt-labs/xion.js/pull/151) [`958f66a`](https://github.com/burnt-labs/xion.js/commit/958f66ab7b82bdbb8a591d16b2cc399859e8508b) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Broke out grant flow to unique app.
-
-- [#134](https://github.com/burnt-labs/xion.js/pull/134) [`4c230d8`](https://github.com/burnt-labs/xion.js/commit/4c230d82f20b934acd77ea102e45a29ad3e148ae) Thanks [@BurntVal](https://github.com/BurntVal)! - Add Authenticator Modal & Fresh User Dashboard Flow
-
-- [#139](https://github.com/burnt-labs/xion.js/pull/139) [`f09cc0b`](https://github.com/burnt-labs/xion.js/commit/f09cc0b7167e41673f7aeb0ce317896e2e4b5582) Thanks [@BurntVal](https://github.com/BurntVal)! - Extend abstraxion-core to allow for framework agnostic implementations
-
-- [#148](https://github.com/burnt-labs/xion.js/pull/148) [`e46656b`](https://github.com/burnt-labs/xion.js/commit/e46656ba2880e7fe80e8425f4f49047d54b665e5) Thanks [@justinbarry](https://github.com/justinbarry)! - No longer auto select first account after first login
-
-### Patch Changes
-
-- [#140](https://github.com/burnt-labs/xion.js/pull/140) [`e21e824`](https://github.com/burnt-labs/xion.js/commit/e21e8244923a764acada81197da821949aaa2ff2) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added unit test for dashboard send and receive functionality
-
-- Updated dependencies [[`958f66a`](https://github.com/burnt-labs/xion.js/commit/958f66ab7b82bdbb8a591d16b2cc399859e8508b), [`c1ed608`](https://github.com/burnt-labs/xion.js/commit/c1ed60803731b13b831169ed675049e7a257aeeb), [`4c230d8`](https://github.com/burnt-labs/xion.js/commit/4c230d82f20b934acd77ea102e45a29ad3e148ae), [`f09cc0b`](https://github.com/burnt-labs/xion.js/commit/f09cc0b7167e41673f7aeb0ce317896e2e4b5582), [`8ec1c5b`](https://github.com/burnt-labs/xion.js/commit/8ec1c5b752f8136c9e6ba7fcfec16e85542d7c21)]:
- - @burnt-labs/constants@0.1.0-alpha.8
- - @burnt-labs/ui@0.1.0-alpha.9
- - @burnt-labs/abstraxion@1.0.0-alpha.41
-
-## 0.2.0-alpha.21
-
-### Minor Changes
-
-- [#131](https://github.com/burnt-labs/xion.js/pull/131) [`d6673bf`](https://github.com/burnt-labs/xion.js/commit/d6673bfa9d9a72472f4336758976aa3dd3a78785) Thanks [@BurntVal](https://github.com/BurntVal)! - Implement wallet send functionality
-
-- [#127](https://github.com/burnt-labs/xion.js/pull/127) [`00167f0`](https://github.com/burnt-labs/xion.js/commit/00167f0304a065d1d244c73b5ba02edc88f85460) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Updated UI for mainnet release
-
-- [#138](https://github.com/burnt-labs/xion.js/pull/138) [`1f006dd`](https://github.com/burnt-labs/xion.js/commit/1f006dd5ea7bfa67eb46d01057838b0d5287d466) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Adapted dashboard for better mobile UI
-
-- [#135](https://github.com/burnt-labs/xion.js/pull/135) [`6ea54fc`](https://github.com/burnt-labs/xion.js/commit/6ea54fc6fbca0de8434e09cb43b563e26643d7fc) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added receive functionality to dashboard
-
-### Patch Changes
-
-- [#137](https://github.com/burnt-labs/xion.js/pull/137) [`8de24aa`](https://github.com/burnt-labs/xion.js/commit/8de24aa187e9316c9cf9a1f431f08e4ae629842e) Thanks [@justinbarry](https://github.com/justinbarry)! - Update casing of "XION" from across multiple components
-
-- Updated dependencies [[`d6673bf`](https://github.com/burnt-labs/xion.js/commit/d6673bfa9d9a72472f4336758976aa3dd3a78785), [`1f006dd`](https://github.com/burnt-labs/xion.js/commit/1f006dd5ea7bfa67eb46d01057838b0d5287d466), [`8de24aa`](https://github.com/burnt-labs/xion.js/commit/8de24aa187e9316c9cf9a1f431f08e4ae629842e), [`12b995f`](https://github.com/burnt-labs/xion.js/commit/12b995f5c3216bad7537d4232ea2bbd2340ced32)]:
- - @burnt-labs/ui@0.1.0-alpha.8
- - @burnt-labs/constants@0.1.0-alpha.7
- - @burnt-labs/abstraxion@1.0.0-alpha.40
-
-## 0.2.0-alpha.20
-
-### Minor Changes
-
-- [#122](https://github.com/burnt-labs/xion.js/pull/122) [`f15f5a8`](https://github.com/burnt-labs/xion.js/commit/f15f5a837511d03dae21f16c5a229ddb17f0e565) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added visual differences for net type to sign in modal
-
-- [#120](https://github.com/burnt-labs/xion.js/pull/120) [`0831c9a`](https://github.com/burnt-labs/xion.js/commit/0831c9a9a5685c1b591f96a46a98371711a00e3d) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added visual elements to dashboard to distinguish between net type.
-
-### Patch Changes
-
-- [#123](https://github.com/burnt-labs/xion.js/pull/123) [`e4aa3f0`](https://github.com/burnt-labs/xion.js/commit/e4aa3f096cff27e6672393300532622040b0f781) Thanks [@icfor](https://github.com/icfor)! - Add staking grant for cancelling unbondings (MsgCancelUnbondingDelegation)
-
-- [#117](https://github.com/burnt-labs/xion.js/pull/117) [`6978612`](https://github.com/burnt-labs/xion.js/commit/697861259eff1199d143f79c7d8c0666eec4760b) Thanks [@BurntVal](https://github.com/BurntVal)! - Add configurability to allow for mainnet/testnet deployments
-
- For devs utilizing the `buildAddJWTAuthenticatorMsg` found in the @burnt-labs/signers package, please note that you will now need to pass in an aud string. Contact the team for details.
-
-- [#69](https://github.com/burnt-labs/xion.js/pull/69) [`989dab6`](https://github.com/burnt-labs/xion.js/commit/989dab66608481b47a745cb2a84d80903b5c93ec) Thanks [@lastly001](https://github.com/lastly001)! - chore: remove unused line
-
-- Updated dependencies [[`6978612`](https://github.com/burnt-labs/xion.js/commit/697861259eff1199d143f79c7d8c0666eec4760b)]:
- - @burnt-labs/signers@0.1.0-alpha.9
- - @burnt-labs/abstraxion@1.0.0-alpha.39
-
-## 0.2.0-alpha.19
-
-### Patch Changes
-
-- Updated dependencies []:
- - @burnt-labs/abstraxion@1.0.0-alpha.38
-
-## 0.2.0-alpha.18
-
-### Minor Changes
-
-- [#116](https://github.com/burnt-labs/xion.js/pull/116) [`774562b`](https://github.com/burnt-labs/xion.js/commit/774562b9b02fe82ab98d694d6a3b10c30f89c33e) Thanks [@justinbarry](https://github.com/justinbarry)! - Disable "Allow and Continue" on grant screen until the client is ready
-
-### Patch Changes
-
-- Updated dependencies [[`d7abb7a`](https://github.com/burnt-labs/xion.js/commit/d7abb7ab9f8f09dca90496f5cf42e97d6635304c)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.37
-
-## 0.2.0-alpha.17
-
-### Minor Changes
-
-- [#112](https://github.com/burnt-labs/xion.js/pull/112) [`04f02b1`](https://github.com/burnt-labs/xion.js/commit/04f02b1dc2f689b318c642628f32bb22f536ec4e) Thanks [@justinbarry](https://github.com/justinbarry)! - Fix window.keplr error on startup when keplr is not installed
-
-- [#111](https://github.com/burnt-labs/xion.js/pull/111) [`97685ba`](https://github.com/burnt-labs/xion.js/commit/97685bab1c531937a817c53bc314b079fe60cde8) Thanks [@icfor](https://github.com/icfor)! - Allow extra messages in the fee grant
-
-- [#109](https://github.com/burnt-labs/xion.js/pull/109) [`4594b46`](https://github.com/burnt-labs/xion.js/commit/4594b46fa3c668e02c5ccade8d3b7aae2e7c0d77) Thanks [@BurntVal](https://github.com/BurntVal)! - Impl Ethereum authenticator and signer
-
-### Patch Changes
-
-- [#109](https://github.com/burnt-labs/xion.js/pull/109) [`4594b46`](https://github.com/burnt-labs/xion.js/commit/4594b46fa3c668e02c5ccade8d3b7aae2e7c0d77) Thanks [@BurntVal](https://github.com/BurntVal)! - Move Keplr/Metamask signin buttons into an "advanced" dropdown panel.
-
-- Updated dependencies [[`4594b46`](https://github.com/burnt-labs/xion.js/commit/4594b46fa3c668e02c5ccade8d3b7aae2e7c0d77), [`6ea5c28`](https://github.com/burnt-labs/xion.js/commit/6ea5c282a9cd4ca15068052a4b615cd902f6113d)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.36
- - @burnt-labs/signers@0.1.0-alpha.8
- - @burnt-labs/ui@0.1.0-alpha.7
-
-## 0.2.0-alpha.16
-
-### Minor Changes
-
-- [#78](https://github.com/burnt-labs/xion.js/pull/78) [`6de3996`](https://github.com/burnt-labs/xion.js/commit/6de39966e4a308c740ab8e66eb00a4c1f2d479b4) Thanks [@BurntVal](https://github.com/BurntVal)! - introduce the ability to add a secp256k1 authenticator (via Keplr) and use it as a signer for transactions
-
-- # [#107](https://github.com/burnt-labs/xion.js/pull/107) [`2c33c31`](https://github.com/burnt-labs/xion.js/commit/2c33c3136280558ec505b401911244310432ebd3) Thanks [@justinbarry](https://github.com/justinbarry)! -
-
-# Staking Grants
-
-Add the ability for dapps to request staking grants be give via the dashboard. To request a grant, the dapp will need to set the `stake` prop to `true` in the config of the `abstraxion` provider.
-
-```jsx
-
- {children}
-
-```
-
-This will grant `StakeAuthorization` to delegate, undelegate, redelegate and a GenericAuthorization to exec a MsgWithdrawDelegatorReward msg along with a feegrant for these message to cover the fees.
-
-# Bank Send Grants
-
-Add the ability for dapps to request bank send grants be give via the dashboard. To request a grant, the dapp will need to set pass the requested `denom` and `amount` to the config of the `abstraxion` provider.
-
-```jsx
-
- {children}
-
-```
-
-### Patch Changes
-
-- Updated dependencies [[`6de3996`](https://github.com/burnt-labs/xion.js/commit/6de39966e4a308c740ab8e66eb00a4c1f2d479b4), [`2c33c31`](https://github.com/burnt-labs/xion.js/commit/2c33c3136280558ec505b401911244310432ebd3)]:
- - @burnt-labs/signers@0.1.0-alpha.7
- - @burnt-labs/ui@0.1.0-alpha.6
- - @burnt-labs/abstraxion@1.0.0-alpha.35
-
-## 0.2.0-alpha.15
-
-### Patch Changes
-
-- Updated dependencies [[`0236eea`](https://github.com/burnt-labs/xion.js/commit/0236eea22a4c5a9b0b9b413cac4a8b62038a4456)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.34
-
-## 0.2.0-alpha.14
-
-### Minor Changes
-
-- [#94](https://github.com/burnt-labs/xion.js/pull/94) [`c695fbf`](https://github.com/burnt-labs/xion.js/commit/c695fbfa636dd149a2f7305cd87298c6cc84d67e) Thanks [@justinbarry](https://github.com/justinbarry)! - Update the following packages to the latest version:
-
- | Package | Version |
- | ------------------------- | ------- |
- | @cosmjs/cosmwasm-stargate | ^0.32.2 |
- | @cosmjs/proto-signing | ^0.32.2 |
- | @cosmjs/stargate | ^0.32.2 |
- | @cosmjs/tendermint-rpc | ^0.32.2 |
- | cosmjs-types | ^0.9.0 |
-
-### Patch Changes
-
-- Updated dependencies [[`c695fbf`](https://github.com/burnt-labs/xion.js/commit/c695fbfa636dd149a2f7305cd87298c6cc84d67e)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.33
- - @burnt-labs/signers@0.1.0-alpha.6
-
-## 0.2.0-alpha.13
-
-### Minor Changes
-
-- [#97](https://github.com/burnt-labs/xion.js/pull/97) [`9ff23cb`](https://github.com/burnt-labs/xion.js/commit/9ff23cb244c271fb7438f2caef2b18ce4fa0afb8) Thanks [@justinbarry](https://github.com/justinbarry)! - Update default RPC/Rest Urls and allow for dapps to pass in rest url via the AbstraxionProvider.
-
- ```typescript
-
- {children}
-
-
- ```
-
-### Patch Changes
-
-- Updated dependencies [[`9ff23cb`](https://github.com/burnt-labs/xion.js/commit/9ff23cb244c271fb7438f2caef2b18ce4fa0afb8)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.32
- - @burnt-labs/constants@0.1.0-alpha.6
-
-## 0.2.0-alpha.12
-
-### Minor Changes
-
-- [#95](https://github.com/burnt-labs/xion.js/pull/95) [`e6f0696`](https://github.com/burnt-labs/xion.js/commit/e6f06961f7368447a18fbd76bf3500cab8a686a2) Thanks [@justinbarry](https://github.com/justinbarry)! - Allow setting of the dashboard RPC via NEXT_PUBLIC_RPC_URL env var
-
-### Patch Changes
-
-- Updated dependencies [[`415f15a`](https://github.com/burnt-labs/xion.js/commit/415f15a50a85b55271e8ecf220801f67c4b3f7d1)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.31
-
-## 0.2.0-alpha.11
-
-### Patch Changes
-
-- Updated dependencies [[`a9a882a`](https://github.com/burnt-labs/xion.js/commit/a9a882a23ff3227591287e7dc28438f7644a7bfa)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.30
-
-## 0.2.0-alpha.10
-
-### Patch Changes
-
-- Updated dependencies [[`874ef2b`](https://github.com/burnt-labs/xion.js/commit/874ef2b6e0096285beff6752c7e2dc1e1c276ba4)]:
- - @burnt-labs/constants@0.1.0-alpha.5
- - @burnt-labs/abstraxion@1.0.0-alpha.29
-
-## 0.2.0-alpha.9
-
-### Patch Changes
-
-- Updated dependencies [[`e60fb47`](https://github.com/burnt-labs/xion.js/commit/e60fb4714b8cdf90ad2cfbba5c77b8b78a11542b), [`f46fa86`](https://github.com/burnt-labs/xion.js/commit/f46fa8672ccf38d66b9bde244eecef573ee86ded)]:
- - @burnt-labs/constants@0.1.0-alpha.4
- - @burnt-labs/abstraxion@1.0.0-alpha.28
-
-## 0.2.0-alpha.8
-
-### Minor Changes
-
-- [#80](https://github.com/burnt-labs/xion.js/pull/80) [`00dbb89`](https://github.com/burnt-labs/xion.js/commit/00dbb89f13028ec5251c744b1130e82b86afb8d6) Thanks [@justinbarry](https://github.com/justinbarry)! - Add sentry.io error tracking
-
-- [#83](https://github.com/burnt-labs/xion.js/pull/83) [`7dd82fe`](https://github.com/burnt-labs/xion.js/commit/7dd82fe902ca1d0f64f91a1dd185be965beb6331) Thanks [@justinbarry](https://github.com/justinbarry)! - Add ability for a DAPP to request a token budget alongside contract exec privileges
-
-### Patch Changes
-
-- [#77](https://github.com/burnt-labs/xion.js/pull/77) [`cc24142`](https://github.com/burnt-labs/xion.js/commit/cc24142ce8ea3f62c83f35b528c5739427208d25) Thanks [@justinbarry](https://github.com/justinbarry)! - Enable vercel analytics on dashboard
-
-- [#81](https://github.com/burnt-labs/xion.js/pull/81) [`6afb4dd`](https://github.com/burnt-labs/xion.js/commit/6afb4dd96af14bae2bd0a06632b37613e69faafb) Thanks [@justinbarry](https://github.com/justinbarry)! - Add error tracking for chain errors
-
-- [#75](https://github.com/burnt-labs/xion.js/pull/75) [`2da222b`](https://github.com/burnt-labs/xion.js/commit/2da222bd97540a0eb5aefb3efd2c93e1fafe3ce7) Thanks [@justinbarry](https://github.com/justinbarry)! - Remove passkey biometrics button, remove white avatar and update copy
-
-- Updated dependencies [[`7dd82fe`](https://github.com/burnt-labs/xion.js/commit/7dd82fe902ca1d0f64f91a1dd185be965beb6331)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.27
-
-## 0.2.0-alpha.7
-
-### Patch Changes
-
-- Updated dependencies [[`4a281fc`](https://github.com/burnt-labs/xion.js/commit/4a281fcfa7ead6cb91f935e853b0a1bf7b98dcc9)]:
- - @burnt-labs/constants@0.0.1-alpha.3
- - @burnt-labs/signers@0.1.0-alpha.5
- - @burnt-labs/abstraxion@1.0.0-alpha.26
-
-## 0.2.0-alpha.6
-
-### Minor Changes
-
-- [#57](https://github.com/burnt-labs/xion.js/pull/57) [`5e0d06f`](https://github.com/burnt-labs/xion.js/commit/5e0d06fd329422c7e0c7bcf63cc5929a8617502c) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Moved display logic to internal "useModal" hook. Consumers will need to change their strategy from a custom piece of state within their app to utilizing this new hook. The login flow will now be a single tab experience.
-
-- [#57](https://github.com/burnt-labs/xion.js/pull/57) [`5e0d06f`](https://github.com/burnt-labs/xion.js/commit/5e0d06fd329422c7e0c7bcf63cc5929a8617502c) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added font files and small ui tweaks
-
-### Patch Changes
-
-- Updated dependencies [[`5e0d06f`](https://github.com/burnt-labs/xion.js/commit/5e0d06fd329422c7e0c7bcf63cc5929a8617502c), [`5e0d06f`](https://github.com/burnt-labs/xion.js/commit/5e0d06fd329422c7e0c7bcf63cc5929a8617502c), [`39fabfe`](https://github.com/burnt-labs/xion.js/commit/39fabfe78b029e55aa417ec9751696d861a905b0)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.25
- - @burnt-labs/ui@0.1.0-alpha.5
-
-## 0.2.0-alpha.5
-
-### Minor Changes
-
-- [#61](https://github.com/burnt-labs/xion.js/pull/61) [`105279a`](https://github.com/burnt-labs/xion.js/commit/105279afb824940e744a4366be25b83fb8fb74e0) Thanks [@justinbarry](https://github.com/justinbarry)! - Fix vite issue with graz package deep imports
-
-### Patch Changes
-
-- Updated dependencies [[`105279a`](https://github.com/burnt-labs/xion.js/commit/105279afb824940e744a4366be25b83fb8fb74e0)]:
- - @burnt-labs/abstraxion@0.1.0-alpha.24
-
-## 0.2.0-alpha.4
-
-### Patch Changes
-
-- Updated dependencies [[`2257a1f`](https://github.com/burnt-labs/xion.js/commit/2257a1f5249a1efaa6f7d15522ee330981ae8952)]:
- - @burnt-labs/abstraxion@0.1.0-alpha.23
- - @burnt-labs/signers@0.1.0-alpha.4
-
-## 0.2.0-alpha.3
-
-### Patch Changes
-
-- Updated dependencies [[`6a6fdd2`](https://github.com/burnt-labs/xion.js/commit/6a6fdd253a1dc81873d271d2ac5e87100ef18ff1), [`dd8680f`](https://github.com/burnt-labs/xion.js/commit/dd8680f6bc18e15a531993be048e9db83d79b488)]:
- - @burnt-labs/abstraxion@0.1.0-alpha.22
- - @burnt-labs/ui@0.1.0-alpha.4
-
-## 0.2.0-alpha.2
-
-### Minor Changes
-
-- [#41](https://github.com/burnt-labs/xion.js/pull/41) [`a269cdf`](https://github.com/burnt-labs/xion.js/commit/a269cdf88722408e91b643d12ce4181ce26296f3) Thanks [@BurntVal](https://github.com/BurntVal)! - abstraxion dynamic url for grant creation on dashboard
-
-- [#33](https://github.com/burnt-labs/xion.js/pull/33) [`e7e582b`](https://github.com/burnt-labs/xion.js/commit/e7e582be198bca6b3bd0cf42ad68d8f7428132cb) Thanks [@BurntVal](https://github.com/BurntVal)! - Wrap contract grant message inside a `ContractExecutionAuthorization` message
-
-### Patch Changes
-
-- Updated dependencies [[`a269cdf`](https://github.com/burnt-labs/xion.js/commit/a269cdf88722408e91b643d12ce4181ce26296f3), [`e7e582b`](https://github.com/burnt-labs/xion.js/commit/e7e582be198bca6b3bd0cf42ad68d8f7428132cb), [`56b9f87`](https://github.com/burnt-labs/xion.js/commit/56b9f87482a7210072eaa279960d1ff01ad5b4e0)]:
- - @burnt-labs/abstraxion@0.1.0-alpha.21
- - @burnt-labs/tailwind-config@0.0.1-alpha.2
- - @burnt-labs/ui@0.0.1-alpha.3
-
-## 0.2.0-alpha.1
-
-### Minor Changes
-
-- [#37](https://github.com/burnt-labs/xion.js/pull/37) [`30b8913`](https://github.com/burnt-labs/xion.js/commit/30b891389890bb85486d2e5d1d49ca2c9a16f8b8) Thanks [@justinbarry](https://github.com/justinbarry)! - Change API endpoints to the 'live' infrastructure and the live stytch project id
-
-### Patch Changes
-
-- Updated dependencies [[`30b8913`](https://github.com/burnt-labs/xion.js/commit/30b891389890bb85486d2e5d1d49ca2c9a16f8b8)]:
- - @burnt-labs/abstraxion@0.1.0-alpha.20
- - @burnt-labs/signers@0.1.0-alpha.3
-
-## 0.1.1-alpha.0
-
-### Patch Changes
-
-- [#32](https://github.com/burnt-labs/xion.js/pull/32) [`f6e5618`](https://github.com/burnt-labs/xion.js/commit/f6e5618f36ff15e6f642efad209f88151b395b7a) Thanks [@justinbarry](https://github.com/justinbarry)! - Initial commit of dashbaord
-
-- Updated dependencies [[`7f498ee`](https://github.com/burnt-labs/xion.js/commit/7f498ee6c58a897f0a6cda76ecb60b52dd495846), [`5a17b99`](https://github.com/burnt-labs/xion.js/commit/5a17b99b56e62535297bd2b5a1086df68ee82ee1)]:
- - @burnt-labs/abstraxion@0.1.0-alpha.19
diff --git a/apps/abstraxion-dashboard/README.md b/apps/abstraxion-dashboard/README.md
deleted file mode 100644
index c4033664..00000000
--- a/apps/abstraxion-dashboard/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
-
-## Getting Started
-
-First, run the development server:
-
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
-
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/apps/abstraxion-dashboard/abstraxion-types.d.ts b/apps/abstraxion-dashboard/abstraxion-types.d.ts
deleted file mode 100644
index b3804b70..00000000
--- a/apps/abstraxion-dashboard/abstraxion-types.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-interface Window {
- ethereum: any;
- keplr: any;
-}
diff --git a/apps/abstraxion-dashboard/app/globals.css b/apps/abstraxion-dashboard/app/globals.css
deleted file mode 100644
index ba086186..00000000
--- a/apps/abstraxion-dashboard/app/globals.css
+++ /dev/null
@@ -1,8 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-@layer utilities {
- .flex-2 {
- flex: 2;
- }
-}
diff --git a/apps/abstraxion-dashboard/app/icon.svg b/apps/abstraxion-dashboard/app/icon.svg
deleted file mode 100644
index d96f9957..00000000
--- a/apps/abstraxion-dashboard/app/icon.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/apps/abstraxion-dashboard/app/layout.tsx b/apps/abstraxion-dashboard/app/layout.tsx
deleted file mode 100644
index 0dc78d2d..00000000
--- a/apps/abstraxion-dashboard/app/layout.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import type { Metadata } from "next";
-import localFont from "next/font/local";
-import { Providers } from "./providers";
-import "./globals.css";
-import "@burnt-labs/ui/dist/index.css";
-import { Analytics } from "@vercel/analytics/react";
-
-const akkuratLL = localFont({
- src: [
- {
- path: "../public/fonts/AkkuratLLWeb-Thin.woff2",
- weight: "100",
- },
- {
- path: "../public/fonts/AkkuratLLWeb-Light.woff2",
- weight: "200 300",
- },
- {
- path: "../public/fonts/AkkuratLLWeb-Regular.woff2",
- weight: "400",
- },
- {
- path: "../public/fonts/AkkuratLLWeb-Bold.woff2",
- weight: "500 700",
- },
- {
- path: "../public/fonts/AkkuratLLWeb-Black.woff2",
- weight: "800 900",
- },
- ],
- variable: "--font-akkuratLL",
-});
-
-export const metadata: Metadata = {
- title: "XION Account Dashboard",
- description: "A dashboard for managing XION accounts.",
-};
-
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode;
-}) {
- return (
-
-
- {children}
-
-
-
- );
-}
diff --git a/apps/abstraxion-dashboard/app/page.tsx b/apps/abstraxion-dashboard/app/page.tsx
deleted file mode 100644
index 53adba9f..00000000
--- a/apps/abstraxion-dashboard/app/page.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-"use client";
-import { useContext, useState } from "react";
-import { useSearchParams } from "next/navigation";
-import { AccountInfo } from "@/components/AccountInfo";
-import { AbstraxionContext } from "@/components/AbstraxionContext";
-import { Overview } from "@/components/Overview";
-import { Sidebar } from "@/components/Sidebar";
-import { Abstraxion } from "@/components/Abstraxion";
-import { useAbstraxionAccount } from "../hooks";
-import Image from "next/image";
-import type { AbstraxionAccount } from "@/types";
-
-export default function Home() {
- const searchParams = useSearchParams();
- const { data: account } = useAbstraxionAccount();
-
- const contracts = searchParams.get("contracts");
- const stake = Boolean(searchParams.get("stake"));
- const bank = searchParams.get("bank");
- const grantee = searchParams.get("grantee");
- const { isOpen, setIsOpen, isMainnet } = useContext(AbstraxionContext);
-
- const [showMobileSiderbar, setShowMobileSiderbar] = useState(false);
-
- return (
- <>
- {!account?.id || (grantee && (contracts || stake || bank)) ? (
-
-
null} isOpen={true} />
-
- ) : (
-
- {showMobileSiderbar ? (
-
- setShowMobileSiderbar(false)} />
-
- ) : null}
-
-
-
-
-
-
-
-
-
- {isMainnet ? "MAINNET" : "TESTNET"}
-
-
-
setShowMobileSiderbar(true)}>
-
-
-
-
-
-
-
setIsOpen(false)} isOpen={isOpen} />
- {/* Tiles */}
-
- {/* Left Tiles */}
-
-
- Overview
-
-
-
- Account Info
-
-
-
- {/* Right Tiles */}
-
-
-
-
-
-
- )}
- >
- );
-}
diff --git a/apps/abstraxion-dashboard/app/providers.tsx b/apps/abstraxion-dashboard/app/providers.tsx
deleted file mode 100644
index 66ca654f..00000000
--- a/apps/abstraxion-dashboard/app/providers.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-"use client";
-
-import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
-import { AbstraxionProvider } from "../components/Abstraxion";
-
-const queryClient = new QueryClient();
-
-export function Providers({ children }: { children: React.ReactNode }) {
- return (
-
- {children}
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/Abstraxion/index.tsx b/apps/abstraxion-dashboard/components/Abstraxion/index.tsx
deleted file mode 100644
index 3fe4a26d..00000000
--- a/apps/abstraxion-dashboard/components/Abstraxion/index.tsx
+++ /dev/null
@@ -1,145 +0,0 @@
-import { useContext, useEffect } from "react";
-import { GrazProvider } from "graz";
-import { StytchProvider } from "@stytch/nextjs";
-import { ApolloProvider } from "@apollo/client";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
- AbstraxionContextProvider,
-} from "@/components/AbstraxionContext";
-import { apolloClient, stytchClient } from "@/lib";
-import { Dialog, DialogContent } from "@burnt-labs/ui";
-import { AbstraxionSignin } from "@/components/AbstraxionSignin";
-import { useAbstraxionAccount } from "@/hooks";
-import { AbstraxionWallets } from "@/components/AbstraxionWallets";
-import { ErrorDisplay } from "@/components/ErrorDisplay";
-import { useSearchParams } from "next/navigation";
-import { AbstraxionGrant } from "../AbstraxionGrant";
-import Image from "next/image";
-
-export interface ModalProps {
- onClose: VoidFunction;
- isOpen: boolean;
-}
-
-export const Abstraxion = ({ isOpen, onClose }: ModalProps) => {
- const searchParams = useSearchParams();
-
- const { abstraxionError, isMainnet } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const { isConnected, data: account } = useAbstraxionAccount();
-
- const contracts = searchParams.get("contracts");
- const stake = Boolean(searchParams.get("stake"));
- const bank = searchParams.get("bank");
-
- let bankArray;
- try {
- bankArray = JSON.parse(bank || "");
- } catch (e) {
- // If the bank is not a valid JSON, we split it by comma. Dapp using old version of the library.
- bankArray = [];
- }
-
- let contractsArray;
- try {
- contractsArray = JSON.parse(contracts || "");
- } catch (e) {
- // If the contracts are not a valid JSON, we split them by comma. Dapp using old version of the library.
- contractsArray = contracts?.split(",") || [];
- }
-
- const grantee = searchParams.get("grantee");
- useEffect(() => {
- const closeOnEscKey = (e: any) => (e.key === "Escape" ? onClose() : null);
- document.addEventListener("keydown", closeOnEscKey);
- return () => {
- document.removeEventListener("keydown", closeOnEscKey);
- };
- }, [onClose]);
-
- if (!isOpen) return null;
-
- return (
- <>
-
- {/* TOS Footer */}
- {!isConnected && (
-
-
-
- By continuing, you agree to and acknowledge that you have read and
- understand the
-
-
- Disclaimer
-
-
.
-
-
-
- Powered by
-
-
-
- {isMainnet ? "MAINNET" : "TESTNET"}
-
-
-
-
-
-
-
- )}
- >
- );
-};
-
-export const AbstraxionProvider = ({
- children,
-}: {
- children: React.ReactNode;
-}) => {
- return (
-
-
-
- {children}
-
-
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionContext/index.tsx b/apps/abstraxion-dashboard/components/AbstraxionContext/index.tsx
deleted file mode 100644
index 65ae5fa9..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionContext/index.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { ReactNode, createContext, useState } from "react";
-import { getEnvStringOrThrow } from "@/utils";
-import { ChainInfo } from "@burnt-labs/constants";
-
-type ConnectionType = "stytch" | "graz" | "metamask" | "okx" | "none";
-
-export interface AbstraxionContextProps {
- connectionType: ConnectionType;
- setConnectionType: React.Dispatch>;
- abstractAccount: any; // TODO: Properly define interface here
- setAbstractAccount: React.Dispatch;
- abstraxionError: string;
- setAbstraxionError: React.Dispatch>;
- apiUrl: string;
- chainInfo: ChainInfo;
- isMainnet: boolean;
- isOpen: boolean;
- setIsOpen: React.Dispatch>;
-}
-
-export const AbstraxionContext = createContext(
- {} as AbstraxionContextProps,
-);
-
-export const AbstraxionContextProvider = ({
- children,
-}: {
- children: ReactNode;
-}) => {
- const [connectionType, setConnectionType] = useState("none");
- const [abstractAccount, setAbstractAccount] = useState(
- undefined,
- );
- const [abstraxionError, setAbstraxionError] = useState("");
- const [isOpen, setIsOpen] = useState(false);
-
- const serializedChainInfo = getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_CHAIN_INFO",
- process.env.NEXT_PUBLIC_DEFAULT_CHAIN_INFO,
- );
- const chainInfo = JSON.parse(serializedChainInfo);
- const apiUrl = getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_API_URL",
- process.env.NEXT_PUBLIC_DEFAULT_API_URL,
- );
- const isMainnet =
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEPLOYMENT_ENV",
- process.env.NEXT_PUBLIC_DEPLOYMENT_ENV,
- ) === "mainnet"
- ? true
- : false;
-
- return (
-
- {children}
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionGrant/generateBankGrant.tsx b/apps/abstraxion-dashboard/components/AbstraxionGrant/generateBankGrant.tsx
deleted file mode 100644
index 566547b0..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionGrant/generateBankGrant.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx";
-import { SendAuthorization } from "cosmjs-types/cosmos/bank/v1beta1/authz";
-
-export const generateBankGrant = (
- expiration: bigint,
- grantee: string,
- granter: string,
- bank: { denom: string; amount: string }[],
-) => {
- return {
- typeUrl: MsgGrant.typeUrl,
- value: MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: SendAuthorization.typeUrl,
- value: SendAuthorization.encode(
- SendAuthorization.fromPartial({
- spendLimit: bank,
- }),
- ).finish(),
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- }),
- };
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionGrant/generateContractGrant.tsx b/apps/abstraxion-dashboard/components/AbstraxionGrant/generateContractGrant.tsx
deleted file mode 100644
index 85d97bc7..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionGrant/generateContractGrant.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import type { ContractGrantDescription } from "@burnt-labs/abstraxion";
-import {
- AllowAllMessagesFilter,
- CombinedLimit,
- ContractExecutionAuthorization,
- MaxCallsLimit,
-} from "cosmjs-types/cosmwasm/wasm/v1/authz";
-import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx";
-
-export const generateContractGrant = (
- expiration: bigint,
- grantee: string,
- granter: string,
- contracts: ContractGrantDescription[],
-) => {
- const contractExecutionAuthorizationValue =
- ContractExecutionAuthorization.encode(
- ContractExecutionAuthorization.fromPartial({
- grants: contracts.map((contractGrantDescription) => {
- if (typeof contractGrantDescription === "string") {
- const contract = contractGrantDescription;
- return {
- contract,
- limit: {
- typeUrl: MaxCallsLimit.typeUrl,
- value: MaxCallsLimit.encode(
- MaxCallsLimit.fromPartial({
- remaining: BigInt("255"),
- }),
- ).finish(),
- },
- filter: {
- typeUrl: AllowAllMessagesFilter.typeUrl,
- },
- };
- }
-
- const { address, amounts } = contractGrantDescription;
- return {
- contract: address,
- limit: {
- typeUrl: "/cosmwasm.wasm.v1.CombinedLimit",
- value: CombinedLimit.encode(
- CombinedLimit.fromPartial({
- callsRemaining: BigInt("255"),
- amounts,
- }),
- ).finish(),
- },
- filter: {
- typeUrl: AllowAllMessagesFilter.typeUrl,
- },
- };
- }),
- }),
- ).finish();
- const grantValue = MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: ContractExecutionAuthorization.typeUrl,
- value: contractExecutionAuthorizationValue,
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- });
-
- return {
- typeUrl: MsgGrant.typeUrl,
- value: grantValue,
- };
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionGrant/generateStakeGrant.tsx b/apps/abstraxion-dashboard/components/AbstraxionGrant/generateStakeGrant.tsx
deleted file mode 100644
index 13cc9c7d..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionGrant/generateStakeGrant.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import { MsgGrant, MsgExec } from "cosmjs-types/cosmos/authz/v1beta1/tx";
-import { GenericAuthorization } from "cosmjs-types/cosmos/authz/v1beta1/authz";
-import { MsgWithdrawDelegatorReward } from "cosmjs-types/cosmos/distribution/v1beta1/tx";
-import {
- AuthorizationType,
- StakeAuthorization,
-} from "cosmjs-types/cosmos/staking/v1beta1/authz";
-import {
- MsgCancelUnbondingDelegation,
- MsgDelegate,
- MsgUndelegate,
-} from "cosmjs-types/cosmos/staking/v1beta1/tx";
-import {
- AllowedMsgAllowance,
- BasicAllowance,
-} from "cosmjs-types/cosmos/feegrant/v1beta1/feegrant";
-import { MsgGrantAllowance } from "cosmjs-types/cosmos/feegrant/v1beta1/tx";
-
-export const generateStakeGrant = (
- expiration: bigint,
- grantee: string,
- granter: string,
-): Array<{
- typeUrl: string;
- value: MsgGrant | MsgGrantAllowance;
-}> => {
- const feeGrant = {
- typeUrl: MsgGrantAllowance.typeUrl,
- value: MsgGrantAllowance.fromPartial({
- allowance: {
- typeUrl: AllowedMsgAllowance.typeUrl,
- value: AllowedMsgAllowance.encode(
- AllowedMsgAllowance.fromPartial({
- allowance: {
- typeUrl: BasicAllowance.typeUrl,
- value: BasicAllowance.encode(
- BasicAllowance.fromPartial({
- spendLimit: [],
- expiration: {
- seconds: expiration,
- },
- }),
- ).finish(),
- },
- allowedMessages: [
- MsgWithdrawDelegatorReward.typeUrl,
- MsgDelegate.typeUrl,
- MsgUndelegate.typeUrl,
- MsgExec.typeUrl,
- MsgCancelUnbondingDelegation.typeUrl,
- ],
- }),
- ).finish(),
- },
- grantee,
- granter,
- }),
- };
-
- // Need to grant MsgWithdrawDelegatorReward and MsgCancelUnbondingDelegation
- const genericMsgGrants = [
- MsgWithdrawDelegatorReward.typeUrl,
- MsgCancelUnbondingDelegation.typeUrl,
- ].map((msg) => ({
- typeUrl: MsgGrant.typeUrl,
- value: MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: GenericAuthorization.typeUrl,
- value: GenericAuthorization.encode(
- GenericAuthorization.fromPartial({
- msg,
- }),
- ).finish(),
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- }),
- }));
-
- const grants = [
- AuthorizationType.AUTHORIZATION_TYPE_DELEGATE,
- AuthorizationType.AUTHORIZATION_TYPE_UNDELEGATE,
- AuthorizationType.AUTHORIZATION_TYPE_REDELEGATE,
- ].map((authorizationType) => ({
- typeUrl: MsgGrant.typeUrl,
- value: MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: StakeAuthorization.typeUrl,
- value: StakeAuthorization.encode(
- StakeAuthorization.fromPartial({
- authorizationType,
- }),
- ).finish(),
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- }),
- }));
-
- return [...grants, ...genericMsgGrants, feeGrant];
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionGrant/index.tsx b/apps/abstraxion-dashboard/components/AbstraxionGrant/index.tsx
deleted file mode 100644
index fc04ce27..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionGrant/index.tsx
+++ /dev/null
@@ -1,189 +0,0 @@
-"use client";
-import { useEffect, useState } from "react";
-import Image from "next/image";
-import { Button, Spinner } from "@burnt-labs/ui";
-import { useAbstraxionAccount, useAbstraxionSigningClient } from "@/hooks";
-import burntAvatar from "@/public/burntAvatarCircle.png";
-import { CheckIcon } from "../Icons";
-import { EncodeObject } from "@cosmjs/proto-signing";
-import { useSearchParams } from "next/navigation";
-import * as Sentry from "@sentry/nextjs";
-import type { ContractGrantDescription } from "@burnt-labs/abstraxion";
-import { assertIsDeliverTxSuccess } from "@cosmjs/stargate/build/stargateclient";
-import { generateBankGrant } from "@/components/AbstraxionGrant/generateBankGrant.tsx";
-import { generateContractGrant } from "@/components/AbstraxionGrant/generateContractGrant.tsx";
-import { generateStakeGrant } from "@/components/AbstraxionGrant/generateStakeGrant.tsx";
-
-interface AbstraxionGrantProps {
- contracts: ContractGrantDescription[];
- grantee: string;
- stake: boolean;
- bank: { denom: string; amount: string }[];
-}
-
-export const AbstraxionGrant = ({
- contracts,
- grantee,
- stake,
- bank,
-}: AbstraxionGrantProps) => {
- const { client } = useAbstraxionSigningClient();
- const { data: account } = useAbstraxionAccount();
- const searchParams = useSearchParams();
-
- const [inProgress, setInProgress] = useState(false);
- const [showSuccess, setShowSuccess] = useState(false);
-
- useEffect(function redirectToDapp() {
- if (showSuccess && searchParams.get("redirect_uri")) {
- let redirectUri = new URLSearchParams(window.location.search).get(
- "redirect_uri",
- );
- let url: URL | null = null;
- if (redirectUri) {
- url = new URL(redirectUri);
- let params = new URLSearchParams(url.search);
- params.append("granted", "true");
- params.append("granter", account.id);
- url.search = params.toString();
- redirectUri = url.toString();
- window.location.href = redirectUri;
- }
- }
- });
-
- const grant = async () => {
- setInProgress(true);
- if (!client) {
- throw new Error("no client");
- }
-
- if (!account) {
- throw new Error("no account");
- }
-
- const granter = account.id;
- const timestampThreeMonthsFromNow = BigInt(
- Math.floor(
- new Date(new Date().setMonth(new Date().getMonth() + 3)).getTime() /
- 1000,
- ),
- );
-
- const msgs: EncodeObject[] = [];
-
- if (contracts.length > 0) {
- msgs.push(
- generateContractGrant(
- timestampThreeMonthsFromNow,
- grantee,
- granter,
- contracts,
- ),
- );
- }
-
- if (stake) {
- msgs.push(
- ...generateStakeGrant(timestampThreeMonthsFromNow, grantee, granter),
- );
- }
-
- if (bank.length > 0) {
- msgs.push(
- generateBankGrant(timestampThreeMonthsFromNow, grantee, granter, bank),
- );
- }
-
- try {
- if (msgs.length === 0) {
- throw new Error("No grants to send");
- }
-
- const deliverTxResponse = await client?.signAndBroadcast(
- account.id,
- msgs,
- {
- amount: [{ amount: "0", denom: "uxion" }],
- gas: "500000",
- },
- );
-
- assertIsDeliverTxSuccess({
- ...deliverTxResponse,
- gasUsed: BigInt(deliverTxResponse.gasUsed),
- gasWanted: BigInt(deliverTxResponse.gasWanted),
- });
-
- setShowSuccess(true);
- setInProgress(false);
- } catch (error) {
- setInProgress(false);
- console.log("something went wrong: ", error);
- Sentry.captureException(error);
- }
- };
-
- if (inProgress) {
- return (
-
-
-
- );
- }
-
- return (
-
- {showSuccess ? (
- <>
-
- Your sign-in
- was Successful!
-
-
- Please switch back to the previous window to continue your
- experience.
-
- >
- ) : (
- <>
-
-
-
-
-
- A 3rd party would like to:
-
-
-
- -
-
-
-
- Have access to your account
-
- -
-
-
-
- Log you in to their app
-
-
-
-
-
-
-
-
- >
- )}
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionSignin/index.tsx b/apps/abstraxion-dashboard/components/AbstraxionSignin/index.tsx
deleted file mode 100644
index 8e12a567..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionSignin/index.tsx
+++ /dev/null
@@ -1,231 +0,0 @@
-"use client";
-import { useContext, useEffect, useState } from "react";
-import Image from "next/image";
-import { useStytch } from "@stytch/nextjs";
-import { Button, Input, ModalSection } from "@burnt-labs/ui";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { getHumanReadablePubkey } from "@/utils";
-
-const okxFlag = process.env.NEXT_PUBLIC_OKX_FLAG === "true";
-const deploymentEnv = process.env.NEXT_PUBLIC_DEPLOYMENT_ENV;
-
-// Variable to be true if deploymentEnv is "testnet", otherwise check okxFlag for "mainnet"
-const shouldEnableFeature =
- deploymentEnv === "testnet" || (deploymentEnv === "mainnet" && okxFlag);
-
-export const AbstraxionSignin = () => {
- const stytchClient = useStytch();
-
- const [email, setEmail] = useState("");
- const [methodId, setMethodId] = useState("");
- const [emailError, setEmailError] = useState("");
- const [isOnOtpStep, setIsOnOtpStep] = useState(false);
- const [otp, setOtp] = useState("");
- const [otpError, setOtpError] = useState("");
- const [timeLeft, setTimeLeft] = useState(null);
- const [showAdvanced, setShowAdvanced] = useState(false);
-
- const { setConnectionType, setAbstraxionError, chainInfo } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const handleEmailChange = (e: React.ChangeEvent) => {
- setEmailError("");
- setEmail(e.target.value.toLowerCase());
- };
-
- const handleOtpChange = (e: React.ChangeEvent) => {
- setOtpError("");
- setOtp(e.target.value);
- };
-
- const EMAIL_REGEX = /\S+@\S+\.\S+/;
- const validateEmail = () => {
- if (EMAIL_REGEX.test(email) || email === "") {
- setEmailError("");
- } else {
- setEmailError("Invalid Email Format");
- }
- };
-
- const handleEmail = async (event: any) => {
- event.preventDefault();
-
- if (!email) {
- setEmailError("Please enter your email");
- return;
- }
-
- try {
- setConnectionType("stytch");
- const emailRes = await stytchClient.otps.email.loginOrCreate(email);
- setMethodId(emailRes.method_id);
- setIsOnOtpStep(true);
- setTimeLeft(60);
- } catch (error) {
- setEmailError("Error sending email");
- setConnectionType("none");
- }
- };
-
- const handleOtp = async (event: any) => {
- event.preventDefault();
-
- try {
- await stytchClient.otps.authenticate(otp, methodId, {
- session_duration_minutes: 60,
- });
- localStorage.setItem("loginType", "stytch");
- } catch (error) {
- setOtpError("Error verifying otp");
- }
- };
-
- async function handleOkx() {
- if (!window.okxwallet) {
- alert("Please install the OKX wallet extension");
- return;
- }
- try {
- await window.okxwallet.keplr.enable(chainInfo.chainId);
- const okxAccount = await window.okxwallet.keplr.getKey(chainInfo.chainId);
- const authenticator = getHumanReadablePubkey(okxAccount.pubKey);
- setConnectionType("okx");
- localStorage.setItem("loginType", "okx");
- localStorage.setItem("loginAuthenticator", authenticator);
- localStorage.setItem("okxXionAddress", okxAccount.bech32Address);
- localStorage.setItem("okxWalletName", okxAccount.name);
- } catch (error) {
- setAbstraxionError("OKX wallet connect error");
- }
- }
-
- // For the "resend otp" countdown
- useEffect(() => {
- if (timeLeft === 0) {
- setTimeLeft(null);
- }
- if (!timeLeft) return;
- const intervalId = setInterval(() => {
- setTimeLeft(timeLeft - 1);
- }, 1000);
- return () => clearInterval(intervalId);
- }, [timeLeft]);
-
- return (
-
- {isOnOtpStep ? (
- <>
-
-
- Input 6 digit code
-
-
- Please check your email for the verification code
-
-
- e.key === "Enter" && handleOtp(e)}
- />
-
-
-
- {timeLeft ? (
-
- RESEND {`IN ${timeLeft}S`}
-
- ) : (
-
- )}
-
- >
- ) : (
- <>
-
-
- Welcome
-
-
- Log in or sign up with your email
-
-
- e.key === "Enter" && handleEmail(e)}
- />
-
- {shouldEnableFeature ? (
-
-
- {showAdvanced ? (
-
-
- Log into your existing XION Meta account with a crypto
- wallet
-
-
-
- ) : null}
-
- ) : null}
- >
- )}
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/AbstraxionWallets/index.tsx b/apps/abstraxion-dashboard/components/AbstraxionWallets/index.tsx
deleted file mode 100644
index 022c1a4d..00000000
--- a/apps/abstraxion-dashboard/components/AbstraxionWallets/index.tsx
+++ /dev/null
@@ -1,222 +0,0 @@
-import { useCallback, useContext, useEffect, useState } from "react";
-import { useDisconnect } from "graz";
-import { useStytch, useStytchUser } from "@stytch/nextjs";
-import { useQuery } from "@apollo/client";
-import { Button, Spinner } from "@burnt-labs/ui";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { AllSmartWalletQuery } from "@/utils/queries";
-import { truncateAddress } from "@/utils";
-import { useAbstraxionAccount } from "@/hooks";
-import { Loading } from "../Loading";
-import { WalletIcon } from "../Icons";
-
-export const AbstraxionWallets = () => {
- const {
- connectionType,
- setConnectionType,
- abstractAccount,
- setAbstractAccount,
- setAbstraxionError,
- apiUrl,
- } = useContext(AbstraxionContext) as AbstraxionContextProps;
-
- const { user } = useStytchUser();
- const stytchClient = useStytch();
- const session_jwt = stytchClient.session.getTokens()?.session_jwt;
- const session_token = stytchClient.session.getTokens()?.session_token;
-
- const { loginAuthenticator } = useAbstraxionAccount();
-
- const { disconnect } = useDisconnect();
-
- const { loading, error, data, startPolling, stopPolling, previousData } =
- useQuery(AllSmartWalletQuery, {
- variables: {
- authenticator: loginAuthenticator,
- },
- fetchPolicy: "network-only",
- notifyOnNetworkStatusChange: true,
- });
-
- const [isGeneratingNewWallet, setIsGeneratingNewWallet] = useState(false);
- const [fetchingNewWallets, setFetchingNewWallets] = useState(false);
-
- const handleDisconnect = async () => {
- if (connectionType === "stytch") {
- await stytchClient.session.revoke();
- }
- disconnect();
- setConnectionType("none");
- setAbstractAccount(undefined);
- localStorage.removeItem("loginType");
- localStorage.removeItem("loginAuthenticator");
- localStorage.removeItem("okxXionAddress");
- localStorage.removeItem("okxWalletName");
- };
-
- const handleJwtAALoginOrCreate = useCallback(async () => {
- try {
- setIsGeneratingNewWallet(true);
- const res = await fetch(`${apiUrl}/api/v1/jwt-accounts/create`, {
- method: "POST",
- headers: {
- "content-type": "application/json",
- },
- body: JSON.stringify({
- salt: Date.now().toString(),
- session_jwt,
- session_token,
- }),
- });
- const body = await res.json();
- if (!res.ok) {
- throw new Error(body.error);
- }
- startPolling(3000);
- setFetchingNewWallets(true);
- } catch (error) {
- console.log(error);
- setAbstraxionError("Error creating abstract account.");
- } finally {
- setIsGeneratingNewWallet(false);
- }
- }, [
- apiUrl,
- session_jwt,
- session_token,
- setIsGeneratingNewWallet,
- startPolling,
- setFetchingNewWallets,
- setAbstraxionError,
- ]);
-
- useEffect(() => {
- if (previousData && data !== previousData) {
- stopPolling();
- setFetchingNewWallets(false);
- }
- }, [data, previousData, stopPolling]);
-
- useEffect(() => {
- if (abstractAccount && previousData && data !== previousData) {
- // Updating abstract account in context on poll
- const node = data?.smartAccounts?.nodes.find(
- (smartAccount) => smartAccount.id === abstractAccount.id,
- );
- setAbstractAccount({
- ...node,
- userId: user?.user_id,
- currentAuthenticatorIndex: node.authenticators.nodes.find(
- (authenticator) => authenticator.authenticator === loginAuthenticator,
- ).authenticatorIndex,
- });
- }
- }, [
- data,
- previousData,
- abstractAccount,
- loginAuthenticator,
- setAbstractAccount,
- user?.user_id,
- ]);
-
- if (error) {
- setAbstraxionError("Failed to fetch accounts");
- return null;
- }
-
- return (
- <>
- {isGeneratingNewWallet ? (
-
- ) : (
-
-
-
- Welcome
-
-
- Choose an account to continue
-
-
-
-
- Accounts
-
-
- {loading || fetchingNewWallets ? (
-
- ) : data?.smartAccounts?.nodes.length >= 1 ? (
- data?.smartAccounts?.nodes?.map((node: any, i: number) => (
-
{
- setAbstractAccount({
- ...node,
- userId: user?.user_id,
- currentAuthenticatorIndex:
- node.authenticators.nodes.find(
- (authenticator) =>
- authenticator.authenticator ===
- loginAuthenticator,
- ).authenticatorIndex,
- });
- }}
- >
-
-
-
- Personal Account {i + 1}
-
-
- {truncateAddress(node.id)}
-
-
-
- ))
- ) : (
- <>
-
No Accounts Found.
- {connectionType !== "stytch" ? (
-
- This authenticator can only be used as a backup right now.
- Please log in with email to create an account.
-
- ) : null}
- >
- )}
-
-
-
- {!fetchingNewWallets &&
- data?.smartAccounts?.nodes.length < 1 &&
- connectionType === "stytch" ? (
-
- ) : null}
-
-
-
- )}
- >
- );
-};
diff --git a/apps/abstraxion-dashboard/components/AccountInfo.tsx b/apps/abstraxion-dashboard/components/AccountInfo.tsx
deleted file mode 100644
index 2ff04176..00000000
--- a/apps/abstraxion-dashboard/components/AccountInfo.tsx
+++ /dev/null
@@ -1,169 +0,0 @@
-import { Dispatch, SetStateAction, useState } from "react";
-import dynamic from "next/dynamic";
-import Image from "next/image";
-import {
- Button,
- EmailIcon,
- AccountWalletLogo,
- EthereumLogo,
- TrashIcon,
- Popover,
- PopoverTrigger,
- PopoverContent,
-} from "@burnt-labs/ui";
-import { CopyIcon } from "@/components/Icons";
-import { truncateAddress } from "@/utils";
-import RemoveAuthenticatorModal from "./ModalViews/RemoveAuthenticator/RemoveAuthenticatorModal";
-import type {
- AbstraxionAccount,
- AuthenticatorNodes,
- authenticatorTypes,
-} from "@/types";
-
-const AddAuthenticatorsModal = dynamic<{
- isOpen: boolean;
- setIsOpen: Dispatch>;
-}>(
- () =>
- import("@/components/ModalViews/AddAuthenticators/AddAuthenticatorsModal"),
- {
- ssr: false,
- loading: () => (
-
- ),
- },
-);
-
-export const AccountInfo = ({ account }: { account?: AbstraxionAccount }) => {
- const [isAddModalOpen, setIsAddModalOpen] = useState(false);
- const [isRemoveModalOpen, setIsRemoveModalOpen] = useState(false);
- const [authenticatorToRemove, setAuthenticatorToRemove] = useState<
- AuthenticatorNodes | undefined
- >();
-
- const copyXIONAddress = () => {
- if (account?.id) {
- navigator.clipboard.writeText(account?.id);
- }
- };
-
- const handleAuthenticatorLabels = (type: authenticatorTypes) => {
- switch (type) {
- case "SECP256K1":
- return "OKX WALLET";
- case "ETHWALLET":
- return "EVM WALLET";
- case "JWT":
- return "EMAIL";
- default:
- return "";
- }
- };
-
- const handleAuthenticatorLogos = (type: authenticatorTypes) => {
- switch (type) {
- case "SECP256K1":
- return (
-
- );
- case "ETHWALLET":
- return ;
- case "JWT":
- return ;
- default:
- return ;
- }
- };
-
- const renderAuthenticators = () => {
- return account?.authenticators?.nodes.map((authenticator) => {
- return (
-
-
- {handleAuthenticatorLogos(
- authenticator.type.toUpperCase() as authenticatorTypes,
- )}
-
-
-
- {handleAuthenticatorLabels(
- authenticator.type.toUpperCase() as authenticatorTypes,
- )}
-
-
-
-
- );
- });
- };
- return (
-
-
- XION Address
-
-
-
- {truncateAddress(account?.id)}
-
-
-
-
-
-
- Copied!
-
-
-
-
-
-
-
- Your Logins
-
-
-
-
- {renderAuthenticators()}
-
- {/* TODO: Add history components */}
- {/*
*/}
-
-
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/ErrorDisplay/index.tsx b/apps/abstraxion-dashboard/components/ErrorDisplay/index.tsx
deleted file mode 100644
index 26f2d8de..00000000
--- a/apps/abstraxion-dashboard/components/ErrorDisplay/index.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import { useContext } from "react";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { Button } from "@burnt-labs/ui";
-
-export const ErrorDisplay = ({
- title = "OOPS! Something went wrong...",
- message = "Please try again later.",
- onClose,
-}: {
- title?: string;
- message?: string;
- onClose: VoidFunction;
-}) => {
- const { setAbstraxionError } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- return (
-
-
- {title}
-
-
{message}
-
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/Icons/Avatar.tsx b/apps/abstraxion-dashboard/components/Icons/Avatar.tsx
deleted file mode 100644
index 8cdfdbe8..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Avatar.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-export const AvatarIcon = ({
- color,
- backgroundColor,
-}: {
- color: string;
- backgroundColor: string;
-}) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/Check.tsx b/apps/abstraxion-dashboard/components/Icons/Check.tsx
deleted file mode 100644
index 14718eef..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Check.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-export const CheckIcon = ({ color = "black" }: { color?: string }) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/ChevronDown.tsx b/apps/abstraxion-dashboard/components/Icons/ChevronDown.tsx
deleted file mode 100644
index df3f16ea..00000000
--- a/apps/abstraxion-dashboard/components/Icons/ChevronDown.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-export const ChevronDownIcon = ({ color = "black" }: { color?: string }) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/Close.tsx b/apps/abstraxion-dashboard/components/Icons/Close.tsx
deleted file mode 100644
index 3d28da26..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Close.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-export const CloseIcon = ({
- color = "black",
- onClick,
-}: {
- color?: string;
- onClick: VoidFunction;
-}) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/Copy.tsx b/apps/abstraxion-dashboard/components/Icons/Copy.tsx
deleted file mode 100644
index e3100160..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Copy.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-export const CopyIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/RightArrow.tsx b/apps/abstraxion-dashboard/components/Icons/RightArrow.tsx
deleted file mode 100644
index c17787c8..00000000
--- a/apps/abstraxion-dashboard/components/Icons/RightArrow.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-export const RightArrowIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/Scan.tsx b/apps/abstraxion-dashboard/components/Icons/Scan.tsx
deleted file mode 100644
index f0b4ca7e..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Scan.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-export const ScanIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/USDC.tsx b/apps/abstraxion-dashboard/components/Icons/USDC.tsx
deleted file mode 100644
index 86570678..00000000
--- a/apps/abstraxion-dashboard/components/Icons/USDC.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-export const USDCIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/Wallet.tsx b/apps/abstraxion-dashboard/components/Icons/Wallet.tsx
deleted file mode 100644
index 5b7ef5ba..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Wallet.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-export const WalletIcon = ({
- color,
- backgroundColor,
- outlineColor,
-}: {
- color: string;
- backgroundColor: string;
- outlineColor?: string;
-}) => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/Xion.tsx b/apps/abstraxion-dashboard/components/Icons/Xion.tsx
deleted file mode 100644
index f955dbc5..00000000
--- a/apps/abstraxion-dashboard/components/Icons/Xion.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-export const XionIcon = () => (
-
-);
diff --git a/apps/abstraxion-dashboard/components/Icons/index.ts b/apps/abstraxion-dashboard/components/Icons/index.ts
deleted file mode 100644
index 3d07db74..00000000
--- a/apps/abstraxion-dashboard/components/Icons/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// Re-export the other files in this directory
-export { ScanIcon } from "./Scan";
-export { RightArrowIcon } from "./RightArrow";
-export { CheckIcon } from "./Check";
-export { CopyIcon } from "./Copy";
-export { AvatarIcon } from "./Avatar";
-export { ChevronDownIcon } from "./ChevronDown";
-export { WalletIcon } from "./Wallet";
-export { CloseIcon } from "./Close";
-export { XionIcon } from "./Xion";
diff --git a/apps/abstraxion-dashboard/components/Landing/index.tsx b/apps/abstraxion-dashboard/components/Landing/index.tsx
deleted file mode 100644
index 90c7a744..00000000
--- a/apps/abstraxion-dashboard/components/Landing/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { Abstraxion, useModal } from "@burnt-labs/abstraxion";
-import { Button } from "@burnt-labs/ui";
-import Image from "next/image";
-import React from "react";
-
-export function Landing() {
- const [showModal, setShowModal] = useModal();
- return (
-
-
-
-
-
-
- Introducing
-
-
- ABSTRAXION
-
-
-
-
-
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/Loading/index.tsx b/apps/abstraxion-dashboard/components/Loading/index.tsx
deleted file mode 100644
index caf7363e..00000000
--- a/apps/abstraxion-dashboard/components/Loading/index.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import { ModalSection, Spinner } from "@burnt-labs/ui";
-
-export const Loading = () => {
- return (
-
-
-
- Let's Go
-
- Starting your journey
-
-
-
-
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/ModalViews/AddAuthenticators/AddAuthenticatorsForm.tsx b/apps/abstraxion-dashboard/components/ModalViews/AddAuthenticators/AddAuthenticatorsForm.tsx
deleted file mode 100644
index af9aa9d3..00000000
--- a/apps/abstraxion-dashboard/components/ModalViews/AddAuthenticators/AddAuthenticatorsForm.tsx
+++ /dev/null
@@ -1,391 +0,0 @@
-import {
- Dispatch,
- SetStateAction,
- useContext,
- useEffect,
- useState,
-} from "react";
-import Image from "next/image";
-import { WalletType, useAccount, useSuggestChainAndConnect } from "graz";
-import { useQuery } from "@apollo/client";
-import { useStytchUser } from "@stytch/nextjs";
-import {
- Button,
- KeplrLogo,
- MetamaskLogo,
- PasskeyIcon,
- Spinner,
-} from "@burnt-labs/ui";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "@/components/AbstraxionContext";
-import { useAbstraxionAccount, useAbstraxionSigningClient } from "@/hooks";
-import { encodeHex } from "@/utils";
-import { AllSmartWalletQuery } from "@/utils/queries";
-
-const okxFlag = process.env.NEXT_PUBLIC_OKX_FLAG === "true";
-const deploymentEnv = process.env.NEXT_PUBLIC_DEPLOYMENT_ENV;
-
-// Variable to be true if deploymentEnv is "testnet", otherwise check okxFlag for "mainnet"
-const shouldEnableFeature =
- deploymentEnv === "testnet" || (deploymentEnv === "mainnet" && okxFlag);
-
-// TODO: Add webauthn to this and remove "disable" prop from button when implemented
-type AuthenticatorStates = "none" | "keplr" | "metamask" | "okx";
-
-export function AddAuthenticatorsForm({
- setIsOpen,
-}: {
- setIsOpen: Dispatch>;
-}) {
- // Component specific state
- const [selectedAuthenticator, setSelectedAuthenticator] =
- useState("none");
-
- // General UI state
- const [errorMessage, setErrorMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
- const [isSuccess, setIsSuccess] = useState(false);
-
- // Context state
- const { abstractAccount, setAbstractAccount, chainInfo } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- // Hooks
- const { loginAuthenticator } = useAbstraxionAccount();
- const { client } = useAbstraxionSigningClient();
- const { data: grazAccount } = useAccount();
- const { user } = useStytchUser();
- const { suggestAndConnect } = useSuggestChainAndConnect({
- onSuccess: async () => await addKeplrAuthenticator(),
- onError: () => setIsLoading(false),
- onLoading: () => setIsLoading(true),
- });
-
- const { data, previousData, startPolling, stopPolling } = useQuery(
- AllSmartWalletQuery,
- {
- variables: {
- authenticator: loginAuthenticator,
- },
- fetchPolicy: "network-only",
- notifyOnNetworkStatusChange: true,
- },
- );
-
- // Stop polling upon new data and update context
- useEffect(() => {
- if (previousData && data !== previousData) {
- stopPolling();
- setIsLoading(false);
- setIsSuccess(true);
- const node = data?.smartAccounts?.nodes.find(
- (smartAccount) => smartAccount.id === abstractAccount.id,
- );
- setAbstractAccount({
- ...node,
- userId: user?.user_id,
- currentAuthenticatorIndex: node.authenticators.nodes.find(
- (authenticator) => authenticator.authenticator === loginAuthenticator,
- ).authenticatorIndex,
- });
- }
- }, [
- data,
- previousData,
- abstractAccount.id,
- loginAuthenticator,
- setAbstractAccount,
- stopPolling,
- user?.user_id,
- ]);
-
- // Functions
- function handleSwitch(authenticator: AuthenticatorStates) {
- setErrorMessage("");
- setSelectedAuthenticator(authenticator);
- }
-
- async function handleSelection() {
- setErrorMessage("");
- switch (selectedAuthenticator) {
- case "none":
- break;
- case "keplr":
- suggestAndConnect({
- chainInfo: chainInfo,
- walletType: WalletType.KEPLR,
- });
- break;
- case "metamask":
- await addEthAuthenticator();
- break;
- case "okx":
- await addOkxAuthenticator();
- break;
- default:
- break;
- }
- }
-
- function postAddFunction() {
- setIsLoading(true);
- startPolling(3000);
- }
-
- async function addKeplrAuthenticator() {
- try {
- setIsLoading(true);
-
- if (!client) {
- throw new Error("No client found.");
- }
-
- const encoder = new TextEncoder();
- const signArbMessage = Buffer.from(encoder.encode(abstractAccount?.id));
- // @ts-ignore - function exists in keplr extension
- const signArbRes = await keplr.signArbitrary(
- chainInfo.chainId,
- grazAccount?.bech32Address,
- signArbMessage,
- );
-
- const accountIndex = abstractAccount?.authenticators.nodes.length; // TODO: Be careful here, if indexer returns wrong number this can overwrite accounts
-
- const msg = {
- add_auth_method: {
- add_authenticator: {
- Secp256K1: {
- id: accountIndex,
- pubkey: signArbRes.pub_key.value,
- signature: signArbRes.signature,
- },
- },
- },
- };
- const res = await client.addAbstractAccountAuthenticator(msg, "", {
- amount: [{ amount: "0", denom: "uxion" }],
- gas: "500000",
- });
-
- if (res.rawLog?.includes("failed")) {
- throw new Error(res.rawLog);
- }
-
- postAddFunction();
- return res;
- } catch (error) {
- setErrorMessage(
- "Something went wrong trying to add Keplr wallet as authenticator",
- );
- setIsLoading(false);
- }
- }
-
- async function addOkxAuthenticator() {
- try {
- if (!window.okxwallet) {
- alert("Install OKX Wallet");
- return;
- }
- setIsLoading(true);
-
- if (!client) {
- throw new Error("No client found.");
- }
-
- const encoder = new TextEncoder();
- const signArbMessage = Buffer.from(encoder.encode(abstractAccount?.id));
-
- await window.okxwallet.keplr.enable(chainInfo.chainId);
- const okxAccount = await window.okxwallet.keplr.getKey(chainInfo.chainId);
- const signArbRes = await window.okxwallet.keplr.signArbitrary(
- chainInfo.chainId,
- okxAccount.bech32Address,
- signArbMessage,
- );
-
- const accountIndex = abstractAccount?.authenticators.nodes.length; // TODO: Be careful here, if indexer returns wrong number this can overwrite accounts
-
- const msg = {
- add_auth_method: {
- add_authenticator: {
- Secp256K1: {
- id: accountIndex,
- pubkey: signArbRes.pub_key.value,
- signature: signArbRes.signature,
- },
- },
- },
- };
- const res = await client.addAbstractAccountAuthenticator(msg, "", {
- amount: [{ amount: "0", denom: "uxion" }],
- gas: "500000",
- });
-
- if (res.rawLog?.includes("failed")) {
- throw new Error(res.rawLog);
- }
-
- postAddFunction();
- return res;
- } catch (error) {
- console.log(error);
- setErrorMessage(
- "Something went wrong trying to add OKX wallet as authenticator",
- );
- setIsLoading(false);
- }
- }
-
- async function addEthAuthenticator() {
- if (!window.ethereum) {
- alert("Please install wallet extension");
- return;
- }
- try {
- setIsLoading(true);
- if (!client) {
- throw new Error("No client found.");
- }
-
- const accounts = await window.ethereum.request({
- method: "eth_requestAccounts",
- });
- const primaryAccount = accounts[0];
-
- const encoder = new TextEncoder();
- const ten = encodeHex(Buffer.from(encoder.encode(abstractAccount?.id)));
-
- const ethSignature = await window.ethereum.request({
- method: "personal_sign",
- params: [ten, primaryAccount],
- });
-
- const byteArray = new Uint8Array(
- ethSignature.match(/[\da-f]{2}/gi).map((hex) => parseInt(hex, 16)),
- );
- const base64String = btoa(String.fromCharCode.apply(null, byteArray));
-
- const accountIndex = abstractAccount?.authenticators.nodes.length; // TODO: Be careful here, if indexer returns wrong number this can overwrite accounts
-
- const msg = {
- add_auth_method: {
- add_authenticator: {
- EthWallet: {
- id: accountIndex,
- address: primaryAccount,
- signature: base64String,
- },
- },
- },
- };
-
- const res = await client.addAbstractAccountAuthenticator(msg, "", {
- amount: [{ amount: "0", denom: "uxion" }],
- gas: "500000",
- });
-
- if (res?.rawLog?.includes("failed")) {
- throw new Error("Transaction failed");
- }
-
- postAddFunction();
- return res;
- } catch (error) {
- setErrorMessage(
- "Something went wrong trying to add Ethereum wallet as authenticator",
- );
- setIsLoading(false);
- }
- }
-
- return (
-
-
-
- ADD AUTHENTICATORS
-
- {isSuccess ? (
-
- Successfully added authenticator to account. Please click continue
- to navigate back to home page.
-
- ) : errorMessage ? (
-
- {errorMessage}
-
- ) : (
-
- Enhance your account's security by adding authenticators.
- Select from the following options.
-
- )}
-
- {!isSuccess ? (
- <>
- {/*
*/}
-
- {/*
-
*/}
-
- {/*
*/}
-
- >
- ) : null}
- {isSuccess ? (
-
- ) : (
-
- )}
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/ModalViews/AddAuthenticators/AddAuthenticatorsModal.tsx b/apps/abstraxion-dashboard/components/ModalViews/AddAuthenticators/AddAuthenticatorsModal.tsx
deleted file mode 100644
index 00ec3d38..00000000
--- a/apps/abstraxion-dashboard/components/ModalViews/AddAuthenticators/AddAuthenticatorsModal.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { CloseIcon, Dialog, DialogClose, DialogContent } from "@burnt-labs/ui";
-import { AddAuthenticatorsForm } from "./AddAuthenticatorsForm";
-
-export default function AddAuthenticatorsModal({
- isOpen,
- setIsOpen,
-}: {
- isOpen: boolean;
- setIsOpen: Dispatch>;
-}) {
- return (
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/ModalViews/RemoveAuthenticator/RemoveAuthenticatorForm.tsx b/apps/abstraxion-dashboard/components/ModalViews/RemoveAuthenticator/RemoveAuthenticatorForm.tsx
deleted file mode 100644
index de454758..00000000
--- a/apps/abstraxion-dashboard/components/ModalViews/RemoveAuthenticator/RemoveAuthenticatorForm.tsx
+++ /dev/null
@@ -1,208 +0,0 @@
-import {
- Dispatch,
- SetStateAction,
- useContext,
- useEffect,
- useState,
-} from "react";
-import { useQuery } from "@apollo/client";
-import {
- AccountWalletLogo,
- Button,
- EmailIcon,
- EthereumLogo,
- Spinner,
-} from "@burnt-labs/ui";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "@/components/AbstraxionContext";
-import { useAbstraxionAccount, useAbstraxionSigningClient } from "@/hooks";
-import { AllSmartWalletQuery } from "@/utils/queries";
-import type { AuthenticatorNodes, authenticatorTypes } from "@/types";
-
-export function RemoveAuthenticatorForm({
- authenticator,
- setIsOpen,
-}: {
- authenticator?: AuthenticatorNodes;
- setIsOpen: Dispatch>;
-}) {
- // General UI state
- const [errorMessage, setErrorMessage] = useState("");
- const [isLoading, setIsLoading] = useState(false);
-
- // Context state
- const { abstractAccount, setAbstractAccount } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- // Hooks
- const { loginAuthenticator } = useAbstraxionAccount();
- const { client } = useAbstraxionSigningClient();
-
- const { data, previousData, startPolling, stopPolling } = useQuery(
- AllSmartWalletQuery,
- {
- variables: {
- authenticator: loginAuthenticator,
- },
- fetchPolicy: "network-only",
- notifyOnNetworkStatusChange: true,
- },
- );
-
- // Stop polling upon new data and update context
- useEffect(() => {
- if (previousData && data !== previousData) {
- stopPolling();
- setIsLoading(false);
- setAbstractAccount(undefined); // set account to undefined to throw users back to account select screen
- }
- }, [data, previousData]);
-
- const handleAuthenticatorLabels = (type: authenticatorTypes) => {
- switch (type) {
- case "SECP256K1":
- return "OKX WALLET";
- case "ETHWALLET":
- return "EVM WALLET";
- case "JWT":
- return "EMAIL";
- default:
- return "";
- }
- };
-
- const handleAuthenticatorLogos = (type: authenticatorTypes) => {
- switch (type) {
- case "SECP256K1":
- return (
-
- );
- case "ETHWALLET":
- return ;
- case "JWT":
- return ;
- default:
- return ;
- }
- };
-
- const renderAuthenticator = () => {
- if (!authenticator) {
- return (
-
- No authenticator found.
-
- );
- }
- return (
-
-
- {handleAuthenticatorLogos(
- authenticator.type.toUpperCase() as authenticatorTypes,
- )}
-
-
-
- {handleAuthenticatorLabels(
- authenticator.type.toUpperCase() as authenticatorTypes,
- )}
-
-
-
- );
- };
-
- async function removeAuthenticator() {
- try {
- setIsLoading(true);
-
- if (!authenticator) {
- throw new Error("No authenticator found.");
- }
-
- if (!client) {
- throw new Error("No client found.");
- }
-
- if (!abstractAccount) {
- throw new Error("No account found.");
- }
-
- if (abstractAccount.authenticators.nodes.length <= 1) {
- throw new Error(
- "You are trying to remove the only authenticator on the account and will lose all access. We cannot allow this operation.",
- );
- }
-
- const msg = {
- remove_auth_method: {
- id: authenticator.authenticatorIndex,
- },
- };
-
- const res = await client.removeAbstractAccountAuthenticator(msg, "", {
- amount: [{ amount: "0", denom: "uxion" }],
- gas: "500000",
- });
-
- if (res?.rawLog?.includes("failed")) {
- throw new Error("Transaction failed");
- }
-
- startPolling(3000);
- return res;
- } catch (error) {
- console.warn(error);
- setErrorMessage("Something went wrong trying to remove authenticator");
- setIsLoading(false);
- }
- }
-
- return (
-
-
-
- ARE YOU SURE?
-
- {errorMessage ? (
-
- {errorMessage}
-
- ) : (
- <>
-
-
- You are about to delete the authenticator below.
-
-
- Please click the confirm button to proceed.
-
-
- {renderAuthenticator()}
- >
- )}
-
- {errorMessage ? (
-
- ) : (
-
- )}
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/ModalViews/RemoveAuthenticator/RemoveAuthenticatorModal.tsx b/apps/abstraxion-dashboard/components/ModalViews/RemoveAuthenticator/RemoveAuthenticatorModal.tsx
deleted file mode 100644
index 822fc950..00000000
--- a/apps/abstraxion-dashboard/components/ModalViews/RemoveAuthenticator/RemoveAuthenticatorModal.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { Dispatch, SetStateAction } from "react";
-import { CloseIcon, Dialog, DialogClose, DialogContent } from "@burnt-labs/ui";
-import { RemoveAuthenticatorForm } from "./RemoveAuthenticatorForm";
-import type { AuthenticatorNodes } from "@/types";
-
-export default function RemoveAuthenticatorModal({
- isOpen,
- setIsOpen,
- authenticator,
-}: {
- isOpen: boolean;
- setIsOpen: Dispatch>;
- authenticator?: AuthenticatorNodes;
-}) {
- return (
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/Overview.tsx b/apps/abstraxion-dashboard/components/Overview.tsx
deleted file mode 100644
index 16810545..00000000
--- a/apps/abstraxion-dashboard/components/Overview.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import { formatBalance, getCommaSeperatedNumber } from "@/utils";
-import { usdcSearchDenom, useAccountBalance } from "@/hooks/useAccountBalance";
-import { RightArrowIcon, ScanIcon } from "./Icons";
-import { WalletSend } from "./WalletSend/WalletSend";
-import { WalletReceive } from "./WalletReceive";
-import type { AbstraxionAccount } from "@/types";
-
-export const XION_TO_USDC_CONVERSION = 50;
-
-export const Overview = ({ account }: { account?: AbstraxionAccount }) => {
- const { balanceInfo: accountBalance, sendTokens } = useAccountBalance();
-
- const xionBalance = accountBalance?.balances.find(
- (balance) => balance.denom === "uxion",
- );
- const usdcBalance = accountBalance.balances.find(
- (coin) => coin.denom === usdcSearchDenom,
- );
-
- return (
-
-
-
- Personal Account
-
- {/* */}
-
-
- Current Balance
-
-
- {accountBalance && (
-
- ${/* TODO: Change once we support multiple currencies */}
- {formatBalance(accountBalance.total)}
-
- )}
- {/* Hidden until functionality is in place. */}
-
- {/*
-
-
*/}
- {account?.id && (
-
-
-
- }
- />
- )}
-
-
-
- }
- />
-
-
- {/* Divider */}
-
- {xionBalance && (
-
-
- XION
-
-
-
- {getCommaSeperatedNumber(Number(xionBalance.amount))} XION
-
-
- $
- {formatBalance(
- Number(xionBalance.amount) * XION_TO_USDC_CONVERSION,
- )}{" "}
- USD
-
-
-
- )}
- {usdcBalance && (
-
-
- USDC
-
-
-
- {getCommaSeperatedNumber(Number(usdcBalance.amount))} USDC
-
-
- ${formatBalance(Number(usdcBalance.amount))} USD
-
-
-
- )}
-
- );
-};
diff --git a/apps/abstraxion-dashboard/components/Sidebar.tsx b/apps/abstraxion-dashboard/components/Sidebar.tsx
deleted file mode 100644
index a62b16db..00000000
--- a/apps/abstraxion-dashboard/components/Sidebar.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-"use client";
-
-import Link from "next/link";
-import { usePathname } from "next/navigation";
-import Image from "next/image";
-import { useContext } from "react";
-import { AbstraxionContext, AbstraxionContextProps } from "./AbstraxionContext";
-import { CloseIcon, WalletIcon } from "./Icons";
-
-const NAV_OPTIONS = [{ text: "home", path: "/" }];
-
-interface SidebarProps {
- onClose?: VoidFunction;
-}
-
-export function Sidebar({ onClose }: SidebarProps) {
- const pathname = usePathname();
- const { isMainnet, setIsOpen } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const renderNavOptions = () => {
- return NAV_OPTIONS.map((option) => {
- if (option.text === "home") {
- return (
-
- );
- }
- return (
-
- {option.text}
-
- );
- });
- };
-
- return (
-
-
-
- {!onClose ? (
-
- {isMainnet ? "MAINNET" : "TESTNET"}
-
- ) : (
-
- )}
-
-
-
-
-
-
-
-
-
- Personal Account
-
-
-
-
setIsOpen(true)}
- className="ui-flex ui-items-center ui-ml-2 ui-justify-center ui-border-white/40 ui-border-[1px] ui-rounded-full ui-h-8 ui-w-8 ui-cursor-pointer"
- >
-
-
-
- {/* TODO: Display User Info */}
- {/*
*/}
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/Typography.tsx b/apps/abstraxion-dashboard/components/Typography.tsx
deleted file mode 100644
index 5e3751fb..00000000
--- a/apps/abstraxion-dashboard/components/Typography.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-const CONFIG = {
- body: "font-akkuratLL text-base font-normal",
- navigation:
- "font-akkuratLL text-xs leading-3 uppercase font-bold tracking-widest",
-};
-
-interface TypographyProps {
- children: React.ReactNode;
- variant: keyof typeof CONFIG;
-}
-
-export function Typography({ children, variant }: TypographyProps) {
- return {children};
-}
diff --git a/apps/abstraxion-dashboard/components/WalletReceive/WalletReceive.test.tsx b/apps/abstraxion-dashboard/components/WalletReceive/WalletReceive.test.tsx
deleted file mode 100644
index 2e688301..00000000
--- a/apps/abstraxion-dashboard/components/WalletReceive/WalletReceive.test.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { render, screen, act } from "@testing-library/react";
-import { WalletReceive } from ".";
-
-describe("WalletReceive", () => {
- it("should render the WalletReceive modal when the trigger is clicked", async () => {
- render(
- Trigger} xionAddress="xionAddress" />,
- );
- const button = screen.getByText("Trigger");
- await act(async () => {
- await button.click();
- });
-
- const walletReceive = screen.getByText("RECEIVE");
- expect(walletReceive).toBeInTheDocument();
- });
-
- it("should format and render the xion address", async () => {
- render(
- Trigger}
- xionAddress="mockXionAddress"
- />,
- );
- const button = screen.getByText("Trigger");
- await act(async () => {
- await button.click();
- });
-
- const truncatedXionAddress = screen.getByText("mockXion...ress");
- expect(truncatedXionAddress).toBeInTheDocument();
- });
-});
diff --git a/apps/abstraxion-dashboard/components/WalletReceive/index.tsx b/apps/abstraxion-dashboard/components/WalletReceive/index.tsx
deleted file mode 100644
index e9f840f0..00000000
--- a/apps/abstraxion-dashboard/components/WalletReceive/index.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { ReactElement, useState } from "react";
-import { Button, Dialog, DialogContent, DialogTrigger } from "@burnt-labs/ui";
-import { DialogClose } from "@burnt-labs/ui";
-import { CloseIcon } from "@burnt-labs/ui";
-import { truncateAddress } from "@/utils";
-import { CopyIcon } from "../Icons";
-import { QRCodeSVG } from "qrcode.react";
-
-export function WalletReceive({
- trigger,
- xionAddress,
-}: {
- trigger: ReactElement;
- xionAddress: string;
-}) {
- const [isOpen, setIsOpen] = useState(false);
-
- const copyXionAddress = () => {
- if (xionAddress) {
- navigator.clipboard.writeText(xionAddress);
- }
- };
-
- return (
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/WalletSend/WalletSend.test.tsx b/apps/abstraxion-dashboard/components/WalletSend/WalletSend.test.tsx
deleted file mode 100644
index af3d2372..00000000
--- a/apps/abstraxion-dashboard/components/WalletSend/WalletSend.test.tsx
+++ /dev/null
@@ -1,89 +0,0 @@
-import {
- render,
- screen,
- fireEvent,
- act,
- waitFor,
-} from "@testing-library/react";
-import { WalletSendForm } from "./WalletSendForm";
-
-// Dependencies
-jest.mock("@/hooks", () => ({
- useAbstraxionAccount: () => ({ data: { id: "mock-account-id" } }),
-}));
-jest.mock("@/utils", () => ({
- formatBalance: (balance: number) => `Formatted ${balance}`,
- isValidWalletAddress: (address: string) => address === "valid-address",
-}));
-jest.mock("@/components/Overview", () => ({
- XION_TO_USDC_CONVERSION: 0.1,
-}));
-
-const mockSendTokens = jest.fn();
-
-const setup = () =>
- render(
- ,
- );
-
-describe("WalletSendForm", () => {
- beforeEach(() => {
- jest.clearAllMocks();
- });
-
- it("renders without crashing", () => {
- setup();
- expect(screen.getByText("SEND")).toBeInTheDocument();
- });
-
- it("updates input fields correctly", async () => {
- setup();
- const amountInput = screen.getByPlaceholderText("Amount");
- const recipientInput = screen.getByTestId("recipient-input");
- const memoInput = screen.getByTestId("memo-input");
-
- fireEvent.change(amountInput, { target: { value: "100" } });
- fireEvent.change(recipientInput, { target: { value: "valid-address" } });
- fireEvent.change(memoInput, { target: { value: "Test Memo" } });
-
- expect(amountInput).toHaveValue(100);
- expect(recipientInput).toHaveValue("valid-address");
- expect(memoInput).toHaveValue("Test Memo");
- });
-
- it("handles sending tokens correctly", async () => {
- setup();
- const amountInput = screen.getByPlaceholderText("Amount");
- const recipientInput = screen.getByTestId("recipient-input");
- const memoInput = screen.getByTestId("memo-input");
- const reviewButton = screen.getByText("REVIEW");
-
- fireEvent.change(amountInput, { target: { value: "100" } });
- fireEvent.change(recipientInput, { target: { value: "valid-address" } });
- fireEvent.change(memoInput, { target: { value: "Test Memo" } });
-
- await act(async () => {
- await fireEvent.click(reviewButton);
- });
-
- const confirmButton = screen.getByText("CONFIRM");
- await act(async () => {
- await fireEvent.click(confirmButton);
- });
-
- await waitFor(() => {
- expect(mockSendTokens).toHaveBeenCalledWith(
- "valid-address",
- 100,
- "Test Memo",
- );
- });
- });
-});
diff --git a/apps/abstraxion-dashboard/components/WalletSend/WalletSend.tsx b/apps/abstraxion-dashboard/components/WalletSend/WalletSend.tsx
deleted file mode 100644
index 673b2ec7..00000000
--- a/apps/abstraxion-dashboard/components/WalletSend/WalletSend.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { ReactElement, useState } from "react";
-import { Dialog, DialogContent, DialogTrigger } from "@burnt-labs/ui";
-import { DeliverTxResponse } from "@cosmjs/stargate";
-import { DialogClose } from "@burnt-labs/ui";
-import { CloseIcon } from "@burnt-labs/ui";
-import { WalletSendForm } from "./WalletSendForm";
-
-export function WalletSend({
- trigger,
- sendTokens,
- balanceInfo,
-}: {
- trigger: ReactElement;
- sendTokens: (
- senderAddress: string,
- sendAmount: number,
- denom: string,
- memo: string,
- ) => Promise;
- balanceInfo: BalanceInfo;
-}) {
- const [isOpen, setIsOpen] = useState(false);
-
- return (
-
- );
-}
diff --git a/apps/abstraxion-dashboard/components/WalletSend/WalletSendForm.tsx b/apps/abstraxion-dashboard/components/WalletSend/WalletSendForm.tsx
deleted file mode 100644
index 145c71ae..00000000
--- a/apps/abstraxion-dashboard/components/WalletSend/WalletSendForm.tsx
+++ /dev/null
@@ -1,431 +0,0 @@
-import { ChangeEvent, useState } from "react";
-import { DeliverTxResponse } from "@cosmjs/stargate";
-import { Button, Input, ChevronDown } from "@burnt-labs/ui";
-import { XION_TO_USDC_CONVERSION } from "@/components/Overview";
-import { ErrorDisplay } from "@/components/ErrorDisplay";
-import { useAbstraxionAccount } from "@/hooks";
-import { formatBalance, isValidWalletAddress } from "@/utils";
-import { USDCIcon } from "../Icons/USDC";
-import { XionIcon } from "../Icons/Xion";
-import { usdcSearchDenom } from "@/hooks/useAccountBalance";
-
-interface SelectedCurrency {
- type: "usdc" | "xion";
- balance?: Coin;
- denom: typeof usdcSearchDenom | "uxion";
-}
-
-export function WalletSendForm({
- sendTokens,
- balanceInfo,
- setIsOpen,
-}: {
- sendTokens: (
- senderAddress: string,
- sendAmount: number,
- denom: string,
- memo: string,
- ) => Promise;
- balanceInfo: BalanceInfo;
- setIsOpen: any;
-}) {
- const { data: account } = useAbstraxionAccount();
-
- const xionBalance = balanceInfo.balances.find(
- (coin) => coin.denom === "uxion",
- );
- const usdcBalance = balanceInfo.balances.find(
- (coin) => coin.denom === usdcSearchDenom,
- );
-
- const [selectedCurrency, setSelectedCurrency] = useState({
- type: "usdc",
- balance: usdcBalance,
- denom: usdcSearchDenom,
- });
-
- const [sendAmount, setSendAmount] = useState("0");
- const [amountError, setAmountError] = useState("");
- const [recipientAddress, setRecipientAddress] = useState("");
- const [recipientAddressError, setRecipientAddressError] = useState("");
- const [userMemo, setUserMemo] = useState("");
-
- const [isOnReviewStep, setIsOnReviewStep] = useState(false);
- const [isLoading, setIsLoading] = useState(false);
- const [isSuccess, setIsSuccess] = useState(false);
- const [sendTokensError, setSendTokensError] = useState(false);
-
- const [showDropdown, setShowDropdown] = useState(false);
-
- function handleAmountChange(event: ChangeEvent) {
- setAmountError("");
- if (sendAmount === "0" && event.target.value === "00") return;
- if (!event.target.value) {
- setSendAmount("0");
- return;
- }
- setSendAmount(event.target.value.replace(/^0+/, ""));
- }
-
- function handleStart() {
- if (!sendAmount || sendAmount === "0") {
- setAmountError("No amount entered");
- return;
- }
-
- if (selectedCurrency.type === "xion") {
- if (Number(xionBalance?.amount) < Number(sendAmount) * 1000000) {
- setAmountError("Input is greater than your current balance");
- return;
- }
- }
-
- if (selectedCurrency.type === "usdc") {
- if (Number(usdcBalance?.amount) < Number(sendAmount) * 1000000) {
- setAmountError("Input is greater than your current balance");
- return;
- }
- }
-
- if (!isValidWalletAddress(recipientAddress)) {
- setRecipientAddressError("Invalid wallet address");
- return;
- }
-
- setIsOnReviewStep(true);
- }
-
- async function triggerSend() {
- try {
- setIsLoading(true);
-
- await sendTokens(
- recipientAddress,
- Number(sendAmount),
- selectedCurrency.denom,
- userMemo,
- );
- setIsSuccess(true);
- } catch (error) {
- console.log(error);
- setSendTokensError(true);
- } finally {
- setIsLoading(false);
- }
- }
-
- function switchSelectedCurrency(type: typeof selectedCurrency.type) {
- switch (type) {
- case "xion":
- setSelectedCurrency({
- type: "xion",
- balance: xionBalance,
- denom: "uxion",
- });
- break;
- case "usdc":
- setSelectedCurrency({
- type: "usdc",
- balance: usdcBalance,
- denom: usdcSearchDenom,
- });
- break;
- }
- setShowDropdown(false);
- return;
- }
-
- const currencyDropdown = () => {
- return (
-
-
setShowDropdown(!showDropdown)}
- >
-
-
- {selectedCurrency.type === "usdc" ? (
-
- ) : (
-
- )}
-
-
-
-
- {selectedCurrency.type.toUpperCase()}
-
-
- Balance:{" "}
- {formatBalance(Number(selectedCurrency.balance?.amount))}{" "}
- {selectedCurrency.type.toUpperCase()}{" "}
-
- $
- {formatBalance(
- Number(selectedCurrency.balance?.amount) *
- (selectedCurrency.type === "xion"
- ? XION_TO_USDC_CONVERSION
- : 1),
- )}{" "}
- USD
-
-
-
-
-
-
-
-
-
switchSelectedCurrency("xion")}
- >
-
-
-
-
-
-
XION
-
- Balance: {formatBalance(Number(xionBalance?.amount))} XION{" "}
-
- $
- {formatBalance(
- Number(xionBalance?.amount) * XION_TO_USDC_CONVERSION,
- )}{" "}
- USD
-
-
-
-
-
-
switchSelectedCurrency("usdc")}
- >
-
-
-
-
-
-
USDC
-
- Balance: {formatBalance(Number(usdcBalance?.amount))} USDC{" "}
-
- ${formatBalance(Number(usdcBalance?.amount))} USD
-
-
-
-
-
-
- );
- };
-
- return (
- <>
- {sendTokensError ? (
- setIsOpen(false)}
- />
- ) : isSuccess ? (
- <>
-
-
- SUCCESS!
-
-
- You have initiated the transaction below.
-
-
-
- Transfer Amount
-
-
- {sendAmount}{" "}
-
- {selectedCurrency.type.toUpperCase()}
-
-
-
- $
- {formatBalance(
- Number(sendAmount) *
- 1000000 *
- (selectedCurrency.type === "xion"
- ? XION_TO_USDC_CONVERSION
- : 1),
- )}{" "}
- USD
-
-
- {userMemo}
-
-
-
-
- From
-
-
- {account.id}
-
-
-
-
- To
-
-
- {recipientAddress}
-
-
-
-
- >
- ) : isOnReviewStep ? (
- <>
-
-
- REVIEW
-
-
- You are about to make the transaction below.
-
-
-
- Transfer Amount
-
-
- {sendAmount}{" "}
-
- {selectedCurrency.type.toUpperCase()}
-
-
-
- $
- {formatBalance(
- Number(sendAmount) *
- 1000000 *
- (selectedCurrency.type === "xion"
- ? XION_TO_USDC_CONVERSION
- : 1),
- )}{" "}
- USD
-
-
- {userMemo}
-
-
-
-
- From
-
-
- {account.id}
-
-
-
-
- To
-
-
- {recipientAddress}
-
-
-
-
-
- >
- ) : (
- <>
-
-
- SEND
-
-
- {currencyDropdown()}
-
-
Amount
-
- =$
- {formatBalance(
- Number(sendAmount) *
- 1000000 *
- (selectedCurrency.type === "xion"
- ? XION_TO_USDC_CONVERSION
- : 1),
- )}{" "}
- USD
-
-
-
-
-
- {selectedCurrency.type.toUpperCase()}
-
-
- {amountError ? (
-
{amountError}
- ) : null}
-
-
-
-
- {account.id}
-
-
-
{
- setRecipientAddressError("");
- setRecipientAddress(e.target.value);
- }}
- placeholder="Recipient Address"
- value={recipientAddress}
- />
-
setUserMemo(e.target.value)}
- placeholder="Memo (Optional)"
- value={userMemo}
- />
-
-
- >
- )}
- >
- );
-}
diff --git a/apps/abstraxion-dashboard/global.d.ts b/apps/abstraxion-dashboard/global.d.ts
deleted file mode 100644
index a8542b3a..00000000
--- a/apps/abstraxion-dashboard/global.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-interface Coin {
- readonly denom: string;
- readonly amount: string;
-}
-
-interface BalanceInfo {
- // In USDC
- total: number;
- balances: Coin[];
-}
-
-interface Authenticators {
- nodes: { type: string; id: string }[];
-}
-
-interface Window {
- okxwallet: any; // TODO: Properly define
-}
diff --git a/apps/abstraxion-dashboard/hooks/index.ts b/apps/abstraxion-dashboard/hooks/index.ts
deleted file mode 100644
index 87d5dfda..00000000
--- a/apps/abstraxion-dashboard/hooks/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { useAbstraxionAccount } from "./useAbstraxionAccount";
-export { useAbstraxionSigningClient } from "./useAbstraxionSigningClient";
diff --git a/apps/abstraxion-dashboard/hooks/useAbstraxionAccount.ts b/apps/abstraxion-dashboard/hooks/useAbstraxionAccount.ts
deleted file mode 100644
index 3483313b..00000000
--- a/apps/abstraxion-dashboard/hooks/useAbstraxionAccount.ts
+++ /dev/null
@@ -1,146 +0,0 @@
-import { useContext, useEffect, useRef, useState } from "react";
-import { useAccount } from "graz";
-import { useStytch, useStytchSession } from "@stytch/nextjs";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "@/components/AbstraxionContext";
-import { decodeJwt } from "jose";
-import { getHumanReadablePubkey } from "@/utils";
-import type { AbstraxionAccount } from "@/types";
-
-export const useAbstraxionAccount = () => {
- const { session } = useStytchSession();
-
- const {
- connectionType,
- setConnectionType,
- abstractAccount,
- setAbstractAccount,
- } = useContext(AbstraxionContext) as AbstraxionContextProps;
-
- const loginType = localStorage.getItem("loginType");
- const [loginAuthenticator, setLoginAuthenticator] = useState(
- localStorage.getItem("loginAuthenticator"),
- );
-
- const { data: grazAccount, isConnected } = useAccount();
- const stytchClient = useStytch();
- const session_jwt = stytchClient.session.getTokens()?.session_jwt;
-
- function getAuthenticator() {
- let authenticator = "";
- switch (connectionType) {
- case "stytch":
- const { aud, sub } = session_jwt
- ? decodeJwt(session_jwt)
- : { aud: undefined, sub: undefined };
- authenticator = `${Array.isArray(aud) ? aud[0] : aud}.${sub}`;
- break;
- case "graz":
- authenticator = getHumanReadablePubkey(grazAccount?.pubKey);
- break;
- case "metamask":
- authenticator = loginAuthenticator || "";
- break;
- case "okx":
- authenticator = loginAuthenticator || "";
- break;
- case "none":
- authenticator = "";
- break;
- }
-
- return authenticator;
- }
-
- useEffect(() => {
- const refreshConnectionType = () => {
- setConnectionType((loginType as any) || "none");
- };
-
- if (connectionType === "none") {
- refreshConnectionType();
- }
- }, [session, isConnected, grazAccount]);
-
- // Metamask & OKX account detection
- useEffect(() => {
- const handleAccountsChanged = (accounts: string[]) => {
- if (connectionType === "metamask") {
- localStorage.setItem("loginAuthenticator", accounts[0]);
- setLoginAuthenticator(accounts[0]);
- setAbstractAccount(undefined);
- }
- };
-
- window.ethereum?.on("accountsChanged", handleAccountsChanged);
-
- return () => {
- window.ethereum?.off("accountsChanged", handleAccountsChanged);
- };
- }, []);
-
- // OKX account detection
- useEffect(() => {
- const handleAccountsChanged = async (accounts: any) => {
- if (connectionType === "okx") {
- const okxXionAddress = localStorage.getItem("okxXionAddress");
- const okxWalletName = localStorage.getItem("okxWalletName");
-
- // If user switches account via extension, log user out.
- // No good way to handle account switch via the OKX keplr event system
- if (
- okxXionAddress !== accounts.account.XION_TEST ||
- okxWalletName !== accounts.name
- ) {
- // Basically log out
- setConnectionType("none");
- setAbstractAccount(undefined);
- localStorage.removeItem("loginType");
- localStorage.removeItem("loginAuthenticator");
- localStorage.removeItem("okxXionAddress");
- localStorage.removeItem("okxWalletName");
- }
- }
- };
-
- if (window.okxwallet) {
- window.okxwallet?.keplr.on("connect", handleAccountsChanged);
- }
-
- return () => {
- window.okxwallet?.keplr.on("connect", handleAccountsChanged);
- };
- }, []);
-
- // Keplr account detection
- useEffect(() => {
- const handleAccountsChanged = () => {
- if (connectionType === "graz") {
- setAbstractAccount(undefined);
- }
- };
-
- window.addEventListener("keplr_keystorechange", handleAccountsChanged);
- return () => {
- window.removeEventListener("keplr_keystorechange", handleAccountsChanged);
- };
- }, []);
-
- return {
- data: (abstractAccount as AbstraxionAccount) || undefined,
- connectionType,
- loginAuthenticator: getAuthenticator(),
- isConnected:
- connectionType === "stytch"
- ? !!session
- : connectionType === "graz"
- ? isConnected
- : connectionType === "metamask"
- ? window.ethereum.isConnected()
- : connectionType === "okx"
- ? localStorage.getItem("loginAuthenticator")
- : false,
- };
-};
diff --git a/apps/abstraxion-dashboard/hooks/useAbstraxionSigningClient.ts b/apps/abstraxion-dashboard/hooks/useAbstraxionSigningClient.ts
deleted file mode 100644
index 284b1f49..00000000
--- a/apps/abstraxion-dashboard/hooks/useAbstraxionSigningClient.ts
+++ /dev/null
@@ -1,161 +0,0 @@
-import { useCallback, useContext, useEffect, useMemo, useState } from "react";
-import { useStytch } from "@stytch/nextjs";
-import {
- AAClient,
- AADirectSigner,
- AbstractAccountJWTSigner,
- GasPrice,
-} from "@burnt-labs/signers";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "@/components/AbstraxionContext";
-import { getKeplr, useOfflineSigners } from "graz";
-import { testnetChainInfo } from "@burnt-labs/constants";
-import { AAEthSigner } from "@burnt-labs/signers";
-import { getEnvStringOrThrow } from "@/utils";
-
-export const useAbstraxionSigningClient = () => {
- const { connectionType, abstractAccount, chainInfo } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const stytch = useStytch();
- const sessionToken = stytch.session.getTokens()?.session_token;
-
- const { data } = useOfflineSigners();
- const keplr = window.keplr ? getKeplr() : undefined;
-
- const [abstractClient, setAbstractClient] = useState(
- undefined,
- );
-
- async function okxSignArb(
- chainId: string,
- account: string,
- signBytes: Uint8Array,
- ) {
- if (!window.okxwallet) {
- alert("Please install the OKX wallet extension");
- return;
- }
- await window.okxwallet.keplr.enable(chainInfo.chainId);
- const signDataNew = Uint8Array.from(Object.values(signBytes));
- return window.okxwallet.keplr.signArbitrary(chainId, account, signDataNew);
- }
-
- async function ethSigningFn(msg: any) {
- const accounts = await window.ethereum?.request({
- method: "eth_requestAccounts",
- });
- return window.ethereum?.request({
- method: "personal_sign",
- params: [msg, accounts[0]],
- });
- }
-
- const getSigner = useCallback(async () => {
- let signer:
- | AbstractAccountJWTSigner
- | AADirectSigner
- | AAEthSigner
- | undefined = undefined;
-
- switch (connectionType) {
- case "stytch":
- signer = new AbstractAccountJWTSigner(
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- sessionToken,
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_INDEXER_URL",
- process.env.NEXT_PUBLIC_DEFAULT_INDEXER_URL,
- ),
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_API_URL",
- process.env.NEXT_PUBLIC_DEFAULT_API_URL,
- ),
- );
- break;
- case "graz":
- if (keplr) {
- const offlineSigner = window.keplr.getOfflineSigner(
- chainInfo.chainId,
- );
- signer = new AADirectSigner(
- offlineSigner,
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- // @ts-ignore - signArbitrary function exists on Keplr although it doesn't show
- keplr.signArbitrary,
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_INDEXER_URL",
- process.env.NEXT_PUBLIC_DEFAULT_INDEXER_URL,
- ),
- );
- }
- break;
- case "okx":
- if (window.okxwallet) {
- const okxOfflineSigner =
- await window.okxwallet.keplr.getOfflineSigner(chainInfo.chainId);
- signer = new AADirectSigner(
- okxOfflineSigner,
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- okxSignArb,
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_INDEXER_URL",
- process.env.NEXT_PUBLIC_DEFAULT_INDEXER_URL,
- ),
- );
- }
- break;
- case "metamask":
- if (window.ethereum) {
- signer = new AAEthSigner(
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- ethSigningFn,
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_INDEXER_URL",
- process.env.NEXT_PUBLIC_DEFAULT_INDEXER_URL,
- ),
- );
- }
- break;
- case "none":
- signer = undefined;
- break;
- }
-
- if (!signer) {
- console.warn("No signer found");
- return;
- }
-
- const abstractClient = await AAClient.connectWithSigner(
- // Should be set in the context but defaulting here just in case.
- chainInfo.rpc || testnetChainInfo.rpc,
- signer,
- {
- gasPrice: GasPrice.fromString("0uxion"),
- },
- );
-
- setAbstractClient(abstractClient);
- }, [sessionToken, abstractAccount, connectionType, data, keplr]);
-
- useEffect(() => {
- if (abstractAccount) {
- getSigner();
- }
- }, [abstractAccount]);
-
- const memoizedClient = useMemo(
- () => ({ client: abstractClient }),
- [abstractClient],
- );
-
- return memoizedClient;
-};
diff --git a/apps/abstraxion-dashboard/hooks/useAccountBalance.ts b/apps/abstraxion-dashboard/hooks/useAccountBalance.ts
deleted file mode 100644
index 380c1642..00000000
--- a/apps/abstraxion-dashboard/hooks/useAccountBalance.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { useEffect, useMemo, useState } from "react";
-import { useAbstraxionAccount, useAbstraxionSigningClient } from "@/hooks";
-import { XION_TO_USDC_CONVERSION } from "@/components/Overview";
-
-export const usdcSearchDenom =
- "ibc/57097251ED81A232CE3C9D899E7C8096D6D87EF84BA203E12E424AA4C9B57A64";
-
-export function useAccountBalance() {
- const { data: account } = useAbstraxionAccount();
- const { client } = useAbstraxionSigningClient();
- const [balanceInfo, setBalanceInfo] = useState({
- total: 0,
- balances: [],
- });
-
- async function fetchBalances() {
- try {
- if (!account) {
- throw new Error("No account");
- }
-
- if (!client) {
- throw new Error("No signing client");
- }
- // TODO: Can we optimize balance fetching
- const uxionBalance = await client.getBalance(account.id, "uxion");
- const usdcBalance = await client.getBalance(account.id, usdcSearchDenom);
-
- const uxionToUsd = Number(uxionBalance.amount) * XION_TO_USDC_CONVERSION;
-
- setBalanceInfo({
- total: uxionToUsd + Number(usdcBalance.amount),
- balances: [uxionBalance, usdcBalance],
- });
- } catch (error) {
- console.error("Error fetching balances:", error);
- }
- }
-
- useEffect(() => {
- if (account && client) {
- fetchBalances();
- }
- }, [account, client]);
-
- async function sendTokens(
- senderAddress: string,
- sendAmount: number,
- denom: string,
- memo: string,
- ) {
- try {
- if (!account) {
- throw new Error("No account");
- }
-
- if (!client) {
- throw new Error("No signing client");
- }
-
- const convertedSendAmount = String(sendAmount * 1000000);
-
- const res = await client.sendTokens(
- account.id,
- senderAddress,
- [{ denom, amount: convertedSendAmount }],
- {
- amount: [{ denom: "uxion", amount: "0" }],
- gas: "200000", // TODO: Dynamic?
- },
- memo,
- );
-
- if (res.rawLog?.includes("failed")) {
- throw new Error(res.rawLog);
- }
-
- fetchBalances(); // Update balances after successful token send
- return res;
- } catch (error) {
- throw error;
- }
- }
-
- const memoizedBalanceInfo = useMemo(() => balanceInfo, [balanceInfo]);
-
- return { balanceInfo: memoizedBalanceInfo, sendTokens };
-}
diff --git a/apps/abstraxion-dashboard/hooks/useUser.ts b/apps/abstraxion-dashboard/hooks/useUser.ts
deleted file mode 100644
index e701762e..00000000
--- a/apps/abstraxion-dashboard/hooks/useUser.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-"use client";
-
-import { useQuery } from "@tanstack/react-query";
-import { useSearchParams } from "next/navigation";
-
-export const useUser = () => {
- const searchParams = useSearchParams();
- const userId = searchParams.get("id") as string;
-
- const fetchUser = async (id: string) => {
- return {
- name: "John Doe",
- email: "john.doe@gmail.com",
- };
- };
-
- const {
- data: user,
- isLoading,
- isError,
- } = useQuery(["user", userId], () => fetchUser(userId), {
- enabled: !!userId, // Only run query if userId is available
- });
-
- return { user, isLoading, isError };
-};
diff --git a/apps/abstraxion-dashboard/jest.config.ts b/apps/abstraxion-dashboard/jest.config.ts
deleted file mode 100644
index 66005e16..00000000
--- a/apps/abstraxion-dashboard/jest.config.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import type { Config } from "jest";
-import nextJest from "next/jest.js";
-
-const createJestConfig = nextJest({
- dir: "./",
-});
-
-const config: Config = {
- coverageProvider: "v8",
- testEnvironment: "jsdom",
- setupFilesAfterEnv: ["/jest.setup.ts"],
- preset: "ts-jest",
- moduleNameMapper: {
- "@/hooks": "/hooks",
- "@/utils": "/utils",
- "@/components/(.*)": "/components/$1",
- },
-};
-
-export default createJestConfig(config);
diff --git a/apps/abstraxion-dashboard/jest.setup.ts b/apps/abstraxion-dashboard/jest.setup.ts
deleted file mode 100644
index d0de870d..00000000
--- a/apps/abstraxion-dashboard/jest.setup.ts
+++ /dev/null
@@ -1 +0,0 @@
-import "@testing-library/jest-dom";
diff --git a/apps/abstraxion-dashboard/lib.ts b/apps/abstraxion-dashboard/lib.ts
deleted file mode 100644
index 78efee00..00000000
--- a/apps/abstraxion-dashboard/lib.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ApolloClient, InMemoryCache } from "@apollo/client";
-import { createStytchHeadlessClient } from "@stytch/nextjs/headless";
-import { StytchHeadlessClient } from "@stytch/vanilla-js/dist/index.headless";
-import { getEnvStringOrThrow } from "./utils";
-
-export const stytchClient: StytchHeadlessClient = createStytchHeadlessClient(
- getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_STYTCH_PUBLIC_TOKEN",
- process.env.NEXT_PUBLIC_DEFAULT_STYTCH_PUBLIC_TOKEN,
- ),
-);
-
-// TODO: Refactor to be dynamic. Local dev uri must be device IP.
-export const apolloClient = new ApolloClient({
- uri: getEnvStringOrThrow(
- "NEXT_PUBLIC_DEFAULT_INDEXER_URL",
- process.env.NEXT_PUBLIC_DEFAULT_INDEXER_URL,
- ),
- cache: new InMemoryCache(),
- assumeImmutableResults: true,
-});
diff --git a/apps/abstraxion-dashboard/next.config.js b/apps/abstraxion-dashboard/next.config.js
deleted file mode 100644
index ab0ddd6a..00000000
--- a/apps/abstraxion-dashboard/next.config.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/** @type {import('next').NextConfig} */
-module.exports = {
- webpack(config) {
- // Grab the existing rule that handles SVG imports
- const fileLoaderRule = config.module.rules.find((rule) =>
- rule.test?.test?.(".svg"),
- );
-
- config.module.rules.push(
- // Reapply the existing rule, but only for svg imports ending in ?url
- {
- ...fileLoaderRule,
- test: /\.svg$/i,
- resourceQuery: /url/, // *.svg?url
- },
- // Convert all other *.svg imports to React components
- {
- test: /\.svg$/i,
- issuer: fileLoaderRule.issuer,
- resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url
- use: ["@svgr/webpack"],
- },
- );
-
- // Modify the file loader rule to ignore *.svg, since we have it handled now.
- fileLoaderRule.exclude = /\.svg$/i;
-
- // Resolve " Module not found: Can't resolve 'pino-pretty' in " warning coming from wallet-connect
- config.externals.push("pino-pretty", "lokijs", "encoding");
-
- return config;
- },
- images: {
- remotePatterns: [
- {
- protocol: "https",
- hostname: "www.okx.com",
- port: "",
- pathname: "/cdn/assets/imgs/239/*",
- },
- ],
- },
-};
-
-// Injected content via Sentry wizard below
-
-const { withSentryConfig } = require("@sentry/nextjs");
-
-module.exports = withSentryConfig(
- module.exports,
- {
- // For all available options, see:
- // https://github.com/getsentry/sentry-webpack-plugin#options
-
- // Suppresses source map uploading logs during build
- silent: true,
- org: "thames-brook-associates-llc",
- project: "abstract-accounts-dashboard",
- },
- {
- // For all available options, see:
- // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
-
- // Upload a larger set of source maps for prettier stack traces (increases build time)
- widenClientFileUpload: true,
-
- // Transpiles SDK to be compatible with IE11 (increases bundle size)
- transpileClientSDK: true,
-
- // Routes browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers (increases server load)
- tunnelRoute: "/monitoring",
-
- // Hides source maps from generated client bundles
- hideSourceMaps: true,
-
- // Automatically tree-shake Sentry logger statements to reduce bundle size
- disableLogger: true,
-
- // Enables automatic instrumentation of Vercel Cron Monitors.
- // See the following for more information:
- // https://docs.sentry.io/product/crons/
- // https://vercel.com/docs/cron-jobs
- automaticVercelMonitors: true,
- },
-);
diff --git a/apps/abstraxion-dashboard/package.json b/apps/abstraxion-dashboard/package.json
deleted file mode 100644
index 3103b5bb..00000000
--- a/apps/abstraxion-dashboard/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "abstraxion-dashboard",
- "version": "0.2.0-alpha.28",
- "private": true,
- "scripts": {
- "dev": "next dev --port 3000",
- "build": "next build",
- "start": "next start",
- "lint": "next lint",
- "test": "jest",
- "test:watch": "jest --watch"
- },
- "dependencies": {
- "@apollo/client": "^3.8.8",
- "@burnt-labs/abstraxion": "workspace:*",
- "@burnt-labs/constants": "workspace:*",
- "@burnt-labs/signers": "workspace:*",
- "@burnt-labs/tailwind-config": "workspace:*",
- "@burnt-labs/ui": "workspace:*",
- "@cosmjs/crypto": "^0.32.2",
- "@cosmjs/proto-signing": "^0.32.2",
- "@cosmjs/stargate": "^0.32.2",
- "@sentry/nextjs": "^7.100.1",
- "@stytch/nextjs": "^14.0.0",
- "@stytch/vanilla-js": "^3.2.1",
- "@tanstack/react-query": "^4.36.1",
- "@vercel/analytics": "^1.1.3",
- "cosmjs-types": "^0.9.0",
- "graz": "^0.0.51",
- "jose": "^5.1.3",
- "next": "^14.0.3",
- "qrcode.react": "^3.1.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@burnt-labs/tsconfig": "workspace:*",
- "@svgr/webpack": "^8.1.0",
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/react": "^14.2.1",
- "@types/jest": "^29.5.12",
- "@types/node": "^20",
- "@types/react": "^18.2.47",
- "@types/react-dom": "^18.2.18",
- "autoprefixer": "^10.4.13",
- "eslint": "^8.48.0",
- "eslint-config-next": "14.0.4",
- "jest": "^29.7.0",
- "jest-environment-jsdom": "^29.7.0",
- "postcss": "^8.4.20",
- "tailwindcss": "^3.2.4",
- "ts-jest": "^29.1.2",
- "ts-node": "^10.9.2",
- "typescript": "^5.2.2"
- }
-}
\ No newline at end of file
diff --git a/apps/abstraxion-dashboard/postcss.config.js b/apps/abstraxion-dashboard/postcss.config.js
deleted file mode 100644
index 33ad091d..00000000
--- a/apps/abstraxion-dashboard/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-}
diff --git a/apps/abstraxion-dashboard/public/burntAvatarCircle.png b/apps/abstraxion-dashboard/public/burntAvatarCircle.png
deleted file mode 100644
index 5b1f34c1..00000000
Binary files a/apps/abstraxion-dashboard/public/burntAvatarCircle.png and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/burntCircle.svg b/apps/abstraxion-dashboard/public/burntCircle.svg
deleted file mode 100644
index 2d278ef4..00000000
--- a/apps/abstraxion-dashboard/public/burntCircle.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Black.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Black.woff
deleted file mode 100644
index 0d002311..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Black.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Black.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Black.woff2
deleted file mode 100644
index a261853d..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Black.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BlackItalic.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BlackItalic.woff
deleted file mode 100644
index af9a67fe..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BlackItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BlackItalic.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BlackItalic.woff2
deleted file mode 100644
index 9e55f640..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BlackItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Bold.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Bold.woff
deleted file mode 100644
index 47dcd6d0..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Bold.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Bold.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Bold.woff2
deleted file mode 100644
index d81fdd60..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Bold.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BoldItalic.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BoldItalic.woff
deleted file mode 100644
index bd9d5835..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BoldItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BoldItalic.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BoldItalic.woff2
deleted file mode 100644
index af942c50..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-BoldItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Italic.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Italic.woff
deleted file mode 100644
index f16ee04e..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Italic.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Italic.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Italic.woff2
deleted file mode 100644
index eef7c973..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Italic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Light.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Light.woff
deleted file mode 100644
index e6d128aa..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Light.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Light.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Light.woff2
deleted file mode 100644
index f96503e0..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Light.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-LightItalic.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-LightItalic.woff
deleted file mode 100644
index e57ff531..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-LightItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-LightItalic.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-LightItalic.woff2
deleted file mode 100644
index 6615c0e1..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-LightItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Regular.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Regular.woff
deleted file mode 100644
index 46351efb..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Regular.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Regular.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Regular.woff2
deleted file mode 100644
index 1830321d..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Regular.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Thin.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Thin.woff
deleted file mode 100644
index 20f18bc5..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Thin.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Thin.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Thin.woff2
deleted file mode 100644
index 8ae41429..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-Thin.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-ThinItalic.woff b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-ThinItalic.woff
deleted file mode 100644
index c0022db9..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-ThinItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-ThinItalic.woff2 b/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-ThinItalic.woff2
deleted file mode 100644
index 783da3de..00000000
Binary files a/apps/abstraxion-dashboard/public/fonts/AkkuratLLWeb-ThinItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/landingBackground.png b/apps/abstraxion-dashboard/public/landingBackground.png
deleted file mode 100644
index 37cf4dbd..00000000
Binary files a/apps/abstraxion-dashboard/public/landingBackground.png and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/logo.png b/apps/abstraxion-dashboard/public/logo.png
deleted file mode 100644
index 5518dfe8..00000000
Binary files a/apps/abstraxion-dashboard/public/logo.png and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/next.svg b/apps/abstraxion-dashboard/public/next.svg
deleted file mode 100644
index 5174b28c..00000000
--- a/apps/abstraxion-dashboard/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/abstraxion-dashboard/public/okx-logo.png b/apps/abstraxion-dashboard/public/okx-logo.png
deleted file mode 100644
index 41bdb766..00000000
Binary files a/apps/abstraxion-dashboard/public/okx-logo.png and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/okxWallet.png b/apps/abstraxion-dashboard/public/okxWallet.png
deleted file mode 100644
index 9650a0c8..00000000
Binary files a/apps/abstraxion-dashboard/public/okxWallet.png and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/overviewBackground.png b/apps/abstraxion-dashboard/public/overviewBackground.png
deleted file mode 100644
index d024d70a..00000000
Binary files a/apps/abstraxion-dashboard/public/overviewBackground.png and /dev/null differ
diff --git a/apps/abstraxion-dashboard/public/vercel.svg b/apps/abstraxion-dashboard/public/vercel.svg
deleted file mode 100644
index d2f84222..00000000
--- a/apps/abstraxion-dashboard/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/abstraxion-dashboard/sentry.client.config.ts b/apps/abstraxion-dashboard/sentry.client.config.ts
deleted file mode 100644
index 21ce5eee..00000000
--- a/apps/abstraxion-dashboard/sentry.client.config.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file configures the initialization of Sentry on the client.
-// The config you add here will be used whenever a users loads a page in their browser.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from "@sentry/nextjs";
-
-Sentry.init({
- dsn: "https://e6affd573a77066f0aed8f3226887a1a@o4505325459210240.ingest.sentry.io/4506712120623104",
-
- enableTracing: false,
-
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-});
diff --git a/apps/abstraxion-dashboard/sentry.edge.config.ts b/apps/abstraxion-dashboard/sentry.edge.config.ts
deleted file mode 100644
index b44a139e..00000000
--- a/apps/abstraxion-dashboard/sentry.edge.config.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on).
-// The config you add here will be used whenever one of the edge features is loaded.
-// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from "@sentry/nextjs";
-
-Sentry.init({
- dsn: "https://e6affd573a77066f0aed8f3226887a1a@o4505325459210240.ingest.sentry.io/4506712120623104",
-
- enableTracing: false,
-
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-});
diff --git a/apps/abstraxion-dashboard/sentry.server.config.ts b/apps/abstraxion-dashboard/sentry.server.config.ts
deleted file mode 100644
index 96c792ec..00000000
--- a/apps/abstraxion-dashboard/sentry.server.config.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-// This file configures the initialization of Sentry on the server.
-// The config you add here will be used whenever the server handles a request.
-// https://docs.sentry.io/platforms/javascript/guides/nextjs/
-
-import * as Sentry from "@sentry/nextjs";
-
-Sentry.init({
- dsn: "https://e6affd573a77066f0aed8f3226887a1a@o4505325459210240.ingest.sentry.io/4506712120623104",
-
- enableTracing: false,
-
- // Setting this option to true will print useful information to the console while you're setting up Sentry.
- debug: false,
-});
diff --git a/apps/abstraxion-dashboard/tailwind.config.ts b/apps/abstraxion-dashboard/tailwind.config.ts
deleted file mode 100644
index bbd6763d..00000000
--- a/apps/abstraxion-dashboard/tailwind.config.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import type { Config } from "tailwindcss";
-import sharedConfig from "@burnt-labs/tailwind-config/tailwind.config.ts";
-
-const config: Config = {
- content: ["./components/**/*.{js,ts,jsx,tsx,mdx}", "./app/page.tsx"],
- theme: {
- extend: {
- backgroundImage: {
- "overview-bg":
- "url('/apps/abstraxion-dashboard/public/overviewBackground.png')",
- },
- colors: {
- primary: "#000",
- mainnet: "#CAF033",
- "mainnet-bg": "rgba(4, 199, 0, 0.2)",
- testnet: "#FFAA4A",
- "testnet-bg": "rgba(255, 170, 74, 0.2)",
- inactive: "#BDBDBD",
- },
- flexGrow: {
- "2": "2",
- },
- fontFamily: {
- akkuratLL: ["var(--font-akkuratLL)"],
- },
- typography: {
- navigation: {
- css: {
- fontFamily: "akkuratLL",
- fontSize: "1.2rem",
- fontWeight: "400",
- lineHeight: "1.4rem",
- letterSpacing: "0.1rem",
- textTransform: "uppercase",
- },
- },
- },
- },
- },
- plugins: [],
- prefix: "ui-",
- presets: [sharedConfig],
-};
-export default config;
diff --git a/apps/abstraxion-dashboard/tsconfig.json b/apps/abstraxion-dashboard/tsconfig.json
deleted file mode 100644
index 4202bb3a..00000000
--- a/apps/abstraxion-dashboard/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "extends": "@burnt-labs/tsconfig/nextjs.json",
- "compilerOptions": {
- "plugins": [{ "name": "next" }],
- "paths": {
- "@/*": [
- "./*"
- ]
- }
- },
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
-}
diff --git a/apps/abstraxion-dashboard/types/index.ts b/apps/abstraxion-dashboard/types/index.ts
deleted file mode 100644
index 90bc9faf..00000000
--- a/apps/abstraxion-dashboard/types/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-export type authenticatorTypes = "SECP256K1" | "ETHWALLET" | "JWT";
-
-export interface AuthenticatorNodes {
- __typename: string;
- id: string;
- type: string;
- authenticator: string;
- authenticatorIndex: number;
- version: string;
-}
-
-export interface AccountAuthenticators {
- __typename: string;
- nodes: AuthenticatorNodes[];
-}
-
-export interface AbstraxionAccount {
- __typename: string;
- id: string; // bech32Address
- authenticators: AccountAuthenticators;
- currentAuthenticatorIndex: number;
-}
-
-export interface useAbstraxionAccountProps {
- data?: AbstraxionAccount;
- isConnected: boolean;
- isConnecting?: boolean;
- isReconnecting?: boolean;
-}
diff --git a/apps/abstraxion-dashboard/utils/index.ts b/apps/abstraxion-dashboard/utils/index.ts
deleted file mode 100644
index 2354b68b..00000000
--- a/apps/abstraxion-dashboard/utils/index.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-export function truncateAddress(address: string | undefined) {
- if (!address) {
- return "";
- }
- return (
- address.slice(0, 8) +
- "..." +
- address.slice(address.length - 4, address.length)
- );
-}
-
-export function getHumanReadablePubkey(pubkey: Uint8Array | undefined) {
- if (!pubkey) {
- return "";
- }
- const pubUint8Array = new Uint8Array(Object.values(pubkey));
- const pubBase64 = btoa(String.fromCharCode.apply(null, pubUint8Array));
- return pubBase64;
-}
-
-export function encodeHex(bytes: any) {
- return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
-}
-
-export function getEnvNumberOrThrow(key: string, value?: string): number {
- const val = Number(value);
- if (isNaN(val)) {
- throw new Error(`Environment variable ${key} must be defined`);
- }
-
- return val;
-}
-
-export function getEnvStringOrThrow(key: string, value?: string): string {
- if (!value) {
- throw new Error(`Environment variable ${key} must be defined`);
- }
-
- return value;
-}
-
-export function removeTrailingDigits(number: number) {
- return number / 1000000;
-}
-
-export function getCommaSeperatedNumber(number: number) {
- const millionthPart = removeTrailingDigits(number);
- return millionthPart.toLocaleString("en-US", {
- minimumFractionDigits: Math.max(
- 0,
- Math.ceil(
- Math.abs(millionthPart) < 1 ? Math.log10(Math.abs(millionthPart)) : 0,
- ),
- ),
- maximumFractionDigits: 6,
- });
-}
-
-export function formatBalance(
- number: number,
- locale: string = "en-US",
- currency: string = "USD",
-) {
- const millionthPart = removeTrailingDigits(number);
- return new Intl.NumberFormat(locale, {
- style: "currency",
- currency,
- currencyDisplay: "code",
- })
- .format(millionthPart)
- .replace(currency, "")
- .trim();
-}
-
-export function isValidWalletAddress(address: string) {
- if (address.length !== 43 && address.length !== 63) {
- return false;
- }
-
- const validCharacters = /^[0-9a-zA-Z]+$/;
- if (!validCharacters.test(address)) {
- return false;
- }
-
- if (!address.startsWith("xion")) {
- return false;
- }
-
- return true;
-}
diff --git a/apps/abstraxion-dashboard/utils/queries.ts b/apps/abstraxion-dashboard/utils/queries.ts
deleted file mode 100644
index a5a42b20..00000000
--- a/apps/abstraxion-dashboard/utils/queries.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import { gql } from "@apollo/client";
-
-export const SMART_ACCOUNT_FRAGMENT = gql`
- fragment SmartAccountFragment on SmartAccountAuthenticator {
- id
- type
- authenticator
- authenticatorIndex
- version
- }
-`;
-
-export const AllSmartWalletQuery = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($authenticator: String!) {
- smartAccounts(
- filter: {
- authenticators: { some: { authenticator: { equalTo: $authenticator } } }
- }
- ) {
- nodes {
- id
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const SingleSmartWalletQuery = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!) {
- smartAccount(id: $id) {
- id
- latestAuthenticatorId
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByAccountId = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!) {
- smartAccounts(filter: { id: { equalTo: $id } }) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByIdAndAuthenticator = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!, $authenticator: String!) {
- smartAccounts(
- filter: {
- id: { equalTo: $id }
- authenticators: { some: { authenticator: { equalTo: $authenticator } } }
- }
- ) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByIdAndType = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!, $type: String!) {
- smartAccounts(
- filter: {
- id: { equalTo: $id }
- authenticators: { some: { type: { equalTo: $type } } }
- }
- ) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByIdAndTypeAndAuthenticator = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!, $type: String!, $authenticator: String!) {
- smartAccounts(
- filter: {
- id: { equalTo: $id }
- authenticators: {
- some: {
- authenticator: { equalTo: $authenticator }
- type: { equalTo: $type }
- }
- }
- }
- ) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
diff --git a/apps/abstraxion-settings/.env b/apps/abstraxion-settings/.env
deleted file mode 100644
index 3fa96570..00000000
--- a/apps/abstraxion-settings/.env
+++ /dev/null
@@ -1,7 +0,0 @@
-# DEFAULTS
-VITE_DEPLOYMENT_ENV="testnet"
-VITE_DEFAULT_API_URL="https://aa.xion-testnet-1.burnt.com"
-VITE_DEFAULT_INDEXER_URL="https://api.subquery.network/sq/burnt-labs/xion-indexer"
-VITE_DEFAULT_STYTCH_PUBLIC_TOKEN="public-token-live-87901ec3-ef19-48ca-b3f4-842be750181b"
-VITE_DEFAULT_CHAIN_INFO="{"rpc":"https://testnet-rpc.xion-api.com:443","rest":"https://testnet-api.xion-api.com:443","chainId":"xion-testnet-1","chainName":"Xion Testnet","bip44":{"coinType":118},"bech32Config":{"bech32PrefixAccAddr":"xion","bech32PrefixValAddr":"xionvaloper","bech32PrefixValPub":"xionvaloperpub","bech32PrefixAccPub":"xionpub","bech32PrefixConsAddr":"xionvalcons","bech32PrefixConsPub":"xionvalconspub"},"stakeCurrency":{"coinDenom":"XION","coinMinimalDenom":"uxion","coinDecimals":6,"gasPriceStep":{"low":0.01,"average":0.025,"high":0.03}},"currencies":[{"coinDenom":"XION","coinMinimalDenom":"uxion","coinDecimals":6,"gasPriceStep":{"low":0.01,"average":0.025,"high":0.03}}],"feeCurrencies":[{"coinDenom":"XION","coinMinimalDenom":"uxion","coinDecimals":6,"gasPriceStep":{"low":0.01,"average":0.025,"high":0.03}}],"features":["cosmwasm"]}"
-VITE_OKX_FLAG="false"
\ No newline at end of file
diff --git a/apps/abstraxion-settings/.gitignore b/apps/abstraxion-settings/.gitignore
deleted file mode 100644
index a547bf36..00000000
--- a/apps/abstraxion-settings/.gitignore
+++ /dev/null
@@ -1,24 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
-node_modules
-dist
-dist-ssr
-*.local
-
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
-.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
diff --git a/apps/abstraxion-settings/CHANGELOG.md b/apps/abstraxion-settings/CHANGELOG.md
deleted file mode 100644
index b1f8daff..00000000
--- a/apps/abstraxion-settings/CHANGELOG.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# abstraxion-settings
-
-## 1.1.0-alpha.6
-
-### Minor Changes
-
-- [#198](https://github.com/burnt-labs/xion.js/pull/198) [`e9dd176`](https://github.com/burnt-labs/xion.js/commit/e9dd1766dbfe4994948e028b51c07eb6dd52cced) Thanks [@BurntVal](https://github.com/BurntVal)! - Update chainInfo vars across monorepo. Please view the abstraxion package readme for more info on opting into mainnet
-
-### Patch Changes
-
-- Updated dependencies [[`e9dd176`](https://github.com/burnt-labs/xion.js/commit/e9dd1766dbfe4994948e028b51c07eb6dd52cced)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.47
- - @burnt-labs/constants@0.1.0-alpha.10
-
-## 1.1.0-alpha.5
-
-### Minor Changes
-
-- [#183](https://github.com/burnt-labs/xion.js/pull/183) [`750803b`](https://github.com/burnt-labs/xion.js/commit/750803b1a4235334322262d1e932f81d3ea13060) Thanks [@BurntVal](https://github.com/BurntVal)! - General cleanup and build optimization
-
-- [#185](https://github.com/burnt-labs/xion.js/pull/185) [`b1a90e9`](https://github.com/burnt-labs/xion.js/commit/b1a90e956180d3262c69122dacd3cdfee55d5afb) Thanks [@BurntVal](https://github.com/BurntVal)! - revert to explicit flow for creating initial meta account
-
-### Patch Changes
-
-- Updated dependencies [[`bcc35c9`](https://github.com/burnt-labs/xion.js/commit/bcc35c9ed8faf2edb6f1e19f06e8b8ced9530067), [`750803b`](https://github.com/burnt-labs/xion.js/commit/750803b1a4235334322262d1e932f81d3ea13060), [`33493c5`](https://github.com/burnt-labs/xion.js/commit/33493c5a33224d59e517ddd84aec3e35d1f5c291), [`b618cc8`](https://github.com/burnt-labs/xion.js/commit/b618cc8edc57463925e3e8945dd2c5ee55d87879), [`a0b5031`](https://github.com/burnt-labs/xion.js/commit/a0b5031f8766369b00562387b692450f396a9d7f)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.46
- - @burnt-labs/constants@0.1.0-alpha.9
- - @burnt-labs/signers@0.1.0-alpha.11
- - @burnt-labs/ui@0.1.0-alpha.13
-
-## 1.1.0-alpha.4
-
-### Patch Changes
-
-- Updated dependencies [[`a80ed9c`](https://github.com/burnt-labs/xion.js/commit/a80ed9c32f0c5c91a8ec7aacfba5bddddfc43f84), [`b3ecf24`](https://github.com/burnt-labs/xion.js/commit/b3ecf24cf8c240c2b0c721ed803decca9f6a91a4)]:
- - @burnt-labs/ui@0.1.0-alpha.12
- - @burnt-labs/abstraxion@1.0.0-alpha.45
-
-## 1.1.0-alpha.3
-
-### Minor Changes
-
-- [#167](https://github.com/burnt-labs/xion.js/pull/167) [`1cddf5b`](https://github.com/burnt-labs/xion.js/commit/1cddf5bd9c91393b93e177d8f625ab00d3d284c5) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Added mobile UI fixes for dashboard
-
-### Patch Changes
-
-- Updated dependencies [[`2edf674`](https://github.com/burnt-labs/xion.js/commit/2edf674428695388127a24c93cd28e815db43425), [`210bac1`](https://github.com/burnt-labs/xion.js/commit/210bac17b576cba3b470084aed6b07c991a91453), [`e53a5bd`](https://github.com/burnt-labs/xion.js/commit/e53a5bd382481001f1968d3314c858de0fe2b5ea), [`1cddf5b`](https://github.com/burnt-labs/xion.js/commit/1cddf5bd9c91393b93e177d8f625ab00d3d284c5), [`f018dc1`](https://github.com/burnt-labs/xion.js/commit/f018dc124615bbf467abbea35cb656852233593d)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.44
- - @burnt-labs/ui@0.1.0-alpha.11
-
-## 1.1.0-alpha.2
-
-### Patch Changes
-
-- Updated dependencies [[`aa57bfd`](https://github.com/burnt-labs/xion.js/commit/aa57bfdd0ed1651b652b2a9a39a2eeb54ab25d11)]:
- - @burnt-labs/abstraxion@1.0.0-alpha.43
-
-## 1.1.0-alpha.1
-
-### Patch Changes
-
-- Updated dependencies [[`bed091d`](https://github.com/burnt-labs/xion.js/commit/bed091d74557457efb681734a27b46d97cdefbbe), [`deb1a8d`](https://github.com/burnt-labs/xion.js/commit/deb1a8dae04fe878a56e9e17d090b94c56069f44)]:
- - @burnt-labs/signers@0.1.0-alpha.10
- - @burnt-labs/ui@0.1.0-alpha.10
- - @burnt-labs/abstraxion@1.0.0-alpha.42
-
-## 1.1.0-alpha.0
-
-### Minor Changes
-
-- [#151](https://github.com/burnt-labs/xion.js/pull/151) [`958f66a`](https://github.com/burnt-labs/xion.js/commit/958f66ab7b82bdbb8a591d16b2cc399859e8508b) Thanks [@BurntNerve](https://github.com/BurntNerve)! - Broke out grant flow to unique app.
-
-### Patch Changes
-
-- Updated dependencies [[`958f66a`](https://github.com/burnt-labs/xion.js/commit/958f66ab7b82bdbb8a591d16b2cc399859e8508b), [`c1ed608`](https://github.com/burnt-labs/xion.js/commit/c1ed60803731b13b831169ed675049e7a257aeeb), [`4c230d8`](https://github.com/burnt-labs/xion.js/commit/4c230d82f20b934acd77ea102e45a29ad3e148ae), [`f09cc0b`](https://github.com/burnt-labs/xion.js/commit/f09cc0b7167e41673f7aeb0ce317896e2e4b5582), [`8ec1c5b`](https://github.com/burnt-labs/xion.js/commit/8ec1c5b752f8136c9e6ba7fcfec16e85542d7c21)]:
- - @burnt-labs/constants@0.1.0-alpha.8
- - @burnt-labs/ui@0.1.0-alpha.9
- - @burnt-labs/abstraxion@1.0.0-alpha.41
diff --git a/apps/abstraxion-settings/index.html b/apps/abstraxion-settings/index.html
deleted file mode 100644
index f9fa5bcd..00000000
--- a/apps/abstraxion-settings/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
- Abstraxion Settings
-
-
-
-
-
-
diff --git a/apps/abstraxion-settings/package-lock.json b/apps/abstraxion-settings/package-lock.json
deleted file mode 100644
index 6d04f4a0..00000000
--- a/apps/abstraxion-settings/package-lock.json
+++ /dev/null
@@ -1,4833 +0,0 @@
-{
- "name": "abstraxion-settings",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "dependencies": {
- "preact": "^10.13.1"
- },
- "devDependencies": {
- "@preact/preset-vite": "^2.5.0",
- "eslint": "^8.57.0",
- "eslint-config-preact": "^1.3.0",
- "typescript": "^5.4.3",
- "vite": "^4.3.2"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
- "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.24.2",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.24.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
- "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.24.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz",
- "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.2",
- "@babel/generator": "^7.24.4",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.24.4",
- "@babel/parser": "^7.24.4",
- "@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.1",
- "@babel/types": "^7.24.0",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/eslint-parser": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz",
- "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==",
- "dev": true,
- "dependencies": {
- "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
- "eslint-visitor-keys": "^2.1.0",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.11.0",
- "eslint": "^7.5.0 || ^8.0.0"
- }
- },
- "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.24.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz",
- "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.24.0",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
- "browserslist": "^4.22.2",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.24.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
- "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.24.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
- "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
- "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.24.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz",
- "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.24.0",
- "@babel/traverse": "^7.24.1",
- "@babel/types": "^7.24.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
- "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.24.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz",
- "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-decorators": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz",
- "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz",
- "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
- "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
- "dev": true,
- "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"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
- "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
- "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.24.0",
- "@babel/types": "^7.24.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz",
- "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.24.1",
- "@babel/generator": "^7.24.1",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.24.1",
- "@babel/types": "^7.24.0",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
- "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
- "dev": true,
- "dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
- "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
- "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
- "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
- "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
- "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
- "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
- "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
- "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
- "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
- "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
- "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
- "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
- "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
- "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
- "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
- "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
- "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
- "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
- "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
- "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
- "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
- "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "dev": true
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@mdn/browser-compat-data": {
- "version": "5.5.19",
- "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.5.19.tgz",
- "integrity": "sha512-ntKBZtwWCy4XvJosdTJKqIMdmzgbxjopfoiMxgpzsml3dXqA7MIHCE/amidfQc06a6KvmMrpiVuYHIBt2feDog==",
- "dev": true
- },
- "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
- "version": "5.1.1-v1",
- "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
- "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
- "dev": true,
- "dependencies": {
- "eslint-scope": "5.1.1"
- }
- },
- "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@preact/preset-vite": {
- "version": "2.8.2",
- "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.8.2.tgz",
- "integrity": "sha512-m3tl+M8IO8jgiHnk+7LSTFl8axdPXloewi7iGVLdmCwf34XOzEUur0bZVewW4DUbUipFjTS2CXu27+5f/oexBA==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.22.15",
- "@babel/plugin-transform-react-jsx-development": "^7.22.5",
- "@prefresh/vite": "^2.4.1",
- "@rollup/pluginutils": "^4.1.1",
- "babel-plugin-transform-hook-names": "^1.0.2",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "magic-string": "0.30.5",
- "node-html-parser": "^6.1.10",
- "resolve": "^1.22.8",
- "source-map": "^0.7.4",
- "stack-trace": "^1.0.0-pre2"
- },
- "peerDependencies": {
- "@babel/core": "7.x",
- "vite": "2.x || 3.x || 4.x || 5.x"
- }
- },
- "node_modules/@prefresh/babel-plugin": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.5.1.tgz",
- "integrity": "sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==",
- "dev": true
- },
- "node_modules/@prefresh/core": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.5.2.tgz",
- "integrity": "sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==",
- "dev": true,
- "peerDependencies": {
- "preact": "^10.0.0"
- }
- },
- "node_modules/@prefresh/utils": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.2.0.tgz",
- "integrity": "sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==",
- "dev": true
- },
- "node_modules/@prefresh/vite": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.4.5.tgz",
- "integrity": "sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.22.1",
- "@prefresh/babel-plugin": "0.5.1",
- "@prefresh/core": "^1.5.1",
- "@prefresh/utils": "^1.2.0",
- "@rollup/pluginutils": "^4.2.1"
- },
- "peerDependencies": {
- "preact": "^10.4.0",
- "vite": ">=2.0.0"
- }
- },
- "node_modules/@rollup/pluginutils": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
- "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
- "dev": true,
- "dependencies": {
- "estree-walker": "^2.0.1",
- "picomatch": "^2.2.2"
- },
- "engines": {
- "node": ">= 8.0.0"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
- },
- "node_modules/@typescript-eslint/experimental-utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz",
- "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/utils": "5.62.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
- "dev": true,
- "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"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
- "dev": true,
- "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"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
- },
- "node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "is-array-buffer": "^3.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-includes": {
- "version": "3.1.8",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
- "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array.prototype.findlast": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
- "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
- "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.toreversed": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
- "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- }
- },
- "node_modules/array.prototype.tosorted": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz",
- "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.1.0",
- "es-shim-unscopables": "^1.0.2"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.2.1",
- "get-intrinsic": "^1.2.3",
- "is-array-buffer": "^3.0.4",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/ast-metadata-inferer": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.0.tgz",
- "integrity": "sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==",
- "dev": true,
- "dependencies": {
- "@mdn/browser-compat-data": "^5.2.34"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dev": true,
- "dependencies": {
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/babel-plugin-transform-hook-names": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz",
- "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==",
- "dev": true,
- "peerDependencies": {
- "@babel/core": "^7.12.10"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001605",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz",
- "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ]
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/data-view-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
- "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
- "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
- "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dev": true,
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.726",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.726.tgz",
- "integrity": "sha512-xtjfBXn53RORwkbyKvDfTajtnTp0OJoPOIBzXvkNbb7+YYvCHJflba3L7Txyx/6Fov3ov2bGPr/n5MTixmPhdQ==",
- "dev": true
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.23.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
- "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "arraybuffer.prototype.slice": "^1.0.3",
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "data-view-buffer": "^1.0.1",
- "data-view-byte-length": "^1.0.1",
- "data-view-byte-offset": "^1.0.0",
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-set-tostringtag": "^2.0.3",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.4",
- "get-symbol-description": "^1.0.2",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.2",
- "internal-slot": "^1.0.7",
- "is-array-buffer": "^3.0.4",
- "is-callable": "^1.2.7",
- "is-data-view": "^1.0.1",
- "is-negative-zero": "^2.0.3",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.3",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.13",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.13.1",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.5",
- "regexp.prototype.flags": "^1.5.2",
- "safe-array-concat": "^1.1.2",
- "safe-regex-test": "^1.0.3",
- "string.prototype.trim": "^1.2.9",
- "string.prototype.trimend": "^1.0.8",
- "string.prototype.trimstart": "^1.0.8",
- "typed-array-buffer": "^1.0.2",
- "typed-array-byte-length": "^1.0.1",
- "typed-array-byte-offset": "^1.0.2",
- "typed-array-length": "^1.0.6",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.15"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-iterator-helpers": {
- "version": "1.0.18",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz",
- "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-errors": "^1.3.0",
- "es-set-tostringtag": "^2.0.3",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
- "iterator.prototype": "^1.1.2",
- "safe-array-concat": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-object-atoms": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
- "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
- "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
- "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/esbuild": {
- "version": "0.18.20",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
- "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.18.20",
- "@esbuild/android-arm64": "0.18.20",
- "@esbuild/android-x64": "0.18.20",
- "@esbuild/darwin-arm64": "0.18.20",
- "@esbuild/darwin-x64": "0.18.20",
- "@esbuild/freebsd-arm64": "0.18.20",
- "@esbuild/freebsd-x64": "0.18.20",
- "@esbuild/linux-arm": "0.18.20",
- "@esbuild/linux-arm64": "0.18.20",
- "@esbuild/linux-ia32": "0.18.20",
- "@esbuild/linux-loong64": "0.18.20",
- "@esbuild/linux-mips64el": "0.18.20",
- "@esbuild/linux-ppc64": "0.18.20",
- "@esbuild/linux-riscv64": "0.18.20",
- "@esbuild/linux-s390x": "0.18.20",
- "@esbuild/linux-x64": "0.18.20",
- "@esbuild/netbsd-x64": "0.18.20",
- "@esbuild/openbsd-x64": "0.18.20",
- "@esbuild/sunos-x64": "0.18.20",
- "@esbuild/win32-arm64": "0.18.20",
- "@esbuild/win32-ia32": "0.18.20",
- "@esbuild/win32-x64": "0.18.20"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.0",
- "@humanwhocodes/config-array": "^0.11.14",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-preact": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-config-preact/-/eslint-config-preact-1.3.0.tgz",
- "integrity": "sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.13.16",
- "@babel/eslint-parser": "^7.13.14",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-decorators": "^7.12.13",
- "@babel/plugin-syntax-jsx": "^7.12.13",
- "eslint-plugin-compat": "^4.0.0",
- "eslint-plugin-jest": "^25.2.4",
- "eslint-plugin-react": "^7.27.0",
- "eslint-plugin-react-hooks": "^4.3.0"
- },
- "peerDependencies": {
- "eslint": "6.x || 7.x || 8.x"
- }
- },
- "node_modules/eslint-plugin-compat": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.2.0.tgz",
- "integrity": "sha512-RDKSYD0maWy5r7zb5cWQS+uSPc26mgOzdORJ8hxILmWM7S/Ncwky7BcAtXVY5iRbKjBdHsWU8Yg7hfoZjtkv7w==",
- "dev": true,
- "dependencies": {
- "@mdn/browser-compat-data": "^5.3.13",
- "ast-metadata-inferer": "^0.8.0",
- "browserslist": "^4.21.10",
- "caniuse-lite": "^1.0.30001524",
- "find-up": "^5.0.0",
- "lodash.memoize": "^4.1.2",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">=14.x"
- },
- "peerDependencies": {
- "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/eslint-plugin-compat/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-compat/node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint-plugin-compat/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/eslint-plugin-jest": {
- "version": "25.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz",
- "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/experimental-utils": "^5.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- },
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "@typescript-eslint/eslint-plugin": {
- "optional": true
- },
- "jest": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-react": {
- "version": "7.34.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz",
- "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlast": "^1.2.4",
- "array.prototype.flatmap": "^1.3.2",
- "array.prototype.toreversed": "^1.1.2",
- "array.prototype.tosorted": "^1.1.3",
- "doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.17",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.7",
- "object.fromentries": "^2.0.7",
- "object.hasown": "^1.1.3",
- "object.values": "^1.1.7",
- "prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.5",
- "semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.10"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
- "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/eslint/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/eslint/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
- "dev": true
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
- "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/internal-slot": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-async-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
- "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dev": true,
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-view": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
- "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
- "dev": true,
- "dependencies": {
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-finalizationregistry": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
- "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
- "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-set": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
- "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
- "dev": true,
- "dependencies": {
- "which-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakmap": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
- "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakset": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
- "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/iterator.prototype": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
- "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.2.1",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "reflect.getprototypeof": "^1.0.4",
- "set-function-name": "^2.0.1"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsx-ast-utils": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "object.assign": "^4.1.4",
- "object.values": "^1.1.6"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/kolorist": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
- "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
- "dev": true
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash.memoize": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
- "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dev": true,
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/magic-string": {
- "version": "0.30.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
- "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
- "dev": true,
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/node-html-parser": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
- "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
- "dev": true,
- "dependencies": {
- "css-select": "^5.1.0",
- "he": "1.2.0"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.entries": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
- "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.fromentries": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
- "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.hasown": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz",
- "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.values": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
- "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
- "dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/possible-typed-array-names": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/preact": {
- "version": "10.20.1",
- "resolved": "https://registry.npmjs.org/preact/-/preact-10.20.1.tgz",
- "integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/preact"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
- },
- "node_modules/reflect.getprototypeof": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
- "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.1",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "globalthis": "^1.0.3",
- "which-builtin-type": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
- "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "define-properties": "^1.2.1",
- "es-errors": "^1.3.0",
- "set-function-name": "^2.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rollup": {
- "version": "3.29.4",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
- "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
- "dev": true,
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=14.18.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
- "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
- "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-regex": "^1.1.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/set-function-length": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-function-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
- "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
- "dev": true,
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stack-trace": {
- "version": "1.0.0-pre2",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz",
- "integrity": "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==",
- "dev": true,
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/string.prototype.matchall": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
- "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
- "regexp.prototype.flags": "^1.5.2",
- "set-function-name": "^2.0.2",
- "side-channel": "^1.0.6"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
- "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
- "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
- "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typed-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
- "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
- "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
- "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
- "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13",
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typescript": {
- "version": "5.4.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
- "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/vite": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz",
- "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==",
- "dev": true,
- "dependencies": {
- "esbuild": "^0.18.10",
- "postcss": "^8.4.27",
- "rollup": "^3.27.1"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- },
- "peerDependencies": {
- "@types/node": ">= 14",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-builtin-type": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
- "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
- "dev": true,
- "dependencies": {
- "function.prototype.name": "^1.1.5",
- "has-tostringtag": "^1.0.0",
- "is-async-function": "^2.0.0",
- "is-date-object": "^1.0.5",
- "is-finalizationregistry": "^1.0.2",
- "is-generator-function": "^1.0.10",
- "is-regex": "^1.1.4",
- "is-weakref": "^1.0.2",
- "isarray": "^2.0.5",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.9"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-collection": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
- "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
- "dev": true,
- "dependencies": {
- "is-map": "^2.0.3",
- "is-set": "^2.0.3",
- "is-weakmap": "^2.0.2",
- "is-weakset": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/apps/abstraxion-settings/package.json b/apps/abstraxion-settings/package.json
deleted file mode 100644
index 51b8445d..00000000
--- a/apps/abstraxion-settings/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "abstraxion-settings",
- "version": "1.1.0-alpha.6",
- "private": true,
- "type": "module",
- "scripts": {
- "dev": "vite --port 3002",
- "build": "vite build",
- "preview": "vite preview"
- },
- "dependencies": {
- "@apollo/client": "^3.8.8",
- "@burnt-labs/abstraxion": "workspace:*",
- "@burnt-labs/constants": "workspace:*",
- "@burnt-labs/signers": "workspace:*",
- "@burnt-labs/ui": "workspace:*",
- "@cosmjs/proto-signing": "^0.32.2",
- "@cosmjs/stargate": "^0.32.2",
- "@stytch/react": "^16.0.0",
- "@stytch/vanilla-js": "^4.7.0",
- "cosmjs-types": "^0.9.0",
- "graz": "^0.0.51",
- "jose": "^5.1.3",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@burnt-labs/tailwind-config": "workspace:*",
- "@types/node": "^20",
- "@vitejs/plugin-react": "^4.2.1",
- "autoprefixer": "^10.4.13",
- "buffer": "^6.0.3",
- "crypto-browserify": "^3.12.0",
- "postcss": "^8.4.20",
- "stream-browserify": "^3.0.0",
- "tailwindcss": "^3.2.4",
- "typescript": "^5.2.2",
- "vite": "^4.3.2",
- "vite-plugin-node-polyfills": "^0.17.0",
- "vm-browserify": "^1.1.2"
- }
-}
diff --git a/apps/abstraxion-settings/postcss.config.js b/apps/abstraxion-settings/postcss.config.js
deleted file mode 100644
index 2aa7205d..00000000
--- a/apps/abstraxion-settings/postcss.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export default {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-};
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Black.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Black.woff
deleted file mode 100644
index 0d002311..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Black.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Black.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Black.woff2
deleted file mode 100644
index a261853d..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Black.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BlackItalic.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BlackItalic.woff
deleted file mode 100644
index af9a67fe..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BlackItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BlackItalic.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BlackItalic.woff2
deleted file mode 100644
index 9e55f640..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BlackItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Bold.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Bold.woff
deleted file mode 100644
index 47dcd6d0..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Bold.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Bold.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Bold.woff2
deleted file mode 100644
index d81fdd60..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Bold.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BoldItalic.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BoldItalic.woff
deleted file mode 100644
index bd9d5835..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BoldItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BoldItalic.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BoldItalic.woff2
deleted file mode 100644
index af942c50..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-BoldItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Italic.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Italic.woff
deleted file mode 100644
index f16ee04e..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Italic.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Italic.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Italic.woff2
deleted file mode 100644
index eef7c973..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Italic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Light.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Light.woff
deleted file mode 100644
index e6d128aa..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Light.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Light.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Light.woff2
deleted file mode 100644
index f96503e0..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Light.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-LightItalic.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-LightItalic.woff
deleted file mode 100644
index e57ff531..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-LightItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-LightItalic.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-LightItalic.woff2
deleted file mode 100644
index 6615c0e1..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-LightItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Regular.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Regular.woff
deleted file mode 100644
index 46351efb..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Regular.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Regular.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Regular.woff2
deleted file mode 100644
index 1830321d..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Regular.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Thin.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Thin.woff
deleted file mode 100644
index 20f18bc5..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Thin.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Thin.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Thin.woff2
deleted file mode 100644
index 8ae41429..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-Thin.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-ThinItalic.woff b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-ThinItalic.woff
deleted file mode 100644
index c0022db9..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-ThinItalic.woff and /dev/null differ
diff --git a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-ThinItalic.woff2 b/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-ThinItalic.woff2
deleted file mode 100644
index 783da3de..00000000
Binary files a/apps/abstraxion-settings/public/fonts/AkkuratLLWeb-ThinItalic.woff2 and /dev/null differ
diff --git a/apps/abstraxion-settings/public/icon.svg b/apps/abstraxion-settings/public/icon.svg
deleted file mode 100644
index d96f9957..00000000
--- a/apps/abstraxion-settings/public/icon.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/apps/abstraxion-settings/src/abstraxion-types.d.ts b/apps/abstraxion-settings/src/abstraxion-types.d.ts
deleted file mode 100644
index 17f6253b..00000000
--- a/apps/abstraxion-settings/src/abstraxion-types.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-interface Window {
- ethereum: any;
- keplr: any;
- okxwallet: any;
-}
diff --git a/apps/abstraxion-settings/src/assets/burntAvatarCircle.png b/apps/abstraxion-settings/src/assets/burntAvatarCircle.png
deleted file mode 100644
index 5b1f34c1..00000000
Binary files a/apps/abstraxion-settings/src/assets/burntAvatarCircle.png and /dev/null differ
diff --git a/apps/abstraxion-settings/src/assets/logo.png b/apps/abstraxion-settings/src/assets/logo.png
deleted file mode 100644
index 5518dfe8..00000000
Binary files a/apps/abstraxion-settings/src/assets/logo.png and /dev/null differ
diff --git a/apps/abstraxion-settings/src/assets/okx-logo.png b/apps/abstraxion-settings/src/assets/okx-logo.png
deleted file mode 100644
index 41bdb766..00000000
Binary files a/apps/abstraxion-settings/src/assets/okx-logo.png and /dev/null differ
diff --git a/apps/abstraxion-settings/src/assets/xion-bg-blur.png b/apps/abstraxion-settings/src/assets/xion-bg-blur.png
deleted file mode 100644
index 8f817d55..00000000
Binary files a/apps/abstraxion-settings/src/assets/xion-bg-blur.png and /dev/null differ
diff --git a/apps/abstraxion-settings/src/components/Abstraxion/index.tsx b/apps/abstraxion-settings/src/components/Abstraxion/index.tsx
deleted file mode 100644
index 17374c69..00000000
--- a/apps/abstraxion-settings/src/components/Abstraxion/index.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import { useContext, useEffect } from "react";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { Dialog, DialogContent } from "@burnt-labs/ui";
-import { AbstraxionSignin } from "../AbstraxionSignin";
-import { useAbstraxionAccount } from "../../hooks/useAbstraxionAccount";
-import { AbstraxionWallets } from "../AbstraxionWallets";
-import { ErrorDisplay } from "../ErrorDisplay";
-import { AbstraxionGrant } from "../AbstraxionGrant";
-import { useQueryParams } from "../../hooks/useQueryParams";
-import xionLogo from "../../assets/logo.png";
-
-export interface ModalProps {
- onClose: VoidFunction;
- isOpen: boolean;
-}
-
-export const Abstraxion = ({ isOpen, onClose }: ModalProps) => {
- const { contracts, stake, bank, grantee } = useQueryParams([
- "contracts",
- "stake",
- "bank",
- "grantee",
- ]);
-
- const { abstraxionError, isMainnet } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const { isConnected, data: account } = useAbstraxionAccount();
-
- let bankArray;
- try {
- bankArray = JSON.parse(bank || "");
- } catch (e) {
- // If the bank is not a valid JSON, we split it by comma. Dapp using old version of the library.
- bankArray = [];
- }
-
- let contractsArray;
- try {
- contractsArray = JSON.parse(contracts || "");
- } catch (e) {
- // If the contracts are not a valid JSON, we split them by comma. Dapp using old version of the library.
- contractsArray = contracts?.split(",") || [];
- }
-
- useEffect(() => {
- const closeOnEscKey = (e: any) => (e.key === "Escape" ? onClose() : null);
- document.addEventListener("keydown", closeOnEscKey);
- return () => {
- document.removeEventListener("keydown", closeOnEscKey);
- };
- }, [onClose]);
-
- if (!isOpen) return null;
-
- return (
- <>
-
- {/* TOS Footer */}
- {!isConnected && (
-
-
-
- By continuing, you agree to and acknowledge that you have read and
- understand the
-
-
- Disclaimer
-
-
.
-
-
-
- Powered by
-
-
-
- {isMainnet ? "MAINNET" : "TESTNET"}
-
-
-
-
-
-
-
- )}
- >
- );
-};
-
-export const AbstraxionProvider = ({
- children,
-}: {
- children: React.ReactNode;
-}) => {
- return { children };
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionContext/index.tsx b/apps/abstraxion-settings/src/components/AbstraxionContext/index.tsx
deleted file mode 100644
index 7ba0a06b..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionContext/index.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { createContext, useState } from "react";
-import { ChainInfo } from "@burnt-labs/constants";
-
-import { getEnvStringOrThrow } from "../../utils";
-
-type ConnectionType = "stytch" | "graz" | "metamask" | "okx" | "none";
-type Dispatch = (value: A) => void;
-type SetStateAction = S | ((prevState: S) => S);
-
-export interface AbstraxionContextProps {
- connectionType: ConnectionType;
- setConnectionType: Dispatch>;
- abstractAccount: any; // TODO: Properly define interface here
- setAbstractAccount: Dispatch;
- abstraxionError: string;
- setAbstraxionError: Dispatch>;
- apiUrl: string;
- chainInfo: ChainInfo;
- isMainnet: boolean;
- isOpen: boolean;
- setIsOpen: Dispatch>;
-}
-
-export const AbstraxionContext = createContext(
- {} as AbstraxionContextProps,
-);
-
-export const AbstraxionContextProvider = ({
- children,
-}: {
- children: React.ReactNode;
-}) => {
- const [connectionType, setConnectionType] = useState("none");
- const [abstractAccount, setAbstractAccount] = useState(
- undefined,
- );
- const [abstraxionError, setAbstraxionError] = useState("");
- const [isOpen, setIsOpen] = useState(false);
-
- const serializedChainInfo = getEnvStringOrThrow(
- "VITE_DEFAULT_CHAIN_INFO",
- import.meta.env.VITE_DEFAULT_CHAIN_INFO,
- );
- const chainInfo = JSON.parse(serializedChainInfo);
- const apiUrl = getEnvStringOrThrow(
- "VITE_DEFAULT_API_URL",
- import.meta.env.VITE_DEFAULT_API_URL,
- );
- const isMainnet =
- getEnvStringOrThrow(
- "VITE_DEPLOYMENT_ENV",
- import.meta.env.VITE_DEPLOYMENT_ENV,
- ) === "mainnet"
- ? true
- : false;
-
- return (
-
- {children}
-
- );
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionGrant/generateBankGrant.tsx b/apps/abstraxion-settings/src/components/AbstraxionGrant/generateBankGrant.tsx
deleted file mode 100644
index 566547b0..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionGrant/generateBankGrant.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx";
-import { SendAuthorization } from "cosmjs-types/cosmos/bank/v1beta1/authz";
-
-export const generateBankGrant = (
- expiration: bigint,
- grantee: string,
- granter: string,
- bank: { denom: string; amount: string }[],
-) => {
- return {
- typeUrl: MsgGrant.typeUrl,
- value: MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: SendAuthorization.typeUrl,
- value: SendAuthorization.encode(
- SendAuthorization.fromPartial({
- spendLimit: bank,
- }),
- ).finish(),
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- }),
- };
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionGrant/generateContractGrant.tsx b/apps/abstraxion-settings/src/components/AbstraxionGrant/generateContractGrant.tsx
deleted file mode 100644
index 85d97bc7..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionGrant/generateContractGrant.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import type { ContractGrantDescription } from "@burnt-labs/abstraxion";
-import {
- AllowAllMessagesFilter,
- CombinedLimit,
- ContractExecutionAuthorization,
- MaxCallsLimit,
-} from "cosmjs-types/cosmwasm/wasm/v1/authz";
-import { MsgGrant } from "cosmjs-types/cosmos/authz/v1beta1/tx";
-
-export const generateContractGrant = (
- expiration: bigint,
- grantee: string,
- granter: string,
- contracts: ContractGrantDescription[],
-) => {
- const contractExecutionAuthorizationValue =
- ContractExecutionAuthorization.encode(
- ContractExecutionAuthorization.fromPartial({
- grants: contracts.map((contractGrantDescription) => {
- if (typeof contractGrantDescription === "string") {
- const contract = contractGrantDescription;
- return {
- contract,
- limit: {
- typeUrl: MaxCallsLimit.typeUrl,
- value: MaxCallsLimit.encode(
- MaxCallsLimit.fromPartial({
- remaining: BigInt("255"),
- }),
- ).finish(),
- },
- filter: {
- typeUrl: AllowAllMessagesFilter.typeUrl,
- },
- };
- }
-
- const { address, amounts } = contractGrantDescription;
- return {
- contract: address,
- limit: {
- typeUrl: "/cosmwasm.wasm.v1.CombinedLimit",
- value: CombinedLimit.encode(
- CombinedLimit.fromPartial({
- callsRemaining: BigInt("255"),
- amounts,
- }),
- ).finish(),
- },
- filter: {
- typeUrl: AllowAllMessagesFilter.typeUrl,
- },
- };
- }),
- }),
- ).finish();
- const grantValue = MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: ContractExecutionAuthorization.typeUrl,
- value: contractExecutionAuthorizationValue,
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- });
-
- return {
- typeUrl: MsgGrant.typeUrl,
- value: grantValue,
- };
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionGrant/generateStakeGrant.tsx b/apps/abstraxion-settings/src/components/AbstraxionGrant/generateStakeGrant.tsx
deleted file mode 100644
index 13cc9c7d..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionGrant/generateStakeGrant.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import { MsgGrant, MsgExec } from "cosmjs-types/cosmos/authz/v1beta1/tx";
-import { GenericAuthorization } from "cosmjs-types/cosmos/authz/v1beta1/authz";
-import { MsgWithdrawDelegatorReward } from "cosmjs-types/cosmos/distribution/v1beta1/tx";
-import {
- AuthorizationType,
- StakeAuthorization,
-} from "cosmjs-types/cosmos/staking/v1beta1/authz";
-import {
- MsgCancelUnbondingDelegation,
- MsgDelegate,
- MsgUndelegate,
-} from "cosmjs-types/cosmos/staking/v1beta1/tx";
-import {
- AllowedMsgAllowance,
- BasicAllowance,
-} from "cosmjs-types/cosmos/feegrant/v1beta1/feegrant";
-import { MsgGrantAllowance } from "cosmjs-types/cosmos/feegrant/v1beta1/tx";
-
-export const generateStakeGrant = (
- expiration: bigint,
- grantee: string,
- granter: string,
-): Array<{
- typeUrl: string;
- value: MsgGrant | MsgGrantAllowance;
-}> => {
- const feeGrant = {
- typeUrl: MsgGrantAllowance.typeUrl,
- value: MsgGrantAllowance.fromPartial({
- allowance: {
- typeUrl: AllowedMsgAllowance.typeUrl,
- value: AllowedMsgAllowance.encode(
- AllowedMsgAllowance.fromPartial({
- allowance: {
- typeUrl: BasicAllowance.typeUrl,
- value: BasicAllowance.encode(
- BasicAllowance.fromPartial({
- spendLimit: [],
- expiration: {
- seconds: expiration,
- },
- }),
- ).finish(),
- },
- allowedMessages: [
- MsgWithdrawDelegatorReward.typeUrl,
- MsgDelegate.typeUrl,
- MsgUndelegate.typeUrl,
- MsgExec.typeUrl,
- MsgCancelUnbondingDelegation.typeUrl,
- ],
- }),
- ).finish(),
- },
- grantee,
- granter,
- }),
- };
-
- // Need to grant MsgWithdrawDelegatorReward and MsgCancelUnbondingDelegation
- const genericMsgGrants = [
- MsgWithdrawDelegatorReward.typeUrl,
- MsgCancelUnbondingDelegation.typeUrl,
- ].map((msg) => ({
- typeUrl: MsgGrant.typeUrl,
- value: MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: GenericAuthorization.typeUrl,
- value: GenericAuthorization.encode(
- GenericAuthorization.fromPartial({
- msg,
- }),
- ).finish(),
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- }),
- }));
-
- const grants = [
- AuthorizationType.AUTHORIZATION_TYPE_DELEGATE,
- AuthorizationType.AUTHORIZATION_TYPE_UNDELEGATE,
- AuthorizationType.AUTHORIZATION_TYPE_REDELEGATE,
- ].map((authorizationType) => ({
- typeUrl: MsgGrant.typeUrl,
- value: MsgGrant.fromPartial({
- grant: {
- authorization: {
- typeUrl: StakeAuthorization.typeUrl,
- value: StakeAuthorization.encode(
- StakeAuthorization.fromPartial({
- authorizationType,
- }),
- ).finish(),
- },
- expiration: {
- seconds: expiration,
- },
- },
- grantee,
- granter,
- }),
- }));
-
- return [...grants, ...genericMsgGrants, feeGrant];
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionGrant/index.tsx b/apps/abstraxion-settings/src/components/AbstraxionGrant/index.tsx
deleted file mode 100644
index cb7927f8..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionGrant/index.tsx
+++ /dev/null
@@ -1,225 +0,0 @@
-import { useEffect, useState } from "react";
-import { Button, Spinner } from "@burnt-labs/ui";
-import { useAbstraxionAccount, useAbstraxionSigningClient } from "../../hooks";
-import burntAvatar from "../../assets/burntAvatarCircle.png";
-import { CheckIcon } from "../Icons";
-import { EncodeObject } from "@cosmjs/proto-signing";
-import type { ContractGrantDescription } from "@burnt-labs/abstraxion";
-import { assertIsDeliverTxSuccess } from "@cosmjs/stargate/build/stargateclient";
-import { generateBankGrant } from "./generateBankGrant";
-import { generateContractGrant } from "./generateContractGrant";
-import { generateStakeGrant } from "./generateStakeGrant";
-import { useQueryParams } from "../../hooks/useQueryParams";
-import { ErrorDisplay } from "../ErrorDisplay";
-
-interface AbstraxionGrantProps {
- contracts: ContractGrantDescription[];
- grantee: string;
- stake: boolean;
- bank: { denom: string; amount: string }[];
-}
-
-export const AbstraxionGrant = ({
- contracts,
- grantee,
- stake,
- bank,
-}: AbstraxionGrantProps) => {
- const { client } = useAbstraxionSigningClient();
- const { data: account } = useAbstraxionAccount();
- const { redirect_uri } = useQueryParams(["redirect_uri"]);
-
- const [inProgress, setInProgress] = useState(false);
- const [showSuccess, setShowSuccess] = useState(false);
- const [failed, setFailed] = useState(false);
- const [accessDenied, setAccessDenied] = useState(false);
-
- function redirectToDapp() {
- let redirectUri = new URLSearchParams(window.location.search).get(
- "redirect_uri",
- );
- let url: URL | null = null;
- if (redirectUri) {
- url = new URL(redirectUri);
- let params = new URLSearchParams(url.search);
- params.append("granted", "true");
- params.append("granter", account.id);
- url.search = params.toString();
- redirectUri = url.toString();
- window.location.href = redirectUri;
- }
- }
-
- useEffect(() => {
- if (showSuccess && redirect_uri) {
- redirectToDapp();
- }
- });
-
- const denyAccess = () => {
- let redirectUri = new URLSearchParams(window.location.search).get(
- "redirect_uri",
- );
- setAccessDenied(true);
- // Wait 3 seconds before redirecting to dapp
- if (redirect_uri) {
- setTimeout(() => {
- window.location.href = redirectUri;
- }, 3000);
- }
- };
-
- const grant = async () => {
- setInProgress(true);
- if (!client) {
- throw new Error("no client");
- }
-
- if (!account) {
- throw new Error("no account");
- }
-
- const granter = account.id;
- const timestampThreeMonthsFromNow = BigInt(
- Math.floor(
- new Date(new Date().setMonth(new Date().getMonth() + 3)).getTime() /
- 1000,
- ),
- );
-
- const msgs: EncodeObject[] = [];
-
- if (contracts.length > 0) {
- msgs.push(
- generateContractGrant(
- timestampThreeMonthsFromNow,
- grantee,
- granter,
- contracts,
- ),
- );
- }
-
- if (stake) {
- msgs.push(
- ...generateStakeGrant(timestampThreeMonthsFromNow, grantee, granter),
- );
- }
-
- if (bank.length > 0) {
- msgs.push(
- generateBankGrant(timestampThreeMonthsFromNow, grantee, granter, bank),
- );
- }
-
- try {
- if (msgs.length === 0) {
- throw new Error("No grants to send");
- }
-
- const deliverTxResponse = await client?.signAndBroadcast(
- account.id,
- msgs,
- {
- amount: [{ amount: "0", denom: "uxion" }],
- gas: "500000",
- },
- );
- assertIsDeliverTxSuccess({
- ...deliverTxResponse,
- gasUsed: BigInt(deliverTxResponse.gasUsed),
- gasWanted: BigInt(deliverTxResponse.gasWanted),
- });
-
- setShowSuccess(true);
- setInProgress(false);
- } catch (error) {
- setInProgress(false);
- console.log("something went wrong: ", error);
- setFailed(true);
- }
- };
-
- if (inProgress) {
- return (
-
-
-
- );
- }
-
- if (accessDenied) {
- return (
-
-
- ACCESS DENIED
-
-
- This tab will close automatically in a few moments. Please switch back
- to the previous window to continue your experience.
-
-
- );
- }
-
- if (failed) {
- return ;
- }
-
- return (
-
- {showSuccess ? (
- <>
-
- Your sign-in
- was Successful!
-
-
- Please switch back to the previous window to continue your
- experience.
-
- >
- ) : (
- <>
-
-
-
-
-
- A 3rd party would like to:
-
-
-
- -
-
-
-
- Have access to your account
-
- -
-
-
-
- Log you in to their app
-
-
-
-
-
-
-
-
- >
- )}
-
- );
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionSignin/index.tsx b/apps/abstraxion-settings/src/components/AbstraxionSignin/index.tsx
deleted file mode 100644
index 7c21f59c..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionSignin/index.tsx
+++ /dev/null
@@ -1,227 +0,0 @@
-import { useContext, useEffect, useState } from "react";
-import { useStytch } from "@stytch/react";
-import { Button, Input, ModalSection } from "@burnt-labs/ui";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { getHumanReadablePubkey } from "../../utils";
-
-import okxLogo from "../../assets/okx-logo.png";
-
-const okxFlag = process.env.NEXT_PUBLIC_OKX_FLAG === "true";
-const deploymentEnv = process.env.NEXT_PUBLIC_DEPLOYMENT_ENV;
-
-// Variable to be true if deploymentEnv is "testnet", otherwise check okxFlag for "mainnet"
-const shouldEnableFeature =
- deploymentEnv === "testnet" || (deploymentEnv === "mainnet" && okxFlag);
-
-export const AbstraxionSignin = () => {
- const stytchClient = useStytch();
-
- const [email, setEmail] = useState("");
- const [methodId, setMethodId] = useState("");
- const [emailError, setEmailError] = useState("");
- const [isOnOtpStep, setIsOnOtpStep] = useState(false);
- const [otp, setOtp] = useState("");
- const [otpError, setOtpError] = useState("");
- const [timeLeft, setTimeLeft] = useState(null);
- const [showAdvanced, setShowAdvanced] = useState(false);
-
- const { setConnectionType, setAbstraxionError, chainInfo } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const handleEmailChange = (e: React.ChangeEvent) => {
- setEmailError("");
- setEmail(e.currentTarget.value.toLowerCase());
- };
-
- const handleOtpChange = (e: React.ChangeEvent) => {
- setOtpError("");
- setOtp(e.currentTarget.value);
- };
-
- const EMAIL_REGEX = /\S+@\S+\.\S+/;
- const validateEmail = () => {
- if (EMAIL_REGEX.test(email) || email === "") {
- setEmailError("");
- } else {
- setEmailError("Invalid Email Format");
- }
- };
-
- const handleEmail = async (event: any) => {
- event.preventDefault();
-
- if (!email) {
- setEmailError("Please enter your email");
- return;
- }
-
- try {
- setConnectionType("stytch");
- const emailRes = await stytchClient.otps.email.loginOrCreate(email);
- setMethodId(emailRes.method_id);
- setIsOnOtpStep(true);
- setTimeLeft(60);
- } catch (error) {
- setEmailError("Error sending email");
- setConnectionType("none");
- }
- };
-
- const handleOtp = async (event: any) => {
- event.preventDefault();
-
- try {
- await stytchClient.otps.authenticate(otp, methodId, {
- session_duration_minutes: 60,
- });
- localStorage.setItem("loginType", "stytch");
- } catch (error) {
- setOtpError("Error verifying otp");
- }
- };
-
- async function handleOkx() {
- if (!window.okxwallet) {
- alert("Please install the OKX wallet extension");
- return;
- }
- try {
- await window.okxwallet.keplr.enable(chainInfo.chainId);
- const okxAccount = await window.okxwallet.keplr.getKey(chainInfo.chainId);
- const authenticator = getHumanReadablePubkey(okxAccount.pubKey);
- setConnectionType("okx");
- localStorage.setItem("loginType", "okx");
- localStorage.setItem("loginAuthenticator", authenticator);
- localStorage.setItem("okxXionAddress", okxAccount.bech32Address);
- localStorage.setItem("okxWalletName", okxAccount.name);
- } catch (error) {
- setAbstraxionError("OKX wallet connect error");
- }
- }
-
- // For the "resend otp" countdown
- useEffect(() => {
- if (timeLeft === 0) {
- setTimeLeft(null);
- }
- if (!timeLeft) return;
- const intervalId = setInterval(() => {
- setTimeLeft(timeLeft - 1);
- }, 1000);
- return () => clearInterval(intervalId);
- }, [timeLeft]);
-
- return (
-
- {isOnOtpStep ? (
- <>
-
-
- Input 6 digit code
-
-
- Please check your email for the verification code
-
-
- e.key === "Enter" && handleOtp(e)}
- />
-
-
-
- {timeLeft ? (
-
- RESEND {`IN ${timeLeft}S`}
-
- ) : (
-
- )}
-
- >
- ) : (
- <>
-
-
- Welcome
-
-
- Log in or sign up with your email
-
-
- e.key === "Enter" && handleEmail(e)}
- />
-
- {shouldEnableFeature ? (
-
-
- {showAdvanced ? (
-
-
- Log into your existing XION Meta account with a crypto
- wallet
-
-
-
- ) : null}
-
- ) : null}
- >
- )}
-
- );
-};
diff --git a/apps/abstraxion-settings/src/components/AbstraxionWallets/index.tsx b/apps/abstraxion-settings/src/components/AbstraxionWallets/index.tsx
deleted file mode 100644
index 27ee87fb..00000000
--- a/apps/abstraxion-settings/src/components/AbstraxionWallets/index.tsx
+++ /dev/null
@@ -1,222 +0,0 @@
-import { useContext, useEffect, useState, useCallback } from "react";
-import { useDisconnect } from "graz";
-import { useStytch, useStytchUser } from "@stytch/react";
-import { useQuery } from "@apollo/client";
-import { Button, Spinner } from "@burnt-labs/ui";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { AllSmartWalletQuery } from "../../utils/queries";
-import { truncateAddress } from "../../utils";
-import { useAbstraxionAccount } from "../../hooks";
-import { Loading } from "../Loading";
-import { WalletIcon } from "../Icons";
-
-export const AbstraxionWallets = () => {
- const {
- connectionType,
- setConnectionType,
- abstractAccount,
- setAbstractAccount,
- setAbstraxionError,
- apiUrl,
- } = useContext(AbstraxionContext) as AbstraxionContextProps;
-
- const { user } = useStytchUser();
- const stytchClient = useStytch();
- const session_jwt = stytchClient.session.getTokens()?.session_jwt;
- const session_token = stytchClient.session.getTokens()?.session_token;
-
- const { loginAuthenticator } = useAbstraxionAccount();
-
- const { disconnect } = useDisconnect();
-
- const { loading, error, data, startPolling, stopPolling, previousData } =
- useQuery(AllSmartWalletQuery, {
- variables: {
- authenticator: loginAuthenticator,
- },
- fetchPolicy: "network-only",
- notifyOnNetworkStatusChange: true,
- });
-
- const [isGeneratingNewWallet, setIsGeneratingNewWallet] = useState(false);
- const [fetchingNewWallets, setFetchingNewWallets] = useState(false);
-
- const handleDisconnect = async () => {
- if (connectionType === "stytch") {
- await stytchClient.session.revoke();
- }
- disconnect();
- setConnectionType("none");
- setAbstractAccount(undefined);
- localStorage.removeItem("loginType");
- localStorage.removeItem("loginAuthenticator");
- localStorage.removeItem("okxXionAddress");
- localStorage.removeItem("okxWalletName");
- };
-
- const handleJwtAALoginOrCreate = useCallback(async () => {
- try {
- setIsGeneratingNewWallet(true);
- const res = await fetch(`${apiUrl}/api/v1/jwt-accounts/create`, {
- method: "POST",
- headers: {
- "content-type": "application/json",
- },
- body: JSON.stringify({
- salt: Date.now().toString(),
- session_jwt,
- session_token,
- }),
- });
- const body = await res.json();
- if (!res.ok) {
- throw new Error(body.error);
- }
- startPolling(3000);
- setFetchingNewWallets(true);
- } catch (error) {
- console.log(error);
- setAbstraxionError("Error creating abstract account.");
- } finally {
- setIsGeneratingNewWallet(false);
- }
- }, [
- apiUrl,
- session_jwt,
- session_token,
- setIsGeneratingNewWallet,
- startPolling,
- setFetchingNewWallets,
- setAbstraxionError,
- ]);
-
- useEffect(() => {
- if (previousData && data !== previousData) {
- stopPolling();
- setFetchingNewWallets(false);
- }
- }, [data, previousData, stopPolling]);
-
- useEffect(() => {
- if (abstractAccount && previousData && data !== previousData) {
- // Updating abstract account in context on poll
- const node = data?.smartAccounts?.nodes.find(
- (smartAccount) => smartAccount.id === abstractAccount.id,
- );
- setAbstractAccount({
- ...node,
- userId: user?.user_id,
- currentAuthenticatorIndex: node.authenticators.nodes.find(
- (authenticator) => authenticator.authenticator === loginAuthenticator,
- ).authenticatorIndex,
- });
- }
- }, [
- data,
- previousData,
- abstractAccount,
- loginAuthenticator,
- setAbstractAccount,
- user?.user_id,
- ]);
-
- if (error) {
- setAbstraxionError("Failed to fetch accounts");
- return null;
- }
-
- return (
- <>
- {isGeneratingNewWallet ? (
-
- ) : (
-
-
-
- Welcome
-
-
- Choose an account to continue
-
-
-
-
- Accounts
-
-
- {loading || fetchingNewWallets ? (
-
- ) : data?.smartAccounts?.nodes.length >= 1 ? (
- data?.smartAccounts?.nodes?.map((node: any, i: number) => (
-
{
- setAbstractAccount({
- ...node,
- userId: user?.user_id,
- currentAuthenticatorIndex:
- node.authenticators.nodes.find(
- (authenticator) =>
- authenticator.authenticator ===
- loginAuthenticator,
- ).authenticatorIndex,
- });
- }}
- >
-
-
-
- Personal Account {i + 1}
-
-
- {truncateAddress(node.id)}
-
-
-
- ))
- ) : (
- <>
-
No Accounts Found.
- {connectionType !== "stytch" ? (
-
- This authenticator can only be used as a backup right now.
- Please log in with email to create an account.
-
- ) : null}
- >
- )}
-
-
-
- {!fetchingNewWallets &&
- data?.smartAccounts?.nodes.length < 1 &&
- connectionType === "stytch" ? (
-
- ) : null}
-
-
-
- )}
- >
- );
-};
diff --git a/apps/abstraxion-settings/src/components/App.tsx b/apps/abstraxion-settings/src/components/App.tsx
deleted file mode 100644
index 39b23cc5..00000000
--- a/apps/abstraxion-settings/src/components/App.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Dialog, DialogContent } from "@burnt-labs/ui";
-import { useQueryParams } from "../hooks/useQueryParams";
-import { Abstraxion } from "./Abstraxion";
-import { ErrorDisplay } from "./ErrorDisplay";
-
-export function App() {
- const { contracts, stake, bank, grantee } = useQueryParams([
- "contracts",
- "stake",
- "bank",
- "grantee",
- ]);
-
- return grantee && (contracts || stake || bank) ? (
-
-
null} isOpen={true} />
-
- ) : (
-
- );
-}
diff --git a/apps/abstraxion-settings/src/components/ErrorDisplay/index.tsx b/apps/abstraxion-settings/src/components/ErrorDisplay/index.tsx
deleted file mode 100644
index 0d971c8d..00000000
--- a/apps/abstraxion-settings/src/components/ErrorDisplay/index.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import { useContext } from "react";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../AbstraxionContext";
-import { Button } from "@burnt-labs/ui";
-
-export const ErrorDisplay = ({
- title = "OOPS! Something went wrong...",
- message = "Please try refreshing the page. If the problem continues, check your internet connection or try again later.",
- buttonTitle = "Refresh the Page",
- onClick,
-}: {
- title?: string;
- message?: string;
- onClick?: VoidFunction;
- buttonTitle?: string;
-}) => {
- const { setAbstraxionError } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const refreshPage = () => window.location.reload();
-
- return (
-
-
- {title}
-
-
- {message}
-
-
-
- );
-};
diff --git a/apps/abstraxion-settings/src/components/Icons/Avatar.tsx b/apps/abstraxion-settings/src/components/Icons/Avatar.tsx
deleted file mode 100644
index 8cdfdbe8..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Avatar.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-export const AvatarIcon = ({
- color,
- backgroundColor,
-}: {
- color: string;
- backgroundColor: string;
-}) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/Check.tsx b/apps/abstraxion-settings/src/components/Icons/Check.tsx
deleted file mode 100644
index 14718eef..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Check.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-export const CheckIcon = ({ color = "black" }: { color?: string }) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/ChevronDown.tsx b/apps/abstraxion-settings/src/components/Icons/ChevronDown.tsx
deleted file mode 100644
index df3f16ea..00000000
--- a/apps/abstraxion-settings/src/components/Icons/ChevronDown.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-export const ChevronDownIcon = ({ color = "black" }: { color?: string }) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/Close.tsx b/apps/abstraxion-settings/src/components/Icons/Close.tsx
deleted file mode 100644
index 3d28da26..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Close.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-export const CloseIcon = ({
- color = "black",
- onClick,
-}: {
- color?: string;
- onClick: VoidFunction;
-}) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/Copy.tsx b/apps/abstraxion-settings/src/components/Icons/Copy.tsx
deleted file mode 100644
index e3100160..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Copy.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-export const CopyIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/RightArrow.tsx b/apps/abstraxion-settings/src/components/Icons/RightArrow.tsx
deleted file mode 100644
index c17787c8..00000000
--- a/apps/abstraxion-settings/src/components/Icons/RightArrow.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-export const RightArrowIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/Scan.tsx b/apps/abstraxion-settings/src/components/Icons/Scan.tsx
deleted file mode 100644
index f0b4ca7e..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Scan.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-export const ScanIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/USDC.tsx b/apps/abstraxion-settings/src/components/Icons/USDC.tsx
deleted file mode 100644
index 86570678..00000000
--- a/apps/abstraxion-settings/src/components/Icons/USDC.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-export const USDCIcon = ({ color }: { color: string }) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/Wallet.tsx b/apps/abstraxion-settings/src/components/Icons/Wallet.tsx
deleted file mode 100644
index 5b7ef5ba..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Wallet.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-export const WalletIcon = ({
- color,
- backgroundColor,
- outlineColor,
-}: {
- color: string;
- backgroundColor: string;
- outlineColor?: string;
-}) => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/Xion.tsx b/apps/abstraxion-settings/src/components/Icons/Xion.tsx
deleted file mode 100644
index 9390664f..00000000
--- a/apps/abstraxion-settings/src/components/Icons/Xion.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-export const XionIcon = () => (
-
-);
diff --git a/apps/abstraxion-settings/src/components/Icons/index.ts b/apps/abstraxion-settings/src/components/Icons/index.ts
deleted file mode 100644
index 3d07db74..00000000
--- a/apps/abstraxion-settings/src/components/Icons/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// Re-export the other files in this directory
-export { ScanIcon } from "./Scan";
-export { RightArrowIcon } from "./RightArrow";
-export { CheckIcon } from "./Check";
-export { CopyIcon } from "./Copy";
-export { AvatarIcon } from "./Avatar";
-export { ChevronDownIcon } from "./ChevronDown";
-export { WalletIcon } from "./Wallet";
-export { CloseIcon } from "./Close";
-export { XionIcon } from "./Xion";
diff --git a/apps/abstraxion-settings/src/components/Loading/index.tsx b/apps/abstraxion-settings/src/components/Loading/index.tsx
deleted file mode 100644
index caf7363e..00000000
--- a/apps/abstraxion-settings/src/components/Loading/index.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import { ModalSection, Spinner } from "@burnt-labs/ui";
-
-export const Loading = () => {
- return (
-
-
-
- Let's Go
-
- Starting your journey
-
-
-
-
-
- );
-};
diff --git a/apps/abstraxion-settings/src/hooks/index.ts b/apps/abstraxion-settings/src/hooks/index.ts
deleted file mode 100644
index 62ae03ee..00000000
--- a/apps/abstraxion-settings/src/hooks/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export {
- useAbstraxionAccount,
- type AbstraxionAccount,
-} from "./useAbstraxionAccount";
-export { useAbstraxionSigningClient } from "./useAbstraxionSigningClient";
diff --git a/apps/abstraxion-settings/src/hooks/useAbstraxionAccount.ts b/apps/abstraxion-settings/src/hooks/useAbstraxionAccount.ts
deleted file mode 100644
index 92ecd805..00000000
--- a/apps/abstraxion-settings/src/hooks/useAbstraxionAccount.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-import { useContext, useEffect, useRef, useState } from "react";
-import { useAccount } from "graz";
-import { useStytch, useStytchSession } from "@stytch/react";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../components/AbstraxionContext";
-import { decodeJwt } from "jose";
-import { getHumanReadablePubkey } from "../utils";
-
-export interface AuthenticatorNodes {
- __typename: string;
- id: string;
- type: string;
- authenticator: string;
- authenticatorIndex: number;
- version: string;
-}
-
-export interface AccountAuthenticators {
- __typename: string;
- nodes: AuthenticatorNodes[];
-}
-
-export interface AbstraxionAccount {
- __typename: string;
- id: string; // bech32Address
- authenticators: AccountAuthenticators;
- currentAuthenticatorIndex: number;
-}
-
-export interface useAbstraxionAccountProps {
- data?: AbstraxionAccount;
- isConnected: boolean;
- isConnecting?: boolean;
- isReconnecting?: boolean;
-}
-
-export const useAbstraxionAccount = () => {
- const { session } = useStytchSession();
-
- const {
- connectionType,
- setConnectionType,
- abstractAccount,
- setAbstractAccount,
- } = useContext(AbstraxionContext) as AbstraxionContextProps;
-
- const loginType = localStorage.getItem("loginType");
- const [loginAuthenticator, setLoginAuthenticator] = useState(
- localStorage.getItem("loginAuthenticator"),
- );
-
- const { data: grazAccount, isConnected } = useAccount();
- const stytchClient = useStytch();
- const session_jwt = stytchClient.session.getTokens()?.session_jwt;
-
- function getAuthenticator() {
- let authenticator = "";
- switch (connectionType) {
- case "stytch":
- const { aud, sub } = session_jwt
- ? decodeJwt(session_jwt)
- : { aud: undefined, sub: undefined };
- authenticator = `${Array.isArray(aud) ? aud[0] : aud}.${sub}`;
- break;
- case "graz":
- authenticator = getHumanReadablePubkey(grazAccount?.pubKey);
- break;
- case "metamask":
- authenticator = loginAuthenticator || "";
- break;
- case "okx":
- authenticator = loginAuthenticator || "";
- break;
- case "none":
- authenticator = "";
- break;
- }
-
- return authenticator;
- }
-
- useEffect(() => {
- const refreshConnectionType = () => {
- setConnectionType((loginType as any) || "none");
- };
-
- if (connectionType === "none") {
- refreshConnectionType();
- }
- }, [session, isConnected, grazAccount]);
-
- // Metamask & OKX account detection
- useEffect(() => {
- const handleAccountsChanged = (accounts: string[]) => {
- if (connectionType === "metamask") {
- localStorage.setItem("loginAuthenticator", accounts[0]);
- setLoginAuthenticator(accounts[0]);
- setAbstractAccount(undefined);
- }
- };
-
- window.ethereum?.on("accountsChanged", handleAccountsChanged);
-
- return () => {
- window.ethereum?.off("accountsChanged", handleAccountsChanged);
- };
- }, []);
-
- // OKX account detection
- useEffect(() => {
- const handleAccountsChanged = async (accounts: any) => {
- if (connectionType === "okx") {
- const okxXionAddress = localStorage.getItem("okxXionAddress");
- const okxWalletName = localStorage.getItem("okxWalletName");
-
- // If user switches account via extension, log user out.
- // No good way to handle account switch via the OKX keplr event system
- if (
- okxXionAddress !== accounts.account.XION_TEST ||
- okxWalletName !== accounts.name
- ) {
- // Basically log out
- setConnectionType("none");
- setAbstractAccount(undefined);
- localStorage.removeItem("loginType");
- localStorage.removeItem("loginAuthenticator");
- localStorage.removeItem("okxXionAddress");
- localStorage.removeItem("okxWalletName");
- }
- }
- };
-
- if (window.okxwallet) {
- window.okxwallet?.keplr.on("connect", handleAccountsChanged);
- }
-
- return () => {
- window.okxwallet?.keplr.on("connect", handleAccountsChanged);
- };
- }, []);
-
- // Keplr account detection
- useEffect(() => {
- const handleAccountsChanged = () => {
- if (connectionType === "graz") {
- setAbstractAccount(undefined);
- }
- };
-
- window.addEventListener("keplr_keystorechange", handleAccountsChanged);
- return () => {
- window.removeEventListener("keplr_keystorechange", handleAccountsChanged);
- };
- }, []);
-
- return {
- data: (abstractAccount as AbstraxionAccount) || undefined,
- connectionType,
- loginAuthenticator: getAuthenticator(),
- isConnected:
- connectionType === "stytch"
- ? !!session
- : connectionType === "graz"
- ? isConnected
- : connectionType === "metamask"
- ? window.ethereum.isConnected()
- : connectionType === "okx"
- ? localStorage.getItem("loginAuthenticator")
- : false,
- };
-};
diff --git a/apps/abstraxion-settings/src/hooks/useAbstraxionSigningClient.ts b/apps/abstraxion-settings/src/hooks/useAbstraxionSigningClient.ts
deleted file mode 100644
index 0a448cfb..00000000
--- a/apps/abstraxion-settings/src/hooks/useAbstraxionSigningClient.ts
+++ /dev/null
@@ -1,157 +0,0 @@
-import { useCallback, useContext, useEffect, useMemo, useState } from "react";
-import { useStytch } from "@stytch/react";
-import {
- AAClient,
- AADirectSigner,
- AbstractAccountJWTSigner,
- GasPrice,
-} from "@burnt-labs/signers";
-import {
- AbstraxionContext,
- AbstraxionContextProps,
-} from "../components/AbstraxionContext";
-import { getKeplr, useOfflineSigners } from "graz";
-import { testnetChainInfo } from "@burnt-labs/constants";
-import { AAEthSigner } from "@burnt-labs/signers";
-import { getEnvStringOrThrow } from "../utils";
-
-export const useAbstraxionSigningClient = () => {
- const { connectionType, abstractAccount, chainInfo } = useContext(
- AbstraxionContext,
- ) as AbstraxionContextProps;
-
- const stytch = useStytch();
- const sessionToken = stytch.session.getTokens()?.session_token;
-
- const { data } = useOfflineSigners();
- const keplr = window.keplr ? getKeplr() : undefined;
-
- const [abstractClient, setAbstractClient] = useState(
- undefined,
- );
-
- async function okxSignArb(
- chainId: string,
- account: string,
- signBytes: Uint8Array,
- ) {
- if (!window.okxwallet) {
- alert("Please install the OKX wallet extension");
- return;
- }
- await window.okxwallet.keplr.enable(chainInfo.chainId);
- const signDataNew = Uint8Array.from(Object.values(signBytes));
- return window.okxwallet.keplr.signArbitrary(chainId, account, signDataNew);
- }
-
- async function ethSigningFn(msg: any) {
- const accounts = await window.ethereum?.request({
- method: "eth_requestAccounts",
- });
- return window.ethereum?.request({
- method: "personal_sign",
- params: [msg, accounts[0]],
- });
- }
-
- const getSigner = useCallback(async () => {
- let signer:
- | AbstractAccountJWTSigner
- | AADirectSigner
- | AAEthSigner
- | undefined = undefined;
-
- switch (connectionType) {
- case "stytch":
- signer = new AbstractAccountJWTSigner(
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- sessionToken,
- getEnvStringOrThrow(
- "VITE_DEFAULT_INDEXER_URL",
- import.meta.env.VITE_DEFAULT_INDEXER_URL,
- ),
- getEnvStringOrThrow(
- "VITE_DEFAULT_API_URL",
- import.meta.env.VITE_DEFAULT_API_URL,
- ),
- );
- break;
- case "graz":
- if (data && data.offlineSigner && keplr) {
- signer = new AADirectSigner(
- data?.offlineSigner as any, // Temp solution. TS doesn't like this
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- // @ts-ignore - signArbitrary function exists on Keplr although it doesn't show
- keplr.signArbitrary,
- getEnvStringOrThrow(
- "VITE_DEFAULT_INDEXER_URL",
- import.meta.env.VITE_DEFAULT_INDEXER_URL,
- ),
- );
- break;
- }
- case "okx":
- if (window.okxwallet) {
- const okxOfflineSigner =
- await window.okxwallet.keplr.getOfflineSigner(chainInfo.chainId);
- signer = new AADirectSigner(
- okxOfflineSigner,
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- okxSignArb,
- getEnvStringOrThrow(
- "VITE_DEFAULT_INDEXER_URL",
- import.meta.env.VITE_DEFAULT_INDEXER_URL,
- ),
- );
- break;
- }
- case "metamask":
- if (window.ethereum) {
- signer = new AAEthSigner(
- abstractAccount.id,
- abstractAccount.currentAuthenticatorIndex,
- ethSigningFn,
- getEnvStringOrThrow(
- "VITE_DEFAULT_INDEXER_URL",
- import.meta.env.VITE_DEFAULT_INDEXER_URL,
- ),
- );
- }
- break;
- case "none":
- signer = undefined;
- break;
- }
-
- if (!signer) {
- console.warn("No signer found");
- return;
- }
-
- const abstractClient = await AAClient.connectWithSigner(
- // Should be set in the context but defaulting here just in case.
- chainInfo.rpc || testnetChainInfo.rpc,
- signer,
- {
- gasPrice: GasPrice.fromString("0uxion"),
- },
- );
- setAbstractClient(abstractClient);
- }, [sessionToken, abstractAccount, connectionType, data, keplr]);
-
- useEffect(() => {
- if (abstractAccount) {
- getSigner();
- }
- }, [abstractAccount]);
-
- const memoizedClient = useMemo(
- () => ({ client: abstractClient }),
- [abstractClient],
- );
-
- return memoizedClient;
-};
diff --git a/apps/abstraxion-settings/src/hooks/useQueryParams.ts b/apps/abstraxion-settings/src/hooks/useQueryParams.ts
deleted file mode 100644
index d34fef5b..00000000
--- a/apps/abstraxion-settings/src/hooks/useQueryParams.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { useEffect, useState } from "react";
-
-type QueryParams = {
- [K in T]?: string | null;
-};
-
-export const useQueryParams = (
- paramsList: T[],
-): QueryParams => {
- const [queryParams, setQueryParams] = useState>({});
-
- useEffect(() => {
- const getQueryParams = (): QueryParams => {
- const searchParams = new URLSearchParams(window.location.search);
- const params: Partial> = {};
-
- paramsList.forEach((param) => {
- const value = searchParams.get(param);
- params[param] = value;
- });
-
- return params as QueryParams;
- };
-
- const handleLocationChange = () => {
- setQueryParams(getQueryParams());
- };
-
- handleLocationChange();
- window.addEventListener("popstate", handleLocationChange);
- return () => window.removeEventListener("popstate", handleLocationChange);
- }, [paramsList.join(",")]); // Dependency on a string representation of paramsList
-
- return queryParams;
-};
diff --git a/apps/abstraxion-settings/src/index.css b/apps/abstraxion-settings/src/index.css
deleted file mode 100644
index 113f4cbd..00000000
--- a/apps/abstraxion-settings/src/index.css
+++ /dev/null
@@ -1,40 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-@font-face {
- font-family: 'AkkuratLL';
- src: url('/fonts/AkkuratLLWeb-Thin.woff2') format('woff2');
- font-weight: 100;
- font-style: normal;
- }
-
- @font-face {
- font-family: 'AkkuratLL';
- src: url('/fonts/AkkuratLLWeb-Light.woff2') format('woff2');
- font-weight: 200;
- font-style: normal;
- }
-
- @font-face {
- font-family: 'AkkuratLL';
- src: url('/fonts/AkkuratLLWeb-Regular.woff2') format('woff2');
- font-weight: 400;
- font-style: normal;
- }
-
- @font-face {
- font-family: 'AkkuratLL';
- src: url('/fonts/AkkuratLLWeb-Bold.woff2') format('woff2');
- font-weight: 700;
- font-style: normal;
- }
-
- @font-face {
- font-family: 'AkkuratLL';
- src: url('/fonts/AkkuratLLWeb-Black.woff2') format('woff2');
- font-weight: 900;
- font-style: normal;
- }
-
-
diff --git a/apps/abstraxion-settings/src/lib.ts b/apps/abstraxion-settings/src/lib.ts
deleted file mode 100644
index e2c7c828..00000000
--- a/apps/abstraxion-settings/src/lib.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ApolloClient, InMemoryCache } from "@apollo/client";
-import { StytchHeadlessClient } from "@stytch/vanilla-js/headless";
-import { getEnvStringOrThrow } from "./utils";
-
-export const stytchClient = new StytchHeadlessClient(
- getEnvStringOrThrow(
- "VITE_DEFAULT_STYTCH_PUBLIC_TOKEN",
- import.meta.env.VITE_DEFAULT_STYTCH_PUBLIC_TOKEN,
- ),
-);
-
-// TODO: Refactor to be dynamic. Local dev uri must be device IP.
-export const apolloClient = new ApolloClient({
- uri: getEnvStringOrThrow(
- "VITE_DEFAULT_INDEXER_URL",
- import.meta.env.VITE_DEFAULT_INDEXER_URL,
- ),
- cache: new InMemoryCache(),
- assumeImmutableResults: true,
-});
diff --git a/apps/abstraxion-settings/src/main.tsx b/apps/abstraxion-settings/src/main.tsx
deleted file mode 100644
index 0229729d..00000000
--- a/apps/abstraxion-settings/src/main.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-import ReactDOM from "react-dom/client";
-import { StytchProvider } from "@stytch/react";
-import { ApolloProvider } from "@apollo/client";
-import { GrazProvider } from "graz";
-import { apolloClient, stytchClient } from "./lib";
-import { AbstraxionContextProvider } from "./components/AbstraxionContext";
-import { App } from "./components/App";
-
-import "./index.css";
-import "@burnt-labs/ui/dist/index.css";
-
-ReactDOM.createRoot(document.getElementById("root")!).render(
-
-
-
-
-
-
-
-
-
-
- ,
-);
diff --git a/apps/abstraxion-settings/src/utils/index.ts b/apps/abstraxion-settings/src/utils/index.ts
deleted file mode 100644
index 2354b68b..00000000
--- a/apps/abstraxion-settings/src/utils/index.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-export function truncateAddress(address: string | undefined) {
- if (!address) {
- return "";
- }
- return (
- address.slice(0, 8) +
- "..." +
- address.slice(address.length - 4, address.length)
- );
-}
-
-export function getHumanReadablePubkey(pubkey: Uint8Array | undefined) {
- if (!pubkey) {
- return "";
- }
- const pubUint8Array = new Uint8Array(Object.values(pubkey));
- const pubBase64 = btoa(String.fromCharCode.apply(null, pubUint8Array));
- return pubBase64;
-}
-
-export function encodeHex(bytes: any) {
- return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
-}
-
-export function getEnvNumberOrThrow(key: string, value?: string): number {
- const val = Number(value);
- if (isNaN(val)) {
- throw new Error(`Environment variable ${key} must be defined`);
- }
-
- return val;
-}
-
-export function getEnvStringOrThrow(key: string, value?: string): string {
- if (!value) {
- throw new Error(`Environment variable ${key} must be defined`);
- }
-
- return value;
-}
-
-export function removeTrailingDigits(number: number) {
- return number / 1000000;
-}
-
-export function getCommaSeperatedNumber(number: number) {
- const millionthPart = removeTrailingDigits(number);
- return millionthPart.toLocaleString("en-US", {
- minimumFractionDigits: Math.max(
- 0,
- Math.ceil(
- Math.abs(millionthPart) < 1 ? Math.log10(Math.abs(millionthPart)) : 0,
- ),
- ),
- maximumFractionDigits: 6,
- });
-}
-
-export function formatBalance(
- number: number,
- locale: string = "en-US",
- currency: string = "USD",
-) {
- const millionthPart = removeTrailingDigits(number);
- return new Intl.NumberFormat(locale, {
- style: "currency",
- currency,
- currencyDisplay: "code",
- })
- .format(millionthPart)
- .replace(currency, "")
- .trim();
-}
-
-export function isValidWalletAddress(address: string) {
- if (address.length !== 43 && address.length !== 63) {
- return false;
- }
-
- const validCharacters = /^[0-9a-zA-Z]+$/;
- if (!validCharacters.test(address)) {
- return false;
- }
-
- if (!address.startsWith("xion")) {
- return false;
- }
-
- return true;
-}
diff --git a/apps/abstraxion-settings/src/utils/queries.ts b/apps/abstraxion-settings/src/utils/queries.ts
deleted file mode 100644
index a5a42b20..00000000
--- a/apps/abstraxion-settings/src/utils/queries.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import { gql } from "@apollo/client";
-
-export const SMART_ACCOUNT_FRAGMENT = gql`
- fragment SmartAccountFragment on SmartAccountAuthenticator {
- id
- type
- authenticator
- authenticatorIndex
- version
- }
-`;
-
-export const AllSmartWalletQuery = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($authenticator: String!) {
- smartAccounts(
- filter: {
- authenticators: { some: { authenticator: { equalTo: $authenticator } } }
- }
- ) {
- nodes {
- id
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const SingleSmartWalletQuery = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!) {
- smartAccount(id: $id) {
- id
- latestAuthenticatorId
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByAccountId = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!) {
- smartAccounts(filter: { id: { equalTo: $id } }) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByIdAndAuthenticator = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!, $authenticator: String!) {
- smartAccounts(
- filter: {
- id: { equalTo: $id }
- authenticators: { some: { authenticator: { equalTo: $authenticator } } }
- }
- ) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByIdAndType = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!, $type: String!) {
- smartAccounts(
- filter: {
- id: { equalTo: $id }
- authenticators: { some: { type: { equalTo: $type } } }
- }
- ) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
-
-export const AllSmartWalletQueryByIdAndTypeAndAuthenticator = gql`
- ${SMART_ACCOUNT_FRAGMENT}
- query ($id: String!, $type: String!, $authenticator: String!) {
- smartAccounts(
- filter: {
- id: { equalTo: $id }
- authenticators: {
- some: {
- authenticator: { equalTo: $authenticator }
- type: { equalTo: $type }
- }
- }
- }
- ) {
- nodes {
- authenticators {
- nodes {
- ...SmartAccountFragment
- }
- }
- }
- }
- }
-`;
diff --git a/apps/abstraxion-settings/tailwind.config.ts b/apps/abstraxion-settings/tailwind.config.ts
deleted file mode 100644
index eac0c3fd..00000000
--- a/apps/abstraxion-settings/tailwind.config.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import type { Config } from "tailwindcss";
-import sharedConfig from "@burnt-labs/tailwind-config/tailwind.config";
-const config: Config = {
- prefix: "ui-",
- content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
- theme: {
- extend: {
- fontFamily: {
- akkuratLL: ["AkkuratLL"],
- },
- colors: {
- primary: "#000",
- mainnet: "#CAF033",
- "mainnet-bg": "rgba(4, 199, 0, 0.2)",
- testnet: "#FFAA4A",
- "testnet-bg": "rgba(255, 170, 74, 0.2)",
- inactive: "#BDBDBD",
- },
- flexGrow: {
- "2": "2",
- },
- },
- },
- plugins: [],
- presets: [sharedConfig],
-};
-
-export default config;
diff --git a/apps/abstraxion-settings/tsconfig.json b/apps/abstraxion-settings/tsconfig.json
deleted file mode 100644
index de088052..00000000
--- a/apps/abstraxion-settings/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2020",
- "module": "ESNext",
- "moduleResolution": "bundler",
- "noEmit": true,
- "jsx": "react-jsx",
- "skipLibCheck": true,
- "types": ["vite/client"],
- },
- "include": ["**/*"]
-}
diff --git a/apps/abstraxion-settings/vite.config.ts b/apps/abstraxion-settings/vite.config.ts
deleted file mode 100644
index e7d63513..00000000
--- a/apps/abstraxion-settings/vite.config.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { defineConfig } from "vite";
-import react from "@vitejs/plugin-react";
-import { nodePolyfills } from "vite-plugin-node-polyfills";
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- react(),
- nodePolyfills({
- include: ["buffer", "util", "stream", "crypto", "vm"],
- }),
- ],
- optimizeDeps: {
- esbuildOptions: {
- // Node.js global to browser globalThis
- define: {
- global: "globalThis",
- },
- },
- },
- resolve: {
- alias: {
- crypto: "crypto-browserify",
- stream: "stream-browserify",
- buffer: "buffer",
- vm: "vm-browserify",
- },
- },
- build: {
- rollupOptions: {
- plugins: [nodePolyfills()],
- },
- },
-});