From c90b5429ad8571890bb61c8db74291817c7d9e32 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Wed, 20 Sep 2023 22:34:35 +0800 Subject: [PATCH 01/14] fix: add react router && home page base styles --- packages/client/package.json | 6 +- packages/client/src/App.tsx | 64 +- packages/client/src/pages/game/index.tsx | 60 ++ packages/client/src/pages/home/index.tsx | 39 + packages/client/src/pages/home/styles.scss | 26 + pnpm-lock.yaml | 916 ++++++++++++++++++++- 6 files changed, 1016 insertions(+), 95 deletions(-) create mode 100644 packages/client/src/pages/game/index.tsx create mode 100644 packages/client/src/pages/home/index.tsx create mode 100644 packages/client/src/pages/home/styles.scss diff --git a/packages/client/package.json b/packages/client/package.json index a5eaa61f..05a2cb9a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -14,18 +14,20 @@ "@ethersproject/providers": "^5.7.2", "@latticexyz/common": "2.0.0-next.4", "@latticexyz/dev-tools": "2.0.0-next.4", + "@latticexyz/react": "2.0.0-alpha.1.177", "@latticexyz/recs": "2.0.0-next.4", "@latticexyz/schema-type": "2.0.0-next.4", "@latticexyz/services": "2.0.0-next.4", "@latticexyz/store-sync": "2.0.0-next.4", "@latticexyz/utils": "2.0.0-next.4", "@latticexyz/world": "2.0.0-next.4", - "@latticexyz/react": "2.0.0-alpha.1.177", + "antd": "^5.9.2", "contracts": "workspace:*", "ethers": "^5.7.2", - "rxjs": "7.5.5", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.16.0", + "rxjs": "7.5.5", "sass": "^1.64.1", "viem": "1.6.0" }, diff --git a/packages/client/src/App.tsx b/packages/client/src/App.tsx index 1fea0790..a5c76806 100644 --- a/packages/client/src/App.tsx +++ b/packages/client/src/App.tsx @@ -1,60 +1,20 @@ -import { loadMapData } from './utils'; -import { useEffect, useState, useRef } from 'react'; -import Map from './components/Map'; -import { MapConfig } from './config'; +import { BrowserRouter, Route, Routes } from 'react-router-dom'; import './App.scss'; +import Home from './pages/home'; +import Game from './pages/game'; export const App = () => { - const [renderMapData, setRenderMapData] = useState([]); - const [vertexCoordinate, setVertexCoordinate] = useState({ - x: 0, - y: 0 - }); - - const mapDataRef = useRef([]); - - const onKeyDown = (e) => { - const mapData = mapDataRef.current; - if (mapData.length === 0 || e.keyCode < 37 || e.keyCode > 40) { - return; - } - switch (e.keyCode) { - case 37: - vertexCoordinate.x = Math.max(0, vertexCoordinate.x - 1); - break; - case 38: - vertexCoordinate.y = Math.max(0, vertexCoordinate.y - 1); - break; - case 39: - vertexCoordinate.x = Math.min(mapData[0].length - 1 - MapConfig.visualWidth, vertexCoordinate.x + 1); - break; - case 40: - vertexCoordinate.y = Math.min(mapData.length - 1 - MapConfig.visualHeight, vertexCoordinate.y + 1); - break; - } - setVertexCoordinate({ - ...vertexCoordinate - }); - } - - useEffect(() => { - loadMapData().then((csv) => { - setRenderMapData(csv); - mapDataRef.current = csv; - }); - - }, []); - return ( -
- +
+ + + + } /> + } /> + + +
) } \ No newline at end of file diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx new file mode 100644 index 00000000..27cd3f28 --- /dev/null +++ b/packages/client/src/pages/game/index.tsx @@ -0,0 +1,60 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { MapConfig } from '../../config'; +import { loadMapData } from '../../utils'; +import Map from '../../components/Map'; + +const Game = () => { + const [renderMapData, setRenderMapData] = useState([]); + const [vertexCoordinate, setVertexCoordinate] = useState({ + x: 0, + y: 0 + }); + + const mapDataRef = useRef([]); + + const onKeyDown = (e) => { + const mapData = mapDataRef.current; + if (mapData.length === 0 || e.keyCode < 37 || e.keyCode > 40) { + return; + } + switch (e.keyCode) { + case 37: + vertexCoordinate.x = Math.max(0, vertexCoordinate.x - 1); + break; + case 38: + vertexCoordinate.y = Math.max(0, vertexCoordinate.y - 1); + break; + case 39: + vertexCoordinate.x = Math.min(mapData[0].length - 1 - MapConfig.visualWidth, vertexCoordinate.x + 1); + break; + case 40: + vertexCoordinate.y = Math.min(mapData.length - 1 - MapConfig.visualHeight, vertexCoordinate.y + 1); + break; + } + setVertexCoordinate({ + ...vertexCoordinate + }); + } + + useEffect(() => { + loadMapData().then((csv) => { + setRenderMapData(csv); + mapDataRef.current = csv; + }); + + }, []); + + return ( +
+ +
+ ) +}; + +export default Game; \ No newline at end of file diff --git a/packages/client/src/pages/home/index.tsx b/packages/client/src/pages/home/index.tsx new file mode 100644 index 00000000..99b313c3 --- /dev/null +++ b/packages/client/src/pages/home/index.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Col, Row, Button, Input } from 'antd'; +import './styles.scss'; + +const Home = () => { + return ( +
+
+

MSSP

+ + + Season time: xxxx Min + + + + + + + + + + + + + + + + + + + + + +
+
+ ); +}; + +export default Home; \ No newline at end of file diff --git a/packages/client/src/pages/home/styles.scss b/packages/client/src/pages/home/styles.scss new file mode 100644 index 00000000..c8da06b2 --- /dev/null +++ b/packages/client/src/pages/home/styles.scss @@ -0,0 +1,26 @@ +.mi-home-page { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + + + .home-content { + padding: 20px; + width: 800px; + height: 600px; + border: 2px solid; + + .ant-row { + margin-bottom: 30px; + } + + .ant-col { + padding: 0 20px; + } + } + + h1 { + text-align: center; + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd9f5cbe..909d676c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,6 +62,9 @@ importers: '@latticexyz/world': specifier: 2.0.0-next.4 version: registry.npmmirror.com/@latticexyz/world@2.0.0-next.4(typescript@5.1.6) + antd: + specifier: ^5.9.2 + version: 5.9.2(react-dom@18.2.0)(react@18.2.0) contracts: specifier: workspace:* version: link:../contracts @@ -74,6 +77,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + react-router-dom: + specifier: ^6.16.0 + version: 6.16.0(react-dom@18.2.0)(react@18.2.0) rxjs: specifier: 7.5.5 version: registry.npmmirror.com/rxjs@7.5.5 @@ -161,6 +167,82 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false + /@ant-design/colors@7.0.0: + resolution: {integrity: sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==} + dependencies: + '@ctrl/tinycolor': 3.6.1 + dev: false + + /@ant-design/cssinjs@1.17.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MgGCZ6sfD3yQB0XW0hN4jgixMxApTlDYyct+pc7fRZNO4CaqWWm/9iXkkljNR27lyWLZmm+XiDfcIOo1bnrnMA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.11 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + stylis: 4.3.0 + dev: false + + /@ant-design/icons-svg@4.3.1: + resolution: {integrity: sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g==} + dev: false + + /@ant-design/icons@5.2.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/icons-svg': 4.3.1 + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@ant-design/react-slick@1.0.2(react@18.2.0): + resolution: {integrity: sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + json2mq: 0.2.0 + react: 18.2.0 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.0 + dev: false + + /@babel/runtime@7.22.11: + resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + + /@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + dev: false + + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -889,6 +971,106 @@ packages: engines: {node: '>= 16'} dev: false + /@rc-component/color-picker@1.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@ctrl/tinycolor': 3.6.1 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/context@1.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/mini-decimal@1.1.0: + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + dependencies: + '@babel/runtime': 7.22.11 + dev: false + + /@rc-component/mutate-observer@1.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/portal@1.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/tour@1.10.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/trigger@1.16.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QtRB0L8A3Zik1pG1vQloWCytYMjHWKFuC7DiJ7822oc4K2wlwiyy5yBICE+G6ySKQrlYmlVIOMz/E2MbfU1DyA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@remix-run/router@1.9.0: + resolution: {integrity: sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==} + engines: {node: '>=14.0.0'} + dev: false + /@scure/base@1.1.2: resolution: {integrity: sha512-sSCrnIdaUZQHhBxZThMuk7Wm1TWzMD3uJNdGgx3JS23xSqevu0tAOsg8k66nL3R2NwQe65AI9GgqpPOgZys/eA==} dev: false @@ -1016,6 +1198,68 @@ packages: color-convert: 2.0.1 dev: false + /antd@5.9.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+ecGt8nDCjvNvKkalJQc4eBGtfdQuZ/WLXrk7X4FbhAhMplctrey4/SOvHeXjEjBnyNC/KSdF4EzKYKq01egbA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/cssinjs': 1.17.0(react-dom@18.2.0)(react@18.2.0) + '@ant-design/icons': 5.2.6(react-dom@18.2.0)(react@18.2.0) + '@ant-design/react-slick': 1.0.2(react@18.2.0) + '@babel/runtime': 7.22.11 + '@ctrl/tinycolor': 3.6.1 + '@rc-component/color-picker': 1.4.1(react-dom@18.2.0)(react@18.2.0) + '@rc-component/mutate-observer': 1.1.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/tour': 1.10.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.10 + qrcode.react: 3.1.0(react@18.2.0) + rc-cascader: 3.16.0(react-dom@18.2.0)(react@18.2.0) + rc-checkbox: 3.1.0(react-dom@18.2.0)(react@18.2.0) + rc-collapse: 3.7.1(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 9.2.0(react-dom@18.2.0)(react@18.2.0) + rc-drawer: 6.4.1(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-field-form: 1.38.1(react-dom@18.2.0)(react@18.2.0) + rc-image: 7.2.0(react-dom@18.2.0)(react@18.2.0) + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-input-number: 8.0.4(react-dom@18.2.0)(react@18.2.0) + rc-mentions: 2.7.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-notification: 5.1.1(react-dom@18.2.0)(react@18.2.0) + rc-pagination: 3.6.1(react-dom@18.2.0)(react@18.2.0) + rc-picker: 3.14.2(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) + rc-progress: 3.5.1(react-dom@18.2.0)(react@18.2.0) + rc-rate: 2.12.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-segmented: 2.2.2(react-dom@18.2.0)(react@18.2.0) + rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) + rc-slider: 10.2.1(react-dom@18.2.0)(react@18.2.0) + rc-steps: 6.0.1(react-dom@18.2.0)(react@18.2.0) + rc-switch: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-table: 7.34.2(react-dom@18.2.0)(react@18.2.0) + rc-tabs: 12.12.1(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.3.4(react-dom@18.2.0)(react@18.2.0) + rc-tooltip: 6.0.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.12(react-dom@18.2.0)(react@18.2.0) + rc-tree-select: 5.12.1(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scroll-into-view-if-needed: 3.1.0 + throttle-debounce: 5.0.0 + transitivePeerDependencies: + - date-fns + - luxon + - moment + dev: false + /antlr4ts@0.5.0-alpha.4: resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} dev: false @@ -1027,11 +1271,19 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /array-tree-filter@2.1.0: + resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} + dev: false + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: false + /async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + dev: false + /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} dev: false @@ -1081,6 +1333,10 @@ packages: optionalDependencies: fsevents: 2.3.3 + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -1101,6 +1357,16 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false + /compute-scroll-into-view@3.0.3: + resolution: {integrity: sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==} + dev: false + + /copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1117,6 +1383,10 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1129,6 +1399,10 @@ packages: ms: 2.1.2 dev: false + /dom-align@1.12.4: + resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} + dev: false + /dotenv@16.3.1: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} @@ -1388,6 +1662,12 @@ packages: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: false + /json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + dev: false + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -1552,6 +1832,539 @@ packages: engines: {node: '>=6'} dev: false + /qrcode.react@3.1.0(react@18.2.0): + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /rc-align@4.0.15(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + dom-align: 1.12.4 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + dev: false + + /rc-cascader@3.16.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-c62glOhm66T0/Y8vOfIgZwHHTbqCyC7FvBTcNDuwbXZc8Dfbz6fB1yIuCB55z5rPA7nsUfMyNNuS8shReZWM+A==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.12(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-checkbox@3.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-collapse@3.7.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-dialog@9.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dL2tklMou/QfK77+0CTH3FTnKCvIiYv9Df7PfFfg8YVXhYAGmuIkV4ooQYHAIR4juL3Ywcm5oQflF2vDDuGlUg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-drawer@6.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QIbNMjiZy322o9uEpJHsSZ5rS/zuxqam3lYVPDzjztoqsoDzTNNxWN77QVpOfQ0UC9/87+qu25zocJ+O9bK2Tg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-dropdown@4.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-field-form@1.38.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-94MswI+I1/RtSg1j4z64dWopGYkSWVfRKLMaZtN6UfHcVfNiXqGPIs/cDf7I2fraRdbxLsXQb6caZ2olfqXdGg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + async-validator: 4.2.5 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-image@7.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5Ug2hCVl6VcT0osR5XaZQ4zclTMEWPnbn3b4/TS/MR1QjRpEACLNFUzBGwr5mbAVhzvLWX5YZf4vO10xUA5IUA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-dialog: 9.2.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-input-number@8.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TP+G5b7mZtbwXJ/YEZXF/OgbEZ6iqD4+RSuxZJ8VGKGXDcdt0FKIvpFoNQr/knspdFC4OxA0OfsWfFWfN4XSyA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/mini-decimal': 1.1.0 + classnames: 2.3.2 + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-input@1.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NTR1Z4em681L8/ewb2KR80RykSmN8I2mzqzJDCoUmTrV1BB9Hk5d7ha4TnfgdEPPL148N+603sW2LExSXk1IbA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-mentions@2.7.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tn0x79cpnVYP+MA+jyBqalmEni9Ct7xHuA9QHIf5vwd25FU+hngGZ8n6Dfua7XCr4LhkZYjfD/rZTGrvY2C1Xg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-menu@9.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Apr/fRf5EcqWJ4nphHV6dTGZcLPaPzwY44q9hAtLJysY4rkC9Eg+ekj3uFx6opPWVruV2sJNWq/Po+HHtO48CA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-motion@2.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-notification@5.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BPnded/WmWFE57ubqhVCgRSuedfQQNeSOYqdwppyr2B/Wt909gYFKyWAkFJVXuppAjsOGop05a93UaxjmUFdkg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-overflow@1.3.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-pagination@3.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R/sUnKKXx1Nm4kZfUKS3YKa7yEPF1ZkVB/AynQaHt+nMER7h9wPTfliDJFdYo+RM/nk2JD4Yc5QpUq8fIQHeug==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-picker@3.14.2(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+jKWhKydU2z5hgY0yenHQRx2nRLrHiRdPD8f2+Yg5ld6+Ah/mh1tV9ya1OPcEMqbqXCZXnKqqBv4mAEQm1oAyQ==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-progress@3.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-rate@2.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-resize-observer@1.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + dev: false + + /rc-segmented@2.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-select@14.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+MDaHteiKRL4iID9Osm8zAZTe+g7/t5CjIfJJ4QhPAvwGUaNCa2kvkMqiXfOfGevscVa+agha1Ov938MeAotfQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.2(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.10.10(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-slider@10.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-l355C/65iV4UFp7mXq5xBTNX2/tF2g74VWiTVlTpNp+6vjE/xaHHNiQq5Af+Uu28uUiqCuH/QXs5HfADL9KJ/A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-steps@6.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-switch@4.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-table@7.34.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-btFZOC0ZdtDXoUuFgQkmID9o8XJvpt1PRUKZZ5Nec0lXp6E5rcUZ/+ZDbnXlq17Fwz+8+3wr2O0aZ7kihJd5Nw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/context': 1.4.0(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.10.10(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tabs@12.12.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-e10VBjEkECdPl4XZSs9to81SE+mgclBTM7J8/LMsFqmJoi05Tci91bRnmeeDtrcOCx2PuZdJv57XUlC4d8PEIw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.12.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-textarea@1.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wn0YjTpvcVolcfXa0HtzL+jgV2QcwtfB29RwNAKj8hMgZOju1V24M3TfEDjABeQEAQbUGbjMbISREOX/YSVKhg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-input: 1.1.1(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tooltip@6.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + '@rc-component/trigger': 1.16.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tree-select@5.12.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/IC6gRgRoUBCOwZASOiF3onp1484fb+Gke5zuxgsi3ViP+O2UTUByS1jTZzjNooidRgdwiQJksq1zVaVYw2TPg==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-select: 14.8.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.12(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-tree@5.7.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LXA5nY2hG5koIAlHW5sgXgLpOMz+bFRbnZZ+cCg0tQs4Wv1AmY7EDi1SK7iFXhslYockbqUerQan82jljoaItg==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.10.10(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-upload@4.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-util@5.37.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.11 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + dev: false + + /rc-virtual-list@3.10.10(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EqNotqqRLzxFYce9JB/aDtP5fShvgwDVIuEKQeq9qfeNiKmsD4zf/UD+i0LppHtObzDUGtRFSf0HIOfb8FGSPA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.11 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -1562,6 +2375,33 @@ packages: scheduler: 0.23.0 dev: false + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-router-dom@6.16.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.9.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.16.0(react@18.2.0) + dev: false + + /react-router@6.16.0(react@18.2.0): + resolution: {integrity: sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.9.0 + react: 18.2.0 + dev: false + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -1575,6 +2415,10 @@ packages: dependencies: picomatch: 2.3.1 + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + dev: false + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -1585,6 +2429,10 @@ packages: engines: {node: '>=0.10.0'} dev: false + /resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -1611,6 +2459,12 @@ packages: loose-envify: 1.4.0 dev: false + /scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + dependencies: + compute-scroll-into-view: 3.0.3 + dev: false + /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false @@ -1656,6 +2510,10 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + dev: false + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -1684,6 +2542,10 @@ packages: engines: {node: '>=12'} dev: false + /stylis@4.3.0: + resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} + dev: false + /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -1695,12 +2557,21 @@ packages: strip-ansi: 6.0.1 dev: false + /throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + /toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + dev: false + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false @@ -1854,16 +2725,15 @@ packages: /zod@3.22.2: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} - dev: false github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + resolution: {commit: e282159d5170298eb2455a6c05280ab5a73a4ef0, repo: git+ssh://git@github.com/dapphub/ds-test.git, type: git} name: ds-test version: 1.0.0 dev: true github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} + resolution: {commit: 74cfb77e308dd188d2f58864aaf44963ae6b88b1, repo: git+ssh://git@github.com/foundry-rs/forge-std.git, type: git} name: forge-std version: 1.6.0 dev: true @@ -2458,7 +3328,7 @@ packages: abitype: registry.npmmirror.com/abitype@0.9.3(typescript@5.1.6)(zod@3.22.2) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router-dom: registry.npmmirror.com/react-router-dom@6.15.0(react-dom@18.2.0)(react@18.2.0) + react-router-dom: 6.16.0(react-dom@18.2.0)(react@18.2.0) rxjs: registry.npmmirror.com/rxjs@7.5.5 tailwind-merge: registry.npmmirror.com/tailwind-merge@1.14.0 use-local-storage-state: registry.npmmirror.com/use-local-storage-state@18.3.3(react-dom@18.2.0)(react@18.2.0) @@ -2756,13 +3626,6 @@ packages: name: '@protobufjs/utf8' version: 1.1.0 - registry.npmmirror.com/@remix-run/router@1.8.0: - resolution: {integrity: sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@remix-run/router/-/router-1.8.0.tgz} - name: '@remix-run/router' - version: 1.8.0 - engines: {node: '>=14.0.0'} - dev: false - registry.npmmirror.com/@scure/base@1.1.2: resolution: {integrity: sha512-sSCrnIdaUZQHhBxZThMuk7Wm1TWzMD3uJNdGgx3JS23xSqevu0tAOsg8k66nL3R2NwQe65AI9GgqpPOgZys/eA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@scure/base/-/base-1.1.2.tgz} name: '@scure/base' @@ -3077,7 +3940,7 @@ packages: optional: true dependencies: typescript: 5.1.6 - zod: registry.npmmirror.com/zod@3.22.2 + zod: 3.22.2 registry.npmmirror.com/abort-controller-x@0.4.3: resolution: {integrity: sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/abort-controller-x/-/abort-controller-x-0.4.3.tgz} @@ -5442,35 +6305,6 @@ packages: strip-json-comments: registry.npmmirror.com/strip-json-comments@2.0.1 dev: false - registry.npmmirror.com/react-router-dom@6.15.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.15.0.tgz} - id: registry.npmmirror.com/react-router-dom/6.15.0 - name: react-router-dom - version: 6.15.0 - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - '@remix-run/router': registry.npmmirror.com/@remix-run/router@1.8.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: registry.npmmirror.com/react-router@6.15.0(react@18.2.0) - dev: false - - registry.npmmirror.com/react-router@6.15.0(react@18.2.0): - resolution: {integrity: sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/react-router/-/react-router-6.15.0.tgz} - id: registry.npmmirror.com/react-router/6.15.0 - name: react-router - version: 6.15.0 - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - dependencies: - '@remix-run/router': registry.npmmirror.com/@remix-run/router@1.8.0 - react: 18.2.0 - dev: false - registry.npmmirror.com/readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz} name: readable-stream From aa9b7f0aba87295dc0d219fb307326d083eba5ae Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Thu, 21 Sep 2023 03:12:26 +0800 Subject: [PATCH 02/14] feat: add avatar comp --- .../client/src/assets/avatar/elephant.png | Bin 0 -> 9742 bytes packages/client/src/assets/avatar/giraffe.png | Bin 0 -> 10489 bytes packages/client/src/assets/avatar/hippo.png | Bin 0 -> 7479 bytes packages/client/src/assets/avatar/monkey.png | Bin 0 -> 8864 bytes packages/client/src/assets/avatar/panda.png | Bin 0 -> 7501 bytes packages/client/src/assets/avatar/parrot.png | Bin 0 -> 8075 bytes packages/client/src/assets/avatar/penguin.png | Bin 0 -> 7233 bytes packages/client/src/assets/avatar/pig.png | Bin 0 -> 7352 bytes packages/client/src/assets/avatar/rabbit.png | Bin 0 -> 9004 bytes packages/client/src/assets/avatar/snake.png | Bin 0 -> 8053 bytes packages/client/src/common.scss | 4 ++ .../src/components/AvatarSelector/index.tsx | 56 ++++++++++++++++++ .../src/components/AvatarSelector/styles.scss | 39 ++++++++++++ packages/client/src/pages/home/index.tsx | 42 +++++++++++-- packages/client/tsconfig.json | 7 ++- packages/client/vite.config.ts | 6 ++ 16 files changed, 147 insertions(+), 7 deletions(-) create mode 100644 packages/client/src/assets/avatar/elephant.png create mode 100644 packages/client/src/assets/avatar/giraffe.png create mode 100644 packages/client/src/assets/avatar/hippo.png create mode 100644 packages/client/src/assets/avatar/monkey.png create mode 100644 packages/client/src/assets/avatar/panda.png create mode 100644 packages/client/src/assets/avatar/parrot.png create mode 100644 packages/client/src/assets/avatar/penguin.png create mode 100644 packages/client/src/assets/avatar/pig.png create mode 100644 packages/client/src/assets/avatar/rabbit.png create mode 100644 packages/client/src/assets/avatar/snake.png create mode 100644 packages/client/src/components/AvatarSelector/index.tsx create mode 100644 packages/client/src/components/AvatarSelector/styles.scss diff --git a/packages/client/src/assets/avatar/elephant.png b/packages/client/src/assets/avatar/elephant.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4fdcc730b045c73caa49be14f289cd51b39866 GIT binary patch literal 9742 zcmV+pCh^&cP)ztw6TtwJCMY8i1JeN{BoIft~ z?X~w=S|U2fp+kp0_rw!VEDvzt@ZrO~0alM3IkMGY@Za~o{`If-yJGO~cgDV!zJ5>N zOW%`Ep9mR`KKkhACvv?vmYX{cIlen_W**3MoiRRr!h1aS*kfN9B;3I!v0cgA0{R(7 zKg+6qHvNn|DZ-*?84>M<@+*Nn-)+cW#IHX#JSoDpT2ZC4=2D%+!uVmJ0wNYDTvkT8 zzL#O1uTtp~i&iabDO4;TDxeJ=Vk#eEl5T_V(i%fm^$>lQdA>sqFW#WlXGZp9n(!l=7gdZK*(2YipXaOO zxm!gK(L?O$mx<|@qoJGS$>AF-G=nw`QY3bA6QZw4V_!jv@n6x0(k~~7do97?vbE5Y z#SlA0Uu*Le?J?{j=vip=W1j4!NZgYAtv;vGXG8%LR-?yt6Dw3n*5+YPu+mv+^Sqi> z4>dlwk+Vglf3VG4&}aY;Vvi_KVmOE+$Dp$(Vy~Rmh#eb&U*!#J`sX$pI9r+Z`SH1> z^Jb>EF__nLDCtui+<5BPvHmxod8Ys33oi_@e)eqt&2#65c>ChT{=fb3hpn-3{`_ZO z4ZrSlCr%8%PpY!bNN!oB;&hrY9!gdz{*1~!<)Cs=Ioaf=aufY%*-NCFUxATrodX*&30=vh3ZrW^9{Mmq_@E1+H*cOP=Xg`t z#3p=k6570hRW9`F{&=#dPU!QXKT3MrNbz+S#FrJ78_JQKb6kY4x9J$trMQVf!0zOJ zFyzB3h1B<}?scH4?CY-7l>@0)=`LiiGaS0I$2Z?HLP;{JVx%+1)EGlUf524nP}SE} zt?QYWTD6In}S9~T!?~3+=VW` zj|I}Vw_U`ZyXNTY)mDc9QY-_ty_L4`mmysybrb$el&8fy|qb6fhr9;{_)qO+uyq(538dys<#gV)0)x&He}X??bkcv2*X<@a>75j5i!*Iq{k; z$y@H0f!yOj(tsoakqYFRm|j14i_+T^d73@R?`C%m;Aku4u2nM?y*-Y;PQ{)_MK7X9 zrw_l0)vEcL-4;r#mA{aC_=^2@#8m*GJM_m`f0QBmu+3LPl3&Y(+}9xY{3>>c9ij)( zNxqkQQ}v*g=8nfbT*ZzQQ!dey=V9a;L;K`%vW^)Vs`)_8Q;5ADjh>v(qwy+ZN^*Mq zsHwUKx#wYbynpvDrIZc;RjY1h(y=pWze^fX1IOH58l0YjUgp46O!tbBb=2q*BWS+ zD5@SWt;k|=7ztqyIVd18un2J5_<_X@QPHfE7SfEC>XQieRXa^oKsBGnN^J{|eDHlW z7SfD|8Y#(hQCnTZarQe1WB1`$95xblEYJ#ts=I84yyk zVK^#{oi*Ne$6Kr;V3^6qC4(dbV(hfRWfOl0%3H(LwR%UIvDqU7*?^c}0@husdFt4) zv}}`lEkK$fTIc zDix$W{Yvw-8>DEsxN6L*c-QJ(uOmEARt^AG9DoNQWh1(y#>F{9V-=?isADJ!k`M2V zclO1*-m%I$0>~Xe^1#m;1Lx`1!57$}dS~qb0IWCg2N&C9=N&b!%~h)R_8xc09dKI| z*Zj4;6r^kQzDo5@zIPrNQxRtsBPUaYYpb(>Ep-!$}}#k323geTLu7j*TfloT1ckpI@~0Ah6l7iAa?-C z--Qe2EFp7{X;$an+SK)nt3kj6nvFX*Z*sr^7(izMPVger?9SUga{zgU%Q^ty(vUo5 znteA+cAZ{Do|%p9tt}2T08^l|0Y})%G+Gd8uD|1+!43%k9{D6>n%Q#xVmxSKNF5eK=zR+Q!?JkEia4*Ir?E&(Kr_AO>#T zxB+)ez|;@lb^i?dJ55ypXu8@%Yu7uI9iG<0}zxmkmi zo14(x0btTKotvH>YP7ms&&Pv6cLxAHKCSJNCJq`JtpB`nkAn$-9q`AyHCi9I#;>b` zhPzk);df{KF956;PN~uQfRm={ieTL%So;IGd+Qbl5&-tqc!6As&Q6-af7!r6(;hcA zH#vv^c!cCnF5`Aw9o*F-S+j$NRRjQpk!o<#I9esUE*Yzt;Bn0WfU73el?4wFJQhh@ zGXUVKDaR`Lz#Xj+JOfPtqzsuEuu69H!b9+jEp+X{Xp3m2>|=zi&z(|m6Gg(=OS$Ya!0AnRxbQtsTcs&LznSD@DM!BRRCzV zLh!W_JlF97kT*)Z*6-4V3lKb)X#)UC+)wl7xpSSk`N)wYTb~j9;lqdbx_l9RbL1HS zKuVLX5c~we>%Y`a@Oa+=V6qj0FO=YsX8=H^NeyRTdMO^kzqY=PJOcngrtyRqUwEMt z!5=<+xHqoBZ*=)0`sTQ20068mNSok$H4{90-vL0TNfFPTI03=CK;z9E2mly*DsGcx z6NCSbvEqi{_Qb!AduXbfH7kdCuCS-lCbxpx=Rj@0;Yfo|RAD~|4 zI1B)k2ldvf-$SE#^wCE@U*oz0?2!PJjT(oX9wK;`eKc=hyqN6=sEIcY0RSu?D|U+2 zmEd!pW<`Go03E(G5ByYuuW?-g>j?lrhc9}_$(7)9^}^$S2LK(uL=XH_f*<^kt6jd> z^QTW|`Qb^MBl!Wq4_}}M{=hVX@73gmXFV_gtPd{HBKg3O)0h|jKuunFF4qR24&2_} zuJfwC34&j)$qP?|6#yEorCB6(JKxf*=t}S#=g(*N0h0It&}gl~BI$ZJYi<{R&|n3i zE@)~!CyrV@b*gIxzc!QLYq3hQK@tEaTC1^0x>_am*9HeoI=K9UAM{V1JlTKbkw>QD zYmYzPKQs8FyvdtP@z68Yv;OK=zdAJ+^uH@tlrv1U7V4mJwMxpbiGwDxQ{d*!;X(cK zm%rTq;upWTFm%900FYr>&@=tYSH99J7xe#E4&5$rg-1>|JgKMImEg5Fawfso;-o3< zias6YFMa7ttq$`fRLzxM#npf}-*}_-ANfh>-+%X&S8&oqf_j>!7D!8ti;bnAL4 zRlDRCm%}^`{gF@w2T|sUe|h?8vs@6ATcvz9IbGrB#X;lhq**_E7K>zHa&P+zUgN>8 zVvuK$3zFJ=;v_EJFZkbFtxE_uyoE|fy@xmYC~8mtEw zso+;j-bs_Y2R_7sZgBJ)-+)9bt=y;eXmTg{9ITQq4c2`fG-Hj{gC#dwbN9f9I?xT! z(c#S5R_ z1nWW#R@a?0XJ2{=g7*mDx_haWTZxF33;Mnge0n?J7izG&Hd>!Mae{kTGqJ$6MQOfh z?2z4|@6Xy`d%S(|qTdFqYoj%X-S9aMIceNH=7Da8Uyy3Zg$6mUxk!E3$z{N4-w9T$ z%RdAys)yk7Zmi;}As0%N?NTRrSaW-$8HUr@FI0bD=|b=uUB21Tqeod&U^vK<(t&QY zc*r(RF1Rj~^MTyn=t}gz%i7+W;PqFb#KmK|ZHY|nK;x((7sip>s_6o6aN1ky5-tNz zDc|sf*BM_t&DDB+@u~8X9Eid6ch}95DPI6WL(Qhy3h9PLs=1JxWwOBiGb=6xzgC)E zGM7Y@43hGp=5mno*AkQ{*`>%y+5iy5|8BW>ELFQ?E{Q15dCG^HC1mwXu9h?(ks>E) z13*W4W_QUY4jnr5xvm7C>e>SIcXW94_j+~slI)RESe9I4@I`jI{s8*nA^7q%*W8y* zu~^I=5PW!hq&5yX6TFLEGDVq&25WtXng%P4)>H|;t2`q}VR0sS7rSJNQ>`@BAb1GA z-aYZ9T+i2P|GTfX1u4oj47G6i0}h&c2cAmV9_eI{v|1mWqD+Hp0)mI&>)laQ!t|=M zJF9IE%-C12spe!c(RJMRq9HZPigr>~*QnNukQ za><1p-sW`n3y^14eG>d??w+m#^SD4b&ON+#OFfrEE{{cN*B?_&Yv5bo59}#Q_qE5_7bH)@Gh%? zy|`yAchjWMY*ppQx`I3|-~QnK{h?far4=d8tAL5kn_8o_a!#B~VnhQBCo$Jz@vECfn)%$Kf+~i}0 zu<+)&a}fN3kV_@Ci9*4hAE57f*Z&ldZXVp}+R{ z<3%r&%1MrC^QP#dnolJc^mF8Pj$-D6lnaOIeQzmrxHMa1TPC%W0+NqU?s^U-RPFm! z^FDGdb}r;d?y-lQTqak&df$CCTVt;g&S9E0l@$ikS$()9au|B#X&`g7rxtMV<<<3FSm@WkF}6{1O3iEav{`xt;)F^hM7`q z-n&>MO)vHc*=&tD_>_wme%{7OUlWdU%J}j&r{G17X{Yq{X6Gvx^mTKs+Q*>*wH&MW zpv_gw$<~-vd`?!$c@>=H;Z`;H-B(`m_w!a*xreCa8|c|tUC^zsqrOYdReK5+$>&d> zPIIwX$yI!AR>?)T4yvked%#8N`ggt$a_J4#*p1i8$yYtowo;yQNB^$GEulFMHU*hn z^=+AqRmJ-nNJ)wC_e01-tj{{cVz6AGH3uQ{PtST@K9qbGG-Vv)Ig8s|tdZ(-E~OA^ z1msr5=jxT52g7P9lW{8F0q3ax{Z{ADk9$^q(4kSk?1SY3SY z(FU7*Ywom;hF#ZXFu!z_b+}i zM6Ep_mz^_7YVX!symltnFwy$!k3a5z`st_rKmYm9{lEYH@BQ)6|MuJ8{AT$7(V?Mw zXJ1Wf`00lq4)gQ>{_uxkzD|q3{`IfJ9M}J^1_zhR#>nVv2|_t)LfR%nTh;#a$3O1> z&nKS@6TfXVq@PlCge|fjEnbC&a(5P)&kNg z!|RY(9*|kp(f|JLcl}>|^bx-Ij1hYYUPJ0#tMs-+?_0VFm5Z)JO<7g%7CUO13%Wx{ zHNFm&G|CVMWfs}%`(usFZ-qh3eo&0i8S#~?p`=1xLt0JsKE7$vWnX+Ksm8~lvX*1I z#$W#Om*L?Jse3}yZji(ks!6Im?a~kOQO!$kwBCP|i8PbW&Y2EXd@l#7#_CY%(1=u1 zi$?eKUDb#79G3{+lA(Gw($!N8ogJ$j4RM2$g)}3MT*^6IZIgQa$zjk$`gaOd`#hqT zeB-O4ujv}T-1gImIAh5$ZFAJ3mlWb+8CTDH68qi_Y?B9Et9ZQzrEHf>wIT}bWQch! z8n-^pZk+0mdTyaJ<+Kyu^A03e&--ZK`+=nr!qqmZ*C5|gO&7bQ4o`}bOq+(RrSm4n z);`t<$8~V|483u5DMEb9Gm>Ux0x5o|Db&?|A=VhQog~bi+$XCgi)tPRO&SCr%faPK zmv5V!z6%Xk*G!hS$Pf)zpL^rmtPfVBDh2mJYSlahAD`fJ=mq(1zWS7BURz&xCim;}CpFa^XCZpC{M&9By*mHIwwNcf%@v)%8R2Wu4q_;ZrT-K0aaCR{O+7 z6W%6S3%M^s@;--~G<0bo&8#k!9-7*+kZOEQxlUX7q*uezGPU@UUE2#r?1tE+XR z7x8djT0e``Q>XeCGIH^*nFaLt6^jp2i+`*h?!Vu@&8eBu+(L(sw@Ff(bB)dZdGWWu z{jGo9@XgV}F;nzFQwOPL!{P(gUtQOSt3*-45YuCkK`6-DkN%D{vyUGC``;%;?nUjI zF|tnXq(JgY6k`9FH&Mt$tG)iN>b<5pj81y|?rwBDWObIvkW;R%J8S-HKwN~os|Fq3 zUVo?IzgWEAG54&`^&RqgzE(%ZAtz=?%m^5v<$g9(BZ@A?>J}t zNHvmj4at26=8n*GZI+YG8iqoe=^p#};?d!4^ml#6guPT_<#QjA`(AMuc=!%|U=~AA z-(54lpp1bgx0pBh z1bMsb?=>$Ja}B+j|7dK5f%aBe?3S5u%p8QN-JCTCEFZ|YjZ&|1gj=A)`_tcX&$!3$ ze*0TPc1d)2 zH~n3oE#V%Y3_eF=a>ovtGRa@PdX=mX&}c=6$N!#6yz#~xkb4azf9%*Xs&~VfcjFT} ze0Tplm(AE30**O0SRwat)2^MJHSfLm9@!p{;L+i`@1KF-Z9{MF>~=4BUyc5P6JZG+ z9lrbicL+YMDxL~HO!dCo^#R?vbB8SV5bTHdv;Un)uZm}4HBtSY>OCI8qr-Q*f0dw$ zudRCDL3_`S;L+i`-M>ntSH-LU$7LRVs`q7_Gx=%o=OIZaZ&d+0e0TkwRl)wNc*i|72ViEq>b=+XL1==F zh$qjW!*|o)xr^0*xJY(@ID%(B$jCqfosv# zB(&Y|ryqXUn%L3d+w1SMG~St`s}mMR-L#y z&^p)+F{>H6XhYN&(Ba$Z?>?ZnfhHHm|1d~$t2M+GT>25GdS7L*X)!WaGfqU_MLG!u zboh4qduZtG?AITEJS6>^bbqZdq1l>QbG76IRkbAH(~g50bhntJpG&D{9u^UG(>qD*O^BY+Wpq+HebFx3AvUx_;oF6m->@ z4%4qb`e;~9*`*WeJO9sGGsV3TX$gW7NJ+3nwzVt)^&JFA$4^4^!0Za z=&iDZs{UKw`WBagr0#vsdGAbV)jB$SzWTdMRiCRPN5%|1@c}}e>6#{2MeMn2>*(-h z>+dxTX1PqZvVbgr_dU1C)sm$cbog@h_mZU>m&sOSn#JUql^U+(Q&XolVy{_;FI9hE z1V7r|&ZZgb;)zG5S_j{k;$wigYSh7pBJ{bw#u})4suaB86x*%ll+;Ef5gz?4G2Ew z=yND?Z_w-Y`Zot;hz^hb9uvwzR{LFucO1GzXyeKE_U9>cw>j)jiSpXAE6(33gkZC zd@V(nFHwgtMSoY0`EI7BT*-GGT4b~2!!pf*l=HY?s%x5W0K`l1*tkeD3aDapd+GM~`r-t~=LyR~5S=~eu0Dpo38!fQ$H zN^(u@N{-Th_95Bi>arJ1$h_q3bFqWS95Txr{E(E;#9^0{gACFt^ePrp+~yq1+=@B(L9X(SpwU z{)XnQ1?GW=uJyBOu(*0)eK~B#p@v$ji_3D?;ZxM#^{jo$F_TW2m}gz2E%)0z z3#7I6S-<~0Ns5?W)vj4KW2QZPk-t@CV=>?`YQFCJ9*|1WZIiPOpPK&e(;YME8nGZZ z%Ysg4U6RfCdDl6&uG(p=CL+~LzRIau7c5^{Enm@m>+-2i!se{Qr=q`$*!9Od#3ZWq z%|#({-UGQGgsB}X+SDJiRTVQO;d`N09;DES%~^+!t-l8*_B~%!tBXw4W|LjYc1X=yTNJ zW9aW{o`zoK8|pG?pOfC!Q|Uy(Bp>>(cnFuxwB7R|r($!|;X~^0moHrkb|>oiRBC9C zcb6670X~Nf+%o=2ej|~G-HY-2t9po`Q>q~yg6wnD;eG4x>W|3k7-K(so53XyXMHuH zVvY@w0i88#B{o&t_9bGy#)|AkI=&>F+;n&!`nx0;$z-uE-B6Clp3F=^kN4S7CK8lu z^uSZm;6?`^+8d3u`lhP4B>S9ncuW0Vq%H|2_BDB`oKuk^Vv;<1dwh4zN{LO?4xhtv zD5p&bvd>9}ch%n;QujS=nlqurAbIrmw8(8QM58H1a-Vps>80X65ZTLe*<~$4PC9%S z{k@T2QXutQY=0r8S@ibA!sl-F-2R%Y0!z(pB-e+==G#>Fx#;kV=JtPPhr=^S zBUgRdy7!dxIj^;v-!O0x6!E}E-uc}WNoHD=FIh*`?v+cIk|+49moE>0R{hMX&O`gt zb9KiUpY^q_`8^_b9#6M$XuUtik&rg4s z=B#JO)FnX>`-b`vqdhk}=s8>+iAd@FfU> z2o@T~=|Ye%zVJe})w{HHs&#@Os)()*9FcsihO53eHv|y`K`bEEbS2B9M~@E4cH{hc z@1(Bpq3@;d>9X{T>YX5ns={KErL=i9U`4`jo;zno==z#gR!H121VL06UA6dm_~tXu z^q)I%Vo21BKuuHq8<#45zdNp&=oQbp{^EeTRlBK@fyPjBbe9OQ~vSw>v=) zgi(xL^t~2~?70A&AP6E*jCA^*5C6P|l}49ebFCgh5JVzX{&I5( z+@AH5a66UJ0000jbVXQnQ*UN;cVTj60AhJAVr*}3WMp|RV{&KQK cGBibQV{c?-a;OG>?f?J)07*qoM6N<$f;1khivR!s literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/giraffe.png b/packages/client/src/assets/avatar/giraffe.png new file mode 100644 index 0000000000000000000000000000000000000000..f1802c2195561dce2a41200d58099ff2e2277078 GIT binary patch literal 10489 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 literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/hippo.png b/packages/client/src/assets/avatar/hippo.png new file mode 100644 index 0000000000000000000000000000000000000000..c72481a238da17875502fcf49766df3f912d8fc2 GIT binary patch literal 7479 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 BdEx*7 literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/monkey.png b/packages/client/src/assets/avatar/monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..703632a26d49d89571dfef91402940a137d12a49 GIT binary patch literal 8864 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 XZ)9b1s0M%T00000NkvXXu0mjfVp*^- literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/parrot.png b/packages/client/src/assets/avatar/parrot.png new file mode 100644 index 0000000000000000000000000000000000000000..575f9eb3df9a5bda4a1c6bc3f03f38b5b46aabe3 GIT binary patch literal 8075 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 ZZewp`Wpbznf9?PP002ovPDHLkV1i~vZW;gp literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/penguin.png b/packages/client/src/assets/avatar/penguin.png new file mode 100644 index 0000000000000000000000000000000000000000..4f874f2019cc55b4d93e36b52c746e5f22c08b55 GIT binary patch literal 7233 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 P00000NkvXXu0mjfZ4%Vw literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/pig.png b/packages/client/src/assets/avatar/pig.png new file mode 100644 index 0000000000000000000000000000000000000000..95357168e77739773bc68fbea6b4545b7957c767 GIT binary patch literal 7352 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 ePDe5{MQ&qnWMy)w27m4V0000N{!k8 literal 0 HcmV?d00001 diff --git a/packages/client/src/assets/avatar/rabbit.png b/packages/client/src/assets/avatar/rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..beeb795a0e0e44bac9123dfcafb18c727eb8c643 GIT binary patch literal 9004 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 D(JWWI literal 0 HcmV?d00001 diff --git a/packages/client/src/common.scss b/packages/client/src/common.scss index 9e6a4fbb..1a3b1ebb 100644 --- a/packages/client/src/common.scss +++ b/packages/client/src/common.scss @@ -5,4 +5,8 @@ body { background: #dfc380; +} + +ul, li, ol { + list-style: none; } \ No newline at end of file diff --git a/packages/client/src/components/AvatarSelector/index.tsx b/packages/client/src/components/AvatarSelector/index.tsx new file mode 100644 index 00000000..66a78177 --- /dev/null +++ b/packages/client/src/components/AvatarSelector/index.tsx @@ -0,0 +1,56 @@ +import React, { useEffect, useState } from 'react'; +import { Button } from 'antd'; +import './styles.scss'; + +const Avatars = ['elephant', 'hippo', 'panda', 'penguin', 'rabbit', 'giraffe', 'monkey', 'parrot', 'pig', 'snake']; + +interface IProps { + onChange: (avatar: string | null) => void; +} + +const AvatarSelector = (props: IProps) => { + + const [avatarsVisible, setAvatarsVisible] = useState(false); + const [avatar, setAvatar] = useState(null); + + useEffect(() => { + props.onChange(avatar); + }, [avatar]) + + const toggleAvatars = () => { + setAvatarsVisible(!avatarsVisible); + } + + return ( +
+ { + avatar ? +
+ : + + } + { + avatarsVisible && ( +
    + { + Avatars.map((avatar) => { + return ( +
  • { + setAvatar(avatar); + setAvatarsVisible(false); + }} + /> + ) + }) + } +
+ ) + } + +
+ ); +}; + +export default AvatarSelector; \ No newline at end of file diff --git a/packages/client/src/components/AvatarSelector/styles.scss b/packages/client/src/components/AvatarSelector/styles.scss new file mode 100644 index 00000000..79268252 --- /dev/null +++ b/packages/client/src/components/AvatarSelector/styles.scss @@ -0,0 +1,39 @@ + +$avatars: 'elephant', 'hippo', 'panda', 'penguin', 'rabbit', 'giraffe', 'monkey', 'parrot', 'pig', 'snake'; +$avatarsPath: '../../assets/avatar/'; + +.mi-c-avatars-wrap { + position: relative; + width: 100px; + //height: 100px; + + .avatars { + position: absolute; + top: 100%; + display: grid; + width: 400px; + grid-template-columns: repeat(5, 1fr); + background: #fff; + + .avatar-item { + height: 80px; + background-size: 100%; + background-position: center; + background-repeat: no-repeat; + } + } + + .avatar-selected { + width: 100px; + height: 100px; + background-size: 100%; + background-position: center; + background-repeat: no-repeat; + } + + @for $i from 1 through 10 { + .avatar-#{nth($avatars, $i)} { + background-image: url("#{$avatarsPath}#{nth($avatars, $i)}.png"); + } + } +} \ No newline at end of file diff --git a/packages/client/src/pages/home/index.tsx b/packages/client/src/pages/home/index.tsx index 99b313c3..098710e3 100644 --- a/packages/client/src/pages/home/index.tsx +++ b/packages/client/src/pages/home/index.tsx @@ -1,8 +1,38 @@ -import React from 'react'; -import { Col, Row, Button, Input } from 'antd'; +import React, { useState } from 'react'; +import { Col, Row, Button, Input, message } from 'antd'; import './styles.scss'; +import { useNavigate } from 'react-router-dom'; +import AvatarSelector from '../../components/AvatarSelector'; const Home = () => { + + const [roomId, setRoomId] = useState(''); + const [username, setUsername] = useState(''); + const [avatar, setAvatar] = useState(null); + const navigate = useNavigate(); + + const join = () => { + if (!setRoomId) { + message.error('Please input the room id'); + return; + } + if (!username) { + message.error('Please input your username'); + return; + } + if (!avatar) { + message.error('Please select an avatar'); + return; + } + navigate('/game', { + state: { + avatar, + roomId, + avatar + } + }); + } + return (
@@ -17,18 +47,18 @@ const Home = () => { - + setRoomId(e.target.value)}/> - + - + setUsername(e.target.value)}/> - + setAvatar(value)}/>
diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index d8bb624b..1e2c6cef 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -12,7 +12,12 @@ "esModuleInterop": true, "noEmit": true, "skipLibCheck": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@/*": ["src/*"], + "~/*": ["src/*"], + } }, "include": ["src"] } diff --git a/packages/client/vite.config.ts b/packages/client/vite.config.ts index 4e4d5a06..5803a951 100644 --- a/packages/client/vite.config.ts +++ b/packages/client/vite.config.ts @@ -1,4 +1,5 @@ import { defineConfig } from "vite"; +import path from 'path'; export default defineConfig({ server: { @@ -12,4 +13,9 @@ export default defineConfig({ minify: true, sourcemap: true, }, + alias: { + '@/avatar': path.resolve(__dirname, './src/assets/avatar'), + '@/': path.resolve(__dirname, './src'), + '~': path.resolve(__dirname, './src'), + }, }); From a1b3cf600f001ef1a470f2d196ffa83eaebb4df1 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Thu, 21 Sep 2023 03:30:37 +0800 Subject: [PATCH 03/14] feat: add resolve path --- packages/client/package.json | 1 + packages/client/src/pages/game/index.tsx | 6 +++--- packages/client/src/pages/home/index.tsx | 4 ++-- packages/client/tsconfig.json | 1 - packages/client/vite.config.ts | 11 ++++++----- pnpm-lock.yaml | 23 +++++++++++------------ 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/client/package.json b/packages/client/package.json index 05a2cb9a..cb10e390 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -21,6 +21,7 @@ "@latticexyz/store-sync": "2.0.0-next.4", "@latticexyz/utils": "2.0.0-next.4", "@latticexyz/world": "2.0.0-next.4", + "@types/node": "^18.15.11", "antd": "^5.9.2", "contracts": "workspace:*", "ethers": "^5.7.2", diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index 27cd3f28..76daafc2 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from 'react'; -import { MapConfig } from '../../config'; -import { loadMapData } from '../../utils'; -import Map from '../../components/Map'; +import { MapConfig } from '@/config'; +import { loadMapData } from '@/utils'; +import Map from '@/components/Map'; const Game = () => { const [renderMapData, setRenderMapData] = useState([]); diff --git a/packages/client/src/pages/home/index.tsx b/packages/client/src/pages/home/index.tsx index 098710e3..50fc57b2 100644 --- a/packages/client/src/pages/home/index.tsx +++ b/packages/client/src/pages/home/index.tsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { Col, Row, Button, Input, message } from 'antd'; import './styles.scss'; import { useNavigate } from 'react-router-dom'; -import AvatarSelector from '../../components/AvatarSelector'; +import AvatarSelector from '@/components/AvatarSelector'; const Home = () => { @@ -28,7 +28,7 @@ const Home = () => { state: { avatar, roomId, - avatar + username } }); } diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index 1e2c6cef..e3762749 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -16,7 +16,6 @@ "baseUrl": ".", "paths": { "@/*": ["src/*"], - "~/*": ["src/*"], } }, "include": ["src"] diff --git a/packages/client/vite.config.ts b/packages/client/vite.config.ts index 5803a951..f54701c6 100644 --- a/packages/client/vite.config.ts +++ b/packages/client/vite.config.ts @@ -13,9 +13,10 @@ export default defineConfig({ minify: true, sourcemap: true, }, - alias: { - '@/avatar': path.resolve(__dirname, './src/assets/avatar'), - '@/': path.resolve(__dirname, './src'), - '~': path.resolve(__dirname, './src'), - }, + // base: './', + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 909d676c..06da5aac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,6 +62,9 @@ importers: '@latticexyz/world': specifier: 2.0.0-next.4 version: registry.npmmirror.com/@latticexyz/world@2.0.0-next.4(typescript@5.1.6) + '@types/node': + specifier: ^18.15.11 + version: 18.17.11 antd: specifier: ^5.9.2 version: 5.9.2(react-dom@18.2.0)(react@18.2.0) @@ -98,7 +101,7 @@ importers: version: 18.0.11 vite: specifier: ^4.2.1 - version: registry.npmmirror.com/vite@4.2.1(sass@1.64.1) + version: registry.npmmirror.com/vite@4.2.1(@types/node@18.17.11)(sass@1.64.1) wait-port: specifier: ^1.0.4 version: registry.npmmirror.com/wait-port@1.0.4 @@ -1098,7 +1101,6 @@ packages: /@types/node@18.17.11: resolution: {integrity: sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==} - dev: false /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -2727,13 +2729,13 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {commit: e282159d5170298eb2455a6c05280ab5a73a4ef0, repo: git+ssh://git@github.com/dapphub/ds-test.git, type: git} + resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} name: ds-test version: 1.0.0 dev: true github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1: - resolution: {commit: 74cfb77e308dd188d2f58864aaf44963ae6b88b1, repo: git+ssh://git@github.com/foundry-rs/forge-std.git, type: git} + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} name: forge-std version: 1.6.0 dev: true @@ -3733,11 +3735,7 @@ packages: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-18.15.11.tgz} name: '@types/node' version: 18.15.11 - - registry.npmmirror.com/@types/node@18.17.11: - resolution: {integrity: sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-18.17.11.tgz} - name: '@types/node' - version: 18.17.11 + dev: true registry.npmmirror.com/@types/prettier@2.7.3: resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@types/prettier/-/prettier-2.7.3.tgz} @@ -3760,7 +3758,7 @@ packages: name: '@types/ws' version: 8.5.5 dependencies: - '@types/node': registry.npmmirror.com/@types/node@18.15.11 + '@types/node': 18.17.11 registry.npmmirror.com/@typescript-eslint/eslint-plugin@5.46.1(@typescript-eslint/parser@5.46.1)(eslint@8.29.0)(typescript@5.1.6): resolution: {integrity: sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz} @@ -6264,7 +6262,7 @@ packages: '@protobufjs/path': registry.npmmirror.com/@protobufjs/path@1.1.2 '@protobufjs/pool': registry.npmmirror.com/@protobufjs/pool@1.1.0 '@protobufjs/utf8': registry.npmmirror.com/@protobufjs/utf8@1.1.0 - '@types/node': registry.npmmirror.com/@types/node@18.17.11 + '@types/node': 18.17.11 long: registry.npmmirror.com/long@5.2.3 registry.npmmirror.com/proxy-deep@3.1.1: @@ -7144,7 +7142,7 @@ packages: - utf-8-validate - zod - registry.npmmirror.com/vite@4.2.1(sass@1.64.1): + registry.npmmirror.com/vite@4.2.1(@types/node@18.17.11)(sass@1.64.1): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/vite/-/vite-4.2.1.tgz} id: registry.npmmirror.com/vite/4.2.1 name: vite @@ -7172,6 +7170,7 @@ packages: terser: optional: true dependencies: + '@types/node': 18.17.11 esbuild: registry.npmmirror.com/esbuild@0.17.19 postcss: registry.npmmirror.com/postcss@8.4.28 resolve: registry.npmmirror.com/resolve@1.22.4 From 42b2144f6f1f25f70d74345be05f2536e5c4dae3 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Thu, 21 Sep 2023 04:07:55 +0800 Subject: [PATCH 04/14] feat: finish the user avatar comp --- packages/client/src/App.tsx | 2 +- packages/client/src/common.scss | 15 ++++++++ .../src/components/AvatarSelector/index.tsx | 4 +-- .../src/components/AvatarSelector/styles.scss | 16 +-------- .../src/components/UserAvatar/index.tsx | 33 +++++++++++++++++ .../src/components/UserAvatar/styles.scss | 35 +++++++++++++++++++ packages/client/src/pages/game/index.tsx | 18 +++++++++- packages/client/src/pages/game/styles.scss | 13 +++++++ 8 files changed, 117 insertions(+), 19 deletions(-) create mode 100644 packages/client/src/components/UserAvatar/index.tsx create mode 100644 packages/client/src/components/UserAvatar/styles.scss create mode 100644 packages/client/src/pages/game/styles.scss diff --git a/packages/client/src/App.tsx b/packages/client/src/App.tsx index a5c76806..e915b6ec 100644 --- a/packages/client/src/App.tsx +++ b/packages/client/src/App.tsx @@ -6,7 +6,7 @@ import Game from './pages/game'; export const App = () => { return ( -
+
diff --git a/packages/client/src/common.scss b/packages/client/src/common.scss index 1a3b1ebb..c9e42993 100644 --- a/packages/client/src/common.scss +++ b/packages/client/src/common.scss @@ -1,3 +1,18 @@ +$avatars: 'elephant', 'hippo', 'panda', 'penguin', 'rabbit', 'giraffe', 'monkey', 'parrot', 'pig', 'snake'; +$avatarsPath: './assets/avatar/'; + +@for $i from 1 through 10 { + .avatar-#{nth($avatars, $i)} { + background-image: url("#{$avatarsPath}#{nth($avatars, $i)}.png"); + } +} + +.avatar-box { + background-size: 100%; + background-position: center; + background-repeat: no-repeat; +} + * { margin: 0; padding: 0; diff --git a/packages/client/src/components/AvatarSelector/index.tsx b/packages/client/src/components/AvatarSelector/index.tsx index 66a78177..b5db8065 100644 --- a/packages/client/src/components/AvatarSelector/index.tsx +++ b/packages/client/src/components/AvatarSelector/index.tsx @@ -25,7 +25,7 @@ const AvatarSelector = (props: IProps) => {
{ avatar ? -
+
: } @@ -36,7 +36,7 @@ const AvatarSelector = (props: IProps) => { Avatars.map((avatar) => { return (
  • { setAvatar(avatar); setAvatarsVisible(false); diff --git a/packages/client/src/components/AvatarSelector/styles.scss b/packages/client/src/components/AvatarSelector/styles.scss index 79268252..a0454fce 100644 --- a/packages/client/src/components/AvatarSelector/styles.scss +++ b/packages/client/src/components/AvatarSelector/styles.scss @@ -1,11 +1,8 @@ -$avatars: 'elephant', 'hippo', 'panda', 'penguin', 'rabbit', 'giraffe', 'monkey', 'parrot', 'pig', 'snake'; -$avatarsPath: '../../assets/avatar/'; - .mi-c-avatars-wrap { position: relative; width: 100px; - //height: 100px; + height: 100px; .avatars { position: absolute; @@ -17,23 +14,12 @@ $avatarsPath: '../../assets/avatar/'; .avatar-item { height: 80px; - background-size: 100%; - background-position: center; - background-repeat: no-repeat; } } .avatar-selected { width: 100px; height: 100px; - background-size: 100%; - background-position: center; - background-repeat: no-repeat; } - @for $i from 1 through 10 { - .avatar-#{nth($avatars, $i)} { - background-image: url("#{$avatarsPath}#{nth($avatars, $i)}.png"); - } - } } \ No newline at end of file diff --git a/packages/client/src/components/UserAvatar/index.tsx b/packages/client/src/components/UserAvatar/index.tsx new file mode 100644 index 00000000..5c1b92e0 --- /dev/null +++ b/packages/client/src/components/UserAvatar/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import './styles.scss'; + +interface IProps { + avatar: string; + username: string; + hp: number; + maxHp: number; + ap: number; + maxAp: number; + roomId: string; +} + +const UserAvatar = (props: IProps) => { + + const { avatar, username, hp, maxHp, ap, maxAp, roomId } = props; + + return ( +
    +
    +
    {username}
    +
    +
    +
    +
    +
    +
    +
    Room ID: {roomId}
    +
    + ); +}; + +export default UserAvatar; \ No newline at end of file diff --git a/packages/client/src/components/UserAvatar/styles.scss b/packages/client/src/components/UserAvatar/styles.scss new file mode 100644 index 00000000..bebfab9d --- /dev/null +++ b/packages/client/src/components/UserAvatar/styles.scss @@ -0,0 +1,35 @@ +.mi-c-user-avatar { + position: relative; + padding-left: 80px; + width: 160px; + height: 80px; + + .avatar-box { + position: absolute; + left: 0; + top: 0; + width: 80px; + height: 80px; + border: 2px solid #80c6df; + border-radius: 10px; + background-color: #fff; + box-sizing: border-box; + } + + .hp { + background: red; + } + + .ap { + background: yellow; + } + + .hp-wrapper, .ap-wrapper { + //height: 20px; + border: 2px solid; + + & > div { + height: 16px; + } + } +} \ No newline at end of file diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index 76daafc2..1dfbe48b 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -2,6 +2,9 @@ import React, { useEffect, useRef, useState } from 'react'; import { MapConfig } from '@/config'; import { loadMapData } from '@/utils'; import Map from '@/components/Map'; +import UserAvatar from '@/components/UserAvatar'; +import { useLocation } from 'react-router-dom'; +import './styles.scss'; const Game = () => { const [renderMapData, setRenderMapData] = useState([]); @@ -11,6 +14,8 @@ const Game = () => { }); const mapDataRef = useRef([]); + const location = useLocation(); + const { username = '', avatar = 'snake', roomId = '000000' } = location.state ?? {}; const onKeyDown = (e) => { const mapData = mapDataRef.current; @@ -45,7 +50,18 @@ const Game = () => { }, []); return ( -
    +
    +
    + +
    Date: Thu, 21 Sep 2023 20:55:30 +0800 Subject: [PATCH 05/14] feat: add rank list --- packages/client/src/components/Rank/index.tsx | 53 +++++++++++++ .../client/src/components/Rank/styles.scss | 77 +++++++++++++++++++ packages/client/src/pages/game/index.tsx | 27 +++++++ 3 files changed, 157 insertions(+) create mode 100644 packages/client/src/components/Rank/index.tsx create mode 100644 packages/client/src/components/Rank/styles.scss diff --git a/packages/client/src/components/Rank/index.tsx b/packages/client/src/components/Rank/index.tsx new file mode 100644 index 00000000..47bde604 --- /dev/null +++ b/packages/client/src/components/Rank/index.tsx @@ -0,0 +1,53 @@ +import React, { useState } from 'react'; +import './styles.scss'; + +interface IUser { + id: string | number; + name: string; + score: number; +} + +interface IProps { + data: IUser[]; + curId: number; +} + +const Rank = (props: IProps) => { + + const { data, curId } = props; + const curIndex = data.findIndex(item => item.id === curId); + const [visible, setVisible] = useState(false); + + const toggleVisible = () => { + setVisible(!visible); + } + + return ( +
    +
    Rank
    +
      + { + data.map((item, index) => { + return ( +
    • +
      {index + 1}
      +
      {item.name}
      +
      {item.score}
      +
    • + ) + }) + } +
    +
    +
    {curIndex + 1}
    +
    ME
    +
    {data[curIndex].score}
    +
    +
    +
    +
    +
    + ); +}; + +export default Rank; \ No newline at end of file diff --git a/packages/client/src/components/Rank/styles.scss b/packages/client/src/components/Rank/styles.scss new file mode 100644 index 00000000..7333eec6 --- /dev/null +++ b/packages/client/src/components/Rank/styles.scss @@ -0,0 +1,77 @@ +.mi-c-rank { + position: absolute; + left: 0; + padding: 16px; + width: 160px; + height: 500px; + background: #eee; + top: 50%; + transform: translate3d(0, -50%, 0); + transition: transform 0.3s; + + .rank-title { + border-bottom: 2px solid; + line-height: 2; + text-align: center; + } + + .rank-list { + padding: 8px 0; + } + + .my-rank-info { + border-top: 2px solid; + padding-top: 8px; + } + + .rank-index { + width: 30px; + } + + .name { + flex: 1; + } + + .score { + width: 50px; + } + + .rank-info { + display: flex; + + & > div { + padding: 0 6px; + } + } + + .opt { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 60px; + left: 100%; + top: 50%; + transform: translateY(-50%); + background: #eee; + cursor: pointer; + + .toggle-visible{ + content: ''; + display: block; + border-width: 28px 16px 28px 0; + border-color: transparent blue transparent transparent; + border-style: solid; + } + } + + &.hidden { + transform: translate3d(-100%, -50%, 0); + + .opt .toggle-visible { + border-width: 28px 0 28px 16px; + border-color: transparent transparent transparent blue; + } + } +} \ No newline at end of file diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index 1dfbe48b..f254872e 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -5,6 +5,7 @@ import Map from '@/components/Map'; import UserAvatar from '@/components/UserAvatar'; import { useLocation } from 'react-router-dom'; import './styles.scss'; +import Rank from '@/components/Rank'; const Game = () => { const [renderMapData, setRenderMapData] = useState([]); @@ -62,6 +63,32 @@ const Game = () => { maxAp={100} />
    + + Date: Tue, 26 Sep 2023 01:24:24 +0800 Subject: [PATCH 06/14] fix: Optimize the click-through experience of the Rank elem --- packages/client/src/components/Rank/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/components/Rank/index.tsx b/packages/client/src/components/Rank/index.tsx index 47bde604..332e8525 100644 --- a/packages/client/src/components/Rank/index.tsx +++ b/packages/client/src/components/Rank/index.tsx @@ -43,8 +43,8 @@ const Rank = (props: IProps) => {
    ME
    {data[curIndex].score}
    -
    -
    +
    +
    ); From 95317c95772f3208768929fb2ea60215ba637679 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Thu, 28 Sep 2023 21:29:48 +0800 Subject: [PATCH 07/14] fix: Generate simulated data && The player displays the data --- packages/client/src/components/Map/index.tsx | 27 +++++++---- .../client/src/components/Map/styles.scss | 1 - .../client/src/components/MapCell/index.tsx | 45 +++++++++++-------- .../client/src/components/MapCell/styles.scss | 14 +++--- .../client/src/components/Player/index.tsx | 9 ++-- .../client/src/components/Player/styles.scss | 5 +++ packages/client/src/mock/data.ts | 38 ++++++++++++++++ packages/client/src/pages/game/index.tsx | 28 ++---------- 8 files changed, 107 insertions(+), 60 deletions(-) create mode 100644 packages/client/src/components/Player/styles.scss create mode 100644 packages/client/src/mock/data.ts diff --git a/packages/client/src/components/Map/index.tsx b/packages/client/src/components/Map/index.tsx index c07e964c..c4f004af 100644 --- a/packages/client/src/components/Map/index.tsx +++ b/packages/client/src/components/Map/index.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useMemo, useRef } from 'react'; import { IPlayer } from '../Player'; -import MapCell from '../MapCell'; +import MapCell, { ICellClassCache } from '../MapCell'; import './styles.scss'; interface IProps { @@ -15,14 +15,22 @@ interface IProps { } const Map = (props: IProps) => { - const { width, height, vertexCoordinate, data } = props; + const { width, height, vertexCoordinate, data, players } = props; const { x: startX, y: startY } = vertexCoordinate; const staticData = useMemo(() => { - return Array(height).fill(0).map(_ => Array(width).fill(0)); + return Array(height).fill(0).map(() => Array(width).fill(0)); }, [width, height]); - const cellClassCache = useRef({}); + const playerData = useMemo(() => { + const obj = {}; + players.forEach((player) => { + obj[`${player.x}-${player.y}`] = player; + }); + return obj; + }, [players]); + + const cellClassCache = useRef({}); if (data.length === 0) { @@ -34,19 +42,22 @@ const Map = (props: IProps) => {
    { staticData.map((row, rowIndex) => { + const y = startY + rowIndex return ( -
    +
    { row.map((_, colIndex) => { + const x = startX + colIndex; return ( ) }) diff --git a/packages/client/src/components/Map/styles.scss b/packages/client/src/components/Map/styles.scss index 65de8c85..d83d4621 100644 --- a/packages/client/src/components/Map/styles.scss +++ b/packages/client/src/components/Map/styles.scss @@ -9,7 +9,6 @@ .mi-map-content { border: 1px solid; width: $cellSize * 24; - font-size: 0; } .mi-map-row { diff --git a/packages/client/src/components/MapCell/index.tsx b/packages/client/src/components/MapCell/index.tsx index cdb5e6ff..ec93b32d 100644 --- a/packages/client/src/components/MapCell/index.tsx +++ b/packages/client/src/components/MapCell/index.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { CellType } from '../../constants'; -import { getCellClass } from '../../utils'; +import { getCellClass } from '@/utils'; import './styles.scss'; +import Player, { IPlayer } from '@/components/Player'; interface ITransform { index: number; @@ -13,19 +14,22 @@ interface ICellClass { classList: number[]; } +export interface ICellClassCache { + [k: string]: ICellClass +} + interface IProps { coordinate: { x: number; y: number; }, mapData: number[][]; - cellClassCache: { - [k: string]: ICellClass - }; + cellClassCache: ICellClassCache; + player?: IPlayer; } const MapCell = (props: IProps) => { - const { coordinate: { x, y}, mapData, cellClassCache } = props; + const { coordinate: { x, y}, mapData, cellClassCache, player } = props; if (!cellClassCache[`${y}-${x}`]) { cellClassCache[`${y}-${x}`] = getCellClass(mapData, { x, y}); } @@ -35,20 +39,25 @@ const MapCell = (props: IProps) => { return (
    +
    + { + classList.map((item, index) => { + const transformStyle = transforms.find((item) => item.index === index); + const style = transformStyle ? { + transform: transformStyle.transform + } : {}; + return ( +
    + ) + }) + } +
    { - classList.map((item, index) => { - const transformStyle = transforms.find((item) => item.index === index); - const style = transformStyle ? { - transform: transformStyle.transform - } : {}; - return ( -
    - ) - }) + player && }
    ); diff --git a/packages/client/src/components/MapCell/styles.scss b/packages/client/src/components/MapCell/styles.scss index 02921c15..f4b7a5b2 100644 --- a/packages/client/src/components/MapCell/styles.scss +++ b/packages/client/src/components/MapCell/styles.scss @@ -1,10 +1,12 @@ - .mi-map-cell { - flex-wrap: wrap; - font-size: 0; - display: grid; - grid-template-columns: 1fr 1fr 1fr; - grid-template-rows: 1fr 1fr 1fr; + position: relative; + + .cell-map-box { + display: grid; + height: 100%; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: 1fr 1fr 1fr; + } @for $i from 1 through 25 { .mi-wall-#{$i} { diff --git a/packages/client/src/components/Player/index.tsx b/packages/client/src/components/Player/index.tsx index df8038af..014c733e 100644 --- a/packages/client/src/components/Player/index.tsx +++ b/packages/client/src/components/Player/index.tsx @@ -1,15 +1,18 @@ import React from 'react'; +import './styles.scss'; export interface IPlayer { x: number; y: number; - + id: number; } const Player = (props: IPlayer) => { return ( -
    - +
    + {props.id} + {props.x} + {props.y}
    ); }; diff --git a/packages/client/src/components/Player/styles.scss b/packages/client/src/components/Player/styles.scss new file mode 100644 index 00000000..64be2595 --- /dev/null +++ b/packages/client/src/components/Player/styles.scss @@ -0,0 +1,5 @@ +.mi-player { + position: absolute; + top: 0; + left: 0; +} \ No newline at end of file diff --git a/packages/client/src/mock/data.ts b/packages/client/src/mock/data.ts new file mode 100644 index 00000000..c5dae31c --- /dev/null +++ b/packages/client/src/mock/data.ts @@ -0,0 +1,38 @@ +export const RankMockData = [ + { + name: 'aaaa', + score: 100, + id: 1 + }, + { + name: 'aaaa1', + score: 99, + id: 2 + }, + { + name: 'aaaa2', + score: 50, + id: 3 + }, + { + name: 'aaaa3', + score: 5, + id: 4 + }, +]; + + +export const PlayersMockData = [ + { + id: 1, + x: 4, + y: 4, + }, + { + id: 1, + x: 15, + y: 10, + } +]; + +export const CurIdMockData = 3; \ No newline at end of file diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index f254872e..b44b902a 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -6,6 +6,7 @@ import UserAvatar from '@/components/UserAvatar'; import { useLocation } from 'react-router-dom'; import './styles.scss'; import Rank from '@/components/Rank'; +import { CurIdMockData, PlayersMockData, RankMockData } from '@/mock/data'; const Game = () => { const [renderMapData, setRenderMapData] = useState([]); @@ -65,34 +66,13 @@ const Game = () => {
    From 3935fb1289948354626501ea0bc5bd8ada11e580 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Sun, 1 Oct 2023 07:59:20 +0800 Subject: [PATCH 08/14] feat: add player's temp style --- packages/client/src/common.scss | 2 +- packages/client/src/components/Player/index.tsx | 6 +++--- packages/client/src/components/Player/styles.scss | 8 ++++++++ packages/client/src/mock/data.ts | 8 ++++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/client/src/common.scss b/packages/client/src/common.scss index c9e42993..315ec675 100644 --- a/packages/client/src/common.scss +++ b/packages/client/src/common.scss @@ -8,7 +8,7 @@ $avatarsPath: './assets/avatar/'; } .avatar-box { - background-size: 100%; + background-size: contain; background-position: center; background-repeat: no-repeat; } diff --git a/packages/client/src/components/Player/index.tsx b/packages/client/src/components/Player/index.tsx index 014c733e..d1bfa875 100644 --- a/packages/client/src/components/Player/index.tsx +++ b/packages/client/src/components/Player/index.tsx @@ -5,14 +5,14 @@ export interface IPlayer { x: number; y: number; id: number; + username: string; } const Player = (props: IPlayer) => { return (
    - {props.id} - {props.x} - {props.y} +
    {props.username}
    +
    ); }; diff --git a/packages/client/src/components/Player/styles.scss b/packages/client/src/components/Player/styles.scss index 64be2595..b0bab3b3 100644 --- a/packages/client/src/components/Player/styles.scss +++ b/packages/client/src/components/Player/styles.scss @@ -2,4 +2,12 @@ position: absolute; top: 0; left: 0; + height: 100%; + display: flex; + flex-direction: column; + + .player-body { + flex: 1; + //background: url(""); + } } \ No newline at end of file diff --git a/packages/client/src/mock/data.ts b/packages/client/src/mock/data.ts index c5dae31c..7eb28eca 100644 --- a/packages/client/src/mock/data.ts +++ b/packages/client/src/mock/data.ts @@ -1,3 +1,5 @@ +import { IPlayer } from '@/components/Player'; + export const RankMockData = [ { name: 'aaaa', @@ -22,15 +24,17 @@ export const RankMockData = [ ]; -export const PlayersMockData = [ +export const PlayersMockData: IPlayer[] = [ { id: 1, + username: 'Vimo', x: 4, y: 4, }, { id: 1, - x: 15, + username: 'oto', + x: 18, y: 10, } ]; From d55802165daf8572070b711b2aa5747fc976d497 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Sun, 1 Oct 2023 11:00:45 +0800 Subject: [PATCH 09/14] feat: player auto way finding --- packages/client/src/components/Map/index.tsx | 22 ++++++-- .../client/src/components/MapCell/index.tsx | 27 +++++++--- packages/client/src/components/Rank/index.tsx | 2 +- packages/client/src/mock/data.ts | 6 +-- packages/client/src/pages/game/index.tsx | 24 ++++++++- packages/client/src/utils/index.ts | 2 +- packages/client/src/utils/map.ts | 52 ++++++++++++++++++- 7 files changed, 117 insertions(+), 18 deletions(-) diff --git a/packages/client/src/components/Map/index.tsx b/packages/client/src/components/Map/index.tsx index c4f004af..bd6c87b3 100644 --- a/packages/client/src/components/Map/index.tsx +++ b/packages/client/src/components/Map/index.tsx @@ -1,27 +1,34 @@ import React, { useEffect, useMemo, useRef } from 'react'; import { IPlayer } from '../Player'; -import MapCell, { ICellClassCache } from '../MapCell'; +import MapCell, { ICellClassCache, ICoordinate } from '../MapCell'; import './styles.scss'; +import { bfs, simplifyMapData } from '@/utils/map'; interface IProps { width: number; height: number; players: IPlayer[]; data: number[][]; + curId: number; vertexCoordinate: { x: number, y: number, - } + }; + onPlayerMove: (paths: ICoordinate[]) => void; } const Map = (props: IProps) => { - const { width, height, vertexCoordinate, data, players } = props; + const { width, height, vertexCoordinate, data = [], players, curId, onPlayerMove } = props; const { x: startX, y: startY } = vertexCoordinate; const staticData = useMemo(() => { return Array(height).fill(0).map(() => Array(width).fill(0)); }, [width, height]); + const simpleMapData = useMemo(() => { + return simplifyMapData(data, players); + }, [data, players]); + const playerData = useMemo(() => { const obj = {}; players.forEach((player) => { @@ -32,6 +39,14 @@ const Map = (props: IProps) => { const cellClassCache = useRef({}); + const onMoveTo = (coordinate) => { + console.log(coordinate); + const { x, y} = players.find((player) => player.id === curId); + const paths = bfs(simpleMapData, { x, y }, coordinate); + onPlayerMove(paths); + console.log(paths, { x, y }, coordinate); + } + if (data.length === 0) { return
    @@ -58,6 +73,7 @@ const Map = (props: IProps) => { mapData={data} cellClassCache={cellClassCache.current} player={playerData[`${x}-${y}`]} + onMoveTo={onMoveTo} /> ) }) diff --git a/packages/client/src/components/MapCell/index.tsx b/packages/client/src/components/MapCell/index.tsx index ec93b32d..16409276 100644 --- a/packages/client/src/components/MapCell/index.tsx +++ b/packages/client/src/components/MapCell/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { CellType } from '../../constants'; -import { getCellClass } from '@/utils'; +import { getCellClass, isMovable } from '@/utils'; import './styles.scss'; import Player, { IPlayer } from '@/components/Player'; @@ -18,27 +18,38 @@ export interface ICellClassCache { [k: string]: ICellClass } +export interface ICoordinate { + x: number; + y: number; +} + interface IProps { - coordinate: { - x: number; - y: number; - }, + coordinate: ICoordinate, mapData: number[][]; cellClassCache: ICellClassCache; player?: IPlayer; + onMoveTo: (ICoordinate) => void; } const MapCell = (props: IProps) => { - const { coordinate: { x, y}, mapData, cellClassCache, player } = props; + const { coordinate: { x, y}, mapData, cellClassCache, player, onMoveTo } = props; if (!cellClassCache[`${y}-${x}`]) { cellClassCache[`${y}-${x}`] = getCellClass(mapData, { x, y}); } - const { transforms, classList } = cellClassCache[`${y}-${x}`] + const { transforms, classList } = cellClassCache[`${y}-${x}`]; + const onContextMenu = (e) => { + e.preventDefault(); + const curMapDataType = mapData[y][x]; + if (isMovable(curMapDataType) && !player) { + onMoveTo({ x, y}); + } + + } return ( -
    +
    { classList.map((item, index) => { diff --git a/packages/client/src/components/Rank/index.tsx b/packages/client/src/components/Rank/index.tsx index 332e8525..b8624545 100644 --- a/packages/client/src/components/Rank/index.tsx +++ b/packages/client/src/components/Rank/index.tsx @@ -29,7 +29,7 @@ const Rank = (props: IProps) => { { data.map((item, index) => { return ( -
  • +
  • {index + 1}
    {item.name}
    {item.score}
    diff --git a/packages/client/src/mock/data.ts b/packages/client/src/mock/data.ts index 7eb28eca..1b209ede 100644 --- a/packages/client/src/mock/data.ts +++ b/packages/client/src/mock/data.ts @@ -26,14 +26,14 @@ export const RankMockData = [ export const PlayersMockData: IPlayer[] = [ { - id: 1, - username: 'Vimo', + id: 3, + username: 'Me', x: 4, y: 4, }, { id: 1, - username: 'oto', + username: 'other', x: 18, y: 10, } diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index b44b902a..57dcee03 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -7,6 +7,7 @@ import { useLocation } from 'react-router-dom'; import './styles.scss'; import Rank from '@/components/Rank'; import { CurIdMockData, PlayersMockData, RankMockData } from '@/mock/data'; +import { IPlayer } from '@/components/Player'; const Game = () => { const [renderMapData, setRenderMapData] = useState([]); @@ -15,6 +16,9 @@ const Game = () => { y: 0 }); + const [curPlayer, setCurPlayer] = useState(null); + const [players, setPlayers] = useState(PlayersMockData); + const mapDataRef = useRef([]); const location = useLocation(); const { username = '', avatar = 'snake', roomId = '000000' } = location.state ?? {}; @@ -41,6 +45,19 @@ const Game = () => { setVertexCoordinate({ ...vertexCoordinate }); + }; + + const movePlayer = (paths) => { + let pathIndex = 1; + const curPlayerIndex = players.findIndex(item => item.id === curPlayer!.id); + const interval = setInterval(() => { + Object.assign(players[curPlayerIndex], paths[pathIndex]); + pathIndex++; + setPlayers([...players]); + if (pathIndex === paths.length) { + clearInterval(interval); + } + }, 300); } useEffect(() => { @@ -49,6 +66,9 @@ const Game = () => { mapDataRef.current = csv; }); + const player = players.find((item) => item.id === CurIdMockData); + setCurPlayer(player as IPlayer); + }, []); return ( @@ -72,9 +92,11 @@ const Game = () => {
  • ) diff --git a/packages/client/src/utils/index.ts b/packages/client/src/utils/index.ts index a1b0e097..cd6829f0 100644 --- a/packages/client/src/utils/index.ts +++ b/packages/client/src/utils/index.ts @@ -1 +1 @@ -export { cutMapData, loadMapData, getCellClass } from './map' \ No newline at end of file +export { cutMapData, loadMapData, getCellClass, isMovable } from './map' \ No newline at end of file diff --git a/packages/client/src/utils/map.ts b/packages/client/src/utils/map.ts index 209e4d8f..0bd3d4e9 100644 --- a/packages/client/src/utils/map.ts +++ b/packages/client/src/utils/map.ts @@ -1,4 +1,6 @@ -import { CellType } from '../constants'; +import { CellType } from '@/constants'; +import { ICoordinate } from '@/components/MapCell'; +import { IPlayer } from '@/components/Player'; export const cutMapData = (mapData, startCoordinate, endCoordinate) => { const { x: startX, y: startY} = startCoordinate; @@ -232,3 +234,51 @@ export const getCellClass = (data, coordinate) => { classList: [...wallIndexArr.slice(6), ...wallIndexArr.slice(3, 6),...wallIndexArr.slice(0, 3)] } } + + +export const isMovable = (type) => { + return type === CellType.movable; +} + +export const bfs = (mapData: number[][], from: ICoordinate, to: ICoordinate) => { + const data = mapData.map((row) => [...row]); + data[from.y][from.x] = 1; + + let paths = [[from]]; + const dirs = [[-1, 0], [1, 0], [0, -1], [0, 1]]; + + do { + const newPaths = []; + const hasFind = paths.some((path) => { + const last = path[path.length - 1]; + return dirs.some((dir) => { + const [dX, dY] = dir; + const nextX = last.x + dX; + const nextY = last.y + dY; + + if (data[nextY][nextX] === 0) { + newPaths.push([...path, { x: nextX, y: nextY}]); + data[nextY][nextX] = 1; + } + return nextX === to.x && nextY === to.y; + }); + }); + if (hasFind) { + return newPaths[newPaths.length - 1] + } + paths = newPaths; + } while (paths.length !== 0); + + return []; +}; + +export const simplifyMapData = (mapData: number[][], players: IPlayer[]) => { + if (mapData.length === 0) { + return mapData; + } + const data = mapData.map((row) => row.map(type => isMovable(type) ? 0 : 1)); + players.forEach(({ x, y}) => { + data[y][x] = 1; + }); + return data; +} \ No newline at end of file From 883b952f998e5181282a676dd1bb36ff172ba14e Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Tue, 3 Oct 2023 08:15:33 +0800 Subject: [PATCH 10/14] feat: remove player's data in the simple mapData --- packages/client/src/components/Map/index.tsx | 4 ++-- packages/client/src/utils/map.ts | 8 ++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/client/src/components/Map/index.tsx b/packages/client/src/components/Map/index.tsx index bd6c87b3..340893ae 100644 --- a/packages/client/src/components/Map/index.tsx +++ b/packages/client/src/components/Map/index.tsx @@ -26,8 +26,8 @@ const Map = (props: IProps) => { }, [width, height]); const simpleMapData = useMemo(() => { - return simplifyMapData(data, players); - }, [data, players]); + return simplifyMapData(data); + }, [data]); const playerData = useMemo(() => { const obj = {}; diff --git a/packages/client/src/utils/map.ts b/packages/client/src/utils/map.ts index 0bd3d4e9..16dad19d 100644 --- a/packages/client/src/utils/map.ts +++ b/packages/client/src/utils/map.ts @@ -272,13 +272,9 @@ export const bfs = (mapData: number[][], from: ICoordinate, to: ICoordinate) => return []; }; -export const simplifyMapData = (mapData: number[][], players: IPlayer[]) => { +export const simplifyMapData = (mapData: number[][]) => { if (mapData.length === 0) { return mapData; } - const data = mapData.map((row) => row.map(type => isMovable(type) ? 0 : 1)); - players.forEach(({ x, y}) => { - data[y][x] = 1; - }); - return data; + return mapData.map((row) => row.map(type => isMovable(type) ? 0 : 1)); } \ No newline at end of file From dc2edb844a9600c264d513f0db609b4c069e4676 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Wed, 4 Oct 2023 16:22:27 +0800 Subject: [PATCH 11/14] feat: remove player's data transform to merkel tree --- packages/client/abi/Mississippi.json | 441 ++ packages/client/package.json | 6 + .../src/components/AvatarSelector/index.tsx | 1 + packages/client/src/components/Map/index.tsx | 8 +- packages/client/src/hooks/useMerkel.tsx | 69 + packages/client/src/pages/game/index.tsx | 5 +- packages/client/src/pages/home/index.tsx | 7 + packages/client/src/service/connection.ts | 14 + packages/client/src/service/user.ts | 19 + packages/client/src/utils/map.ts | 4 +- pnpm-lock.yaml | 3684 +++++++++++++++-- 11 files changed, 3879 insertions(+), 379 deletions(-) create mode 100644 packages/client/abi/Mississippi.json create mode 100644 packages/client/src/hooks/useMerkel.tsx create mode 100644 packages/client/src/service/connection.ts create mode 100644 packages/client/src/service/user.ts diff --git a/packages/client/abi/Mississippi.json b/packages/client/abi/Mississippi.json new file mode 100644 index 00000000..fc456c04 --- /dev/null +++ b/packages/client/abi/Mississippi.json @@ -0,0 +1,441 @@ +[ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AttackStart", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "x", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "y", + "type": "uint16" + } + ], + "name": "MoveEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "BattleList", + "outputs": [ + { + "internalType": "address", + "name": "attacker", + "type": "address" + }, + { + "internalType": "address", + "name": "defender", + "type": "address" + }, + { + "internalType": "address", + "name": "winer", + "type": "address" + }, + { + "internalType": "uint16", + "name": "round", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "attackerHP", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "defenderHP", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isEnd", + "type": "bool" + }, + { + "internalType": "enum Mississippi_.BattleState", + "name": "attackerState", + "type": "uint8" + }, + { + "internalType": "enum Mississippi_.BattleState", + "name": "defenderState", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "attackerAction", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "defenderAction", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "attackerBuffHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "defenderBuffHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "attackerArg", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "defenderArg", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "MapBoard", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "UserInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "SuitId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "EquipmentId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "x", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "y", + "type": "uint16" + }, + { + "internalType": "enum Mississippi_.UserState", + "name": "state", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "HP", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "UserLocationLock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "battleId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_targetAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "x", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "y", + "type": "uint16" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "internalType": "struct Mississippi_.Move[]", + "name": "moveList", + "type": "tuple[]" + } + ], + "name": "battleInvitation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "board", + "outputs": [ + { + "internalType": "uint16", + "name": "x", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "y", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxAttackzDistance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxMoveDistance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxTimeLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxUserLocationLockTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "merkleRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "x", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "y", + "type": "uint16" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "internalType": "struct Mississippi_.Move[]", + "name": "moveList", + "type": "tuple[]" + } + ], + "name": "move", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "name": "setMerkleRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "x", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "y", + "type": "uint16" + } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/packages/client/package.json b/packages/client/package.json index cb10e390..69791cca 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -21,10 +21,14 @@ "@latticexyz/store-sync": "2.0.0-next.4", "@latticexyz/utils": "2.0.0-next.4", "@latticexyz/world": "2.0.0-next.4", + "@openzeppelin/contracts": "^4.9.3", "@types/node": "^18.15.11", "antd": "^5.9.2", + "buffer": "^6.0.3", "contracts": "workspace:*", "ethers": "^5.7.2", + "keccak256": "^1.0.6", + "merkletreejs": "^0.3.10", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.16.0", @@ -33,8 +37,10 @@ "viem": "1.6.0" }, "devDependencies": { + "@nomicfoundation/hardhat-toolbox": "^3.0.0", "@types/react": "^18.0.11", "@types/react-dom": "^18.0.11", + "hardhat": "^2.17.4", "vite": "^4.2.1", "wait-port": "^1.0.4" } diff --git a/packages/client/src/components/AvatarSelector/index.tsx b/packages/client/src/components/AvatarSelector/index.tsx index b5db8065..61e08882 100644 --- a/packages/client/src/components/AvatarSelector/index.tsx +++ b/packages/client/src/components/AvatarSelector/index.tsx @@ -36,6 +36,7 @@ const AvatarSelector = (props: IProps) => { Avatars.map((avatar) => { return (
  • { setAvatar(avatar); diff --git a/packages/client/src/components/Map/index.tsx b/packages/client/src/components/Map/index.tsx index 340893ae..b53c8e0a 100644 --- a/packages/client/src/components/Map/index.tsx +++ b/packages/client/src/components/Map/index.tsx @@ -3,6 +3,7 @@ import { IPlayer } from '../Player'; import MapCell, { ICellClassCache, ICoordinate } from '../MapCell'; import './styles.scss'; import { bfs, simplifyMapData } from '@/utils/map'; +import useMerkel from '@/hooks/useMerkel'; interface IProps { width: number; @@ -14,7 +15,7 @@ interface IProps { x: number, y: number, }; - onPlayerMove: (paths: ICoordinate[]) => void; + onPlayerMove: (paths: ICoordinate[], simpleMapData: number[][]) => void; } const Map = (props: IProps) => { @@ -29,6 +30,8 @@ const Map = (props: IProps) => { return simplifyMapData(data); }, [data]); + const formatMovePath = useMerkel(simpleMapData); + const playerData = useMemo(() => { const obj = {}; players.forEach((player) => { @@ -40,10 +43,9 @@ const Map = (props: IProps) => { const cellClassCache = useRef({}); const onMoveTo = (coordinate) => { - console.log(coordinate); const { x, y} = players.find((player) => player.id === curId); const paths = bfs(simpleMapData, { x, y }, coordinate); - onPlayerMove(paths); + onPlayerMove(paths, formatMovePath(paths)); console.log(paths, { x, y }, coordinate); } diff --git a/packages/client/src/hooks/useMerkel.tsx b/packages/client/src/hooks/useMerkel.tsx new file mode 100644 index 00000000..96e48f91 --- /dev/null +++ b/packages/client/src/hooks/useMerkel.tsx @@ -0,0 +1,69 @@ +import React, { useEffect, useRef } from 'react'; +import { MerkleTree } from 'merkletreejs'; +import { solidityKeccak256, keccak256 } from 'ethers/lib/utils'; +import { Buffer } from 'buffer'; + + +const useMerkel = (mapData) => { + + const convertToLeafs = (mapData) => { + const result = []; + for (let x = 0; x < mapData.length; x++) { + for (let y = 0; y < mapData[x].length; y++) { + result.push({ x, y, value: mapData[x][y] }); + } + } + return result; + } + + const merkel = useRef({ + leafs: convertToLeafs(mapData), + merkleTree: null + }); + + const getProof = (x, y) => { + const leaf = generateLeaf(x, y, 1); + return merkel.current.merkleTree.getHexProof(leaf); + } + + // 通过本函数将地图初始化为默克尔树节点的字符串数组,每个字符串的格式为"x,y-value" +// 其中value为0或1,表示该位置是否可以走,默认0不可走,1以及以后数字可以约定分别代表不同的可行性 + const generateLeaf = (x, y, value) => { + + return Buffer.from( + solidityKeccak256( + ["uint16", "string", "uint16", "string", "uint8"], + [x, ",", y, ",", value] + ).slice(2), + "hex" + ); + } + + const formatMovePath = (paths) => { + const steps = paths.map(({ x, y }) => [x, y]); + const result = []; + for (let i = 0; i < steps.length; i++) { + const proof = getProof(steps[i][0], steps[i][1]); + result.push([steps[i][0], steps[i][1], proof]); + } + return result; + } + + useEffect(() => { + if (mapData.length === 0) { + return; + } + merkel.current.leafs = convertToLeafs(mapData); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + merkel.current.merkleTree = new MerkleTree( + merkel.current.leafs.map((info) => generateLeaf(info.x, info.y, info.value)), + keccak256, + { sortPairs: true } + ); + }, [mapData]); + + return formatMovePath; +} + +export default useMerkel; \ No newline at end of file diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index 57dcee03..ebdf2375 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -8,6 +8,7 @@ import './styles.scss'; import Rank from '@/components/Rank'; import { CurIdMockData, PlayersMockData, RankMockData } from '@/mock/data'; import { IPlayer } from '@/components/Player'; +import { uploadUserMove } from '@/service/user'; const Game = () => { const [renderMapData, setRenderMapData] = useState([]); @@ -47,7 +48,7 @@ const Game = () => { }); }; - const movePlayer = (paths) => { + const movePlayer = (paths, merkelData) => { let pathIndex = 1; const curPlayerIndex = players.findIndex(item => item.id === curPlayer!.id); const interval = setInterval(() => { @@ -58,6 +59,8 @@ const Game = () => { clearInterval(interval); } }, 300); + console.log(merkelData); + uploadUserMove(players[curPlayerIndex].x, players[curPlayerIndex].y, merkelData); } useEffect(() => { diff --git a/packages/client/src/pages/home/index.tsx b/packages/client/src/pages/home/index.tsx index 50fc57b2..5537edb3 100644 --- a/packages/client/src/pages/home/index.tsx +++ b/packages/client/src/pages/home/index.tsx @@ -3,6 +3,7 @@ import { Col, Row, Button, Input, message } from 'antd'; import './styles.scss'; import { useNavigate } from 'react-router-dom'; import AvatarSelector from '@/components/AvatarSelector'; +import { connect } from '@/service/connection'; const Home = () => { @@ -33,6 +34,7 @@ const Home = () => { }); } + return (
    @@ -61,6 +63,11 @@ const Home = () => { setAvatar(value)}/> + + + + +
    ); diff --git a/packages/client/src/service/connection.ts b/packages/client/src/service/connection.ts new file mode 100644 index 00000000..7e64ad5a --- /dev/null +++ b/packages/client/src/service/connection.ts @@ -0,0 +1,14 @@ +import { ethers } from 'ethers'; + +export const connect = async () => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const provider = new ethers.providers.Web3Provider(window.ethereum) + + await provider.send("eth_requestAccounts", []); + + const signer = provider.getSigner(); + + const addr = await signer.getAddress(); + console.log('connected', addr); +} \ No newline at end of file diff --git a/packages/client/src/service/user.ts b/packages/client/src/service/user.ts new file mode 100644 index 00000000..0807c6c4 --- /dev/null +++ b/packages/client/src/service/user.ts @@ -0,0 +1,19 @@ +import { ethers } from 'ethers'; +import Mississippi from '../../abi/Mississippi.json'; + +export const uploadUserMove = async (x, y, steps) => { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const provider = new ethers.providers.Web3Provider(window.ethereum) + + await provider.send("eth_requestAccounts", []); + const signer = provider.getSigner(); + + const miss = new ethers.Contract('0xc86c785620e9d9a14374ea203b34b6312bce6d03', Mississippi, signer); + + const transaction = await miss.connect(signer).move([x, y, steps]); + const tx = await transaction.wait(1); + + console.log(tx.events) + +} \ No newline at end of file diff --git a/packages/client/src/utils/map.ts b/packages/client/src/utils/map.ts index 16dad19d..45a42437 100644 --- a/packages/client/src/utils/map.ts +++ b/packages/client/src/utils/map.ts @@ -256,7 +256,7 @@ export const bfs = (mapData: number[][], from: ICoordinate, to: ICoordinate) => const nextX = last.x + dX; const nextY = last.y + dY; - if (data[nextY][nextX] === 0) { + if (data[nextY][nextX] === 1) { newPaths.push([...path, { x: nextX, y: nextY}]); data[nextY][nextX] = 1; } @@ -276,5 +276,5 @@ export const simplifyMapData = (mapData: number[][]) => { if (mapData.length === 0) { return mapData; } - return mapData.map((row) => row.map(type => isMovable(type) ? 0 : 1)); + return mapData.map((row) => row.map(type => isMovable(type) ? 1 : 0)); } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06da5aac..42c1f519 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,18 +62,30 @@ importers: '@latticexyz/world': specifier: 2.0.0-next.4 version: registry.npmmirror.com/@latticexyz/world@2.0.0-next.4(typescript@5.1.6) + '@openzeppelin/contracts': + specifier: ^4.9.3 + version: 4.9.3 '@types/node': specifier: ^18.15.11 version: 18.17.11 antd: specifier: ^5.9.2 version: 5.9.2(react-dom@18.2.0)(react@18.2.0) + buffer: + specifier: ^6.0.3 + version: 6.0.3 contracts: specifier: workspace:* version: link:../contracts ethers: specifier: ^5.7.2 version: registry.npmmirror.com/ethers@5.7.2 + keccak256: + specifier: ^1.0.6 + version: 1.0.6 + merkletreejs: + specifier: ^0.3.10 + version: 0.3.10 react: specifier: ^18.2.0 version: 18.2.0 @@ -93,12 +105,18 @@ importers: specifier: 1.6.0 version: registry.npmmirror.com/viem@1.6.0(typescript@5.1.6)(zod@3.22.2) devDependencies: + '@nomicfoundation/hardhat-toolbox': + specifier: ^3.0.0 + version: 3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.2)(@nomicfoundation/hardhat-ethers@3.0.4)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomicfoundation/hardhat-verify@1.1.1)(@typechain/ethers-v6@0.4.3)(@typechain/hardhat@8.0.3)(@types/chai@4.3.6)(@types/mocha@10.0.2)(@types/node@18.17.11)(chai@4.3.10)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.4)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.1)(typescript@5.1.6) '@types/react': specifier: ^18.0.11 version: 18.0.11 '@types/react-dom': specifier: ^18.0.11 version: 18.0.11 + hardhat: + specifier: ^2.17.4 + version: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) vite: specifier: ^4.2.1 version: registry.npmmirror.com/vite@4.2.1(@types/node@18.17.11)(sass@1.64.1) @@ -233,6 +251,44 @@ packages: regenerator-runtime: 0.14.0 dev: false + /@chainsafe/as-sha256@0.3.1: + resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} + dev: true + + /@chainsafe/persistent-merkle-tree@0.4.2: + resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: true + + /@chainsafe/persistent-merkle-tree@0.5.0: + resolution: {integrity: sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: true + + /@chainsafe/ssz@0.10.2: + resolution: {integrity: sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.5.0 + dev: true + + /@chainsafe/ssz@0.9.4: + resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.4.2 + case: 1.6.3 + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + /@ctrl/tinycolor@3.6.1: resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -422,6 +478,19 @@ packages: requiresBuild: true optional: true + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: @@ -434,7 +503,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/abstract-provider@5.7.0: resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} @@ -446,7 +514,6 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - dev: false /@ethersproject/abstract-signer@5.7.0: resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} @@ -456,7 +523,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: false /@ethersproject/address@5.7.0: resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} @@ -466,20 +532,17 @@ packages: '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - dev: false /@ethersproject/base64@5.7.0: resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 - dev: false /@ethersproject/basex@5.7.0: resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: false /@ethersproject/bignumber@5.7.0: resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} @@ -487,19 +550,16 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - dev: false /@ethersproject/bytes@5.7.0: resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/constants@5.7.0: resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 - dev: false /@ethersproject/contracts@5.7.0: resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} @@ -514,7 +574,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - dev: false /@ethersproject/hash@5.7.0: resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} @@ -528,7 +587,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/hdnode@5.7.0: resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} @@ -545,7 +603,6 @@ packages: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: false /@ethersproject/json-wallets@5.7.0: resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} @@ -563,37 +620,31 @@ packages: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 - dev: false /@ethersproject/keccak256@5.7.0: resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - dev: false /@ethersproject/logger@5.7.0: resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - dev: false /@ethersproject/networks@5.7.1: resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/pbkdf2@5.7.0: resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - dev: false /@ethersproject/properties@5.7.0: resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} @@ -621,21 +672,18 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@ethersproject/random@5.7.0: resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/rlp@5.7.0: resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/sha2@5.7.0: resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} @@ -643,7 +691,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - dev: false /@ethersproject/signing-key@5.7.0: resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} @@ -654,7 +701,6 @@ packages: bn.js: 5.2.1 elliptic: 6.5.4 hash.js: 1.1.7 - dev: false /@ethersproject/solidity@5.7.0: resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} @@ -665,7 +711,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/strings@5.7.0: resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} @@ -673,7 +718,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/transactions@5.7.0: resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} @@ -687,7 +731,6 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - dev: false /@ethersproject/units@5.7.0: resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} @@ -695,7 +738,6 @@ packages: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false /@ethersproject/wallet@5.7.0: resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} @@ -715,7 +757,6 @@ packages: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: false /@ethersproject/web@5.7.1: resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} @@ -725,7 +766,6 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false /@ethersproject/wordlists@5.7.0: resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} @@ -735,7 +775,27 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false + + /@fastify/busboy@2.0.0: + resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + engines: {node: '>=14'} + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@latticexyz/common@2.0.0-alpha.1.177(typescript@5.1.6)(zod@3.22.2): resolution: {integrity: sha512-xG+o6UQMsdyYS21oNRgIwh4jXXK3QbWz2qf/GImm06paAbWDQ3HVQiIwrQ8dlDPTI4hTkM7VH4++u2iNE4iZ2A==} @@ -758,7 +818,7 @@ packages: '@solidity-parser/parser': 0.16.1 abitype: 0.9.3(typescript@5.1.6)(zod@3.22.2) chalk: 5.3.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) execa: 7.2.0 p-retry: 5.1.2 prettier: 2.8.8 @@ -953,6 +1013,17 @@ packages: - utf-8-validate dev: false + /@metamask/eth-sig-util@4.0.1: + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: true + /@noble/curves@1.0.0: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: @@ -963,15 +1034,409 @@ packages: resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} dependencies: '@noble/hashes': 1.3.1 - dev: false + + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: true /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} - dev: false /@noble/hashes@1.3.1: resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} engines: {node: '>= 16'} + + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@nomicfoundation/ethereumjs-block@5.0.2: + resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-blockchain@7.0.2: + resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-ethash': 3.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + abstract-level: 1.0.3 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + level: 8.0.0 + lru-cache: 5.1.1 + memory-level: 1.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-common@4.0.2: + resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.2 + crc-32: 1.2.2 + dev: true + + /@nomicfoundation/ethereumjs-ethash@3.0.2: + resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + abstract-level: 1.0.3 + bigint-crypto-utils: 3.3.0 + ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-evm@2.0.2: + resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} + engines: {node: '>=14'} + dependencies: + '@ethersproject/providers': 5.7.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-rlp@5.0.2: + resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /@nomicfoundation/ethereumjs-statemanager@2.0.2: + resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + ethers: 5.7.2 + js-sdsl: 4.4.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-trie@6.0.2: + resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@types/readable-stream': 2.3.15 + ethereum-cryptography: 0.1.3 + readable-stream: 3.6.2 + dev: true + + /@nomicfoundation/ethereumjs-tx@5.0.2: + resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} + engines: {node: '>=14'} + dependencies: + '@chainsafe/ssz': 0.9.4 + '@ethersproject/providers': 5.7.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + ethereum-cryptography: 0.1.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@nomicfoundation/ethereumjs-util@9.0.2: + resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} + engines: {node: '>=14'} + dependencies: + '@chainsafe/ssz': 0.10.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + ethereum-cryptography: 0.1.3 + dev: true + + /@nomicfoundation/ethereumjs-vm@7.0.2: + resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} + engines: {node: '>=14'} + dependencies: + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + debug: 4.3.4(supports-color@8.1.1) + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@nomicfoundation/hardhat-chai-matchers@2.0.2(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.10)(ethers@5.7.2)(hardhat@2.17.4): + resolution: {integrity: sha512-9Wu9mRtkj0U9ohgXYFbB/RQDa+PcEdyBm2suyEtsJf3PqzZEEjLUZgWnMjlFhATMk/fp3BjmnYVPrwl+gr8oEw==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@5.7.2)(hardhat@2.17.4) + '@types/chai-as-promised': 7.1.6 + chai: 4.3.10 + chai-as-promised: 7.1.1(chai@4.3.10) + deep-eql: 4.1.3 + ethers: registry.npmmirror.com/ethers@5.7.2 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + ordinal: 1.0.3 + dev: true + + /@nomicfoundation/hardhat-ethers@3.0.4(ethers@5.7.2)(hardhat@2.17.4): + resolution: {integrity: sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + dependencies: + debug: 4.3.4(supports-color@8.1.1) + ethers: registry.npmmirror.com/ethers@5.7.2 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.17.4): + resolution: {integrity: sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==} + peerDependencies: + hardhat: ^2.9.5 + dependencies: + ethereumjs-util: 7.1.5 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + dev: true + + /@nomicfoundation/hardhat-toolbox@3.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.2)(@nomicfoundation/hardhat-ethers@3.0.4)(@nomicfoundation/hardhat-network-helpers@1.0.9)(@nomicfoundation/hardhat-verify@1.1.1)(@typechain/ethers-v6@0.4.3)(@typechain/hardhat@8.0.3)(@types/chai@4.3.6)(@types/mocha@10.0.2)(@types/node@18.17.11)(chai@4.3.10)(ethers@5.7.2)(hardhat-gas-reporter@1.0.9)(hardhat@2.17.4)(solidity-coverage@0.8.5)(ts-node@10.9.1)(typechain@8.3.1)(typescript@5.1.6): + resolution: {integrity: sha512-MsteDXd0UagMksqm9KvcFG6gNKYNa3GGNCy73iQ6bEasEgg2v8Qjl6XA5hjs8o5UD5A3153B6W2BIVJ8SxYUtA==} + peerDependencies: + '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-network-helpers': ^1.0.0 + '@nomicfoundation/hardhat-verify': ^1.0.0 + '@typechain/ethers-v6': ^0.4.0 + '@typechain/hardhat': ^8.0.0 + '@types/chai': ^4.2.0 + '@types/mocha': '>=9.1.0' + '@types/node': '>=12.0.0' + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: '>=8.0.0' + typechain: ^8.2.0 + typescript: '>=4.5.0' + dependencies: + '@nomicfoundation/hardhat-chai-matchers': 2.0.2(@nomicfoundation/hardhat-ethers@3.0.4)(chai@4.3.10)(ethers@5.7.2)(hardhat@2.17.4) + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@5.7.2)(hardhat@2.17.4) + '@nomicfoundation/hardhat-network-helpers': 1.0.9(hardhat@2.17.4) + '@nomicfoundation/hardhat-verify': 1.1.1(hardhat@2.17.4) + '@typechain/ethers-v6': 0.4.3(ethers@5.7.2)(typechain@8.3.1)(typescript@5.1.6) + '@typechain/hardhat': 8.0.3(@typechain/ethers-v6@0.4.3)(ethers@5.7.2)(hardhat@2.17.4)(typechain@8.3.1) + '@types/chai': 4.3.6 + '@types/mocha': 10.0.2 + '@types/node': 18.17.11 + chai: 4.3.10 + ethers: registry.npmmirror.com/ethers@5.7.2 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + hardhat-gas-reporter: 1.0.9(hardhat@2.17.4) + solidity-coverage: 0.8.5(hardhat@2.17.4) + ts-node: 10.9.1(@types/node@18.17.11)(typescript@5.1.6) + typechain: 8.3.1(typescript@5.1.6) + typescript: 5.1.6 + dev: true + + /@nomicfoundation/hardhat-verify@1.1.1(hardhat@2.17.4): + resolution: {integrity: sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==} + peerDependencies: + hardhat: ^2.0.4 + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + cbor: 8.1.0 + chalk: 2.4.2 + debug: 4.3.4(supports-color@8.1.1) + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + lodash.clonedeep: 4.5.0 + semver: 6.3.1 + table: 6.8.1 + undici: 5.25.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: + resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1: + resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1: + resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1: + resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1: + resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1: + resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1: + resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1: + resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1: + resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1: + resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer@0.1.1: + resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + engines: {node: '>= 12'} + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 + dev: true + + /@openzeppelin/contracts@4.9.3: + resolution: {integrity: sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==} dev: false /@rc-component/color-picker@1.4.1(react-dom@18.2.0)(react@18.2.0): @@ -1076,7 +1541,14 @@ packages: /@scure/base@1.1.2: resolution: {integrity: sha512-sSCrnIdaUZQHhBxZThMuk7Wm1TWzMD3uJNdGgx3JS23xSqevu0tAOsg8k66nL3R2NwQe65AI9GgqpPOgZys/eA==} - dev: false + + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.2 + dev: true /@scure/bip32@1.3.0: resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} @@ -1086,6 +1558,20 @@ packages: '@scure/base': 1.1.2 dev: false + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.2 + + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.2 + dev: true + /@scure/bip39@1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: @@ -1093,18 +1579,219 @@ packages: '@scure/base': 1.1.2 dev: false - /@solidity-parser/parser@0.16.1: - resolution: {integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==} + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - antlr4ts: 0.5.0-alpha.4 - dev: false + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.2 - /@types/node@18.17.11: - resolution: {integrity: sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==} + /@sentry/core@5.30.0: + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/hub@5.30.0: + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/minimal@5.30.0: + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/node@5.30.0: + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sentry/tracing@5.30.0: + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true + + /@sentry/types@5.30.0: + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + dev: true + + /@sentry/utils@5.30.0: + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true + + /@solidity-parser/parser@0.14.5: + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + dependencies: + antlr4ts: 0.5.0-alpha.4 + dev: true + + /@solidity-parser/parser@0.16.1: + resolution: {integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==} + dependencies: + antlr4ts: 0.5.0-alpha.4 + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@typechain/ethers-v6@0.4.3(ethers@5.7.2)(typechain@8.3.1)(typescript@5.1.6): + resolution: {integrity: sha512-TrxBsyb4ryhaY9keP6RzhFCviWYApcLCIRMPyWaKp2cZZrfaM3QBoxXTnw/eO4+DAY3l+8O0brNW0WgeQeOiDA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.1 + typescript: '>=4.7.0' + dependencies: + ethers: registry.npmmirror.com/ethers@5.7.2 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.1.6) + typechain: 8.3.1(typescript@5.1.6) + typescript: 5.1.6 + dev: true + + /@typechain/hardhat@8.0.3(@typechain/ethers-v6@0.4.3)(ethers@5.7.2)(hardhat@2.17.4)(typechain@8.3.1): + resolution: {integrity: sha512-MytSmJJn+gs7Mqrpt/gWkTCOpOQ6ZDfRrRT2gtZL0rfGe4QrU4x9ZdW15fFbVM/XTa+5EsKiOMYXhRABibNeng==} + peerDependencies: + '@typechain/ethers-v6': ^0.4.3 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.1 + dependencies: + '@typechain/ethers-v6': 0.4.3(ethers@5.7.2)(typechain@8.3.1)(typescript@5.1.6) + ethers: registry.npmmirror.com/ethers@5.7.2 + fs-extra: 9.1.0 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + typechain: 8.3.1(typescript@5.1.6) + dev: true + + /@types/bn.js@4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + dependencies: + '@types/node': 18.17.11 + dev: true + + /@types/bn.js@5.1.2: + resolution: {integrity: sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==} + dependencies: + '@types/node': 18.17.11 + dev: true + + /@types/chai-as-promised@7.1.6: + resolution: {integrity: sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA==} + dependencies: + '@types/chai': 4.3.6 + dev: true + + /@types/chai@4.3.6: + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} + dev: true + + /@types/concat-stream@1.6.1: + resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} + dependencies: + '@types/node': 18.17.11 + dev: true + + /@types/form-data@0.0.33: + resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + dependencies: + '@types/node': 18.17.11 + dev: true + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 18.17.11 + dev: true + + /@types/lru-cache@5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + dev: true + + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + + /@types/mocha@10.0.2: + resolution: {integrity: sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==} + dev: true + + /@types/node@10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + dev: true + + /@types/node@18.17.11: + resolution: {integrity: sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==} + + /@types/node@8.10.66: + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + dev: true + + /@types/pbkdf2@3.1.0: + resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} + dependencies: + '@types/node': 18.17.11 + dev: true + + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/qs@6.9.8: + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + dev: true + /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: @@ -1118,6 +1805,13 @@ packages: '@types/scheduler': 0.16.3 csstype: 3.1.2 + /@types/readable-stream@2.3.15: + resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} + dependencies: + '@types/node': 18.17.11 + safe-buffer: 5.1.2 + dev: true + /@types/retry@0.12.1: resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} dev: false @@ -1125,6 +1819,12 @@ packages: /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + /@types/secp256k1@4.0.4: + resolution: {integrity: sha512-oN0PFsYxDZnX/qSJ5S5OwaEDTYfekhvaM5vqui2bu1AA39pKofmgL104Q29KiOXizXS2yLjSzc5YdTyMKdcy4A==} + dependencies: + '@types/node': 18.17.11 + dev: true + /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: @@ -1142,6 +1842,10 @@ packages: typescript: 5.1.6 dev: false + /abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + dev: true + /abitype@0.8.11(typescript@5.1.6)(zod@3.22.2): resolution: {integrity: sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A==} peerDependencies: @@ -1170,9 +1874,59 @@ packages: zod: 3.22.2 dev: false + /abstract-level@1.0.3: + resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: true + + /adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + dev: true + /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - dev: false + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} @@ -1181,24 +1935,65 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + dev: true + optional: true + + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + dev: true + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: false /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: false + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: - color-convert: 2.0.1 - dev: false + color-convert: registry.npmmirror.com/color-convert@2.0.1 /antd@5.9.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-+ecGt8nDCjvNvKkalJQc4eBGtfdQuZ/WLXrk7X4FbhAhMplctrey4/SOvHeXjEjBnyNC/KSdF4EzKYKq01egbA==} @@ -1264,7 +2059,6 @@ packages: /antlr4ts@0.5.0-alpha.4: resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} - dev: false /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -1273,34 +2067,134 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: true + /array-tree-filter@2.1.0: resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} dev: false + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - dev: false /async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} dev: false + /async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + dependencies: + follow-redirects: 1.15.3(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + /bigint-crypto-utils@3.3.0: + resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} + engines: {node: '>=14.0.0'} + dev: true + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: true + + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: false /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -1310,65 +2204,343 @@ packages: /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: false - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false + /browser-level@1.0.1: + resolution: {integrity: sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==} + dependencies: + abstract-level: 1.0.3 + catering: 2.1.1 + module-error: 1.0.2 + run-parallel-limit: 1.1.0 + dev: true - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: false + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: false + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.9 + dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} dev: false - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /case@1.6.3: + resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /catering@2.1.1: + resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} + engines: {node: '>=6'} + dev: true + + /cbor@8.1.0: + resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} + engines: {node: '>=12.19'} + dependencies: + nofilter: 3.1.0 + dev: true + + /chai-as-promised@7.1.1(chai@4.3.10): + resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} + peerDependencies: + chai: '>= 2.1.2 < 5' + dependencies: + chai: 4.3.10 + check-error: 1.0.3 + dev: true + + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /classic-level@1.3.0: + resolution: {integrity: sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==} + engines: {node: '>=12'} + requiresBuild: true dependencies: - color-name: 1.1.4 + abstract-level: 1.0.3 + catering: 2.1.1 + module-error: 1.0.2 + napi-macros: 2.2.2 + node-gyp-build: 4.6.1 + dev: true + + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-table3@0.5.1: + resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} + engines: {node: '>=6'} + dependencies: + object-assign: 4.1.1 + string-width: 2.1.1 + optionalDependencies: + colors: 1.4.0 + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 dev: false + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: true + + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + dev: true + + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true + /compute-scroll-into-view@3.0.3: resolution: {integrity: sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==} dev: false + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: true + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: toggle-selection: 1.0.6 dev: false + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1380,6 +2552,9 @@ packages: /crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + /crypto-js@3.3.0: + resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} dev: false /csstype@3.1.2: @@ -1389,7 +2564,11 @@ packages: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false - /debug@4.3.4: + /death@1.1.0: + resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} + dev: true + + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1399,7 +2578,71 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: false + supports-color: 8.1.1 + + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + dependencies: + address: 1.2.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + + /difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + dependencies: + heap: 0.2.7 + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true /dom-align@1.12.4: resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} @@ -1424,11 +2667,22 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false + + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + dev: true + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} @@ -1463,7 +2717,149 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + dev: true + + /esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} + peerDependencies: + '@codechecks/client': ^0.1.0 + peerDependenciesMeta: + '@codechecks/client': + optional: true + dependencies: + '@solidity-parser/parser': 0.14.5 + axios: 1.5.1 + cli-table3: 0.5.1 + colors: 1.4.0 + ethereum-cryptography: 1.2.0 + ethers: 5.7.2 + fs-readdir-recursive: 1.1.0 + lodash: 4.17.21 + markdown-table: 1.1.3 + mocha: 10.2.0 + req-cwd: 2.0.0 + sha1: 1.1.1 + sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: true + + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + dependencies: + '@types/pbkdf2': 3.1.0 + '@types/secp256k1': 4.0.4 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 + dev: true + + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + dev: true + + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + + /ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + dev: true + + /ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.4 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + dev: true + + /ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/bn.js': 5.1.2 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + dev: true /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} @@ -1501,7 +2897,28 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false + + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + + /ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + dev: true + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} @@ -1520,7 +2937,27 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -1528,6 +2965,28 @@ packages: dependencies: to-regex-range: 5.0.1 + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1536,11 +2995,60 @@ packages: path-exists: 5.0.0 dev: false + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /follow-redirects@1.15.3(debug@4.3.4): + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) + dev: true + + /form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + dev: true + /fractional-indexing@3.2.0: resolution: {integrity: sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ==} engines: {node: ^14.13.1 || >=16.0.0} dev: false + /fs-extra@0.30.0: + resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + klaw: 1.3.1 + path-is-absolute: 1.0.1 + rimraf: 2.6.3 + dev: true + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -1550,6 +3058,42 @@ packages: universalify: 2.0.0 dev: false + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1557,34 +3101,284 @@ packages: requiresBuild: true optional: true + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: false + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + dev: true /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: false + /ghost-testrpc@0.0.2: + resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} + hasBin: true + dependencies: + chalk: 2.4.2 + node-emoji: 1.11.0 + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + /glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /hardhat-gas-reporter@1.0.9(hardhat@2.17.4): + resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} + peerDependencies: + hardhat: ^2.0.2 + dependencies: + array-uniq: 1.0.3 + eth-gas-reporter: 0.2.27 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + sha1: 1.1.1 + transitivePeerDependencies: + - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate + dev: true + + /hardhat@2.17.4(ts-node@10.9.1)(typescript@5.1.6): + resolution: {integrity: sha512-YTyHjVc9s14CY/O7Dbtzcr/92fcz6AzhrMaj6lYsZpYPIPLzOrFCZHHPxfGQB6FiE6IPNE0uJaAbr7zGF79goA==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@nomicfoundation/ethereumjs-vm': 7.0.2 + '@nomicfoundation/solidity-analyzer': 0.1.1 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.2 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + chalk: 2.4.2 + chokidar: 3.5.3 + ci-info: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 2.1.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + glob: 7.2.0 + immutable: 4.3.4 + io-ts: 1.10.4 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.2.0 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.7.3(debug@4.3.4) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + ts-node: 10.9.1(@types/node@18.17.11)(typescript@5.1.6) + tsort: 0.0.1 + typescript: 5.1.6 + undici: 5.25.3 + uuid: 8.3.2 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: true /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} @@ -1592,19 +3386,99 @@ packages: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false + + /http-basic@8.1.3: + resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} + engines: {node: '>=6.0.0'} + dependencies: + caseless: 0.12.0 + concat-stream: 1.6.2 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-response-object@3.0.2: + resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} + dependencies: + '@types/node': 10.17.60 + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: true /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: false + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + /immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + dependencies: + fp-ts: 1.19.3 + dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -1616,14 +3490,29 @@ packages: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: true + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: false /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -1631,18 +3520,35 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false /isomorphic-ws@5.0.0(ws@8.12.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} @@ -1652,46 +3558,167 @@ packages: ws: 8.12.0 dev: false + /js-sdsl@4.4.2: + resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} + dev: true + /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: false + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + /json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + dev: false + + /jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + /jsonschema@1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + dev: true + + /keccak256@1.0.6: + resolution: {integrity: sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw==} + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + keccak: 3.0.4 dev: false - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + readable-stream: 3.6.2 + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /level-supports@4.0.1: + resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} + engines: {node: '>=12'} + dev: true + + /level-transcoder@1.0.1: + resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} + engines: {node: '>=12'} + dependencies: + buffer: 6.0.3 + module-error: 1.0.2 + dev: true + + /level@8.0.0: + resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} + engines: {node: '>=12'} + dependencies: + browser-level: 1.0.1 + classic-level: 1.3.0 + dev: true - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true - /json2mq@0.2.0: - resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + /locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} dependencies: - string-convert: 0.2.1 - dev: false + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false + p-locate: 5.0.0 + dev: true /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 - dev: false + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: true + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: false /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -1700,12 +3727,48 @@ packages: js-tokens: 4.0.0 dev: false + /loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: false + + /lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + dev: true + + /mcl-wasm@0.7.9: + resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==} + engines: {node: '>=8.9.0'} + dev: true + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true /md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} @@ -1715,10 +3778,63 @@ packages: is-buffer: 1.1.6 dev: false + /memory-level@1.0.0: + resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} + engines: {node: '>=12'} + dependencies: + abstract-level: 1.0.3 + functional-red-black-tree: 1.0.1 + module-error: 1.0.2 + dev: true + + /memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + dev: true + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: false + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /merkletreejs@0.3.10: + resolution: {integrity: sha512-lin42tKfRdkW+6iE5pjtQ9BnH+1Hk3sJ5Fn9hUUSjcXRcJbSISHgPCfYvMNEXiNqZPhz/TyRPEV30qgnujsQ7A==} + engines: {node: '>= 7.6.0'} + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 3.3.0 + treeify: 1.1.0 + web3-utils: 1.10.2 + dev: false + + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -1726,19 +3842,133 @@ packages: /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + dependencies: + obliterator: 2.0.4 + dev: true /mobx@6.10.0: resolution: {integrity: sha512-WMbVpCMFtolbB8swQ5E2YRrU+Yu8iLozCVx3CdGjbBKlP7dFiCSuiG06uea3JCFN5DnvtAX7+G5Bp82e2xu0ww==} dev: false + /mocha@10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /module-error@1.0.2: + resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + engines: {node: '>=10'} + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /nanoid@3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /napi-macros@2.2.2: + resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + /node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + dependencies: + lodash: 4.17.21 + dev: true + + /node-gyp-build@4.6.1: + resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + hasBin: true + + /nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + dev: true + + /nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + dependencies: + abbrev: 1.0.9 + dev: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -1751,6 +3981,31 @@ packages: path-key: 4.0.0 dev: false + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + + /obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -1758,19 +4013,67 @@ packages: mimic-fn: 4.0.0 dev: false - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} dependencies: - yocto-queue: 1.0.0 - dev: false + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: true + + /ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - p-limit: 4.0.0 - dev: false + p-limit: registry.npmmirror.com/p-limit@4.0.0 + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true /p-retry@5.1.2: resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==} @@ -1780,11 +4083,35 @@ packages: retry: 0.13.1 dev: false + /p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + + /parse-cache-control@1.0.1: + resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} + dev: true + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -1795,10 +4122,44 @@ packages: engines: {node: '>=12'} dev: false + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + /prettier-plugin-solidity@1.1.3(prettier@2.8.8): resolution: {integrity: sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==} engines: {node: '>=12'} @@ -1823,16 +4184,28 @@ packages: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - dev: false + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: true /proxy-deep@3.1.1: resolution: {integrity: sha512-kppbvLUNJ4IOMZds9/4gz/rtT5OFiesy3XosLsgMKlF3vb6GA5Y3ptyDlzKLcOcUBW+zaY+RiMINTsgE+O6e+Q==} dev: false + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: false /qrcode.react@3.1.0(react@18.2.0): resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} @@ -1842,6 +4215,32 @@ packages: react: 18.2.0 dev: false + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + /rc-align@4.0.15(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} peerDependencies: @@ -2411,41 +4810,169 @@ packages: loose-envify: 1.4.0 dev: false + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.4 + dev: true + + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: true + + /reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + dev: true + /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: false + /req-cwd@2.0.0: + resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} + engines: {node: '>=4'} + dependencies: + req-from: 2.0.0 + dev: true + + /req-from@2.0.0: + resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: false /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: false /resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} dev: false + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: true + + /resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + dev: true + + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + dependencies: + path-parse: 1.0.7 + dev: true + + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} dev: false + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + dependencies: + bn.js: 5.2.1 + dev: true + + /run-parallel-limit@1.1.0: + resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rustbn.js@0.2.0: + resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} + dev: true + /rxjs@7.5.5: resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} dependencies: tslib: 2.6.2 dev: false + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + /sass@1.64.1: resolution: {integrity: sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==} engines: {node: '>=14.0.0'} @@ -2455,6 +4982,26 @@ packages: immutable: 4.3.4 source-map-js: 1.0.2 + /sc-istanbul@0.4.6: + resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} + hasBin: true + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + dev: true + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -2469,7 +5016,26 @@ packages: /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - dev: false + + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -2477,7 +5043,35 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: false + + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -2491,10 +5085,33 @@ packages: engines: {node: '>=8'} dev: false + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: true + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -2502,20 +5119,117 @@ packages: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: false + + /solc@0.7.3(debug@4.3.4): + resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + command-exists: 1.2.9 + commander: 3.0.2 + follow-redirects: 1.15.3(debug@4.3.4) + fs-extra: 0.30.0 + js-sha3: 0.8.0 + memorystream: 0.3.1 + require-from-string: 2.0.2 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + dev: true /solidity-comments-extractor@0.0.7: resolution: {integrity: sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==} dev: false + /solidity-coverage@0.8.5(hardhat@2.17.4): + resolution: {integrity: sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==} + hasBin: true + peerDependencies: + hardhat: ^2.11.0 + dependencies: + '@ethersproject/abi': 5.7.0 + '@solidity-parser/parser': 0.16.1 + chalk: 2.4.2 + death: 1.1.0 + detect-port: 1.5.1 + difflib: 0.2.4 + fs-extra: 8.1.0 + ghost-testrpc: 0.0.2 + global-modules: 2.0.0 + globby: 10.0.2 + hardhat: 2.17.4(ts-node@10.9.1)(typescript@5.1.6) + jsonschema: 1.4.1 + lodash: 4.17.21 + mocha: 10.2.0 + node-emoji: 1.11.0 + pify: 4.0.1 + recursive-readdir: 2.2.3 + sc-istanbul: 0.4.6 + semver: 7.5.4 + shelljs: 0.8.5 + web3-utils: 1.10.2 + transitivePeerDependencies: + - supports-color + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + amdefine: 1.0.1 + dev: true + optional: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + /string-convert@0.2.1: resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} dev: false + /string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + dev: true + + /string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2523,14 +5237,37 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + dependencies: + ansi-regex: 3.0.1 + dev: true + + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: true /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: false /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} @@ -2544,10 +5281,81 @@ packages: engines: {node: '>=12'} dev: false + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + /stylis@4.3.0: resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} dev: false + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: registry.npmmirror.com/has-flag@4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /sync-request@6.1.0: + resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} + engines: {node: '>=8.0.0'} + dependencies: + http-response-object: 3.0.2 + sync-rpc: 1.3.6 + then-request: 6.0.2 + dev: true + + /sync-rpc@1.3.6: + resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} + dependencies: + get-port: 3.2.0 + dev: true + + /table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + dev: true + /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -2557,13 +5365,36 @@ packages: slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false + + /then-request@6.0.2: + resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} + engines: {node: '>=6.0.0'} + dependencies: + '@types/concat-stream': 1.6.1 + '@types/form-data': 0.0.33 + '@types/node': 8.10.66 + '@types/qs': 6.9.8 + caseless: 0.12.0 + concat-stream: 1.6.2 + form-data: 2.5.1 + http-basic: 8.1.3 + http-response-object: 3.0.2 + promise: 8.3.0 + qs: 6.11.2 + dev: true /throttle-debounce@5.0.0: resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} engines: {node: '>=12.22'} dev: false + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2574,48 +5405,218 @@ packages: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: false + + /ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + dev: true + + /ts-essentials@7.0.3(typescript@5.1.6): + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + dependencies: + typescript: 5.1.6 + dev: true + + /ts-node@10.9.1(@types/node@18.17.11)(typescript@5.1.6): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.17.11 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.6 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + dev: true + + /tuple-database@2.2.4(react@18.2.0): + resolution: {integrity: sha512-BZK1D5XtJiNRnQRR2C11RUd4O8gX68ZUqgO3CG14zWbMlCPRbOOi6P7o8KOOk2KEtXVis6IJBNK41JTKrBNlDA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + elen: 1.0.10 + fractional-indexing: 3.2.0 + fs-extra: 11.1.1 + lodash: 4.17.21 + md5: 2.3.0 + react: 18.2.0 + uuid: 9.0.0 + dev: false + + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: true + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: true - /tuple-database@2.2.4(react@18.2.0): - resolution: {integrity: sha512-BZK1D5XtJiNRnQRR2C11RUd4O8gX68ZUqgO3CG14zWbMlCPRbOOi6P7o8KOOk2KEtXVis6IJBNK41JTKrBNlDA==} + /typechain@8.3.1(typescript@5.1.6): + resolution: {integrity: sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ==} + hasBin: true peerDependencies: - react: '*' - peerDependenciesMeta: - react: - optional: true + typescript: '>=4.3.0' dependencies: - elen: 1.0.10 - fractional-indexing: 3.2.0 - fs-extra: 11.1.1 + '@types/prettier': 2.7.3 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 lodash: 4.17.21 - md5: 2.3.0 - react: 18.2.0 - uuid: 9.0.0 - dev: false + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + dev: true + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /undici@5.25.3: + resolution: {integrity: sha512-7lmhlz3K1+IKB6IUjkdzV2l0jKY8/0KguEMdEpzzXCug5pEGIp3DxUg0DEN65DrVoxHiRKpPORC/qzX+UglSkQ==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.0.0 + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: false + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: false + + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true dev: false + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + /viem@1.6.0(typescript@5.1.6)(zod@3.22.2): resolution: {integrity: sha512-ae9Twkd0q2Qlj4yYpWjb4DzYAhKY0ibEpRH8FJaTywZXNpTjFidSdBaT0CVn1BaH7O7cnX4/O47zvDUMGJD1AA==} peerDependencies: @@ -2641,6 +5642,26 @@ packages: - zod dev: false + /web3-utils@1.10.2: + resolution: {integrity: sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2649,6 +5670,27 @@ packages: isexe: 2.0.0 dev: false + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + dev: true + + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -2656,7 +5698,9 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} /ws@7.4.6: resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} @@ -2669,7 +5713,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /ws@8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} @@ -2687,17 +5730,47 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false + + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: false + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + dev: true + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -2711,10 +5784,15 @@ packages: yargs-parser: 21.1.1 dev: false - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: false + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true /zod-validation-error@1.5.0(zod@3.22.2): resolution: {integrity: sha512-/7eFkAI4qV0tcxMBB/3+d2c1P6jzzZYdYSlBuAklzMuCrJu5bzJfHS0yVAS87dRHVlhftd6RFJDIvv03JgkSbw==} @@ -2729,13 +5807,13 @@ packages: resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} + resolution: {commit: e282159d5170298eb2455a6c05280ab5a73a4ef0, repo: git+ssh://git@github.com/dapphub/ds-test.git, type: git} name: ds-test version: 1.0.0 dev: true github.com/foundry-rs/forge-std/74cfb77e308dd188d2f58864aaf44963ae6b88b1: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/74cfb77e308dd188d2f58864aaf44963ae6b88b1} + resolution: {commit: 74cfb77e308dd188d2f58864aaf44963ae6b88b1, repo: git+ssh://git@github.com/foundry-rs/forge-std.git, type: git} name: forge-std version: 1.6.0 dev: true @@ -2759,7 +5837,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': registry.npmmirror.com/@babel/highlight@7.22.10 - chalk: registry.npmmirror.com/chalk@2.4.2 + chalk: 2.4.2 dev: true registry.npmmirror.com/@babel/helper-validator-identifier@7.22.5: @@ -2776,7 +5854,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': registry.npmmirror.com/@babel/helper-validator-identifier@7.22.5 - chalk: registry.npmmirror.com/chalk@2.4.2 + chalk: 2.4.2 js-tokens: registry.npmmirror.com/js-tokens@4.0.0 dev: true @@ -2796,7 +5874,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: registry.npmmirror.com/ajv@6.12.6 - debug: registry.npmmirror.com/debug@4.3.4 + debug: 4.3.4(supports-color@8.1.1) espree: registry.npmmirror.com/espree@9.6.1 globals: registry.npmmirror.com/globals@13.21.0 ignore: registry.npmmirror.com/ignore@5.2.4 @@ -3160,7 +6238,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': registry.npmmirror.com/@humanwhocodes/object-schema@1.2.1 - debug: registry.npmmirror.com/debug@4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: registry.npmmirror.com/minimatch@3.1.2 transitivePeerDependencies: - supports-color @@ -3210,7 +6288,7 @@ packages: '@latticexyz/config': registry.npmmirror.com/@latticexyz/config@2.0.0-next.4(typescript@5.1.6) '@latticexyz/schema-type': registry.npmmirror.com/@latticexyz/schema-type@2.0.0-next.4(typescript@5.1.6)(zod@3.22.2) abitype: registry.npmmirror.com/abitype@0.9.3(typescript@5.1.6)(zod@3.22.2) - debug: registry.npmmirror.com/debug@4.3.4 + debug: 4.3.4(supports-color@8.1.1) rxjs: registry.npmmirror.com/rxjs@7.5.5 viem: registry.npmmirror.com/viem@1.6.0(typescript@5.1.6)(zod@3.22.2) transitivePeerDependencies: @@ -3528,7 +6606,7 @@ packages: name: '@noble/curves' version: 1.0.0 dependencies: - '@noble/hashes': registry.npmmirror.com/@noble/hashes@1.3.0 + '@noble/hashes': 1.3.0 registry.npmmirror.com/@noble/curves@1.1.0: resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/@noble/curves/-/curves-1.1.0.tgz} @@ -3838,7 +6916,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': registry.npmmirror.com/@typescript-eslint/typescript-estree@5.46.1(typescript@5.1.6) '@typescript-eslint/utils': registry.npmmirror.com/@typescript-eslint/utils@5.46.1(eslint@8.29.0)(typescript@5.1.6) - debug: registry.npmmirror.com/debug@4.3.4 + debug: 4.3.4(supports-color@8.1.1) eslint: registry.npmmirror.com/eslint@8.29.0 tsutils: registry.npmmirror.com/tsutils@3.21.0(typescript@5.1.6) typescript: registry.npmmirror.com/typescript@5.1.6 @@ -3894,7 +6972,7 @@ packages: eslint: registry.npmmirror.com/eslint@8.29.0 eslint-scope: registry.npmmirror.com/eslint-scope@5.1.1 eslint-utils: registry.npmmirror.com/eslint-utils@3.0.0(eslint@8.29.0) - semver: registry.npmmirror.com/semver@7.5.4 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript @@ -4006,16 +7084,9 @@ packages: dependencies: fast-deep-equal: registry.npmmirror.com/fast-deep-equal@3.1.3 json-schema-traverse: registry.npmmirror.com/json-schema-traverse@1.0.0 - require-from-string: registry.npmmirror.com/require-from-string@2.0.2 + require-from-string: 2.0.2 uri-js: registry.npmmirror.com/uri-js@4.4.1 - registry.npmmirror.com/ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz} - name: ansi-escapes - version: 3.2.0 - engines: {node: '>=4'} - dev: true - registry.npmmirror.com/ansi-regex@3.0.1: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz} name: ansi-regex @@ -4023,13 +7094,6 @@ packages: engines: {node: '>=4'} dev: true - registry.npmmirror.com/ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz} - name: ansi-regex - version: 4.1.1 - engines: {node: '>=6'} - dev: true - registry.npmmirror.com/ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz} name: ansi-regex @@ -4049,6 +7113,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: registry.npmmirror.com/color-convert@1.9.3 + dev: true registry.npmmirror.com/ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz} @@ -4057,6 +7122,7 @@ packages: engines: {node: '>=8'} dependencies: color-convert: registry.npmmirror.com/color-convert@2.0.1 + dev: true registry.npmmirror.com/antlr4@4.7.1: resolution: {integrity: sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/antlr4/-/antlr4-4.7.1.tgz} @@ -4140,12 +7206,6 @@ packages: name: balanced-match version: 1.0.2 - registry.npmmirror.com/base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz} - name: base64-js - version: 1.5.1 - dev: false - registry.npmmirror.com/bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/bech32/-/bech32-1.1.4.tgz} name: bech32 @@ -4180,16 +7240,11 @@ packages: name: bl version: 4.1.0 dependencies: - buffer: registry.npmmirror.com/buffer@5.7.1 - inherits: registry.npmmirror.com/inherits@2.0.4 - readable-stream: registry.npmmirror.com/readable-stream@3.6.2 + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 dev: false - registry.npmmirror.com/bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz} - name: bn.js - version: 4.12.0 - registry.npmmirror.com/bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz} name: bn.js @@ -4228,15 +7283,6 @@ packages: name: browser-headers version: 0.4.1 - registry.npmmirror.com/buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz} - name: buffer - version: 5.7.1 - dependencies: - base64-js: registry.npmmirror.com/base64-js@1.5.1 - ieee754: registry.npmmirror.com/ieee754@1.2.1 - dev: false - registry.npmmirror.com/caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz} name: caller-callsite @@ -4278,6 +7324,7 @@ packages: ansi-styles: registry.npmmirror.com/ansi-styles@3.2.1 escape-string-regexp: registry.npmmirror.com/escape-string-regexp@1.0.5 supports-color: registry.npmmirror.com/supports-color@5.5.0 + dev: true registry.npmmirror.com/chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz} @@ -4287,6 +7334,7 @@ packages: dependencies: ansi-styles: registry.npmmirror.com/ansi-styles@4.3.0 supports-color: registry.npmmirror.com/supports-color@7.2.0 + dev: true registry.npmmirror.com/chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz} @@ -4344,7 +7392,7 @@ packages: engines: {node: '>=12'} dependencies: string-width: registry.npmmirror.com/string-width@4.2.3 - strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + strip-ansi: 6.0.1 wrap-ansi: registry.npmmirror.com/wrap-ansi@7.0.0 registry.npmmirror.com/color-convert@1.9.3: @@ -4353,6 +7401,7 @@ packages: version: 1.9.3 dependencies: color-name: registry.npmmirror.com/color-name@1.1.3 + dev: true registry.npmmirror.com/color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz} @@ -4366,6 +7415,7 @@ packages: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz} name: color-name version: 1.1.3 + dev: true registry.npmmirror.com/color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz} @@ -4390,7 +7440,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: array-back: registry.npmmirror.com/array-back@4.0.2 - chalk: registry.npmmirror.com/chalk@2.4.2 + chalk: 2.4.2 table-layout: registry.npmmirror.com/table-layout@1.0.2 typical: registry.npmmirror.com/typical@5.2.0 @@ -4459,7 +7509,7 @@ packages: dependencies: nice-try: registry.npmmirror.com/nice-try@1.0.5 path-key: registry.npmmirror.com/path-key@2.0.1 - semver: registry.npmmirror.com/semver@5.7.2 + semver: 5.7.2 shebang-command: registry.npmmirror.com/shebang-command@1.2.0 which: registry.npmmirror.com/which@1.3.1 dev: true @@ -4632,11 +7682,11 @@ packages: name: elliptic version: 6.5.4 dependencies: - bn.js: registry.npmmirror.com/bn.js@4.12.0 + bn.js: 4.12.0 brorand: registry.npmmirror.com/brorand@1.1.0 hash.js: registry.npmmirror.com/hash.js@1.1.7 hmac-drbg: registry.npmmirror.com/hmac-drbg@1.0.1 - inherits: registry.npmmirror.com/inherits@2.0.4 + inherits: 2.0.4 minimalistic-assert: registry.npmmirror.com/minimalistic-assert@1.0.1 minimalistic-crypto-utils: registry.npmmirror.com/minimalistic-crypto-utils@1.0.1 @@ -4662,7 +7712,7 @@ packages: name: end-of-stream version: 1.4.4 dependencies: - once: registry.npmmirror.com/once@1.4.0 + once: 1.4.0 dev: false registry.npmmirror.com/error-ex@1.3.2: @@ -4715,6 +7765,7 @@ packages: name: escape-string-regexp version: 1.0.5 engines: {node: '>=0.8.0'} + dev: true registry.npmmirror.com/escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} @@ -4805,9 +7856,9 @@ packages: dependencies: '@babel/code-frame': registry.npmmirror.com/@babel/code-frame@7.22.10 ajv: registry.npmmirror.com/ajv@6.12.6 - chalk: registry.npmmirror.com/chalk@2.4.2 + chalk: 2.4.2 cross-spawn: registry.npmmirror.com/cross-spawn@6.0.5 - debug: registry.npmmirror.com/debug@4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: registry.npmmirror.com/doctrine@3.0.0 eslint-scope: registry.npmmirror.com/eslint-scope@4.0.3 eslint-utils: registry.npmmirror.com/eslint-utils@1.4.3 @@ -4817,7 +7868,7 @@ packages: esutils: registry.npmmirror.com/esutils@2.0.3 file-entry-cache: registry.npmmirror.com/file-entry-cache@5.0.1 functional-red-black-tree: registry.npmmirror.com/functional-red-black-tree@1.0.1 - glob: registry.npmmirror.com/glob@7.2.3 + glob: 7.2.3 globals: registry.npmmirror.com/globals@11.12.0 ignore: registry.npmmirror.com/ignore@4.0.6 import-fresh: registry.npmmirror.com/import-fresh@3.3.0 @@ -4826,7 +7877,7 @@ packages: js-yaml: registry.npmmirror.com/js-yaml@3.14.1 json-stable-stringify-without-jsonify: registry.npmmirror.com/json-stable-stringify-without-jsonify@1.0.1 levn: registry.npmmirror.com/levn@0.3.0 - lodash: registry.npmmirror.com/lodash@4.17.21 + lodash: 4.17.21 minimatch: registry.npmmirror.com/minimatch@3.1.2 mkdirp: registry.npmmirror.com/mkdirp@0.5.6 natural-compare: registry.npmmirror.com/natural-compare@1.4.0 @@ -4834,7 +7885,7 @@ packages: path-is-inside: registry.npmmirror.com/path-is-inside@1.0.2 progress: registry.npmmirror.com/progress@2.0.3 regexpp: registry.npmmirror.com/regexpp@2.0.1 - semver: registry.npmmirror.com/semver@5.7.2 + semver: 5.7.2 strip-ansi: registry.npmmirror.com/strip-ansi@4.0.0 strip-json-comments: registry.npmmirror.com/strip-json-comments@2.0.1 table: registry.npmmirror.com/table@5.4.6 @@ -5031,8 +8082,8 @@ packages: engines: {node: '>=4'} dependencies: chardet: registry.npmmirror.com/chardet@0.7.0 - iconv-lite: registry.npmmirror.com/iconv-lite@0.4.24 - tmp: registry.npmmirror.com/tmp@0.0.33 + iconv-lite: 0.4.24 + tmp: 0.0.33 dev: true registry.npmmirror.com/fast-deep-equal@3.1.3: @@ -5085,7 +8136,7 @@ packages: version: 2.0.0 engines: {node: '>=4'} dependencies: - escape-string-regexp: registry.npmmirror.com/escape-string-regexp@1.0.5 + escape-string-regexp: 1.0.5 dev: true registry.npmmirror.com/file-entry-cache@5.0.1: @@ -5117,7 +8168,7 @@ packages: name: filelist version: 1.0.4 dependencies: - minimatch: registry.npmmirror.com/minimatch@5.1.6 + minimatch: 5.1.6 registry.npmmirror.com/fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz} @@ -5151,7 +8202,7 @@ packages: version: 6.3.0 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - locate-path: registry.npmmirror.com/locate-path@7.2.0 + locate-path: 7.2.0 path-exists: registry.npmmirror.com/path-exists@5.0.0 registry.npmmirror.com/flat-cache@2.0.1: @@ -5339,6 +8390,7 @@ packages: name: has-flag version: 3.0.0 engines: {node: '>=4'} + dev: true registry.npmmirror.com/has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz} @@ -5360,7 +8412,7 @@ packages: name: hash.js version: 1.1.7 dependencies: - inherits: registry.npmmirror.com/inherits@2.0.4 + inherits: 2.0.4 minimalistic-assert: registry.npmmirror.com/minimalistic-assert@1.0.1 registry.npmmirror.com/hmac-drbg@1.0.1: @@ -5368,7 +8420,7 @@ packages: name: hmac-drbg version: 1.0.1 dependencies: - hash.js: registry.npmmirror.com/hash.js@1.1.7 + hash.js: 1.1.7 minimalistic-assert: registry.npmmirror.com/minimalistic-assert@1.0.1 minimalistic-crypto-utils: registry.npmmirror.com/minimalistic-crypto-utils@1.0.1 @@ -5378,21 +8430,6 @@ packages: version: 4.3.1 engines: {node: '>=14.18.0'} - registry.npmmirror.com/iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz} - name: iconv-lite - version: 0.4.24 - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: registry.npmmirror.com/safer-buffer@2.1.2 - dev: true - - registry.npmmirror.com/ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz} - name: ieee754 - version: 1.2.1 - dev: false - registry.npmmirror.com/ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz} name: ignore @@ -5439,14 +8476,9 @@ packages: name: inflight version: 1.0.6 dependencies: - once: registry.npmmirror.com/once@1.4.0 + once: 1.4.0 wrappy: registry.npmmirror.com/wrappy@1.0.2 - registry.npmmirror.com/inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz} - name: inherits - version: 2.0.3 - registry.npmmirror.com/inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz} name: inherits @@ -5464,18 +8496,18 @@ packages: version: 6.5.2 engines: {node: '>=6.0.0'} dependencies: - ansi-escapes: registry.npmmirror.com/ansi-escapes@3.2.0 - chalk: registry.npmmirror.com/chalk@2.4.2 + ansi-escapes: 3.2.0 + chalk: 2.4.2 cli-cursor: registry.npmmirror.com/cli-cursor@2.1.0 cli-width: registry.npmmirror.com/cli-width@2.2.1 external-editor: registry.npmmirror.com/external-editor@3.1.0 figures: registry.npmmirror.com/figures@2.0.0 - lodash: registry.npmmirror.com/lodash@4.17.21 + lodash: 4.17.21 mute-stream: registry.npmmirror.com/mute-stream@0.0.7 run-async: registry.npmmirror.com/run-async@2.4.1 rxjs: registry.npmmirror.com/rxjs@6.6.7 string-width: registry.npmmirror.com/string-width@2.1.1 - strip-ansi: registry.npmmirror.com/strip-ansi@5.2.0 + strip-ansi: 5.2.0 through: registry.npmmirror.com/through@2.3.8 dev: true @@ -5584,9 +8616,9 @@ packages: hasBin: true dependencies: async: registry.npmmirror.com/async@3.2.4 - chalk: registry.npmmirror.com/chalk@4.1.2 + chalk: 4.1.2 filelist: registry.npmmirror.com/filelist@1.0.4 - minimatch: registry.npmmirror.com/minimatch@3.1.2 + minimatch: 3.1.2 registry.npmmirror.com/js-base64@3.7.5: resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/js-base64/-/js-base64-3.7.5.tgz} @@ -5709,14 +8741,6 @@ packages: p-locate: registry.npmmirror.com/p-locate@5.0.0 dev: true - registry.npmmirror.com/locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz} - name: locate-path - version: 7.2.0 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: registry.npmmirror.com/p-locate@6.0.0 - registry.npmmirror.com/lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz} name: lodash.camelcase @@ -5919,7 +8943,7 @@ packages: version: 3.47.0 engines: {node: '>=10'} dependencies: - semver: registry.npmmirror.com/semver@7.5.4 + semver: 7.5.4 dev: false registry.npmmirror.com/normalize-path@3.0.0: @@ -5993,13 +9017,6 @@ packages: type-check: registry.npmmirror.com/type-check@0.4.0 dev: true - registry.npmmirror.com/os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz} - name: os-tmpdir - version: 1.0.2 - engines: {node: '>=0.10.0'} - dev: true - registry.npmmirror.com/p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz} name: p-limit @@ -6026,14 +9043,6 @@ packages: p-limit: registry.npmmirror.com/p-limit@3.1.0 dev: true - registry.npmmirror.com/p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz} - name: p-locate - version: 6.0.0 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: registry.npmmirror.com/p-limit@4.0.0 - registry.npmmirror.com/p-retry@5.1.2: resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/p-retry/-/p-retry-5.1.2.tgz} name: p-retry @@ -6276,7 +9285,7 @@ packages: version: 3.0.0 dependencies: end-of-stream: registry.npmmirror.com/end-of-stream@1.4.4 - once: registry.npmmirror.com/once@1.4.0 + once: 1.4.0 dev: false registry.npmmirror.com/punycode@2.3.0: @@ -6285,12 +9294,6 @@ packages: version: 2.3.0 engines: {node: '>=6'} - registry.npmmirror.com/queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz} - name: queue-microtask - version: 1.2.3 - dev: true - registry.npmmirror.com/rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz} name: rc @@ -6300,18 +9303,7 @@ packages: deep-extend: registry.npmmirror.com/deep-extend@0.6.0 ini: registry.npmmirror.com/ini@1.3.8 minimist: registry.npmmirror.com/minimist@1.2.8 - strip-json-comments: registry.npmmirror.com/strip-json-comments@2.0.1 - dev: false - - registry.npmmirror.com/readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz} - name: readable-stream - version: 3.6.2 - engines: {node: '>= 6'} - dependencies: - inherits: registry.npmmirror.com/inherits@2.0.4 - string_decoder: registry.npmmirror.com/string_decoder@1.3.0 - util-deprecate: registry.npmmirror.com/util-deprecate@1.0.2 + strip-json-comments: 2.0.1 dev: false registry.npmmirror.com/readdirp@3.6.0: @@ -6354,12 +9346,6 @@ packages: version: 2.1.1 engines: {node: '>=0.10.0'} - registry.npmmirror.com/require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz} - name: require-from-string - version: 2.0.2 - engines: {node: '>=0.10.0'} - registry.npmmirror.com/resolve-from@3.0.0: resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz} name: resolve-from @@ -6414,7 +9400,7 @@ packages: version: 2.6.3 hasBin: true dependencies: - glob: registry.npmmirror.com/glob@7.2.3 + glob: 7.2.3 dev: true registry.npmmirror.com/rimraf@3.0.2: @@ -6448,7 +9434,7 @@ packages: name: run-parallel version: 1.2.0 dependencies: - queue-microtask: registry.npmmirror.com/queue-microtask@1.2.3 + queue-microtask: 1.2.3 dev: true registry.npmmirror.com/rxjs@6.6.7: @@ -6457,7 +9443,7 @@ packages: version: 6.6.7 engines: {npm: '>=2.0.0'} dependencies: - tslib: registry.npmmirror.com/tslib@1.14.1 + tslib: 1.14.1 dev: true registry.npmmirror.com/rxjs@7.5.5: @@ -6475,30 +9461,11 @@ packages: tslib: registry.npmmirror.com/tslib@2.6.2 dev: true - registry.npmmirror.com/safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz} - name: safe-buffer - version: 5.2.1 - dev: false - - registry.npmmirror.com/safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz} - name: safer-buffer - version: 2.1.2 - dev: true - registry.npmmirror.com/scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/scrypt-js/-/scrypt-js-3.0.1.tgz} name: scrypt-js version: 3.0.1 - registry.npmmirror.com/semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz} - name: semver - version: 5.7.2 - hasBin: true - dev: true - registry.npmmirror.com/semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz} name: semver @@ -6568,7 +9535,7 @@ packages: version: 4.0.1 dependencies: decompress-response: registry.npmmirror.com/decompress-response@6.0.0 - once: registry.npmmirror.com/once@1.4.0 + once: 1.4.0 simple-concat: registry.npmmirror.com/simple-concat@1.0.1 dev: false @@ -6585,7 +9552,7 @@ packages: version: 2.1.0 engines: {node: '>=6'} dependencies: - ansi-styles: registry.npmmirror.com/ansi-styles@3.2.1 + ansi-styles: 3.2.1 astral-regex: registry.npmmirror.com/astral-regex@1.0.0 is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@2.0.0 dev: true @@ -6596,7 +9563,7 @@ packages: version: 4.0.0 engines: {node: '>=10'} dependencies: - ansi-styles: registry.npmmirror.com/ansi-styles@4.3.0 + ansi-styles: 4.3.0 astral-regex: registry.npmmirror.com/astral-regex@2.0.0 is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@3.0.0 @@ -6682,7 +9649,7 @@ packages: engines: {node: '>=4'} dependencies: is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@2.0.0 - strip-ansi: registry.npmmirror.com/strip-ansi@4.0.0 + strip-ansi: 4.0.0 dev: true registry.npmmirror.com/string-width@3.1.0: @@ -6693,7 +9660,7 @@ packages: dependencies: emoji-regex: registry.npmmirror.com/emoji-regex@7.0.3 is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@2.0.0 - strip-ansi: registry.npmmirror.com/strip-ansi@5.2.0 + strip-ansi: 5.2.0 dev: true registry.npmmirror.com/string-width@4.2.3: @@ -6706,14 +9673,6 @@ packages: is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point@3.0.0 strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 - registry.npmmirror.com/string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz} - name: string_decoder - version: 1.3.0 - dependencies: - safe-buffer: registry.npmmirror.com/safe-buffer@5.2.1 - dev: false - registry.npmmirror.com/strip-ansi@4.0.0: resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz} name: strip-ansi @@ -6723,15 +9682,6 @@ packages: ansi-regex: registry.npmmirror.com/ansi-regex@3.0.1 dev: true - registry.npmmirror.com/strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz} - name: strip-ansi - version: 5.2.0 - engines: {node: '>=6'} - dependencies: - ansi-regex: registry.npmmirror.com/ansi-regex@4.1.1 - dev: true - registry.npmmirror.com/strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz} name: strip-ansi @@ -6759,6 +9709,7 @@ packages: name: strip-json-comments version: 2.0.1 engines: {node: '>=0.10.0'} + dev: true registry.npmmirror.com/strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz} @@ -6783,6 +9734,7 @@ packages: engines: {node: '>=4'} dependencies: has-flag: registry.npmmirror.com/has-flag@3.0.0 + dev: true registry.npmmirror.com/supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz} @@ -6791,6 +9743,7 @@ packages: engines: {node: '>=8'} dependencies: has-flag: registry.npmmirror.com/has-flag@4.0.0 + dev: true registry.npmmirror.com/supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz} @@ -6826,7 +9779,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: ajv: registry.npmmirror.com/ajv@6.12.6 - lodash: registry.npmmirror.com/lodash@4.17.21 + lodash: 4.17.21 slice-ansi: registry.npmmirror.com/slice-ansi@2.1.0 string-width: registry.npmmirror.com/string-width@3.1.0 dev: true @@ -6841,7 +9794,7 @@ packages: lodash.truncate: registry.npmmirror.com/lodash.truncate@4.4.2 slice-ansi: registry.npmmirror.com/slice-ansi@4.0.0 string-width: registry.npmmirror.com/string-width@4.2.3 - strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + strip-ansi: 6.0.1 registry.npmmirror.com/tailwind-merge@1.14.0: resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/tailwind-merge/-/tailwind-merge-1.14.0.tgz} @@ -6869,8 +9822,8 @@ packages: bl: registry.npmmirror.com/bl@4.1.0 end-of-stream: registry.npmmirror.com/end-of-stream@1.4.4 fs-constants: registry.npmmirror.com/fs-constants@1.0.0 - inherits: registry.npmmirror.com/inherits@2.0.4 - readable-stream: registry.npmmirror.com/readable-stream@3.6.2 + inherits: 2.0.4 + readable-stream: 3.6.2 dev: false registry.npmmirror.com/text-table@0.2.0: @@ -6891,15 +9844,6 @@ packages: version: 2.3.8 dev: true - registry.npmmirror.com/tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz} - name: tmp - version: 0.0.33 - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: registry.npmmirror.com/os-tmpdir@1.0.2 - dev: true - registry.npmmirror.com/to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz} name: to-regex-range @@ -6921,7 +9865,7 @@ packages: version: 2.5.1 hasBin: true dependencies: - chalk: registry.npmmirror.com/chalk@4.1.2 + chalk: 4.1.2 command-line-args: registry.npmmirror.com/command-line-args@5.2.1 command-line-usage: registry.npmmirror.com/command-line-usage@6.1.3 string-format: registry.npmmirror.com/string-format@2.0.0 @@ -6970,7 +9914,7 @@ packages: name: tunnel-agent version: 0.6.0 dependencies: - safe-buffer: registry.npmmirror.com/safe-buffer@5.2.1 + safe-buffer: 5.2.1 dev: false registry.npmmirror.com/type-check@0.3.2: @@ -7102,18 +10046,12 @@ packages: react: 18.2.0 dev: false - registry.npmmirror.com/util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz} - name: util-deprecate - version: 1.0.2 - dev: false - registry.npmmirror.com/util@0.10.4: resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/util/-/util-0.10.4.tgz} name: util version: 0.10.4 dependencies: - inherits: registry.npmmirror.com/inherits@2.0.3 + inherits: 2.0.3 registry.npmmirror.com/viem@1.6.0(typescript@5.1.6)(zod@3.22.2): resolution: {integrity: sha512-ae9Twkd0q2Qlj4yYpWjb4DzYAhKY0ibEpRH8FJaTywZXNpTjFidSdBaT0CVn1BaH7O7cnX4/O47zvDUMGJD1AA==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/viem/-/viem-1.6.0.tgz} @@ -7234,9 +10172,9 @@ packages: version: 7.0.0 engines: {node: '>=10'} dependencies: - ansi-styles: registry.npmmirror.com/ansi-styles@4.3.0 + ansi-styles: 4.3.0 string-width: registry.npmmirror.com/string-width@4.2.3 - strip-ansi: registry.npmmirror.com/strip-ansi@6.0.1 + strip-ansi: 6.0.1 registry.npmmirror.com/wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, registry: https://registry.npmjs.org/, tarball: https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz} From 79e3f7c5eea58f661a509ccb8bd74d337681c580 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Wed, 4 Oct 2023 17:25:12 +0800 Subject: [PATCH 12/14] feat: remove player's data transform to merkel tree --- packages/client/src/components/Map/index.tsx | 5 ++--- packages/client/src/pages/game/index.tsx | 3 +-- packages/client/src/service/user.ts | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/client/src/components/Map/index.tsx b/packages/client/src/components/Map/index.tsx index b53c8e0a..7193b0a2 100644 --- a/packages/client/src/components/Map/index.tsx +++ b/packages/client/src/components/Map/index.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useMemo, useRef } from 'react'; +import React, { useMemo, useRef } from 'react'; import { IPlayer } from '../Player'; import MapCell, { ICellClassCache, ICoordinate } from '../MapCell'; import './styles.scss'; @@ -44,9 +44,8 @@ const Map = (props: IProps) => { const onMoveTo = (coordinate) => { const { x, y} = players.find((player) => player.id === curId); - const paths = bfs(simpleMapData, { x, y }, coordinate); + const paths = bfs(simpleMapData, { x, y }, coordinate).slice(1); onPlayerMove(paths, formatMovePath(paths)); - console.log(paths, { x, y }, coordinate); } diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index ebdf2375..264285c5 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -59,8 +59,7 @@ const Game = () => { clearInterval(interval); } }, 300); - console.log(merkelData); - uploadUserMove(players[curPlayerIndex].x, players[curPlayerIndex].y, merkelData); + uploadUserMove(merkelData); } useEffect(() => { diff --git a/packages/client/src/service/user.ts b/packages/client/src/service/user.ts index 0807c6c4..d96f0fec 100644 --- a/packages/client/src/service/user.ts +++ b/packages/client/src/service/user.ts @@ -1,7 +1,7 @@ import { ethers } from 'ethers'; import Mississippi from '../../abi/Mississippi.json'; -export const uploadUserMove = async (x, y, steps) => { +export const uploadUserMove = async (steps) => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore const provider = new ethers.providers.Web3Provider(window.ethereum) @@ -11,8 +11,8 @@ export const uploadUserMove = async (x, y, steps) => { const miss = new ethers.Contract('0xc86c785620e9d9a14374ea203b34b6312bce6d03', Mississippi, signer); - const transaction = await miss.connect(signer).move([x, y, steps]); - const tx = await transaction.wait(1); + const transaction = await miss.connect(signer).move(steps); + const tx = await transaction.wait(); console.log(tx.events) From 8b13c75a06822b90397d2b8064068e67129070b5 Mon Sep 17 00:00:00 2001 From: vivomo <929992114@qq.com> Date: Wed, 4 Oct 2023 20:20:42 +0800 Subject: [PATCH 13/14] feat: update x y map --- packages/client/src/hooks/useMerkel.tsx | 23 ++++++++++------------- packages/client/src/pages/game/index.tsx | 2 +- packages/client/src/utils/map.ts | 4 ++-- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/packages/client/src/hooks/useMerkel.tsx b/packages/client/src/hooks/useMerkel.tsx index 96e48f91..6806fffa 100644 --- a/packages/client/src/hooks/useMerkel.tsx +++ b/packages/client/src/hooks/useMerkel.tsx @@ -8,22 +8,21 @@ const useMerkel = (mapData) => { const convertToLeafs = (mapData) => { const result = []; - for (let x = 0; x < mapData.length; x++) { - for (let y = 0; y < mapData[x].length; y++) { - result.push({ x, y, value: mapData[x][y] }); + for (let y = 0; y < mapData.length; y++) { + for (let x = 0; x < mapData[y].length; x++) { + result.push({ x, y, value: mapData[y][x] }); } } return result; } - const merkel = useRef({ - leafs: convertToLeafs(mapData), - merkleTree: null - }); + const leafs = useRef([]); + + const merkel = useRef(null); const getProof = (x, y) => { const leaf = generateLeaf(x, y, 1); - return merkel.current.merkleTree.getHexProof(leaf); + return merkel.current!.getHexProof(leaf); } // 通过本函数将地图初始化为默克尔树节点的字符串数组,每个字符串的格式为"x,y-value" @@ -53,11 +52,9 @@ const useMerkel = (mapData) => { if (mapData.length === 0) { return; } - merkel.current.leafs = convertToLeafs(mapData); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - merkel.current.merkleTree = new MerkleTree( - merkel.current.leafs.map((info) => generateLeaf(info.x, info.y, info.value)), + leafs.current = convertToLeafs(mapData); + merkel.current = new MerkleTree( + leafs.current.map((info) => generateLeaf(info.x, info.y, info.value)), keccak256, { sortPairs: true } ); diff --git a/packages/client/src/pages/game/index.tsx b/packages/client/src/pages/game/index.tsx index 264285c5..25142480 100644 --- a/packages/client/src/pages/game/index.tsx +++ b/packages/client/src/pages/game/index.tsx @@ -49,7 +49,7 @@ const Game = () => { }; const movePlayer = (paths, merkelData) => { - let pathIndex = 1; + let pathIndex = 0; const curPlayerIndex = players.findIndex(item => item.id === curPlayer!.id); const interval = setInterval(() => { Object.assign(players[curPlayerIndex], paths[pathIndex]); diff --git a/packages/client/src/utils/map.ts b/packages/client/src/utils/map.ts index 45a42437..6f6482e8 100644 --- a/packages/client/src/utils/map.ts +++ b/packages/client/src/utils/map.ts @@ -242,7 +242,7 @@ export const isMovable = (type) => { export const bfs = (mapData: number[][], from: ICoordinate, to: ICoordinate) => { const data = mapData.map((row) => [...row]); - data[from.y][from.x] = 1; + data[from.y][from.x] = 0; let paths = [[from]]; const dirs = [[-1, 0], [1, 0], [0, -1], [0, 1]]; @@ -258,7 +258,7 @@ export const bfs = (mapData: number[][], from: ICoordinate, to: ICoordinate) => if (data[nextY][nextX] === 1) { newPaths.push([...path, { x: nextX, y: nextY}]); - data[nextY][nextX] = 1; + data[nextY][nextX] = 0; } return nextX === to.x && nextY === to.y; }); From ab88f8ed050c818b80e0dea62b2fcf6cabe9742d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E9=A3=9E?= Date: Sun, 8 Oct 2023 14:18:59 +0800 Subject: [PATCH 14/14] Update:ignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b512c09d..639491bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -node_modules \ No newline at end of file +node_modules +.env +packages/contracts/src/codegen/ \ No newline at end of file