From 15d9e9dcdc072ac0f6be2bf5146102b1328faaaf Mon Sep 17 00:00:00 2001 From: Barnaba Pawelczak Date: Fri, 14 Jul 2023 13:46:55 +0200 Subject: [PATCH] feat(cacti-cmd-gui-app): add GUI to visualize Fabric, Ethereum blocks Right now supporting two ledgers - Hyperledger Fabric - Ethereum Updates from Peter to fix the CI checks: 1. The build:dev:backend script was broken, fixed it by removing the clean, lint, codegen scripts which were removed earlier but this change was trying to add them back for some reason. 2. Frontend package build (build:dev:frontend) was broken, fixed it by correcting the polyfills for both the carbon accounting and the supply chain example packages. 3. The build:dev:frontend script in the package.json in the root was spawning more processes than it needed to. A single lerna invocation with the appropriate filters can capture and run the build scripts in all 3 of the packages. The entire point of lerna is to do this instead of repeating 3 commands when you want to run 3 scripts in 3 packages so now the way the npm script is written adheres to this convention. Co-authored-by: Peter Somogyvari Signed-off-by: Barnaba Pawelczak Signed-off-by: Peter Somogyvari --- .../angular.json | 3 +- .../package.json | 5 +- .../webpack.config.overrides.js | 3 + .../package.json | 8 +- .../webpack.config.overrides.js | 3 + lerna.json | 3 + package.json | 5 +- packages/cacti-cmd-gui-app/README.md | 61 + packages/cacti-cmd-gui-app/index.html | 16 + packages/cacti-cmd-gui-app/package.json | 77 + packages/cacti-cmd-gui-app/postcss.config.js | 5 + packages/cacti-cmd-gui-app/src/App.module.css | 12 + packages/cacti-cmd-gui-app/src/App.tsx | 18 + .../cacti-cmd-gui-app/src/assets/favicon.ico | Bin 0 -> 15086 bytes .../AccountCard/AccountCard.module.css | 19 + .../components/AccountCard/AccountCard.tsx | 19 + .../components/BlockCard/BlockCard.module.css | 33 + .../src/components/BlockCard/BlockCard.tsx | 28 + .../CardWrapper/CardWrapper.module.css | 85 ++ .../components/CardWrapper/CardWrapper.tsx | 168 +++ .../src/components/Chart/Chart.module.css | 29 + .../src/components/Chart/Chart.tsx | 66 + .../src/components/Chart/LineChart.tsx | 80 + .../Pagination/Pagination.module.css | 51 + .../src/components/Pagination/Pagination.tsx | 66 + .../components/TokenHeader/TokenAccount.tsx | 20 + .../TokenHeader/TokenHeader.module.css | 57 + .../components/TokenHeader/TokenHeader.tsx | 52 + .../components/UI/Button/Button.module.css | 77 + .../src/components/UI/Button/Button.tsx | 28 + .../components/UI/CustomTable/CustomTable.css | 53 + .../UI/CustomTable/CustomTable.module.css | 137 ++ .../components/UI/CustomTable/CustomTable.tsx | 108 ++ .../EmptyTablePlaceholder.module.css | 7 + .../EmptyTablePlaceholder.tsx | 10 + .../src/components/UI/Menu/Menu.module.css | 22 + .../src/components/UI/Menu/Menu.tsx | 60 + .../components/UI/Search/Search.module.css | 43 + .../src/components/UI/Search/Search.tsx | 46 + .../components/UI/Select/Select.module.css | 73 + .../src/components/UI/Select/Select.tsx | 78 + packages/cacti-cmd-gui-app/src/index.css | 16 + packages/cacti-cmd-gui-app/src/index.tsx | 14 + packages/cacti-cmd-gui-app/src/logo.svg | 1 + .../cacti-cmd-gui-app/src/pages/Pages.tsx | 65 + .../pages/eth/Accounts/Accounts.module.css | 6 + .../src/pages/eth/Accounts/Accounts.tsx | 63 + .../src/pages/eth/Blocks/Blocks.module.css | 0 .../src/pages/eth/Blocks/Blocks.tsx | 60 + .../pages/eth/Dashboard/Dashboard.module.css | 10 + .../src/pages/eth/Dashboard/Dashboard.tsx | 100 ++ .../src/pages/eth/Details/BlockDetails.tsx | 59 + .../src/pages/eth/Details/Details.module.css | 32 + .../src/pages/eth/Details/TokenDetails.tsx | 59 + .../eth/Details/TokenTransactionDetails.tsx | 62 + .../pages/eth/Details/TransactionDetails.tsx | 100 ++ .../src/pages/eth/ERC20/ERC20.module.css | 19 + .../src/pages/eth/ERC20/ERC20.tsx | 75 + .../src/pages/eth/ERC721/ERC721.module.css | 18 + .../src/pages/eth/ERC721/ERC721.tsx | 117 ++ .../SingleTokenHistory.module.css | 12 + .../SingleTokenHistory/SingleTokenHistory.tsx | 119 ++ .../eth/Transactions/Transactions.module.css | 12 + .../pages/eth/Transactions/Transactions.tsx | 66 + .../BlocksFabric/BlocksFabric.module.css | 0 .../fabric/BlocksFabric/BlocksFabric.tsx | 63 + .../fabric/DashFabric/DashFabric.module.css | 11 + .../pages/fabric/DashFabric/DashFabric.tsx | 102 ++ .../fabric/FabricBlock/FabricBlock.module.css | 8 + .../pages/fabric/FabricBlock/FabricBlock.tsx | 82 ++ .../FabricTransaction.module.css | 22 + .../FabricTransaction/FabricTransaction.tsx | 123 ++ .../TransactionsFabric.module.css | 0 .../TransactionsFabric/TransactionsFabric.tsx | 60 + .../src/pages/shared/Home/Home.module.css | 16 + .../src/pages/shared/Home/Home.tsx | 12 + .../src/schema/supabase-types.ts | 103 ++ .../src/schema/token-standards.ts | 4 + .../cacti-cmd-gui-app/src/supabase-client.tsx | 7 + packages/cacti-cmd-gui-app/styles.d.ts | 4 + packages/cacti-cmd-gui-app/tailwind.config.ts | 11 + packages/cacti-cmd-gui-app/tsconfig.json | 19 + packages/cacti-cmd-gui-app/vite.config.ts | 13 + tsconfig.json | 3 + yarn.lock | 1297 +++++++++++++++-- 85 files changed, 4648 insertions(+), 131 deletions(-) create mode 100644 packages/cacti-cmd-gui-app/README.md create mode 100644 packages/cacti-cmd-gui-app/index.html create mode 100644 packages/cacti-cmd-gui-app/package.json create mode 100644 packages/cacti-cmd-gui-app/postcss.config.js create mode 100644 packages/cacti-cmd-gui-app/src/App.module.css create mode 100644 packages/cacti-cmd-gui-app/src/App.tsx create mode 100644 packages/cacti-cmd-gui-app/src/assets/favicon.ico create mode 100644 packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/Chart/Chart.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/Chart/Chart.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/Chart/LineChart.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenAccount.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Button/Button.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Button/Button.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Search/Search.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Search/Search.tsx create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Select/Select.module.css create mode 100644 packages/cacti-cmd-gui-app/src/components/UI/Select/Select.tsx create mode 100644 packages/cacti-cmd-gui-app/src/index.css create mode 100644 packages/cacti-cmd-gui-app/src/index.tsx create mode 100644 packages/cacti-cmd-gui-app/src/logo.svg create mode 100644 packages/cacti-cmd-gui-app/src/pages/Pages.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Details/BlockDetails.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Details/Details.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenDetails.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenTransactionDetails.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Details/TransactionDetails.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.tsx create mode 100644 packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.module.css create mode 100644 packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.tsx create mode 100644 packages/cacti-cmd-gui-app/src/schema/supabase-types.ts create mode 100644 packages/cacti-cmd-gui-app/src/schema/token-standards.ts create mode 100644 packages/cacti-cmd-gui-app/src/supabase-client.tsx create mode 100644 packages/cacti-cmd-gui-app/styles.d.ts create mode 100644 packages/cacti-cmd-gui-app/tailwind.config.ts create mode 100644 packages/cacti-cmd-gui-app/tsconfig.json create mode 100644 packages/cacti-cmd-gui-app/vite.config.ts diff --git a/examples/cactus-example-carbon-accounting-frontend/angular.json b/examples/cactus-example-carbon-accounting-frontend/angular.json index de1988e243..dcce832c64 100644 --- a/examples/cactus-example-carbon-accounting-frontend/angular.json +++ b/examples/cactus-example-carbon-accounting-frontend/angular.json @@ -178,7 +178,8 @@ "cli": { "schematicCollections": [ "@ionic/angular-toolkit" - ] + ], + "analytics": false }, "schematics": { "@ionic/angular-toolkit:component": { diff --git a/examples/cactus-example-carbon-accounting-frontend/package.json b/examples/cactus-example-carbon-accounting-frontend/package.json index c6fc1018d7..b5def6f082 100644 --- a/examples/cactus-example-carbon-accounting-frontend/package.json +++ b/examples/cactus-example-carbon-accounting-frontend/package.json @@ -77,9 +77,12 @@ "@angular/compiler-cli": "15.2.9", "@angular/language-service": "15.2.9", "@ionic/angular-toolkit": "9.0.0", + "browserify-fs": "1.0.0", "https-browserify": "1.0.0", + "net-browserify": "0.2.4", "os-browserify": "0.3.0", - "path-browserify": "1.0.1" + "path-browserify": "1.0.1", + "tls-browserify": "0.2.2" }, "engines": { "node": ">=10", diff --git a/examples/cactus-example-carbon-accounting-frontend/webpack.config.overrides.js b/examples/cactus-example-carbon-accounting-frontend/webpack.config.overrides.js index 16c5aebdbb..0eee5cb3f1 100644 --- a/examples/cactus-example-carbon-accounting-frontend/webpack.config.overrides.js +++ b/examples/cactus-example-carbon-accounting-frontend/webpack.config.overrides.js @@ -8,11 +8,14 @@ module.exports = { fallback: { crypto: require.resolve("crypto-browserify"), buffer: require.resolve("buffer/"), + fs: require.resolve("browserify-fs"), http: require.resolve("stream-http"), https: require.resolve("https-browserify"), + net: require.resolve("net-browserify"), os: require.resolve("os-browserify/browser"), path: require.resolve("path-browserify"), stream: require.resolve("stream-browserify"), + tls: require.resolve("tls-browserify"), zlib: require.resolve("browserify-zlib"), }, }, diff --git a/examples/cactus-example-supply-chain-frontend/package.json b/examples/cactus-example-supply-chain-frontend/package.json index ff1ca7b95c..b6a3c28aa9 100644 --- a/examples/cactus-example-supply-chain-frontend/package.json +++ b/examples/cactus-example-supply-chain-frontend/package.json @@ -77,7 +77,13 @@ "@angular/compiler": "15.2.9", "@angular/compiler-cli": "15.2.9", "@angular/language-service": "15.2.9", - "@ionic/angular-toolkit": "9.0.0" + "@ionic/angular-toolkit": "9.0.0", + "browserify-fs": "1.0.0", + "https-browserify": "1.0.0", + "net-browserify": "0.2.4", + "os-browserify": "0.3.0", + "path-browserify": "1.0.1", + "tls-browserify": "0.2.2" }, "engines": { "node": ">=10", diff --git a/examples/cactus-example-supply-chain-frontend/webpack.config.overrides.js b/examples/cactus-example-supply-chain-frontend/webpack.config.overrides.js index 86e74dcfae..193a333d86 100644 --- a/examples/cactus-example-supply-chain-frontend/webpack.config.overrides.js +++ b/examples/cactus-example-supply-chain-frontend/webpack.config.overrides.js @@ -24,11 +24,14 @@ module.exports = { constants: require.resolve("constants-browserify"), crypto: require.resolve("crypto-browserify"), buffer: require.resolve("buffer/"), + fs: require.resolve("browserify-fs"), + net: require.resolve("net-browserify"), http: require.resolve("stream-http"), https: require.resolve("https-browserify"), os: require.resolve("os-browserify/browser"), path: require.resolve("path-browserify"), stream: require.resolve("stream-browserify"), + tls: require.resolve("tls-browserify"), zlib: require.resolve("browserify-zlib"), }, }, diff --git a/lerna.json b/lerna.json index 2dc8f3ea4f..dc4094b381 100644 --- a/lerna.json +++ b/lerna.json @@ -3,6 +3,9 @@ "packages/cactus-*", "examples/cactus-*", "extensions/cactus-*", + "packages/cacti-*", + "examples/cacti-*", + "extensions/cacti-*", "weaver/common/protos-js", "weaver/sdks/fabric/interoperation-node-sdk", "weaver/sdks/besu/node", diff --git a/package.json b/package.json index 82ee8c122c..a414dfdc0f 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,9 @@ "packages/cactus-*", "examples/cactus-*", "extensions/cactus-*", + "packages/cacti-*", + "examples/cacti-*", + "extensions/cacti-*", "weaver/common/protos-js", "weaver/sdks/fabric/interoperation-node-sdk", "weaver/sdks/besu/node", @@ -57,7 +60,7 @@ "build:prod:frontend": "lerna run build:prod:frontend", "build:dev": "npm-run-all build:dev:backend webpack:dev:web build:dev:frontend", "build:dev:backend": "npm-run-all tsc build:dev:backend:postbuild", - "build:dev:frontend": "lerna run build:dev:frontend --scope=\"@hyperledger/cactus-example-supply-chain-frontend\" && lerna run build:dev:frontend --scope=\"@hyperledger/cactus-example-carbon-accounting-frontend\"", + "build:dev:frontend": "lerna run build:dev:frontend --scope='@hyperledger/cactus-example-*-frontend' --scope='@hyperledger/cacti-cmd-gui-app'", "build:dev:common": "lerna exec --stream --scope '*/*common' -- 'del-cli dist/** && tsc --project ./tsconfig.json && webpack --env=dev --target=node --config ../../webpack.config.js'", "build:dev:backend:postbuild": "lerna run build:dev:backend:postbuild", "test:cmd-api-server": "tap --ts --timeout=600 \"packages/cactus-*cmd-api-server/src/test/typescript/{unit,integration}/\"", diff --git a/packages/cacti-cmd-gui-app/README.md b/packages/cacti-cmd-gui-app/README.md new file mode 100644 index 0000000000..8f63795e1e --- /dev/null +++ b/packages/cacti-cmd-gui-app/README.md @@ -0,0 +1,61 @@ +# `@hyperledger/cacti-cmd-gui-app` + +This component allows viewing ledger data in Supabase or other postgreSQL compatible database. The data is fed to supabase by persistence plugins for each ledgers. + +## Summary + +- [`@hyperledger/cacti-cmd-gui-app`](#hyperledgercacti-cmd-gui-app) + - [Summary](#summary) + - [Remarks](#remarks) + - [Getting Started](#getting-started) + - [Prerequisites using yarn](#prerequisites-using-yarn) + - [Alternative Prerequisites using npm](#alternative-prerequisites-using-npm) + - [Usage](#usage) + - [Contributing](#contributing) + - [License](#license) + - [Acknowledgments](#acknowledgments) + +## Remarks + +- Plugin requires running Supabase or other database and persistence plugins in order to properly view ledger data. +- Currently, fabric and ethereum based ledgers are supported. + +## Getting Started + +Clone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on your local machine for development and testing purposes. + +### Prerequisites using yarn + +In the root of the project, execute the command to install and build the dependencies. It will also build this GUI front-end component: + +```sh +yarn run build +``` +### Alternative Prerequisites using npm + +In the root of the project, execute the command to install and build the dependencies. It will also build this GUI front-end component: + +```sh +npm install +``` + +### Usage +- Run Supabase instance (see documentation for detailed instructions). For development purposes, you can use our image located in `tools/docker/supabase-all-in-one`. +- Run one or more persistence plugins: + - [Ethereum](../cacti-plugin-persistence-ethereum) + - [Fabric] (../cacti-plugin-persistence-fabric) +- Edit [Supabase configuration file](./src/supabase-client.tsx), set correct supabase API URL and service_role key. +- Execute `yarn run start` or `npm start` in this package directory. +- The running application address: http://localhost:3001/ (can be changed in [Vite configuration](./vite.config.ts)) + +## Contributing + +We welcome contributions to Hyperledger Cacti in many forms, and there’s always plenty to do! + +Please review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started. + +## License + +This distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file. + +## Acknowledgments \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/index.html b/packages/cacti-cmd-gui-app/index.html new file mode 100644 index 0000000000..6da7c5535b --- /dev/null +++ b/packages/cacti-cmd-gui-app/index.html @@ -0,0 +1,16 @@ + + + + + + + + Cacti GUI + + + +
+ + + + diff --git a/packages/cacti-cmd-gui-app/package.json b/packages/cacti-cmd-gui-app/package.json new file mode 100644 index 0000000000..4eab4f134c --- /dev/null +++ b/packages/cacti-cmd-gui-app/package.json @@ -0,0 +1,77 @@ +{ + "name": "@hyperledger/cacti-cmd-gui-app", + "version": "2.0.0-alpha.1", + "description": "Cacti GUI for visualizing ledger data.", + "keywords": [ + "Hyperledger", + "Cacti", + "Integration", + "Blockchain", + "Distributed Ledger Technology" + ], + "homepage": "https://github.com/hyperledger/cacti#readme", + "bugs": { + "url": "https://github.com/hyperledger/cacti/issues" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/hyperledger/cacti.git" + }, + "license": "Apache-2.0", + "author": { + "name": "Hyperledger Cacti Contributors", + "email": "cacti@lists.hyperledger.org", + "url": "https://www.hyperledger.org/use/cacti" + }, + "contributors": [ + { + "name": "Please add yourself to the list of contributors", + "email": "your.name@example.com", + "url": "https://example.com" + }, + { + "name": "Eryk Baranowski", + "email": "eryk.baranowski@fujitsu.com", + "url": "https://www.fujitsu.com/global/" + }, + { + "name": "Barnaba Pawelczak", + "email": "barnaba.pawelczak@fujitsu.com", + "url": "https://www.fujitsu.com/global/" + } + ], + "scripts": { + "start": "vite", + "serve": "vite preview", + "build": "yarn run build:prod:frontend", + "build:dev:frontend": "vite build --mode=development", + "build:prod:frontend": "vite build" + }, + "devDependencies": { + "autoprefixer": "10.4.8", + "postcss": "8.4.16", + "supabase": "1.28.4", + "typescript-plugin-css-modules": "4.1.1", + "vite": "3.0.0", + "vite-plugin-solid": "2.3.0" + }, + "dependencies": { + "@solidjs/router": "0.4.2", + "@supabase/supabase-js": "1.35.6", + "apexcharts": "3.36.0", + "chart.js": "3.9.1", + "moment": "2.29.4", + "solid-apexcharts": "0.1.6", + "solid-icons": "1.0.4", + "solid-js": "1.5.7", + "solid-slider": "1.3.9", + "solid-toast": "^0.4.0" + }, + "engines": { + "npm": ">=6" + }, + "publishConfig": { + "access": "public" + }, + "watch": {} +} diff --git a/packages/cacti-cmd-gui-app/postcss.config.js b/packages/cacti-cmd-gui-app/postcss.config.js new file mode 100644 index 0000000000..a47ef4f952 --- /dev/null +++ b/packages/cacti-cmd-gui-app/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {}, + }, +}; diff --git a/packages/cacti-cmd-gui-app/src/App.module.css b/packages/cacti-cmd-gui-app/src/App.module.css new file mode 100644 index 0000000000..cba488b71c --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/App.module.css @@ -0,0 +1,12 @@ +.main { + width: 100%; +} +.content { + margin: 1rem 2rem; +} + +@media (max-width: 1699px) { + .content { + margin: 1rem; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/App.tsx b/packages/cacti-cmd-gui-app/src/App.tsx new file mode 100644 index 0000000000..a810c8f041 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/App.tsx @@ -0,0 +1,18 @@ +import { Component } from "solid-js"; +import Pages from "./pages/Pages"; +import Menu from "./components/UI/Menu/Menu"; +// @ts-expect-error +import styles from "./App.module.css"; + +const App: Component = () => { + return ( +
+ +
+ +
+
+ ); +}; + +export default App; diff --git a/packages/cacti-cmd-gui-app/src/assets/favicon.ico b/packages/cacti-cmd-gui-app/src/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b836b2bccac650e0e7d90514083add91d2c027ff GIT binary patch literal 15086 zcmeI32Y6Lgw#RQo0Y@EtmA&@a z>%VX~JRB7qO`13ut2?&Tb~rp84oCIs=KCidj&pqWB%^#k=3$2;oFCNVH(cTvg2?Ck zua+_V>;M1%EHI;OjS4~SYCbiyeXWK_$5|a}^+(18cdR{rcBk6ILps&z9{OsXW^?@N zKE>$q&tL)YJ|5J*W^?dPL^gr^&;nW zso#2j*ZLKIX+474)p`W1FCqa*I(V-kh2T{d-Vlwqj>6Uoyeh17Jq2bpw@W<*ZZ)rK zeKo&ZgYOr-)?mfL?hT*&C3FDe6G#^%3dz;>)tKujjTg*<7aMELcjK+EBDytDU`84$ zaI4534b`I8Ux-`UtI^M<12}(;^hFY9cdY$)ZDX;o5fe@u3tlH?u`eQcBQ)LyPP~yl zUJ%S`F|wp*BekSgBek+ml_F zEBZ86EBiJP?CMW{Y^t`5XpxlqPCIt7^8XRL&my5nuB^NJiU}RZcgKWfW3lgYC*H;y z@2Y-a?$=bU2KNVViZoN(N4LDS_bs2{hx4lZ7+D;|B-4-ACs`$5jmh746Q^6e_c8~Jzjt+UELmaWVXW}bbc8_nP zwxZ8E<`;Y3Z%kNtEgM^SHw^bu88bM;zBTwFl;P%MKN*`fwI zd{q=j##+FaI*!CPS_ga}I;5aO+Kg8U zgS;0VGG})&eyepTHIBYvJ-f9Z$eKZi@#t{dilaD}IP%r&OxByMy%f_AVn?xO2DtZ! zbWsQ9bkkS`vtU0m|8=d$!SL7gciIP9hhlN0*Mc*SF0!6$xU-H;{J)7F<(+n4aU?nr zKN3f2#B&BZNNfl`tpj*19qc}k@9v5t=UV8XV|3rtcAw+#-@1$6)S(MLIEN1k>^Zf} zIAVTTlM+J`9}*{m^AI{n3|T%XJ&t58*z(c4?LT0?a-B7!M|f3;9_d{Z9}J2a(`sYv zxYlQhqucT93sz2*d|g%?i4F(QL1NzWfu+OUam1Rj=cB-m*T{3e<*|M7Yw*Ft_@FBI z2ggtGJu7>pi0n0@gU(0A;z-uQ1H@4QF*zUnj}*sJ-uFo}{U1-9;Wrogdm?d?NWM!X z2km1YkbOsTx6ViAS|}-w#OBU8vgIT3ku4wnNG@1G991bV*5cPC2l-V@3i6wW+)fVi zSIO8mMTC5=M{wF^AUa#-yD*CBBE#Bkp(?JJ+h$JyrT=u! z``;b}J2)Q!?`FX)c+-LnyiUxrmx}+9{gM-r17V1~4(+D*FrACguP7g}CrCbuU{8>J z0Rc18OC4F*OMzQ~Tja*k$TyCj{BX$3?AZ67Dvus%v%6G9&brvy#H^nM?3l5w*ij4n zmgF3rk*BLuI3`KT*qb!^caT0ULUSADs5q&gox_0EMofdS>gPh7l&d|zZ^!_Hz~ zZRfHuo3=eHcDCU)Y>b@^8#5YsowyhGQJ=3Ktp0P`WOZTBbYvP5m~|m8@I`lZz{XAY z&*^&285iI^V6*YT;&v_*vokK#QPal97WGlb!278wCsqznXQIZd?6_&_;@%nRLj3!7 z9oA;Y23B%M2WY#;Wr%;7*u{1Zn&i z1%JHL2YK0Xfj!*8pE29t0~<%W#B!N7wy!^1Tv#?X@oL;l!M$pLI<;Y(#(gOG!DFp1Z)unyl-)G`4*#~##d&zO&WklyD?WT~3};gkS3*_)GTz__OeVTWk4B+T7n}$Ir|-v-vIc z*`Edzv;CZTPUCmR2Wt^~|8-eEbz((-b@IcZ#Pv8Zzo#w;=G3_=CvBd}VYK6S(+Bu1 zU>)Mt`8X#ftVd2t_>D_RVJbU5Sbe)QP<_4SZFMSY5-~hMo!U5&n3$}-**;aB+s(S$ z8v@38>Pq@TbtMByUjX*`PW;@yN( z*?R)Zb*2#=xQ7Qm2-iL!9>l&^#pZ(lP>~M|``dJ|`ykCNANgUFxD2e;S@j^Kl#;C~=qpg4YcPu?4vlREFFtjW@SAoefj16j*@9hd5Z zo2-LO_Jd*U2jx1umxQfA#7c@>*%<-V_j|0lP1 zas2Y0IUggJPsX0-@Ihh8>%jCurY#p4J}Asdi})M*r?Qp;utj6=yH#r|36r~@F{cOk z>s-lP6p(vhNd|fJDr@;B;~kw_4=gRjH@C^9dFXfvUmYcHt>K!{Iq4Bi!T*@MbN*bv z2j>&uZUFucjD5gAh`nF{pLYj;EAZF4k{MZr{p_Ki3&X$e`^#ED=|6|#?lHZBQhZ)0 z-yzo>j#)CMI~+bT0#n8U#%hdwt;a0JD!fm(jg`#z6&U4vYxFR$vqrgTKHtkI_qC6} z(C<|+{Y-o>c=VWM+)r@HJTmIf`JH1H?`8Bc$7<$CWl4W-jqHkYokPYfMwlx-vdhan zG*B6%d@lgyIvM4@0#xxI07WkuMSsNv+FmNluwyB9mOicOh%e&o(|VFO|A+qqU#adP zy*>2D)S%a-CE`!-MpybEeCR2tO;5q2Kec+(eQS6GwXgLwb9O@(G3S1IMlLdM9`pXl zytkP5A7TFWF2k?ygd%&D@3bUxb~D zc-^ghjxB2>AtZ<@@miJz$Sv&*8{vmtG&U z&&Q=-#@TyfarX3^z2Jul_c)Yb zQ^GI*un}2}w_bbZ=TZVZ4ZtGCb^bK&uAJP}GoPHYJza;%Y zyms2OFFIPi6VmG;Js!x%W}k<_H5**M@U(HlD+=HGmQOqw$~=?7&-aKO)9MCXjEaUI z-3s>g^e|Ywym0f<4`bKSKA-eDSe*7Iu8o6N6)xG}-F@@HFt98e>>lY|8Gd@R@L9r5 z3lFrHd+dQriG~;20`DvL7jE6+{|!#s;{3hTrco`_jtQ;RKIYZjukeL%ktXMSlzTo? zCWcYoE#RbbW5*R?kZUatClMYe9*%hzyt(klTTL!`2Y6$IyM-T-8oh9A!g*@mfop_A z!4G%fg~paO|IT4v55en22)7!?{iRPrxFq5I1%vRZX`07_7lj89E?9U0iwBlEp45J& zrmlGcxMSfji~P`bJ-U^7zJ=ed35L_sYZ6C)hV%$X?~3NKu&dlp_!G^A%G}In@o!SM zms+UQ&NYV)ALHVOciMeamj2dvaD#pE!(p)gp!*ceI2JofKZn7K8(gO5V&N1l3^E?% zy?n0yAiSUOKLH(XW5Y6I(3)RHVzCO`WJ`Fxu=vTo*CZA-KaU@De}U--&Eui3@Q|Xv z#k-W?hXgRVwI3wU>RdT7$S(|DE=bO#cjQ zKqt9-fACVHkROFhE8=*FZHaFi4<&ZCczstt7<>t}*~9P(CeiN%$mL2gdwxM(`R(biLiISugBeNG&q=%QYjmXU7KAycYs^ zm3m07^jTQ^l?$h$xe0^+xvTbU<9w|8t<><(Y=V1;4G_L$CG|bJ`Ah$U6RCsb=s9hi zh{ZP= zc>(*JMs3~F(OILW#(SLluAX-{^IA1?C+DI$qr`jFIFBvv+XepV2jQqRpH_lh?Q=?9 zS-7dwQ4>^F?E6ODTWa@Guhcbfi*wL6kUH!5vTVRL6~Ec`_S!H0Jd&FAo0>~<*0ZIK zz0_96-Y{OB-4%$gA!hB=wf0_$4Zg+(FO-ELCpEk&HN}e;5<=AZ*qQ3vUDK(T2Qt?* z{r*BiD0OD)rPQrNq;BV|pC`{T_zR1>uyIH5Mg`PrlbOF!S@X+x)IoyfzPhF?wamjS zjd~`vO{q;ujm@P7uItA|^>2$mvDx4Pwbp6Oe_u5;>Q;Y1rxT(db(o@>wytAa^HT?= zc0}E!EF1hc^~R5=mo~l_KfTO-u((aAOAo>ZH$_+KCng5;cd4aY^+WN2)X*&(gnow& z)=~3pjSb4xw}A~RbI&kraN|C0kdMtyf;*gRU!v|;u6gZtK%Yv?-<3Gnh7Gc)Y3ET# z%Etyb`RqEjIZqs<@|y^3)djpybB$Yew$E4EYv!rQyw#~?c{6sTj@6DhY|iIZslolK zwCny^KR4<#{6DLTQdAlWsB&CKvM4nK8!{`MiU;DuXCl=oT~y2GH6;m=St67xsvwn2 zslaC}eShOjdx~>c5dQ|^acd6y$hq{XP`^5pI4_>$ ztXLpt@A=*8s|ED>%fJ1Qa}(#KTbzp~*sqh<%X&6?h5M&*#w(C>y7Ym|*;W3%g`8RC zY_*y*&PM~9scoZMo=TkJ>(XCHA9?>xLp}4>(o--0F2FjA$(cxcs^vT+J;_@+tL)`G zkTBUdY{yVfXZ**FZuu+DSexaUb`Q_AF_Vm*R5{y-NPlV^&-(h@z_T9Dn-_WhcgfE@ zn|t$Yo-5Dg(zC03nxwyybB8?t$n&>656ZJ4eOm>b9eUgCuxq$i1)goY^IW@~XWD$} zv6JUx>CLpBVddFXdU$!(|C;aX+OL<_nR8$BpzkUud4}KZ6wU&vW{;}OE6-md+@la# z#WUD*XEu&;+CZ+S-{yJb8+o2HdOxh*8l$Ji>YZVK%|E?i>=*3QF8$hE^DKQLr>tia zqkqMC&XfIFIQ;)uGm<^>U9-nyS~UBdOV8P7s|HO!zG6V3)njpdxxq)Dj+)4`63-5@ zXG*^UeG2TA`8+SV#M7mu&}Z4}k7cv}id;-&zfUFa%l;$$HG8kzgZ<_XeHusD>$-~W z_CNCDo8+v2Xnqi`meW?dF!{OjbMF<{P`UD{3UW|Gq{d_=bk0*6(lD|z7KWYY7R#*)(qxJUL+mK WLaxim%Fn{v*G = (props) => { + const params = useParams(); + const navigate = useNavigate(); + const handleClick = () => { + navigate(`/${params.standard}/${props.address}`); + }; + return ( +
+ {props.address} +
+ ); +}; + +export default AccountCard; diff --git a/packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.module.css b/packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.module.css new file mode 100644 index 0000000000..3e90ee76fa --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.module.css @@ -0,0 +1,33 @@ +.block-card { + display: flex; + gap: 1rem; + background-color: rgb(252, 249, 249); + height: 5rem; + align-items: center; + justify-content: space-around; + width: 100%; + padding: 1rem 0rem; + margin-top: 5px; + border-radius: 10px; + border: .5px solid rgb(242, 245, 242); + max-height: 100vh; + font-size: 14px; +} + +.block-card:hover { + cursor: pointer; + background-color: #ffffff; +} + +.block-num { + color: rgb(12, 105, 12); +} + +.block-hash { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: min-content; + max-width: 50%; +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.tsx b/packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.tsx new file mode 100644 index 0000000000..774b7163f6 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/BlockCard/BlockCard.tsx @@ -0,0 +1,28 @@ +import { useNavigate } from "@solidjs/router"; +import { HiSolidHashtag } from "solid-icons/hi"; +import { Component } from "solid-js"; +// @ts-expect-error +import styles from "./BlockCard.module.css"; + +const BlockCard: Component<{ + number: string; + created_at: Date; + hash: string; +}> = (props) => { + const navigate = useNavigate(); + const handleClick = () => { + navigate(`/blockDetails/${props.number}`); + }; + + return ( +
+

{props.created_at.toLocaleString()}

+

{props.number}

+

+ {props.hash} +

+
+ ); +}; + +export default BlockCard; diff --git a/packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.module.css b/packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.module.css new file mode 100644 index 0000000000..d20ba47158 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.module.css @@ -0,0 +1,85 @@ +.wrapper { + background-color: rgb(253, 253, 253); + padding: 1rem; + border-radius: 10px; + border: 1px solid rgb(233, 236, 233); + height: fit-content; +} + +.wrapper-half-width { + width: 50%; +} + +.wrapper-full-width { + width: 100%; +} + +.wrapper-cards { + width: 100%; + display: flex; + justify-content: center; + padding: 1rem; +} + +.wrapper-title { + margin-top: .5rem; + display: flex; + gap:5px; + align-items: center; + font-weight: 700; + font-size: 1.2rem; + color: rgb(9, 75, 9); +} + +.wrapper-btns { + display: flex; + justify-content: flex-end; + padding-right: 1rem; +} + +.wrapper-header { + width: 100%; + display: flex; + justify-content: space-between; + padding: 0 1rem; +} + +.wrapper-columns { + display: flex; + justify-content: space-around; + background-color: rgb(243, 239, 239); + align-items: center; + border-radius: 10px; + border: 1px solid rgb(233, 236, 233); + height: 50px; +} + +.wrapper-columns span { + display: flex; + width: 150px; +} + +.wrapper-search { + display: flex; + gap: 5px; +} + +@media (max-width: 1699px) { + .wrapper { + width: 100%; + } + + .wrapper-header { + padding-left: 0; + padding-right: 0; + } + + .wrapper-cards { + flex-direction: column; + padding: 1rem 0; + } + + .wrapper-title svg { + margin-bottom: -3px; + } +} diff --git a/packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.tsx b/packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.tsx new file mode 100644 index 0000000000..2d4633e752 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/CardWrapper/CardWrapper.tsx @@ -0,0 +1,168 @@ +import { + createSignal, + createEffect, + ParentComponent, + onCleanup, +} from "solid-js"; +import { TbCactus } from "solid-icons/tb"; +import { useNavigate } from "@solidjs/router"; +import Button from "../UI/Button/Button"; +import Search from "../UI/Search/Search"; +import CustomTable from "../UI/CustomTable/CustomTable"; +import { TableProps } from "../../schema/supabase-types"; +import Pagination from "../Pagination/Pagination"; +// @ts-expect-error +import styles from "./CardWrapper.module.css"; +import EmptyTablePlaceholder from "../UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder"; + +type cardWrapperProp = { + filters?: string[]; + data: any[]; + display: string; + trimmed?: boolean; + columns?: TableProps; + title: string; + getSearchValue?: (val: string) => {}; +}; + +const pageSize: number = 6; + +const CardWrapper: ParentComponent = (props) => { + const navigate = useNavigate(); + const [searchKey, setSearchKey] = createSignal(""); + const [filteredData, setFilteredData] = createSignal([]); + const [paginatedData, setPaginatedData] = createSignal([]); + const [currentPage, setCurrentPage] = createSignal(1); + const [totalPages, setTotalPages] = createSignal(1); + const [viewport, setViewport] = createSignal(""); + + const handleGoToPage = (pageNumber: number) => { + if (pageNumber < 1 || pageNumber > totalPages()) return; + setCurrentPage(pageNumber); + }; + + const handleNextPage = () => { + if (currentPage() === totalPages()) return; + setCurrentPage((prev) => prev + 1); + }; + + const handlePrevPage = () => { + if (currentPage() === 1) return; + setCurrentPage((prev) => prev - 1); + }; + + const filterData = () => { + const { filters, data } = props; + if (searchKey().length === 0) { + setFilteredData(data); + return; + } + let newData = data.filter((row) => { + let isMatch: boolean = false; + filters?.forEach((property) => { + if (row[property]?.toString().toLowerCase().includes(searchKey())) { + isMatch = true; + } + }); + return isMatch; + }); + setFilteredData(newData); + }; + + const handleSearch = () => { + filterData(); + if (props.getSearchValue) { + props.getSearchValue(searchKey()); + } + }; + + createEffect(() => { + setFilteredData(props.data); + }); + + createEffect(() => { + const screenResized = () => + setViewport(window.innerWidth <= 1699 ? "small" : "wide"); + screenResized(); + window.addEventListener("resize", screenResized, true); + onCleanup(() => { + window.removeEventListener("resize", screenResized, true); + }); + }); + + createEffect(() => { + if (filteredData().length <= pageSize) { + setPaginatedData(filteredData()); + } else { + const firstEl = currentPage() * pageSize - pageSize; + setPaginatedData(filteredData().slice(firstEl, firstEl + pageSize)); + } + }); + + createEffect(() => { + const pageNum = Math.ceil(filteredData().length / pageSize); + setTotalPages(pageNum); + }); + + return ( +
+
+ + {props.title} + + {props.trimmed && viewport() === "small" && ( + + )} + {props.filters && ( +
+ setSearchKey(e)} + type="text" + placeholder="Type to search" + /> + +
+ )} +
+
+ {props?.columns && props.data?.length > 0 && ( + + )} + {props?.data?.length === 0 && } +
+
+ {" "} + {props.trimmed && viewport() === "wide" && ( + + )} +
+ {!props.trimmed && ( + + )} +
+ ); +}; + +export default CardWrapper; diff --git a/packages/cacti-cmd-gui-app/src/components/Chart/Chart.module.css b/packages/cacti-cmd-gui-app/src/components/Chart/Chart.module.css new file mode 100644 index 0000000000..be4a07ddb5 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/Chart/Chart.module.css @@ -0,0 +1,29 @@ +.chart-wrapper { + width: 100%; + height:fit-content; + display: flex; + flex-direction: column; + gap: 1rem; + justify-content: center; + align-items: center; + background-color: rgb(253, 253, 253); + border-radius: 10px; + border: 1px solid rgb(238, 238, 238); +} + +.chart-wrapper > span { + margin-top: 1rem; + font-size: 24px; +} + +.chart-wrapper-line{ + padding:1rem; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background-color: rgb(253, 253, 253); + border-radius: 10px; + border: 1px solid rgb(238, 238, 238); +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/Chart/Chart.tsx b/packages/cacti-cmd-gui-app/src/components/Chart/Chart.tsx new file mode 100644 index 0000000000..23c1bf9188 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/Chart/Chart.tsx @@ -0,0 +1,66 @@ +import { SolidApexCharts } from "solid-apexcharts"; +import { createSignal, createEffect, Component } from "solid-js"; +import { ERC20Txn } from "../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Chart.module.css"; + +const Chart: Component<{ chartData: any }> = (props) => { + const [chartProps, setChartProps] = createSignal<{ + series: any; + options: any; + }>({ + series: { + list: [ + { + name: "balance", + data: [], + }, + ], + }, + options: { + chart: { + id: "solidchart-example", + }, + xaxis: { + type: "datetime", + }, + }, + }); + + createEffect(async () => { + const { chartData } = props; + + setChartProps({ + options: { + chart: { + id: "solidchart-example", + }, + xaxis: { + categories: chartData()?.map((txn: ERC20Txn) => txn.token_address), + }, + }, + series: { + list: [ + { + name: "balance", + data: chartData()?.map((txn: ERC20Txn) => txn.balance), + }, + ], + }, + }); + }); + + return ( +
+ Balance + +
+ ); +}; + +export default Chart; diff --git a/packages/cacti-cmd-gui-app/src/components/Chart/LineChart.tsx b/packages/cacti-cmd-gui-app/src/components/Chart/LineChart.tsx new file mode 100644 index 0000000000..4ee210d8fb --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/Chart/LineChart.tsx @@ -0,0 +1,80 @@ +import { SolidApexCharts } from "solid-apexcharts"; +import { createSignal, createEffect, Component } from "solid-js"; +import moment from "moment"; +import { balanceDate } from "../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Chart.module.css"; + +const LineChart: Component<{ chartData: any }> = (props) => { + const [chartProps, setChartProps] = createSignal({ + series: { + list: [ + { + name: "balance", + data: [], + }, + ], + }, + options: { + chart: { + id: "solidchart-example", + }, + xaxis: { + categories: [], + }, + }, + }); + + createEffect(async () => { + const { chartData } = props; + + setChartProps({ + options: { + chart: { + id: "solidchart-example", + }, + stroke: { + curve: "stepline", + }, + tooltip: { + x: { + show: true, + format: "dd MM yyyy h:mm", + formatter: undefined, + }, + }, + xaxis: { + type: "datetime", + categories: chartData()?.map((txn: balanceDate) => + moment(txn.created_at).format("YYYY-MM-DD h:mm:ss a"), + ), + labels: { + format: "dd MM yyyy h:mm", + }, + }, + }, + series: { + list: [ + { + name: "balance", + data: chartData()?.map((txn: balanceDate) => txn.balance), + }, + ], + }, + }); + }); + + return ( +
+ +
+ ); +}; + +export default LineChart; diff --git a/packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.module.css b/packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.module.css new file mode 100644 index 0000000000..0632e5e845 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.module.css @@ -0,0 +1,51 @@ +.pagination { + width: 100%; + padding: 1rem; + justify-content: flex-end; + display: flex; + align-items: center; + gap: 10px; +} + +.pagination-counter { + height: 2.5rem; + display: flex; + align-items: center; + padding: 0 1rem; + border-radius: 10px; + border: 1px solid rgb(204, 206, 205); +} + +.pagination-jump { + display: flex; + gap: 10px; + padding: 9px 1rem; + background-color: rgb(233, 229, 229); + border-radius: 10px; +} + +input { + border-radius: 10px; + border: 1px solid rgb(54, 51, 224); + padding: 0 0.5rem; + width: 7rem; + text-align: center; + font-size: 1rem; +} + +@media (max-width: 1699px) { + .pagination { + padding: 0; + justify-content: center; + position: relative; + } + + .pagination button { + min-width: 85px; + } + + .pagination-jump { + position: absolute; + top: 2.75rem; + } +} diff --git a/packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.tsx b/packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.tsx new file mode 100644 index 0000000000..abc483bb06 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/Pagination/Pagination.tsx @@ -0,0 +1,66 @@ +import Button from "../UI/Button/Button"; +import { + FaSolidAngleRight, + FaSolidAngleLeft, + FaSolidAnglesLeft, + FaSolidAnglesRight, +} from "solid-icons/fa"; +import { Component, createSignal } from "solid-js"; +// @ts-expect-error +import styles from "./Pagination.module.css"; + +type pagination = { + current: number; + total: number; + goToPage: (pageNumber: number) => void; + goNextPage: () => void; + goPrevPage: () => void; +}; + +const Pagination: Component = (props) => { + let inputRef: any; + const getInputValue = () => + inputRef?.value ? inputRef.value : props.current; + const [goToPageVisible, setGoToPageVisible] = createSignal(false); + + return ( +
+ + + + {goToPageVisible() === true && ( +
+ + +
+ )} + + +
+ ); +}; + +export default Pagination; diff --git a/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenAccount.tsx b/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenAccount.tsx new file mode 100644 index 0000000000..8a7125a1a7 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenAccount.tsx @@ -0,0 +1,20 @@ +import { BiRegularWallet } from "solid-icons/bi"; +import { Component } from "solid-js"; +// @ts-expect-error +import styles from "./TokenHeader.module.css"; + +const TokenAccount: Component<{ accountNum: string }> = (props) => { + return ( +
+ + {" "} + {" "} + {props.accountNum} + +
+ ); +}; + +export default TokenAccount; diff --git a/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.module.css b/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.module.css new file mode 100644 index 0000000000..2d9ef9600c --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.module.css @@ -0,0 +1,57 @@ +.token-header { + display: flex; + flex-direction: column; + width: 100%; + gap: 1rem; +} + +.token-details { + width: 100%; + height: min-content; + border: 1px solid rgb(240, 236, 236); + border-radius: 10px; + gap: 3rem; + padding: 1rem 2rem; + display: flex; + justify-content: flex-start; + align-items: center; + background-color: rgb(247, 245, 245); +} + +.token-details div { + display: flex; + align-items: center; + gap: 1rem; +} + +.token-icon { + height: 100%; + transform: translateY(10%); + color: rgb(34, 70, 70); +} + +.token-account { + font-size: 16px; + width: 100%; + height: min-content; + display: flex; + align-items: center; + justify-content: center; + background-color: rgb(247, 245, 245); + border-radius: 10px; + padding: 1rem; + padding-left: 2rem; +} + +.token-account span { + display: flex; + align-items: center; + gap: .5rem; +} + +.token-account-icon { + color: rgb(22, 92, 65); + font-size: 28px; + height: 30px; + width: 30px; +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.tsx b/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.tsx new file mode 100644 index 0000000000..9224480d95 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/TokenHeader/TokenHeader.tsx @@ -0,0 +1,52 @@ +import TokenAccount from './TokenAccount' +import { Component } from 'solid-js' +import { createSignal, createEffect } from 'solid-js' +import { TokenMetadata20 } from '../../schema/supabase-types' +import { supabase } from '../../supabase-client' +// @ts-expect-error +import styles from "./TokenHeader.module.css"; + +const TokenHeader: Component<{ accountNum: string; token_address: string }> = ( + props, +) => { + const [tokenData, setTokenData] = createSignal(); + + createEffect(async () => { + try { + const { data, error } = await supabase + .from(`token_metadata_erc20`) + .select("*") + .match({ address: props.token_address }); + console.log(data); + if (data?.[0]) { + setTokenData(data[0]); + } else { + throw new Error("Failed to load token details"); + } + } catch (error: any) { + console.error(error.message); + } + }, []); + + return ( +
+ +
+

+ Address: {props.token_address} +

+

+ Created at: {tokenData()?.created_at} +

+

+ Total supply: + {tokenData()?.total_supply} +

+
+
+ ); +}; + +export default TokenHeader; + + diff --git a/packages/cacti-cmd-gui-app/src/components/UI/Button/Button.module.css b/packages/cacti-cmd-gui-app/src/components/UI/Button/Button.module.css new file mode 100644 index 0000000000..eab9eabd84 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/Button/Button.module.css @@ -0,0 +1,77 @@ +.button { + color: rgb(14, 48, 23); + background-color: rgb(248, 248, 250); + height: 2.5rem; + display: flex; + align-items: center; + justify-content: center; + width: max-content; + min-width: 100px; + padding: 10px; + border: 1px solid rgb(32, 133, 77); + font-family: 'Roboto'; + border-radius: 10px; +} + +.button:hover { + background-color: rgb(219, 219, 224); + transform: scale(1.01); + cursor: pointer; +} + +.button-primary { + background-color: rgb(244, 247, 245); + color:rgb(14, 44, 14); + border-radius: 5px; + width:150px; +} + +.button-primary:hover { background-color: rgb(226, 253, 219);} + +.button-warn { background-color: rgb(155, 22, 13);} + +.button-warn:hover { background-color: rgb(114, 22, 16);} + +.button-menu{ + border:none; + background: transparent; + height: 100%; + transition: background-color 0.5s ease-out; + position:relative; + border-radius: 0; + +} +.button-menu:hover{ +color:rgb(0, 0, 0); +background-color: rgb(243, 242, 242); +} +.button-menu:hover:after { + content: ''; + display: block; + position: absolute; + left: 0; + right: 0; + bottom: 1px; + width: 100%; + height: 1px; + border-bottom: 2px solid green; + +} + +.button-link { + background: transparent; + border:none; + height: min-content; + color:rgb(64, 64, 228); +} + +.button-link:hover{ + background: transparent; + color:rgb(78, 78, 236); +} + +@media (max-width: 1699px) { + .button-primary { + font-size: 1rem; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/UI/Button/Button.tsx b/packages/cacti-cmd-gui-app/src/components/UI/Button/Button.tsx new file mode 100644 index 0000000000..c69ad06233 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/Button/Button.tsx @@ -0,0 +1,28 @@ +import { ParentComponent } from "solid-js"; +// @ts-expect-error +import styles from "./Button.module.css"; + +const Button: ParentComponent<{ + type?: string; + onClick: () => void; + disabled?: boolean; +}> = (props) => { + type ObjectKey = keyof typeof styles; + const buttonTypeStyle = `button-${props.type}` as ObjectKey; + + const handleClick = (e: MouseEvent) => { + e.stopPropagation(); + props.onClick(); + }; + + return ( + + ); +}; + +export default Button; diff --git a/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.css b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.css new file mode 100644 index 0000000000..d94c8789f0 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.css @@ -0,0 +1,53 @@ +table { + border-collapse: separate; + border-spacing: 0; + width: 100%; + } + + tbody tr { + background-color: rgb(248, 248, 248); + border: 1px solid rgb(219, 241, 232); + border-radius: 10px; + } + + tbody tr:hover { + cursor: pointer; + background-color: rgb(235, 240, 237); + } + + th { + background-color: rgb(240, 235, 235); + border-style: none; + border-bottom: solid 1px rgb(223, 218, 218); + padding: 10px; + } + + td { + min-height: 2rem; + border-style: none; + border-bottom: solid 4px rgb(255, 255, 255); + padding: 1.5rem .5rem; + text-align: center; + } + + tr { + min-height: 20rem; + background-color: rgb(90, 103, 116); + padding: 1rem; + } + + tr:first-child th:first-child { + border-top-left-radius: 10px; + } + + tr:first-child th:last-child { + border-top-right-radius: 10px; + } + + tr:last-child td:first-child { + border-bottom-left-radius: 10px; + } + + tr:last-child td:last-child { + border-bottom-right-radius: 10px; + } \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.module.css b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.module.css new file mode 100644 index 0000000000..306f13ac57 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.module.css @@ -0,0 +1,137 @@ +table { + border-collapse: separate; + border-spacing: 0; + width: 100%; +} + +tbody tr { + background-color: rgb(248, 248, 248); + border: 1px solid rgb(219, 241, 232); + border-radius: 10px; +} + +tbody tr:hover { + cursor: pointer; + background-color: rgb(235, 240, 237); +} + +th { + background-color: rgb(240, 235, 235); + border-style: none; + border-bottom: solid 1px rgb(155, 153, 153); + padding: 10px; +} + +td { + min-height: 2rem; + border-style: none; + border-bottom: solid 2px rgb(255, 255, 255); + padding: 1.5rem 0.5rem; + text-align: center; +} + +tr { + min-height: 20rem; + background-color: rgb(90, 103, 116); + padding: 1rem; +} + +tr:first-child th:first-child { + border-top-left-radius: 10px; +} + +tr:first-child th:last-child { + border-top-right-radius: 10px; +} + +tr:last-child td:first-child { + border-bottom-left-radius: 10px; +} + +tr:last-child td:last-child { + border-bottom-right-radius: 10px; +} + +@media (max-width: 1699px) { + table { + width: 100%; + margin-bottom: 0.75rem; + table-layout: fixed; + } + + table:hover td:nth-child(even) { + cursor: pointer; + background-color: rgb(235, 240, 237); + } + + td { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 0.75rem; + } + + .table-rwd { + border: solid 1px rgb(223, 218, 218); + overflow: hidden; + } + + .table-rwd td { + border-bottom: solid 2px rgb(253, 253, 253); + } + + .table-rwd-heading { + background-color: rgb(240, 235, 235); + border-style: none; + padding: 0.5rem; + width: 140px; + font-weight: 700; + font-size: 0.9rem; + border-right: solid 1px rgb(223, 218, 218); + } + + .table-rwd:first-child { + border-top-left-radius: 10px; + } + + .table-rwd:first-child { + border-top-right-radius: 10px; + } + + .table-rwd:last-child { + border-bottom-left-radius: 10px; + } + + .table-rwd:last-child { + border-bottom-right-radius: 10px; + } + + .table-rwd tr:last-child > td:nth-last-of-type(2) { + border-bottom: 0; + } + + .table-rwd tr:last-child > td:last-of-type { + border-bottom: 0; + } + + .table-rwd td:last-child { + text-align: left; + } + + tr:first-child th:first-child { + border-top-left-radius: 0; + } + + tr:first-child th:last-child { + border-top-right-radius: 0; + } + + tr:last-child td:first-child { + border-bottom-left-radius: 0; + } + + tr:last-child td:last-child { + border-bottom-right-radius: 0; + } +} diff --git a/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.tsx b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.tsx new file mode 100644 index 0000000000..e549ff40ea --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/CustomTable.tsx @@ -0,0 +1,108 @@ +import { Component, createSignal, createEffect, onCleanup } from "solid-js"; +import { TableProps, TableProperty } from "../../../schema/supabase-types"; + +import EmptyTablePlaceholder from "./EmptyTablePlaceholder/EmptyTablePlaceholder"; +// @ts-expect-error +import styles from "./CustomTable.module.css"; + + +const CustomTable: Component<{ cols: TableProps; data: any[] }> = (props) => { + + const [viewport, setViewport] = createSignal(""); + +createEffect(() => { + const screenResized = () => + setViewport(window.innerWidth <= 1699 ? "small" : "wide"); + screenResized(); + window.addEventListener("resize", screenResized, true); + onCleanup(() => { + window.removeEventListener("resize", screenResized, true); + }); +}); + + + + const getObjPropVal = (objProp: string[], row: any) => { + if (objProp.length === 1) return row[objProp[0]]; + else { + return objProp.map((prop) => ( + <> + {row[prop]} +

+ + )); + } + }; + + const handleRowClick = (row: any) => { + props.cols.onClick.action(row[props.cols.onClick.prop]); + }; + + return ( + <> + {props.data.length === 0 ? ( + + ) : ( + <> + {viewport() === "wide" && ( + + + + {props.cols.schema.map((col) => ( + + ))} + + + + {props.data.map((row) => { + return ( + + {props.cols.schema.map((col: TableProperty) => ( + + ))} + + ); + })} + +
{col.display}
handleRowClick(row)}> + {getObjPropVal(col.objProp, row)} +
+ )} + + {viewport() === "small" && ( + <> + {props.data.map((row) => { + return ( + handleRowClick(row)} + > + + {props.cols.schema.map((heading, idx) => { + return ( + + + + + ); + })} + +
+ {heading.display} + + {getObjPropVal( + props.cols.schema[idx].objProp, + row, + )} +
+ ); + })} + + )} + + )} + + ); +}; + +export default CustomTable; diff --git a/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.module.css b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.module.css new file mode 100644 index 0000000000..8d9bbfa661 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.module.css @@ -0,0 +1,7 @@ +.placeholder-container { + display: flex; + justify-content: center; + font-size: 2rem; + font-weight: bold; + color: rgb(9, 75, 9); +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.tsx b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.tsx new file mode 100644 index 0000000000..0a70ca9c27 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder.tsx @@ -0,0 +1,10 @@ +import { Component } from "solid-js"; + +// @ts-ignore +import styles from "./EmptyTablePlaceholder.module.css"; + +const EmptyTablePlaceholder: Component = () => { + return
No data available
; +}; + +export default EmptyTablePlaceholder; diff --git a/packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.module.css b/packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.module.css new file mode 100644 index 0000000000..ab9a7591e0 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.module.css @@ -0,0 +1,22 @@ +.nav-bar{ + width: 100%; + display: flex; + justify-content: flex-start; + padding-left: 8rem; + height: 4rem; + background-color: rgb(180, 218, 167); + align-items: center; + gap: 2rem; +} + +.navigation { + height: 100%; + display: flex; + gap: 1rem; +} + +@media (max-width: 1699px) { + .nav-bar{ + padding-left: 1rem; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.tsx b/packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.tsx new file mode 100644 index 0000000000..970c4dc367 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/Menu/Menu.tsx @@ -0,0 +1,60 @@ +import Button from "../Button/Button"; +import { createSignal, createEffect, For, Show } from "solid-js"; +import { useNavigate, useLocation } from "@solidjs/router"; +// @ts-expect-error +import styles from "./Menu.module.css"; +import Select from "../Select/Select"; + +const pathsEth = [ + { title: "DASHBOARD", path: "/eth" }, + { title: "ERC20", path: "/eth/accounts/erc20" }, + { title: "NFT ERC721", path: "/eth/accounts/erc721" }, +]; +const pathsFabric = [{ title: "DASHBOARD", path: "/fabric" }]; + +const Menu = () => { + const navigate = useNavigate(); + const location = useLocation(); + const [activeLedger, setActiveLedger] = createSignal(""); + + const handleSelect = (selectedValue: string) => { + setActiveLedger(selectedValue); + navigate(`/${activeLedger()}`) + }; + + createEffect(()=>{ + if(activeLedger().length > 0) return + const currentPath = location.pathname + const ledgers = ['eth', 'fabric'] + + ledgers.forEach(ledger => { + if(currentPath.includes(ledger)){ + setActiveLedger(ledger) + } + }) + }) + + return ( +
+ handleInput(e)} + onPaste={(e) => handleInput(e)} + /> + +
+ ); +}; + +export default Search; diff --git a/packages/cacti-cmd-gui-app/src/components/UI/Select/Select.module.css b/packages/cacti-cmd-gui-app/src/components/UI/Select/Select.module.css new file mode 100644 index 0000000000..19e2f837af --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/Select/Select.module.css @@ -0,0 +1,73 @@ +.select-wrapper { + height: 2.2rem; + width: 13rem; +} + +.select { + width: 100%; + height: 100%; + display: flex; +} + +.select-icon { + position: relative; + right: 30px; + height: 10px; + width: 10px; + transform: translateY(-50%) rotate(45deg); + pointer-events: none; +} + +.select-icon-up { + top: 60%; + border-top: 2px solid rgb(32, 133, 77); + border-left: 2px solid rgb(32, 133, 77); +} + +.select-icon-down { + top: 40%; + border-bottom: 2px solid rgb(32, 133, 77); + border-right: 2px solid rgb(32, 133, 77); +} + +.select-input { + width: 100%; + height: 100%; + font-family: "Roboto"; + font-size: 1rem; + color: rgb(102, 117, 106); + background-color: rgb(248, 248, 250); + border: 1px solid rgb(32, 133, 77); + border-radius: 10px; + cursor: pointer; + text-align: start; +} + +.select-input:hover { + background-color: rgb(235, 240, 237); +} + +.options-container { + z-index: 1000; + width: 100%; + position: relative; + overflow-y: auto; + border: 1px solid rgb(32, 133, 77); + border-radius: 10px; + color: rgb(102, 117, 106); + background: white; + cursor: pointer; +} + +.option { + padding: 5px; +} + +.selected-option { + padding: 5px; + background-color: rgb(235, 240, 237); +} + +.option:hover { + background-color: rgb(235, 240, 237); +} diff --git a/packages/cacti-cmd-gui-app/src/components/UI/Select/Select.tsx b/packages/cacti-cmd-gui-app/src/components/UI/Select/Select.tsx new file mode 100644 index 0000000000..b2ca834bcf --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/UI/Select/Select.tsx @@ -0,0 +1,78 @@ +import { For, Component, createSignal } from "solid-js"; +import { useLocation } from "@solidjs/router"; + +// @ts-ignore +import styles from "./Select.module.css"; + +const options = [ + { value: "", display: "Select the ledger" }, + { value: "eth", display: "Ethereum" }, + { value: "fabric", display: "Fabric" }, +]; + +const Select: Component<{ + onSelect: (selectedOption: string) => void; + value: string; +}> = (props) => { + const selectStartLedgerByUrl = (path: string) => + options.find((option) => option.value === path); + + const [dropdownVisible, setDropdownVisible] = createSignal(false); + const startLocation = useLocation().pathname.split("/")[1]; + const [selectedOption, setSelectedOption] = createSignal( + selectStartLedgerByUrl(startLocation) || options[0], + ); + + const selectOption = (item: any) => { + setSelectedOption(item); + props.onSelect(item.value); + setDropdownVisible(false); + }; + + return ( +
+
setDropdownVisible(!dropdownVisible())} + > + setDropdownVisible(true)} + onBlur={() => setDropdownVisible(false)} + class={styles["select-input"]} + /> +
+
+ {dropdownVisible() ? ( +
+ + {(item) => ( +
selectOption(item)} + > + {item.display} +
+ )} +
+
+ ) : null} +
+ ); +}; + +export default Select; diff --git a/packages/cacti-cmd-gui-app/src/index.css b/packages/cacti-cmd-gui-app/src/index.css new file mode 100644 index 0000000000..46ecb129e1 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/index.css @@ -0,0 +1,16 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto'); +*{ + box-sizing: border-box; + padding: 0; + margin: 0; +} + +body { + margin: 0; + font-family: 'Roboto'; +} + +h1,h2,h3,h4,h5 { + color:rgb(36, 143, 36); +} + diff --git a/packages/cacti-cmd-gui-app/src/index.tsx b/packages/cacti-cmd-gui-app/src/index.tsx new file mode 100644 index 0000000000..388b856121 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/index.tsx @@ -0,0 +1,14 @@ +/* @refresh reload */ +import { render } from "solid-js/web"; +import { Router } from "@solidjs/router"; +import "./index.css"; +import App from "./App"; + +render( + () => ( + + + + ), + document.getElementById("root")!, +); diff --git a/packages/cacti-cmd-gui-app/src/logo.svg b/packages/cacti-cmd-gui-app/src/logo.svg new file mode 100644 index 0000000000..025aa303c5 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/Pages.tsx b/packages/cacti-cmd-gui-app/src/pages/Pages.tsx new file mode 100644 index 0000000000..06ae9707d3 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/Pages.tsx @@ -0,0 +1,65 @@ +import { Routes, Route } from "@solidjs/router"; +import TransactionDetails from "./eth/Details/TransactionDetails"; +import BlockDetails from "./eth/Details/BlockDetails"; +import TokenTransactionDetails from "./eth/Details/TokenTransactionDetails"; +import TokenDetails from "./eth/Details/TokenDetails"; +import Dashboard from "./eth/Dashboard/Dashboard"; +import Transactions from "./eth/Transactions/Transactions"; +import Blocks from "./eth/Blocks/Blocks"; +import Accounts from "./eth/Accounts/Accounts"; +import ERC20 from "./eth/ERC20/ERC20"; +import ERC721 from "./eth/ERC721/ERC721"; +import SingleTokenHistory from "./eth/SingleTokenHistory/SingleTokenHistory"; + +import TransactionsFabric from "./fabric/TransactionsFabric/TransactionsFabric"; +import BlocksFabric from "./fabric/BlocksFabric/BlocksFabric"; +import DashFabric from "./fabric/DashFabric/DashFabric"; +import FabricBlock from "./fabric/FabricBlock/FabricBlock"; +import FabricTransaction from "./fabric/FabricTransaction/FabricTransaction"; + +import Home from "./shared/Home/Home"; + +const Pages = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; +export default Pages; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.module.css new file mode 100644 index 0000000000..43c52de4a5 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.module.css @@ -0,0 +1,6 @@ +.accounts-wrapper{ + width:100%; + display:grid; + grid-template-columns: repeat(auto-fit, 35rem); + gap: 1rem; +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.tsx new file mode 100644 index 0000000000..2964bd0f3c --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Accounts/Accounts.tsx @@ -0,0 +1,63 @@ +import { createSignal, createEffect } from "solid-js"; +import { useParams, useNavigate } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; + +const Accounts = () => { + const params = useParams(); + const navigate = useNavigate(); + const [accounts, setAccounts] = createSignal<{ address: string }[]>([]); + const [searchKey, setSearchKey] = createSignal(""); + + const tableProps = { + onClick: { + action: (param: string) => navigate(`/eth/${params.standard}/${param}`), + prop: "address", + }, + schema: [ + { + display: "Account address", + objProp: ["address"], + }, + ], + }; + + const fetchAccounts = async () => { + try { + const { data, error } = await supabase + .from(`token_${params.standard.toLowerCase()}`) + .select("account_address"); + if (data) { + const objData = [ + ...new Set(data.map((el) => el.account_address)), + ].map((el) => ({ address: el })); + setAccounts(objData); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchAccounts(); + }, []); + + return ( +
+ setSearchKey(e)} + > +
+ ); +}; + +export default Accounts; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.module.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.tsx new file mode 100644 index 0000000000..f3b9ff15dc --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Blocks/Blocks.tsx @@ -0,0 +1,60 @@ +import { createSignal, createEffect } from "solid-js"; +import { useNavigate } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Block } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Blocks.module.css"; + +type ObjectKey = keyof typeof styles; + +const Blocks = () => { + const navigate = useNavigate(); + const [block, setBlock] = createSignal([]); + + const blocksTableProps = { + onClick: { + action: (param: string) => navigate(`/eth/block-details/${param}`), + prop: "number", + }, + schema: [ + { display: "created at", objProp: ["created_at"] }, + { display: "block number", objProp: ["number"] }, + { display: "hash", objProp: ["hash"] }, + ], + }; + + const fetchBlock = async () => { + try { + const { data, error } = await supabase.from("block").select("*"); + if (data) { + console.log(JSON.stringify(data)) + setBlock(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchBlock(); + }, []); + + return ( +
+ +
+ ); +}; + +export default Blocks; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.module.css new file mode 100644 index 0000000000..f2443fc562 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.module.css @@ -0,0 +1,10 @@ +.dashboard-wrapper { + display: flex; + gap: 1rem; +} + +@media (max-width: 1699px) { + .dashboard-wrapper { + flex-direction: column; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.tsx new file mode 100644 index 0000000000..47fd54a779 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Dashboard/Dashboard.tsx @@ -0,0 +1,100 @@ +import { createSignal, createEffect, Show } from "solid-js"; +import { useNavigate, useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Transaction } from "../../../schema/supabase-types"; +import { Block } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Dashboard.module.css"; + +const Dashboard = () => { + const navigate = useNavigate(); + const [transaction, setTransaction] = createSignal([]); + const [block, setBlock] = createSignal([]); + + const txnTableProps = { + onClick: { + action: (param: string) => { + navigate(`/eth/txn-details/${param}`); + }, + prop: "id", + }, + schema: [ + { display: "transaction id", objProp: ["id"] }, + { display: "sender/recipient", objProp: ["from", "to"] }, + { display: "token value", objProp: ["eth_value"] }, + ], + }; + const blocksTableProps = { + onClick: { + action: (param: string) => { + navigate(`/eth/block-details/${param}`); + }, + prop: "number", + }, + schema: [ + { display: "created at", objProp: ["created_at"] }, + { display: "block number", objProp: ["number"] }, + { display: "hash", objProp: ["hash"] }, + ], + }; + + const fetchTransactions = async () => { + try { + const { data, error } = await supabase.from("transaction").select("*"); + if (data) { + setTransaction(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + const fetchBlock = async () => { + try { + const { data, error } = await supabase.from("block").select("*"); + if (data) { + setBlock(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchBlock(); + }, []); + + createEffect(async () => { + await fetchTransactions(); + }, []); + + return ( +
+
+ + +
+
+ ); +}; + +export default Dashboard; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Details/BlockDetails.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Details/BlockDetails.tsx new file mode 100644 index 0000000000..4b53ad9eb6 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Details/BlockDetails.tsx @@ -0,0 +1,59 @@ +import { createEffect, createSignal, Show } from "solid-js"; +import { useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import { Block } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Details.module.css"; + +const blockDetails = () => { + const [details, setDetails] = createSignal({}); + const params = useParams(); + + createEffect(async () => { + try { + const { data, error } = await supabase + .from("block") + .select("*") + .match({ number: params.number }); + if (data?.[0]) { + setDetails(data[0]); + } else { + throw new Error("Failed to load block details"); + } + } catch (error:any) { + console.error(error.message); + } + }, []); + + return ( +
+
+ Failed to load details
}> +

