From de3c82e565475d263e7d771885cda184de2abace Mon Sep 17 00:00:00 2001 From: "zapaz.eth" Date: Thu, 25 Apr 2024 16:21:19 +0200 Subject: [PATCH] add some stats --- .vscode/settings.json | 2 +- common/src/common/config.ts | 9 +- common/src/common/networks.ts | 20 +- common/src/common/types.ts | 1 + .../src/resolver/resolver-get-collection.ts | 12 + config/src/mainnets.handlebars.json | 11 +- config/src/testnets.handlebars.json | 78 ++- contracts/addresses.json | 64 ++- contracts/etherscan-networks.txt | 8 + contracts/foundry.toml | 15 +- contracts/http/transactions.http | 12 + contracts/package.json | 4 +- .../scripts/deploy/DeployOpenAutoMarket.s.sol | 2 +- .../deploy/DeployOpenNFTsFactoryV3.s.sol | 9 +- .../deploy/DeployOpenNFTsResolver.s.sol | 3 +- .../scripts/deploy/DeployOpenNFTsV4.s.sol | 3 +- pnpm-lock.yaml | 488 +++++++++--------- providers/src/callResolver.ts | 2 +- svelte/src/components/Account/Account.svelte | 2 +- .../src/components/Global/Navigation.svelte | 6 + sveltekit/package.json | 1 + sveltekit/src/routes/stats/+page.svelte | 52 ++ sveltekit/src/routes/stats/Addresses.svelte | 123 +++++ .../src/routes/stats/mainnets/+page.svelte | 11 + 24 files changed, 649 insertions(+), 289 deletions(-) create mode 100644 contracts/etherscan-networks.txt create mode 100644 contracts/http/transactions.http create mode 100644 sveltekit/src/routes/stats/+page.svelte create mode 100644 sveltekit/src/routes/stats/Addresses.svelte create mode 100644 sveltekit/src/routes/stats/mainnets/+page.svelte diff --git a/.vscode/settings.json b/.vscode/settings.json index 1e8b71de2..1d675d7e0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -84,7 +84,7 @@ "avoid-sha3": "warn" }, "window.zoomLevel": 0, - "workbench.colorTheme": "Night Owl Light", + "workbench.colorTheme": "Kiwi Light (rainglow)", "workbench.layoutControl.enabled": true, "workbench.statusBar.visible": true, "favorites.sortOrder": "DESC", diff --git a/common/src/common/config.ts b/common/src/common/config.ts index dcef7606a..3817ccb1f 100644 --- a/common/src/common/config.ts +++ b/common/src/common/config.ts @@ -47,6 +47,9 @@ const addresses = JSON.parse(JSON.stringify(addressesRaw)); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return const getAddresses = (chainId: number | string): AddressesType | undefined => addresses[String(chainId)]; +const getAddressOpenNFTsTemplate = (chainId: number): string => getAddresses(chainId)?.OpenNFTsV4 || ""; +const getAddressOpenAutoMarket = (chainId: number): string => getAddresses(chainId)?.OpenAutoMarket || ""; + // GET OpenMulti address const getOpenBound = (chainId: number): string => getAddresses(chainId)?.OpenBound || ""; const hasOpenBound = (chainId: number): boolean => isAddress(getOpenBound(chainId)); @@ -113,11 +116,11 @@ const textShort = (str: string, n = 16, p = n): string => { return str.substring(0, n) + (l < n ? "" : "..." + (p > 0 ? str.substring(l - p, l) : "")); }; -const getShortAddress = (address: string, n = 8): string => +const getShortAddress = (address: string, n = 4): string => address ? address.endsWith(".eth") ? textShort(address, 2 * n, 0) - : textShort(getChecksumAddress(address), n, n) + : textShort(getChecksumAddress(address), n + 2, n) : "?"; // GENERIC helpers @@ -362,6 +365,8 @@ export { getShortAddress, getChecksumAddress, getAddresses, + getAddressOpenNFTsTemplate, + getAddressOpenAutoMarket, getOpenBound, hasOpenBound, getDappUrl, diff --git a/common/src/common/networks.ts b/common/src/common/networks.ts index 580e12c6b..1c24f7b80 100644 --- a/common/src/common/networks.ts +++ b/common/src/common/networks.ts @@ -15,9 +15,17 @@ const networks = (() => { // const _getMap = (): Map | undefined => _networksMap; const _getAll = (): NetworkType[] => [...(_networksMap?.values() || [])]; - const _getAllActive = (): NetworkType[] => _getAll().filter((nw: NetworkType) => !(nw.active === false)); + const getAllInactive = (): NetworkType[] => _getAll().filter((nw: NetworkType) => nw.active === false); + const getAllActive = (): NetworkType[] => _getAll().filter((nw: NetworkType) => !(nw.active === false)); const getAllSameType = (chainId: chainIdish): NetworkType[] => - _getAllActive().filter((nw: NetworkType) => isMainnet(nw.chainId) === isMainnet(chainId)); + getAllActive().filter((nw: NetworkType) => isMainnet(nw.chainId) === isMainnet(chainId)); + + const getAllMainnets = (): NetworkType[] => getAllActive().filter((nw: NetworkType) => isMainnet(nw.chainId)); + + const getAllTestnets = (): NetworkType[] => getAllActive().filter((nw: NetworkType) => isTestnet(nw.chainId)); + + const getAllOpMainnets = (): NetworkType[] => + getAllActive().filter((nw: NetworkType) => isOpStack(nw.chainId) && isMainnet(nw.chainId)); const get = (chainId: chainIdish): NetworkType | undefined => _networksMap?.get(Number(chainId)); @@ -39,12 +47,13 @@ const networks = (() => { const has = (chainId: chainIdish): boolean => _networksMap?.has(Number(chainId)); - const isActive = (chainId: chainIdish): boolean => get(chainId)?.active || false; + const isActive = (chainId: chainIdish): boolean => get(chainId)?.active || true; const isEip1559 = (chainId: chainIdish): boolean => Boolean(get(chainId)?.eip1559); const isMainnet = (chainId: chainIdish): boolean => getLinkedMainnet(chainId) == 0; const isTestnet = (chainId: chainIdish): boolean => !isMainnet(chainId); const isLayer1 = (chainId: chainIdish): boolean => getLinkedLayer1(chainId) === undefined; const isLayer2 = (chainId: chainIdish): boolean => !isLayer1(chainId); + const isOpStack = (chainId: chainIdish): boolean => get(chainId)?.opstack || false; const getChainName = (chainId: chainIdish): string | undefined => get(chainId)?.chainName; const getChainLabel = (chainId: chainIdish): string | undefined => @@ -60,7 +69,12 @@ const networks = (() => { has, get, + getAllActive, + getAllInactive, getAllSameType, + getAllMainnets, + getAllTestnets, + getAllOpMainnets, getBlur, getBlurUrl, diff --git a/common/src/common/types.ts b/common/src/common/types.ts index 9048652c6..5baaf871a 100644 --- a/common/src/common/types.ts +++ b/common/src/common/types.ts @@ -37,6 +37,7 @@ type NetworkType = { covalent?: { active: boolean; url?: string; key?: string }; linkedLayer1?: number; linkedMainnet?: number; + opstack?: boolean; active?: boolean; create?: boolean; admin?: string; diff --git a/common/src/resolver/resolver-get-collection.ts b/common/src/resolver/resolver-get-collection.ts index 9efab0f79..0eeef7412 100644 --- a/common/src/resolver/resolver-get-collection.ts +++ b/common/src/resolver/resolver-get-collection.ts @@ -89,7 +89,19 @@ const resolverGetCollections = async ( return collections; }; +const countCollectionsCache = new Map(); +const resolverCountCollections = async (chainId: number): Promise => { + if (!countCollectionsCache.has(chainId)) { + const nftsResolver = await resolverGetContract(chainId); + const countCollections = Number(await nftsResolver.countAddresses()); + countCollectionsCache.set(chainId, countCollections); + } + + return countCollectionsCache.get(chainId); +}; + export { + resolverCountCollections, resolverGetCollections, resolverGetCollection, resolverAreCollections, diff --git a/config/src/mainnets.handlebars.json b/config/src/mainnets.handlebars.json index 092b5f643..2c651e20d 100644 --- a/config/src/mainnets.handlebars.json +++ b/config/src/mainnets.handlebars.json @@ -94,6 +94,7 @@ "url": "https://opt-mainnet.g.alchemy.com/nft/v2/{{ALCHEMY_API_KEY_OPTIMISM}}", "active": true }, + "opstack": true, "create": true, "linkedLayer1": 1 }, @@ -137,6 +138,7 @@ "url": "https://base-mainnet.g.alchemy.com/nft/v2/{{ALCHEMY_API_KEY_BASE}}", "active": false }, + "opstack": true, "etherscanApiKey": "{{ETHERSCAN_API_KEY_BASE}}", "create": true, "linkedLayer1": 1 @@ -145,8 +147,8 @@ "chainId": 5000, "chainName": "mantle", "rpcUrls": [ - "https://rpc.mantle.xyz", "https://rpc.ankr.com/mantle", + "https://rpc.mantle.xyz", "https://1rpc.io/mantle" ], "nativeCurrency": { @@ -157,6 +159,7 @@ "blockExplorerUrls": [ "https://explorer.mantle.xyz/" ], + "opstack": true, "linkedLayer1": 1, "create": true }, @@ -176,6 +179,7 @@ "blockExplorerUrls": [ "https://explorer.mode.network/" ], + "opstack": true, "linkedLayer1": 1, "create": true }, @@ -195,6 +199,7 @@ "blockExplorerUrls": [ "https://blastscan.io" ], + "opstack": true, "create": true, "active": true, "linkedLayer1": 1 @@ -253,6 +258,7 @@ "blockExplorerUrls": [ "https://explorer.zora.energy" ], + "opstack": true, "linkedLayer1": 1, "active": true, "create": true @@ -372,7 +378,7 @@ "chainName": "bsc", "chainLabel": "Binance Smart Chain", "rpcUrls": [ - "https://bsc-dataseed1.binance.org", + "https://bsc-rpc.publicnode.com", "https://rpc.ankr.com/bsc", "https://bsc-dataseed.binance.org", "https://bsc-dataseed1.defibit.io", @@ -439,6 +445,7 @@ "blockExplorerUrls": [ "https://pacific-explorer.manta.network" ], + "opstack": true, "create": true, "active": false, "linkedLayer1": 0 diff --git a/config/src/testnets.handlebars.json b/config/src/testnets.handlebars.json index 39eeab601..1618488ef 100644 --- a/config/src/testnets.handlebars.json +++ b/config/src/testnets.handlebars.json @@ -59,6 +59,7 @@ "https://base-sepolia.blockscout.com" ], "etherscanApiKey": "{{ETHERSCAN_API_KEY_BASE}}", + "opstack": true, "create": true, "linkedMainnet": 8453, "linkedLayer1": 11155111 @@ -77,6 +78,7 @@ "blockExplorerUrls": [ "https://sepolia.explorer.zora.energy/" ], + "opstack": true, "linkedMainnet": 7777777, "linkedLayer1": 11155111, "create": true @@ -95,6 +97,7 @@ "blockExplorerUrls": [ "https://testnet.blastscan.io" ], + "opstack": true, "create": true, "linkedMainnet": 81457, "linkedLayer1": 11155111 @@ -113,6 +116,7 @@ "blockExplorerUrls": [ "https://giant-half-dual-testnet.explorer.testnet.skalenodes.com/" ], + "opstack": true, "linkedMainnet": 34443, "linkedLayer1": 11155111, "create": true @@ -160,6 +164,7 @@ "https://goerli.basescan.org", "https://base-goerli.blockscout.com" ], + "opstack": true, "etherscanApiKey": "{{ETHERSCAN_API_KEY_BASE}}", "create": true, "linkedMainnet": 8453, @@ -168,7 +173,7 @@ }, { "chainId": 59140, - "chainName": "linea-testnet", + "chainName": "linea-goerli", "rpcUrls": [ "https://linea-goerli.infura.io/v3/{{INFURA_API_KEY}}", "https://rpc.goerli.linea.build" @@ -185,7 +190,47 @@ "linkedMainnet": 59144, "linkedLayer1": 5, "create": true, - "active": false + "active": true + }, + { + "chainId": 59141, + "chainName": "linea-sepolia", + "rpcUrls": [ + "https://linea-sepolia.infura.io/v3/{{INFURA_API_KEY}}", + "https://rpc.sepolia.linea.build" + ], + "nativeCurrency": { + "name": "Linea Ether", + "symbol": "ETH", + "decimals": 18 + }, + "blockExplorerUrls": [ + "https://sepolia.lineascan.build", + "https://explorer.sepolia.linea.build" + ], + "linkedMainnet": 59144, + "linkedLayer1": 5, + "create": true, + "active": true + }, + { + "chainId": 2442, + "chainName": "polygon-zkevm-cardona", + "rpcUrls": [ + "https://rpc.cardona.zkevm-rpc.com" + ], + "nativeCurrency": { + "name": "Ether", + "symbol": "zktETH", + "decimals": 18 + }, + "blockExplorerUrls": [ + "https://testnet-zkevm.polygonscan.com" + ], + "etherscanApiKey": "{{ETHERSCAN_API_KEY_POLYGON_ZKEVM}}", + "linkedMainnet": 1101, + "linkedLayer1": 11155111, + "create": true }, { "chainId": 1442, @@ -203,6 +248,7 @@ "https://explorer.public.zkevm-test.net" ], "etherscanApiKey": "{{ETHERSCAN_API_KEY_POLYGON_ZKEVM}}", + "active": false, "linkedMainnet": 1101, "linkedLayer1": 5, "create": true @@ -243,6 +289,25 @@ "linkedLayer1": 17000, "create": true }, + { + "chainId": 80002, + "chainName": "amoy", + "rpcUrls": [ + "https://polygon-amoy.infura.io/v3/{{INFURA_API_KEY}}", + "https://rpc-amoy.polygon.technology" + ], + "nativeCurrency": { + "name": "Matic", + "symbol": "tMATIC", + "decimals": 18 + }, + "blockExplorerUrls": [ + "https://amoy.polygonscan.com" + ], + "etherscanApiKey": "{{ETHERSCAN_API_KEY_POLYGON}}", + "create": true, + "linkedMainnet": 137 + }, { "chainId": 80001, "chainName": "mumbai", @@ -266,6 +331,7 @@ "url": "https://api.thegraph.com/subgraphs/name/zapaz/eip721-mumbai", "active": true }, + "active": false, "etherscanApiKey": "{{ETHERSCAN_API_KEY_POLYGON}}", "create": true, "linkedMainnet": 137 @@ -352,10 +418,8 @@ "chainId": 97, "chainName": "bsc-testnet", "rpcUrls": [ - "https://data-seed-prebsc-1-s1.binance.org:8545", - "https://rpc.ankr.com/bsc_testnet_chapel", - "https://data-seed-prebsc-2-s1.binance.org:8545", - "https://data-seed-prebsc-1-s2.binance.org:8545" + "https://bsc-testnet-rpc.publicnode.com", + "https://bsc-testnet.public.blastapi.io" ], "nativeCurrency": { "name": "BNB", @@ -402,6 +466,7 @@ "blockExplorerUrls": [ "https://staging-fast-active-bellatrix.explorer.staging-v3.skalenodes.com" ], + "active": false, "eip1559": false, "create": true, "linkedMainnet": 1564830818 @@ -439,6 +504,7 @@ "blockExplorerUrls": [ "https://pacific-explorer.testnet.manta.network" ], + "opstack": true, "create": true, "linkedMainnet": 169, "linkedLayer1": 0 diff --git a/contracts/addresses.json b/contracts/addresses.json index 3338c5161..53248843b 100644 --- a/contracts/addresses.json +++ b/contracts/addresses.json @@ -62,12 +62,6 @@ "OpenNFTsV4": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", "chainName": "chaos-testnet" }, - "974399131": { - "OpenNFTsFactoryV3": "0x0e4B980c44feF474e650BfdE5020aAA7aCAe6f06", - "OpenNFTsResolver": "0x9ffa4fa32d2ac629b8F39Cb226a5dC3508D1e78d", - "OpenNFTsV4": "0x37C3aAbb1C9c3c344BbD5801AefDaf40180Be070", - "chainName": "calypso-testnet" - }, "137": { "OpenAutoMarket": "0x5Cf67C52eD5608B9841238bCc2bDe012263b7111", "OpenBound": "0xE82984f872B68B6B369D5700654F229ba6f57c42", @@ -115,6 +109,13 @@ "OpenNFTsV4": "0x1524E69d35961dee5Ab066269efb6c4992367019", "chainName": "holesky" }, + "2442": { + "OpenAutoMarket": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", + "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", + "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", + "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", + "chainName": "polygon-zkevm-cardona" + }, "250": { "OpenAutoMarket": "0x1f63086f424412321559C2CA2449374e90F1f8Ed", "OpenNFTs": "0x1f63086f424412321559C2CA2449374e90F1f8Ed", @@ -126,6 +127,10 @@ "chainName": "fantom" }, "31337": { + "OpenAutoMarket": "0xd771D7C0e1EBE89C9E9F663824851BB89b926d1a", + "OpenNFTsFactoryV3": "0x0116686E2291dbd5e317F47faDBFb43B599786Ef", + "OpenNFTsResolver": "0x9bAaB117304f7D6517048e371025dB8f89a8DbE5", + "OpenNFTsV4": "0x31A65C6d4EB07ad51E7afc890aC3b7bE84dF2Ead", "chainName": "local" }, "3441005": { @@ -142,12 +147,19 @@ "OpenNFTsV4": "0x07Fc1f455D198B518B1998dCc0EE63cB8c77491d", "chainName": "mode" }, + "4002": { + "OpenAutoMarket": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", + "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", + "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", + "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", + "chainName": "fantom-testnet" + }, "41": { - "OpenAutoMarket": "", "OpenNFTs": "0x78E6DA4fBFc2653A76485df46dF070B120E36761", "OpenNFTsFactoryV3": "0x715D41B9aBfA225874F8A065192eda47af130304", + "OpenNFTsFactoryV3_last": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", "OpenNFTsResolver": "0x051A23bA9385A7c3a85170b389E7eEE88f794686", - "OpenNFTsV4": "", + "OpenNFTsV4_last": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", "chainName": "telos-testnet" }, "42161": { @@ -176,6 +188,13 @@ "OpenNFTsV4": "0x98C1c1AA566C329f339488Af2F8F95D33cf1A507", "chainName": "avalanche" }, + "44787": { + "OpenAutoMarket": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", + "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", + "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", + "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", + "chainName": "celo-alfajores" + }, "5": { "OpenAutoMarket": "0x56DF6Ae816eaA7db209E517d836938BeC7c7f394", "OpenNFTs": "0xBD10C1BB5e8935a2acE2dFC1249229D837e79F67", @@ -227,7 +246,14 @@ "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", - "chainName": "linea-testnet" + "chainName": "linea-goerli" + }, + "59141": { + "OpenAutoMarket": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", + "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", + "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", + "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", + "chainName": "linea-sepolia" }, "59144": { "OpenAutoMarket": "0x8536758032eBa6C451F03BC058D23Bf84337E47d", @@ -251,6 +277,13 @@ "OpenNFTsV4": "0x49757e957c54525f517f458aF1aECe2704dAc959", "chainName": "mumbai" }, + "80002": { + "OpenAutoMarket": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", + "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", + "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", + "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", + "chainName": "amoy" + }, "81457": { "OpenAutoMarket": "0x8536758032eBa6C451F03BC058D23Bf84337E47d", "OpenNFTsFactoryV3": "0xFc008F04042530Bf0bd8333FBe45470b514bD847", @@ -286,6 +319,19 @@ "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", "chainName": "mode-sepolia" }, + "97": { + "OpenAutoMarket": "0x485ed00c43e919E02279Ca137343B2aC63EF0eF2", + "OpenNFTsFactoryV3": "0xb5c8CB0846317d82af2DbF90713716B01A2f680a", + "OpenNFTsResolver": "0x25F56b5527F5634752Fd2C85564E8d2484cAAEF3", + "OpenNFTsV4": "0xd1ca741de2d2975822ADf4646Cf0A8AE3Df51c78", + "chainName": "bsc-testnet" + }, + "974399131": { + "OpenNFTsFactoryV3": "0x0e4B980c44feF474e650BfdE5020aAA7aCAe6f06", + "OpenNFTsResolver": "0x9ffa4fa32d2ac629b8F39Cb226a5dC3508D1e78d", + "OpenNFTsV4": "0x37C3aAbb1C9c3c344BbD5801AefDaf40180Be070", + "chainName": "calypso-testnet" + }, "999": { "OpenAutoMarket": "0x10bdda29d9a84dC0E8C263B29734d4502a74BCF2", "OpenNFTsFactoryV3": "0xECC12ab909CfaEb5989E35509218f399c8Dc4b4c", diff --git a/contracts/etherscan-networks.txt b/contracts/etherscan-networks.txt new file mode 100644 index 000000000..b7486ac5c --- /dev/null +++ b/contracts/etherscan-networks.txt @@ -0,0 +1,8 @@ + [mainnet, morden, ropsten, rinkeby, goerli, kovan, holesky, sepolia, optimism, optimism-kovan, optimism-goerli, optimism-sepolia, + arbitrum, arbitrum-testnet, arbitrum-goerli, arbitrum-sepolia, arbitrum-nova, cronos, cronos-testnet, rsk, bsc, bsc-testnet, poa, + sokol, scroll, scroll-sepolia, metis, xdai, polygon, mumbai, amoy, polygon-zkevm, polygon-zkevm-testnet, fantom, fantom-testnet, + moonbeam, moonbeam-dev, moonriver, moonbase, dev, anvil-hardhat, evmos, evmos-testnet, chiado, oasis, emerald, emerald-testnet, + filecoin-mainnet, filecoin-calibration-testnet, avalanche, fuji, celo, celo-alfajores, celo-baklava, aurora, aurora-testnet, canto, + canto-testnet, boba, base, base-goerli, base-sepolia, syndr, syndr-sepolia, fraxtal, fraxtal-testnet, blast, blast-sepolia, linea, + linea-goerli, zksync, zksync-testnet, mantle, mantle-testnet, viction, zora, zora-goerli, zora-sepolia, pgn, pgn-sepolia, mode, + mode-sepolia, elastos, kakarot-sepolia, etherlink-testnet, degen] diff --git a/contracts/foundry.toml b/contracts/foundry.toml index ddc8ff7bd..9568646ee 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -33,20 +33,27 @@ mantle = "https://rpc.ankr.com/mantle" mode = "https://mainnet.mode.network" manta-pacific = "https://pacific-rpc.manta.network/http" blast = "https://blast-mainnet.infura.io/v3/${INFURA_API_KEY}" +celo = "https://forno.celo.org" # TESTNETS -anvil = "http://127.0.0.1:8545" sepolia = "https://sepolia.infura.io/v3/${INFURA_API_KEY}" mumbai = "https://polygon-mumbai.infura.io/v3/${INFURA_API_KEY}" +amoy = "https://polygon-amoy.infura.io/v3/${INFURA_API_KEY}" optimism-sepolia = "https://optimism-sepolia.infura.io/v3/${INFURA_API_KEY}" arbitrum-sepolia = "https://arbitrum-sepolia.infura.io/v3/${INFURA_API_KEY}" fuji = "https://avalanche-fuji.infura.io/v3/${INFURA_API_KEY}" +blast-sepolia = "https://blast-sepolia.infura.io/v3/${INFURA_API_KEY}" +celo-alfajores = "https://celo-alfajores.infura.io/v3/${INFURA_API_KEY}" + +bsc-testnet = "https://bsc-testnet-rpc.publicnode.com" holesky = "https://ethereum-holesky.publicnode.com" base-sepolia = "https://sepolia.base.org/" -linea-testnet = "https://rpc.goerli.linea.build/" +linea-goerli = "https://rpc.goerli.linea.build/" +linea-sepolia = "https://rpc.sepolia.linea.build/" telos-testnet = "https://testnet.telos.net/evm" chiado = "https://rpc.chiadochain.net" polygon-zkevm-testnet = "https://rpc.public.zkevm-test.net" +polygon-zkevm-cardona = "https://rpc.cardona.zkevm-rpc.com" scroll-alpha-testnet = "https://alpha-rpc.scroll.io/l2" scroll-sepolia = "https://sepolia-rpc.scroll.io/" pgn-sepolia = "https://sepolia.publicgoods.network" @@ -58,7 +65,9 @@ manta-pacific-testnet = "https://pacific-rpc.testnet.manta.network/http" chaos-testnet = "https://staging-v3.skalenodes.com/v1/staging-fast-active-bellatrix" calypso-testnet = "https://testnet.skalenodes.com/v1/giant-half-dual-testnet" taiko-katla = "https://rpc.katla.taiko.xyz" -blast-sepolia = "https://blast-sepolia.infura.io/v3/${INFURA_API_KEY}" +fantom-testnet = "https://rpc.ankr.com/fantom_testnet" + +anvil = "http://127.0.0.1:8545" [etherscan] gnosis = { key = "${ETHERSCAN_API_KEY_GNOSIS}" } diff --git a/contracts/http/transactions.http b/contracts/http/transactions.http new file mode 100644 index 000000000..2af6048d9 --- /dev/null +++ b/contracts/http/transactions.http @@ -0,0 +1,12 @@ +@eth = https://api.etherscan.io/api?module=account&action=txlist&sort=asc&apikey={{$processEnv ETHERSCAN_API_KEY}} +@op = https://api-optimistic.etherscan.io/api?module=account&action=txlist&sort=asc&apikey={{$processEnv ETHERSCAN_API_KEY_OPTIMISM}} + +@address = 0x981ab0D817710d8FFFC5693383C00D985A3BDa38 + + +### +GET {{op}}&address={{address}} + +### +GET {{eth}}&address={{address}} + diff --git a/contracts/package.json b/contracts/package.json index a700c1ee5..edee1e4df 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -29,7 +29,7 @@ "build:typechain": "typechain --target ethers-v5 --out-dir types out/**/*.json", "check": "pnpm check:solidity", "check:solidity": "solhint src/**/*.sol", - "deploy:deploy": "pnpm deploy:all --fork-url $CHAIN --sender $SENDER --account $ACCOUNT --broadcast --with-gas-price 100000000 wei", + "deploy:deploy": "pnpm deploy:all --fork-url $CHAIN --sender $SENDER --account $ACCOUNT --broadcast", "deploy:validate": "pnpm deploy:all --fork-url $CHAIN --sender $SENDER", "deploy:testnet": "SENDER=$TESTNET_SENDER ACCOUNT=$TESTNET_ACCOUNT pnpm deploy:deploy", "deploy:mainnet": "SENDER=$MAINNET_SENDER ACCOUNT=$MAINNET_ACCOUNT pnpm deploy:deploy", @@ -44,4 +44,4 @@ "tests": "pnpm tests:forge", "tests:forge": "forge test" } -} +} \ No newline at end of file diff --git a/contracts/scripts/deploy/DeployOpenAutoMarket.s.sol b/contracts/scripts/deploy/DeployOpenAutoMarket.s.sol index 8670c924f..8018c91ae 100644 --- a/contracts/scripts/deploy/DeployOpenAutoMarket.s.sol +++ b/contracts/scripts/deploy/DeployOpenAutoMarket.s.sol @@ -19,7 +19,7 @@ contract DeployOpenAutoMarket is DeployLite { if (state == DeployState.None) { vm.startBroadcast(); - address openAutoMarket = deployLite("OpenAutoMarket", ""); + address openAutoMarket = deploy("OpenAutoMarket", ""); bool[] memory options = new bool[](2); options[0] = true; diff --git a/contracts/scripts/deploy/DeployOpenNFTsFactoryV3.s.sol b/contracts/scripts/deploy/DeployOpenNFTsFactoryV3.s.sol index 5274cd6d7..4300de7c6 100644 --- a/contracts/scripts/deploy/DeployOpenNFTsFactoryV3.s.sol +++ b/contracts/scripts/deploy/DeployOpenNFTsFactoryV3.s.sol @@ -10,18 +10,11 @@ import {console} from "forge-std/console.sol"; contract DeployOpenNFTsFactoryV3 is DeployLite { function deployOpenNFTsFactoryV3() public returns (address) { address treasuryAccount = vm.envAddress("TREASURY_ACCOUNT"); - console.log("deployOpenNFTsFactoryV3 ~ treasuryAccount:", treasuryAccount); uint96 treasuryFee = 90; bytes memory args = abi.encode(msg.sender, treasuryAccount, treasuryFee); - DeployState state = deployState("OpenNFTsFactoryV3"); - if (state == DeployState.None) { - vm.broadcast(); - deployLite("OpenNFTsFactoryV3", args); - } - - return readAddress("OpenNFTsFactoryV3"); + return deployLite("OpenNFTsFactoryV3", args); } function run() public virtual { diff --git a/contracts/scripts/deploy/DeployOpenNFTsResolver.s.sol b/contracts/scripts/deploy/DeployOpenNFTsResolver.s.sol index a680ba50e..95ae6906d 100644 --- a/contracts/scripts/deploy/DeployOpenNFTsResolver.s.sol +++ b/contracts/scripts/deploy/DeployOpenNFTsResolver.s.sol @@ -23,8 +23,7 @@ contract DeployOpenNFTsResolver is DeployLite, DeployOpenNFTsFactoryV3 { if (state == DeployState.None) { vm.startBroadcast(); - - address openNFTsResolver = deployLite("OpenNFTsResolver", args); + address openNFTsResolver = deploy("OpenNFTsResolver", args); OpenNFTsFactoryV3(openNFTsFactoryV3).setResolver(openNFTsResolver); diff --git a/contracts/scripts/deploy/DeployOpenNFTsV4.s.sol b/contracts/scripts/deploy/DeployOpenNFTsV4.s.sol index 2785ab295..fa11e5a5e 100644 --- a/contracts/scripts/deploy/DeployOpenNFTsV4.s.sol +++ b/contracts/scripts/deploy/DeployOpenNFTsV4.s.sol @@ -18,8 +18,7 @@ contract DeployOpenNFTsV4 is DeployLite { if (state == DeployState.None) { vm.startBroadcast(msg.sender); - - address openNFTsV4 = deployLite("OpenNFTsV4", ""); + address openNFTsV4 = deploy("OpenNFTsV4", ""); bool[] memory options = new bool[](1); options[0] = true; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7353572b..f535a7a21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^7.7.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5) + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.57.0)(typescript@5.4.5) + version: 7.7.1(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -70,7 +70,7 @@ importers: version: 13.1.0 viem: specifier: ^2.9.21 - version: 2.9.23(typescript@5.4.5) + version: 2.9.26(typescript@5.4.5) devDependencies: '@ipld/dag-pb': specifier: ^4.1.0 @@ -201,13 +201,13 @@ importers: devDependencies: viem: specifier: ^2.9.21 - version: 2.9.23(typescript@5.4.5) + version: 2.9.26(typescript@5.4.5) skale: dependencies: viem: specifier: ^2.9.21 - version: 2.9.23(typescript@5.4.5) + version: 2.9.26(typescript@5.4.5) devDependencies: tsup: specifier: ^8.0.2 @@ -239,28 +239,28 @@ importers: version: 2.0.0 '@rollup/plugin-commonjs': specifier: ^25.0.7 - version: 25.0.7(rollup@4.14.3) + version: 25.0.7(rollup@4.16.4) '@rollup/plugin-image': specifier: ^3.0.3 - version: 3.0.3(rollup@4.14.3) + version: 3.0.3(rollup@4.16.4) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.14.3) + version: 6.1.0(rollup@4.16.4) '@rollup/plugin-node-resolve': specifier: ^15.2.3 - version: 15.2.3(rollup@4.14.3) + version: 15.2.3(rollup@4.16.4) '@rollup/plugin-replace': specifier: ^5.0.5 - version: 5.0.5(rollup@4.14.3) + version: 5.0.5(rollup@4.16.4) '@rollup/plugin-terser': specifier: ^0.4.4 - version: 0.4.4(rollup@4.14.3) + version: 0.4.4(rollup@4.16.4) '@rollup/plugin-typescript': specifier: ^11.1.6 - version: 11.1.6(rollup@4.14.3)(tslib@2.6.2)(typescript@5.4.5) + version: 11.1.6(rollup@4.16.4)(tslib@2.6.2)(typescript@5.4.5) '@rollup/pluginutils': specifier: ^5.1.0 - version: 5.1.0(rollup@4.14.3) + version: 5.1.0(rollup@4.16.4) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.4 @@ -275,7 +275,7 @@ importers: version: 7.1.0 eslint-plugin-svelte: specifier: ^2.37.0 - version: 2.37.0(eslint@8.57.0)(svelte@4.2.15)(ts-node@10.9.2) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.15)(ts-node@10.9.2) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -290,13 +290,13 @@ importers: version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) rollup: specifier: ^4.14.3 - version: 4.14.3 + version: 4.16.4 rollup-plugin-postcss: specifier: ^4.0.2 version: 4.0.2(postcss@8.4.38)(ts-node@10.9.2) rollup-plugin-svelte: specifier: ^7.2.0 - version: 7.2.0(rollup@4.14.3)(svelte@4.2.15) + version: 7.2.0(rollup@4.16.4)(svelte@4.2.15) semver: specifier: ^7.6.0 version: 7.6.0 @@ -305,7 +305,7 @@ importers: version: 4.2.15 svelte-check: specifier: ^3.6.9 - version: 3.6.9(postcss@8.4.38)(svelte@4.2.15) + version: 3.7.0(postcss@8.4.38)(svelte@4.2.15) svelte-preprocess: specifier: ^5.1.4 version: 5.1.4(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5) @@ -321,6 +321,9 @@ importers: '@kredeum/common': specifier: workspace:^ version: link:../common + '@kredeum/contracts': + specifier: workspace:^ + version: link:../contracts '@kredeum/providers': specifier: workspace:^ version: link:../providers @@ -333,13 +336,13 @@ importers: version: 1.43.1 '@sveltejs/adapter-static': specifier: ^3.0.1 - version: 3.0.1(@sveltejs/kit@2.5.6) + version: 3.0.1(@sveltejs/kit@2.5.7) '@sveltejs/kit': specifier: ^2.5.6 - version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.15)(vite@5.2.9) + version: 3.1.0(svelte@4.2.15)(vite@5.2.10) '@synthetixio/synpress': specifier: 3.7.2-beta.10 version: 3.7.2-beta.10(@babel/core@7.24.4)(@babel/preset-env@7.24.4)(babel-loader@9.1.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)(webpack@5.91.0) @@ -351,7 +354,7 @@ importers: version: 4.2.15 svelte-check: specifier: ^3.6.9 - version: 3.6.9(@babel/core@7.24.4)(svelte@4.2.15) + version: 3.7.0(@babel/core@7.24.4)(svelte@4.2.15) tslib: specifier: ^2.6.2 version: 2.6.2 @@ -360,13 +363,13 @@ importers: version: 5.4.5 viem: specifier: ^2.9.21 - version: 2.9.23(typescript@5.4.5) + version: 2.9.26(typescript@5.4.5) vite: specifier: ^5.2.9 - version: 5.2.9(@types/node@20.12.7) + version: 5.2.10(@types/node@20.12.7) vitest: specifier: ^1.5.0 - version: 1.5.0(@types/node@20.12.7) + version: 1.5.2(@types/node@20.12.7) wordpress: dependencies: @@ -501,8 +504,8 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4): - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.4): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -1510,9 +1513,9 @@ packages: '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4) core-js-compat: 3.37.0 semver: 6.3.1 transitivePeerDependencies: @@ -1599,8 +1602,8 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@cypress/code-coverage@3.12.35(@babel/core@7.24.4)(@babel/preset-env@7.24.4)(babel-loader@9.1.3)(cypress@12.17.3)(webpack@5.91.0): - resolution: {integrity: sha512-QmgyW9x8Z524qQc9BVFD+Dm/XMFgj1eafUg4N7xwpxN2lGmJs9EtiiRDpkbe+2BUAlFTAtveRyYE9q4wyz8Lcw==} + /@cypress/code-coverage@3.12.36(@babel/core@7.24.4)(@babel/preset-env@7.24.4)(babel-loader@9.1.3)(cypress@12.17.3)(webpack@5.91.0): + resolution: {integrity: sha512-+oI0HXRgQ33jRjt3DED0K333Qp+52PuhY3Ka7j1N2qbjmshvM+kX+C9R51vELbuoPRDWGsYIdQ4A4ECK9rnrVg==} peerDependencies: '@babel/core': ^7.0.1 '@babel/preset-env': ^7.0.0 @@ -2955,7 +2958,7 @@ packages: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.14.3): + /@rollup/plugin-commonjs@25.0.7(rollup@4.16.4): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2964,16 +2967,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.10 - rollup: 4.14.3 + rollup: 4.16.4 dev: true - /@rollup/plugin-image@3.0.3(rollup@4.14.3): + /@rollup/plugin-image@3.0.3(rollup@4.16.4): resolution: {integrity: sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2982,12 +2985,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) mini-svg-data-uri: 1.4.4 - rollup: 4.14.3 + rollup: 4.16.4 dev: true - /@rollup/plugin-json@6.1.0(rollup@4.14.3): + /@rollup/plugin-json@6.1.0(rollup@4.16.4): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2996,11 +2999,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.14.3) - rollup: 4.14.3 + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) + rollup: 4.16.4 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.14.3): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.16.4): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3009,16 +3012,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.14.3 + rollup: 4.16.4 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.14.3): + /@rollup/plugin-replace@5.0.5(rollup@4.16.4): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3027,12 +3030,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) magic-string: 0.30.10 - rollup: 4.14.3 + rollup: 4.16.4 dev: true - /@rollup/plugin-terser@0.4.4(rollup@4.14.3): + /@rollup/plugin-terser@0.4.4(rollup@4.16.4): resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3041,13 +3044,13 @@ packages: rollup: optional: true dependencies: - rollup: 4.14.3 + rollup: 4.16.4 serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.30.3 + terser: 5.30.4 dev: true - /@rollup/plugin-typescript@11.1.6(rollup@4.14.3)(tslib@2.6.2)(typescript@5.4.5): + /@rollup/plugin-typescript@11.1.6(rollup@4.16.4)(tslib@2.6.2)(typescript@5.4.5): resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3060,9 +3063,9 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@rollup/pluginutils': 5.1.0(rollup@4.16.4) resolve: 1.22.8 - rollup: 4.14.3 + rollup: 4.16.4 tslib: 2.6.2 typescript: 5.4.5 dev: true @@ -3075,7 +3078,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.1.0(rollup@4.14.3): + /@rollup/pluginutils@5.1.0(rollup@4.16.4): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3087,131 +3090,131 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.14.3 + rollup: 4.16.4 dev: true - /@rollup/rollup-android-arm-eabi@4.14.3: - resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} + /@rollup/rollup-android-arm-eabi@4.16.4: + resolution: {integrity: sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.14.3: - resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==} + /@rollup/rollup-android-arm64@4.16.4: + resolution: {integrity: sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.14.3: - resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==} + /@rollup/rollup-darwin-arm64@4.16.4: + resolution: {integrity: sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.14.3: - resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==} + /@rollup/rollup-darwin-x64@4.16.4: + resolution: {integrity: sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.14.3: - resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==} + /@rollup/rollup-linux-arm-gnueabihf@4.16.4: + resolution: {integrity: sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.14.3: - resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==} + /@rollup/rollup-linux-arm-musleabihf@4.16.4: + resolution: {integrity: sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.14.3: - resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==} + /@rollup/rollup-linux-arm64-gnu@4.16.4: + resolution: {integrity: sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.14.3: - resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==} + /@rollup/rollup-linux-arm64-musl@4.16.4: + resolution: {integrity: sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: - resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==} + /@rollup/rollup-linux-powerpc64le-gnu@4.16.4: + resolution: {integrity: sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.14.3: - resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==} + /@rollup/rollup-linux-riscv64-gnu@4.16.4: + resolution: {integrity: sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.14.3: - resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==} + /@rollup/rollup-linux-s390x-gnu@4.16.4: + resolution: {integrity: sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.14.3: - resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==} + /@rollup/rollup-linux-x64-gnu@4.16.4: + resolution: {integrity: sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.14.3: - resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==} + /@rollup/rollup-linux-x64-musl@4.16.4: + resolution: {integrity: sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.14.3: - resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==} + /@rollup/rollup-win32-arm64-msvc@4.16.4: + resolution: {integrity: sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.14.3: - resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==} + /@rollup/rollup-win32-ia32-msvc@4.16.4: + resolution: {integrity: sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.14.3: - resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==} + /@rollup/rollup-win32-x64-msvc@4.16.4: + resolution: {integrity: sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==} cpu: [x64] os: [win32] requiresBuild: true @@ -3366,16 +3369,16 @@ packages: resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} dev: true - /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.5.6): + /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.5.7): resolution: {integrity: sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg==} peerDependencies: '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) + '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10) dev: true - /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9): - resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==} + /@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10): + resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} engines: {node: '>=18.13'} hasBin: true requiresBuild: true @@ -3384,10 +3387,10 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.10) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 4.3.2 + devalue: 5.0.0 esm-env: 1.0.0 import-meta-resolve: 4.0.0 kleur: 4.1.5 @@ -3398,10 +3401,10 @@ packages: sirv: 2.0.4 svelte: 4.2.15 tiny-glob: 0.2.9 - vite: 5.2.9(@types/node@20.12.7) + vite: 5.2.10(@types/node@20.12.7) dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9): + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10): resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: @@ -3409,30 +3412,30 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.10) debug: 4.3.4(supports-color@8.1.1) svelte: 4.2.15 - vite: 5.2.9(@types/node@20.12.7) + vite: 5.2.10(@types/node@20.12.7) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.9): + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.10): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.10) debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.10 svelte: 4.2.15 svelte-hmr: 0.16.0(svelte@4.2.15) - vite: 5.2.9(@types/node@20.12.7) - vitefu: 0.2.5(vite@5.2.9) + vite: 5.2.10(@types/node@20.12.7) + vitefu: 0.2.5(vite@5.2.10) transitivePeerDependencies: - supports-color dev: true @@ -3442,7 +3445,7 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - '@cypress/code-coverage': 3.12.35(@babel/core@7.24.4)(@babel/preset-env@7.24.4)(babel-loader@9.1.3)(cypress@12.17.3)(webpack@5.91.0) + '@cypress/code-coverage': 3.12.36(@babel/core@7.24.4)(@babel/preset-env@7.24.4)(babel-loader@9.1.3)(cypress@12.17.3)(webpack@5.91.0) '@cypress/webpack-dev-server': 3.8.0(debug@4.3.4)(webpack@5.91.0) '@drptbl/gremlins.js': 2.2.1 '@foundry-rs/easy-foundryup': 0.1.3 @@ -3987,8 +3990,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -3999,11 +4002,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 graphemer: 1.4.0 @@ -4016,8 +4019,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4026,10 +4029,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 typescript: 5.4.5 @@ -4037,16 +4040,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@7.7.0: - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + /@typescript-eslint/scope-manager@7.7.1: + resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 dev: true - /@typescript-eslint/type-utils@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4055,8 +4058,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) @@ -4065,13 +4068,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@7.7.0: - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + /@typescript-eslint/types@7.7.1: + resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -4079,8 +4082,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 @@ -4092,8 +4095,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4101,9 +4104,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -4111,11 +4114,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@7.7.0: - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + /@typescript-eslint/visitor-keys@7.7.1: + resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/types': 7.7.1 eslint-visitor-keys: 3.4.3 dev: true @@ -4136,38 +4139,38 @@ packages: - utf-8-validate dev: true - /@vitest/expect@1.5.0: - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} + /@vitest/expect@1.5.2: + resolution: {integrity: sha512-rf7MTD1WCoDlN3FfYJ9Llfp0PbdtOMZ3FIF0AVkDnKbp3oiMW1c8AmvRZBcqbAhDUAvF52e9zx4WQM1r3oraVA==} dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/spy': 1.5.2 + '@vitest/utils': 1.5.2 chai: 4.4.1 dev: true - /@vitest/runner@1.5.0: - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} + /@vitest/runner@1.5.2: + resolution: {integrity: sha512-7IJ7sJhMZrqx7HIEpv3WrMYcq8ZNz9L6alo81Y6f8hV5mIE6yVZsFoivLZmr0D777klm1ReqonE9LyChdcmw6g==} dependencies: - '@vitest/utils': 1.5.0 + '@vitest/utils': 1.5.2 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.5.0: - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + /@vitest/snapshot@1.5.2: + resolution: {integrity: sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==} dependencies: magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.5.0: - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + /@vitest/spy@1.5.2: + resolution: {integrity: sha512-xCcPvI8JpCtgikT9nLpHPL1/81AYqZy1GCy4+MCHBE7xi8jgsYkULpW5hrx5PGLgOQjUpb6fd15lqcriJ40tfQ==} dependencies: tinyspy: 2.2.1 dev: true - /@vitest/utils@1.5.0: - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + /@vitest/utils@1.5.2: + resolution: {integrity: sha512-sWOmyofuXLJ85VvXNsroZur7mOJGiQeM0JN3/0D1uU8U9bGFM69X1iqHaRXl6R8BwaLY6yPCogP257zxTzkUdA==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -4895,7 +4898,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001611 + caniuse-lite: 1.0.30001612 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -4970,14 +4973,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.4): - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.4): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.24.4 '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4989,19 +4992,19 @@ packages: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) core-js-compat: 3.37.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4): - resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.4): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) transitivePeerDependencies: - supports-color dev: true @@ -5325,8 +5328,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001611 - electron-to-chromium: 1.4.744 + caniuse-lite: 1.0.30001612 + electron-to-chromium: 1.4.748 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true @@ -5389,8 +5392,8 @@ packages: engines: {node: '>=6'} dev: true - /bundle-require@4.0.2(esbuild@0.19.12): - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + /bundle-require@4.0.3(esbuild@0.19.12): + resolution: {integrity: sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -5521,13 +5524,13 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001611 + caniuse-lite: 1.0.30001612 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-lite@1.0.30001611: - resolution: {integrity: sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==} + /caniuse-lite@1.0.30001612: + resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} dev: true /caseless@0.12.0: @@ -6792,8 +6795,8 @@ packages: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} dev: true - /devalue@4.3.2: - resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + /devalue@5.0.0: + resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} dev: true /diff-sequences@29.6.3: @@ -6850,7 +6853,6 @@ packages: /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - requiresBuild: true dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 @@ -7026,8 +7028,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.744: - resolution: {integrity: sha512-nAGcF0yeKKfrP13LMFr5U1eghfFSvFLg302VUFzWlcjPOnUYd52yU5x6PBYrujhNbc4jYmZFrGZFK+xasaEzVA==} + /electron-to-chromium@1.4.748: + resolution: {integrity: sha512-VWqjOlPZn70UZ8FTKUOkUvBLeTQ0xpty66qV0yJcAGY2/CthI4xyW9aEozRVtuwv3Kpf5xTesmJUcPwuJmgP4A==} dev: true /elliptic@6.5.4: @@ -7404,12 +7406,12 @@ packages: vscode-json-languageservice: 4.2.1 dev: true - /eslint-plugin-svelte@2.37.0(eslint@8.57.0)(svelte@4.2.15)(ts-node@10.9.2): - resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} + /eslint-plugin-svelte@2.38.0(eslint@8.57.0)(svelte@4.2.15)(ts-node@10.9.2): + resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 peerDependenciesMeta: svelte: optional: true @@ -7427,7 +7429,7 @@ packages: postcss-selector-parser: 6.0.16 semver: 7.6.0 svelte: 4.2.15 - svelte-eslint-parser: 0.34.1(svelte@4.2.15) + svelte-eslint-parser: 0.35.0(svelte@4.2.15) transitivePeerDependencies: - supports-color - ts-node @@ -9577,7 +9579,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.30.3 + terser: 5.30.4 dev: true /html-webpack-plugin@4.5.2(webpack@5.91.0): @@ -9955,8 +9957,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /ipaddr.js@2.1.0: - resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + /ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} dev: true @@ -10570,8 +10572,8 @@ packages: supports-color: 8.1.1 dev: true - /joi@17.12.3: - resolution: {integrity: sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==} + /joi@17.13.0: + resolution: {integrity: sha512-9qcrTyoBmFZRNHeVP4edKqIUEgFzq7MHvTNSDuHSqkpOPtiBkgNgcmTSqmiw1kw9tdKaiddvIDv/eCJDxmqWCA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -13962,7 +13964,7 @@ packages: - ts-node dev: true - /rollup-plugin-svelte@7.2.0(rollup@4.14.3)(svelte@4.2.15): + /rollup-plugin-svelte@7.2.0(rollup@4.16.4)(svelte@4.2.15): resolution: {integrity: sha512-Qvo5VNFQZtaI+sHSjcCIFDP+olfKVyslAoJIkL3DxuhUpNY5Ys0+hhxUY3kuEKt9BXFgkFJiiic/XRb07zdSbg==} engines: {node: '>=10'} peerDependencies: @@ -13971,7 +13973,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 resolve.exports: 2.0.2 - rollup: 4.14.3 + rollup: 4.16.4 svelte: 4.2.15 dev: true @@ -13981,29 +13983,29 @@ packages: estree-walker: 0.6.1 dev: true - /rollup@4.14.3: - resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} + /rollup@4.16.4: + resolution: {integrity: sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.14.3 - '@rollup/rollup-android-arm64': 4.14.3 - '@rollup/rollup-darwin-arm64': 4.14.3 - '@rollup/rollup-darwin-x64': 4.14.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.14.3 - '@rollup/rollup-linux-arm-musleabihf': 4.14.3 - '@rollup/rollup-linux-arm64-gnu': 4.14.3 - '@rollup/rollup-linux-arm64-musl': 4.14.3 - '@rollup/rollup-linux-powerpc64le-gnu': 4.14.3 - '@rollup/rollup-linux-riscv64-gnu': 4.14.3 - '@rollup/rollup-linux-s390x-gnu': 4.14.3 - '@rollup/rollup-linux-x64-gnu': 4.14.3 - '@rollup/rollup-linux-x64-musl': 4.14.3 - '@rollup/rollup-win32-arm64-msvc': 4.14.3 - '@rollup/rollup-win32-ia32-msvc': 4.14.3 - '@rollup/rollup-win32-x64-msvc': 4.14.3 + '@rollup/rollup-android-arm-eabi': 4.16.4 + '@rollup/rollup-android-arm64': 4.16.4 + '@rollup/rollup-darwin-arm64': 4.16.4 + '@rollup/rollup-darwin-x64': 4.16.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.16.4 + '@rollup/rollup-linux-arm-musleabihf': 4.16.4 + '@rollup/rollup-linux-arm64-gnu': 4.16.4 + '@rollup/rollup-linux-arm64-musl': 4.16.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.16.4 + '@rollup/rollup-linux-riscv64-gnu': 4.16.4 + '@rollup/rollup-linux-s390x-gnu': 4.16.4 + '@rollup/rollup-linux-x64-gnu': 4.16.4 + '@rollup/rollup-linux-x64-musl': 4.16.4 + '@rollup/rollup-win32-arm64-msvc': 4.16.4 + '@rollup/rollup-win32-ia32-msvc': 4.16.4 + '@rollup/rollup-win32-x64-msvc': 4.16.4 fsevents: 2.3.3 dev: true @@ -15093,8 +15095,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check@3.6.9(@babel/core@7.24.4)(svelte@4.2.15): - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} + /svelte-check@3.7.0(@babel/core@7.24.4)(svelte@4.2.15): + resolution: {integrity: sha512-Va6sGL4Vy4znn0K+vaatk98zoBvG2aDee4y3r5X4S80z8DXfbACHvdLlyXa4C4c5tQzK9H0Uq2pbd20wH3ucjQ==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 @@ -15120,8 +15122,8 @@ packages: - sugarss dev: true - /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.15): - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} + /svelte-check@3.7.0(postcss@8.4.38)(svelte@4.2.15): + resolution: {integrity: sha512-Va6sGL4Vy4znn0K+vaatk98zoBvG2aDee4y3r5X4S80z8DXfbACHvdLlyXa4C4c5tQzK9H0Uq2pbd20wH3ucjQ==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 @@ -15147,11 +15149,11 @@ packages: - sugarss dev: true - /svelte-eslint-parser@0.34.1(svelte@4.2.15): - resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} + /svelte-eslint-parser@0.35.0(svelte@4.2.15): + resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 peerDependenciesMeta: svelte: optional: true @@ -15414,7 +15416,7 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.30.3 + terser: 5.30.4 webpack: 5.91.0 dev: true @@ -15429,8 +15431,8 @@ packages: source-map-support: 0.5.21 dev: true - /terser@5.30.3: - resolution: {integrity: sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==} + /terser@5.30.4: + resolution: {integrity: sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -15470,11 +15472,11 @@ packages: resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} dev: true - /through2-filter@3.1.0: - resolution: {integrity: sha512-VhZsTsfrIJjyUi6GeecnwcOJlmoqgIdGFDjqnV5ape+F1DN8GejfPO66XyIhoinxmxGImiUTrq9RwpTN5yszGA==} - engines: {node: '>= 6'} + /through2-filter@3.0.0: + resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} dependencies: - through2: 4.0.2 + through2: 2.0.5 + xtend: 4.0.2 dev: true /through2@2.0.5: @@ -15491,12 +15493,6 @@ packages: readable-stream: 3.6.2 dev: true - /through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.2 - dev: true - /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -15529,8 +15525,8 @@ packages: globrex: 0.1.2 dev: true - /tinybench@2.7.0: - resolution: {integrity: sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==} + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} dev: true /tinypool@0.8.4: @@ -15763,7 +15759,7 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.2(esbuild@0.19.12) + bundle-require: 4.0.3(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.6.0 debug: 4.3.4(supports-color@8.1.1) @@ -15773,7 +15769,7 @@ packages: joycon: 3.1.1 postcss-load-config: 4.0.2(ts-node@10.9.2) resolve-from: 5.0.0 - rollup: 4.14.3 + rollup: 4.16.4 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -16106,7 +16102,7 @@ packages: resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} dependencies: json-stable-stringify-without-jsonify: 1.0.1 - through2-filter: 3.1.0 + through2-filter: 3.0.0 dev: true /universalify@0.1.2: @@ -16306,8 +16302,8 @@ packages: - zod dev: true - /viem@2.9.23(typescript@5.4.5): - resolution: {integrity: sha512-KolNI8H8tNkOA6xkC5UnlQjoorJxk4F1F9h42pHnH9/CtrWG9Ka4xmAWwhO2xKNPA2sNsAsJLmedBsz2uvaQow==} + /viem@2.9.26(typescript@5.4.5): + resolution: {integrity: sha512-WWYsZfxDsvVsbQF9v3i0M7A2TYTtQl+pwiF5UP8/5dr15XEMGB0MJDhH3esU7jJnBd/JMjkJH/DQRAKuqYS23Q==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -16382,8 +16378,8 @@ packages: replace-ext: 1.0.1 dev: true - /vite-node@1.5.0(@types/node@20.12.7): - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + /vite-node@1.5.2(@types/node@20.12.7): + resolution: {integrity: sha512-Y8p91kz9zU+bWtF7HGt6DVw2JbhyuB2RlZix3FPYAYmUyZ3n7iTp8eSyLyY6sxtPegvxQtmlTMhfPhUfCUF93A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -16391,7 +16387,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.9(@types/node@20.12.7) + vite: 5.2.10(@types/node@20.12.7) transitivePeerDependencies: - '@types/node' - less @@ -16403,8 +16399,8 @@ packages: - terser dev: true - /vite@5.2.9(@types/node@20.12.7): - resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==} + /vite@5.2.10(@types/node@20.12.7): + resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -16434,12 +16430,12 @@ packages: '@types/node': 20.12.7 esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.14.3 + rollup: 4.16.4 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@5.2.9): + /vitefu@0.2.5(vite@5.2.10): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -16447,18 +16443,18 @@ packages: vite: optional: true dependencies: - vite: 5.2.9(@types/node@20.12.7) + vite: 5.2.10(@types/node@20.12.7) dev: true - /vitest@1.5.0(@types/node@20.12.7): - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + /vitest@1.5.2(@types/node@20.12.7): + resolution: {integrity: sha512-l9gwIkq16ug3xY7BxHwcBQovLZG75zZL0PlsiYQbf76Rz6QGs54416UWMtC0jXeihvHvcHrf2ROEjkQRVpoZYw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 + '@vitest/browser': 1.5.2 + '@vitest/ui': 1.5.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -16476,11 +16472,11 @@ packages: optional: true dependencies: '@types/node': 20.12.7 - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/expect': 1.5.2 + '@vitest/runner': 1.5.2 + '@vitest/snapshot': 1.5.2 + '@vitest/spy': 1.5.2 + '@vitest/utils': 1.5.2 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4(supports-color@8.1.1) @@ -16491,10 +16487,10 @@ packages: picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 2.1.0 - tinybench: 2.7.0 + tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.9(@types/node@20.12.7) - vite-node: 1.5.0(@types/node@20.12.7) + vite: 5.2.10(@types/node@20.12.7) + vite-node: 1.5.2(@types/node@20.12.7) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -16538,7 +16534,7 @@ packages: hasBin: true dependencies: axios: 1.6.8(debug@4.3.4) - joi: 17.12.3 + joi: 17.13.0 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -16627,7 +16623,7 @@ packages: graceful-fs: 4.2.11 html-entities: 2.5.2 http-proxy-middleware: 2.0.6(@types/express@4.17.21)(debug@4.3.4) - ipaddr.js: 2.1.0 + ipaddr.js: 2.2.0 launch-editor: 2.6.1 open: 8.4.2 p-retry: 4.6.2 diff --git a/providers/src/callResolver.ts b/providers/src/callResolver.ts index 652d2837d..f46dbde2f 100644 --- a/providers/src/callResolver.ts +++ b/providers/src/callResolver.ts @@ -1,4 +1,4 @@ -import call from "@kredeum/providers/src/call"; +import call from "./call"; import networks from "./networks"; const callResolver = (() => { diff --git a/svelte/src/components/Account/Account.svelte b/svelte/src/components/Account/Account.svelte index f4a05fe43..c42037b70 100644 --- a/svelte/src/components/Account/Account.svelte +++ b/svelte/src/components/Account/Account.svelte @@ -48,7 +48,7 @@ avatar    {/if} - {getShortAddress(accountName, 10)}     + {getShortAddress(accountName, 8)}     diff --git a/svelte/src/components/Global/Navigation.svelte b/svelte/src/components/Global/Navigation.svelte index 327bbcbfe..04aaf2999 100644 --- a/svelte/src/components/Global/Navigation.svelte +++ b/svelte/src/components/Global/Navigation.svelte @@ -58,6 +58,12 @@

