From 7803f565cf818720d76e1077fec71ba7169414a9 Mon Sep 17 00:00:00 2001 From: Johnson Chen Date: Mon, 17 Jun 2024 11:48:49 +0800 Subject: [PATCH 1/2] add prettier and format --- client/.prettierrc | 9 + client/.vscode/extensions.json | 2 +- .../libraries/galactic/networkDeployments.ts | 212 +- client/libraries/galactic/networkDetails.ts | 793 +-- client/package-lock.json | 4398 +++++++++-------- client/package.json | 42 +- client/src/App.vue | 67 +- client/src/components/AssetViewer.vue | 259 +- client/src/components/FourShips.vue | 381 +- client/src/components/Play.vue | 115 +- client/src/components/RegisterAvatar.svg.vue | 49 +- client/src/components/RegisterShip.svg.vue | 49 +- client/src/components/Settings.vue | 137 +- client/src/components/Sprite.svg.vue | 94 +- client/src/components/StoryA.vue | 16 +- client/src/components/StoryB.vue | 14 +- client/src/components/TitleScreen.vue | 210 +- client/src/components/UI.svg.vue | 62 +- client/src/components/WindowView.vue | 473 +- client/src/components/World.svg.vue | 361 +- .../src/components/assets/Gridlines.svg.vue | 139 +- .../src/components/assets/Starfield.svg.vue | 99 +- .../components/assets/StarfieldRandom.svg.vue | 110 +- .../assets/animations/_orbit.svg.vue | 72 +- .../assets/geometry/Minerva.svg.vue | 58 +- .../assets/geometry/ShipBoba.svg.vue | 14 +- .../assets/geometry/ShipBobaEngine.svg.vue | 44 +- .../assets/geometry/ShipMoonbeam.svg.vue | 13 +- .../geometry/ShipMoonbeamEngine.svg.vue | 45 +- .../assets/geometry/ShipOrbiter8.svg.vue | 13 +- .../geometry/ShipOrbiter8Engine.svg.vue | 62 +- .../assets/geometry/ShipPolygon.svg.vue | 13 +- .../assets/geometry/ShipPolygonEngine.svg.vue | 63 +- .../assets/geometry/SpaceBackground.svg.vue | 189 +- .../assets/geometry/SpaceStation.svg.vue | 13 +- .../assets/graphics/LogoBoba.svg.vue | 28 +- .../assets/graphics/LogoEthereum.svg.vue | 64 +- .../assets/graphics/LogoMoonbeam.svg.vue | 73 +- .../assets/graphics/LogoOrbiter8.svg.vue | 46 +- .../assets/graphics/LogoPartavate.svg.vue | 226 +- .../assets/graphics/LogoPolygon.svg.vue | 14 +- .../components/assets/graphics/Moon.svg.vue | 53 +- .../components/assets/graphics/Planet.svg.vue | 363 +- .../components/assets/graphics/Portal.svg.vue | 156 +- .../assets/graphics/ShipBoba.svg.vue | 129 +- .../assets/graphics/ShipMoonbeam.svg.vue | 130 +- .../assets/graphics/ShipOrbiter8.svg.vue | 130 +- .../assets/graphics/ShipPolygon.svg.vue | 146 +- .../components/assets/graphics/Star.svg.vue | 51 +- .../assets/graphics/Station.svg.vue | 39 +- .../assets/scenes/OrbitingStation.svg.vue | 336 +- .../assets/sprites/LogoBoba.svg.vue | 13 +- .../assets/sprites/LogoEthereum.svg.vue | 13 +- .../assets/sprites/LogoMetaMask.svg.vue | 139 +- .../assets/sprites/LogoMoonbeam.svg.vue | 13 +- .../assets/sprites/LogoOrbiter8.svg.vue | 9 +- .../assets/sprites/LogoPartavate.svg.vue | 9 +- .../assets/sprites/LogoPolygon.svg.vue | 13 +- .../assets/sprites/MinervaScreen.svg.vue | 47 +- .../components/assets/sprites/Moon.svg.vue | 53 +- .../components/assets/sprites/Planet.svg.vue | 372 +- .../assets/sprites/PlayerShip.svg.vue | 101 +- .../components/assets/sprites/Portal.svg.vue | 156 +- .../assets/sprites/SpaceBackground.svg.vue | 15 +- .../assets/sprites/SpaceStation.svg.vue | 32 +- .../components/assets/sprites/Star.svg.vue | 127 +- .../assets/sprites/minervaBox.svg.vue | 56 +- .../assets/sprites/planets/_planets.svg.vue | 235 +- .../assets/sprites/planets/earth.svg.vue | 87 +- .../assets/sprites/planets/jupiter.svg.vue | 111 +- .../assets/sprites/planets/mars.svg.vue | 95 +- .../assets/sprites/planets/mercury.svg.vue | 69 +- .../assets/sprites/planets/neptune.svg.vue | 95 +- .../assets/sprites/planets/pluto.svg.vue | 69 +- .../assets/sprites/planets/saturn.svg.vue | 128 +- .../assets/sprites/planets/uranus.svg.vue | 128 +- .../assets/sprites/planets/venus.svg.vue | 69 +- .../components/definitions/Orbiter8.svg.vue | 117 +- .../storyboard-panels/About.svg.vue | 184 +- .../storyboard-panels/TweenDemo.svg.vue | 188 +- .../about-panels/AboutPanel01.svg.vue | 97 +- .../about-panels/AboutPanel02.svg.vue | 91 +- .../about-panels/AboutPanel03.svg.vue | 149 +- .../about-panels/AboutPanel04.svg.vue | 180 +- .../about-panels/AboutPanel05.svg.vue | 113 +- .../about-panels/AboutPanel06.svg.vue | 341 +- .../storyboard-panels/composables/autoPlay.ts | 26 +- .../storyboard-panels/panelDialogue.svg.vue | 121 +- .../storyboard-panels/panelNavigation.svg.vue | 201 +- .../components/transformers/worldly.svg.vue | 84 +- client/src/components/ui/Debug.svg.vue | 90 +- .../components/ui/EVMNetworkSelect.svg.vue | 375 +- client/src/components/ui/EVMStatus.svg.vue | 163 +- client/src/components/ui/FPS.svg.vue | 71 +- client/src/components/ui/GameConnet.svg.vue | 344 +- client/src/components/ui/LoadingBar.svg.vue | 95 +- client/src/components/ui/MenuAvatar.svg.vue | 414 +- client/src/components/ui/MenuConnect.svg.vue | 440 +- client/src/components/ui/MenuGame.svg.vue | 163 +- client/src/components/ui/MenuSettings.svg.vue | 194 +- client/src/components/ui/MenuShip.svg.vue | 446 +- client/src/components/ui/MenuTitle.svg.vue | 217 +- client/src/components/ui/SubMenu.svg.vue | 188 +- .../src/components/ui/SubMenuPlanets.svg.vue | 54 +- client/src/components/ui/SubMenuShips.svg.vue | 54 +- client/src/components/ui/SubMenuSlot.svg.vue | 147 +- .../components/ui/SubMenuSlotPlanet.svg.vue | 153 +- .../src/components/ui/SubMenuSlotShip.svg.vue | 101 +- client/src/components/ui/icons/_icon.svg.vue | 128 +- client/src/components/ui/icons/avatar.svg.vue | 23 +- .../src/components/ui/icons/broadcast.svg.vue | 23 +- client/src/components/ui/icons/gear.svg.vue | 18 +- client/src/components/ui/icons/info.svg.vue | 13 +- client/src/components/ui/icons/jump.svg.vue | 57 +- .../src/components/ui/icons/planets.svg.vue | 16 +- client/src/components/ui/icons/ships.svg.vue | 24 +- .../src/components/ui/icons/speaker.svg.vue | 23 +- .../components/ui/widgets/InputBox.svg.vue | 226 +- .../ui/widgets/MinervaFrame.svg.vue | 72 +- .../src/components/ui/widgets/MiniMap.svg.vue | 172 +- .../ui/widgets/button-basic.svg.vue | 163 +- .../ui/widgets/connectionIndicator.svg.vue | 238 +- .../src/components/ui/widgets/profile.svg.vue | 95 +- .../src/components/ui/widgets/spinner.svg.vue | 164 +- .../src/components/ui/widgets/system.svg.vue | 96 +- .../components/ui/widgets/zoomSlider.svg.vue | 156 +- client/src/composables/tween.ts | 81 +- client/src/env.d.ts | 8 +- client/src/layouts/htmlContainer.vue | 36 +- client/src/layouts/svgContainer.vue | 111 +- client/src/models/sprite.ts | 279 +- client/src/stores/avatar.ts | 277 +- client/src/stores/clock.ts | 118 +- client/src/stores/composables/contract.ts | 184 +- client/src/stores/composables/sprites.ts | 257 +- client/src/stores/delete-me-gamestate.ts | 58 +- client/src/stores/evm.ts | 367 +- client/src/stores/galaxy.ts | 713 ++- client/src/stores/routing.ts | 73 +- client/src/stores/screen.ts | 253 +- client/src/stores/theme.ts | 21 +- client/src/stores/ui.ts | 88 +- client/src/stores/world.ts | 405 +- client/tsconfig.json | 32 +- client/tsconfig.node.json | 12 +- client/vite.config.ts | 4 +- 146 files changed, 11755 insertions(+), 11858 deletions(-) create mode 100644 client/.prettierrc diff --git a/client/.prettierrc b/client/.prettierrc new file mode 100644 index 0000000..2300b34 --- /dev/null +++ b/client/.prettierrc @@ -0,0 +1,9 @@ +{ + "arrowParens": "avoid", + "printWidth": 120, + "trailingComma": "all", + "singleQuote": true, + "semi": false, + "tabWidth": 4, + "useTabs": true +} diff --git a/client/.vscode/extensions.json b/client/.vscode/extensions.json index a7cea0b..7e0dd92 100644 --- a/client/.vscode/extensions.json +++ b/client/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["Vue.volar"] + "recommendations": ["Vue.volar"] } diff --git a/client/libraries/galactic/networkDeployments.ts b/client/libraries/galactic/networkDeployments.ts index d0993f3..f732baf 100644 --- a/client/libraries/galactic/networkDeployments.ts +++ b/client/libraries/galactic/networkDeployments.ts @@ -1,108 +1,108 @@ -const deployments = { - //Ropsten - //"3": { - // 'AvatarControls': '0xD4D17A31D6F2aa295D1B3aF91D15A91Bc8CcDF06', - // 'Credits': '0xa20b6ba2da8f24324AeF5b8fdD0cD33CfDDE4839', - // 'Galaxy': '0x73668aF7cC654634cc4EE81da6938416Eb45F4f6', - // 'PlanetTokens': '0xd4d3a49864567f97d0e206AA9929bcDc3B81FaCC', - // 'ShipTokens': '0x4614A110a5c0D0D6A72d762432723654B25b12Ee' - //}, - //Rinkeby - //"4": { - // 'AvatarControls': '0x8f1dC434E3D13f294B8FDe928B6235156a310239', - // 'Credits': '0xCB039aC09cd82aE7166B64d95D6050Fd8c2e5f09', - // 'Galaxy': '0x08d4e18F80fC910a46EF730130B32cE062AC4129', - // 'PlanetTokens': '0x30E6faCdD830700A08Bb5Fc15630c64658F1aaA0', - // 'ShipTokens': '0x46c55B6eAd1efFd5313236D1B5b7b8ca6F95325D' - //}, - //Binance Test - "97": { - 'AvatarControls': '0xc48E08D9367CbC7ebFA363A9467b3c9da286C99D', - 'Credits': '0x44Dc0Bc59AdFa0F8BEcCA7bF76166be21Cf2c9D7', - 'Galaxy': '0x7224299E42180251C90621038bDCC8658589f685', - 'PlanetTokens': '0x27Fb3Be712E0FDEC4667b1B067Af04b74e458f3B', - 'ShipTokens': '0x1fc61Ed0dc2E3340c31839c8A1A87bd9e1fA3CFD' - }, - //Metis - "599": { - 'AvatarControls':'0x2460ED133589F70254f18277F42EDF539221C747', - 'Credits':'0x327daFE07e66150d10a060bFD57b75996b940911import +swap ⇄', - 'Galaxy':'0xdd86445C07e140f284eE10A4c39dF7C568d88865', - 'PlanetTokens':'0x1C67109Cf6407E3304066d12b24cD10309151456', - 'ShipTokens':'0x0f93785633fc437fDFcC707cc8c222F753486Ebc' - }, - //Moonriver Alpha - "1285": { - 'AvatarControls': '0x2460ED133589F70254f18277F42EDF539221C747', - 'Credits': '0x271c7Be1236c579c8e2EBc90eE5B169730c42B3f', - 'Galaxy': '0xC761B452726680704Fc7079B12e3e690665B91Ca', - 'PlanetTokens': '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', - 'ShipTokens': '0xc820005F1EEA88EF4541398F3305d620E5F441d0' - }, - //Moonbase Alpha - "1287": { - 'AvatarControls': '0x9ede095a708438E1063776d02a2dc730D029976b', - 'Credits': '0xAAfE231A3BD8f82E9046b00BF8dFe81d6D6AC0a6', - 'Galaxy': '0x97A5be2aeA8397d7d3A82eC542d302852C1C1D28', - 'PlanetTokens': '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', - 'ShipTokens': '0xaa13867F1481579219187C587BB1a12FA5aBA5d1' - }, - //Bobabase - "1297": { - 'AvatarControls': '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', - 'Credits': '0x9795e4E1fcD5d81399D6A7Acc404fD9Fd91c5747', - 'Galaxy': '0x2fceAd2954C53Cdc35a2E2D3C8d9d11a847D2842', - 'PlanetTokens': '0x4dEdce8EDCD60ED9dA91b55c1E9e76e23830535d', - 'ShipTokens': '0x7a8950c192842820e0C12841DD52187896Db6030' - }, - //Godwoken - "71401": { - 'Credits':'0x44Dc0Bc59AdFa0F8BEcCA7bF76166be21Cf2c9D7', - 'PlanetTokens':'0x5B6F0E2EcAc6452AB5Ab2822De2834E30258421E', - 'ShipTokens':'0x68a3b9A352eD572ae0a955Ce1C1efa18978C7269', - 'AvatarControls':'0x7Aa32471800488b9eC3693c35332CCbAfBb669AC', - 'Galaxy':'0xcA364F2EFE7c87f58A9988F7512A86b4b474D419' - }, - //Mumbai - "80001": { - 'AvatarControls': '0x137E576D7A22935e0FE33108Af39757a2957938B', - 'Credits': '0x6aC535C8D271F031a1360176ae24656Cf887647A', - 'Galaxy': '0x8a782b354248b5F2C0F515536c98d47a6148Ac1D', - 'PlanetTokens': '0xfb110D0F342A059Ed498B39fa053283Ff53a42dD', - 'ShipTokens': '0x07aD013095B67A732a2B565554825145291169b3' - }, - //Arbitrum - "421611": { - 'AvatarControls': '0x1bde28Bf4e0224A72EbC309992B0A5b32262b47A', - 'Credits': '0x7a8950c192842820e0C12841DD52187896Db6030', - 'Galaxy': '0x911873281d209bD8b8C06282aB25b3b953267471', - 'PlanetTokens': '0x2fceAd2954C53Cdc35a2E2D3C8d9d11a847D2842', - 'ShipTokens': '0xd748Eb47D5D9521C19EE8D08BC606893616ed764' - }, - //Metal - "381932": { - 'AvatarControls':'0x2460ED133589F70254f18277F42EDF539221C747', - 'Credits':'0xAAfE231A3BD8f82E9046b00BF8dFe81d6D6AC0a6', - 'Galaxy':'0x0f93785633fc437fDFcC707cc8c222F753486Ebc', - 'PlanetTokens':'0x982c6607390f260235b9e6E6E2a156567F91CDD4', - 'ShipTokens':'0x9d5A16F2f7CB152CD0fc29f2659c77ACc808fb8a', - }, - //Sepolia - "11155111": { - 'AvatarControls': '0x1bde28Bf4e0224A72EbC309992B0A5b32262b47A', - 'Credits': '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', - 'Galaxy': '0xdd86445C07e140f284eE10A4c39dF7C568d88865', - 'PlanetTokens': '0xc820005F1EEA88EF4541398F3305d620E5F441d0', - 'ShipTokens': '0x0f93785633fc437fDFcC707cc8c222F753486Ebc' - }, - //Harmony - //"1666700000": { - // 'AvatarControls': '0xFab77fA380F2694A74C6Aae9dE90DE2426f0F85b', - // 'Credits': '0x9d5A16F2f7CB152CD0fc29f2659c77ACc808fb8a', - // 'Galaxy': '0xd63D3C8d6833359Fc093e9D3C769BD13108AD946', - // 'PlanetTokens': '0x97A5be2aeA8397d7d3A82eC542d302852C1C1D28', - // 'ShipTokens': '0x58e60385A8883B3AA1539a0b969eC2EAd537589E' - //}, +const deployments = { + //Ropsten + //"3": { + // 'AvatarControls': '0xD4D17A31D6F2aa295D1B3aF91D15A91Bc8CcDF06', + // 'Credits': '0xa20b6ba2da8f24324AeF5b8fdD0cD33CfDDE4839', + // 'Galaxy': '0x73668aF7cC654634cc4EE81da6938416Eb45F4f6', + // 'PlanetTokens': '0xd4d3a49864567f97d0e206AA9929bcDc3B81FaCC', + // 'ShipTokens': '0x4614A110a5c0D0D6A72d762432723654B25b12Ee' + //}, + //Rinkeby + //"4": { + // 'AvatarControls': '0x8f1dC434E3D13f294B8FDe928B6235156a310239', + // 'Credits': '0xCB039aC09cd82aE7166B64d95D6050Fd8c2e5f09', + // 'Galaxy': '0x08d4e18F80fC910a46EF730130B32cE062AC4129', + // 'PlanetTokens': '0x30E6faCdD830700A08Bb5Fc15630c64658F1aaA0', + // 'ShipTokens': '0x46c55B6eAd1efFd5313236D1B5b7b8ca6F95325D' + //}, + //Binance Test + '97': { + AvatarControls: '0xc48E08D9367CbC7ebFA363A9467b3c9da286C99D', + Credits: '0x44Dc0Bc59AdFa0F8BEcCA7bF76166be21Cf2c9D7', + Galaxy: '0x7224299E42180251C90621038bDCC8658589f685', + PlanetTokens: '0x27Fb3Be712E0FDEC4667b1B067Af04b74e458f3B', + ShipTokens: '0x1fc61Ed0dc2E3340c31839c8A1A87bd9e1fA3CFD', + }, + //Metis + '599': { + AvatarControls: '0x2460ED133589F70254f18277F42EDF539221C747', + Credits: '0x327daFE07e66150d10a060bFD57b75996b940911import +swap ⇄', + Galaxy: '0xdd86445C07e140f284eE10A4c39dF7C568d88865', + PlanetTokens: '0x1C67109Cf6407E3304066d12b24cD10309151456', + ShipTokens: '0x0f93785633fc437fDFcC707cc8c222F753486Ebc', + }, + //Moonriver Alpha + '1285': { + AvatarControls: '0x2460ED133589F70254f18277F42EDF539221C747', + Credits: '0x271c7Be1236c579c8e2EBc90eE5B169730c42B3f', + Galaxy: '0xC761B452726680704Fc7079B12e3e690665B91Ca', + PlanetTokens: '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', + ShipTokens: '0xc820005F1EEA88EF4541398F3305d620E5F441d0', + }, + //Moonbase Alpha + '1287': { + AvatarControls: '0x9ede095a708438E1063776d02a2dc730D029976b', + Credits: '0xAAfE231A3BD8f82E9046b00BF8dFe81d6D6AC0a6', + Galaxy: '0x97A5be2aeA8397d7d3A82eC542d302852C1C1D28', + PlanetTokens: '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', + ShipTokens: '0xaa13867F1481579219187C587BB1a12FA5aBA5d1', + }, + //Bobabase + '1297': { + AvatarControls: '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', + Credits: '0x9795e4E1fcD5d81399D6A7Acc404fD9Fd91c5747', + Galaxy: '0x2fceAd2954C53Cdc35a2E2D3C8d9d11a847D2842', + PlanetTokens: '0x4dEdce8EDCD60ED9dA91b55c1E9e76e23830535d', + ShipTokens: '0x7a8950c192842820e0C12841DD52187896Db6030', + }, + //Godwoken + '71401': { + Credits: '0x44Dc0Bc59AdFa0F8BEcCA7bF76166be21Cf2c9D7', + PlanetTokens: '0x5B6F0E2EcAc6452AB5Ab2822De2834E30258421E', + ShipTokens: '0x68a3b9A352eD572ae0a955Ce1C1efa18978C7269', + AvatarControls: '0x7Aa32471800488b9eC3693c35332CCbAfBb669AC', + Galaxy: '0xcA364F2EFE7c87f58A9988F7512A86b4b474D419', + }, + //Mumbai + '80001': { + AvatarControls: '0x137E576D7A22935e0FE33108Af39757a2957938B', + Credits: '0x6aC535C8D271F031a1360176ae24656Cf887647A', + Galaxy: '0x8a782b354248b5F2C0F515536c98d47a6148Ac1D', + PlanetTokens: '0xfb110D0F342A059Ed498B39fa053283Ff53a42dD', + ShipTokens: '0x07aD013095B67A732a2B565554825145291169b3', + }, + //Arbitrum + '421611': { + AvatarControls: '0x1bde28Bf4e0224A72EbC309992B0A5b32262b47A', + Credits: '0x7a8950c192842820e0C12841DD52187896Db6030', + Galaxy: '0x911873281d209bD8b8C06282aB25b3b953267471', + PlanetTokens: '0x2fceAd2954C53Cdc35a2E2D3C8d9d11a847D2842', + ShipTokens: '0xd748Eb47D5D9521C19EE8D08BC606893616ed764', + }, + //Metal + '381932': { + AvatarControls: '0x2460ED133589F70254f18277F42EDF539221C747', + Credits: '0xAAfE231A3BD8f82E9046b00BF8dFe81d6D6AC0a6', + Galaxy: '0x0f93785633fc437fDFcC707cc8c222F753486Ebc', + PlanetTokens: '0x982c6607390f260235b9e6E6E2a156567F91CDD4', + ShipTokens: '0x9d5A16F2f7CB152CD0fc29f2659c77ACc808fb8a', + }, + //Sepolia + '11155111': { + AvatarControls: '0x1bde28Bf4e0224A72EbC309992B0A5b32262b47A', + Credits: '0x3093022a0bfD02cFf56CD5B87809027BF88731cE', + Galaxy: '0xdd86445C07e140f284eE10A4c39dF7C568d88865', + PlanetTokens: '0xc820005F1EEA88EF4541398F3305d620E5F441d0', + ShipTokens: '0x0f93785633fc437fDFcC707cc8c222F753486Ebc', + }, + //Harmony + //"1666700000": { + // 'AvatarControls': '0xFab77fA380F2694A74C6Aae9dE90DE2426f0F85b', + // 'Credits': '0x9d5A16F2f7CB152CD0fc29f2659c77ACc808fb8a', + // 'Galaxy': '0xd63D3C8d6833359Fc093e9D3C769BD13108AD946', + // 'PlanetTokens': '0x97A5be2aeA8397d7d3A82eC542d302852C1C1D28', + // 'ShipTokens': '0x58e60385A8883B3AA1539a0b969eC2EAd537589E' + //}, } -export default deployments \ No newline at end of file +export default deployments diff --git a/client/libraries/galactic/networkDetails.ts b/client/libraries/galactic/networkDetails.ts index 600f0d4..79f3ed3 100644 --- a/client/libraries/galactic/networkDetails.ts +++ b/client/libraries/galactic/networkDetails.ts @@ -1,389 +1,412 @@ -const networks = { - '1337': { - name: 'Localhost', - shortName: 'Localhost', - description: '', - id: '1337', - hexId: '0x539', - currency: { - name: 'DEV', - symbol: 'DEV', - decimals: 18 - }, - rpc: ['http://127.0.0.1:8545/'], - explorer: [], - faucets: [] - }, - '1': { - name: 'Ethereum Main Net', - shortName: 'Ethereum', - description: '', - id: '1', - hexId: '0x1', - currency: { - name: 'Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://mainnet.infura.io/v3/'], - explorer: ['https://ropsten.etherscan.io'], - faucets: [] - }, - '2': { - name: 'Deprecated Morden Testnet', - shortName: 'Deprecated', - description: '', - id: '2', - hexId: '0x2', - currency: { - name: 'Deprecated', - symbol: 'ETH', - decimals:18 - }, - rpc: [''], - explorer: [''], - faucets: [] - }, - '3': { - name: 'Deprecated Ropsten Testnet', - shortName: 'Ropsten', - description: '', - id: '3', - hexId: '0x3', - currency: { - name: 'Ropsten Ether', - symbol: 'ETH', - decimals:18 - }, - rpc: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], - explorer: ['https://ropsten.etherscan.io'], - faucets: [{ - name: 'https://faucet.egorfine.com/', - url: 'Egor Egorov\'s Facuet' - }] - }, - '4': { - name: 'Ethereum Rinkeby Testnet', - shortName: 'Rinkeby', - description: '', - id: '4', - hexId: '0x4', - currency: { - name: 'Rinkeby Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://rinkeby.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], - explorer:['https://rinkeby.etherscan.io'], - faucets: [{ - name: 'Chainlink\'s Faucet', - url: 'https://faucets.chain.link/rinkeby' - }, { - name: 'Komputing\'s Faucet ', - url: 'https://fauceth.komputing.org/' - }] - }, - '28': { - name: 'Boba Rinkeby Testnet', - shortName: 'Boba', - description: '', - id: '28', - hexId: '0x1C', - currency: { - name: 'Boba Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://rinkeby.boba.network'], - explorer: ['https://blockexplorer.rinkeby.boba.network'], - faucets: [] - }, - '42': { - name: 'Ethereum Kovan Testnet', - shortName: 'Kovan', - description: '', - id: '42', - hexId: '0x2A', - currency: { - name: 'Kovan Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://kovan.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], - explorer: ['https://kovan.etherscan.io'], - faucets: [] - }, - '61': { - name: 'Ethereum Classic', - shortName: 'Classic', - description: '', - id: '61', - hexId: '0x3D', - currency: { - name: 'ETH Classic', - symbol: 'ETC', - decimals: 18 - }, - rpc: ['https://www.ethercluster.com/etc'], - explorer: ['https://blockscout.com/etc/mainnet/'], - faucets: [] - }, - '69': { - name: 'Optimism Kovan Testnet', - shortName: 'Optimism', - description: '', - id: '69', - hexId: '0x45', - currency: { - name: 'Optimism Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://kovan.optimism.io'], - explorer:['https://kovan-optimistic.etherscan.io'], - faucets: [] - }, - '97': { - name: 'Binance Smartchain Testnet', - shortName: 'Binance', - description: '', - id: '97', - hexId: '0x61', - currency: { - name: 'Binance Coin', - symbol: 'BNB', - decimals: 18 - }, - rpc: ['https://data-seed-prebsc-1-s1.binance.org:8545/'], - explorer:['https://testnet.bscscan.com'], - faucets: [{ - name: 'Binance Faucet', - url: 'https://testnet.binance.org/faucet-smart/' - }] - }, +const networks = { + '1337': { + name: 'Localhost', + shortName: 'Localhost', + description: '', + id: '1337', + hexId: '0x539', + currency: { + name: 'DEV', + symbol: 'DEV', + decimals: 18, + }, + rpc: ['http://127.0.0.1:8545/'], + explorer: [], + faucets: [], + }, + '1': { + name: 'Ethereum Main Net', + shortName: 'Ethereum', + description: '', + id: '1', + hexId: '0x1', + currency: { + name: 'Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://mainnet.infura.io/v3/'], + explorer: ['https://ropsten.etherscan.io'], + faucets: [], + }, + '2': { + name: 'Deprecated Morden Testnet', + shortName: 'Deprecated', + description: '', + id: '2', + hexId: '0x2', + currency: { + name: 'Deprecated', + symbol: 'ETH', + decimals: 18, + }, + rpc: [''], + explorer: [''], + faucets: [], + }, + '3': { + name: 'Deprecated Ropsten Testnet', + shortName: 'Ropsten', + description: '', + id: '3', + hexId: '0x3', + currency: { + name: 'Ropsten Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], + explorer: ['https://ropsten.etherscan.io'], + faucets: [ + { + name: 'https://faucet.egorfine.com/', + url: "Egor Egorov's Facuet", + }, + ], + }, + '4': { + name: 'Ethereum Rinkeby Testnet', + shortName: 'Rinkeby', + description: '', + id: '4', + hexId: '0x4', + currency: { + name: 'Rinkeby Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://rinkeby.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], + explorer: ['https://rinkeby.etherscan.io'], + faucets: [ + { + name: "Chainlink's Faucet", + url: 'https://faucets.chain.link/rinkeby', + }, + { + name: "Komputing's Faucet ", + url: 'https://fauceth.komputing.org/', + }, + ], + }, + '28': { + name: 'Boba Rinkeby Testnet', + shortName: 'Boba', + description: '', + id: '28', + hexId: '0x1C', + currency: { + name: 'Boba Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://rinkeby.boba.network'], + explorer: ['https://blockexplorer.rinkeby.boba.network'], + faucets: [], + }, + '42': { + name: 'Ethereum Kovan Testnet', + shortName: 'Kovan', + description: '', + id: '42', + hexId: '0x2A', + currency: { + name: 'Kovan Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://kovan.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], + explorer: ['https://kovan.etherscan.io'], + faucets: [], + }, + '61': { + name: 'Ethereum Classic', + shortName: 'Classic', + description: '', + id: '61', + hexId: '0x3D', + currency: { + name: 'ETH Classic', + symbol: 'ETC', + decimals: 18, + }, + rpc: ['https://www.ethercluster.com/etc'], + explorer: ['https://blockscout.com/etc/mainnet/'], + faucets: [], + }, + '69': { + name: 'Optimism Kovan Testnet', + shortName: 'Optimism', + description: '', + id: '69', + hexId: '0x45', + currency: { + name: 'Optimism Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://kovan.optimism.io'], + explorer: ['https://kovan-optimistic.etherscan.io'], + faucets: [], + }, + '97': { + name: 'Binance Smartchain Testnet', + shortName: 'Binance', + description: '', + id: '97', + hexId: '0x61', + currency: { + name: 'Binance Coin', + symbol: 'BNB', + decimals: 18, + }, + rpc: ['https://data-seed-prebsc-1-s1.binance.org:8545/'], + explorer: ['https://testnet.bscscan.com'], + faucets: [ + { + name: 'Binance Faucet', + url: 'https://testnet.binance.org/faucet-smart/', + }, + ], + }, - '599': { - name: 'Goerli Metis Test', - shortName: 'Metis Test', - description: '', - id: '599', - hexId: '0x257', - currency: { - name: 'Metis', - symbol: 'MET', - decimals: 18 - }, - rpc: ['https://goerli.gateway.metisdevops.link'], - explorer:['https://goerli.explorer.metisdevops.link'], - faucets: [{ - name: 'Goerli Faucet', - url: 'https://goerli.faucet.metisdevops.link/' - }] - }, + '599': { + name: 'Goerli Metis Test', + shortName: 'Metis Test', + description: '', + id: '599', + hexId: '0x257', + currency: { + name: 'Metis', + symbol: 'MET', + decimals: 18, + }, + rpc: ['https://goerli.gateway.metisdevops.link'], + explorer: ['https://goerli.explorer.metisdevops.link'], + faucets: [ + { + name: 'Goerli Faucet', + url: 'https://goerli.faucet.metisdevops.link/', + }, + ], + }, - '1284': { - name: 'Moonbeam', - shortName: 'Moonbeam', - description: '', - id: '1284', - hexId: '0x504', - currency: { - name: 'GLMR', - symbol: 'GLMR', - decimals: 18 - }, - rpc: ['https://rpc.api.moonbeam.network'], - explorer:['https://moonscan.io'], - faucets: [{ - name: 'Moonbeam App', - url: 'https://moonbeam.network/networks/moonbeam/' - }] - }, - '1285': { - name: 'Moonriver Alpha', - shortName: 'Moonriver', - description: '', - id: '1285', - hexId: '0x505', - currency: { - name: 'MOVR', - symbol: 'MOVR', - decimals: 18 - }, - rpc: ['https://rpc.api.moonriver.moonbeam.network'], - explorer:['https://moonriver.moonscan.io'], - faucets: [{ - name: 'Moonriver App', - url: 'https://moonbeam.network/networks/moonriver/' - }] - }, - '1287': { - name: 'Moonbase Alpha', - shortName: 'Moonbase', - description: '', - id: '1287', - hexId: '0x507', - currency: { - name: 'DEV MOVR', - symbol: 'DEV', - decimals: 18 - }, - rpc: ['https://rpc.api.moonbase.moonbeam.network'], - explorer:['https://moonbase.moonscan.io'], - faucets: [{ - name: 'Moonbase Faucet', - url: 'https://apps.moonbeam.network/moonbase-alpha/faucet/' - }] - }, - '1297': { - name: 'Bobabase Test Network', - shortName: 'Bobabase', - description: '', - id: '1297', - hexId: '0x511', - currency: { - name: 'GLMRDEV', - symbol: 'DEV', - decimals: 18 - }, - rpc: ['https://bobabase.boba.network'], - explorer: ['https://blockexplorer.bobabase.boba.network'], - faucets: [] - }, - '4447': { - name: 'Truffle Development Network', - shortName: 'Truffle', - description: '', - id: '4447', - hexId: '0x115F', - currency: { - name: 'Truffle Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: [''], - explorer: [''], - faucets: [] - }, - '5777': { - name: 'Ganache Development Network', - shortName: 'Ganache', - description: '', - id: '5777', - hexId: '0x1691', - currency: { - name: 'Ganache Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: [''], - explorer: [''], - faucets: [] - }, - '71401': { - name: 'Godworken Testnet', - shortName: 'Godwoken', - id: '71401', - hexId: '0x116E9', - currency: { - name: 'Polyjuice', - symbol: 'pCKB', - decimals: 18 - }, - rpc: ['https://v1.testnet.godwoken.io/rpc'], - explorer: ['https://v1.testnet.gwscan.com/'], - faucets: [{ - name: 'Nervos Faucet', - url: 'https://faucet.nervos.org/' - }, { - name: 'Godwoken Bridge', - url: 'https://testnet.bridge.godwoken.io/' - }] - - }, - '80001': { - name: 'Polygon Mumbai Testnet', - shortName: 'Mumbai', - description: 'Proof-of-Stake', - id: '80001', - hexId: '0x13881', - currency: { - name: 'MATIC', - symbol: 'MATIC', - decimals: 18 - }, - rpc: ['https://rpc-mumbai.maticvigil.com/'], - explorer: ['https://mumbai.polygonscan.com'], - faucets: [{ - name: 'Polygon\'s Faucet', - url: 'https://faucet.polygon.technology/' - }] - }, - '421611': { - name: 'Arbitrum Testnet', - shortName: 'Arbitrum', - description: '', - id: '421611', - hexId: '0x66EEB', - currency: { - name: 'Arbitrum Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://goerli-rollup.arbitrum.io/rpc'], - explorer: ['https://testnet.arbiscan.io'], - faucets: [] - }, - '381932': { - name: 'Metal Tahoe C-Chain', - shortName: 'Metal', - id: '381932', - hexId: '0x5D3EC', - currency: { - name: 'METAL', - symbol: 'METAL', - decimals: 18 - }, - rpc: ['https://tahoe.metalblockchain.org/ext/bc/C/rpc'], - explorer: ['https://tahoe.metalscan.io/'], - faucets: [{ - name: 'Proton Dev Telegram', - url: 'https://t.me/protonxpr/' - }] - }, - '11155111': { - name: 'Sepolia Testnet', - shortName: 'Sepolia', - description: 'Official Ethereum test network', - id: '11155111', - hexId: '0xAA36A7', - currency: { - name: 'Arbitrum Ether', - symbol: 'ETH', - decimals: 18 - }, - rpc: ['https://rpc.sepolia.org/'], - explorer: ['https://sepolia.etherscan.io/'], - faucets: [{ - name: 'Sepolia Faucet', - url: 'https://sepolia-faucet.com/' - }] - }, - '1666700000': { - name: 'Harmony One Testnet', - shortName: 'Harmony', - description: '', - id: '1666700000', - hexId: '0x6357D2E0', - currency: { - name: 'Harmony', - symbol: 'ONE', - decimals: 18 - }, - rpc: ['https://api.s0.b.hmny.io/'], - explorer: ['https://explorer.pops.one'], - faucets: [] - }, + '1284': { + name: 'Moonbeam', + shortName: 'Moonbeam', + description: '', + id: '1284', + hexId: '0x504', + currency: { + name: 'GLMR', + symbol: 'GLMR', + decimals: 18, + }, + rpc: ['https://rpc.api.moonbeam.network'], + explorer: ['https://moonscan.io'], + faucets: [ + { + name: 'Moonbeam App', + url: 'https://moonbeam.network/networks/moonbeam/', + }, + ], + }, + '1285': { + name: 'Moonriver Alpha', + shortName: 'Moonriver', + description: '', + id: '1285', + hexId: '0x505', + currency: { + name: 'MOVR', + symbol: 'MOVR', + decimals: 18, + }, + rpc: ['https://rpc.api.moonriver.moonbeam.network'], + explorer: ['https://moonriver.moonscan.io'], + faucets: [ + { + name: 'Moonriver App', + url: 'https://moonbeam.network/networks/moonriver/', + }, + ], + }, + '1287': { + name: 'Moonbase Alpha', + shortName: 'Moonbase', + description: '', + id: '1287', + hexId: '0x507', + currency: { + name: 'DEV MOVR', + symbol: 'DEV', + decimals: 18, + }, + rpc: ['https://rpc.api.moonbase.moonbeam.network'], + explorer: ['https://moonbase.moonscan.io'], + faucets: [ + { + name: 'Moonbase Faucet', + url: 'https://apps.moonbeam.network/moonbase-alpha/faucet/', + }, + ], + }, + '1297': { + name: 'Bobabase Test Network', + shortName: 'Bobabase', + description: '', + id: '1297', + hexId: '0x511', + currency: { + name: 'GLMRDEV', + symbol: 'DEV', + decimals: 18, + }, + rpc: ['https://bobabase.boba.network'], + explorer: ['https://blockexplorer.bobabase.boba.network'], + faucets: [], + }, + '4447': { + name: 'Truffle Development Network', + shortName: 'Truffle', + description: '', + id: '4447', + hexId: '0x115F', + currency: { + name: 'Truffle Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: [''], + explorer: [''], + faucets: [], + }, + '5777': { + name: 'Ganache Development Network', + shortName: 'Ganache', + description: '', + id: '5777', + hexId: '0x1691', + currency: { + name: 'Ganache Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: [''], + explorer: [''], + faucets: [], + }, + '71401': { + name: 'Godworken Testnet', + shortName: 'Godwoken', + id: '71401', + hexId: '0x116E9', + currency: { + name: 'Polyjuice', + symbol: 'pCKB', + decimals: 18, + }, + rpc: ['https://v1.testnet.godwoken.io/rpc'], + explorer: ['https://v1.testnet.gwscan.com/'], + faucets: [ + { + name: 'Nervos Faucet', + url: 'https://faucet.nervos.org/', + }, + { + name: 'Godwoken Bridge', + url: 'https://testnet.bridge.godwoken.io/', + }, + ], + }, + '80001': { + name: 'Polygon Mumbai Testnet', + shortName: 'Mumbai', + description: 'Proof-of-Stake', + id: '80001', + hexId: '0x13881', + currency: { + name: 'MATIC', + symbol: 'MATIC', + decimals: 18, + }, + rpc: ['https://rpc-mumbai.maticvigil.com/'], + explorer: ['https://mumbai.polygonscan.com'], + faucets: [ + { + name: "Polygon's Faucet", + url: 'https://faucet.polygon.technology/', + }, + ], + }, + '421611': { + name: 'Arbitrum Testnet', + shortName: 'Arbitrum', + description: '', + id: '421611', + hexId: '0x66EEB', + currency: { + name: 'Arbitrum Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://goerli-rollup.arbitrum.io/rpc'], + explorer: ['https://testnet.arbiscan.io'], + faucets: [], + }, + '381932': { + name: 'Metal Tahoe C-Chain', + shortName: 'Metal', + id: '381932', + hexId: '0x5D3EC', + currency: { + name: 'METAL', + symbol: 'METAL', + decimals: 18, + }, + rpc: ['https://tahoe.metalblockchain.org/ext/bc/C/rpc'], + explorer: ['https://tahoe.metalscan.io/'], + faucets: [ + { + name: 'Proton Dev Telegram', + url: 'https://t.me/protonxpr/', + }, + ], + }, + '11155111': { + name: 'Sepolia Testnet', + shortName: 'Sepolia', + description: 'Official Ethereum test network', + id: '11155111', + hexId: '0xAA36A7', + currency: { + name: 'Arbitrum Ether', + symbol: 'ETH', + decimals: 18, + }, + rpc: ['https://rpc.sepolia.org/'], + explorer: ['https://sepolia.etherscan.io/'], + faucets: [ + { + name: 'Sepolia Faucet', + url: 'https://sepolia-faucet.com/', + }, + ], + }, + '1666700000': { + name: 'Harmony One Testnet', + shortName: 'Harmony', + description: '', + id: '1666700000', + hexId: '0x6357D2E0', + currency: { + name: 'Harmony', + symbol: 'ONE', + decimals: 18, + }, + rpc: ['https://api.s0.b.hmny.io/'], + explorer: ['https://explorer.pops.one'], + faucets: [], + }, } -export default networks \ No newline at end of file +export default networks diff --git a/client/package-lock.json b/client/package-lock.json index 814544f..a02009c 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,2193 +1,2209 @@ { - "name": "client", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "client", - "version": "0.0.0", - "dependencies": { - "ethers": "^5.7.2", - "pinia": "^2.1.7", - "sass": "^1.77.2", - "vue": "^3.4.27" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^5.0.4", - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vue-tsc": "^2.0.19" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", - "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", - "dev": true, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@volar/language-core": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.2.5.tgz", - "integrity": "sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==", - "dev": true, - "dependencies": { - "@volar/source-map": "2.2.5" - } - }, - "node_modules/@volar/source-map": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.2.5.tgz", - "integrity": "sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==", - "dev": true, - "dependencies": { - "muggle-string": "^0.4.0" - } - }, - "node_modules/@volar/typescript": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.2.5.tgz", - "integrity": "sha512-eSV/n75+ppfEVugMC/salZsI44nXDPAyL6+iTYCNLtiLHGJsnMv9GwiDMujrvAUj/aLQyqRJgYtXRoxop2clCw==", - "dev": true, - "dependencies": { - "@volar/language-core": "2.2.5", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", - "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==", - "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/shared": "3.4.27", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz", - "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==", - "dependencies": { - "@vue/compiler-core": "3.4.27", - "@vue/shared": "3.4.27" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz", - "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==", - "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/compiler-core": "3.4.27", - "@vue/compiler-dom": "3.4.27", - "@vue/compiler-ssr": "3.4.27", - "@vue/shared": "3.4.27", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.38", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz", - "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==", - "dependencies": { - "@vue/compiler-dom": "3.4.27", - "@vue/shared": "3.4.27" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", - "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" - }, - "node_modules/@vue/language-core": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.19.tgz", - "integrity": "sha512-A9EGOnvb51jOvnCYoRLnMP+CcoPlbZVxI9gZXE/y2GksRWM6j/PrLEIC++pnosWTN08tFpJgxhSS//E9v/Sg+Q==", - "dev": true, - "dependencies": { - "@volar/language-core": "~2.2.4", - "@vue/compiler-dom": "^3.4.0", - "@vue/shared": "^3.4.0", - "computeds": "^0.0.1", - "minimatch": "^9.0.3", - "path-browserify": "^1.0.1", - "vue-template-compiler": "^2.7.14" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz", - "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==", - "dependencies": { - "@vue/shared": "3.4.27" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz", - "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==", - "dependencies": { - "@vue/reactivity": "3.4.27", - "@vue/shared": "3.4.27" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz", - "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==", - "dependencies": { - "@vue/runtime-core": "3.4.27", - "@vue/shared": "3.4.27", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz", - "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==", - "dependencies": { - "@vue/compiler-ssr": "3.4.27", - "@vue/shared": "3.4.27" - }, - "peerDependencies": { - "vue": "3.4.27" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", - "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/computeds": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", - "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pinia": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", - "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", - "dependencies": { - "@vue/devtools-api": "^6.5.0", - "vue-demi": ">=0.14.5" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "@vue/composition-api": "^1.4.0", - "typescript": ">=4.4.4", - "vue": "^2.6.14 || ^3.3.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", - "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/sass": { - "version": "1.77.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", - "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/vite": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", - "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz", - "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==", - "dependencies": { - "@vue/compiler-dom": "3.4.27", - "@vue/compiler-sfc": "3.4.27", - "@vue/runtime-dom": "3.4.27", - "@vue/server-renderer": "3.4.27", - "@vue/shared": "3.4.27" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", - "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/vue-tsc": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.19.tgz", - "integrity": "sha512-JWay5Zt2/871iodGF72cELIbcAoPyhJxq56mPPh+M2K7IwI688FMrFKc/+DvB05wDWEuCPexQJ6L10zSwzzapg==", - "dev": true, - "dependencies": { - "@volar/typescript": "~2.2.4", - "@vue/language-core": "2.0.19", - "semver": "^7.5.4" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" - }, - "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - } + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "ethers": "^5.7.2", + "pinia": "^2.1.7", + "sass": "^1.77.2", + "vue": "^3.4.27" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", + "prettier": "^3.3.2", + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vue-tsc": "^2.0.19" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", + "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.2.5.tgz", + "integrity": "sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.2.5" + } + }, + "node_modules/@volar/source-map": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.2.5.tgz", + "integrity": "sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==", + "dev": true, + "dependencies": { + "muggle-string": "^0.4.0" + } + }, + "node_modules/@volar/typescript": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.2.5.tgz", + "integrity": "sha512-eSV/n75+ppfEVugMC/salZsI44nXDPAyL6+iTYCNLtiLHGJsnMv9GwiDMujrvAUj/aLQyqRJgYtXRoxop2clCw==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.2.5", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", + "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.27", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz", + "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==", + "dependencies": { + "@vue/compiler-core": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz", + "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.27", + "@vue/compiler-dom": "3.4.27", + "@vue/compiler-ssr": "3.4.27", + "@vue/shared": "3.4.27", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz", + "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==", + "dependencies": { + "@vue/compiler-dom": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, + "node_modules/@vue/language-core": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.19.tgz", + "integrity": "sha512-A9EGOnvb51jOvnCYoRLnMP+CcoPlbZVxI9gZXE/y2GksRWM6j/PrLEIC++pnosWTN08tFpJgxhSS//E9v/Sg+Q==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.2.4", + "@vue/compiler-dom": "^3.4.0", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz", + "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==", + "dependencies": { + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz", + "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==", + "dependencies": { + "@vue/reactivity": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz", + "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==", + "dependencies": { + "@vue/runtime-core": "3.4.27", + "@vue/shared": "3.4.27", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz", + "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==", + "dependencies": { + "@vue/compiler-ssr": "3.4.27", + "@vue/shared": "3.4.27" + }, + "peerDependencies": { + "vue": "3.4.27" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", + "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.77.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", + "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", + "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz", + "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==", + "dependencies": { + "@vue/compiler-dom": "3.4.27", + "@vue/compiler-sfc": "3.4.27", + "@vue/runtime-dom": "3.4.27", + "@vue/server-renderer": "3.4.27", + "@vue/shared": "3.4.27" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.19.tgz", + "integrity": "sha512-JWay5Zt2/871iodGF72cELIbcAoPyhJxq56mPPh+M2K7IwI688FMrFKc/+DvB05wDWEuCPexQJ6L10zSwzzapg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.2.4", + "@vue/language-core": "2.0.19", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } } diff --git a/client/package.json b/client/package.json index 1390859..7e68c4d 100644 --- a/client/package.json +++ b/client/package.json @@ -1,22 +1,24 @@ { - "name": "client", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vue-tsc --noEmit && vite build", - "preview": "vite preview" - }, - "dependencies": { - "ethers": "^5.7.2", - "pinia": "^2.1.7", - "sass": "^1.77.2", - "vue": "^3.4.27" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^5.0.4", - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vue-tsc": "^2.0.19" - } + "name": "client", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview", + "format": "prettier --write \"**/*.{vue,ts,js,json}\"" + }, + "dependencies": { + "ethers": "^5.7.2", + "pinia": "^2.1.7", + "sass": "^1.77.2", + "vue": "^3.4.27" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", + "prettier": "^3.3.2", + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vue-tsc": "^2.0.19" + } } diff --git a/client/src/App.vue b/client/src/App.vue index b52a921..65282e0 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -17,69 +17,62 @@ import { useClock } from './stores/clock' const routing = useRouting() const clock = useClock() clock.play() - - diff --git a/client/src/components/AssetViewer.vue b/client/src/components/AssetViewer.vue index 7ee6b7d..932f746 100644 --- a/client/src/components/AssetViewer.vue +++ b/client/src/components/AssetViewer.vue @@ -27,113 +27,164 @@ import { useRouting } from '../stores/routing' - + diff --git a/client/src/components/FourShips.vue b/client/src/components/FourShips.vue index 53bcebb..4301869 100644 --- a/client/src/components/FourShips.vue +++ b/client/src/components/FourShips.vue @@ -13,199 +13,200 @@ import { useRouting } from '../stores/routing' - + diff --git a/client/src/components/Play.vue b/client/src/components/Play.vue index 2aa6eb4..6542f15 100644 --- a/client/src/components/Play.vue +++ b/client/src/components/Play.vue @@ -6,72 +6,71 @@ import RegisterShip from './RegisterShip.svg.vue' import { useScreen } from '../stores/screen' import { useRouting } from '../stores/routing' -import { useEVM } from "../stores/evm" -import { useWorld } from "../stores/world" -import { useUI } from "../stores/ui" +import { useEVM } from '../stores/evm' +import { useWorld } from '../stores/world' +import { useUI } from '../stores/ui' import { onBeforeMount } from 'vue' - + diff --git a/client/src/components/RegisterAvatar.svg.vue b/client/src/components/RegisterAvatar.svg.vue index a8f566f..609e015 100644 --- a/client/src/components/RegisterAvatar.svg.vue +++ b/client/src/components/RegisterAvatar.svg.vue @@ -5,36 +5,31 @@ import backdrop from './assets/sprites/SpaceBackground.svg.vue' - + diff --git a/client/src/components/RegisterShip.svg.vue b/client/src/components/RegisterShip.svg.vue index a8f566f..609e015 100644 --- a/client/src/components/RegisterShip.svg.vue +++ b/client/src/components/RegisterShip.svg.vue @@ -5,36 +5,31 @@ import backdrop from './assets/sprites/SpaceBackground.svg.vue' - + diff --git a/client/src/components/Settings.vue b/client/src/components/Settings.vue index c9d5774..eff012f 100644 --- a/client/src/components/Settings.vue +++ b/client/src/components/Settings.vue @@ -2,13 +2,11 @@ import btn from './ui/widgets/button-basic.svg.vue' import SpaceBackground from './assets/sprites/SpaceBackground.svg.vue' - import LogoOrbiter8 from './assets/sprites/LogoOrbiter8.svg.vue' import LogoPartavate from './assets/sprites/LogoPartavate.svg.vue' import MinervaScreen from './assets/sprites/MinervaScreen.svg.vue' - import { useScreen } from '../stores/screen' import { useUI } from '../stores/ui' import { useRouting } from '../stores/routing' @@ -16,86 +14,67 @@ import { useRouting } from '../stores/routing' - + diff --git a/client/src/components/Sprite.svg.vue b/client/src/components/Sprite.svg.vue index 3637129..c836a27 100644 --- a/client/src/components/Sprite.svg.vue +++ b/client/src/components/Sprite.svg.vue @@ -10,63 +10,49 @@ import { useWorld } from '../stores/world' - + diff --git a/client/src/components/StoryA.vue b/client/src/components/StoryA.vue index 923525b..e00f725 100644 --- a/client/src/components/StoryA.vue +++ b/client/src/components/StoryA.vue @@ -1,25 +1,19 @@ diff --git a/client/src/components/StoryB.vue b/client/src/components/StoryB.vue index 7dfd07f..c9ce7b9 100644 --- a/client/src/components/StoryB.vue +++ b/client/src/components/StoryB.vue @@ -3,21 +3,17 @@ import TweenDemo from './storyboard-panels/TweenDemo.svg.vue' diff --git a/client/src/components/TitleScreen.vue b/client/src/components/TitleScreen.vue index 834d967..8384290 100644 --- a/client/src/components/TitleScreen.vue +++ b/client/src/components/TitleScreen.vue @@ -5,7 +5,6 @@ import starfield from './assets/Starfield.svg.vue' import Star from './assets/sprites/Star.svg.vue' import Planet from './assets/sprites/Planet.svg.vue' - import { useScreen } from '../stores/screen' import { useRouting } from '../stores/routing' @@ -14,119 +13,118 @@ import PlayerShip from './assets/sprites/PlayerShip.svg.vue' - + diff --git a/client/src/components/UI.svg.vue b/client/src/components/UI.svg.vue index 11918e2..a7836bf 100644 --- a/client/src/components/UI.svg.vue +++ b/client/src/components/UI.svg.vue @@ -16,42 +16,38 @@ import { useWorld } from '../stores/world' - + diff --git a/client/src/components/WindowView.vue b/client/src/components/WindowView.vue index 10b4a3e..a76f69b 100644 --- a/client/src/components/WindowView.vue +++ b/client/src/components/WindowView.vue @@ -16,201 +16,294 @@ import { useTween } from '../composables/tween' - + diff --git a/client/src/components/World.svg.vue b/client/src/components/World.svg.vue index 5b15437..927658b 100644 --- a/client/src/components/World.svg.vue +++ b/client/src/components/World.svg.vue @@ -3,8 +3,8 @@ import { mapState } from 'pinia' import { useScreen } from '../stores/screen' import { useRouting } from '../stores/routing' -import { useEVM } from "../stores/evm" -import { useClock } from "../stores/clock" +import { useEVM } from '../stores/evm' +import { useClock } from '../stores/clock' import { useWorld } from '../stores/world' @@ -19,161 +19,222 @@ import Worldly from './transformers/worldly.svg.vue' diff --git a/client/src/components/assets/Gridlines.svg.vue b/client/src/components/assets/Gridlines.svg.vue index 22fbeda..a53d1a8 100644 --- a/client/src/components/assets/Gridlines.svg.vue +++ b/client/src/components/assets/Gridlines.svg.vue @@ -3,90 +3,77 @@ import { useWorld } from '../../stores/world' diff --git a/client/src/components/assets/Starfield.svg.vue b/client/src/components/assets/Starfield.svg.vue index 1c987a4..b78b01c 100644 --- a/client/src/components/assets/Starfield.svg.vue +++ b/client/src/components/assets/Starfield.svg.vue @@ -5,64 +5,57 @@ import ship from './graphics/ShipOrbiter8.svg.vue' - + diff --git a/client/src/components/assets/StarfieldRandom.svg.vue b/client/src/components/assets/StarfieldRandom.svg.vue index 24817d7..83f6ddc 100644 --- a/client/src/components/assets/StarfieldRandom.svg.vue +++ b/client/src/components/assets/StarfieldRandom.svg.vue @@ -1,67 +1,65 @@ - + diff --git a/client/src/components/assets/animations/_orbit.svg.vue b/client/src/components/assets/animations/_orbit.svg.vue index 9d62c72..8e8861e 100644 --- a/client/src/components/assets/animations/_orbit.svg.vue +++ b/client/src/components/assets/animations/_orbit.svg.vue @@ -1,45 +1,43 @@ - + diff --git a/client/src/components/assets/geometry/Minerva.svg.vue b/client/src/components/assets/geometry/Minerva.svg.vue index c9ad56f..513097f 100644 --- a/client/src/components/assets/geometry/Minerva.svg.vue +++ b/client/src/components/assets/geometry/Minerva.svg.vue @@ -1,21 +1,34 @@ \ No newline at end of file + c10.745-5.254,24.834-17.194,28.42-20.06C199.064,59.559,193.568,60.513,193.568,60.513z" + /> + + + + diff --git a/client/src/components/assets/geometry/ShipBoba.svg.vue b/client/src/components/assets/geometry/ShipBoba.svg.vue index e4bb88f..670c61c 100644 --- a/client/src/components/assets/geometry/ShipBoba.svg.vue +++ b/client/src/components/assets/geometry/ShipBoba.svg.vue @@ -1,8 +1,10 @@ - diff --git a/client/src/components/assets/geometry/ShipBobaEngine.svg.vue b/client/src/components/assets/geometry/ShipBobaEngine.svg.vue index 843cd91..58b6d49 100644 --- a/client/src/components/assets/geometry/ShipBobaEngine.svg.vue +++ b/client/src/components/assets/geometry/ShipBobaEngine.svg.vue @@ -1,25 +1,25 @@ - - diff --git a/client/src/components/assets/geometry/ShipMoonbeam.svg.vue b/client/src/components/assets/geometry/ShipMoonbeam.svg.vue index cebdbf2..95cf642 100644 --- a/client/src/components/assets/geometry/ShipMoonbeam.svg.vue +++ b/client/src/components/assets/geometry/ShipMoonbeam.svg.vue @@ -1,8 +1,9 @@ - diff --git a/client/src/components/assets/geometry/ShipMoonbeamEngine.svg.vue b/client/src/components/assets/geometry/ShipMoonbeamEngine.svg.vue index 09e4aa6..fa4b87a 100644 --- a/client/src/components/assets/geometry/ShipMoonbeamEngine.svg.vue +++ b/client/src/components/assets/geometry/ShipMoonbeamEngine.svg.vue @@ -1,26 +1,25 @@ - diff --git a/client/src/components/assets/geometry/ShipOrbiter8.svg.vue b/client/src/components/assets/geometry/ShipOrbiter8.svg.vue index 249a181..f9667c7 100644 --- a/client/src/components/assets/geometry/ShipOrbiter8.svg.vue +++ b/client/src/components/assets/geometry/ShipOrbiter8.svg.vue @@ -1,8 +1,9 @@ - diff --git a/client/src/components/assets/geometry/ShipOrbiter8Engine.svg.vue b/client/src/components/assets/geometry/ShipOrbiter8Engine.svg.vue index 6dd9366..afef5dd 100644 --- a/client/src/components/assets/geometry/ShipOrbiter8Engine.svg.vue +++ b/client/src/components/assets/geometry/ShipOrbiter8Engine.svg.vue @@ -1,34 +1,36 @@ - diff --git a/client/src/components/assets/geometry/ShipPolygon.svg.vue b/client/src/components/assets/geometry/ShipPolygon.svg.vue index 951331d..b8f38df 100644 --- a/client/src/components/assets/geometry/ShipPolygon.svg.vue +++ b/client/src/components/assets/geometry/ShipPolygon.svg.vue @@ -1,8 +1,9 @@ - diff --git a/client/src/components/assets/geometry/ShipPolygonEngine.svg.vue b/client/src/components/assets/geometry/ShipPolygonEngine.svg.vue index e58af17..a2765f4 100644 --- a/client/src/components/assets/geometry/ShipPolygonEngine.svg.vue +++ b/client/src/components/assets/geometry/ShipPolygonEngine.svg.vue @@ -1,35 +1,36 @@ - diff --git a/client/src/components/assets/geometry/SpaceBackground.svg.vue b/client/src/components/assets/geometry/SpaceBackground.svg.vue index cbb3746..23b3461 100644 --- a/client/src/components/assets/geometry/SpaceBackground.svg.vue +++ b/client/src/components/assets/geometry/SpaceBackground.svg.vue @@ -1,72 +1,121 @@ - - diff --git a/client/src/components/assets/geometry/SpaceStation.svg.vue b/client/src/components/assets/geometry/SpaceStation.svg.vue index ecdcb51..a385d66 100644 --- a/client/src/components/assets/geometry/SpaceStation.svg.vue +++ b/client/src/components/assets/geometry/SpaceStation.svg.vue @@ -1,7 +1,10 @@ diff --git a/client/src/components/assets/graphics/LogoBoba.svg.vue b/client/src/components/assets/graphics/LogoBoba.svg.vue index 40f911a..77d267f 100644 --- a/client/src/components/assets/graphics/LogoBoba.svg.vue +++ b/client/src/components/assets/graphics/LogoBoba.svg.vue @@ -1,15 +1,15 @@ \ No newline at end of file + + + + + + + + + + + + + + diff --git a/client/src/components/assets/graphics/LogoEthereum.svg.vue b/client/src/components/assets/graphics/LogoEthereum.svg.vue index 221d638..b9525a0 100644 --- a/client/src/components/assets/graphics/LogoEthereum.svg.vue +++ b/client/src/components/assets/graphics/LogoEthereum.svg.vue @@ -1,34 +1,32 @@ \ No newline at end of file + + + + + + + + + + diff --git a/client/src/components/assets/graphics/LogoMoonbeam.svg.vue b/client/src/components/assets/graphics/LogoMoonbeam.svg.vue index 5fb7fc3..1613953 100644 --- a/client/src/components/assets/graphics/LogoMoonbeam.svg.vue +++ b/client/src/components/assets/graphics/LogoMoonbeam.svg.vue @@ -1,27 +1,48 @@ \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/components/assets/graphics/LogoOrbiter8.svg.vue b/client/src/components/assets/graphics/LogoOrbiter8.svg.vue index 6d35187..91b85a3 100644 --- a/client/src/components/assets/graphics/LogoOrbiter8.svg.vue +++ b/client/src/components/assets/graphics/LogoOrbiter8.svg.vue @@ -1,23 +1,27 @@ - diff --git a/client/src/components/assets/graphics/LogoPartavate.svg.vue b/client/src/components/assets/graphics/LogoPartavate.svg.vue index 010ca2d..9270109 100644 --- a/client/src/components/assets/graphics/LogoPartavate.svg.vue +++ b/client/src/components/assets/graphics/LogoPartavate.svg.vue @@ -1,120 +1,118 @@ - + diff --git a/client/src/components/assets/graphics/LogoPolygon.svg.vue b/client/src/components/assets/graphics/LogoPolygon.svg.vue index a60f383..94e88a2 100644 --- a/client/src/components/assets/graphics/LogoPolygon.svg.vue +++ b/client/src/components/assets/graphics/LogoPolygon.svg.vue @@ -1,7 +1,9 @@ \ No newline at end of file + + + + + + diff --git a/client/src/components/assets/graphics/Moon.svg.vue b/client/src/components/assets/graphics/Moon.svg.vue index 4d05bec..4699fe9 100644 --- a/client/src/components/assets/graphics/Moon.svg.vue +++ b/client/src/components/assets/graphics/Moon.svg.vue @@ -1,34 +1,33 @@ - diff --git a/client/src/components/assets/graphics/Planet.svg.vue b/client/src/components/assets/graphics/Planet.svg.vue index 26bfe96..553e6a9 100644 --- a/client/src/components/assets/graphics/Planet.svg.vue +++ b/client/src/components/assets/graphics/Planet.svg.vue @@ -1,192 +1,195 @@ - - diff --git a/client/src/components/assets/graphics/Portal.svg.vue b/client/src/components/assets/graphics/Portal.svg.vue index 10f1e9d..c59be97 100644 --- a/client/src/components/assets/graphics/Portal.svg.vue +++ b/client/src/components/assets/graphics/Portal.svg.vue @@ -1,81 +1,91 @@ - diff --git a/client/src/components/assets/graphics/ShipBoba.svg.vue b/client/src/components/assets/graphics/ShipBoba.svg.vue index 0e881ff..a1f56bb 100644 --- a/client/src/components/assets/graphics/ShipBoba.svg.vue +++ b/client/src/components/assets/graphics/ShipBoba.svg.vue @@ -4,74 +4,75 @@ import { useTheme } from '../../../stores/theme' - diff --git a/client/src/components/assets/graphics/ShipMoonbeam.svg.vue b/client/src/components/assets/graphics/ShipMoonbeam.svg.vue index d5dc612..85073af 100644 --- a/client/src/components/assets/graphics/ShipMoonbeam.svg.vue +++ b/client/src/components/assets/graphics/ShipMoonbeam.svg.vue @@ -4,76 +4,74 @@ import { useTheme } from '../../../stores/theme' - diff --git a/client/src/components/assets/graphics/ShipOrbiter8.svg.vue b/client/src/components/assets/graphics/ShipOrbiter8.svg.vue index 796ae42..665f6e9 100644 --- a/client/src/components/assets/graphics/ShipOrbiter8.svg.vue +++ b/client/src/components/assets/graphics/ShipOrbiter8.svg.vue @@ -4,74 +4,78 @@ import { useTheme } from '../../../stores/theme' - diff --git a/client/src/components/assets/graphics/ShipPolygon.svg.vue b/client/src/components/assets/graphics/ShipPolygon.svg.vue index 2f45a44..0176007 100644 --- a/client/src/components/assets/graphics/ShipPolygon.svg.vue +++ b/client/src/components/assets/graphics/ShipPolygon.svg.vue @@ -4,83 +4,85 @@ import { useTheme } from '../../../stores/theme' - diff --git a/client/src/components/assets/graphics/Star.svg.vue b/client/src/components/assets/graphics/Star.svg.vue index 8ec38b8..d34aa00 100644 --- a/client/src/components/assets/graphics/Star.svg.vue +++ b/client/src/components/assets/graphics/Star.svg.vue @@ -1,34 +1,31 @@ diff --git a/client/src/components/assets/graphics/Station.svg.vue b/client/src/components/assets/graphics/Station.svg.vue index fe24ab6..fe902f8 100644 --- a/client/src/components/assets/graphics/Station.svg.vue +++ b/client/src/components/assets/graphics/Station.svg.vue @@ -1,25 +1,28 @@ diff --git a/client/src/components/assets/scenes/OrbitingStation.svg.vue b/client/src/components/assets/scenes/OrbitingStation.svg.vue index ad4eeb9..6b010a7 100644 --- a/client/src/components/assets/scenes/OrbitingStation.svg.vue +++ b/client/src/components/assets/scenes/OrbitingStation.svg.vue @@ -1,161 +1,211 @@ - + diff --git a/client/src/components/assets/sprites/LogoBoba.svg.vue b/client/src/components/assets/sprites/LogoBoba.svg.vue index b5c627b..4a90a6c 100644 --- a/client/src/components/assets/sprites/LogoBoba.svg.vue +++ b/client/src/components/assets/sprites/LogoBoba.svg.vue @@ -3,12 +3,11 @@ import LogoBoba from '../graphics/LogoBoba.svg.vue' - + diff --git a/client/src/components/assets/sprites/LogoEthereum.svg.vue b/client/src/components/assets/sprites/LogoEthereum.svg.vue index 777e2ce..87d1eef 100644 --- a/client/src/components/assets/sprites/LogoEthereum.svg.vue +++ b/client/src/components/assets/sprites/LogoEthereum.svg.vue @@ -3,12 +3,11 @@ import LogoEthereum from '../graphics/LogoEthereum.svg.vue' - + diff --git a/client/src/components/assets/sprites/LogoMetaMask.svg.vue b/client/src/components/assets/sprites/LogoMetaMask.svg.vue index f0edfab..8bfd941 100644 --- a/client/src/components/assets/sprites/LogoMetaMask.svg.vue +++ b/client/src/components/assets/sprites/LogoMetaMask.svg.vue @@ -3,66 +3,83 @@ import LogoBoba from '../graphics/LogoBoba.svg.vue' - + diff --git a/client/src/components/assets/sprites/LogoMoonbeam.svg.vue b/client/src/components/assets/sprites/LogoMoonbeam.svg.vue index c49ab3b..ab7623e 100644 --- a/client/src/components/assets/sprites/LogoMoonbeam.svg.vue +++ b/client/src/components/assets/sprites/LogoMoonbeam.svg.vue @@ -3,12 +3,11 @@ import LogoMoonbeam from '../graphics/LogoMoonbeam.svg.vue' - + diff --git a/client/src/components/assets/sprites/LogoOrbiter8.svg.vue b/client/src/components/assets/sprites/LogoOrbiter8.svg.vue index f817a9c..d52c7eb 100644 --- a/client/src/components/assets/sprites/LogoOrbiter8.svg.vue +++ b/client/src/components/assets/sprites/LogoOrbiter8.svg.vue @@ -3,10 +3,9 @@ import LogoOrbiter8 from '../graphics/LogoOrbiter8.svg.vue' - + diff --git a/client/src/components/assets/sprites/LogoPartavate.svg.vue b/client/src/components/assets/sprites/LogoPartavate.svg.vue index 881c276..d5fd377 100644 --- a/client/src/components/assets/sprites/LogoPartavate.svg.vue +++ b/client/src/components/assets/sprites/LogoPartavate.svg.vue @@ -3,10 +3,9 @@ import LogoPartavate from '../graphics/LogoPartavate.svg.vue' - + diff --git a/client/src/components/assets/sprites/LogoPolygon.svg.vue b/client/src/components/assets/sprites/LogoPolygon.svg.vue index 02dd07f..601ea36 100644 --- a/client/src/components/assets/sprites/LogoPolygon.svg.vue +++ b/client/src/components/assets/sprites/LogoPolygon.svg.vue @@ -3,12 +3,11 @@ import LogoPolygon from '../graphics/LogoPolygon.svg.vue' - \ No newline at end of file + diff --git a/client/src/components/assets/sprites/MinervaScreen.svg.vue b/client/src/components/assets/sprites/MinervaScreen.svg.vue index cc396d3..f92283a 100644 --- a/client/src/components/assets/sprites/MinervaScreen.svg.vue +++ b/client/src/components/assets/sprites/MinervaScreen.svg.vue @@ -3,31 +3,22 @@ import minerva from '../geometry/Minerva.svg.vue' \ No newline at end of file + + + + MINERVA AMI + Artificial Machine Intelligence + + diff --git a/client/src/components/assets/sprites/Moon.svg.vue b/client/src/components/assets/sprites/Moon.svg.vue index 79df928..afca7f1 100644 --- a/client/src/components/assets/sprites/Moon.svg.vue +++ b/client/src/components/assets/sprites/Moon.svg.vue @@ -1,34 +1,33 @@ - diff --git a/client/src/components/assets/sprites/Planet.svg.vue b/client/src/components/assets/sprites/Planet.svg.vue index d5c9220..6fe72fa 100644 --- a/client/src/components/assets/sprites/Planet.svg.vue +++ b/client/src/components/assets/sprites/Planet.svg.vue @@ -1,204 +1,192 @@ - - diff --git a/client/src/components/assets/sprites/PlayerShip.svg.vue b/client/src/components/assets/sprites/PlayerShip.svg.vue index 31f6ed6..676b63e 100644 --- a/client/src/components/assets/sprites/PlayerShip.svg.vue +++ b/client/src/components/assets/sprites/PlayerShip.svg.vue @@ -12,60 +12,59 @@ import ShipPolygonEngine from '../geometry/ShipPolygonEngine.svg.vue' - diff --git a/client/src/components/assets/sprites/Portal.svg.vue b/client/src/components/assets/sprites/Portal.svg.vue index 10f1e9d..c59be97 100644 --- a/client/src/components/assets/sprites/Portal.svg.vue +++ b/client/src/components/assets/sprites/Portal.svg.vue @@ -1,81 +1,91 @@ - diff --git a/client/src/components/assets/sprites/SpaceBackground.svg.vue b/client/src/components/assets/sprites/SpaceBackground.svg.vue index 8223a01..eabb197 100644 --- a/client/src/components/assets/sprites/SpaceBackground.svg.vue +++ b/client/src/components/assets/sprites/SpaceBackground.svg.vue @@ -3,16 +3,13 @@ import SpaceBackground from '../geometry/SpaceBackground.svg.vue' - - diff --git a/client/src/components/assets/sprites/SpaceStation.svg.vue b/client/src/components/assets/sprites/SpaceStation.svg.vue index b6fbc68..8216585 100644 --- a/client/src/components/assets/sprites/SpaceStation.svg.vue +++ b/client/src/components/assets/sprites/SpaceStation.svg.vue @@ -4,24 +4,24 @@ import SpaceStation from '../geometry/SpaceStation.svg.vue' diff --git a/client/src/components/assets/sprites/Star.svg.vue b/client/src/components/assets/sprites/Star.svg.vue index 33c9b1b..7fb708c 100644 --- a/client/src/components/assets/sprites/Star.svg.vue +++ b/client/src/components/assets/sprites/Star.svg.vue @@ -1,59 +1,82 @@ diff --git a/client/src/components/assets/sprites/minervaBox.svg.vue b/client/src/components/assets/sprites/minervaBox.svg.vue index 212bb81..fc5e2d2 100644 --- a/client/src/components/assets/sprites/minervaBox.svg.vue +++ b/client/src/components/assets/sprites/minervaBox.svg.vue @@ -4,37 +4,37 @@ import minerva from '../geometry/Minerva.svg.vue' \ No newline at end of file + + + diff --git a/client/src/components/assets/sprites/planets/_planets.svg.vue b/client/src/components/assets/sprites/planets/_planets.svg.vue index 7801ce3..9e29d93 100644 --- a/client/src/components/assets/sprites/planets/_planets.svg.vue +++ b/client/src/components/assets/sprites/planets/_planets.svg.vue @@ -14,149 +14,114 @@ import star from '../Star.svg.vue' diff --git a/client/src/components/assets/sprites/planets/earth.svg.vue b/client/src/components/assets/sprites/planets/earth.svg.vue index 985a15a..16ecf0c 100644 --- a/client/src/components/assets/sprites/planets/earth.svg.vue +++ b/client/src/components/assets/sprites/planets/earth.svg.vue @@ -6,62 +6,45 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/jupiter.svg.vue b/client/src/components/assets/sprites/planets/jupiter.svg.vue index 3b5eb3f..95d844e 100644 --- a/client/src/components/assets/sprites/planets/jupiter.svg.vue +++ b/client/src/components/assets/sprites/planets/jupiter.svg.vue @@ -6,77 +6,54 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/mars.svg.vue b/client/src/components/assets/sprites/planets/mars.svg.vue index 5b33610..8aa6da3 100644 --- a/client/src/components/assets/sprites/planets/mars.svg.vue +++ b/client/src/components/assets/sprites/planets/mars.svg.vue @@ -6,67 +6,48 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/mercury.svg.vue b/client/src/components/assets/sprites/planets/mercury.svg.vue index c302a6f..9742164 100644 --- a/client/src/components/assets/sprites/planets/mercury.svg.vue +++ b/client/src/components/assets/sprites/planets/mercury.svg.vue @@ -5,51 +5,38 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/neptune.svg.vue b/client/src/components/assets/sprites/planets/neptune.svg.vue index 5faf37e..8112f70 100644 --- a/client/src/components/assets/sprites/planets/neptune.svg.vue +++ b/client/src/components/assets/sprites/planets/neptune.svg.vue @@ -6,67 +6,48 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/pluto.svg.vue b/client/src/components/assets/sprites/planets/pluto.svg.vue index e679af8..1ddb15a 100644 --- a/client/src/components/assets/sprites/planets/pluto.svg.vue +++ b/client/src/components/assets/sprites/planets/pluto.svg.vue @@ -6,50 +6,39 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/saturn.svg.vue b/client/src/components/assets/sprites/planets/saturn.svg.vue index 0b0498f..08a558c 100644 --- a/client/src/components/assets/sprites/planets/saturn.svg.vue +++ b/client/src/components/assets/sprites/planets/saturn.svg.vue @@ -6,88 +6,60 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/uranus.svg.vue b/client/src/components/assets/sprites/planets/uranus.svg.vue index c5b0767..bbbd1b2 100644 --- a/client/src/components/assets/sprites/planets/uranus.svg.vue +++ b/client/src/components/assets/sprites/planets/uranus.svg.vue @@ -6,88 +6,60 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/assets/sprites/planets/venus.svg.vue b/client/src/components/assets/sprites/planets/venus.svg.vue index f10c74d..ebab933 100644 --- a/client/src/components/assets/sprites/planets/venus.svg.vue +++ b/client/src/components/assets/sprites/planets/venus.svg.vue @@ -5,51 +5,38 @@ import station from '../../graphics/Station.svg.vue' import shipO8 from '../../graphics/ShipOrbiter8.svg.vue' - - - diff --git a/client/src/components/definitions/Orbiter8.svg.vue b/client/src/components/definitions/Orbiter8.svg.vue index 30c6e10..27cb555 100644 --- a/client/src/components/definitions/Orbiter8.svg.vue +++ b/client/src/components/definitions/Orbiter8.svg.vue @@ -1,64 +1,57 @@ - - diff --git a/client/src/components/storyboard-panels/About.svg.vue b/client/src/components/storyboard-panels/About.svg.vue index ee561df..8743a87 100644 --- a/client/src/components/storyboard-panels/About.svg.vue +++ b/client/src/components/storyboard-panels/About.svg.vue @@ -18,131 +18,87 @@ import { useRouting } from '../../stores/routing' diff --git a/client/src/components/storyboard-panels/TweenDemo.svg.vue b/client/src/components/storyboard-panels/TweenDemo.svg.vue index 952ec86..4f6b036 100644 --- a/client/src/components/storyboard-panels/TweenDemo.svg.vue +++ b/client/src/components/storyboard-panels/TweenDemo.svg.vue @@ -14,110 +14,114 @@ import { useClock } from '../../stores/clock' diff --git a/client/src/components/storyboard-panels/about-panels/AboutPanel01.svg.vue b/client/src/components/storyboard-panels/about-panels/AboutPanel01.svg.vue index 58519bc..45d399b 100644 --- a/client/src/components/storyboard-panels/about-panels/AboutPanel01.svg.vue +++ b/client/src/components/storyboard-panels/about-panels/AboutPanel01.svg.vue @@ -5,61 +5,58 @@ import planets from '../../assets/sprites/planets/_planets.svg.vue' - + diff --git a/client/src/components/storyboard-panels/about-panels/AboutPanel02.svg.vue b/client/src/components/storyboard-panels/about-panels/AboutPanel02.svg.vue index 116a060..c27d2d2 100644 --- a/client/src/components/storyboard-panels/about-panels/AboutPanel02.svg.vue +++ b/client/src/components/storyboard-panels/about-panels/AboutPanel02.svg.vue @@ -5,57 +5,52 @@ import planets from '../../assets/sprites/planets/_planets.svg.vue' - + diff --git a/client/src/components/storyboard-panels/about-panels/AboutPanel03.svg.vue b/client/src/components/storyboard-panels/about-panels/AboutPanel03.svg.vue index a0eadb5..c0eed81 100644 --- a/client/src/components/storyboard-panels/about-panels/AboutPanel03.svg.vue +++ b/client/src/components/storyboard-panels/about-panels/AboutPanel03.svg.vue @@ -6,91 +6,86 @@ import ship from '../../assets/graphics/ShipOrbiter8.svg.vue' - + diff --git a/client/src/components/storyboard-panels/about-panels/AboutPanel04.svg.vue b/client/src/components/storyboard-panels/about-panels/AboutPanel04.svg.vue index f857190..92cce17 100644 --- a/client/src/components/storyboard-panels/about-panels/AboutPanel04.svg.vue +++ b/client/src/components/storyboard-panels/about-panels/AboutPanel04.svg.vue @@ -6,101 +6,101 @@ import starfield from '../../assets/Starfield.svg.vue' - + diff --git a/client/src/components/storyboard-panels/about-panels/AboutPanel05.svg.vue b/client/src/components/storyboard-panels/about-panels/AboutPanel05.svg.vue index fde12b5..d030398 100644 --- a/client/src/components/storyboard-panels/about-panels/AboutPanel05.svg.vue +++ b/client/src/components/storyboard-panels/about-panels/AboutPanel05.svg.vue @@ -5,68 +5,67 @@ import starfield from '../../assets/Starfield.svg.vue' - + diff --git a/client/src/components/storyboard-panels/about-panels/AboutPanel06.svg.vue b/client/src/components/storyboard-panels/about-panels/AboutPanel06.svg.vue index 846cbd3..365e3a4 100644 --- a/client/src/components/storyboard-panels/about-panels/AboutPanel06.svg.vue +++ b/client/src/components/storyboard-panels/about-panels/AboutPanel06.svg.vue @@ -10,181 +10,178 @@ import ethereum from '../../assets/graphics/LogoEthereum.svg.vue' - + diff --git a/client/src/components/storyboard-panels/composables/autoPlay.ts b/client/src/components/storyboard-panels/composables/autoPlay.ts index 14dd1aa..c98ab8b 100644 --- a/client/src/components/storyboard-panels/composables/autoPlay.ts +++ b/client/src/components/storyboard-panels/composables/autoPlay.ts @@ -2,18 +2,18 @@ import { ref } from 'vue' export function useAutoPlay(waitTime) { - const panel = ref(0) + const panel = ref(0) - function next(waitTime) { - if (panel.value in waitTime) { - setTimeout(() => { - panel.value = panel.value + 1 - next(waitTime) - }, waitTime[panel.value]) - } - return panel - } + function next(waitTime) { + if (panel.value in waitTime) { + setTimeout(() => { + panel.value = panel.value + 1 + next(waitTime) + }, waitTime[panel.value]) + } + return panel + } - next(waitTime) - return panel -} \ No newline at end of file + next(waitTime) + return panel +} diff --git a/client/src/components/storyboard-panels/panelDialogue.svg.vue b/client/src/components/storyboard-panels/panelDialogue.svg.vue index f3c7355..8f8bee1 100644 --- a/client/src/components/storyboard-panels/panelDialogue.svg.vue +++ b/client/src/components/storyboard-panels/panelDialogue.svg.vue @@ -1,95 +1,54 @@ - + diff --git a/client/src/components/storyboard-panels/panelNavigation.svg.vue b/client/src/components/storyboard-panels/panelNavigation.svg.vue index 98d9730..b1a8541 100644 --- a/client/src/components/storyboard-panels/panelNavigation.svg.vue +++ b/client/src/components/storyboard-panels/panelNavigation.svg.vue @@ -1,113 +1,114 @@ - + diff --git a/client/src/components/transformers/worldly.svg.vue b/client/src/components/transformers/worldly.svg.vue index 182d511..5cd21e6 100644 --- a/client/src/components/transformers/worldly.svg.vue +++ b/client/src/components/transformers/worldly.svg.vue @@ -4,51 +4,51 @@ import { useWorld } from '../../stores/world' - + diff --git a/client/src/components/ui/Debug.svg.vue b/client/src/components/ui/Debug.svg.vue index 084e81c..4546f8e 100644 --- a/client/src/components/ui/Debug.svg.vue +++ b/client/src/components/ui/Debug.svg.vue @@ -6,49 +6,63 @@ import { useUI } from '../../stores/ui' - + diff --git a/client/src/components/ui/EVMNetworkSelect.svg.vue b/client/src/components/ui/EVMNetworkSelect.svg.vue index 7115ed2..38e73ef 100644 --- a/client/src/components/ui/EVMNetworkSelect.svg.vue +++ b/client/src/components/ui/EVMNetworkSelect.svg.vue @@ -3,176 +3,237 @@ import btn from './widgets/button-basic.svg.vue' import spinner from './widgets/spinner.svg.vue' import { useEVM } from '../../stores/evm' import { useWorld } from '../../stores/world' -import deployments from "../../../libraries/galactic/networkDeployments" -import networks from "../../../libraries/galactic/networkDetails" +import deployments from '../../../libraries/galactic/networkDeployments' +import networks from '../../../libraries/galactic/networkDetails' - + diff --git a/client/src/components/ui/EVMStatus.svg.vue b/client/src/components/ui/EVMStatus.svg.vue index 8e0a74f..0f74cf7 100644 --- a/client/src/components/ui/EVMStatus.svg.vue +++ b/client/src/components/ui/EVMStatus.svg.vue @@ -9,91 +9,94 @@ import { useUI } from '../../stores/ui' - + diff --git a/client/src/components/ui/FPS.svg.vue b/client/src/components/ui/FPS.svg.vue index 4e9337f..bec1402 100644 --- a/client/src/components/ui/FPS.svg.vue +++ b/client/src/components/ui/FPS.svg.vue @@ -1,48 +1,49 @@ - + diff --git a/client/src/components/ui/GameConnet.svg.vue b/client/src/components/ui/GameConnet.svg.vue index 151f2b5..7afecd4 100644 --- a/client/src/components/ui/GameConnet.svg.vue +++ b/client/src/components/ui/GameConnet.svg.vue @@ -5,7 +5,7 @@ import LoadingBar from './LoadingBar.svg.vue' import { useScreen } from '../../stores/screen' import { useRouting } from '../../stores/routing' -import { useEVM } from "../../stores/evm" +import { useEVM } from '../../stores/evm' import { useAvatar } from '../../stores/avatar' import { useGalaxy } from '../../stores/galaxy' @@ -14,179 +14,181 @@ import { useWorld } from '../../stores/world' - + diff --git a/client/src/components/ui/LoadingBar.svg.vue b/client/src/components/ui/LoadingBar.svg.vue index b1570d8..3d9229b 100644 --- a/client/src/components/ui/LoadingBar.svg.vue +++ b/client/src/components/ui/LoadingBar.svg.vue @@ -1,45 +1,64 @@ +export default { + props: { + statusMessage: { + type: String, + default: '', + }, + percent: { + type: Number, + default: 10, + }, + }, +} + - diff --git a/client/src/components/ui/MenuAvatar.svg.vue b/client/src/components/ui/MenuAvatar.svg.vue index de1b868..125fd92 100644 --- a/client/src/components/ui/MenuAvatar.svg.vue +++ b/client/src/components/ui/MenuAvatar.svg.vue @@ -10,219 +10,213 @@ import { useWorld } from '../../stores/world' - + diff --git a/client/src/components/ui/MenuConnect.svg.vue b/client/src/components/ui/MenuConnect.svg.vue index 5daf730..51f9601 100644 --- a/client/src/components/ui/MenuConnect.svg.vue +++ b/client/src/components/ui/MenuConnect.svg.vue @@ -13,7 +13,7 @@ import { mapState } from 'pinia' import { useUI } from '../../stores/ui' import { useScreen } from '../../stores/screen' import { useRouting } from '../../stores/routing' -import { useEVM } from "../../stores/evm" +import { useEVM } from '../../stores/evm' import { useWorld } from '../../stores/world' import { useAvatar } from '../../stores/avatar' @@ -22,232 +22,224 @@ import { useGalaxy } from '../../stores/galaxy' - + diff --git a/client/src/components/ui/MenuGame.svg.vue b/client/src/components/ui/MenuGame.svg.vue index 645470f..353bf61 100644 --- a/client/src/components/ui/MenuGame.svg.vue +++ b/client/src/components/ui/MenuGame.svg.vue @@ -1,5 +1,4 @@ diff --git a/client/src/components/ui/MenuSettings.svg.vue b/client/src/components/ui/MenuSettings.svg.vue index 042d7ef..a61cf27 100644 --- a/client/src/components/ui/MenuSettings.svg.vue +++ b/client/src/components/ui/MenuSettings.svg.vue @@ -7,114 +7,108 @@ import { useRouting } from '../../stores/routing' - + diff --git a/client/src/components/ui/MenuShip.svg.vue b/client/src/components/ui/MenuShip.svg.vue index 802e922..1f1ce27 100644 --- a/client/src/components/ui/MenuShip.svg.vue +++ b/client/src/components/ui/MenuShip.svg.vue @@ -7,249 +7,245 @@ import { useRouting } from '../../stores/routing' import { useUI } from '../../stores/ui' import { useScreen } from '../../stores/screen' import { useWorld } from '../../stores/world' - diff --git a/client/src/components/ui/MenuTitle.svg.vue b/client/src/components/ui/MenuTitle.svg.vue index 3f22b5e..17c1fd9 100644 --- a/client/src/components/ui/MenuTitle.svg.vue +++ b/client/src/components/ui/MenuTitle.svg.vue @@ -10,126 +10,113 @@ import { useWorld } from '../../stores/world' - + diff --git a/client/src/components/ui/SubMenu.svg.vue b/client/src/components/ui/SubMenu.svg.vue index a97c06a..dffbfb3 100644 --- a/client/src/components/ui/SubMenu.svg.vue +++ b/client/src/components/ui/SubMenu.svg.vue @@ -5,110 +5,106 @@ import btn from './widgets/button-basic.svg.vue' \ No newline at end of file +.slide { + transition: transform 0.5s; +} +.slidein { + transform: translate(0px, 0px); +} +.slideout { + transform: translate(0px, 3000px); +} + diff --git a/client/src/components/ui/SubMenuPlanets.svg.vue b/client/src/components/ui/SubMenuPlanets.svg.vue index aab6e1a..895aefb 100644 --- a/client/src/components/ui/SubMenuPlanets.svg.vue +++ b/client/src/components/ui/SubMenuPlanets.svg.vue @@ -8,35 +8,35 @@ import { useScreen } from '../../stores/screen' diff --git a/client/src/components/ui/SubMenuShips.svg.vue b/client/src/components/ui/SubMenuShips.svg.vue index 5b2bb12..e0b6ee7 100644 --- a/client/src/components/ui/SubMenuShips.svg.vue +++ b/client/src/components/ui/SubMenuShips.svg.vue @@ -8,35 +8,35 @@ import { useScreen } from '../../stores/screen' diff --git a/client/src/components/ui/SubMenuSlot.svg.vue b/client/src/components/ui/SubMenuSlot.svg.vue index e42dcad..c2a5186 100644 --- a/client/src/components/ui/SubMenuSlot.svg.vue +++ b/client/src/components/ui/SubMenuSlot.svg.vue @@ -4,78 +4,91 @@ import { useScreen } from '../../stores/screen' - \ No newline at end of file + diff --git a/client/src/components/ui/SubMenuSlotPlanet.svg.vue b/client/src/components/ui/SubMenuSlotPlanet.svg.vue index cdda7fe..f8b65f7 100644 --- a/client/src/components/ui/SubMenuSlotPlanet.svg.vue +++ b/client/src/components/ui/SubMenuSlotPlanet.svg.vue @@ -1,5 +1,4 @@ - \ No newline at end of file + diff --git a/client/src/components/ui/SubMenuSlotShip.svg.vue b/client/src/components/ui/SubMenuSlotShip.svg.vue index 85e1688..0479557 100644 --- a/client/src/components/ui/SubMenuSlotShip.svg.vue +++ b/client/src/components/ui/SubMenuSlotShip.svg.vue @@ -1,66 +1,61 @@ - \ No newline at end of file + diff --git a/client/src/components/ui/icons/_icon.svg.vue b/client/src/components/ui/icons/_icon.svg.vue index 51c4955..1d1e2a6 100644 --- a/client/src/components/ui/icons/_icon.svg.vue +++ b/client/src/components/ui/icons/_icon.svg.vue @@ -1,83 +1,63 @@ - + - - diff --git a/client/src/components/ui/icons/avatar.svg.vue b/client/src/components/ui/icons/avatar.svg.vue index cd1e6b6..2663696 100644 --- a/client/src/components/ui/icons/avatar.svg.vue +++ b/client/src/components/ui/icons/avatar.svg.vue @@ -3,20 +3,17 @@ import icon from './_icon.svg.vue' - - diff --git a/client/src/components/ui/icons/broadcast.svg.vue b/client/src/components/ui/icons/broadcast.svg.vue index 5aa0009..de20d31 100644 --- a/client/src/components/ui/icons/broadcast.svg.vue +++ b/client/src/components/ui/icons/broadcast.svg.vue @@ -3,16 +3,21 @@ import icon from './_icon.svg.vue' - - diff --git a/client/src/components/ui/icons/gear.svg.vue b/client/src/components/ui/icons/gear.svg.vue index 840b993..c44d85c 100644 --- a/client/src/components/ui/icons/gear.svg.vue +++ b/client/src/components/ui/icons/gear.svg.vue @@ -3,16 +3,16 @@ import icon from './_icon.svg.vue' - - diff --git a/client/src/components/ui/icons/info.svg.vue b/client/src/components/ui/icons/info.svg.vue index 9a3bf24..446cb33 100644 --- a/client/src/components/ui/icons/info.svg.vue +++ b/client/src/components/ui/icons/info.svg.vue @@ -3,15 +3,12 @@ import icon from './_icon.svg.vue' - - diff --git a/client/src/components/ui/icons/jump.svg.vue b/client/src/components/ui/icons/jump.svg.vue index a23a863..4129a76 100644 --- a/client/src/components/ui/icons/jump.svg.vue +++ b/client/src/components/ui/icons/jump.svg.vue @@ -5,32 +5,39 @@ import { useGalaxy } from '../../../stores/galaxy' \ No newline at end of file + + + + + + + + + + + + + + + + + + + + diff --git a/client/src/components/ui/icons/planets.svg.vue b/client/src/components/ui/icons/planets.svg.vue index fa329e0..750b477 100644 --- a/client/src/components/ui/icons/planets.svg.vue +++ b/client/src/components/ui/icons/planets.svg.vue @@ -3,17 +3,13 @@ import icon from './_icon.svg.vue' - - diff --git a/client/src/components/ui/icons/ships.svg.vue b/client/src/components/ui/icons/ships.svg.vue index 6dbda94..683acfd 100644 --- a/client/src/components/ui/icons/ships.svg.vue +++ b/client/src/components/ui/icons/ships.svg.vue @@ -5,21 +5,19 @@ import Ship from '../../assets/geometry/ShipOrbiter8.svg.vue' - - diff --git a/client/src/components/ui/icons/speaker.svg.vue b/client/src/components/ui/icons/speaker.svg.vue index 336050d..03aa28e 100644 --- a/client/src/components/ui/icons/speaker.svg.vue +++ b/client/src/components/ui/icons/speaker.svg.vue @@ -3,17 +3,20 @@ import icon from './_icon.svg.vue' - - diff --git a/client/src/components/ui/widgets/InputBox.svg.vue b/client/src/components/ui/widgets/InputBox.svg.vue index 4460114..ff82ac3 100644 --- a/client/src/components/ui/widgets/InputBox.svg.vue +++ b/client/src/components/ui/widgets/InputBox.svg.vue @@ -1,120 +1,128 @@ - \ No newline at end of file + + diff --git a/client/src/components/ui/widgets/MinervaFrame.svg.vue b/client/src/components/ui/widgets/MinervaFrame.svg.vue index 07b23f0..efb4a15 100644 --- a/client/src/components/ui/widgets/MinervaFrame.svg.vue +++ b/client/src/components/ui/widgets/MinervaFrame.svg.vue @@ -4,48 +4,42 @@ import MinervaScreen from '../../assets/sprites/MinervaScreen.svg.vue' - + diff --git a/client/src/components/ui/widgets/MiniMap.svg.vue b/client/src/components/ui/widgets/MiniMap.svg.vue index 80bed2e..e475315 100644 --- a/client/src/components/ui/widgets/MiniMap.svg.vue +++ b/client/src/components/ui/widgets/MiniMap.svg.vue @@ -1,111 +1,89 @@ - diff --git a/client/src/components/ui/widgets/button-basic.svg.vue b/client/src/components/ui/widgets/button-basic.svg.vue index 06342ad..bc15053 100644 --- a/client/src/components/ui/widgets/button-basic.svg.vue +++ b/client/src/components/ui/widgets/button-basic.svg.vue @@ -1,83 +1,86 @@ +export default { + emits: ['click'], + data() { + return { + hover: false, + } + }, + props: { + val: { + type: String, + default: '', + }, + text: { + type: String, + default: '', + }, + selected: { + type: Boolean, + default: false, + }, + width: { + type: Number, + default: 400, + }, + height: { + type: Number, + default: 24, + }, + }, + computed: { + fillOpacity(): string { + if (this.selected) { + return '0.3' + } + if (this.hover) { + return '0.2' + } + return '0.1' + }, + strokeOpacity(): string { + if (this.hover || this.selected) { + return '0.8' + } + return '0.3' + }, + curve(): number { + return Math.min(this.width, this.height) / 2 + }, + }, +} + - + - + diff --git a/client/src/components/ui/widgets/connectionIndicator.svg.vue b/client/src/components/ui/widgets/connectionIndicator.svg.vue index 66df0b4..3034fd9 100644 --- a/client/src/components/ui/widgets/connectionIndicator.svg.vue +++ b/client/src/components/ui/widgets/connectionIndicator.svg.vue @@ -6,133 +6,125 @@ import LogoOrbiter8 from '../../assets/sprites/LogoOrbiter8.svg.vue' - + diff --git a/client/src/components/ui/widgets/profile.svg.vue b/client/src/components/ui/widgets/profile.svg.vue index 7454d15..5ff76ba 100644 --- a/client/src/components/ui/widgets/profile.svg.vue +++ b/client/src/components/ui/widgets/profile.svg.vue @@ -5,49 +5,66 @@ import { useGalaxy } from '../../../stores/galaxy' - - diff --git a/client/src/components/ui/widgets/spinner.svg.vue b/client/src/components/ui/widgets/spinner.svg.vue index b173b3c..141771c 100644 --- a/client/src/components/ui/widgets/spinner.svg.vue +++ b/client/src/components/ui/widgets/spinner.svg.vue @@ -1,92 +1,80 @@ +export default { + emits: ['click'], + data() { + return { + dots: 10, + } + }, + props: { + val: { + type: String, + default: '', + }, + text: { + type: String, + default: '', + }, + selected: { + type: Boolean, + default: false, + }, + }, + computed: {}, +} + - - - + diff --git a/client/src/components/ui/widgets/system.svg.vue b/client/src/components/ui/widgets/system.svg.vue index e717fe1..59c22b8 100644 --- a/client/src/components/ui/widgets/system.svg.vue +++ b/client/src/components/ui/widgets/system.svg.vue @@ -4,52 +4,60 @@ import { useGalaxy } from '../../../stores/galaxy' - - diff --git a/client/src/components/ui/widgets/zoomSlider.svg.vue b/client/src/components/ui/widgets/zoomSlider.svg.vue index c659f15..be60460 100644 --- a/client/src/components/ui/widgets/zoomSlider.svg.vue +++ b/client/src/components/ui/widgets/zoomSlider.svg.vue @@ -1,93 +1,89 @@ - diff --git a/client/src/composables/tween.ts b/client/src/composables/tween.ts index c6ba4dc..db41889 100644 --- a/client/src/composables/tween.ts +++ b/client/src/composables/tween.ts @@ -6,43 +6,44 @@ import { useClock } from '../stores/clock' // https://9to5answer.com/ease-in-and-ease-out-animation-formula export function useTween( - fromValue:number=0, - toValue:number=1, - duration:number=2000, - easing:number=0, - loop:boolean=false, - pingpong:boolean=false -):number { - - const clock = useClock() - const startTime = clock.gameTime - - const currentValue = ref(0) - - function percentage() { - if (duration <=0) return 1 - - const elapsed = (clock.gameTime - startTime) - let percentage = (elapsed / duration) - if (loop) { - percentage = percentage % 1 - } else if (pingpong) { - if (Math.floor(percentage) % 2 == 0) { //even - percentage = percentage % 1 - } else { //odd - percentage = (1 - percentage % 1) - } - } else { - percentage = Math.min(1, percentage) - } - return percentage - } - - watchEffect(() => { - const progress = (toValue - fromValue) * percentage() - const value = fromValue + progress - currentValue.value = (Math.round(value * 1000) / 1000) - }) - - return currentValue -} \ No newline at end of file + fromValue: number = 0, + toValue: number = 1, + duration: number = 2000, + easing: number = 0, + loop: boolean = false, + pingpong: boolean = false, +): number { + const clock = useClock() + const startTime = clock.gameTime + + const currentValue = ref(0) + + function percentage() { + if (duration <= 0) return 1 + + const elapsed = clock.gameTime - startTime + let percentage = elapsed / duration + if (loop) { + percentage = percentage % 1 + } else if (pingpong) { + if (Math.floor(percentage) % 2 == 0) { + //even + percentage = percentage % 1 + } else { + //odd + percentage = 1 - (percentage % 1) + } + } else { + percentage = Math.min(1, percentage) + } + return percentage + } + + watchEffect(() => { + const progress = (toValue - fromValue) * percentage() + const value = fromValue + progress + currentValue.value = Math.round(value * 1000) / 1000 + }) + + return currentValue +} diff --git a/client/src/env.d.ts b/client/src/env.d.ts index aafef95..db94035 100644 --- a/client/src/env.d.ts +++ b/client/src/env.d.ts @@ -1,8 +1,8 @@ /// declare module '*.vue' { - import type { DefineComponent } from 'vue' - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types - const component: DefineComponent<{}, {}, any> - export default component + import type { DefineComponent } from 'vue' + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> + export default component } diff --git a/client/src/layouts/htmlContainer.vue b/client/src/layouts/htmlContainer.vue index ef72afb..fa95dd9 100644 --- a/client/src/layouts/htmlContainer.vue +++ b/client/src/layouts/htmlContainer.vue @@ -1,27 +1,25 @@ - - diff --git a/client/src/layouts/svgContainer.vue b/client/src/layouts/svgContainer.vue index af77043..21e078e 100644 --- a/client/src/layouts/svgContainer.vue +++ b/client/src/layouts/svgContainer.vue @@ -5,70 +5,65 @@ import { useScreen } from '../stores/screen' - diff --git a/client/src/models/sprite.ts b/client/src/models/sprite.ts index 0103b0b..b5a4b44 100644 --- a/client/src/models/sprite.ts +++ b/client/src/models/sprite.ts @@ -1,151 +1,148 @@ export interface Orbit { - parent: number, - position: number, - distance: number, - velocity: number, - period: number, - offset: number, + parent: number + position: number + distance: number + velocity: number + period: number + offset: number } export interface Coords { - x: number, - y: number + x: number + y: number } export interface Luminance { - rotation: number, - intensity: number + rotation: number + intensity: number } export class Sprite { - - planetClassNames= [ - 'Terrestrial', //0 - 'Rocky', //1 - 'Oceanic', //2 - 'Desert', //3 - 'Ice', //4 - 'Volcanic', //5 - 'Gaseous', //6 - 'Ferrous', //7 - 'Lava', //8 - 'Swamp', //9 - ] - - refid:string = '' - - index:number = 0 - - type:string = '' - - orbit:Orbit = { - parent: 0, - position: 0, - distance: 0, - velocity: 0, - period: 0, - offset: 0, - } - - position:Coords = { - x: 0, - y: 0 - } - - rotation:number = 0 - - luminance:Luminance = { - rotation: 0, - intensity: 0.5 - } - - meta:any = { - size: 1 - } - - owner:string = '' - - constructor(payload:any) { - if (payload.hasOwnProperty('owner')) { - this.owner = payload['owner'] - console.log('onwer: ' + this.owner) - } - if (payload.hasOwnProperty('type')) { - this.type = payload['type'] - this.meta.id = payload['id'] - this.meta.name = payload['name'] - this.orbit.offset = payload['id'] % 1000 - //note that an id for a planet will be the same as its moons and station - this.refid = payload['id'] + this.type + payload['type'] - switch (this.type) { - case 'Star': { - this.meta.size = payload['size'] - break - } - case 'Planet': { - this.meta.size = payload['size'] - this.meta.class = payload['class'] - this.meta.className = this.planetClassNames[payload['class']] - this.meta.rings = payload['rings'] - this.orbit.position = payload['orbit'] - this.orbit.velocity = payload['velocity'] - break - } - case 'Moon': { - this.meta.size = payload['size'] - this.meta.class = payload['class'] - this.orbit.parent = payload['parent'] - this.orbit.position = payload['orbit'] - this.orbit.velocity = payload['velocity'] - this.refid += this.orbit.position = payload['orbit'] - break - } - case 'Station': { - this.meta.size = payload['size'] - this.meta.inventory = payload['inventory'] - this.meta.price = payload['price'] - this.orbit.parent = payload['parent'] - break - } - case 'Ship': { - this.orbit.parent = payload['parent'] - break - } - } - } - } - - getPortType () { - let type = '' - if (this.meta.inventory.equipment > 0) { - type += 'S' - } else if (this.meta.inventory.equipment < 0) { - type += 'B' - } else { - type += '-' - } - - if (this.meta.inventory.fuel > 0) { - type += 'S' - } else if (this.meta.inventory.fuel < 0) { - type += 'B' - } else { - type += '-' - } - - if (this.meta.inventory.organics > 0) { - type += 'S' - } else if (this.meta.inventory.organics < 0) { - type += 'B' - } else { - type += '-' - } - return type - } - - setIndex(index:number) { - this.index = index - } - - -} \ No newline at end of file + planetClassNames = [ + 'Terrestrial', //0 + 'Rocky', //1 + 'Oceanic', //2 + 'Desert', //3 + 'Ice', //4 + 'Volcanic', //5 + 'Gaseous', //6 + 'Ferrous', //7 + 'Lava', //8 + 'Swamp', //9 + ] + + refid: string = '' + + index: number = 0 + + type: string = '' + + orbit: Orbit = { + parent: 0, + position: 0, + distance: 0, + velocity: 0, + period: 0, + offset: 0, + } + + position: Coords = { + x: 0, + y: 0, + } + + rotation: number = 0 + + luminance: Luminance = { + rotation: 0, + intensity: 0.5, + } + + meta: any = { + size: 1, + } + + owner: string = '' + + constructor(payload: any) { + if (payload.hasOwnProperty('owner')) { + this.owner = payload['owner'] + console.log('onwer: ' + this.owner) + } + if (payload.hasOwnProperty('type')) { + this.type = payload['type'] + this.meta.id = payload['id'] + this.meta.name = payload['name'] + this.orbit.offset = payload['id'] % 1000 + //note that an id for a planet will be the same as its moons and station + this.refid = payload['id'] + this.type + payload['type'] + switch (this.type) { + case 'Star': { + this.meta.size = payload['size'] + break + } + case 'Planet': { + this.meta.size = payload['size'] + this.meta.class = payload['class'] + this.meta.className = this.planetClassNames[payload['class']] + this.meta.rings = payload['rings'] + this.orbit.position = payload['orbit'] + this.orbit.velocity = payload['velocity'] + break + } + case 'Moon': { + this.meta.size = payload['size'] + this.meta.class = payload['class'] + this.orbit.parent = payload['parent'] + this.orbit.position = payload['orbit'] + this.orbit.velocity = payload['velocity'] + this.refid += this.orbit.position = payload['orbit'] + break + } + case 'Station': { + this.meta.size = payload['size'] + this.meta.inventory = payload['inventory'] + this.meta.price = payload['price'] + this.orbit.parent = payload['parent'] + break + } + case 'Ship': { + this.orbit.parent = payload['parent'] + break + } + } + } + } + + getPortType() { + let type = '' + if (this.meta.inventory.equipment > 0) { + type += 'S' + } else if (this.meta.inventory.equipment < 0) { + type += 'B' + } else { + type += '-' + } + + if (this.meta.inventory.fuel > 0) { + type += 'S' + } else if (this.meta.inventory.fuel < 0) { + type += 'B' + } else { + type += '-' + } + + if (this.meta.inventory.organics > 0) { + type += 'S' + } else if (this.meta.inventory.organics < 0) { + type += 'B' + } else { + type += '-' + } + return type + } + + setIndex(index: number) { + this.index = index + } +} diff --git a/client/src/stores/avatar.ts b/client/src/stores/avatar.ts index f2b8223..9f17979 100644 --- a/client/src/stores/avatar.ts +++ b/client/src/stores/avatar.ts @@ -1,162 +1,131 @@ import { defineStore } from 'pinia' -import { useEVM } from "./evm" -import networkDeployments from "../../libraries/galactic/networkDeployments" +import { useEVM } from './evm' +import networkDeployments from '../../libraries/galactic/networkDeployments' import AvatarArtifact from '../../../evm/contract-artifacts/AvatarControls.json' import { useContract } from './composables/contract' //todo store data in chain specific storage export const useAvatar = defineStore('avatar', { - state: () => { - return { - contract: useContract('AvatarControls', AvatarArtifact.abi), - evm: useEVM() as any, - isLoaded: false, - isLoading: false, - - chainstate: { - haveAvatar: false as boolean, - - avatarsById: [] as string[], - avatarsByAddress: [] as string[], - - myAvatarId: null, - myAvatarName: null, - - avatarCount: null as number | null, - }, - } - }, - getters: { - avatarContractAddress():string { - if (this.evm.isSuppportedNetwork) { - return networkDeployments[this.evm.chainId]['AvatarControls'] - } - return '' - }, - isConnected():boolean { - return this.contract.isConnected - }, - playerHasAvatar():boolean { - return this.chainstate.haveAvatar - }, - player():object { - return { - registered: this.chainstate.haveAvatar, - name: this.chainstate.myAvatarName, - address: this.evm.signerAddress, - id: this.chainstate.myAvatarId - } - }, - namesById():string[] { - return this.chainstate.avatarsById - }, - namesByAddress():string[] { - return this.chainstate.avatarsByAddress - }, - }, - actions: { - - //controls - async createAvatar( - name:string, - callbackSuccess:Function = ()=>{}, - callbackFailed:Function = ()=>{}, - callbackRejected:Function = ()=>{}, - ) { - this.contract.call( - 'createAvatar', - [name], - callbackSuccess, - callbackFailed, - callbackRejected - ) - }, - - //setters (from network) - async setAll() { - if (this.isLoading) { - return - } - this.isLoading = true - await Promise.all([ - this.setAvatarCount(), - this.setMyAvatarName(), - this.setMyAvatarId(), - this.setHaveAvatar() - ]) - this.isLoaded = true - this.isLoading = false - }, - - async setAvatarsByAddresses(addresses:string[number]) { - for(let n:number = 0; n < addresses.length; n++) { - await this.setAvatarByAddress[addresses[n]] - } - }, - - async setAvatarByAddress(address:string) { - - this.chainstate.avatarsByAddress[address] = await - this.getAvatarNameByAddress(address) - }, - - async setAvatarById(id:string) { - this.chainstate.avatarsById[id] = await - this.getAvatarNameById(id) - }, - - async setAvatarCount() { - this.chainstate.avatarCount = await this.contract.read( - 'getAvatarCount' - ) - }, - async setMyAvatarName() { - this.chainstate.myAvatarName = await this.contract.read( - 'getMyAvatarName' - ) - }, - async setMyAvatarId(){ - this.chainstate.myAvatarId = await this.contract.read( - 'getMyAvatarId' - ) - }, - async setHaveAvatar(){ - this.chainstate.haveAvatar = await this.contract.read( - 'haveAvatar' - ) - }, - - //getters (return a value directly) - - async getAvatarIdByAddress(address:string) { - const avatar = await this.contract.read( - 'getAvatarIdByAddress', - [address] - ) - return avatar - }, - async getAvatarNameById(id:string) { - const avatar = await this.contract.read( - 'getAvatarNameById', - [id] - ) - return avatar - }, - async getAvatarNameByAddress(address:string) { - const avatarName = await this.contract.read( - 'getAvatarNameByAddress', - [address] - ) - return avatarName - }, - async hasAvatar(address:string) { - const hasAvatar = await this.contract.read( - 'hasAvatar', - [address] - ) - return hasAvatar - }, - - } + state: () => { + return { + contract: useContract('AvatarControls', AvatarArtifact.abi), + evm: useEVM() as any, + isLoaded: false, + isLoading: false, + + chainstate: { + haveAvatar: false as boolean, + + avatarsById: [] as string[], + avatarsByAddress: [] as string[], + + myAvatarId: null, + myAvatarName: null, + + avatarCount: null as number | null, + }, + } + }, + getters: { + avatarContractAddress(): string { + if (this.evm.isSuppportedNetwork) { + return networkDeployments[this.evm.chainId]['AvatarControls'] + } + return '' + }, + isConnected(): boolean { + return this.contract.isConnected + }, + playerHasAvatar(): boolean { + return this.chainstate.haveAvatar + }, + player(): object { + return { + registered: this.chainstate.haveAvatar, + name: this.chainstate.myAvatarName, + address: this.evm.signerAddress, + id: this.chainstate.myAvatarId, + } + }, + namesById(): string[] { + return this.chainstate.avatarsById + }, + namesByAddress(): string[] { + return this.chainstate.avatarsByAddress + }, + }, + actions: { + //controls + async createAvatar( + name: string, + callbackSuccess: Function = () => {}, + callbackFailed: Function = () => {}, + callbackRejected: Function = () => {}, + ) { + this.contract.call('createAvatar', [name], callbackSuccess, callbackFailed, callbackRejected) + }, + + //setters (from network) + async setAll() { + if (this.isLoading) { + return + } + this.isLoading = true + await Promise.all([ + this.setAvatarCount(), + this.setMyAvatarName(), + this.setMyAvatarId(), + this.setHaveAvatar(), + ]) + this.isLoaded = true + this.isLoading = false + }, + + async setAvatarsByAddresses(addresses: string[number]) { + for (let n: number = 0; n < addresses.length; n++) { + await this.setAvatarByAddress[addresses[n]] + } + }, + + async setAvatarByAddress(address: string) { + this.chainstate.avatarsByAddress[address] = await this.getAvatarNameByAddress(address) + }, + + async setAvatarById(id: string) { + this.chainstate.avatarsById[id] = await this.getAvatarNameById(id) + }, + + async setAvatarCount() { + this.chainstate.avatarCount = await this.contract.read('getAvatarCount') + }, + async setMyAvatarName() { + this.chainstate.myAvatarName = await this.contract.read('getMyAvatarName') + }, + async setMyAvatarId() { + this.chainstate.myAvatarId = await this.contract.read('getMyAvatarId') + }, + async setHaveAvatar() { + this.chainstate.haveAvatar = await this.contract.read('haveAvatar') + }, + + //getters (return a value directly) + + async getAvatarIdByAddress(address: string) { + const avatar = await this.contract.read('getAvatarIdByAddress', [address]) + return avatar + }, + async getAvatarNameById(id: string) { + const avatar = await this.contract.read('getAvatarNameById', [id]) + return avatar + }, + async getAvatarNameByAddress(address: string) { + const avatarName = await this.contract.read('getAvatarNameByAddress', [address]) + return avatarName + }, + async hasAvatar(address: string) { + const hasAvatar = await this.contract.read('hasAvatar', [address]) + return hasAvatar + }, + }, }) diff --git a/client/src/stores/clock.ts b/client/src/stores/clock.ts index 30343f0..afb6a9b 100644 --- a/client/src/stores/clock.ts +++ b/client/src/stores/clock.ts @@ -9,64 +9,64 @@ import { defineStore } from 'pinia' *******************************/ export const useClock = defineStore('clock', { - state: () => ({ - gameClock: Date.now(), - updateFrequency: 24, - //40.2 ~= 24fpx - //33.6 = 30fps - //16.6 = 60fps - isRunning: false, - lastUpdate: Date.now(), - fps: '0.0' as string, - frameTimes: [] as number[], - updatingClock: false - }), - actions: { - async update() { - if (this.isRunning) { - //requestAnimationFrame restricts FPS to browser refresh rate - setTimeout(() => requestAnimationFrame(this.update), this.updateFrequency) - if (!this.updatingClock) { - this.updatingClock = true - const now = Date.now() - const elapsedTime = now - this.lastUpdate - this.gameClock = now - this.lastUpdate = now + state: () => ({ + gameClock: Date.now(), + updateFrequency: 24, + //40.2 ~= 24fpx + //33.6 = 30fps + //16.6 = 60fps + isRunning: false, + lastUpdate: Date.now(), + fps: '0.0' as string, + frameTimes: [] as number[], + updatingClock: false, + }), + actions: { + async update() { + if (this.isRunning) { + //requestAnimationFrame restricts FPS to browser refresh rate + setTimeout(() => requestAnimationFrame(this.update), this.updateFrequency) + if (!this.updatingClock) { + this.updatingClock = true + const now = Date.now() + const elapsedTime = now - this.lastUpdate + this.gameClock = now + this.lastUpdate = now - //calcualte FPS - if (this.frameTimes.length >= 100) this.frameTimes.shift() - this.frameTimes.push(elapsedTime) - const totaltime = this.frameTimes.reduce((x, y) => {return x+y}, 0) - const totalframes = this.frameTimes.length - this.fps = ((totalframes / totaltime) * 1000).toFixed(1) - this.updatingClock = false - } - - - } - }, - setFrequency(newFrequency:number) { - this.updateFrequency = newFrequency - }, - pause() { - this.isRunning = false - }, - play() { - if (!this.isRunning) { - //dismiss time while paused - this.lastUpdate = performance.now() - //resetart updates - this.isRunning = true - this.update() - } - } - }, - getters: { - gameTime():number { - return Math.round(this.gameClock) - }, - gameTimeInSeconds():number { - return Math.round(this.gameClock / 1000) - } - } + //calcualte FPS + if (this.frameTimes.length >= 100) this.frameTimes.shift() + this.frameTimes.push(elapsedTime) + const totaltime = this.frameTimes.reduce((x, y) => { + return x + y + }, 0) + const totalframes = this.frameTimes.length + this.fps = ((totalframes / totaltime) * 1000).toFixed(1) + this.updatingClock = false + } + } + }, + setFrequency(newFrequency: number) { + this.updateFrequency = newFrequency + }, + pause() { + this.isRunning = false + }, + play() { + if (!this.isRunning) { + //dismiss time while paused + this.lastUpdate = performance.now() + //resetart updates + this.isRunning = true + this.update() + } + }, + }, + getters: { + gameTime(): number { + return Math.round(this.gameClock) + }, + gameTimeInSeconds(): number { + return Math.round(this.gameClock / 1000) + }, + }, }) diff --git a/client/src/stores/composables/contract.ts b/client/src/stores/composables/contract.ts index af733ff..6032e0a 100644 --- a/client/src/stores/composables/contract.ts +++ b/client/src/stores/composables/contract.ts @@ -1,109 +1,101 @@ import { computed, watch, ref } from 'vue' -import { useEVM } from "../evm" +import { useEVM } from '../evm' import { Contract } from 'ethers' -import networkDeployments from "../../../libraries/galactic/networkDeployments" +import networkDeployments from '../../../libraries/galactic/networkDeployments' -export function useContract(contractName:string, contractABI:any) { +export function useContract(contractName: string, contractABI: any) { + const evm = useEVM() + let connectedChainId = ref(0) + let contract: Contract - const evm = useEVM() - let connectedChainId = ref(0) - let contract:Contract + const contractAddress = computed(() => { + if (evm.isSuppportedNetwork) { + return networkDeployments[evm.chainId][contractName] + } + return '' + }) - const contractAddress = computed(() => { - if (evm.isSuppportedNetwork) { - return networkDeployments[evm.chainId][contractName] - } - return '' - }) + const isConnected = computed(() => { + return currentChainId.value == connectedChainId.value && evm.isSuppportedNetwork + }) - const isConnected = computed(() => { - return ((currentChainId.value == connectedChainId.value) && (evm.isSuppportedNetwork)) - }) + const currentChainId = computed(() => evm.chainId) - const currentChainId = computed(() => evm.chainId) + async function connect() { + if (!evm.isSuppportedNetwork) { + return + } + try { + contract = await evm.getContract(contractAddress.value, contractABI) + } catch (e: any) { + console.log(e.message) + return + } + connectedChainId.value = currentChainId.value + console.log(contractName + ' connected') + } - async function connect() { - if (!evm.isSuppportedNetwork) { - return - } - try { - contract = await evm.getContract( - contractAddress.value, - contractABI - ) - } catch (e:any) { - console.log(e.message) - return - } - connectedChainId.value = currentChainId.value - console.log(contractName + ' connected') - } + watch(currentChainId, () => { + if (!isConnected.value && evm.isSuppportedNetwork) { + connect() + } + }) - watch(currentChainId, () => { - if ((!isConnected.value) && (evm.isSuppportedNetwork)) { - connect() - } - }) + //todo: should return package with error codes + async function readContract(contractMethod: string, params: any[] = []) { + if (!isConnected.value) { + return + } + try { + const result = await contract[`${contractMethod}`](...params) + return result + } catch (e: any) { + console.log('Error attempting: ' + contractMethod) + console.log('Error: ', e.message) + } + return null + } - //todo: should return package with error codes - async function readContract(contractMethod:string, params:any[] = []) { - if (!isConnected.value) { - return - } - try { - const result = await contract[`${contractMethod}`](...params) - return result - } catch (e:any) { - console.log('Error attempting: ' + contractMethod) - console.log('Error: ', e.message) - } - return null - } + //todo: should return package with error codes + async function callTransaction( + contractMethod: string, + params: any[], + callbackSuccess: Function = () => {}, + callbackFailed: Function = () => {}, + callbackRejected: Function = () => {}, + ) { + if (!isConnected.value) { + return + } + try { + const transaction = await contract[`${contractMethod}`](...params) + const transactionReceipt = await transaction.wait() + if (transactionReceipt.status !== 1) { + callbackFailed() + alert('error problem thing happened') + } else { + callbackSuccess() + } + } catch (e: any) { + if (e.code == 'ACTION_REJECTED') { + callbackRejected() + console.log('user cancelled') + } else { + callbackFailed() + console.log('Error: ', e) + } + } + } - //todo: should return package with error codes - async function callTransaction( - contractMethod:string, - params:any[], - callbackSuccess:Function = ()=>{}, - callbackFailed:Function = ()=>{}, - callbackRejected:Function = ()=>{}, - ) { - if (!isConnected.value) { - return - } - try { - const transaction = await contract[`${contractMethod}`](...params) - const transactionReceipt = await transaction.wait() - if (transactionReceipt.status !== 1) { - callbackFailed() - alert('error problem thing happened') - } else { - callbackSuccess() - } - } catch (e:any) { - if (e.code == 'ACTION_REJECTED') { - callbackRejected() - console.log('user cancelled') - } else { - callbackFailed() - console.log('Error: ', e) - } - } - } + if (evm.isSuppportedNetwork) { + connect() + } - if (evm.isSuppportedNetwork) { - connect() - } - - return { - read: readContract, - call: callTransaction, - connect: connect, - isConnected: isConnected, - address: contractAddress - } + return { + read: readContract, + call: callTransaction, + connect: connect, + isConnected: isConnected, + address: contractAddress, + } } - - - - diff --git a/client/src/stores/composables/sprites.ts b/client/src/stores/composables/sprites.ts index 09374c7..933d9b0 100644 --- a/client/src/stores/composables/sprites.ts +++ b/client/src/stores/composables/sprites.ts @@ -1,6 +1,5 @@ import { Sprite, Orbit, Coords } from '../../models/sprite' - const maxPlanets = 14 const planetDistance = 500 const planetGap = 480 @@ -12,128 +11,134 @@ const moonGap = 30 const stationDistance = 40 const shipDistance = 12 -export function useSprites(chainData:any) { - - let sprites:Sprite[] = [] - - sprites[0] = new Sprite({ - index: 0, - type: 'Star', - id: chainData.systemData.id, - name: chainData.systemData.name, - size: chainData.systemData.starSize, - owner: chainData.systemData.discoveredBy - }) - - - chainData.localPlanets.forEach((planet:any) => { - - sprites.push(new Sprite({ - type: 'Planet', - id: planet.id, - name: planet.name, - size: planet.size, - class: planet.class, - rings: planet.rings, - orbit: planet.orbit, - velocity: planet.velocity, - owner: planet.owner - })) - - let planetIndex = sprites.length - 1 - sprites[planetIndex].setIndex(planetIndex) - - planet.moons.forEach((moon:any) => { - sprites.push(new Sprite({ - type: 'Moon', - id: planet.id, - name: moon.name, - size: moon.size, - class: moon.class, - parent: planetIndex, - orbit: moon.orbit, - velocity: moon.velocity, - owner: planet.owner - })) - let moonIndex = sprites.length - 1 - sprites[moonIndex].setIndex(moonIndex) - }) - - if (planet.hasPort) { - sprites.push(new Sprite({ - type: 'Station', - id: planet.id, - name: planet.station.name, - size: planet.station.size, - inventory: planet.station.inventory, - price: planet.station.price, - parent: planetIndex, - owner: planet.owner - })) - let stationIndex = sprites.length - 1 - sprites[stationIndex].setIndex(stationIndex) - } - - }) - - chainData.ships.forEach((ship:any) => { - sprites.push(new Sprite({ - type: 'Ship', - id: ship.id, - name: ship.name, - owner: ship.owner, - parent: planetIndexFromId(ship.orbit), - })) - let shipIndex = sprites.length - 1 - sprites[shipIndex].setIndex(shipIndex) - }) - - function planetIndexFromId(id:string) { - let index = 0 - for (let i = 0; i < sprites.length; i++) { - if ((BigInt(sprites[i].meta.id) == BigInt(id)) && - ((sprites[i].type == 'Planet') || (sprites[i].type == 'Star'))) { - index = i - } - } - return index - } - - function setOrbitalData (id:number) { - let sprite = sprites[id] - switch (sprite.type) { - case 'Planet': { - sprite.orbit.distance = sprite.orbit.position * planetGap + planetDistance - sprite.orbit.period = sprite.orbit.velocity / (sprite.orbit.position + 1) + 5 - sprite.luminance.intensity = 0.70 - sprite.orbit.position / maxPlanets * 2 / 3 - break - } - case 'Moon': { - sprite.orbit.distance = sprite.orbit.position * moonGap + moonDistance - sprite.orbit.distance += sprites[sprite.orbit.parent].meta.size * 1.5 - sprite.orbit.period = sprite.orbit.velocity * 4 / (sprite.orbit.position + 1) + 100 - break - } - case 'Station' : { - sprite.orbit.distance = stationDistance + sprites[sprite.orbit.parent].meta.size * 1.5 - sprite.orbit.period = (50 - sprites[sprite.orbit.parent].meta.size) * 10 + 150 + id * 10 - break - } - case 'Ship' : { - if (sprite.orbit.parent == 0) { - sprite.orbit.distance = planetGap / 2 - } else { - sprite.orbit.distance = shipDistance + sprites[sprite.orbit.parent].meta.size * 1.5 - } - sprite.orbit.period = 1000 - break - } - } - } - - for (let i=0; i { + sprites.push( + new Sprite({ + type: 'Planet', + id: planet.id, + name: planet.name, + size: planet.size, + class: planet.class, + rings: planet.rings, + orbit: planet.orbit, + velocity: planet.velocity, + owner: planet.owner, + }), + ) + + let planetIndex = sprites.length - 1 + sprites[planetIndex].setIndex(planetIndex) + + planet.moons.forEach((moon: any) => { + sprites.push( + new Sprite({ + type: 'Moon', + id: planet.id, + name: moon.name, + size: moon.size, + class: moon.class, + parent: planetIndex, + orbit: moon.orbit, + velocity: moon.velocity, + owner: planet.owner, + }), + ) + let moonIndex = sprites.length - 1 + sprites[moonIndex].setIndex(moonIndex) + }) + + if (planet.hasPort) { + sprites.push( + new Sprite({ + type: 'Station', + id: planet.id, + name: planet.station.name, + size: planet.station.size, + inventory: planet.station.inventory, + price: planet.station.price, + parent: planetIndex, + owner: planet.owner, + }), + ) + let stationIndex = sprites.length - 1 + sprites[stationIndex].setIndex(stationIndex) + } + }) + + chainData.ships.forEach((ship: any) => { + sprites.push( + new Sprite({ + type: 'Ship', + id: ship.id, + name: ship.name, + owner: ship.owner, + parent: planetIndexFromId(ship.orbit), + }), + ) + let shipIndex = sprites.length - 1 + sprites[shipIndex].setIndex(shipIndex) + }) + + function planetIndexFromId(id: string) { + let index = 0 + for (let i = 0; i < sprites.length; i++) { + if ( + BigInt(sprites[i].meta.id) == BigInt(id) && + (sprites[i].type == 'Planet' || sprites[i].type == 'Star') + ) { + index = i + } + } + return index + } + + function setOrbitalData(id: number) { + let sprite = sprites[id] + switch (sprite.type) { + case 'Planet': { + sprite.orbit.distance = sprite.orbit.position * planetGap + planetDistance + sprite.orbit.period = sprite.orbit.velocity / (sprite.orbit.position + 1) + 5 + sprite.luminance.intensity = 0.7 - ((sprite.orbit.position / maxPlanets) * 2) / 3 + break + } + case 'Moon': { + sprite.orbit.distance = sprite.orbit.position * moonGap + moonDistance + sprite.orbit.distance += sprites[sprite.orbit.parent].meta.size * 1.5 + sprite.orbit.period = (sprite.orbit.velocity * 4) / (sprite.orbit.position + 1) + 100 + break + } + case 'Station': { + sprite.orbit.distance = stationDistance + sprites[sprite.orbit.parent].meta.size * 1.5 + sprite.orbit.period = (50 - sprites[sprite.orbit.parent].meta.size) * 10 + 150 + id * 10 + break + } + case 'Ship': { + if (sprite.orbit.parent == 0) { + sprite.orbit.distance = planetGap / 2 + } else { + sprite.orbit.distance = shipDistance + sprites[sprite.orbit.parent].meta.size * 1.5 + } + sprite.orbit.period = 1000 + break + } + } + } + + for (let i = 0; i < sprites.length; i++) { + setOrbitalData(i) + } + + return sprites +} diff --git a/client/src/stores/delete-me-gamestate.ts b/client/src/stores/delete-me-gamestate.ts index cab4d54..98b3985 100644 --- a/client/src/stores/delete-me-gamestate.ts +++ b/client/src/stores/delete-me-gamestate.ts @@ -4,34 +4,32 @@ import { useGalaxy } from '../stores/galaxy' import { useEVM } from '../stores/evm' export const useWorld = defineStore('gamestate', { - state: () => { - return { - avatar: useAvatar(), - galaxy: useGalaxy(), - evm: useEVM(), - updating: false, - lastBlockLoaded: 0, - } - }, - getters: { - isConnected():boolean { - return (this.avatar.isConnected && this.galaxy.isConnected) - }, - unloadedBlock():boolean { - return (this.lastBlockLoaded != this.evm.block) - } - }, - actions: { - async loadFromNetwork() { - let currentBlock = this.evm.block - await Promise.all([ - //this.avatar.getAll(), - this.galaxy.getAll() - ]) - await this.avatar.setAvatarsByAddresses( - this.galaxy.knownAddresses - ) - this.lastBlockLoaded = currentBlock - } + state: () => { + return { + avatar: useAvatar(), + galaxy: useGalaxy(), + evm: useEVM(), + updating: false, + lastBlockLoaded: 0, + } + }, + getters: { + isConnected(): boolean { + return this.avatar.isConnected && this.galaxy.isConnected + }, + unloadedBlock(): boolean { + return this.lastBlockLoaded != this.evm.block + }, + }, + actions: { + async loadFromNetwork() { + let currentBlock = this.evm.block + await Promise.all([ + //this.avatar.getAll(), + this.galaxy.getAll(), + ]) + await this.avatar.setAvatarsByAddresses(this.galaxy.knownAddresses) + this.lastBlockLoaded = currentBlock + }, + }, }) - diff --git a/client/src/stores/evm.ts b/client/src/stores/evm.ts index f5009e9..f9f8146 100644 --- a/client/src/stores/evm.ts +++ b/client/src/stores/evm.ts @@ -1,180 +1,176 @@ import { defineStore } from 'pinia' -import { ethers } from "ethers" -import deployments from "../../libraries/galactic/networkDeployments" -import networks from "../../libraries/galactic/networkDetails" +import { ethers } from 'ethers' +import deployments from '../../libraries/galactic/networkDeployments' +import networks from '../../libraries/galactic/networkDetails' export const useEVM = defineStore('wallet', { - state: () => { - return { - isConnected: false, - hasWallet: false, - signer: null as ethers.Signer | null, - signerAddress: '' as string, - provider: null as ethers.providers.Web3Provider | null, - chain: null as any, - chainId: '' as string, - block: null, - switchingNetwork: false, - deployments: deployments, - balance: 0.0 as number - } - }, - getters: { - chainName():string { - if (networks.hasOwnProperty(this.chainId)) { - return networks[this.chainId].name - } - return 'unknown network' - }, - isSuppportedNetwork():boolean { - return deployments.hasOwnProperty(this.chainId) - }, - shortSigner():string { - const length = this.signerAddress.length - if (length >= 8) { - return this.signerAddress.substring(0, 5) + - '...' + - this.signerAddress.substring(length - 3) - } - return this.signerAddress - }, - currencyData():object { - if (networks.hasOwnProperty(this.chainId)) { - return networks[this.chainId].currency - } - return { - name: '', - symbol: '', - decimals: 18 - } - }, - facuets():string { - if (networks.hasOwnProperty(this.chainId)) { - return networks[this.chainId].faucets - } - return [] - }, - explorer():string { - if (networks.hasOwnProperty(this.chainId)) { - return networks[this.chainId].explorer - } - return '' - } - }, - actions: { - - async connect() { - - await this.init() - - try { - await this.provider.send("eth_requestAccounts", []) - } catch (e:any) { - console.log(e.message) - return - } - - try { - await this.getSigner() - } catch (e:any) { - console.log(e.message) - return - } - - await this.getChainData() - await this.getBalance() - - this.isConnected = true - }, - - async init() { - try { - this.provider = new ethers.providers.Web3Provider(window.ethereum, "any") - } catch (e:any) { - console.log(e.message) - return - } - this.hasWallet = true - }, - - async getBalance () { - let balance = await this.provider.getBalance(this.signerAddress) - balance = ethers.utils.formatEther(balance) - this.balance = Math.round(balance * 1e4) / 1e4 - }, - - async getChainData() { - try { - this.chain = await this.provider.getNetwork() - } catch (e:any) { - cosnole.log(e.message) - return - } - this.chainId = this.chain.chainId - }, - - async getSigner() { - try { - this.signer = await this.provider.getSigner() - this.signerAddress = await this.signer.getAddress() - console.log('signer is ', this.signerAddress) - } catch (e:any) { - console.log(e.message) - return - } - this.applyEvents() - console.log('Signer Address: ', this.signerAddress) - }, - - applyEvents () { - window.ethereum.removeAllListeners() - window.ethereum.on('accountsChanged', async () => { - console.log('account changed') - this.signer = null - this.signerAddress = null - this.isConnected = false - this.getSigner() - //todo: be more graceful - window.location.reload() - }) - window.ethereum.on('connected', async () => { - console.log('account re-connected') - this.isConnected = true - this.getSigner() - }) - window.ethereum.on('disconnect', async () => { - console.log('account disconnected') - if (!this.switchingNetwork) { - this.signer = null - this.signerAddress = '' - this.isConnected = false - //todo: be more graceful - window.location.reload() - } - }) - window.ethereum.on('chainChanged', async () => { - console.log('chain changed A') - this.connect() - }) - - this.provider.removeAllListeners() - this.provider.on("block", (blockNumber:Number) => { - this.block = blockNumber - }) - - this.switchingNetwork = false - }, - - async switchNetwork(chainId:String) { - this.switchingNetwork = true - try { - await window.ethereum.request({ - method: 'wallet_switchEthereumChain', - params: [{ chainId: chainId }] - }); - } catch (e) { - console.log('Error requesting network.', e.message) - /* + state: () => { + return { + isConnected: false, + hasWallet: false, + signer: null as ethers.Signer | null, + signerAddress: '' as string, + provider: null as ethers.providers.Web3Provider | null, + chain: null as any, + chainId: '' as string, + block: null, + switchingNetwork: false, + deployments: deployments, + balance: 0.0 as number, + } + }, + getters: { + chainName(): string { + if (networks.hasOwnProperty(this.chainId)) { + return networks[this.chainId].name + } + return 'unknown network' + }, + isSuppportedNetwork(): boolean { + return deployments.hasOwnProperty(this.chainId) + }, + shortSigner(): string { + const length = this.signerAddress.length + if (length >= 8) { + return this.signerAddress.substring(0, 5) + '...' + this.signerAddress.substring(length - 3) + } + return this.signerAddress + }, + currencyData(): object { + if (networks.hasOwnProperty(this.chainId)) { + return networks[this.chainId].currency + } + return { + name: '', + symbol: '', + decimals: 18, + } + }, + facuets(): string { + if (networks.hasOwnProperty(this.chainId)) { + return networks[this.chainId].faucets + } + return [] + }, + explorer(): string { + if (networks.hasOwnProperty(this.chainId)) { + return networks[this.chainId].explorer + } + return '' + }, + }, + actions: { + async connect() { + await this.init() + + try { + await this.provider.send('eth_requestAccounts', []) + } catch (e: any) { + console.log(e.message) + return + } + + try { + await this.getSigner() + } catch (e: any) { + console.log(e.message) + return + } + + await this.getChainData() + await this.getBalance() + + this.isConnected = true + }, + + async init() { + try { + this.provider = new ethers.providers.Web3Provider(window.ethereum, 'any') + } catch (e: any) { + console.log(e.message) + return + } + this.hasWallet = true + }, + + async getBalance() { + let balance = await this.provider.getBalance(this.signerAddress) + balance = ethers.utils.formatEther(balance) + this.balance = Math.round(balance * 1e4) / 1e4 + }, + + async getChainData() { + try { + this.chain = await this.provider.getNetwork() + } catch (e: any) { + cosnole.log(e.message) + return + } + this.chainId = this.chain.chainId + }, + + async getSigner() { + try { + this.signer = await this.provider.getSigner() + this.signerAddress = await this.signer.getAddress() + console.log('signer is ', this.signerAddress) + } catch (e: any) { + console.log(e.message) + return + } + this.applyEvents() + console.log('Signer Address: ', this.signerAddress) + }, + + applyEvents() { + window.ethereum.removeAllListeners() + window.ethereum.on('accountsChanged', async () => { + console.log('account changed') + this.signer = null + this.signerAddress = null + this.isConnected = false + this.getSigner() + //todo: be more graceful + window.location.reload() + }) + window.ethereum.on('connected', async () => { + console.log('account re-connected') + this.isConnected = true + this.getSigner() + }) + window.ethereum.on('disconnect', async () => { + console.log('account disconnected') + if (!this.switchingNetwork) { + this.signer = null + this.signerAddress = '' + this.isConnected = false + //todo: be more graceful + window.location.reload() + } + }) + window.ethereum.on('chainChanged', async () => { + console.log('chain changed A') + this.connect() + }) + + this.provider.removeAllListeners() + this.provider.on('block', (blockNumber: Number) => { + this.block = blockNumber + }) + + this.switchingNetwork = false + }, + + async switchNetwork(chainId: String) { + this.switchingNetwork = true + try { + await window.ethereum.request({ + method: 'wallet_switchEthereumChain', + params: [{ chainId: chainId }], + }) + } catch (e) { + console.log('Error requesting network.', e.message) + /* refactor to add any chain if (confirm('Polygon Mainnet was not found. Would you like us to try to add it?')) { @@ -200,13 +196,18 @@ export const useEVM = defineStore('wallet', { } } */ - } - setTimeout(function(){ this.switchingNetwork = false }.bind(this), 500) - }, - - async getContract(address:string, abi:any) { - const contract = await new ethers.Contract(address, abi, this.signer) - return contract - } - } + } + setTimeout( + function () { + this.switchingNetwork = false + }.bind(this), + 500, + ) + }, + + async getContract(address: string, abi: any) { + const contract = await new ethers.Contract(address, abi, this.signer) + return contract + }, + }, }) diff --git a/client/src/stores/galaxy.ts b/client/src/stores/galaxy.ts index 4c2510d..fc3f815 100644 --- a/client/src/stores/galaxy.ts +++ b/client/src/stores/galaxy.ts @@ -6,420 +6,351 @@ import { useContract } from './composables/contract' //todo store data in chain specific storage export const useGalaxy = defineStore('galaxy', { - state: () => { - return { - contract: useContract('Galaxy', GalaxyArtifact.abi), - isLoaded: false, - isLoading: false, - knownAddresses: [], - chainstate: { - systemId: 0, - creditBalance: 0, - systemCount: 0, - shipLocation: 0, - ship: {} as Ship, - systemData: {} as System, - ships: [] as any[], - planets: [] as any[], - localPlanets: [] as Planet[] - } - } - }, - getters: { - galaxyContractAddress():string { - return this.contract.address - }, - isConnected():boolean { - return this.contract.isConnected - }, - haveShip():boolean { - if (this.chainstate.ship.hasOwnProperty('id')) { - if (BigInt(this.chainstate.ship.id) > BigInt(0)) { - return true - } - } - return false - } - }, - actions: { - async connect() { - await this.contract.connect() - }, + state: () => { + return { + contract: useContract('Galaxy', GalaxyArtifact.abi), + isLoaded: false, + isLoading: false, + knownAddresses: [], + chainstate: { + systemId: 0, + creditBalance: 0, + systemCount: 0, + shipLocation: 0, + ship: {} as Ship, + systemData: {} as System, + ships: [] as any[], + planets: [] as any[], + localPlanets: [] as Planet[], + }, + } + }, + getters: { + galaxyContractAddress(): string { + return this.contract.address + }, + isConnected(): boolean { + return this.contract.isConnected + }, + haveShip(): boolean { + if (this.chainstate.ship.hasOwnProperty('id')) { + if (BigInt(this.chainstate.ship.id) > BigInt(0)) { + return true + } + } + return false + }, + }, + actions: { + async connect() { + await this.contract.connect() + }, - //views + //views - async getAll() { - if (this.isLoading) { - return - } - this.isLoading = true - await Promise.all([ - this.getSystemCount(), - this.getPlayerSystemData(), - this.getMyBalance(), - this.getMyShipLocation(), - this.getMyShipId(), - this.getMyShip(), - ]) - await Promise.all([ - this.getPlayerSystemPlanets(), - this.loadShipLogs() - ]) - this.isLoaded = true - this.isLoading = false - }, - async getPlayerSystemData() { - [ - this.chainstate.systemData.id, - this.chainstate.systemData.name, - this.chainstate.systemData.starSize, - this.chainstate.systemData.birthtime, - this.chainstate.systemData.discoveredBy, - this.chainstate.systemData.neighbors, - this.chainstate.systemData.planets, - this.chainstate.systemData.shipLogs - ] = await this.contract.read( - 'getPlayerSystemData' - ) - this.knownAddresses.push(this.chainstate.systemData.discoveredBy) - }, - async loadShipLogs() { - this.chainstate.systemData.ships = [] + async getAll() { + if (this.isLoading) { + return + } + this.isLoading = true + await Promise.all([ + this.getSystemCount(), + this.getPlayerSystemData(), + this.getMyBalance(), + this.getMyShipLocation(), + this.getMyShipId(), + this.getMyShip(), + ]) + await Promise.all([this.getPlayerSystemPlanets(), this.loadShipLogs()]) + this.isLoaded = true + this.isLoading = false + }, + async getPlayerSystemData() { + ;[ + this.chainstate.systemData.id, + this.chainstate.systemData.name, + this.chainstate.systemData.starSize, + this.chainstate.systemData.birthtime, + this.chainstate.systemData.discoveredBy, + this.chainstate.systemData.neighbors, + this.chainstate.systemData.planets, + this.chainstate.systemData.shipLogs, + ] = await this.contract.read('getPlayerSystemData') + this.knownAddresses.push(this.chainstate.systemData.discoveredBy) + }, + async loadShipLogs() { + this.chainstate.systemData.ships = [] - //This is s quick way to remove duplicates - //todo: this is not the best place to do this - let obj={} - this.chainstate.systemData.shipLogs.forEach((x)=>obj[x]=x) - let cleanLog = Object.keys(obj) + //This is s quick way to remove duplicates + //todo: this is not the best place to do this + let obj = {} + this.chainstate.systemData.shipLogs.forEach(x => (obj[x] = x)) + let cleanLog = Object.keys(obj) - console.log('cleaned ' + cleanLog) - let shipData:any[] = await Promise.all( - cleanLog.map( - async (shipId:any, sindex) => { - let ship = null - if (BigInt(shipId) > BigInt(0)) { - let rawData = await this.contract.read( - 'getShip', - [shipId] - ) + console.log('cleaned ' + cleanLog) + let shipData: any[] = await Promise.all( + cleanLog.map(async (shipId: any, sindex) => { + let ship = null + if (BigInt(shipId) > BigInt(0)) { + let rawData = await this.contract.read('getShip', [shipId]) - if (BigInt(rawData[1]) == BigInt(this.chainstate.systemData.id)) { - ship = { - name: rawData[0], - id: shipId, - systemId: rawData[1], - orbit: rawData[2], - owner: rawData[3] , - cargoLimit: 0, - equipment: 0, - fuel: 0, - organics: 0 - } - this.knownAddresses.push(ship.owner) - } - } - return ship - } - ) - ) - this.chainstate.ships = shipData.filter(ship => ship != null) - }, - async getPlayerSystemPlanets() { - let planetData:any[] = await Promise.all( - this.chainstate.systemData.planets.map( - async (planetId:any, pindex) => { - let planet = null - if (BigInt(planetId) > BigInt(0)) { + if (BigInt(rawData[1]) == BigInt(this.chainstate.systemData.id)) { + ship = { + name: rawData[0], + id: shipId, + systemId: rawData[1], + orbit: rawData[2], + owner: rawData[3], + cargoLimit: 0, + equipment: 0, + fuel: 0, + organics: 0, + } + this.knownAddresses.push(ship.owner) + } + } + return ship + }), + ) + this.chainstate.ships = shipData.filter(ship => ship != null) + }, + async getPlayerSystemPlanets() { + let planetData: any[] = await Promise.all( + this.chainstate.systemData.planets.map(async (planetId: any, pindex) => { + let planet = null + if (BigInt(planetId) > BigInt(0)) { + planet = this.mapPlanetObject( + await this.contract.read('getPlanet', [planetId]), + pindex, + planetId, + ) - planet = this.mapPlanetObject( - await this.contract.read( - 'getPlanet', - [planetId] - ), - pindex, - planetId - ) + let moons: any[] = await Promise.all( + planet.hasMoons.map(async (hasMoon: any, mindex) => { + if (hasMoon) { + let moon = null + moon = this.mapMoonObject( + await this.contract.read('getMoon', [planetId, mindex]), + mindex, + ) + return moon + } else { + return null + } + }), + ) - let moons:any[] = await Promise.all( - planet.hasMoons.map( - async (hasMoon:any, mindex) => { - if (hasMoon) { - let moon = null - moon = this.mapMoonObject( - await this.contract.read( - 'getMoon', - [planetId, mindex] - ), - mindex - ) - return moon - } else { - return null - } - } - ) - ) + planet.moons = moons.filter(moon => moon != null) - planet.moons = moons.filter(moon => moon != null) + if (planet.hasPort) { + planet.station = this.mapStationObject(await this.contract.read('getStation', [planetId])) + } + } + return planet + }), + ) + this.chainstate.localPlanets = planetData.filter(planet => planet != null) + }, + async getMyBalance() { + this.chainstate.creditBalance = await this.contract.read('myBalance') + }, + async getShip(shipId: number) { + this.chainstate.ships[shipId] = await this.contract.read('getShip', [shipId]) + }, + async getPlanet(planetId: number) { + this.chainstate.planets[planetId] = await this.contract.read('getPlanet', [planetId]) + }, + async getLocalPlanet(orbitalId: number) { + this.chainstate.localPlanets[orbitalId] = await this.contract.read('getLocalPlanet', [orbitalId]) + }, + async getMoon(planetId: Number, moonId: Number) { + let tempMoon = await this.contract.read('getMoon', [planetId, moonId]) + }, + async getStation(planetId: number) { + let tempStation = await this.contract.read('getStation', [planetId]) + }, + async getSystemCount() { + this.chainstate.systemCount = await this.contract.read('getSystemCount') + }, + async getMyShipLocation() { + this.chainstate.shipLocation = await this.contract.read('getMyShipLocation') + }, + async getMyShipId() { + this.chainstate.ship.id = await this.contract.read('getMyShipId') + }, + async getMyShip() { + ;[ + this.chainstate.ship.name, + this.chainstate.ship.systemId, + this.chainstate.ship.orbit, + this.chainstate.ship.cargoLimit, + this.chainstate.ship.equipment, + this.chainstate.ship.fuel, + this.chainstate.ship.organics, + ] = await this.contract.read('getMyShip') + this.chainstate.ship.owner = '' + }, + async getSystemName(systemId: number) { + let name = await this.contract.read('getSystemName', [systemId]) + return name + }, - if (planet.hasPort) { - planet.station = this.mapStationObject( - await this.contract.read( - 'getStation', - [planetId] - ) - ) - } - } - return planet - } - ) - ) - this.chainstate.localPlanets = planetData.filter(planet => planet != null) - }, - async getMyBalance() { - this.chainstate.creditBalance = await this.contract.read( - 'myBalance' - ) - }, - async getShip(shipId:number) { - this.chainstate.ships[shipId] = await this.contract.read( - 'getShip', - [shipId] - ) - }, - async getPlanet(planetId:number) { - this.chainstate.planets[planetId] = await this.contract.read( - 'getPlanet', - [planetId] - ) - }, - async getLocalPlanet(orbitalId:number) { - this.chainstate.localPlanets[orbitalId] = await this.contract.read( - 'getLocalPlanet', - [orbitalId] - ) - }, - async getMoon(planetId:Number, moonId:Number) { - let tempMoon = await this.contract.read( - 'getMoon', - [planetId, moonId] - ) - }, - async getStation(planetId:number) { - let tempStation = await this.contract.read( - 'getStation', - [planetId] - ) - }, - async getSystemCount() { - this.chainstate.systemCount = await this.contract.read( - 'getSystemCount' - ) - }, - async getMyShipLocation() { - this.chainstate.shipLocation = await this.contract.read( - 'getMyShipLocation' - ) - }, - async getMyShipId() { - this.chainstate.ship.id = await this.contract.read( - 'getMyShipId' - ) - }, - async getMyShip() { - [ - this.chainstate.ship.name, - this.chainstate.ship.systemId, - this.chainstate.ship.orbit, - this.chainstate.ship.cargoLimit, - this.chainstate.ship.equipment, - this.chainstate.ship.fuel, - this.chainstate.ship.organics, - ] = await this.contract.read( - 'getMyShip' - ) - this.chainstate.ship.owner = '' - }, - async getSystemName(systemId:number) { - let name = await this.contract.read( - 'getSystemName', - [systemId] - ) - return name - }, + //controls + async sendChat(message: string) { + this.contract.call('sendChat', [message]) + }, + async renameStar(name: string) { + this.contract.call('renameStar', [name]) + }, + async renameMyShip(name: string) { + this.contract.call('renameMyShip', [name]) + }, + async renamePlanet(id: number, name: string) { + this.contract.call('renamePlanet', [id, name]) + }, + async claimPlanet(planetId: number, planetName: string) { + this.contract.call('claimPlanet', [planetId, planetName]) + }, + async buildStation(planetId: number, stationName: string) { + this.contract.call('buildStation', [planetId, stationName]) + }, + async renameMoon(planetId: number, moonId: number, name: string) { + this.contract.call('renameMoon', [planetId, moonId, name]) + }, + async renameStation(id: number, name: string) { + this.contract.call('renameStation', [id, name]) + }, + async addPortToStation(id: number) { + this.contract.call('addPortToStation', [id]) + }, + async tradeAtPort(planetId: number, equipment: number, fuel: number, organics: number) { + this.contract.call('tradeAtPort', [planetId, equipment, fuel, organics]) + }, + async addHoldsToShip(planetId: number, holds: number) { + this.contract.call('addHoldsToShip', [planetId, holds]) + }, + async moveToSystem(destinationSystemId: number) { + this.contract.call('moveToSystem', [destinationSystemId]) + }, + async launchShip( + name: string, + callbackSuccess: Function = () => {}, + callbackFailed: Function = () => {}, + callbackRejected: Function = () => {}, + ) { + this.contract.call('launchShip', [name], callbackSuccess, callbackFailed, callbackRejected) + }, - //controls - async sendChat(message:string) { - this.contract.call('sendChat', [message]) - }, - async renameStar(name:string) { - this.contract.call('renameStar', [name]) - }, - async renameMyShip(name:string) { - this.contract.call('renameMyShip', [name]) - }, - async renamePlanet(id:number, name:string) { - this.contract.call('renamePlanet', [id, name]) - }, - async claimPlanet(planetId:number, planetName:string) { - this.contract.call('claimPlanet', [planetId, planetName]) - }, - async buildStation(planetId:number, stationName:string) { - this.contract.call('buildStation', [planetId, stationName]) - }, - async renameMoon(planetId:number, moonId:number, name:string) { - this.contract.call('renameMoon', [planetId, moonId, name]) - }, - async renameStation(id:number, name:string) { - this.contract.call('renameStation', [id, name]) - }, - async addPortToStation(id:number) { - this.contract.call('addPortToStation', [id]) - }, - async tradeAtPort(planetId:number,equipment:number,fuel:number,organics:number) { - this.contract.call('tradeAtPort', [planetId, equipment, fuel, organics]) - }, - async addHoldsToShip(planetId:number,holds:number) { - this.contract.call('addHoldsToShip', [planetId, holds]) - }, - async moveToSystem(destinationSystemId:number) { - this.contract.call('moveToSystem', [destinationSystemId]) - }, - async launchShip(name:string, - callbackSuccess:Function = ()=>{}, - callbackFailed:Function = ()=>{}, - callbackRejected:Function = ()=>{}, - ) { - this.contract.call('launchShip', [name], - callbackSuccess, - callbackFailed, - callbackRejected) - }, - - - mapPlanetObject(data:any[], orbit:number, id:string):Planet { - let planet:Planet = { - id: id, - orbit: orbit, - name: data[0], - systemId: data[1], - size: data[2][0], - class: data[2][1], - rings: data[2][2], - velocity: data[2][3], - owner: data[3], - hasMoons: data[4], - hasPort: data[5], - moons: [], - station: {} as Station - } - this.knownAddresses.push(planet.owner) - return planet - }, - mapMoonObject(data:any[], orbit:number):Moon { - let moon:Moon = { - orbit: orbit, - name: data[0], - size: data[1], - class: data[2], - velocity: data[3] - } - return moon - }, - mapStationObject(data:any[]):Station { - let station:Station = { - name: data[0], - size: data[1], - inventory: { - equipment: data[2][0], - fuel: data[2][1], - organics: data[2][2] - }, - price: { - equipment: data[3][0], - fuel: data[3][1], - organics: data[3][2], - holds:data[3][3] - } - } - return station - }, - - } + mapPlanetObject(data: any[], orbit: number, id: string): Planet { + let planet: Planet = { + id: id, + orbit: orbit, + name: data[0], + systemId: data[1], + size: data[2][0], + class: data[2][1], + rings: data[2][2], + velocity: data[2][3], + owner: data[3], + hasMoons: data[4], + hasPort: data[5], + moons: [], + station: {} as Station, + } + this.knownAddresses.push(planet.owner) + return planet + }, + mapMoonObject(data: any[], orbit: number): Moon { + let moon: Moon = { + orbit: orbit, + name: data[0], + size: data[1], + class: data[2], + velocity: data[3], + } + return moon + }, + mapStationObject(data: any[]): Station { + let station: Station = { + name: data[0], + size: data[1], + inventory: { + equipment: data[2][0], + fuel: data[2][1], + organics: data[2][2], + }, + price: { + equipment: data[3][0], + fuel: data[3][1], + organics: data[3][2], + holds: data[3][3], + }, + } + return station + }, + }, }) - interface System { - id: string, - name: string, - starSize: number, - birthtime: string, - discoveredBy: string, - neighbors: string[], - planets: string[], - shipLogs: string[], - ships: Ship[], + id: string + name: string + starSize: number + birthtime: string + discoveredBy: string + neighbors: string[] + planets: string[] + shipLogs: string[] + ships: Ship[] } interface Ship { - id: string, - name: string, - owner: string, - systemId: number, - orbit: number, - cargoLimit: number, - equipment: number, - fuel: number, - organics: number + id: string + name: string + owner: string + systemId: number + orbit: number + cargoLimit: number + equipment: number + fuel: number + organics: number } - interface Planet { - id: string, - orbit: number, - name: string, - systemId: string, - size: number, - class: number, - rings: number, - velocity: number - owner: string, - hasMoons: [ - boolean, - boolean, - boolean, - boolean, - boolean, - boolean, - boolean, - boolean - ] - moons: Moon[], - hasPort: boolean, - station: Station + id: string + orbit: number + name: string + systemId: string + size: number + class: number + rings: number + velocity: number + owner: string + hasMoons: [boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean] + moons: Moon[] + hasPort: boolean + station: Station } interface Moon { - orbit: number, - name: string, - size: number, - class: number, - velocity: number + orbit: number + name: string + size: number + class: number + velocity: number } interface Station { - name: string, - size: number, - inventory: { - equipment: number, - fuel: number, - organics: number - }, - price: { - equipment: number, - fuel: number, - organics: number, - holds:number - } + name: string + size: number + inventory: { + equipment: number + fuel: number + organics: number + } + price: { + equipment: number + fuel: number + organics: number + holds: number + } } diff --git a/client/src/stores/routing.ts b/client/src/stores/routing.ts index a7e92f0..6341b32 100644 --- a/client/src/stores/routing.ts +++ b/client/src/stores/routing.ts @@ -2,46 +2,37 @@ import { defineStore } from 'pinia' import { useUI } from './ui' export const useRouting = defineStore('routing', { - state: () => ({ - currentRoute: 'title', - ui: useUI(), - routes: [ - 'title', - 'play', - 'storya', - 'storyb', - 'four', - 'assets', - 'window' - ] - }), - actions: { - async switch(route:string) { - if (this.routes.includes(route)) - this.currentRoute = route + state: () => ({ + currentRoute: 'title', + ui: useUI(), + routes: ['title', 'play', 'storya', 'storyb', 'four', 'assets', 'window'], + }), + actions: { + async switch(route: string) { + if (this.routes.includes(route)) this.currentRoute = route - switch(route) { - case 'title': - this.ui.goHome() - break - case 'play': - this.ui.goHome() - break - case 'storya': - case 'storyb': - case 'four': - case 'assets': - case 'avatars': - case 'galaxy': - case 'window': - this.ui.showMenu = false - break - } - }, - }, - getters: { - is: (state) => { - return (route:string) => state.currentRoute === route - } - } + switch (route) { + case 'title': + this.ui.goHome() + break + case 'play': + this.ui.goHome() + break + case 'storya': + case 'storyb': + case 'four': + case 'assets': + case 'avatars': + case 'galaxy': + case 'window': + this.ui.showMenu = false + break + } + }, + }, + getters: { + is: state => { + return (route: string) => state.currentRoute === route + }, + }, }) diff --git a/client/src/stores/screen.ts b/client/src/stores/screen.ts index c2c9808..62f8388 100644 --- a/client/src/stores/screen.ts +++ b/client/src/stores/screen.ts @@ -1,144 +1,135 @@ import { defineStore } from 'pinia' export const useScreen = defineStore('screen', { - state: () => ({ - //overall scaling - isAutoPresent: false, - //cached values for window size and mouse position - //default values get overwritten and don't matter much - window: { - width: 1200, - height: 1200, - mouseX: 600, - mouseY: 600, - mouseDirection: 0 - }, - //current resolution of the window into the SVG - //also get overwritten - viewport: { - width: 200, - height: 200 - }, - //used to preserve 16:9 or 9:16 window when scaling - //also determines default resolution - protectedBox: { - long: 1920, - short: 1200 - } - }), - actions: { - resizeHandler() { - //the window size changed, so record the new size - this.window.width = Math.max(window.innerWidth, 400) - this.window.height = Math.max(window.innerHeight, 400) + state: () => ({ + //overall scaling + isAutoPresent: false, + //cached values for window size and mouse position + //default values get overwritten and don't matter much + window: { + width: 1200, + height: 1200, + mouseX: 600, + mouseY: 600, + mouseDirection: 0, + }, + //current resolution of the window into the SVG + //also get overwritten + viewport: { + width: 200, + height: 200, + }, + //used to preserve 16:9 or 9:16 window when scaling + //also determines default resolution + protectedBox: { + long: 1920, + short: 1200, + }, + }), + actions: { + resizeHandler() { + //the window size changed, so record the new size + this.window.width = Math.max(window.innerWidth, 400) + this.window.height = Math.max(window.innerHeight, 400) - //determine portrait vs landscape - const shortSide = Math.min(this.window.width, this.window.height) - const longSide = Math.max(this.window.width, this.window.height) + //determine portrait vs landscape + const shortSide = Math.min(this.window.width, this.window.height) + const longSide = Math.max(this.window.width, this.window.height) - //determine scaler that best preserves the target box - const shortSideRatio = (shortSide / this.protectedBox.short) - const longSideRatio = (longSide / this.protectedBox.long) + //determine scaler that best preserves the target box + const shortSideRatio = shortSide / this.protectedBox.short + const longSideRatio = longSide / this.protectedBox.long - //get the scaler for the most constrained direction - let avgScaler = (1 / longSideRatio + 1 / shortSideRatio) / 2 - let constrainedScaler - if (shortSideRatio > longSideRatio) { - constrainedScaler = 1 / longSideRatio - } else { - constrainedScaler = 1 / shortSideRatio - } - let scaler = (avgScaler + constrainedScaler) / 2 + //get the scaler for the most constrained direction + let avgScaler = (1 / longSideRatio + 1 / shortSideRatio) / 2 + let constrainedScaler + if (shortSideRatio > longSideRatio) { + constrainedScaler = 1 / longSideRatio + } else { + constrainedScaler = 1 / shortSideRatio + } + let scaler = (avgScaler + constrainedScaler) / 2 - //apply new resolution to SVG's viewport based on scaler - this.viewport.width = Math.round(this.window.width * scaler) - this.viewport.height = Math.round(this.window.height * scaler) - }, - mouseMoveHandler(event:any) { - //we record the explicit mouse coords and calc SVG coords in getter - const xdif = this.window.mouseX - event.pageX - const ydif = this.window.mouseY - event.pageY - this.window.mouseDirection = Math.atan2(ydif, xdif) / Math.PI * 180 - this.window.mouseX = event.pageX - this.window.mouseY = event.pageY - } - }, - getters: { - viewBoxSize():string { - return ( - this.left + - ' ' + - this.top + - ' ' + - this.width + - ' ' + - this.height - ) - }, + //apply new resolution to SVG's viewport based on scaler + this.viewport.width = Math.round(this.window.width * scaler) + this.viewport.height = Math.round(this.window.height * scaler) + }, + mouseMoveHandler(event: any) { + //we record the explicit mouse coords and calc SVG coords in getter + const xdif = this.window.mouseX - event.pageX + const ydif = this.window.mouseY - event.pageY + this.window.mouseDirection = (Math.atan2(ydif, xdif) / Math.PI) * 180 + this.window.mouseX = event.pageX + this.window.mouseY = event.pageY + }, + }, + getters: { + viewBoxSize(): string { + return this.left + ' ' + this.top + ' ' + this.width + ' ' + this.height + }, - //view modes - portrait():boolean { - return (this.height > this.width) - }, - landscape():boolean { - return (!this.portrait) - }, + //view modes + portrait(): boolean { + return this.height > this.width + }, + landscape(): boolean { + return !this.portrait + }, - //viewbox height and width - width():number { - return Math.round(this.viewport.width) - }, - height():number { - return Math.round(this.viewport.height) - }, + //viewbox height and width + width(): number { + return Math.round(this.viewport.width) + }, + height(): number { + return Math.round(this.viewport.height) + }, - //viewable edges of SVG at current resolution - top():number { - return this.height / -2 - }, - bottom():number { - return this.height / 2 - }, - left():number { - return this.width / -2 - }, - right():number { - return this.width / 2 - }, + //viewable edges of SVG at current resolution + top(): number { + return this.height / -2 + }, + bottom(): number { + return this.height / 2 + }, + left(): number { + return this.width / -2 + }, + right(): number { + return this.width / 2 + }, - //target box coords for rendering debug - protectedBoxX(): number { - if (this.portrait) { - return this.protectedBox.short / -2 - } - return this.protectedBox.long / -2 - }, - protectedBoxY(): number { - if (this.portrait) { - return this.protectedBox.long / -2 - } - return this.protectedBox.short / -2 - }, - protectedBoxWidth(): number { - if (this.portrait) { - return this.protectedBox.short - } - return this.protectedBox.long - }, - protectedBoxHeight(): number { - if (this.portrait) { - return this.protectedBox.long - } - return this.protectedBox.short - }, + //target box coords for rendering debug + protectedBoxX(): number { + if (this.portrait) { + return this.protectedBox.short / -2 + } + return this.protectedBox.long / -2 + }, + protectedBoxY(): number { + if (this.portrait) { + return this.protectedBox.long / -2 + } + return this.protectedBox.short / -2 + }, + protectedBoxWidth(): number { + if (this.portrait) { + return this.protectedBox.short + } + return this.protectedBox.long + }, + protectedBoxHeight(): number { + if (this.portrait) { + return this.protectedBox.long + } + return this.protectedBox.short + }, - //mouse coords in SVG context - mouseX():number { - return this.width * (this.window.mouseX / this.window.width) - (this.width / 2) - }, - mouseY():number { - return this.height * (this.window.mouseY / this.window.height) - (this.height / 2) - }, - - } + //mouse coords in SVG context + mouseX(): number { + return this.width * (this.window.mouseX / this.window.width) - this.width / 2 + }, + mouseY(): number { + return this.height * (this.window.mouseY / this.window.height) - this.height / 2 + }, + }, }) diff --git a/client/src/stores/theme.ts b/client/src/stores/theme.ts index a1034f4..12941f1 100644 --- a/client/src/stores/theme.ts +++ b/client/src/stores/theme.ts @@ -1,15 +1,14 @@ import { defineStore } from 'pinia' export const useTheme = defineStore('theme', { - state: () => ({ - objects: { - fill: '#ffffff', - fillOpacity: 1, - stroke: '#ffffff', - strokeWidth: 0, - strokeOpacity: 0 - } - }), - getters: { - } + state: () => ({ + objects: { + fill: '#ffffff', + fillOpacity: 1, + stroke: '#ffffff', + strokeWidth: 0, + strokeOpacity: 0, + }, + }), + getters: {}, }) diff --git a/client/src/stores/ui.ts b/client/src/stores/ui.ts index cd7a1be..81c0812 100644 --- a/client/src/stores/ui.ts +++ b/client/src/stores/ui.ts @@ -2,48 +2,48 @@ import { defineStore } from 'pinia' import { useRouting } from './routing' export const useUI = defineStore('ui', { - state: () => ({ - //overall scaling - routing: useRouting(), - UIScale: 1, - showFPS: false, - showDebug: false, - maxScale: 4, - minScale: 0.5, - showMenu: true, - menu: 'title', - menuOptions: [ - 'title', //title - 'settings', - 'connect', - 'game', //world? or maybe game, game is good - 'avatar', //signup screen - 'ship', //signup screen - ] - }), - getters: { - homeMenu():string { - this.routing.currentRoute - switch(this.routing.currentRoute) { - case 'play': - return 'game' - } - return 'title' - } - }, - actions: { - goHome() { - this.changeMenu(this.homeMenu) - }, - setUIScale(scale:number) { - this.UIScale = Math.max(Math.min(scale, this.maxScale), this.minScale) - //this.resizeHandler() - }, - changeMenu(name:string) { - this.showMenu = true - if (this.menuOptions.includes(name)) { - this.menu = name - } - } - }, + state: () => ({ + //overall scaling + routing: useRouting(), + UIScale: 1, + showFPS: false, + showDebug: false, + maxScale: 4, + minScale: 0.5, + showMenu: true, + menu: 'title', + menuOptions: [ + 'title', //title + 'settings', + 'connect', + 'game', //world? or maybe game, game is good + 'avatar', //signup screen + 'ship', //signup screen + ], + }), + getters: { + homeMenu(): string { + this.routing.currentRoute + switch (this.routing.currentRoute) { + case 'play': + return 'game' + } + return 'title' + }, + }, + actions: { + goHome() { + this.changeMenu(this.homeMenu) + }, + setUIScale(scale: number) { + this.UIScale = Math.max(Math.min(scale, this.maxScale), this.minScale) + //this.resizeHandler() + }, + changeMenu(name: string) { + this.showMenu = true + if (this.menuOptions.includes(name)) { + this.menu = name + } + }, + }, }) diff --git a/client/src/stores/world.ts b/client/src/stores/world.ts index a6e3095..84af859 100644 --- a/client/src/stores/world.ts +++ b/client/src/stores/world.ts @@ -19,228 +19,203 @@ const moonGap = 20 const stationDistance = 25 export const useWorld = defineStore('world', { - state: () => { - return { - avatar: useAvatar(), - galaxy: useGalaxy(), - clock: useClock(), - evm: useEVM(), - sprites: [] as Sprite[], - updating: false, - zoomLevel: 1, - lastBlockLoaded: 0, - viewPoint: { - x: 0, - y: 0, - } as Coords, - tweens: { - x: useTween(), - y: useTween(), - z: useTween() - }, - maxMap: 6500, - maxZoom: 100, - minZoom: 0.005, - selectedSprite: null as null | number, - isLoaded: false, - isLoading: false - } - }, - getters: { - getViewPoint():Coords { - //todo viewPoint isn't the best variable name - let x = this.viewPoint.x - let y = this.viewPoint.y + state: () => { + return { + avatar: useAvatar(), + galaxy: useGalaxy(), + clock: useClock(), + evm: useEVM(), + sprites: [] as Sprite[], + updating: false, + zoomLevel: 1, + lastBlockLoaded: 0, + viewPoint: { + x: 0, + y: 0, + } as Coords, + tweens: { + x: useTween(), + y: useTween(), + z: useTween(), + }, + maxMap: 6500, + maxZoom: 100, + minZoom: 0.005, + selectedSprite: null as null | number, + isLoaded: false, + isLoading: false, + } + }, + getters: { + getViewPoint(): Coords { + //todo viewPoint isn't the best variable name + let x = this.viewPoint.x + let y = this.viewPoint.y - if (this.selectedSprite != null) { - x = this.sprites[this.selectedSprite].position.x * -1, - y = this.sprites[this.selectedSprite].position.y * -1 - } - //todo: I don't love this implementation of tweens - return { - x: x + this.tweens.x, - y: y + this.tweens.y - } - }, - getZoomLevel():number { - return (this.zoomLevel + this.tweens.z) - }, - planetSprites():Sprite[] { - return this.sprites.filter(sprite => { - return sprite.type == 'Planet' - }) - }, - shipSprites():Sprite[] { - return this.sprites.filter(sprite => { - return sprite.type == 'Ship' - }) - }, - myShipSpriteId():Number | null { - for (let i=0; i < this.sprites.length; i++) { - if (this.sprites[i].owner == this.evm.signerAddress) { - return i - } - } - return null - }, - isConnected():boolean { - return (this.avatar.isConnected && this.galaxy.isConnected) - }, - unloadedBlock():boolean { - return (this.lastBlockLoaded != this.evm.block) - } - }, - actions: { - async loadFromNetwork() { - let currentBlock = this.evm.block - await Promise.all([ - //this.avatar.getAll(), - this.galaxy.getAll() - //get a list of avatars after loading the galaxy - ]) - await this.avatar.setAvatarsByAddresses( - this.galaxy.knownAddresses - ) - this.lastBlockLoaded = currentBlock - }, - newWorldZoom() { - this.zoomLevel = 2 - this.tweens.z = useTween( - this.minZoom - 2, - 0, - 4000 - ) - }, - deselect() { - if (this.selectedSprite != null) { - this.viewPoint.x = this.sprites[this.selectedSprite].position.x * -1 - this.viewPoint.y = this.sprites[this.selectedSprite].position.y * -1 - this.selectedSprite = null - } - }, - selectMyShip() { - if (this.myShipSpriteId != null) { - this.select(this.myShipSpriteId) - } - }, - select(id:number) { - if (id in this.sprites) { + if (this.selectedSprite != null) { + ;(x = this.sprites[this.selectedSprite].position.x * -1), + (y = this.sprites[this.selectedSprite].position.y * -1) + } + //todo: I don't love this implementation of tweens + return { + x: x + this.tweens.x, + y: y + this.tweens.y, + } + }, + getZoomLevel(): number { + return this.zoomLevel + this.tweens.z + }, + planetSprites(): Sprite[] { + return this.sprites.filter(sprite => { + return sprite.type == 'Planet' + }) + }, + shipSprites(): Sprite[] { + return this.sprites.filter(sprite => { + return sprite.type == 'Ship' + }) + }, + myShipSpriteId(): Number | null { + for (let i = 0; i < this.sprites.length; i++) { + if (this.sprites[i].owner == this.evm.signerAddress) { + return i + } + } + return null + }, + isConnected(): boolean { + return this.avatar.isConnected && this.galaxy.isConnected + }, + unloadedBlock(): boolean { + return this.lastBlockLoaded != this.evm.block + }, + }, + actions: { + async loadFromNetwork() { + let currentBlock = this.evm.block + await Promise.all([ + //this.avatar.getAll(), + this.galaxy.getAll(), + //get a list of avatars after loading the galaxy + ]) + await this.avatar.setAvatarsByAddresses(this.galaxy.knownAddresses) + this.lastBlockLoaded = currentBlock + }, + newWorldZoom() { + this.zoomLevel = 2 + this.tweens.z = useTween(this.minZoom - 2, 0, 4000) + }, + deselect() { + if (this.selectedSprite != null) { + this.viewPoint.x = this.sprites[this.selectedSprite].position.x * -1 + this.viewPoint.y = this.sprites[this.selectedSprite].position.y * -1 + this.selectedSprite = null + } + }, + selectMyShip() { + if (this.myShipSpriteId != null) { + this.select(this.myShipSpriteId) + } + }, + select(id: number) { + if (id in this.sprites) { + let viewPoint: Coords = this.getViewPoint + let target: Coords = this.sprites[id].position + let offset: Coords = { + x: viewPoint.x + target.x, + y: viewPoint.y + target.y, + } + let time = Math.sqrt(offset.x * offset.x + offset.y * offset.y) + time = time / 2 + 200 + this.tweens.x = useTween(offset.x, 0, time) + this.tweens.y = useTween(offset.y, 0, time) - let viewPoint:Coords = this.getViewPoint - let target:Coords = this.sprites[id].position - let offset:Coords = { - x: viewPoint.x + target.x, - y: viewPoint.y + target.y - } - let time = Math.sqrt(offset.x * offset.x + offset.y * offset.y) - time = time / 2 + 200 - this.tweens.x = useTween( - offset.x, - 0, - time - ) - this.tweens.y = useTween( - offset.y, - 0, - time - ) + let preferredZoom = 5 + if (this.sprites[id].type == 'Star') { + preferredZoom = 2 + } + if (this.sprites[id].type == 'Planet') { + preferredZoom = 4 + } + this.selectedSprite = id + this.tweens.z = useTween(-1 * preferredZoom + this.zoomLevel, 0, time) + this.zoomLevel = preferredZoom + } + }, + selectByRefId(refid: string) { + this.select(this.findByRefId(refid)) + }, + findByRefId(refid: string) { + return this.sprites.findIndex(sprite => { + return sprite.refid == refid + }, refid) + }, + zoomOut(multiplier: number = 1) { + this.zoomLevel = Math.max(this.zoomLevel * Math.pow(0.9, multiplier), this.minZoom) + }, + zoomIn(multiplier: number = 1) { + this.zoomLevel = Math.min(this.zoomLevel * Math.pow(1.1, multiplier), this.maxZoom) + }, + moveViewTo(x: number, y: number) { + this.deselect() + this.viewPoint.x = Math.max(Math.min(x, this.maxMap), this.maxMap * -1) + this.viewPoint.y = Math.max(Math.min(y, this.maxMap), this.maxMap * -1) + }, + async updateSpriteOrbits() { + if (this.updating) { + console.log('skipping') + return + } + this.updating = true + let gameTime = this.clock.gameTime - let preferredZoom = 5 - if (this.sprites[id].type == "Star") { - preferredZoom = 2 - } - if (this.sprites[id].type == "Planet") { - preferredZoom = 4 - } - this.selectedSprite= id - this.tweens.z = useTween( - -1 * preferredZoom + this.zoomLevel, - 0, - time - ) - this.zoomLevel = preferredZoom - } - }, - selectByRefId(refid:string) { - this.select(this.findByRefId(refid)) - }, - findByRefId(refid:string) { - return this.sprites.findIndex((sprite) => { - return sprite.refid == refid - }, refid) - }, - zoomOut(multiplier:number = 1) { - this.zoomLevel = Math.max( - (this.zoomLevel * Math.pow(0.9, multiplier)), - this.minZoom - ) - }, - zoomIn(multiplier:number = 1) { - this.zoomLevel = Math.min( - (this.zoomLevel * Math.pow(1.1, multiplier)), - this.maxZoom - ) - }, - moveViewTo(x:number, y:number) { - this.deselect() - this.viewPoint.x = Math.max(Math.min(x, this.maxMap), this.maxMap * -1) - this.viewPoint.y = Math.max(Math.min(y, this.maxMap), this.maxMap * -1) - }, - async updateSpriteOrbits() { - if (this.updating) { - console.log('skipping') - return - } - this.updating = true - let gameTime = this.clock.gameTime + this.sprites.forEach((sprite, index) => { + // note: foreach may be running out of order in some browsers for optimization + // for (let i = 0; i < this.sprites.length; i++) { + // let sprite = this.sprites[i] - this.sprites.forEach((sprite, index) => { -// note: foreach may be running out of order in some browsers for optimization -// for (let i = 0; i < this.sprites.length; i++) { -// let sprite = this.sprites[i] + let throttle = 0.0000001 + let theta = (gameTime * sprite.orbit.period * throttle + sprite.orbit.offset) % (Math.PI * 2) + let translatex = sprite.orbit.distance * Math.cos(theta) + let translatey = sprite.orbit.distance * Math.sin(theta) - let throttle = 0.0000001 - let theta = (gameTime * sprite.orbit.period * throttle + sprite.orbit.offset) % (Math.PI * 2) - let translatex = (sprite.orbit.distance * Math.cos(theta)) - let translatey = (sprite.orbit.distance * Math.sin(theta)) + let rad = Math.atan2(translatey, translatex) + let rotation = rad * (180 / Math.PI) + if (sprite.type == 'Planet') { + sprite.luminance.rotation = rotation + } + if (sprite.type == 'Ship') { + sprite.rotation = (rotation + 0) % 360 + } - let rad = Math.atan2(translatey, translatex) - let rotation = rad * (180 / Math.PI) - if (sprite.type == 'Planet') { - sprite.luminance.rotation = rotation - } - if (sprite.type == 'Ship') { - sprite.rotation = (rotation + 0) % 360 - } + if (sprite.orbit.parent > 0) { + let parent = this.sprites[sprite.orbit.parent] + sprite.position.x = translatex + parent.position.x + sprite.position.y = translatey + parent.position.y + } else { + sprite.position.x = translatex + sprite.position.y = translatey + } + }) + this.updating = false + }, + async loadEntities() { + this.isLoading = true + await Promise.all([ + this.avatar.setAvatarCount(), + this.avatar.setHaveAvatar(), + this.avatar.setMyAvatarName(), + this.avatar.setMyAvatarId(), + this.galaxy.getAll(), + ]) - if ((sprite.orbit.parent > 0)) { - let parent = this.sprites[sprite.orbit.parent] - sprite.position.x = translatex + parent.position.x - sprite.position.y = translatey + parent.position.y - } else { - sprite.position.x = translatex - sprite.position.y = translatey - } - }) - this.updating = false - }, - async loadEntities() { - this.isLoading = true - await Promise.all([ - this.avatar.setAvatarCount(), - this.avatar.setHaveAvatar(), - this.avatar.setMyAvatarName(), - this.avatar.setMyAvatarId(), - this.galaxy.getAll() - ]) + this.sprites = useSprites(this.galaxy.chainstate) - this.sprites = useSprites(this.galaxy.chainstate) + //todo: this should probably move to useSprites + this.updateSpriteOrbits() - //todo: this should probably move to useSprites - this.updateSpriteOrbits() - - this.isLoaded = true - this.isLoading = false - }, - } + this.isLoaded = true + this.isLoading = false + }, + }, }) diff --git a/client/tsconfig.json b/client/tsconfig.json index bcc4abd..6fe3090 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -1,18 +1,18 @@ { - "compilerOptions": { - "target": "esnext", - "useDefineForClassFields": true, - "module": "esnext", - "moduleResolution": "node", - "strict": true, - "jsx": "preserve", - "sourceMap": true, - "resolveJsonModule": true, - "isolatedModules": true, - "esModuleInterop": true, - "lib": ["esnext", "dom"], - "skipLibCheck": true - }, - "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], - "references": [{ "path": "./tsconfig.node.json" }] + "compilerOptions": { + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "skipLibCheck": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/client/tsconfig.node.json b/client/tsconfig.node.json index e993792..0ecbf1f 100644 --- a/client/tsconfig.node.json +++ b/client/tsconfig.node.json @@ -1,8 +1,8 @@ { - "compilerOptions": { - "composite": true, - "module": "esnext", - "moduleResolution": "node" - }, - "include": ["vite.config.ts"] + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["vite.config.ts"] } diff --git a/client/vite.config.ts b/client/vite.config.ts index 7bfab10..29ce9bb 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -3,6 +3,6 @@ import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], - base: './' + plugins: [vue()], + base: './', }) From 81287b8cfbf71fcfc7a7844ce23bd8bdd65cf93b Mon Sep 17 00:00:00 2001 From: Johnson Chen Date: Mon, 17 Jun 2024 14:17:23 +0800 Subject: [PATCH 2/2] add vue-dapp and ethers v6 --- client/package-lock.json | 869 ++---------------- client/package.json | 4 +- client/src/App.vue | 21 + .../components/ui/EVMNetworkSelect.svg.vue | 4 +- client/src/components/ui/GameConnet.svg.vue | 4 +- client/src/components/ui/MenuConnect.svg.vue | 1 + client/src/stores/composables/contract.ts | 19 +- client/src/stores/delete-me-gamestate.ts | 1 + client/src/stores/evm.ts | 142 ++- client/src/stores/galaxy.ts | 6 +- 10 files changed, 262 insertions(+), 809 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index a02009c..c0cef84 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,7 +8,9 @@ "name": "client", "version": "0.0.0", "dependencies": { - "ethers": "^5.7.2", + "@vue-dapp/core": "^1.5.1", + "@vue-dapp/modal": "^1.5.1", + "ethers": "^6.13.0", "pinia": "^2.1.7", "sass": "^1.77.2", "vue": "^3.4.27" @@ -21,6 +23,11 @@ "vue-tsc": "^2.0.19" } }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, "node_modules/@babel/parser": { "version": "7.24.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", @@ -400,682 +407,33 @@ "node": ">=12" } }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", @@ -1290,6 +648,11 @@ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, "node_modules/@vitejs/plugin-vue": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", @@ -1331,6 +694,25 @@ "path-browserify": "^1.0.1" } }, + "node_modules/@vue-dapp/core": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@vue-dapp/core/-/core-1.5.1.tgz", + "integrity": "sha512-ihbk2dsySKHoApna0jDkUg3+ac3G3Cdxl4Is0suMmXFsjnWrlTy4l6fBUAYGHn/B8fRpXs41l/aHuI53zrJ5Jg==", + "peerDependencies": { + "pinia": "^2.1.7", + "vue": "^3.3.7" + } + }, + "node_modules/@vue-dapp/modal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@vue-dapp/modal/-/modal-1.5.1.tgz", + "integrity": "sha512-ubPlDYjKSJaAjNQyCEsxOCN0c8jPlUFyGjYlU62J7gkx+hC1BjtmqqZFH+b6+68dQ06eJnCkqarjWC6joK1EKQ==", + "peerDependencies": { + "@vue-dapp/core": "*", + "pinia": ">=2.1.7", + "vue": ">=3.3.6" + } + }, "node_modules/@vue/compiler-core": { "version": "3.4.27", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", @@ -1450,9 +832,9 @@ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" }, "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" }, "node_modules/anymatch": { "version": "3.1.3", @@ -1472,11 +854,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -1488,11 +865,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1513,11 +885,6 @@ "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -1558,25 +925,6 @@ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1632,13 +980,13 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.0.tgz", + "integrity": "sha512-+yyQQQWEntY5UVbCv++guA14RRVFm1rSnO1GoLFdrK7/XRWMoktNgyG9UjwxrQqGBfGyFKknNZ81YpUS2emCgg==", "funding": [ { "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + "url": "https://github.com/sponsors/ethers-io/" }, { "type": "individual", @@ -1646,36 +994,16 @@ } ], "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/fill-range": { @@ -1713,15 +1041,6 @@ "node": ">= 6" } }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -1731,26 +1050,11 @@ "he": "bin/he" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/immutable": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1789,11 +1093,6 @@ "node": ">=0.12.0" } }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, "node_modules/magic-string": { "version": "0.30.10", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", @@ -1802,16 +1101,6 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, "node_modules/minimatch": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", @@ -2034,11 +1323,6 @@ "node": ">=14.0.0" } }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, "node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", @@ -2070,6 +1354,11 @@ "node": ">=8.0" } }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/typescript": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", @@ -2186,11 +1475,11 @@ } }, "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", diff --git a/client/package.json b/client/package.json index 7e68c4d..e7b1873 100644 --- a/client/package.json +++ b/client/package.json @@ -9,7 +9,9 @@ "format": "prettier --write \"**/*.{vue,ts,js,json}\"" }, "dependencies": { - "ethers": "^5.7.2", + "@vue-dapp/core": "^1.5.1", + "@vue-dapp/modal": "^1.5.1", + "ethers": "^6.13.0", "pinia": "^2.1.7", "sass": "^1.77.2", "vue": "^3.4.27" diff --git a/client/src/App.vue b/client/src/App.vue index 65282e0..2f63395 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -14,6 +14,25 @@ import UI from './components/UI.svg.vue' import { useRouting } from './stores/routing' import { useClock } from './stores/clock' +import { BrowserWalletConnector, ConnWallet, useVueDapp } from '@vue-dapp/core' +import { VueDappModal } from '@vue-dapp/modal' +import '@vue-dapp/modal/dist/style.css' +import { useEVM } from './stores/evm' + +const { addConnectors, watchWalletChanged, watchDisconnect } = useVueDapp() + +addConnectors([new BrowserWalletConnector()]) + +const { setWallet, resetWallet } = useEVM() + +watchWalletChanged(async (wallet: ConnWallet) => { + setWallet(wallet.provider) +}) + +watchDisconnect(() => { + resetWallet() +}) + const routing = useRouting() const clock = useClock() clock.play() @@ -35,6 +54,8 @@ clock.play() + +