Block Details

+

+ Address: {details().number}{" "} +

+

+ {" "} + Created at: + {details().created_at} +

+

+ Hash: + {details().hash} +

+

+ Number of transaction: + {details().number_of_tx} +

+

+ Sync at: + {details().sync_at} +

+ +
+
+ ); +}; + +export default blockDetails; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Details/Details.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/Details/Details.module.css new file mode 100644 index 0000000000..899ff99432 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Details/Details.module.css @@ -0,0 +1,32 @@ +h1{ + padding: 0; + margin: 0; + margin-bottom: .5rem; +} +.details { + display: flex; + gap: .75rem; +} +.details-card{ + display: flex; + flex-direction: column; + gap: 15px; + border: 1px solid rgb(230, 224, 224); + border-radius: 10px; + padding: 1.5rem 2rem; + width:45%; +} +span { + display: inline-block; + font-size: 1.1rem; +} + +@media (max-width: 1699px) { + .details{ + flex-direction: column; + } + + .details-card { + width: 100%; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenDetails.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenDetails.tsx new file mode 100644 index 0000000000..14a6b4b814 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenDetails.tsx @@ -0,0 +1,59 @@ +import { createEffect, createSignal } from "solid-js"; +import { useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import { STANDARDS } from "../../../schema/token-standards"; +import { TokenMetadata20, TokenMetadata721 } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Details.module.css"; + +const TokenDetails = () => { + const [tokenData, setTokenData] = createSignal< + TokenMetadata20 | TokenMetadata721 | any + >(); + + const params = useParams(); + + createEffect(async () => { + try { + const { data, error } = await supabase + .from(`token_metadata_${params.standard.toLowerCase()}`) + .select("*") + .match({ address: params.address }); + if (data?.[0]) { + setTokenData(data[0]); + } else { + throw new Error("Failed to load token details"); + } + } catch (error:any) { + console.error(error.message); + } + }, []); + + return ( +
+
+

Token Details

+

+ Adress: {tokenData()?.address}{" "} +

+

+ Created at: + {tokenData()?.created_at} +

+

+ Name: + {tokenData()?.name} +

+

+ Symbol: + {tokenData()?.symbol} +

+ {params.standard === STANDARDS.erc20 && ( +

total_supply : {tokenData()?.total_supply}

+ )} +
+
+ ); +}; + +export default TokenDetails; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenTransactionDetails.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenTransactionDetails.tsx new file mode 100644 index 0000000000..69af02c901 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Details/TokenTransactionDetails.tsx @@ -0,0 +1,62 @@ +import { createEffect, createSignal } from "solid-js"; +import { useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import { STANDARDS } from "../../../schema/token-standards"; +import { ERC20Txn, ERC721Txn } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Details.module.css"; + +const TokenTransactionDetails = () => { + const [txnData, setTxnData] = createSignal({}); + const params = useParams(); + + createEffect(async () => { + try { + const { data, error } = await supabase + .from(`token_${params.standard.toLowerCase()}`) + .select("*") + .match({ account_address: params.address }); + if (data?.[0]) { + setTxnData(data[0]); + } else { + throw new Error("Failed to load transaction details"); + } + } catch (error:any) { + console.error(error.message); + } + }, []); + + return ( +
+
+

Details of Transaction

+

+ {" "} + Address: + {txnData()?.account_address}{" "} +

+

+ {" "} + Created_at: + {txnData()?.token_address} +

+ {params.standard === STANDARDS.erc20 && ( +

+ {" "} + Balance: + {txnData()?.balance} +

+ )} + {params.standard === STANDARDS.erc721 && ( +

+ {" "} + Uri: + {txnData()?.uri} +

+ )} +
+
+ ); +}; + +export default TokenTransactionDetails; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Details/TransactionDetails.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Details/TransactionDetails.tsx new file mode 100644 index 0000000000..b0187c3219 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Details/TransactionDetails.tsx @@ -0,0 +1,100 @@ +import { createEffect, createSignal } from "solid-js"; +import { useParams, useNavigate } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Transaction, TokenTransfer } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Details.module.css"; + +const TransactionsDetails = () => { + const [details, setDetails] = createSignal({}); + const [transfers, setTransfers] = createSignal([]); + const params = useParams(); + + const detailsTableProps = { + onClick: { + action: () => {}, + prop: "id", + }, + schema: [ + { display: "transfer id", objProp: ["id"] }, + { display: "sender/recipient", objProp: ["sender", "recipient"] }, + { display: "value", objProp: ["value"] }, + ], + }; + + const fetchDetails = async () => { + try { + const { data, error } = await supabase + .from("transaction") + .select("*") + .match({ id: params.id }); + if (data?.[0]) { + setDetails(data[0]); + } else { + throw new Error("Failed to load transaction details"); + } + } catch (error:any) { + console.error(error.message); + } + }; + + const fetchTransfers = async () => { + try { + const { data, error } = await supabase + .from("token_transfer") + .select("*") + .match({ transaction_id: params.id }); + if (data) { + setTransfers(data); + } else { + throw new Error("Failed to load transfers"); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchDetails(); + await fetchTransfers(); + }, []); + + return ( +
+
+

