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..c0cef84 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -1,2193 +1,1498 @@
{
- "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": {
+ "@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"
+ },
+ "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/@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",
+ "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/@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/@noble/curves": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz",
+ "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==",
+ "dependencies": {
+ "@noble/hashes": "1.3.2"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "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/@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/@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",
+ "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-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",
+ "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": "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",
+ "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/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/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/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/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": "6.13.0",
+ "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.0.tgz",
+ "integrity": "sha512-+yyQQQWEntY5UVbCv++guA14RRVFm1rSnO1GoLFdrK7/XRWMoktNgyG9UjwxrQqGBfGyFKknNZ81YpUS2emCgg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/ethers-io/"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "dependencies": {
+ "@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": {
+ "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/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/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/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/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/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/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/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",
+ "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": "8.5.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
+ "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
+ "engines": {
+ "node": ">=10.0.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..e7b1873 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,22 +1,26 @@
{
- "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": {
+ "@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"
+ },
+ "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..2f63395 100644
--- a/client/src/App.vue
+++ b/client/src/App.vue
@@ -14,72 +14,86 @@ import UI from './components/UI.svg.vue'
import { useRouting } from './stores/routing'
import { useClock } from './stores/clock'
-const routing = useRouting()
-const clock = useClock()
-clock.play()
+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()
+
-
-
-
-
+
+
+
+
+
-
+
+
+
+
-
+
-
+
+
+
-
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'
-
-
-
-
-
-
-
-
-
-
-
-
-UI Scale:
-{{ Math.round(ui.UIScale * 100) }}%
-
-
-
-
-
-
-
-FPS:
-On
-Off
-
-
-
-
-
-
-Debug:
-On
-Off
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ UI Scale:
+ {{ Math.round(ui.UIScale * 100) }}%
+
+
+
+
+
+
+ FPS:
+ On
+ Off
+
+
+
+
+ Debug:
+ On
+ Off
+
+
+
+
+
+
+
+
-
+
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'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+ /
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
- Version 3.01
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Version 3.01
+
-
+
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'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- System Count: {{ world.galaxy.chainstate.systemCount }}
-
-
-
- Credit Balance: {{ world.galaxy.chainstate.creditBalance }}
-
-
- Ship Location: {{ world.galaxy.chainstate.shipLocation }}
-
-
- Ship Id: {{ world.galaxy.chainstate.shipId }}
-
-
- Ship: {{ world.galaxy.chainstate.ship }}
-
-
- Id: {{ world.galaxy.chainstate.systemData.id }}
- Name: {{ world.galaxy.chainstate.systemData.name }}
- Size: {{ world.galaxy.chainstate.systemData.starSize }}
- Birth: {{ world.galaxy.chainstate.systemData.birthtime }}
- Disc By: {{ world.galaxy.chainstate.systemData.discoveredBy }}
- Neighbors: ({{ n }})
- Planets: ({{ p }})
- Logs: ({{ l }})
-
-
- Ships: ({{ s }})
-
-
- planets: ({{ p }})
-
-
- localPlanets: ({{ p }})
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ System Count:
+ {{ world.galaxy.chainstate.systemCount }}
+
+
+
+ Credit Balance:
+ {{ world.galaxy.chainstate.creditBalance }}
+
+
+ Ship Location:
+ {{ world.galaxy.chainstate.shipLocation }}
+
+
+ Ship Id: {{ world.galaxy.chainstate.shipId }}
+
+
+ Ship: {{ world.galaxy.chainstate.ship }}
+
+
+ Id: {{ world.galaxy.chainstate.systemData.id }}
+ Name:
+ {{ world.galaxy.chainstate.systemData.name }}
+ Size:
+ {{ world.galaxy.chainstate.systemData.starSize }}
+ Birth:
+ {{
+ world.galaxy.chainstate.systemData.birthtime
+ }}
+ Disc By:
+ {{
+ world.galaxy.chainstate.systemData.discoveredBy
+ }}
+ Neighbors:
+
+ ({{ n }})
+
+ Planets:
+
+ ({{ p }})
+
+ Logs:
+
+ ({{ l }})
+
+
+
+ Ships:
+
+ ({{ s }})
+
+
+
+ planets:
+
+ ({{ p }})
+
+
+
+ localPlanets:
+
+ ({{ p }})
+
+
+
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'
-
-
-
- MINERVA AMI
-
- Artificial Machine Intelligence
-
-
-
\ 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'
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
- panel = p"
- @finish="finish()"
- @close="close()" />
-
+ (panel = p)" @finish="finish()" @close="close()" />
+
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'
-
-
-
- {{ testtween }}
-
+
+
+
+ {{ testtween }}
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
+
+
-
-
-
-
-
-
+
+
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 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
- {{ words[0] }}
-
- {{ words[1] }}
-
- {{ words[2] }}
-
-
-
- {{ words[0] }}
-
- {{ words[1] }} {{ words[2] }}
-
-
-
-
-
+
+ {{ words[0] }}
+ {{ words[1] }}
+ {{ words[2] }}
+
+
+ {{ words[0] }}
+ {{ words[1] }} {{ words[2] }}
+
+
+
+
-
+
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'
-
-
+
+
-
-
-
-
-
- Top {{ screen.top }} Bottom {{ screen.bottom }}
- Left {{ screen.left }} Right {{ screen.right }}
- UI Scale {{ ui.UIScale }} Rez {{ screen.width }} x {{ screen.height }}
- Orientation: PortraitLandscapeError
- MX: {{ screen.mouseX.toFixed(3) }} MY: {{ screen.mouseY.toFixed(3) }}
- Zoom: {{ world.getZoomLevel.toFixed(3) }}
- WX: {{ world.getViewPoint.x.toFixed(3) }} WY: {{ world.getViewPoint.y.toFixed(3) }}
- TX: {{ world.tweens.x.toFixed(3) }} TY: {{ world.tweens.y.toFixed(3) }}
-
-
+
+
+
+ Top {{ screen.top }} Bottom {{ screen.bottom }}
+ Left {{ screen.left }} Right {{ screen.right }}
+ UI Scale {{ ui.UIScale }} Rez {{ screen.width }} x {{ screen.height }}
+ Orientation: PortraitLandscapeError
+ MX: {{ screen.mouseX.toFixed(3) }} MY: {{ screen.mouseY.toFixed(3) }}
+ Zoom: {{ world.getZoomLevel.toFixed(3) }}
+ WX: {{ world.getViewPoint.x.toFixed(3) }} WY: {{ world.getViewPoint.y.toFixed(3) }}
+ TX: {{ world.tweens.x.toFixed(3) }} TY: {{ world.tweens.y.toFixed(3) }}
+
+
-
+
diff --git a/client/src/components/ui/EVMNetworkSelect.svg.vue b/client/src/components/ui/EVMNetworkSelect.svg.vue
index 7115ed2..cdf368a 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'
-
-
+
+
-
-
-
-
-
-
-
-
-
- {{ networks[networkToShow] ? networks[networkToShow].name : 'Select A Network' }}
-
- Native Token: {{ networks[networkToShow].currency.symbol }}
- Chain ID: {{ networks[networkToShow].hexId }}
- {{ networks[networkToShow].description }}
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {{
+ networks[networkToShow] ? networks[networkToShow].name : 'Select A Network'
+ }}
+
+ Native Token: {{ networks[networkToShow].currency.symbol }}
+ Chain ID: {{ networks[networkToShow].hexId }}
+ {{ networks[networkToShow].description }}
+
+
+
+
+
+
-
- Avatar Contract:
- Connected
- Not found.
- {{ world.avatar.avatarContractAddress }}
+
+ Avatar Contract:
+ Connected
+ Not found.
+ {{ world.avatar.avatarContractAddress }}
- Galaxy Contract:
- Connected
- Not found.
- {{ world.galaxy.galaxyContractAddress }}
-
+ Galaxy Contract:
+ Connected
+ Not found.
+ {{ world.galaxy.galaxyContractAddress }}
+
-
-
-
- Current Balance:
- {{ evm.balance }} {{ evm.currencyData.symbol }}
-
+
+
+
+ Current Balance:
+ {{ evm.balance }} {{ evm.currencyData.symbol }}
+
-
- Get more {{ evm.currencyData.symbol }}:
-
-
-
-
-
-
- No sources avaialble
-
-
+
+ Get more {{ evm.currencyData.symbol }}:
+
+
+
+
+
+
+ No sources avaialble
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
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'
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
- {{ evm.block }}
-
-
- {{ evm.shortSigner }}
-
-
-
-
- Loading
-
-
- Loaded
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- network offline
-
-
-
-
-
-
-
+
+
+
+
+ {{ evm.block }}
+
+
+ {{ evm.shortSigner }}
+
+
+
+ Loading
+ Loaded
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ network offline
+
+
+
+
+
+
-
+
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 @@
-
-
- Time: {{ gameTimeInSeconds }} @ {{ clock.fps }} fps
-
-
-
-
+
+
+ Time: {{ gameTimeInSeconds }} @ {{ clock.fps }} fps
+
+
+
+
-
+
diff --git a/client/src/components/ui/GameConnet.svg.vue b/client/src/components/ui/GameConnet.svg.vue
index 151f2b5..1241812 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'
-
-
-
-
-
-
-
-
- Current Balance:
- {{ evm.balance }} {{ evm.currencyData.symbol }}
-
-
-
- Get more {{ evm.currencyData.symbol }}:
-
-
-
-
-
-
- No sources avaialble
-
-
-
-
-
- Avatar Contract:
- Connected
- Connecting
- {{ avatar.avatarContractAddress }}
-
- Galaxy Contract:
- Connected
- Connecting
- {{ galaxy.galaxyContractAddress }}
-
-
-
-
-
-
- Welcome back {{ avatar.chainstate.myAvatarName }}.
-
-
-
-
-
- You have no avatar.
-
-
-
-
- There are {{ avatar.chainstate.avatarCount }} players exploring {{ galaxy.chainstate.systemCount }} stars.
-
-
-
-
- Your ship {{ galaxy.chainstate.ship.name }} is currently in {{ galaxy.chainstate.systemData.name }}
-
-
-
-
-
-
-
- Connect your wallet to continue.
-
-
-
-
- Please select a supported network.
-
-
-
- Loading game data.
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ Current Balance:
+ {{ evm.balance }} {{ evm.currencyData.symbol }}
+
+
+
+ Get more {{ evm.currencyData.symbol }}:
+
+
+
+
+
+
+ No sources avaialble
+
+
+
+
+ Avatar Contract:
+ Connected
+ Connecting
+ {{ avatar.avatarContractAddress }}
+
+ Galaxy Contract:
+ Connected
+ Connecting
+ {{ galaxy.galaxyContractAddress }}
+
+
+
+
+
+ Welcome back {{ avatar.chainstate.myAvatarName }}.
+
+
+
+
+
+ You have no avatar.
+
+
+
+
+ There are {{ avatar.chainstate.avatarCount }} players exploring
+ {{ galaxy.chainstate.systemCount }} stars.
+
+
+
+
+ Your ship {{ galaxy.chainstate.ship.name }} is currently in
+ {{ galaxy.chainstate.systemData.name }}
+
+
+
+
+
+
+ Connect your wallet to continue.
+
+
+
+
+ Please select a supported network.
+
+
+
+ Loading game data.
+ />
+
+
+
+
+
+
+
+
+
+
+
-
+
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,
+ },
+ },
+}
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ statusMessage }}
- {{ percent }}%
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ statusMessage }}
+ {{ percent }}%
+
+
-
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'
-
-
- Callsign Registration
-
-
-
-
- Greetings Pilot
-
- You have been recruited by the Cascadian Cyber Corp
- to command a brand new Orbiter 8 space craft.
-
- Your ongoing mission is to explore the galactic frontier,
- liberate resources for the greater good, - and profit.
-
- Once you register your public callsign in the Minerva
- galactic database, you'll be granted flight clearance
- for the entire galaxy.
-
- Liberta Galactica
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Pilot Identification
- ? ? ? ? ? ? ? ? ? ? ?
- {{ avatarName }}
- Rank: Newb
-
-
-
-
-
-
- Please enter your callsign:
-
-
-
-
-
-
-
-
-
-
-
- Transmitting your registration request.
- Please follow the prompts in your wallet provider.
- If for some reason, you do not see a prompt, you
- can click "Retry" to go back and resubmit.
-
-
-
-
-
- Your transaction was either cancelled or failed.
- It's okay, we can try again.
- Please click "Retry" to go back and resubmit.
-
-
-
-
-
-
-
-
-
-
-
-
- Success!
- Welcome aboard, {{ avatarName }}.
- It's time to find you a ship.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Callsign Registration
+
+
+
+ Greetings Pilot
+
+ You have been recruited by the Cascadian Cyber Corp
+ to command a brand new Orbiter 8 space craft.
+
+ Your ongoing mission is to explore the galactic frontier,
+ liberate resources for the greater good, - and profit.
+
+ Once you register your public callsign in the Minerva
+ galactic database, you'll be granted flight clearance
+ for the entire galaxy.
+
+ Liberta Galactica
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pilot Identification
+ ? ? ? ? ? ? ? ? ? ? ?
+ {{ avatarName }}
+ Rank: Newb
+
+
+
+
+
+
+ Please enter your callsign:
+
+
+
+
+
+
+
+
+
+
+ Transmitting your registration request.
+ Please follow the prompts in your wallet provider.
+ If for some reason, you do not see a prompt, you
+ can click "Retry" to go back and resubmit.
+
+
+
+
+
+ Your transaction was either cancelled or failed.
+ It's okay, we can try again.
+ Please click "Retry" to go back and resubmit.
+
+
+
+
+
+
+
+
+
+
+
+
+ Success!
+ Welcome aboard, {{ avatarName }}.
+ It's time to find you a ship.
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/client/src/components/ui/MenuConnect.svg.vue b/client/src/components/ui/MenuConnect.svg.vue
index 5daf730..c83849f 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,225 @@ import { useGalaxy } from '../../stores/galaxy'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Connect Wallet
-
-
-
-
- Status:
-
-
-
- Wallet available.
-
-
- No wallet detected.
-
-
-
-
-
-
- Playing Orbiter 8 requires an EVM wallet provider.
-
-
-
- We could not detect a wallet provider.
-
-
- For the best experience, download Metamask.
-
-
-
-
-
-
-
-
- We detected your wallet and are attempting to connect.
-
-
- You may need to unlock your wallet with a passcode.
-
-
- If you still do not see a connection dialogue, click retry.
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ evm.chainName }}
-
-
-
-
- With {{ world.avatar.chainstate.avatarCount }} players exploring {{ world.galaxy.chainstate.systemCount }} star systems.
-
-
-
-
- Welcome back {{ world.avatar.chainstate.myAvatarName }}.
-
-
-
-
- Your ship {{ world.galaxy.chainstate.ship.name }} is currently in {{ world.galaxy.chainstate.systemData.name }}
-
-
-
-
-
-
- Status:
-
-
-
- Connected
- Loading
-
-
- Unsupported
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Connect Wallet
+
+
+
+
+ Status:
+
+
+
+ Wallet available.
+
+
+ No wallet detected.
+
+
+
+
+
+
+ Playing Orbiter 8 requires an EVM wallet provider.
+
+
+
+ We could not detect a wallet provider.
+
+
+ For the best experience, download Metamask.
+
+
+
+
+
+
+
+
+ We detected your wallet and are attempting to connect.
+
+
+ You may need to unlock your wallet with a passcode.
+
+
+ If you still do not see a connection dialogue, click retry.
+
+
+
+
+
+
+
+
+
+
+
+ {{ evm.chainName }}
+
+
+
+
+ With {{ world.avatar.chainstate.avatarCount }} players exploring
+ {{ world.galaxy.chainstate.systemCount }} star systems.
+
+
+
+
+ Welcome back {{ world.avatar.chainstate.myAvatarName }}.
+
+
+
+
+ Your ship {{ world.galaxy.chainstate.ship.name }} is currently in
+ {{ world.galaxy.chainstate.systemData.name }}
+
+
+
+
+
+ Status:
+
+
+ Connected
+ Loading
+
+
+ Unsupported
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
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'
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
- UI Scale:
- {{ Math.round(ui.UIScale * 100) }}%
-
-
-
-
+
+
+
+
+
+ UI Scale:
+ {{ Math.round(ui.UIScale * 100) }}%
+
+
+
+
-
- FPS:
- On
- Off
-
-
+
+ FPS:
+ On
+ Off
+
+
-
+
-
-
-
- Debug:
- On
- Off
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Debug:
+ On
+ Off
+
+
+
+
+
+
+
+
-
+
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'
-
-
-
-
-
-
-
- Registered Owner: {{ world.avatar.me.name }}
-
- Please name your Orbiter 8:
-
-
-
-
-
-
-
-
-
-
- Transmitting your ship registration.
- Please follow the prompts in your wallet provider.
- If for some reason, you do not see a prompt, you
- can click "Retry" to go back and resubmit.
-
-
-
-
-
- Your transaction was either cancelled or failed.
- It's okay, we can try again.
- Please click "Retry" to go back and resubmit.
-
-
-
-
-
-
-
-
-
-
-
-
- Success!
- You're ready to take command of {{ shipName }}.
- Liberta Galactica!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ Registered Owner: {{ world.avatar.me.name }}
+
+
+ Please name your Orbiter 8:
+
+
+
+
+
+
+
+
+
+
+ Transmitting your ship registration.
+ Please follow the prompts in your wallet provider.
+ If for some reason, you do not see a prompt, you
+ can click "Retry" to go back and resubmit.
+
+
+
+
+
+ Your transaction was either cancelled or failed.
+ It's okay, we can try again.
+ Please click "Retry" to go back and resubmit.
+
+
+
+
+
+
+
+
+
+
+
+
+ Success!
+ You're ready to take command of {{ shipName }}.
+ Liberta Galactica!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
-
-
-
-
- {{ planet.meta.name }}
-
-
- {{ planet.meta.name }}
-
-
- {{ planet.meta.className }}
-
-
- {{ planet.meta.className }}
-
-
-
-
-
-
-
-
- {{ moon.meta.name }}
-
-
-
-
-
-
-
-
-
- [{{ station[0].getPortType() }}] {{ station[0].meta.name }}
-
-
-
-
+
+
+
+
+ {{ planet.meta.name }}
+
+
+ {{ planet.meta.name }}
+
+
+ {{ planet.meta.className }}
+
+
+ {{ planet.meta.className }}
+
+
+
+
+
+
+
+
+ {{ moon.meta.name }}
+
+
+
+
+
+
+
+
+
+ [{{ station[0].getPortType() }}] {{ station[0].meta.name }}
+
+
+
+
-
\ 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 @@
-
-
-
-
- {{ ship.meta.name }}
-
-
- {{ ship.meta.name }}
-
-
- Command:
-
-
- Orbiting:
-
-
- {{ owner }}
-
-
- {{ orbiting }}
-
-
-
+
+
+
+
+ {{ ship.meta.name }}
+
+
+ {{ ship.meta.name }}
+
+
+ Command:
+
+
+ Orbiting:
+
+
+ {{ owner }}
+
+
+ {{ orbiting }}
+
+
+
-
\ 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 @@
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
- {{ counter }}
-
-
+
+
+
+
+
+
+
+
+
+ {{ counter }}
+
+
-
-
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 @@
-
-
-
- {{ displayText }}
-
-
+
-
+ {{
+ displayText
+ }}
- ↩
+
-
+
+ ↩
-
\ 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'
-
-
-
-
- {{ title }}
-
-
-
-
-
-
+
+
+
+
+ {{ title }}
+
+
+
+
+
-
+
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
+ },
+ },
+}
+
-
-
-
-
- {{ text }}
-
-
-
-
+
+
+
+
+ {{ text }}
+
+
+
+
-
+
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'
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
- {{ avatar.chainstate.myAvatarName }}
- Starship:
- {{ galaxy.chainstate.ship.name }}
- Credits:
- -- ¢
+
+
+
+ {{ avatar.chainstate.myAvatarName }}
+
+ Starship:
+ {{ galaxy.chainstate.ship.name }}
+ Credits:
+ -- ¢
-
- {{ galaxy.chainstate.ship.equipment }}
- {{ galaxy.chainstate.ship.fuel }}
- {{ galaxy.chainstate.ship.organics }}
- {{ galaxy.chainstate.ship.cargoLimit - (galaxy.chainstate.ship.equipment + galaxy.chainstate.ship.fuel + galaxy.chainstate.ship.organics) }}
- Equipment
- Fuel
- Organics
- Empty
-
-
+
+ {{
+ galaxy.chainstate.ship.equipment
+ }}
+ {{
+ galaxy.chainstate.ship.fuel
+ }}
+ {{
+ galaxy.chainstate.ship.organics
+ }}
+ {{
+ galaxy.chainstate.ship.cargoLimit -
+ (galaxy.chainstate.ship.equipment + galaxy.chainstate.ship.fuel + galaxy.chainstate.ship.organics)
+ }}
+ Equipment
+ Fuel
+ Organics
+ Empty
+
+
-
-
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'
-
-
- Star System {{ galaxy.chainstate.systemData.id }}
- Star System {{ galaxy.chainstate.systemData.id }}
- {{ galaxy.chainstate.systemData.name }}
- {{ galaxy.chainstate.systemData.name }}
-
+
+ Star System {{ galaxy.chainstate.systemData.id }}
+ Star System {{ galaxy.chainstate.systemData.id }}
+ {{ galaxy.chainstate.systemData.name }}
+ {{ galaxy.chainstate.systemData.name }}
+
-
-
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 @@
-
-
-
-
-
-
-
-
- −
-
-
-
-
- +
-
-
+
+
+
+
+
+
+
+ −
+
+
+
+
+ +
+
+
- {{ world.zoomLevel.toFixed(3) }}
-
+ {{
+ world.zoomLevel.toFixed(3)
+ }}
+
-
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..9f80e3a 100644
--- a/client/src/stores/composables/contract.ts
+++ b/client/src/stores/composables/contract.ts
@@ -1,109 +1,100 @@
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(
+ () => evm.isConnected,
+ () => {
+ if (!isConnected.value && evm.isSuppportedNetwork && evm.isConnected) {
+ 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) {
+ throw new Error('Not connected')
+ }
+ 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()
- }
-
- 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..6c4efee 100644
--- a/client/src/stores/delete-me-gamestate.ts
+++ b/client/src/stores/delete-me-gamestate.ts
@@ -4,34 +4,33 @@ 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() {
+ console.log('should not be called')
+ 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..7931601 100644
--- a/client/src/stores/evm.ts
+++ b/client/src/stores/evm.ts
@@ -1,180 +1,312 @@
import { defineStore } from 'pinia'
-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)
- /*
+import { ethers, formatEther } from 'ethers'
+import deployments from '../../libraries/galactic/networkDeployments'
+import networks from '../../libraries/galactic/networkDetails'
+import { EIP1193Provider, useVueDapp } from '@vue-dapp/core'
+import { computed, markRaw, ref } from 'vue'
+import { useVueDappModal } from '@vue-dapp/modal'
+
+export const useEVM = defineStore('wallet', () => {
+ const provider = ref(null)
+ const signer = ref(null)
+ const balance = ref(0.0)
+ const hasWallet = ref(false)
+ const block = ref(null)
+
+ const { wallet, isConnected } = useVueDapp()
+
+ // ====================== getters ======================
+
+ const signerAddress = computed(() => signer.value?.address || '')
+
+ const chainName = computed(() => {
+ if (!wallet.chainId) return 'unknown network'
+ if (networks.hasOwnProperty(wallet.chainId)) {
+ return networks[wallet.chainId].name
+ }
+ return 'unknown network'
+ })
+
+ const isSuppportedNetwork = computed(() => {
+ if (!wallet.chainId) return false
+ return deployments.hasOwnProperty(wallet.chainId)
+ })
+
+ const shortSigner = computed(() => {
+ const length = signerAddress.value.length
+ if (length >= 8) {
+ return signerAddress.value.substring(0, 5) + '...' + signerAddress.value.substring(length - 3)
+ }
+ return signerAddress.value
+ })
+
+ const currencyData = computed(() => {
+ if (!wallet.chainId) return null
+ if (networks.hasOwnProperty(wallet.chainId)) {
+ return networks[wallet.chainId].currency
+ }
+ return {
+ name: '',
+ symbol: '',
+ decimals: 18,
+ }
+ })
+
+ const faucets = computed(() => {
+ if (!wallet.chainId) return []
+ if (networks.hasOwnProperty(wallet.chainId)) {
+ return networks[wallet.chainId].faucets
+ }
+ return []
+ })
+
+ const explorer = computed(() => {
+ if (!wallet.chainId) return ''
+ if (networks.hasOwnProperty(wallet.chainId)) {
+ return networks[wallet.chainId].explorer
+ }
+ return ''
+ })
+
+ // ============================== methods ==============================
+
+ async function connect() {
+ const { open } = useVueDappModal()
+ open()
+ }
+
+ async function setWallet(p: EIP1193Provider) {
+ provider.value = markRaw(new ethers.BrowserProvider(p))
+ signer.value = markRaw(await provider.value.getSigner())
+ hasWallet.value = true
+
+ provider.value.on('block', (blockNumber: number) => {
+ block.value = blockNumber
+ })
+ }
+
+ function resetWallet() {
+ provider.value = null
+ signer.value = null
+ hasWallet.value = false
+ }
+
+ async function getBalance() {
+ if (!provider.value) return
+ let bal = await provider.value.getBalance(signerAddress.value)
+ balance.value = Number(formatEther(bal))
+ }
+
+ async function switchNetwork(chainId: number) {
+ // todo
+ }
+
+ async function getContract(address: string, abi: any) {
+ if (!signer.value) {
+ throw new Error('No signer found')
+ }
+ const contract = new ethers.Contract(address, abi, signer.value)
+ return contract
+ }
+
+ return {
+ ...useVueDapp(),
+ chainId: computed(() => wallet.chainId || null),
+ isConnected: computed(() => {
+ return isConnected.value && !!signer.value
+ }),
+
+ provider,
+ signer,
+ balance,
+ hasWallet,
+ block,
+
+ signerAddress,
+ chainName,
+ isSuppportedNetwork,
+ shortSigner,
+ currencyData,
+ faucets,
+ explorer,
+
+ connect,
+ setWallet,
+ resetWallet,
+ getBalance,
+ switchNetwork,
+ getContract,
+ }
+})
+
+export const useEVMDeprecated = 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,
+ }
+ },
+ faucets(): 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 +332,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..c1f927c 100644
--- a/client/src/stores/galaxy.ts
+++ b/client/src/stores/galaxy.ts
@@ -6,420 +6,355 @@ 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.contract.isConnected) {
+ throw new Error('Wallet is not connected')
+ }
+ 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() {
+ console.log('getPlayerSystemData', await this.contract.read('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 is bigint
+ 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: './',
})