{/if} +
  • + +
    + stats +
    +
  • diff --git a/sveltekit/package.json b/sveltekit/package.json index 06dfebc29..aac3dd260 100644 --- a/sveltekit/package.json +++ b/sveltekit/package.json @@ -33,6 +33,7 @@ "dependencies": { "@kredeum/common": "workspace:^", "@kredeum/providers": "workspace:^", + "@kredeum/contracts": "workspace:^", "@kredeum/svelte": "workspace:^" } } \ No newline at end of file diff --git a/sveltekit/src/routes/stats/+page.svelte b/sveltekit/src/routes/stats/+page.svelte new file mode 100644 index 000000000..8405d709e --- /dev/null +++ b/sveltekit/src/routes/stats/+page.svelte @@ -0,0 +1,52 @@ + + +
    +

    Kredeum NFTs Factory - Statistics

    + +
    + + + + +
    + + {#if activeTab === "mainnets"} + + {:else if activeTab === "opnets"} + + {:else if activeTab === "testnets"} + + {:else if activeTab === "inactives"} + + {/if} +
    + + diff --git a/sveltekit/src/routes/stats/Addresses.svelte b/sveltekit/src/routes/stats/Addresses.svelte new file mode 100644 index 000000000..09724cbb8 --- /dev/null +++ b/sveltekit/src/routes/stats/Addresses.svelte @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + {#each networksSorted || networks as network} + + + + + + + + + + + {/each} + +
    Chain IDChain NameCollections
    Count
    OpenNFTs
    Resolver
    OpenNFTs
    Factory
    OpenNFTsV4
    Template
    OpenAutoMarket
    Template
    {network.chainId}{network.chainName} + {#await countCollections(network)} + ... + {:then count} + {count} + {:catch} + --- + {/await} + + + {getShortAddress(resolverGetAddress(network.chainId))} + + + + {getShortAddress(factoryGetAddress(network.chainId))} + + + + {getShortAddress(getAddressOpenNFTsTemplate(network.chainId))} + + + + {getShortAddress(getAddressOpenAutoMarket(network.chainId))} + +
    + + diff --git a/sveltekit/src/routes/stats/mainnets/+page.svelte b/sveltekit/src/routes/stats/mainnets/+page.svelte new file mode 100644 index 000000000..7362ce956 --- /dev/null +++ b/sveltekit/src/routes/stats/mainnets/+page.svelte @@ -0,0 +1,11 @@ + + +

    Stats

    + +
      + {#each networks.getAllMainnets() as network} +
    • {network.chainName}
    • + {/each} +