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 0000000000..b836b2bcca Binary files /dev/null and b/packages/cacti-cmd-gui-app/src/assets/favicon.ico differ diff --git a/packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.module.css b/packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.module.css new file mode 100644 index 0000000000..45da5dea56 --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.module.css @@ -0,0 +1,19 @@ +.card { + display: flex; + justify-content: center; + background-color: rgb(252, 249, 249); + align-items: center; + height: 5rem; + padding: 0 2rem; + margin-top: 5px; + border-radius: 10px; + border: .5px solid rgb(224, 228, 224); + width: 35rem; + font-size: 18px; +} + +.card:hover { + cursor: pointer; + background-color: #ffffff; + border:1px solid rgb(39, 153, 39); +} \ No newline at end of file diff --git a/packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.tsx b/packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.tsx new file mode 100644 index 0000000000..322125ca5e --- /dev/null +++ b/packages/cacti-cmd-gui-app/src/components/AccountCard/AccountCard.tsx @@ -0,0 +1,19 @@ +import { useParams, useNavigate } from "@solidjs/router"; +import { Component } from "solid-js"; +// @ts-expect-error +import styles from "./AccountCard.module.css"; + +const AccountCard: Component<{ address: string }> = (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"