Details of Transaction

+

+ {" "} + Hash: {details().hash}{" "} +

+

+ Block: + {details().block_number} +

+

+ From: + {details().from} +

+

+ To: + {details().to}{" "} +

+

+ {" "} + Value:   {details().eth_value} +

+
+ +
+ ); +}; + +export default TransactionsDetails; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.module.css new file mode 100644 index 0000000000..92eaa56f56 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.module.css @@ -0,0 +1,19 @@ +.erc-content { + display: flex; + gap:2rem; +} + +.erc-wrap{ + width:100%; + display: flex; + gap:1rem; + flex-direction: column; + +} + + +@media (max-width: 1699px) { + .erc-content{ + flex-direction: column; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.tsx new file mode 100644 index 0000000000..d32c5956ae --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/ERC20/ERC20.tsx @@ -0,0 +1,75 @@ +import { useParams, useNavigate } from "@solidjs/router"; +import { createSignal, createEffect } from "solid-js"; +import TokenAccount from "../../../components/TokenHeader/TokenAccount"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import Chart from "../../../components/Chart/Chart"; +import { ERC20Txn } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./ERC20.module.css"; + +const ERC20 = () => { + const params = useParams(); + const navigate = useNavigate(); + const [token_erc20, setToken_erc20] = createSignal([]); + + const ercTableProps = { + onClick: { + action: (token_address: string) => + navigate(`/eth/erc20/trend/${params.account}/${token_address}`), + prop: "token_address", + }, + schema: [ + { + display: "token address", + objProp: ["token_address"], + }, + { + display: "balance", + objProp: ["balance"], + }, + ], + }; + + const fetchERC20 = async () => { + try { + const { data, error } = await supabase + .from("token_erc20") + .select() + .eq("account_address", params.account); + if (data) { + setToken_erc20(data); + } + if (error) { + throw new Error(error.message); + } + } catch (error: any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchERC20(); + }, []); + + return ( +
+
+ + +
+
+ + +
+
+ ); +}; + +export default ERC20; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.module.css new file mode 100644 index 0000000000..fb8d75ce96 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.module.css @@ -0,0 +1,18 @@ +.erc-content { + display: flex; + gap:2rem; +} + +.erc-wrap{ + display: flex; + gap:1rem; + flex-direction: column; + align-items: center; +} + +@media (max-width: 1699px) { + + .erc-content{ + flex-direction: column; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.tsx new file mode 100644 index 0000000000..29caf8be4d --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/ERC721/ERC721.tsx @@ -0,0 +1,117 @@ +import { useParams, useNavigate } from "@solidjs/router"; +import { createSignal, createEffect, Show } from "solid-js"; +import TokenAccount from "../../../components/TokenHeader/TokenAccount"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { ERC721Txn } from "../../../schema/supabase-types"; +import { TokenMetadata721 } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./ERC721.module.css"; + +const ERC721 = () => { + const params = useParams(); + const navigate = useNavigate(); + const [token_erc721, setToken_erc721] = createSignal([]); + const [tokenMetadata, setTokenMetadata] = createSignal( + [], + ); + + const ercTableProps = { + onClick: { + action: (param: string) => navigate(`/eth/token-details/erc721/${param}`), + prop: "token_address", + }, + schema: [ + { + display: "symbol", + objProp: ["symbol"], + }, + { + display: "URI", + objProp: ["uri"], + }, + ], + }; + const metaProps = { + onClick: { + action: () => {}, + prop: "", + }, + schema: [ + { + display: "created at", + objProp: ["created_at"], + }, + { + display: "sender/recipient", + objProp: ["sender", "recipient"], + }, + { + display: "token address", + objProp: ["token_address"], + }, + ], + }; + + const fetchERC721 = async () => { + try { + const { data, error } = await supabase + .from("erc721_txn_meta_view") + .select() + .eq("account_address", params.account); + if (data) { + setToken_erc721(data); + } + if (error) { + throw new Error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + const fetchMetadata = async () => { + try { + const { data, error } = await supabase + .from(`erc721_token_history_view`) + .select("*"); + if (data) { + setTokenMetadata(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchERC721(); + await fetchMetadata(); + }, []); + + return ( +
+ +
+ + +
+
+ ); +}; + +export default ERC721; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.module.css new file mode 100644 index 0000000000..aa59d7de7e --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.module.css @@ -0,0 +1,12 @@ +.token-history { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.transactions { + display: flex; + flex-direction: column; + gap: 2rem; + margin-top: 2rem; +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.tsx new file mode 100644 index 0000000000..d1dfbaa54f --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/SingleTokenHistory/SingleTokenHistory.tsx @@ -0,0 +1,119 @@ +import { createSignal, createEffect, Show } from "solid-js"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import LineChart from "../../../components/Chart/LineChart"; +import TokenHeader from "../../../components/TokenHeader/TokenHeader"; +import { useNavigate, useParams } from "@solidjs/router"; +import { TokenHistoryItem20 } from "../../../schema/supabase-types"; +import { balanceDate } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./SingleTokenHistory.module.css"; +import EmptyTablePlaceholder from "../../../components/UI/CustomTable/EmptyTablePlaceholder/EmptyTablePlaceholder"; + +const SingleTokenHistory = () => { + type ObjectKey = keyof typeof styles; + const [transactions, setTransactions] = createSignal( + [], + ); + const [balanceHistory, setBalanceHistory] = createSignal([]); + const navigate = useNavigate(); + const params = useParams(); + + const tokenTableProps = { + onClick: { + action: (param: string) => navigate(`/view/${param}`), + prop: "id", + }, + schema: [ + { + display: "created at", + objProp: ["created_at"], + }, + { + display: "transaction hash", + objProp: ["transaction_hash"], + }, + { + display: "sender/recipient", + objProp: ["sender", "recipient"], + }, + { + display: "token address", + objProp: ["token_address"], + }, + { + display: "token value", + objProp: ["value"], + }, + ], + }; + + const calcTokenBalance = (txnData: TokenHistoryItem20[]) => { + let balance = 0; + const balances = txnData.map((txn) => { + let txn_value = txn.value || 0; + let account = params.account; + if (txn.recipient !== account) { + txn_value *= -1; + } + balance += txn_value; + return { + created_at: txn.created_at + "Z", + balance: balance, + }; + }); + return balances; + }; + + const fetchTransactions = async () => { + try { + const { data, error } = await supabase + .from("erc20_token_history_view") + .select("*") + .match({ token_address: params.address }).or(`sender.eq.${params.account}, recipient.eq.${params.account}`); + if (data) { + setTransactions(data); + setBalanceHistory(calcTokenBalance(data)); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchTransactions(); + }, []); + + return ( +
+ +
+ 0 } + fallback={}> + + + + + +
+
+ ); +}; + +export default SingleTokenHistory; diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.module.css b/packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.module.css new file mode 100644 index 0000000000..7ff183b0da --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.module.css @@ -0,0 +1,12 @@ +.transactions{ + display: flex; + flex-direction: column; + +}.transactions-search { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 2rem; + + +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.tsx b/packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.tsx new file mode 100644 index 0000000000..1679f054cc --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/eth/Transactions/Transactions.tsx @@ -0,0 +1,66 @@ +import { createSignal, createEffect, Show } from "solid-js"; +import { useNavigate, useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Transaction } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./Transactions.module.css"; + +const Transactions = () => { + const navigate = useNavigate(); + const [transactions, setTransactions] = createSignal([]); + + const txnTableProps = { + onClick: { + action: (param: string) => navigate(`/eth/txn-details/${param}`), + prop: "id", + }, + schema: [ + { + display: "transaction id", + objProp: ["id"], + }, + { + display: "sender/recipient", + objProp: ["from", "to"], + }, + { + display: "token value", + objProp: ["eth_value"], + }, + ], + }; + + const fetchTransactions = async () => { + try { + const { data } = await supabase.from("transaction").select("*"); + if (data) { + console.log(JSON.stringify(data)) + setTransactions(data); + } else { + throw new Error("Failed to load transactions"); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchTransactions(); + }, []); + + return ( +
+ +
+ ); +}; + +export default Transactions; diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.module.css b/packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.module.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.tsx b/packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.tsx new file mode 100644 index 0000000000..d3c9b4b547 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/BlocksFabric/BlocksFabric.tsx @@ -0,0 +1,63 @@ +import { createSignal, createEffect } from "solid-js"; +import { useNavigate } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Block } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./BlocksFabric.module.css"; + +type ObjectKey = keyof typeof styles; + +const BlocksFabric = () => { + const navigate = useNavigate(); + const [block, setBlock] = createSignal([]); + + const blocksTableProps = { + onClick: { + action: (param: string) => { + navigate(`/fabric/block-details/${param}`); + }, + prop: "id", + }, + schema: [ + { display: "created at", objProp: ["created_at"] }, + { display: "block number", objProp: ["block_number"] }, + { display: "channel name", objProp: ["channel_id"] }, + { display: "hash", objProp: ["data_hash"] }, + { display: "transactions count", objProp: ["tx_count"] }, + ], + }; + + const fetchBlock = async () => { + try { + const { data, error } = await supabase.from("fabric_blocks").select("*"); + if (data) { + setBlock(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchBlock(); + }, []); + + return ( +
+ +
+ ); +}; + +export default BlocksFabric; diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.module.css b/packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.module.css new file mode 100644 index 0000000000..f75a30b767 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.module.css @@ -0,0 +1,11 @@ +.dashboard-wrapper { + display: flex; + gap: 1rem; + flex-direction: column; +} + +@media (max-width: 1699px) { + .dashboard-wrapper { + flex-direction: column; + } +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.tsx b/packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.tsx new file mode 100644 index 0000000000..1ebf142f39 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/DashFabric/DashFabric.tsx @@ -0,0 +1,102 @@ +import { createSignal, createEffect, Show } from "solid-js"; +import { useNavigate, useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Transaction } from "../../../schema/supabase-types"; +import { Block } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./DashFabric.module.css"; + +const DashFabric = () => { + const navigate = useNavigate(); + const [transaction, setTransaction] = createSignal([]); + const [block, setBlock] = createSignal([]); + + const txnTableProps = { + onClick: { + action: (param: string) => { + navigate(`/fabric/txn-details/${param}`); + }, + prop: "id", + }, + schema: [ + { display: "created at", objProp: ["created_at"] }, + { display: "transaction id", objProp: ["transaction_id"] }, + { display: "channel name", objProp: ["channel_id"] }, + { display: "block id", objProp: ["block_id"] }, + { display: "status", objProp: ["status"] }, + ], + }; + + const blocksTableProps = { + onClick: { + action: (param: string) => { + navigate(`/fabric/block-details/${param}`); + }, + prop: "id", + }, + schema: [ + { display: "created at", objProp: ["created_at"] }, + { display: "block number", objProp: ["block_number"] }, + { display: "channel name", objProp: ["channel_id"] }, + { display: "hash", objProp: ["data_hash"] }, + { display: "transactions count", objProp: ["tx_count"] }, + ], + }; + + const fetchTransactions = async () => { + try { + const { data, error } = await supabase.from("fabric_transactions").select("*"); + if (data) { + setTransaction(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + const fetchBlock = async () => { + try { + const { data, error } = await supabase.from("fabric_blocks").select("*"); + if (data) { + setBlock(data); + } + if (error) { + console.error(error.message); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchBlock(); + await fetchTransactions(); + }, []); + + return ( +
+
+ + +
+
+ ); +} + +export default DashFabric \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.module.css b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.module.css new file mode 100644 index 0000000000..5bfa3e269e --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.module.css @@ -0,0 +1,8 @@ +.details-card { + display: flex; + flex-direction: column; + gap: 15px; + border: 1px solid rgb(230, 224, 224); + border-radius: 10px; + padding: 1.5rem 2rem; +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.tsx b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.tsx new file mode 100644 index 0000000000..5a5b56ce38 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricBlock/FabricBlock.tsx @@ -0,0 +1,82 @@ +// @ts-expect-error +import styles from './FabricBlock.module.css' +import { createEffect, createSignal, Show } from 'solid-js'; +import { useParams } from '@solidjs/router'; +import { supabase } from '../../../supabase-client'; + +const FabricBlock = () => { + const [details, setDetails] = createSignal({}); + const params = useParams(); + + createEffect(async () => { + try { + const { data, error } = await supabase + .from("fabric_blocks") + .select("*") + .match({ id: params.id}); + if (data?.[0]) { + setDetails(data[0]); + } else { + throw new Error("Failed to load block details"); + } + } catch (error:any) { + console.error(error.message); + } + }, []); + + return ( +
+
+ Failed to load details
}> +

Block Details

+

+ ID: {details().id}{" "} +

+

+ {" "} + Block Number: + {details().block_number} +

+

+ Hash: + {details().data_hash} +

+

+ Tx Count: + {details().tx_count} +

+

+ Created at: + {details().created_at} +

+

+ {" "} + Previous Blockhash: + {details().prev_blockhash} +

+ +

+ {" "} + Channel name: + {details().channel_id} +

+ {/* +

+ {" "} + Blk Size: + {details().blksize} +

+

+ {" "} + Network name: + {details().network_name} +

*/ + } + +
+ + ); + }; +export default FabricBlock + + diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.module.css b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.module.css new file mode 100644 index 0000000000..15fab73ab7 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.module.css @@ -0,0 +1,22 @@ +.details-card { + display: flex; + flex-direction: column; + gap: 15px; + border: 1px solid rgb(230, 224, 224); + border-radius: 10px; + padding: 1.5rem 2rem; +} + +.details-bytes-wrap { + display: flex; + align-items: center; + gap: 1rem; +} +.details-bytes { + width: 30vw; + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + resize: horizontal; +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.tsx b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.tsx new file mode 100644 index 0000000000..832eb9bf0d --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/FabricTransaction/FabricTransaction.tsx @@ -0,0 +1,123 @@ +// @ts-expect-error +import styles from './FabricTransaction.module.css' +import { createEffect, createSignal, Show } from 'solid-js'; +import { AiOutlineCopy } from 'solid-icons/ai' +import toast, { Toaster } from 'solid-toast'; +import { useParams } from '@solidjs/router'; +import { supabase } from '../../../supabase-client'; +import Button from '../../../components/UI/Button/Button'; + +const notify = () => toast('Success! Creator ID Bytes was successfully copied to the clipboard.'); + +const FabricTransaction = () => { + const [details, setDetails] = createSignal({}); + const params = useParams(); + + createEffect(async () => { + try { + const { data, error } = await supabase + .from("fabric_transactions") + .select("*") + .match({ id: params.id}); + if (data?.[0]) { + console.log(data) + setDetails(data[0]); + } else { + throw new Error("Failed to load block details"); + } + } catch (error:any) { + console.error(error.message); + } + }, []); + + const copyIdToClipboard = () => { + navigator.clipboard.writeText(details().creator_id_bytes) + notify() + } + + return ( +
+
+ Failed to load details
}> +

Transaction Details

+

+ Created at: + {details().created_at} +

+

+ Block ID: {details().block_id}{" "} +

+

+ {" "} + Transaction ID: + {details().transaction_id} +

+

+ {" "} + Channel name: + {details().channel_id} +

+ +

+ {" "} + Status + {details().status} +

+ +

+ {" "} + Type + {details().type} +

+ {/* +

+ {" "} + Validation Code + {details().validation_code} +

+

+ {" "} + Network name: + {details().network_name} +

+ */} +

+ {" "} + Chaincode Name: + {details().chaincode_name} +

+

+ {" "} + Creator ID Bytes: + {details().creator_id_bytes} + +

+

+ {" "} + Creator nonce: + {details().creator_nonce} +

+

+ {" "} + Creator MSP ID: + {details().creator_msp_id} +

+

+ {" "} + Endorser MSP ID: + {details().endorser_msp_id} +

+

+ {" "} + Payload Proposal Hash: + {details().payload_proposal_hash} +

+ +
+ + + ); + }; +export default FabricTransaction + + diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.module.css b/packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.module.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.tsx b/packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.tsx new file mode 100644 index 0000000000..a8b7690db5 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/fabric/TransactionsFabric/TransactionsFabric.tsx @@ -0,0 +1,60 @@ +import { createSignal, createEffect, Show } from "solid-js"; +import { useNavigate, useParams } from "@solidjs/router"; +import { supabase } from "../../../supabase-client"; +import CardWrapper from "../../../components/CardWrapper/CardWrapper"; +import { Transaction } from "../../../schema/supabase-types"; +// @ts-expect-error +import styles from "./TransactionsFabric.module.css"; + +const TransactionsFabric = () => { + const navigate = useNavigate(); + const [transactions, setTransactions] = createSignal([]); + + const txnTableProps = { + onClick: { + action: (param: string) => { + navigate(`/fabric/txn-details/${param}`); + }, + prop:"id", + }, + schema: [ + { display: "created at", objProp: ["created_at"] }, + { display: "transaction id", objProp: ["transaction_id"] }, + { display: "channel name", objProp: ["channel_id"] }, + { display: "block id", objProp: ["block_id"] }, + { display: "status", objProp: ["status"] }, + ], + }; + + const fetchTransactions = async () => { + try { + const { data } = await supabase.from("fabric_transactions").select("*"); + if (data) { + setTransactions(data); + } else { + throw new Error("Failed to load transactions"); + } + } catch (error:any) { + console.error(error.message); + } + }; + + createEffect(async () => { + await fetchTransactions(); + }, []); + + return ( +
+ +
+ ); +}; + +export default TransactionsFabric; diff --git a/packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.module.css b/packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.module.css new file mode 100644 index 0000000000..0c0f242381 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.module.css @@ -0,0 +1,16 @@ +.home { + font-weight: 700; + margin:5rem; + font-size: 3rem; + color:rgb(14, 87, 32); + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + gap:2rem; +} + +.home-icon { + font-size: 20rem; + color:rgb(194, 202, 194); +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.tsx b/packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.tsx new file mode 100644 index 0000000000..faac0f5b52 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/pages/shared/Home/Home.tsx @@ -0,0 +1,12 @@ +// @ts-expect-error +import styles from "./Home.module.css" +import { TbCactus } from 'solid-icons/tb' +const Home = () => { + return ( +

Select ledger from the dropdown menu

+ +
+ ) +} + +export default Home \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/schema/supabase-types.ts b/packages/cacti-cmd-gui-app/src/schema/supabase-types.ts new file mode 100644 index 0000000000..45b608e68e --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/schema/supabase-types.ts @@ -0,0 +1,103 @@ +export interface ERC20Txn { + account_address: string; + token_address: string; + uri: string; + token_id: number; + id: string; + balance: number; + last_owner_change: string; +} + +export interface ERC721Txn { + account_address: string; + token_address: string; + uri: string; + token_id: number; + id: string; + last_owner_change: string; +} + +export interface TokenMetadata20 { + address: string; + name: string; + symbol: string; + total_supply: number; + created_at: string; +} + +export interface TokenMetadata721 { + address: string; + name: string; + symbol: string; + created_at: string; +} + +export interface Block { + number: number; + created_at: string; + hash: string; + number_of_tx: number; + sync_at: string; +} + +export interface TokenTransfer { + transaction_id: string; + sender: string; + recipient: string; + value: number; + id: string; +} + +export interface Transaction { + index: number; + hash: string; + block_number: number; + from: string; + to: string; + eth_value: number; + method_signature: string; + method_name: string; + id: string; +} + +export interface TokenHistoryItem { + transaction_hash: string | null; + token_address: string | null; + created_at: string | null; + sender: string | null; + recipient: string | null; +} + +export interface TokenHistoryItem721 extends TokenHistoryItem { + token_id: number | null; +} + +export interface TokenHistoryItem20 extends TokenHistoryItem { + value: number | null; +} + +export interface TokenTransactionMetadata721 { + account_address: string; + token_address: string; + uri: string; + symbol: string; +} + +export interface TableProperty { + display: string; + objProp: string[]; +} + +export interface TableRowClick { + action: (param: string) => void; + prop: string; +} +export interface TableProps { + onClick: TableRowClick; + schema: TableProperty[]; +} + +export interface balanceDate { + created_at: string; + balance: number; +} diff --git a/packages/cacti-cmd-gui-app/src/schema/token-standards.ts b/packages/cacti-cmd-gui-app/src/schema/token-standards.ts new file mode 100644 index 0000000000..65ad5a514c --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/schema/token-standards.ts @@ -0,0 +1,4 @@ +export const STANDARDS = { + erc20: "ERC20", + erc721: "ERC721", +}; diff --git a/packages/cacti-cmd-gui-app/src/supabase-client.tsx b/packages/cacti-cmd-gui-app/src/supabase-client.tsx new file mode 100644 index 0000000000..11dbd850c8 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/supabase-client.tsx @@ -0,0 +1,7 @@ +import { createClient } from "@supabase/supabase-js"; + +let supabaseUrl = "http://localhost:8000"; +let supabaseKey = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE"; + +export const supabase = createClient(supabaseUrl, supabaseKey); diff --git a/packages/cacti-cmd-gui-app/styles.d.ts b/packages/cacti-cmd-gui-app/styles.d.ts new file mode 100644 index 0000000000..f2d12bb56c --- /dev/null +++ b/packages/cacti-cmd-gui-app/styles.d.ts @@ -0,0 +1,4 @@ +declare module "*.module.css" { + const classes: { [key: string]: string }; + export default classes; +} diff --git a/packages/cacti-cmd-gui-app/tailwind.config.ts b/packages/cacti-cmd-gui-app/tailwind.config.ts new file mode 100644 index 0000000000..06602b374a --- /dev/null +++ b/packages/cacti-cmd-gui-app/tailwind.config.ts @@ -0,0 +1,11 @@ +module.exports = { + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + darkMode: false, // or 'media' or 'class' + theme: { + extend: {}, + }, + variants: { + extend: {}, + }, + plugins: [], +}; diff --git a/packages/cacti-cmd-gui-app/tsconfig.json b/packages/cacti-cmd-gui-app/tsconfig.json new file mode 100644 index 0000000000..d8f03f3180 --- /dev/null +++ b/packages/cacti-cmd-gui-app/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "include": [ + "./src" + ], + "compilerOptions": { + "jsx": "preserve", + "jsxImportSource": "solid-js", + "plugins": [ + { + "name": "typescript-plugin-css-modules" + } + ], + "outDir": "./dist/out-tsc", + "rootDir": "./src", + "tsBuildInfoFile": "../../.build-cache/cactus-cmd-gui-app.tsbuildinfo" + }, + +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/vite.config.ts b/packages/cacti-cmd-gui-app/vite.config.ts new file mode 100644 index 0000000000..279d6a4fca --- /dev/null +++ b/packages/cacti-cmd-gui-app/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "vite"; +import solidPlugin from "vite-plugin-solid"; + +export default defineConfig({ + plugins: [solidPlugin()], + server: { + port: 3001, + }, + build: { + target: "esnext", + outDir: "./dist/lib", + }, +}); diff --git a/tsconfig.json b/tsconfig.json index 8e7f7078ce..e34b210a73 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,9 @@ { "path": "./packages/cactus-cmd-socketio-server/tsconfig.json" }, + { + "path": "./packages/cacti-cmd-gui-app/tsconfig.json" + }, { "path": "./packages/cactus-common/tsconfig.json" }, diff --git a/yarn.lock b/yarn.lock index 8ad127e2c4..4c73fe36dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.0.1": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" + integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== + "@adraffy/ens-normalize@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d" @@ -606,6 +611,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA== +"@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== + "@babel/core@7.19.3": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" @@ -711,6 +721,27 @@ json5 "^2.1.2" semver "^6.3.0" +"@babel/core@^7.18.6": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" + integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.8" + "@babel/types" "^7.22.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.1" + "@babel/generator@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" @@ -740,6 +771,16 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.18.7", "@babel/generator@^7.22.7", "@babel/generator@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" + integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== + dependencies: + "@babel/types" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" @@ -860,6 +901,17 @@ lru-cache "^5.1.1" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" + integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz#2192a1970ece4685fbff85b48da2c32fcb130b7c" @@ -889,6 +941,21 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/helper-split-export-declaration" "^7.18.6" +"@babel/helper-create-class-features-plugin@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" + integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.16.7": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" @@ -1031,6 +1098,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-module-imports@7.18.6", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -1038,13 +1112,6 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-module-imports@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" @@ -1115,6 +1182,17 @@ "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" +"@babel/helper-module-transforms@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -1178,6 +1256,15 @@ "@babel/traverse" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-replace-supers@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" @@ -1248,6 +1335,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" @@ -1349,6 +1443,15 @@ "@babel/traverse" "^7.21.5" "@babel/types" "^7.21.5" +"@babel/helpers@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" + integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== + dependencies: + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.6" + "@babel/types" "^7.22.5" + "@babel/highlight@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d" @@ -1420,6 +1523,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== +"@babel/parser@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" + integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" @@ -1654,6 +1762,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" @@ -1717,6 +1832,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript@^7.7.2": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" @@ -1869,7 +1991,7 @@ "@babel/helper-module-transforms" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.19.6": +"@babel/plugin-transform-modules-commonjs@^7.19.6", "@babel/plugin-transform-modules-commonjs@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" integrity "sha1-fZh1kI0ZuMBTYIWvewU/1b1lG/o= sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==" @@ -2030,6 +2152,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typescript@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" + integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" @@ -2137,6 +2269,17 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-typescript@^7.18.6": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" + integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-typescript" "^7.22.5" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" @@ -2319,6 +2462,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": + version "7.22.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" + integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.7" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/types" "^7.22.5" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.51.tgz#d802b7b543b5836c778aa691797abf00f3d97ea9" @@ -2336,15 +2495,7 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" - integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.19.3", "@babel/types@^7.20.2", "@babel/types@^7.22.5": +"@babel/types@^7.18.4", "@babel/types@^7.19.3", "@babel/types@^7.20.2", "@babel/types@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== @@ -2353,6 +2504,14 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" +"@babel/types@^7.18.6", "@babel/types@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" @@ -2972,6 +3131,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz#ee400af7b3bc69e8ca2e593ca35156ffb9abd54f" integrity sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA== +"@esbuild/linux-loong64@0.14.54": + version "0.14.54" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" + integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== + "@esbuild/linux-loong64@0.17.8": version "0.17.8" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz#8c509d8a454693d39824b83b3f66c400872fce82" @@ -5842,20 +6006,67 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@socket.io/component-emitter@~3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" - integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== +"@solid-primitives/timer@^1.3.2": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@solid-primitives/timer/-/timer-1.3.7.tgz#58bcbc7600137b03ce6887390f300b109f9299b6" + integrity sha512-zS3qA7WVZYsW7+iTdk2M4W1wpMvRhdcMnO23Tcd+nX3YD7eMvjOnO15Oz2mymyfl/OC2ZgM1L5ec66GayEvPwQ== -"@stencil/core@^2.14.2": - version "2.15.2" - resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.15.2.tgz#73a18050714a9edc488e6a2ea3380f5a91a04690" - integrity sha512-D6dv2KAXlWt9mjC28q0s6anghQgXRn0k93suOf+4pqsv1Uq19zNJXpYL68N5GxMSiNZyMPTU4Tt2NCbut7DVGg== +"@solidjs/router@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.4.2.tgz#0755a9212e648f1220c081f65aaaa049475ab09f" + integrity sha512-RswymVhqnGVHMCo/01X9wE+u98pzYZQ/b23SgjO/PK+8oTgdY1f83OrsWR1A01LieTySkCSw7nunWTi+VOQyWA== -"@stencil/core@~2.12.0": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.12.1.tgz#92364d3e57337b8d36dd9b70cfbed2833929f22d" - integrity sha512-u24TZ+FEvjnZt5ZgIkLjLpUNsO6Ml3mUZqwmqk81w6RWWz75hgB5p4RFI5rvuErFeh2xvMIGo+pNdG24XUBz1A== +"@stencil/core@^2.18.0": + version "2.22.3" + resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.22.3.tgz#83987e20bba855c450f6d6780e3a20192603f13f" + integrity sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng== + +"@supabase/functions-js@^1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@supabase/functions-js/-/functions-js-1.3.4.tgz#44f86f7cf949baa7f1bb414f3b8c0985a19df633" + integrity sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw== + dependencies: + cross-fetch "^3.1.5" + +"@supabase/gotrue-js@^1.22.21": + version "1.24.0" + resolved "https://registry.yarnpkg.com/@supabase/gotrue-js/-/gotrue-js-1.24.0.tgz#0afbb158071a8dd5e78cf386a068c71c9f534425" + integrity sha512-6PVv7mHCFOxLm6TSBfR7hsq/y3CMKpvzePVR+ZWtlFBTjJ2J87g2OYE9bgC61P5TNeZopUXKw93H92yz0MTALw== + dependencies: + cross-fetch "^3.0.6" + +"@supabase/postgrest-js@^0.37.4": + version "0.37.4" + resolved "https://registry.yarnpkg.com/@supabase/postgrest-js/-/postgrest-js-0.37.4.tgz#8bc2a1353e139962dca931a8e7c8416d60b4a8ed" + integrity sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw== + dependencies: + cross-fetch "^3.1.5" + +"@supabase/realtime-js@^1.7.4": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@supabase/realtime-js/-/realtime-js-1.7.5.tgz#387f094655c11d5608df9a3039c5f01186a5f401" + integrity sha512-nXuoxt7NE1NTI+G8WBim1K2gkUC8YE3e9evBUG+t6xwd9Sq+sSOrjcE0qJ8/Y631BCnLzlhX6yhFYQFh1oQDOg== + dependencies: + "@types/phoenix" "^1.5.4" + websocket "^1.0.34" + +"@supabase/storage-js@^1.7.2": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@supabase/storage-js/-/storage-js-1.7.3.tgz#b53cd6d289e2223919e6526364fd46977a643fbe" + integrity sha512-jnIZWqOc9TGclOozgX9v/RWGFCgJAyW/yvmauexgRZhWknUXoA4b2i8tj7vfwE0WTvNRuA5JpXID98rfJeSG7Q== + dependencies: + cross-fetch "^3.1.0" + +"@supabase/supabase-js@1.35.6": + version "1.35.6" + resolved "https://registry.yarnpkg.com/@supabase/supabase-js/-/supabase-js-1.35.6.tgz#df5a2c132035ab9e5462ed474587902b3e767a66" + integrity sha512-KDRXRr+kdGwruIUizZPALbe5YccMYFVyZJf1sFWKLncaLYSFiM6iKFnqCrNeQ4JFoZZiICkiTl1FUuai62jVpg== + dependencies: + "@supabase/functions-js" "^1.3.4" + "@supabase/gotrue-js" "^1.22.21" + "@supabase/postgrest-js" "^0.37.4" + "@supabase/realtime-js" "^1.7.4" + "@supabase/storage-js" "^1.7.2" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -6895,6 +7106,11 @@ pg-protocol "*" pg-types "^2.2.0" +"@types/phoenix@^1.5.4": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@types/phoenix/-/phoenix-1.6.0.tgz#eb7536259ee695646e75c4c7b0c9a857ea174781" + integrity sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g== + "@types/prettier@^2.1.5": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" @@ -7629,6 +7845,13 @@ abstract-leveldown@^6.2.1: level-supports "~1.0.0" xtend "~4.0.0" +abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: + version "0.12.4" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410" + integrity sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA== + dependencies: + xtend "~3.0.0" + abstract-leveldown@~2.7.1: version "2.7.2" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" @@ -7986,6 +8209,30 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +apexcharts@3.36.0: + version "3.36.0" + resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.36.0.tgz#eba378167be3ebe5044b8980d5907bad9e9a7fff" + integrity sha512-9r7M/SOfnYS1g4G1gmRRgeIN1Oj+ct1S0G6PpMPPD3F4jGHgWl5EzxqvoQkk3vpTxN8MbZB5ZHWIAQvPuFiA+w== + dependencies: + svg.draggable.js "^2.2.2" + svg.easing.js "^2.0.0" + svg.filter.js "^2.0.2" + svg.pathmorphing.js "^0.1.3" + svg.resize.js "^1.4.3" + svg.select.js "^3.0.1" + +apexcharts@^3.33.1: + version "3.41.0" + resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.41.0.tgz#7aef77275c19dfb925552d6fc8e027443a6d1337" + integrity sha512-FJXA7NVjxs1q+ptR3b1I+pN8K/gWuXn+qLZjFz8EHvJOokdgcuwa/HSe5aC465HW/LWnrjWLSTsOQejQbQ42hQ== + dependencies: + svg.draggable.js "^2.2.2" + svg.easing.js "^2.0.0" + svg.filter.js "^2.0.2" + svg.pathmorphing.js "^0.1.3" + svg.resize.js "^1.4.3" + svg.select.js "^3.0.1" + apisauce@^2.1.5: version "2.1.6" resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-2.1.6.tgz#94887f335bf3d735305fc895c8a191c9c2608a7f" @@ -8574,6 +8821,18 @@ autoprefixer@10.4.13: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +autoprefixer@10.4.8: + version "10.4.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.8.tgz#92c7a0199e1cfb2ad5d9427bd585a3d75895b9e5" + integrity sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw== + dependencies: + browserslist "^4.21.3" + caniuse-lite "^1.0.30001373" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -8804,6 +9063,17 @@ babel-plugin-jest-hoist@^29.5.0: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" +babel-plugin-jsx-dom-expressions@^0.36.10: + version "0.36.10" + resolved "https://registry.yarnpkg.com/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.36.10.tgz#8f05f12b1c8622453ec4db48b95e5d1495fe497a" + integrity sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg== + dependencies: + "@babel/helper-module-imports" "7.18.6" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.20.7" + html-entities "2.3.3" + validate-html-nesting "^1.2.1" + babel-plugin-minify-builtins@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" @@ -9043,6 +9313,13 @@ babel-preset-minify@^0.5.1: babel-plugin-transform-undefined-to-void "^6.9.4" lodash "^4.17.11" +babel-preset-solid@^1.4.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/babel-preset-solid/-/babel-preset-solid-1.7.7.tgz#316ad3e1c11083772358c3b7796a5ab234987a0e" + integrity sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg== + dependencies: + babel-plugin-jsx-dom-expressions "^0.36.10" + babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -9140,6 +9417,11 @@ big-integer@1.6.36: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -9243,6 +9525,13 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +bl@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" + integrity sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw== + dependencies: + readable-stream "~1.0.26" + blakejs@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" @@ -9372,7 +9661,7 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@1.20.2, body-parser@^1.20.0: +body-parser@1.20.2, body-parser@^1.10.0, body-parser@^1.20.0: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -9580,6 +9869,15 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" +browserify-fs@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f" + integrity sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg== + dependencies: + level-filesystem "^1.0.1" + level-js "^2.1.3" + levelup "^0.18.2" + browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" @@ -9631,7 +9929,7 @@ browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.20.2: node-releases "^2.0.3" picocolors "^1.0.0" -browserslist@^4.21.4: +browserslist@^4.21.4, browserslist@^4.21.9: version "4.21.9" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== @@ -10107,6 +10405,11 @@ caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz#029a2f8bfc025d4820fafbfaa6259fd7778340c7" integrity sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw== +caniuse-lite@^1.0.30001373: + version "1.0.30001516" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz#621b1be7d85a8843ee7d210fd9d87b52e3daab3a" + integrity sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g== + caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001503: version "1.0.30001510" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001510.tgz#077b7ceba430473142ffd47ed89a78bd7b10075f" @@ -10273,6 +10576,11 @@ charenc@0.0.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== +chart.js@3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.9.1.tgz#3abf2c775169c4c71217a107163ac708515924b8" + integrity sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w== + check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -10575,6 +10883,11 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +clone@~0.1.9: + version "0.1.19" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" + integrity sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw== + cloudant-follow@~0.17.0: version "0.17.0" resolved "https://registry.yarnpkg.com/cloudant-follow/-/cloudant-follow-0.17.0.tgz#842513a74e72c440e61dc2b6fd96eedbd9cef38a" @@ -10792,6 +11105,11 @@ commander@^9.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== +commander@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" + integrity sha512-J2wnb6TKniXNOtoHS8TSrG9IOQluPrsmyAJ8oCUJOBmv+uLBCyPYAZkD2jFvw2DCzIXNnISIM01NIvr35TkBMQ== + comment-json@^4.1.0, comment-json@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.2.tgz#5fae70a94e0c8f84a077bd31df5aa5269252f293" @@ -10876,7 +11194,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.2: +concat-stream@^1.4.4, concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -11426,6 +11744,13 @@ cross-env@7.0.3: dependencies: cross-spawn "^7.0.1" +cross-fetch@^3.0.6, cross-fetch@^3.1.0, cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-fetch@^3.1.4: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" @@ -11622,6 +11947,14 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" +css-selector-tokenizer@^0.7.0: + version "0.7.3" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" + integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" @@ -11654,6 +11987,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== +csstype@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + csv-parse@^4.4.6: version "4.16.3" resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" @@ -11689,6 +12027,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + data-urls@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" @@ -11764,7 +12107,7 @@ debug@3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -11995,6 +12338,13 @@ defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +deferred-leveldown@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" + integrity sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng== + dependencies: + abstract-leveldown "~0.12.1" + deferred-leveldown@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" @@ -12050,6 +12400,11 @@ defined@^1.0.1: resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" integrity "sha1-wLnbJ7+v/ZXW9hOZQZuJPfD5Hr8= sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==" +defu@^6.0.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" + integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== + del-cli@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-4.0.1.tgz#2303ccaa45708ee8c6211568344cf87336abf30a" @@ -12607,6 +12962,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -12699,11 +13059,6 @@ engine.io-parser@~5.0.3: dependencies: "@socket.io/base64-arraybuffer" "~1.0.2" -engine.io-parser@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.1.0.tgz#d593d6372d7f79212df48f807b8cace1ea1cb1b8" - integrity sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w== - engine.io@~6.1.0: version "6.1.3" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.1.3.tgz#f156293d011d99a3df5691ac29d63737c3302e6f" @@ -12736,23 +13091,7 @@ engine.io@~6.2.1: engine.io-parser "~5.0.3" ws "~8.2.3" -engine.io@~6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.0.tgz#02b9d9941c0d3ab2d46628e98ac3331dd533dff0" - integrity sha512-UlfoK1iD62Hkedw2TmuHdhDsZCGaAyp+LZ/AvnImjYBeWagA3qIEETum90d6shMeFZiDuGT66zVCdx1wKYKGGg== - dependencies: - "@types/cookie" "^0.4.1" - "@types/cors" "^2.8.12" - "@types/node" ">=10.0.0" - accepts "~1.3.4" - base64id "2.0.0" - cookie "~0.4.1" - cors "~2.8.5" - debug "~4.3.1" - engine.io-parser "~5.1.0" - ws "~8.11.0" - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.9.2, enhanced-resolve@^5.9.3: +enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: version "5.12.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== @@ -12983,11 +13322,111 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" +esbuild-android-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" + integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== + +esbuild-android-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" + integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== + +esbuild-darwin-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" + integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== + +esbuild-darwin-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" + integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== + +esbuild-freebsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" + integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== + +esbuild-freebsd-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" + integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== + +esbuild-linux-32@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" + integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== + +esbuild-linux-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" + integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== + +esbuild-linux-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" + integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== + +esbuild-linux-arm@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" + integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== + +esbuild-linux-mips64le@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" + integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== + +esbuild-linux-ppc64le@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" + integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== + +esbuild-linux-riscv64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" + integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== + +esbuild-linux-s390x@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" + integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== + +esbuild-netbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" + integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== + +esbuild-openbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" + integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== + +esbuild-sunos-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" + integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== + esbuild-wasm@0.17.8: version "0.17.8" resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.17.8.tgz#c2348306430c27613ee3cc9a955cdd54df29137a" integrity sha512-zCmpxv95E0FuCmvdw1K836UHnj4EdiQnFfjTby35y3LAjRPtXMj3sbHDRHjbD8Mqg5lTwq3knacr/1qIFU51CQ== +esbuild-windows-32@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" + integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== + +esbuild-windows-64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" + integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== + +esbuild-windows-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" + integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== + esbuild@0.17.8: version "0.17.8" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.8.tgz#f7f799abc7cdce3f0f2e3e0c01f120d4d55193b4" @@ -13016,6 +13455,33 @@ esbuild@0.17.8: "@esbuild/win32-ia32" "0.17.8" "@esbuild/win32-x64" "0.17.8" +esbuild@^0.14.47: + version "0.14.54" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" + integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== + optionalDependencies: + "@esbuild/linux-loong64" "0.14.54" + esbuild-android-64 "0.14.54" + esbuild-android-arm64 "0.14.54" + esbuild-darwin-64 "0.14.54" + esbuild-darwin-arm64 "0.14.54" + esbuild-freebsd-64 "0.14.54" + esbuild-freebsd-arm64 "0.14.54" + esbuild-linux-32 "0.14.54" + esbuild-linux-64 "0.14.54" + esbuild-linux-arm "0.14.54" + esbuild-linux-arm64 "0.14.54" + esbuild-linux-mips64le "0.14.54" + esbuild-linux-ppc64le "0.14.54" + esbuild-linux-riscv64 "0.14.54" + esbuild-linux-s390x "0.14.54" + esbuild-netbsd-64 "0.14.54" + esbuild-openbsd-64 "0.14.54" + esbuild-sunos-64 "0.14.54" + esbuild-windows-32 "0.14.54" + esbuild-windows-64 "0.14.54" + esbuild-windows-arm64 "0.14.54" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -13963,6 +14429,14 @@ express-unless@^2.1.3: resolved "https://registry.yarnpkg.com/express-unless/-/express-unless-2.1.3.tgz#f951c6cca52a24da3de32d42cfd4db57bc0f9a2e" integrity sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ== +express-ws@^0.2.1: + version "0.2.6" + resolved "https://registry.yarnpkg.com/express-ws/-/express-ws-0.2.6.tgz#6af2a7034db2f360cdd9403347cabf5253c279e8" + integrity sha512-ADNOy9OY5wTki4zLbTYcbfTFM1xG7MVu04+g2Fbf6MD/m3LyoiVXjwj5II6Ig27MmPCxUngyCGS3lSCo90/eLQ== + dependencies: + url-join "0.0.1" + ws "~0.4.31" + express@4.16.4: version "4.16.4" resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" @@ -14071,7 +14545,7 @@ express@4.17.3, express@^4.14.0, express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -express@4.18.2, express@^4.17.3, express@^4.18.1: +express@4.18.2, express@^4.10.6, express@^4.17.3, express@^4.18.1: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -14493,6 +14967,11 @@ fastest-levenshtein@^1.0.12: resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -14526,6 +15005,14 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + fetch-cookie@0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz#e046d2abadd0ded5804ce7e2cae06d4331c15407" @@ -14842,7 +15329,7 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -foreach@^2.0.4: +foreach@^2.0.4, foreach@~2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== @@ -14918,6 +15405,13 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -15135,6 +15629,13 @@ functions-have-names@^1.2.2, functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +fwd-stream@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" + integrity sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg== + dependencies: + readable-stream "~1.0.26-4" + ganache-cli@^6.12.2: version "6.12.2" resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" @@ -15241,6 +15742,13 @@ gcp-metadata@^4.2.0: gaxios "^4.0.0" json-bigint "^1.0.0" +generic-names@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" + integrity sha512-b6OHfQuKasIKM9b6YPkX+KUj/TLBTx3B/1aT1T5F12FEuEqyFMdr59OMS53aoaSw8eVtapdqieX6lbg5opaOhA== + dependencies: + loader-utils "^0.2.16" + gensequence@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.1.1.tgz#95c1afc7c0680f92942c17f2d6f83f3d26ea97af" @@ -16362,7 +16870,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^2.3.2: +html-entities@2.3.3, html-entities@^2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== @@ -16618,11 +17126,23 @@ iconv-lite@^0.6.2, iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +icss-utils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-3.0.1.tgz#ee70d3ae8cac38c6be5ed91e851b27eed343ad0f" + integrity sha512-ANhVLoEfe0KoC9+z4yiTaXOneB49K6JIXdS+yAgH0NERELpdIT7kkj2XxUPuHafeHnn8umXnECSpsfk1RTaUew== + dependencies: + postcss "^6.0.2" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== +idb-wrapper@^1.5.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" + integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== + idna-uts46-hx@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" @@ -16733,7 +17253,7 @@ indent-string@^5.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== -indexof@0.0.1: +indexof@0.0.1, indexof@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== @@ -17533,6 +18053,11 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== +is-object@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" + integrity sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ== + is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -17759,6 +18284,11 @@ is-what@^3.14.1: resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== +is-what@^4.1.8: + version "4.1.15" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.15.tgz#de43a81090417a425942d67b1ae86e7fae2eee0e" + integrity sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -17781,6 +18311,11 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +is@~0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" + integrity sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -17806,6 +18341,11 @@ isbinaryfile@^4.0.8: resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== +isbuffer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" + integrity sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g== + isemail@3.x.x: version "3.2.0" resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" @@ -19546,6 +20086,11 @@ json5@2.2.2, json5@2.x, json5@^2.1.1, json5@^2.1.2, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -19816,6 +20361,11 @@ keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keen-slider@^6.7.0: + version "6.8.6" + resolved "https://registry.yarnpkg.com/keen-slider/-/keen-slider-6.8.6.tgz#17bb7b219860f291a5ea5fde4496b737bf407a83" + integrity sha512-dcEQ7GDBpCjUQA8XZeWh3oBBLLmyn8aoeIQFGL/NTVkoEOsmlnXqA4QykUm/SncolAZYGsEk/PfUhLZ7mwMM2w== + key-encoder@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/key-encoder/-/key-encoder-2.0.3.tgz#77073bb48ff1fe2173bb2088b83b91152c8fa4ba" @@ -19992,7 +20542,7 @@ less-loader@11.1.0: dependencies: klona "^2.0.4" -less@4.1.3: +less@4.1.3, less@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" integrity "sha1-F1vp3cv5slAXPgoAtNaSClt3AkY= sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==" @@ -20009,6 +20559,15 @@ less@4.1.3: needle "^3.1.0" source-map "~0.6.0" +level-blobs@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" + integrity sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg== + dependencies: + level-peek "1.0.6" + once "^1.3.0" + readable-stream "^1.0.26-4" + level-codec@9.0.2, level-codec@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" @@ -20035,6 +20594,40 @@ level-errors@^2.0.0, level-errors@~2.0.0: dependencies: errno "~0.1.1" +level-filesystem@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" + integrity sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g== + dependencies: + concat-stream "^1.4.4" + errno "^0.1.1" + fwd-stream "^1.0.4" + level-blobs "^0.1.7" + level-peek "^1.0.6" + level-sublevel "^5.2.0" + octal "^1.0.0" + once "^1.3.0" + xtend "^2.2.0" + +level-fix-range@2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" + integrity sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA== + dependencies: + clone "~0.1.9" + +level-fix-range@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" + integrity sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ== + +"level-hooks@>=4.4.0 <5": + version "4.5.0" + resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" + integrity sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA== + dependencies: + string-range "~1.2" + level-iterator-stream@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" @@ -20044,6 +20637,18 @@ level-iterator-stream@~4.0.0: readable-stream "^3.4.0" xtend "^4.0.2" +level-js@^2.1.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697" + integrity sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ== + dependencies: + abstract-leveldown "~0.12.0" + idb-wrapper "^1.5.0" + isbuffer "~0.0.0" + ltgt "^2.1.2" + typedarray-to-buffer "~1.0.0" + xtend "~2.1.2" + level-js@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/level-js/-/level-js-5.0.2.tgz#5e280b8f93abd9ef3a305b13faf0b5397c969b55" @@ -20062,6 +20667,23 @@ level-packager@^5.1.0: encoding-down "^6.3.0" levelup "^4.3.2" +level-peek@1.0.6, level-peek@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" + integrity sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ== + dependencies: + level-fix-range "~1.0.2" + +level-sublevel@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" + integrity sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA== + dependencies: + level-fix-range "2.0" + level-hooks ">=4.4.0 <5" + string-range "~1.2.1" + xtend "~2.0.4" + level-supports@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" @@ -20134,6 +20756,19 @@ levelup@4.4.0, levelup@^4.3.2: level-supports "~1.0.0" xtend "~4.0.0" +levelup@^0.18.2: + version "0.18.6" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb" + integrity sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q== + dependencies: + bl "~0.8.1" + deferred-leveldown "~0.2.0" + errno "~0.1.1" + prr "~0.0.0" + readable-stream "~1.0.26" + semver "~2.3.1" + xtend "~3.0.0" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -20203,6 +20838,11 @@ license-webpack-plugin@4.0.2: dependencies: webpack-sources "^3.0.0" +lilconfig@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -20292,6 +20932,16 @@ loader-utils@3.2.1: resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" integrity "sha1-T7EEtZnar9gu8+GkH7kmX4fh9XY= sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug== + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + loader-utils@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" @@ -21061,6 +21711,13 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" +merge-anything@^5.0.2: + version "5.1.7" + resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.1.7.tgz#94f364d2b0cf21ac76067b5120e429353b3525d7" + integrity sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ== + dependencies: + is-what "^4.1.8" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -21561,7 +22218,7 @@ module-error@^1.0.1, module-error@^1.0.2: resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== -moment@^2.22.1: +moment@2.29.4, moment@^2.22.1: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== @@ -21768,6 +22425,11 @@ nan@^2.13.2, nan@^2.14.0, nan@^2.14.1, nan@^2.15.0, nan@^2.2.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +nan@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-1.0.0.tgz#ae24f8850818d662fcab5acf7f3b95bfaa2ccf38" + integrity sha512-Wm2/nFOm2y9HtJfgOLnctGbfvF23FcQZeyUZqDD8JQG3zO5kXh3MkQKiUaA68mJiVWrOzLFkAV1u6bC8P52DJA== + nano-base32@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" @@ -21956,6 +22618,15 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== +net-browserify@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/net-browserify/-/net-browserify-0.2.4.tgz#eb898e2ebd1afce89571f260b4f187018aa2f2a9" + integrity sha512-CFqGiCbt642O5clBqqWQ5POzE7Y8gE8LpSyUFPdPS2fI4Zt5H8GoBc8vtMSuOd/5f3KLhlReH3sdeVeZDn25Lg== + dependencies: + body-parser "^1.10.0" + express "^4.10.6" + express-ws "^0.2.1" + new-github-release-url@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/new-github-release-url/-/new-github-release-url-1.0.0.tgz#493847e6fecce39c247e9d89929be773d2e7f777" @@ -22048,6 +22719,11 @@ node-addon-api@^4.2.0, node-addon-api@^4.3.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -22055,11 +22731,27 @@ node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.12: + version "2.6.12" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" + integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^3.2.10: + version "3.3.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" + integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + "node-fetch@https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz": version "2.6.7" resolved "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz#1b5d62978f2ed07b99444f64f0df39f960a6d34d" -node-forge@1.3.0, node-forge@>=1.3.0, node-forge@^1, node-forge@^1.0.0: +node-forge@1.3.0, node-forge@>=1.3.0, node-forge@^0.7.0, node-forge@^1, node-forge@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== @@ -22685,6 +23377,20 @@ object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-keys@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" + integrity sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA== + dependencies: + foreach "~2.0.1" + indexof "~0.0.1" + is "~0.2.6" + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -22773,6 +23479,11 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +octal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" + integrity sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ== + on-finished@2.4.1, on-finished@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -22904,6 +23615,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + integrity sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg== + optjs@~3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" @@ -23891,6 +24607,41 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-filter-plugins@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-3.0.1.tgz#9d226e946d56542ab7c26123053459a331df545d" + integrity sha512-tRKbW4wWBEkSSFuJtamV2wkiV9rj6Yy7P3Y13+zaynlPEEZt8EgYKn3y/RBpMeIhNmHXFlSdzofml65hD5OafA== + dependencies: + postcss "^6.0.14" + +postcss-icss-keyframes@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/postcss-icss-keyframes/-/postcss-icss-keyframes-0.2.1.tgz#80c4455e0112b0f2f9c3c05ac7515062bb9ff295" + integrity sha512-4m+hLY5TVqoTM198KKnzdNudyu1OvtqwD+8kVZ9PNiEO4+IfHYoyVvEXsOHjV8nZ1k6xowf+nY4HlUfZhOFvvw== + dependencies: + icss-utils "^3.0.1" + postcss "^6.0.2" + postcss-value-parser "^3.3.0" + +postcss-icss-selectors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-icss-selectors/-/postcss-icss-selectors-2.0.3.tgz#27fa1afcaab6c602c866cbb298f3218e9bc1c9b3" + integrity sha512-dxFtq+wscbU9faJaH8kIi98vvCPDbt+qg1g9GoG0os1PY3UvgY1Y2G06iZrZb1iVC9cyFfafwSY1IS+IQpRQ4w== + dependencies: + css-selector-tokenizer "^0.7.0" + generic-names "^1.0.2" + icss-utils "^3.0.1" + lodash "^4.17.4" + postcss "^6.0.2" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + postcss-loader@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.2.tgz#b53ff44a26fba3688eee92a048c7f2d4802e23bb" @@ -23944,11 +24695,25 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-value-parser@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.16: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@8.4.21: version "8.4.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" @@ -23958,6 +24723,15 @@ postcss@8.4.21: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^6.0.14, postcss@^6.0.2: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + postcss@^8.2.14: version "8.4.13" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" @@ -23985,6 +24759,15 @@ postcss@^8.3.7: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.14: + version "8.4.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.26.tgz#1bc62ab19f8e1e5463d98cf74af39702a00a9e94" + integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^8.4.19: version "8.4.24" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" @@ -24580,6 +25363,11 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -25013,7 +25801,7 @@ read-pkg@^6.0.0: parse-json "^5.2.0" type-fest "^1.0.1" -readable-stream@1.1.14, readable-stream@1.1.x: +readable-stream@1.1.14, readable-stream@1.1.x, readable-stream@^1.0.26-4: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= @@ -25082,6 +25870,16 @@ readable-stream@~0.0.2: resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" integrity sha512-azrivNydKRYt7zwLV5wWUK7YzKTWs3q87xSmY6DlHapPrCvaT6ZrukvM5erV+yCSSPmZT8zkSdttOHQpWWm9zw== +readable-stream@~1.0.26, readable-stream@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -25516,6 +26314,11 @@ reselect@^4.0.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== +reserved-words@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + integrity sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw== + resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -25795,6 +26598,13 @@ roarr@^7.0.4: globalthis "^1.0.2" semver-compare "^1.0.0" +rollup@^2.75.6: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -25969,12 +26779,21 @@ sass@1.58.1: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" +sass@^1.56.1: + version "1.63.6" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea" + integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + sax@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.6.0, sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -26146,6 +26965,16 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" + integrity sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA== + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -26249,6 +27078,11 @@ serialize-javascript@6.0.0, serialize-javascript@^6.0.0: dependencies: randombytes "^2.1.0" +seroval@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/seroval/-/seroval-0.5.1.tgz#e6d17365cdaaae7e50815c7e0bcd7102facdadf3" + integrity sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g== + serve-favicon@2.4.5: version "2.4.5" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.4.5.tgz#49d9a46863153a9240691c893d2b0e7d85d6d436" @@ -26682,17 +27516,10 @@ socket.io-adapter@~2.4.0: resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" integrity "sha1-tQpKns3QDDTUyMgIIk2qGnhhUqY= sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" -socket.io-adapter@~2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" - integrity sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA== - dependencies: - ws "~8.11.0" - -socket.io-client@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.1.3.tgz#236daa642a9f229932e00b7221e843bf74232a62" - integrity sha512-hISFn6PDpgDifVUiNklLHVPTMv1LAk8poHArfIUdXa+gKgbr0MZbAlquDFqCqsF30yBqa+jg42wgos2FK50BHA== +socket.io-client@4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.4.tgz#d3cde8a06a6250041ba7390f08d2468ccebc5ac9" + integrity sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" @@ -26742,15 +27569,19 @@ socket.io-parser@~4.2.1: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== +socket.io@4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.4.tgz#a4513f06e87451c17013b8d13fdfaf8da5a86a90" + integrity sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ== dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.2" + engine.io "~6.2.1" + socket.io-adapter "~2.4.0" + socket.io-parser "~4.2.1" -socket.io@4.4.1, socket.io@^4.2.0: +socket.io@^4.2.0: version "4.4.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8" integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg== @@ -26762,31 +27593,6 @@ socket.io@4.4.1, socket.io@^4.2.0: socket.io-adapter "~2.3.3" socket.io-parser "~4.0.4" -socket.io@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.0.tgz#ae21460d5aef23b152d38de64d7c1798cd2d23fc" - integrity sha512-eOpu7oCNiPGBHn9Falg0cAGivp6TpDI3Yt596fbsf+vln8kRLFWxXKrecFrybn/xNYVn9HcdJNAkYToCmTjsyg== - dependencies: - accepts "~1.3.4" - base64id "~2.0.0" - cors "~2.8.5" - debug "~4.3.2" - engine.io "~6.5.0" - socket.io-adapter "~2.5.2" - socket.io-parser "~4.2.4" - -socket.io@^4.4.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.0.tgz#78ae2e84784c29267086a416620c18ef95b37186" - integrity "sha1-eK4uhHhMKSZwhqQWYgwY75WzcYY= sha512-slTYqU2jCgMjXwresG8grhUi/cC6GjzmcfqArzaH3BN/9I/42eZk9yamNvZJdBfTubkjEdKAKs12NEztId+bUA==" - dependencies: - accepts "~1.3.4" - base64id "~2.0.0" - debug "~4.3.2" - engine.io "~6.2.0" - socket.io-adapter "~2.4.0" - socket.io-parser "~4.0.4" - socketio-wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/socketio-wildcard/-/socketio-wildcard-2.0.0.tgz#2466e832276b19163563bee772388747f912475b" @@ -26881,6 +27687,58 @@ solc@^0.8.8: semver "^5.5.0" tmp "0.0.33" +solid-apexcharts@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/solid-apexcharts/-/solid-apexcharts-0.1.6.tgz#0df85186d0c2e49343bddda27db9b1a3915398bb" + integrity sha512-U9pFwLzDk3a/DPphXVlEGXbeU9HUcKVAH0CaSTXRJfRVFXQeVSJn4RDyScaMMJiqr8OZ+IsytudEcZQAvpHvMw== + dependencies: + apexcharts "^3.33.1" + defu "^6.0.0" + solid-js "^1.1.7" + +solid-icons@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/solid-icons/-/solid-icons-1.0.4.tgz#13eb122fe927110e2463c96d226492fb837a9802" + integrity sha512-gJTp4in3+OYCs9WvDkSLt4Los2unR3Uoder8wjh15GsfP20xiNOLfPTJllXmn+fI8+k3x7bRYtLGIgWd9fUQug== + +solid-js@1.5.7: + version "1.5.7" + resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.5.7.tgz#f693adb02c4eee780dec8456866dcd4e099726ca" + integrity sha512-L1UuyMuZZARAwzXo5NZDhE6yxc14aqNbVOUoGzvlcxRZo1Cm4ExhPV0diEfwDyiKG/igqNNLkNurHkXiI5sVEg== + dependencies: + csstype "^3.1.0" + +solid-js@^1.1.7, solid-js@^1.5.4: + version "1.7.8" + resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.7.8.tgz#6856983e3edbcc57b0e003e6fd0c741dd8865892" + integrity sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ== + dependencies: + csstype "^3.1.0" + seroval "^0.5.0" + +solid-refresh@^0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/solid-refresh/-/solid-refresh-0.4.3.tgz#d991613d4554a5eb4b572a6a01ba464d637258a6" + integrity sha512-7+4/gYsVi0BlM4PzT1PU1TB5nW3Hv8FWuB+Kw/ofWui7KQkWBf+dVZOrReQYHEmLCzytHUa2JysUXgzVALJmSw== + dependencies: + "@babel/generator" "^7.18.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/types" "^7.18.4" + +solid-slider@1.3.9: + version "1.3.9" + resolved "https://registry.yarnpkg.com/solid-slider/-/solid-slider-1.3.9.tgz#a0b424b9998e03d498078b83e6bf4da4efce0311" + integrity sha512-oDqXjHpYJ40VLOv2psQnLOokpovfeseCal3PcLGUQkG0k8zM3posQNbUh409RCYbYkBW+XciU9Pq9ftA1W/qXg== + dependencies: + "@solid-primitives/timer" "^1.3.2" + keen-slider "^6.7.0" + solid-js "^1.5.4" + +solid-toast@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/solid-toast/-/solid-toast-0.4.0.tgz#0c49bc6a9f0e89c83a620a1acfb4f3b2850b5ae9" + integrity sha512-ciJbj+n+7KbUN6wfwZsW7lqFESLoQ9sXMG4uJWuHrIw2f0GxX3/wLSKs0Q1YwdTZZRxyRJ1Nwc2eBVcJvs91+g== + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -26985,7 +27843,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.7.4: +source-map@0.7.4, source-map@^0.7.3: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity "sha1-qbvnBcnYhG9OCP9nZazw8bCJhlY= sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" @@ -27389,6 +28247,11 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-range@~1.2, string-range@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" + integrity sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w== + string-similarity@^4.0.1: version "4.0.4" resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b" @@ -27621,6 +28484,17 @@ stubs@^3.0.0: resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls= +stylus@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" + integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== + dependencies: + "@adobe/css-tools" "^4.0.1" + debug "^4.3.2" + glob "^7.1.6" + sax "~1.2.4" + source-map "^0.7.3" + sublevel-pouchdb@7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.3.1.tgz#c1cc03af45081345c7c82821d6dcaa74564ae2ef" @@ -27638,6 +28512,15 @@ sumchecker@^3.0.1: dependencies: debug "^4.1.0" +supabase@1.28.4: + version "1.28.4" + resolved "https://registry.yarnpkg.com/supabase/-/supabase-1.28.4.tgz#cdb705193dcb1ff014d8ae430e26e66567d806d0" + integrity sha512-5ZD7sAOi0vqGWMBJ/QYG5gtoSKNyTbv7pPURwzfEUNoBWxYs5lbsc6I5TzWU7tGGEFADC9eqwgQLiCLMXUJXpg== + dependencies: + bin-links "^4.0.1" + node-fetch "^3.2.10" + tar "6.1.13" + supports-color@5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" @@ -27664,7 +28547,7 @@ supports-color@^3.1.2: dependencies: has-flag "^1.0.0" -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -27698,6 +28581,61 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg.draggable.js@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz#c514a2f1405efb6f0263e7958f5b68fce50603ba" + integrity sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw== + dependencies: + svg.js "^2.0.1" + +svg.easing.js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/svg.easing.js/-/svg.easing.js-2.0.0.tgz#8aa9946b0a8e27857a5c40a10eba4091e5691f12" + integrity sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA== + dependencies: + svg.js ">=2.3.x" + +svg.filter.js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/svg.filter.js/-/svg.filter.js-2.0.2.tgz#91008e151389dd9230779fcbe6e2c9a362d1c203" + integrity sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw== + dependencies: + svg.js "^2.2.5" + +svg.js@>=2.3.x, svg.js@^2.0.1, svg.js@^2.2.5, svg.js@^2.4.0, svg.js@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/svg.js/-/svg.js-2.7.1.tgz#eb977ed4737001eab859949b4a398ee1bb79948d" + integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA== + +svg.pathmorphing.js@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz#c25718a1cc7c36e852ecabc380e758ac09bb2b65" + integrity sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww== + dependencies: + svg.js "^2.4.0" + +svg.resize.js@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/svg.resize.js/-/svg.resize.js-1.4.3.tgz#885abd248e0cd205b36b973c4b578b9a36f23332" + integrity sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw== + dependencies: + svg.js "^2.6.5" + svg.select.js "^2.1.2" + +svg.select.js@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-2.1.2.tgz#e41ce13b1acff43a7441f9f8be87a2319c87be73" + integrity sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ== + dependencies: + svg.js "^2.2.5" + +svg.select.js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/svg.select.js/-/svg.select.js-3.0.1.tgz#a4198e359f3825739226415f82176a90ea5cc917" + integrity sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw== + dependencies: + svg.js "^2.6.5" + swap-case@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" @@ -27924,6 +28862,18 @@ tar-stream@^1.5.2: to-buffer "^1.1.1" xtend "^4.0.0" +tar@6.1.13, tar@^6.1.13: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tar@^4.0.2, tar@^4.4.2: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -27949,18 +28899,6 @@ tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.1.13: - version "6.1.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" - integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^4.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - tarn@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" @@ -28183,6 +29121,11 @@ tiny-typed-emitter@^2.1.0: resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== +tinycolor@0.x: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tinycolor/-/tinycolor-0.0.1.tgz#320b5a52d83abb5978d81a3e887d4aefb15a6164" + integrity sha512-+CorETse1kl98xg0WAzii8DTT4ABF4R3nquhrkIbVGcw1T8JYs5Gfx9xEfGINPUZGDj9C4BmOtuKeaTtuuRolg== + title-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" @@ -28191,6 +29134,13 @@ title-case@^2.1.0: no-case "^2.2.0" upper-case "^1.0.3" +tls-browserify@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/tls-browserify/-/tls-browserify-0.2.2.tgz#3546bf979f939bd42f994f73885d61c4b54a3c62" + integrity sha512-7xLhLW2mg7F/Wy9nDCR+QrdA0O3XstSeWbUckKYpDiIxI07bDhKK6yXVNLObTspeMTaP6x9zitygnXu16sr5hg== + dependencies: + node-forge "^0.7.0" + tmp@0.0.28: version "0.0.28" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" @@ -28557,7 +29507,7 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.1.0: +tsconfig-paths@^4.1.0, tsconfig-paths@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== @@ -28823,6 +29773,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typedarray-to-buffer@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" + integrity sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -28855,6 +29810,26 @@ typescript-optional@2.0.1: resolved "https://registry.yarnpkg.com/typescript-optional/-/typescript-optional-2.0.1.tgz#1dd4826bd751f78756e7eb3f96a16fbbeb3f7ee6" integrity sha512-xuwmqsCjE4OeeMKxbNX3jjNcISGzYh5Q9R1rM5OyxEVNIr94CB5llCkfKW+1nZTKbbUV0axN3QAUuX2fus/DhQ== +typescript-plugin-css-modules@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/typescript-plugin-css-modules/-/typescript-plugin-css-modules-4.1.1.tgz#fc9c13f20f80c13a233beffd27697af353d96316" + integrity sha512-kpVxGkY/go9eV5TP1YUDJ6SqwBx2OIuVStMCxKyg9PhJVFXjLYR7AuItVLwoz0NCdiemH91WhtgAjb96jI34DA== + dependencies: + dotenv "^16.0.3" + icss-utils "^5.1.0" + less "^4.1.3" + lodash.camelcase "^4.3.0" + postcss "^8.4.19" + postcss-filter-plugins "^3.0.1" + postcss-icss-keyframes "^0.2.1" + postcss-icss-selectors "^2.0.3" + postcss-load-config "^3.1.4" + reserved-words "^0.1.2" + sass "^1.56.1" + source-map-js "^1.0.2" + stylus "^0.59.0" + tsconfig-paths "^4.1.1" + typescript-tuple@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" @@ -29189,6 +30164,11 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-join@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" + integrity sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw== + url-join@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" @@ -29399,6 +30379,11 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +validate-html-nesting@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/validate-html-nesting/-/validate-html-nesting-1.2.2.tgz#2d74de14b598a0de671fad01bd71deabb93b8aca" + integrity sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg== + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -29453,6 +30438,29 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vite-plugin-solid@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vite-plugin-solid/-/vite-plugin-solid-2.3.0.tgz#d479459dc45d30ce8eea1eafdf7bcf85c25a8004" + integrity sha512-N2sa54C3UZC2nN5vpj5o6YP+XdIAZW6n6xv8OasxNAcAJPFeZT7EOVvumL0V4c8hBz1yuYniMWdESY8807fVSg== + dependencies: + "@babel/core" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + babel-preset-solid "^1.4.6" + merge-anything "^5.0.2" + solid-refresh "^0.4.1" + +vite@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.0.tgz#b4675cb9ab83ec0803b9c952ffa6519bcce033a7" + integrity sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA== + dependencies: + esbuild "^0.14.47" + postcss "^8.4.14" + resolve "^1.22.1" + rollup "^2.75.6" + optionalDependencies: + fsevents "~2.3.2" + vm-browserify@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -29536,6 +30544,11 @@ wcwidth@>=1.0.1, wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + web3-bzz@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.0.tgz#ac74bc71cdf294c7080a79091079192f05c5baed" @@ -31121,7 +32134,7 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -websocket@^1.0.32: +websocket@^1.0.32, websocket@^1.0.34: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== @@ -31588,10 +32601,15 @@ ws@^8.4.2: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== +ws@~0.4.31: + version "0.4.32" + resolved "https://registry.yarnpkg.com/ws/-/ws-0.4.32.tgz#787a6154414f3c99ed83c5772153b20feb0cec32" + integrity sha512-htqsS0U9Z9lb3ITjidQkRvkLdVhQePrMeu475yEfOWkAYvJ6dSjQp1tOH6ugaddzX5b7sQjMPNtY71eTzrV/kA== + dependencies: + commander "~2.1.0" + nan "~1.0.0" + options ">=0.0.5" + tinycolor "0.x" xdg-basedir@^3.0.0: version "3.0.0" @@ -31694,11 +32712,36 @@ xss@^1.0.8: commander "^2.20.3" cssfilter "0.0.10" +xtend@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" + integrity sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw== + xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +xtend@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" + integrity sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg== + dependencies: + is-object "~0.1.2" + object-keys "~0.2.0" + +xtend@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== + dependencies: + object-keys "~0.4.0" + +xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + integrity sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg== + y18n@^3.2.0, y18n@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696"