From 55d91b331fa37946c405e11dd3ac01e7886e0b3c Mon Sep 17 00:00:00 2001 From: Gabe Rodriguez Date: Thu, 31 Oct 2024 08:24:47 -0700 Subject: [PATCH] Add badges to registry (#106) * Add badge overrides * version registry * fixes * Review updates --- input/chains/penumbra-1.json | 56 +- .../penumbra-testnet-deimos-8-x6de97e39.json | 17 +- input/chains/penumbra-testnet-deimos-8.json | 253 ----- input/chains/penumbra-testnet-phobos-1.json | 9 +- .../penumbra-testnet-phobos-2-x4120f355.json | 9 +- input/chains/penumbra-testnet-phobos-2.json | 9 +- npm/CHANGELOG.md | 6 + npm/package.json | 12 +- npm/pnpm-lock.yaml | 973 ++++++++---------- npm/src/json.ts | 1 + npm/src/registry.test.ts | 14 + npm/src/remote.test.ts | 44 +- registry/chains/penumbra-1.json | 108 +- .../penumbra-testnet-deimos-8-x6de97e39.json | 5 + tools/compiler/Cargo.lock | 85 +- tools/compiler/Cargo.toml | 15 +- tools/compiler/src/parser.rs | 37 +- tools/compiler/src/processor.rs | 26 +- tools/compiler/src/validator.rs | 3 +- .../compiler/tests/test_get_chain_configs.rs | 6 + 20 files changed, 765 insertions(+), 923 deletions(-) delete mode 100644 input/chains/penumbra-testnet-deimos-8.json diff --git a/input/chains/penumbra-1.json b/input/chains/penumbra-1.json index 985528c..1d85eeb 100644 --- a/input/chains/penumbra-1.json +++ b/input/chains/penumbra-1.json @@ -101,7 +101,9 @@ ] } ], - "canonicalNumeraires": ["transfer/channel-2/uusdc"], + "canonicalNumeraires": [ + "transfer/channel-2/uusdc" + ], "priorityScoresByBase": { "upenumbra": 999999999999, "transfer/channel-2/uusdc": 100000000000, @@ -128,5 +130,57 @@ "transfer/channel-4/factory/osmo1s3l0lcqc7tu0vpj6wdjz9wqpxv8nk6eraevje4fuwkyjnwuy82qsx3lduv/boneOsmo": 10000, "transfer/channel-4/factory/osmo104jtrwcljnxfljhml8mxrw7qetcsdmqvy3sprw/ucosmousd": 10000, "transfer/channel-4/factory/osmo1g8qypve6l95xmhgc0fddaecerffymsl7kn9muw/squosmo": 10000 + }, + "badges": { + "osmosis": { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + }, + "badgesByBase": { + "transfer/channel-4/factory/osmo1em6xs47hd82806f5cxgyufguxrrc7l0aqx7nzzptjuqgswczk8csavdxek/alloyed/allUSDT": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1z6r6qdknhgsc0zeracktgpcxf43j6sekq07nw8sxduc9lg0qjjlqfu25e3/alloyed/allBTC": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1k6c8jln7ejuqwtqmay3yvzrg3kueaczl96pk067ldg8u835w0yhsw27twm/alloyed/allETH": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1n3n75av8awcnw4jl62n3l48e6e4sxqmaf97w5ua6ddu4s475q5qq9udvx4/alloyed/allSOL": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo18zdw5yvs6gfp95rp74qqwug9yduw2fyr8kplk2xgs726s9axc5usa2vpgw/alloyed/allLINK": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1r53fx9fvcdzncrs7zkn4gw5vfelx5gk8k5wc6wqha2jpkh992rusr5tk02/alloyed/allDOT": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo14mafhhp337yjj2aujplawz0tks6jd2lel4hkwz4agyzhvvztzaqsqzjq8x/alloyed/allTRX": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1p7x454ex08s4f9ztmm7wfv7lvtgdkfztj2u7v7fezfcauy85q35qmqrdpk/alloyed/allARB": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1nufyzqlm8qhu2w7lm0l4rrax0ec8rsk69mga4tel8eare7c7ljaqpk2lyg/alloyed/allOP": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo12lnwf54yd30p6amzaged2atln8k0l32n7ncxf04ctg7u7ymnsy7qkqgsw4/alloyed/allTON": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1f588gk9dazpsueevdl2w6wfkmfmhg5gdvg2uerdlzl0atkasqhsq59qc6a/alloyed/allSHIB": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1nnlxegt0scm9qkzys9c874t0ntapv4epfjy2w49c0xdrp3dr0v4ssmelzx/alloyed/allPEPE": [ + "osmosis" + ], + "transfer/channel-4/factory/osmo1eqjda4pc6e09jtxzxggf6jl3jye2yn453ja58we5gxwzmf5ah28qvlnaz8/alloyed/allUNI": [ + "osmosis" + ] } } + + diff --git a/input/chains/penumbra-testnet-deimos-8-x6de97e39.json b/input/chains/penumbra-testnet-deimos-8-x6de97e39.json index 0c44537..2c34975 100644 --- a/input/chains/penumbra-testnet-deimos-8-x6de97e39.json +++ b/input/chains/penumbra-testnet-deimos-8-x6de97e39.json @@ -248,6 +248,19 @@ } } ], - "canonicalNumeraires": ["wtest_usd", "transfer/channel-1/uusdc"], - "priorityScoresByBase": {} + "canonicalNumeraires": [ + "wtest_usd", + "transfer/channel-1/uusdc" + ], + "priorityScoresByBase": {}, + "badges": { + "penumbra": { + "png": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/penumbra-favicon.png" + } + }, + "badgesByBase": { + "wtest_usd": [ + "penumbra" + ] + } } diff --git a/input/chains/penumbra-testnet-deimos-8.json b/input/chains/penumbra-testnet-deimos-8.json deleted file mode 100644 index 0c44537..0000000 --- a/input/chains/penumbra-testnet-deimos-8.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "chainId": "penumbra-testnet-deimos-8-x6de97e39", - "ibcConnections": [ - { - "displayName": "Osmosis", - "chainId": "osmo-test-5", - "channelId": "channel-0", - "counterpartyChannelId": "channel-8568", - "addressPrefix": "osmo", - "cosmosRegistryDir": "testnets/osmosistestnet", - "images": [ - { - "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/f1348793beb994c6cc0256ed7ebdb48c7aa70003/osmosis/images/osmo.svg" - } - ] - }, - { - "displayName": "Noble", - "chainId": "grand-1", - "channelId": "channel-1", - "counterpartyChannelId": "channel-199", - "addressPrefix": "noble", - "cosmosRegistryDir": "testnets/nobletestnet", - "images": [ - { - "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/2ca39d0e4eaf3431cca13991948e099801f02e46/noble/images/stake.svg" - } - ] - } - ], - "validators": [ - { - "name": "Penumbra Labs CI 1", - "base": "udelegation_penumbravalid1d3c0v5phydt7vdakajzxpw0mev7jcgurk7eeuw6z4cqqks2wxyrqu72gau", - "images": [ - { - "png": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/penumbra-favicon.png" - } - ] - } - ], - "nativeAssets": [ - { - "denomUnits": [ - { - "denom": "penumbra", - "exponent": 6 - }, - { - "denom": "mpenumbra", - "exponent": 3 - }, - { - "denom": "upenumbra" - } - ], - "base": "upenumbra", - "display": "penumbra", - "symbol": "UM", - "penumbraAssetId": { - "inner": "KeqcLzNx9qSH5+lcJHBB9KNW+YPrBk5dKzvPMiypahA=" - }, - "images": [ - { - "svg": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/um.svg" - } - ] - }, - { - "denomUnits": [ - { - "denom": "gm", - "exponent": 6 - }, - { - "denom": "mgm", - "exponent": 3 - }, - { - "denom": "ugm" - } - ], - "base": "ugm", - "display": "gm", - "symbol": "GM", - "penumbraAssetId": { - "inner": "HW2Eq3UZVSBttoUwUi/MUtE7rr2UU7/UH500byp7OAc=" - }, - "images": [ - { - "svg": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/full-moon-face.svg" - } - ] - }, - { - "denomUnits": [ - { - "denom": "gn", - "exponent": 6 - }, - { - "denom": "mgn", - "exponent": 3 - }, - { - "denom": "ugn" - } - ], - "base": "ugn", - "display": "gn", - "symbol": "GN", - "penumbraAssetId": { - "inner": "nwPDkQq3OvLnBwGTD+nmv1Ifb2GEmFCgNHrU++9BsRE=" - }, - "images": [ - { - "svg": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/new-moon-face.svg" - } - ] - }, - { - "denomUnits": [ - { - "denom": "test_usd", - "exponent": 18 - }, - { - "denom": "wtest_usd" - } - ], - "base": "wtest_usd", - "display": "test_usd", - "symbol": "TestUSD", - "penumbraAssetId": { - "inner": "reum7wQmk/owgvGMWMZn/6RFPV24zIKq3W6In/WwZgg=" - }, - "images": [ - { - "svg": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/test-usd.svg" - } - ] - }, - { - "denomUnits": [ - { - "denom": "cube" - } - ], - "base": "cube", - "display": "cube", - "symbol": "CUBE", - "penumbraAssetId": { - "inner": "6KBVsPINa8gWSHhfH+kAFJC4afEJA3EtuB2HyCqJUws=" - } - }, - { - "denomUnits": [ - { - "denom": "pizza" - } - ], - "base": "pizza", - "display": "pizza", - "symbol": "PIZZA", - "penumbraAssetId": { - "inner": "nDjzm+ldIrNMJha1anGMDVxpA5cLCPnUYQ1clmHF1gw=" - }, - "images": [ - { - "svg": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/pizza.svg" - } - ] - }, - { - "denomUnits": [ - { - "denom": "test_eth", - "exponent": 18 - }, - { - "denom": "wtest_eth" - } - ], - "base": "wtest_eth", - "display": "test_eth", - "symbol": "TestETH", - "penumbraAssetId": { - "inner": "HLkKbVfA72oQaMdYFroWQ1qoSyl/KLHZiOMJhL2y9w0=" - } - }, - { - "denomUnits": [ - { - "denom": "test_btc", - "exponent": 8 - }, - { - "denom": "test_sat" - } - ], - "base": "test_sat", - "display": "test_btc", - "symbol": "TestBTC", - "penumbraAssetId": { - "inner": "o2gZdbhCH70Ry+7iBhkSeHC/PB1LZhgkn7LHC2kEhQc=" - } - }, - { - "denomUnits": [ - { - "denom": "test_atom", - "exponent": 6 - }, - { - "denom": "mtest_atom", - "exponent": 3 - }, - { - "denom": "utest_atom" - } - ], - "base": "utest_atom", - "display": "test_atom", - "symbol": "TestATOM", - "penumbraAssetId": { - "inner": "ypUT1AOtjfwMOKMATACoD9RSvi8jY/YnYGi46CZ/6Q8=" - } - }, - { - "denomUnits": [ - { - "denom": "test_osmo", - "exponent": 6 - }, - { - "denom": "mtest_osmo", - "exponent": 3 - }, - { - "denom": "utest_osmo" - } - ], - "base": "utest_osmo", - "display": "test_osmo", - "symbol": "TestOSMO", - "penumbraAssetId": { - "inner": "pmpygqUf4DL+z849rGPpudpdK/+FAv8qQ01U2C73kAw=" - } - } - ], - "canonicalNumeraires": ["wtest_usd", "transfer/channel-1/uusdc"], - "priorityScoresByBase": {} -} diff --git a/input/chains/penumbra-testnet-phobos-1.json b/input/chains/penumbra-testnet-phobos-1.json index 60e5f31..323588c 100644 --- a/input/chains/penumbra-testnet-phobos-1.json +++ b/input/chains/penumbra-testnet-phobos-1.json @@ -248,6 +248,11 @@ } } ], - "canonicalNumeraires": ["wtest_usd", "transfer/channel-1/uusdc"], - "priorityScoresByBase": {} + "canonicalNumeraires": [ + "wtest_usd", + "transfer/channel-1/uusdc" + ], + "priorityScoresByBase": {}, + "badges": {}, + "badgesByBase": {} } diff --git a/input/chains/penumbra-testnet-phobos-2-x4120f355.json b/input/chains/penumbra-testnet-phobos-2-x4120f355.json index 3d543eb..7a13036 100644 --- a/input/chains/penumbra-testnet-phobos-2-x4120f355.json +++ b/input/chains/penumbra-testnet-phobos-2-x4120f355.json @@ -257,6 +257,11 @@ } } ], - "canonicalNumeraires": ["wtest_usd", "transfer/channel-1/uusdc"], - "priorityScoresByBase": {} + "canonicalNumeraires": [ + "wtest_usd", + "transfer/channel-1/uusdc" + ], + "priorityScoresByBase": {}, + "badges": {}, + "badgesByBase": {} } diff --git a/input/chains/penumbra-testnet-phobos-2.json b/input/chains/penumbra-testnet-phobos-2.json index 8137b2d..cb9442c 100644 --- a/input/chains/penumbra-testnet-phobos-2.json +++ b/input/chains/penumbra-testnet-phobos-2.json @@ -257,6 +257,11 @@ } } ], - "canonicalNumeraires": ["wtest_usd", "transfer/channel-1/uusdc"], - "priorityScoresByBase": {} + "canonicalNumeraires": [ + "wtest_usd", + "transfer/channel-1/uusdc" + ], + "priorityScoresByBase": {}, + "badges": {}, + "badgesByBase": {} } diff --git a/npm/CHANGELOG.md b/npm/CHANGELOG.md index 12eb8b8..9c836dd 100644 --- a/npm/CHANGELOG.md +++ b/npm/CHANGELOG.md @@ -1,5 +1,11 @@ # @penumbra-labs/registry +## 11.5.0 + +### Minor Changes + +- Adding badge support for metadata + ## 11.4.0 ### Minor Changes diff --git a/npm/package.json b/npm/package.json index 78f9f96..b094cff 100644 --- a/npm/package.json +++ b/npm/package.json @@ -1,6 +1,6 @@ { "name": "@penumbra-labs/registry", - "version": "11.4.0", + "version": "11.5.0", "description": "Chain and asset registry for Penumbra", "main": "./dist/index.js", "module": "./dist/index.mjs", @@ -20,16 +20,16 @@ "@changesets/cli": "^2.27.9", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.13.0", - "@penumbra-zone/protobuf": "^6.2.0", + "@penumbra-zone/protobuf": "^6.3.0", "eslint": "^9.13.0", - "fetch-mock": "^11.1.5", + "fetch-mock": "^12.0.2", "prettier": "^3.3.3", - "tsup": "^8.3.0", + "tsup": "^8.3.5", "typescript": "^5.6.3", - "typescript-eslint": "^8.11.0", + "typescript-eslint": "^8.12.2", "vite": "^5.4.10", "vite-plugin-dts": "^4.3.0", - "vitest": "^2.1.3" + "vitest": "^2.1.4" }, "files": [ "dist", diff --git a/npm/pnpm-lock.yaml b/npm/pnpm-lock.yaml index 6d3c691..ae154c0 100644 --- a/npm/pnpm-lock.yaml +++ b/npm/pnpm-lock.yaml @@ -20,35 +20,35 @@ importers: specifier: ^9.13.0 version: 9.13.0 '@penumbra-zone/protobuf': - specifier: ^6.2.0 - version: 6.2.0(@bufbuild/protobuf@1.10.0) + specifier: ^6.3.0 + version: 6.3.0(@bufbuild/protobuf@1.10.0) eslint: specifier: ^9.13.0 version: 9.13.0 fetch-mock: - specifier: ^11.1.5 - version: 11.1.5 + specifier: ^12.0.2 + version: 12.0.2 prettier: specifier: ^3.3.3 version: 3.3.3 tsup: - specifier: ^8.3.0 - version: 8.3.0(@microsoft/api-extractor@7.47.11(@types/node@22.5.5))(postcss@8.4.47)(typescript@5.6.3)(yaml@2.5.1) + specifier: ^8.3.5 + version: 8.3.5(@microsoft/api-extractor@7.47.11(@types/node@22.5.5))(postcss@8.4.47)(typescript@5.6.3)(yaml@2.5.1) typescript: specifier: ^5.6.3 version: 5.6.3 typescript-eslint: - specifier: ^8.11.0 - version: 8.11.0(eslint@9.13.0)(typescript@5.6.3) + specifier: ^8.12.2 + version: 8.12.2(eslint@9.13.0)(typescript@5.6.3) vite: specifier: ^5.4.10 version: 5.4.10(@types/node@22.5.5) vite-plugin-dts: specifier: ^4.3.0 - version: 4.3.0(@types/node@22.5.5)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.5.5)) + version: 4.3.0(@types/node@22.5.5)(rollup@4.24.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.5.5)) vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.5.5) + specifier: ^2.1.4 + version: 2.1.4(@types/node@22.5.5) packages: '@babel/helper-string-parser@7.25.9': @@ -65,25 +65,25 @@ packages: } engines: { node: '>=6.9.0' } - '@babel/parser@7.25.9': + '@babel/parser@7.26.2': resolution: { - integrity: sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==, + integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==, } engines: { node: '>=6.0.0' } hasBin: true - '@babel/runtime@7.25.9': + '@babel/runtime@7.26.0': resolution: { - integrity: sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==, + integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==, } engines: { node: '>=6.9.0' } - '@babel/types@7.25.9': + '@babel/types@7.26.0': resolution: { - integrity: sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==, + integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==, } engines: { node: '>=6.9.0' } @@ -211,10 +211,10 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.24.0': resolution: { - integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==, + integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==, } engines: { node: '>=18' } cpu: [ppc64] @@ -229,10 +229,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': + '@esbuild/android-arm64@0.24.0': resolution: { - integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==, + integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==, } engines: { node: '>=18' } cpu: [arm64] @@ -247,10 +247,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': + '@esbuild/android-arm@0.24.0': resolution: { - integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==, + integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==, } engines: { node: '>=18' } cpu: [arm] @@ -265,10 +265,10 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': + '@esbuild/android-x64@0.24.0': resolution: { - integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==, + integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==, } engines: { node: '>=18' } cpu: [x64] @@ -283,10 +283,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': + '@esbuild/darwin-arm64@0.24.0': resolution: { - integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==, + integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==, } engines: { node: '>=18' } cpu: [arm64] @@ -301,10 +301,10 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': + '@esbuild/darwin-x64@0.24.0': resolution: { - integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==, + integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==, } engines: { node: '>=18' } cpu: [x64] @@ -319,10 +319,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': + '@esbuild/freebsd-arm64@0.24.0': resolution: { - integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==, + integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==, } engines: { node: '>=18' } cpu: [arm64] @@ -337,10 +337,10 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': + '@esbuild/freebsd-x64@0.24.0': resolution: { - integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==, + integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==, } engines: { node: '>=18' } cpu: [x64] @@ -355,10 +355,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': + '@esbuild/linux-arm64@0.24.0': resolution: { - integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==, + integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==, } engines: { node: '>=18' } cpu: [arm64] @@ -373,10 +373,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': + '@esbuild/linux-arm@0.24.0': resolution: { - integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==, + integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==, } engines: { node: '>=18' } cpu: [arm] @@ -391,10 +391,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': + '@esbuild/linux-ia32@0.24.0': resolution: { - integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==, + integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==, } engines: { node: '>=18' } cpu: [ia32] @@ -409,10 +409,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': + '@esbuild/linux-loong64@0.24.0': resolution: { - integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==, + integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==, } engines: { node: '>=18' } cpu: [loong64] @@ -427,10 +427,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': + '@esbuild/linux-mips64el@0.24.0': resolution: { - integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==, + integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==, } engines: { node: '>=18' } cpu: [mips64el] @@ -445,10 +445,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': + '@esbuild/linux-ppc64@0.24.0': resolution: { - integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==, + integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==, } engines: { node: '>=18' } cpu: [ppc64] @@ -463,10 +463,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': + '@esbuild/linux-riscv64@0.24.0': resolution: { - integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==, + integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==, } engines: { node: '>=18' } cpu: [riscv64] @@ -481,10 +481,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': + '@esbuild/linux-s390x@0.24.0': resolution: { - integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==, + integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==, } engines: { node: '>=18' } cpu: [s390x] @@ -499,10 +499,10 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': + '@esbuild/linux-x64@0.24.0': resolution: { - integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==, + integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==, } engines: { node: '>=18' } cpu: [x64] @@ -517,19 +517,19 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': + '@esbuild/netbsd-x64@0.24.0': resolution: { - integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==, + integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==, } engines: { node: '>=18' } cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/openbsd-arm64@0.24.0': resolution: { - integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==, + integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==, } engines: { node: '>=18' } cpu: [arm64] @@ -544,10 +544,10 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.24.0': resolution: { - integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==, + integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==, } engines: { node: '>=18' } cpu: [x64] @@ -562,10 +562,10 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': + '@esbuild/sunos-x64@0.24.0': resolution: { - integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==, + integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==, } engines: { node: '>=18' } cpu: [x64] @@ -580,10 +580,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': + '@esbuild/win32-arm64@0.24.0': resolution: { - integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==, + integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==, } engines: { node: '>=18' } cpu: [arm64] @@ -598,10 +598,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': + '@esbuild/win32-ia32@0.24.0': resolution: { - integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==, + integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==, } engines: { node: '>=18' } cpu: [ia32] @@ -616,28 +616,28 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': + '@esbuild/win32-x64@0.24.0': resolution: { - integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==, + integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==, } engines: { node: '>=18' } cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.0': + '@eslint-community/eslint-utils@4.4.1': resolution: { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, + integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==, } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': + '@eslint-community/regexpp@4.12.1': resolution: { - integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==, + integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==, } engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } @@ -676,24 +676,24 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@eslint/plugin-kit@0.2.1': + '@eslint/plugin-kit@0.2.2': resolution: { - integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==, + integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@humanfs/core@0.19.0': + '@humanfs/core@0.19.1': resolution: { - integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==, + integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, } engines: { node: '>=18.18.0' } - '@humanfs/node@0.16.5': + '@humanfs/node@0.16.6': resolution: { - integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==, + integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==, } engines: { node: '>=18.18.0' } @@ -809,10 +809,10 @@ packages: } engines: { node: '>= 8' } - '@penumbra-zone/protobuf@6.2.0': + '@penumbra-zone/protobuf@6.3.0': resolution: { - integrity: sha512-OCIvrXtRBK20lG32A62KNg9daOlpr4fEtB5uTENVuf3IAyemjETMJpz1To86KgCv2sR2kYiVNfazdRKh9whNWQ==, + integrity: sha512-ZaApZtsXrX3GeAJEdMuKPPqnvxp74qFmL5ugOz7srP78Y6udZmLj6Gzo16bIL4JflXFYq99n+kB2jtWidPWSyQ==, } peerDependencies: '@bufbuild/protobuf': ^1.10.0 @@ -824,10 +824,10 @@ packages: } engines: { node: '>=14' } - '@rollup/pluginutils@5.1.2': + '@rollup/pluginutils@5.1.3': resolution: { - integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==, + integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==, } engines: { node: '>=14.0.0' } peerDependencies: @@ -836,130 +836,146 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-android-arm-eabi@4.24.3': resolution: { - integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==, + integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==, } cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-android-arm64@4.24.3': resolution: { - integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==, + integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==, } cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-darwin-arm64@4.24.3': resolution: { - integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==, + integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==, } cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-darwin-x64@4.24.3': resolution: { - integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==, + integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==, } cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-freebsd-arm64@4.24.3': resolution: { - integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==, + integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==, + } + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.3': + resolution: + { + integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==, + } + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + resolution: + { + integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==, } cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.3': resolution: { - integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==, + integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==, } cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.24.3': resolution: { - integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==, + integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==, } cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.24.3': resolution: { - integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==, + integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==, } cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': resolution: { - integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==, + integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==, } cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.3': resolution: { - integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==, + integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==, } cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.24.3': resolution: { - integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==, + integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==, } cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.24.3': resolution: { - integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==, + integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==, } cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-x64-musl@4.24.3': resolution: { - integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==, + integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==, } cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.24.3': resolution: { - integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==, + integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==, } cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-win32-ia32-msvc@4.24.3': resolution: { - integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==, + integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==, } cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-x64-msvc@4.24.3': resolution: { - integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==, + integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==, } cpu: [x64] os: [win32] @@ -1034,10 +1050,10 @@ packages: integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==, } - '@typescript-eslint/eslint-plugin@8.11.0': + '@typescript-eslint/eslint-plugin@8.12.2': resolution: { - integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==, + integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -1048,10 +1064,10 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.11.0': + '@typescript-eslint/parser@8.12.2': resolution: { - integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==, + integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -1061,17 +1077,17 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.11.0': + '@typescript-eslint/scope-manager@8.12.2': resolution: { - integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==, + integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/type-utils@8.11.0': + '@typescript-eslint/type-utils@8.12.2': resolution: { - integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==, + integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -1080,17 +1096,17 @@ packages: typescript: optional: true - '@typescript-eslint/types@8.11.0': + '@typescript-eslint/types@8.12.2': resolution: { - integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==, + integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/typescript-estree@8.11.0': + '@typescript-eslint/typescript-estree@8.12.2': resolution: { - integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==, + integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -1099,36 +1115,35 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.11.0': + '@typescript-eslint/utils@8.12.2': resolution: { - integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==, + integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@8.11.0': + '@typescript-eslint/visitor-keys@8.12.2': resolution: { - integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==, + integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@vitest/expect@2.1.3': + '@vitest/expect@2.1.4': resolution: { - integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==, + integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==, } - '@vitest/mocker@2.1.3': + '@vitest/mocker@2.1.4': resolution: { - integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==, + integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==, } peerDependencies: - '@vitest/spy': 2.1.3 - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: @@ -1136,52 +1151,52 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@2.1.4': resolution: { - integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==, + integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==, } - '@vitest/runner@2.1.3': + '@vitest/runner@2.1.4': resolution: { - integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==, + integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==, } - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@2.1.4': resolution: { - integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==, + integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==, } - '@vitest/spy@2.1.3': + '@vitest/spy@2.1.4': resolution: { - integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==, + integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==, } - '@vitest/utils@2.1.3': + '@vitest/utils@2.1.4': resolution: { - integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==, + integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==, } - '@volar/language-core@2.4.6': + '@volar/language-core@2.4.8': resolution: { - integrity: sha512-FxUfxaB8sCqvY46YjyAAV6c3mMIq/NWQMVvJ+uS4yxr1KzOvyg61gAuOnNvgCvO4TZ7HcLExBEsWcDu4+K4E8A==, + integrity: sha512-K/GxMOXGq997bO00cdFhTNuR85xPxj0BEEAy+BaqqayTmy9Tmhfgmq2wpJcVspRhcwfgPoE2/mEJa26emUhG/g==, } - '@volar/source-map@2.4.6': + '@volar/source-map@2.4.8': resolution: { - integrity: sha512-Nsh7UW2ruK+uURIPzjJgF0YRGP5CX9nQHypA2OMqdM2FKy7rh+uv3XgPnWPw30JADbKvZ5HuBzG4gSbVDYVtiw==, + integrity: sha512-jeWJBkC/WivdelMwxKkpFL811uH/jJ1kVxa+c7OvG48DXc3VrP7pplSWPP2W1dLMqBxD+awRlg55FQQfiup4cA==, } - '@volar/typescript@2.4.6': + '@volar/typescript@2.4.8': resolution: { - integrity: sha512-NMIrA7y5OOqddL9VtngPWYmdQU03htNKFtAYidbYfWA0TOhyGVd9tfcP4TsLWQ+RBWDZCbBqsr8xzU0ZOxYTCQ==, + integrity: sha512-6xkIYJ5xxghVBhVywMoPMidDDAFT1OoQeXwa27HSgJ6AiIKRe61RXLoik+14Z7r0JvnblXVsjsRLmCr42SGzqg==, } '@vue/compiler-core@3.5.12': @@ -1227,10 +1242,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.13.0: + acorn@8.14.0: resolution: { - integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==, + integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==, } engines: { node: '>=0.4.0' } hasBin: true @@ -1316,13 +1331,6 @@ packages: integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, } - anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: '>= 8' } - argparse@1.0.10: resolution: { @@ -1362,13 +1370,6 @@ packages: } engines: { node: '>=4' } - binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: '>=8' } - brace-expansion@1.1.11: resolution: { @@ -1411,10 +1412,10 @@ packages: } engines: { node: '>=6' } - chai@5.1.1: + chai@5.1.2: resolution: { - integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==, + integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==, } engines: { node: '>=12' } @@ -1438,12 +1439,12 @@ packages: } engines: { node: '>= 16' } - chokidar@3.6.0: + chokidar@4.0.1: resolution: { - integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, + integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==, } - engines: { node: '>= 8.10.0' } + engines: { node: '>= 14.16.0' } ci-info@3.9.0: resolution: @@ -1608,10 +1609,10 @@ packages: engines: { node: '>=12' } hasBin: true - esbuild@0.23.1: + esbuild@0.24.0: resolution: { - integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==, + integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==, } engines: { node: '>=18' } hasBin: true @@ -1623,10 +1624,10 @@ packages: } engines: { node: '>=10' } - eslint-scope@8.1.0: + eslint-scope@8.2.0: resolution: { - integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==, + integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1637,10 +1638,10 @@ packages: } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - eslint-visitor-keys@4.1.0: + eslint-visitor-keys@4.2.0: resolution: { - integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==, + integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1657,10 +1658,10 @@ packages: jiti: optional: true - espree@10.2.0: + espree@10.3.0: resolution: { - integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==, + integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -1712,12 +1713,12 @@ packages: } engines: { node: '>=0.10.0' } - execa@5.1.1: + expect-type@1.1.0: resolution: { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==, } - engines: { node: '>=10' } + engines: { node: '>=12.0.0' } extendable-error@0.1.7: resolution: @@ -1774,17 +1775,12 @@ packages: picomatch: optional: true - fetch-mock@11.1.5: + fetch-mock@12.0.2: resolution: { - integrity: sha512-KHmZDnZ1ry0pCTrX4YG5DtThHi0MH+GNI9caESnzX/nMJBrvppUHMvLx47M0WY9oAtKOMiPfZDRpxhlHg89BOA==, + integrity: sha512-9KVq/Scz06A+ThORLA/J/EACiPzLdSn6DeLV61hni57kd3DXhQVCtkpj4LgwES+8osEVEfcqA6LwdSX2FYVK7w==, } - engines: { node: '>=8.0.0' } - peerDependencies: - node-fetch: '*' - peerDependenciesMeta: - node-fetch: - optional: true + engines: { node: '>=18.11.0' } file-entry-cache@8.0.0: resolution: @@ -1862,13 +1858,6 @@ packages: integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, } - get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: '>=10' } - glob-parent@5.1.2: resolution: { @@ -1949,13 +1938,6 @@ packages: integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==, } - human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: '>=10.17.0' } - iconv-lite@0.4.24: resolution: { @@ -1991,13 +1973,6 @@ packages: } engines: { node: '>=0.8.19' } - is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: '>=8' } - is-core-module@2.15.1: resolution: { @@ -2033,13 +2008,6 @@ packages: } engines: { node: '>=0.12.0' } - is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: '>=8' } - is-subdir@1.2.0: resolution: { @@ -2047,11 +2015,12 @@ packages: } engines: { node: '>=4' } - is-subset@0.1.1: + is-subset-of@3.1.10: resolution: { - integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==, + integrity: sha512-avvaYgVmYWyaZ1NDFiv4y9JGkrE2je3op1Po4VYKKJKR8H2qVPsg1GZuuXl5elCTxTlwAIsrAjWAs4BVrISFRw==, } + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. is-windows@1.0.2: resolution: @@ -2244,12 +2213,6 @@ packages: integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==, } - merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - merge2@1.4.1: resolution: { @@ -2264,13 +2227,6 @@ packages: } engines: { node: '>=8.6' } - mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: '>=6' } - minimatch@3.0.8: resolution: { @@ -2342,20 +2298,6 @@ packages: integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, } - normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: '>=0.10.0' } - - npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: '>=8' } - object-assign@4.1.1: resolution: { @@ -2363,13 +2305,6 @@ packages: } engines: { node: '>=0.10.0' } - onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: '>=6' } - optionator@0.9.4: resolution: { @@ -2628,12 +2563,12 @@ packages: } engines: { node: '>=6' } - readdirp@3.6.0: + readdirp@4.0.2: resolution: { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==, } - engines: { node: '>=8.10.0' } + engines: { node: '>= 14.16.0' } regenerator-runtime@0.14.1: resolution: @@ -2683,10 +2618,10 @@ packages: } engines: { iojs: '>=1.0.0', node: '>=0.10.0' } - rollup@4.24.0: + rollup@4.24.3: resolution: { - integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==, + integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==, } engines: { node: '>=18.0.0', npm: '>=8.0.0' } hasBin: true @@ -2860,13 +2795,6 @@ packages: } engines: { node: '>=4' } - strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: '>=6' } - strip-json-comments@3.1.1: resolution: { @@ -2941,10 +2869,10 @@ packages: integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==, } - tinyglobby@0.2.9: + tinyglobby@0.2.10: resolution: { - integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==, + integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==, } engines: { node: '>=12.0.0' } @@ -2996,10 +2924,10 @@ packages: } hasBin: true - ts-api-utils@1.3.0: + ts-api-utils@1.4.0: resolution: { - integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==, + integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==, } engines: { node: '>=16' } peerDependencies: @@ -3011,10 +2939,10 @@ packages: integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, } - tsup@8.3.0: + tsup@8.3.5: resolution: { - integrity: sha512-ALscEeyS03IomcuNdFdc0YWGVIkwH1Ws7nfTbAPuoILvEV2hpGQAY72LIOjglGo4ShWpZfpBqP/jpQVCzqYQag==, + integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==, } engines: { node: '>=18' } hasBin: true @@ -3040,10 +2968,17 @@ packages: } engines: { node: '>= 0.8.0' } - typescript-eslint@8.11.0: + typedescriptor@3.0.2: resolution: { - integrity: sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==, + integrity: sha512-hyVbaCUd18UiXk656g/imaBLMogpdijIEpnhWYrSda9rhvO4gOU16n2nh7xG5lv/rjumnZzGOdz0CEGTmFe0fQ==, + } + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + typescript-eslint@8.12.2: + resolution: + { + integrity: sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: @@ -3093,10 +3028,10 @@ packages: integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, } - vite-node@2.1.3: + vite-node@2.1.4: resolution: { - integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==, + integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==, } engines: { node: ^18.0.0 || >=20.0.0 } hasBin: true @@ -3148,18 +3083,18 @@ packages: terser: optional: true - vitest@2.1.3: + vitest@2.1.4: resolution: { - integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==, + integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==, } engines: { node: ^18.0.0 || >=20.0.0 } hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.3 - '@vitest/ui': 2.1.3 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3270,15 +3205,15 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.25.9': + '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.25.9 + '@babel/types': 7.26.0 - '@babel/runtime@7.25.9': + '@babel/runtime@7.26.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/types@7.25.9': + '@babel/types@7.26.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -3430,150 +3365,150 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.24.0': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': + '@esbuild/android-arm64@0.24.0': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': + '@esbuild/android-arm@0.24.0': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': + '@esbuild/android-x64@0.24.0': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': + '@esbuild/darwin-arm64@0.24.0': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': + '@esbuild/darwin-x64@0.24.0': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': + '@esbuild/freebsd-arm64@0.24.0': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': + '@esbuild/freebsd-x64@0.24.0': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': + '@esbuild/linux-arm64@0.24.0': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': + '@esbuild/linux-arm@0.24.0': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': + '@esbuild/linux-ia32@0.24.0': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': + '@esbuild/linux-loong64@0.24.0': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': + '@esbuild/linux-mips64el@0.24.0': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': + '@esbuild/linux-ppc64@0.24.0': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': + '@esbuild/linux-riscv64@0.24.0': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': + '@esbuild/linux-s390x@0.24.0': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': + '@esbuild/linux-x64@0.24.0': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/openbsd-arm64@0.24.0': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.24.0': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': + '@esbuild/sunos-x64@0.24.0': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': + '@esbuild/win32-arm64@0.24.0': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': + '@esbuild/win32-ia32@0.24.0': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': + '@esbuild/win32-x64@0.24.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0)': dependencies: eslint: 9.13.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} + '@eslint-community/regexpp@4.12.1': {} '@eslint/config-array@0.18.0': dependencies: @@ -3589,7 +3524,7 @@ snapshots: dependencies: ajv: 6.12.6 debug: 4.3.7 - espree: 10.2.0 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -3603,15 +3538,15 @@ snapshots: '@eslint/object-schema@2.1.4': {} - '@eslint/plugin-kit@0.2.1': + '@eslint/plugin-kit@0.2.2': dependencies: levn: 0.4.1 - '@humanfs/core@0.19.0': {} + '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.5': + '@humanfs/node@0.16.6': dependencies: - '@humanfs/core': 0.19.0 + '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} @@ -3646,14 +3581,14 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.25.9 + '@babel/runtime': 7.26.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.25.9 + '@babel/runtime': 7.26.0 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3707,67 +3642,73 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@penumbra-zone/protobuf@6.2.0(@bufbuild/protobuf@1.10.0)': + '@penumbra-zone/protobuf@6.3.0(@bufbuild/protobuf@1.10.0)': dependencies: '@bufbuild/protobuf': 1.10.0 '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + '@rollup/pluginutils@5.1.3(rollup@4.24.3)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 + + '@rollup/rollup-android-arm-eabi@4.24.3': + optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-android-arm64@4.24.3': optional: true - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-darwin-arm64@4.24.3': optional: true - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-darwin-x64@4.24.3': optional: true - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-freebsd-arm64@4.24.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-freebsd-x64@4.24.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.24.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.24.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-linux-x64-musl@4.24.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.24.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-ia32-msvc@4.24.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.3': optional: true '@rushstack/node-core-library@5.9.0(@types/node@22.5.5)': @@ -3819,30 +3760,30 @@ snapshots: undici-types: 6.19.8 optional: true - '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/type-utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.11.0 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/type-utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 eslint: 9.13.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.7 eslint: 9.13.0 optionalDependencies: @@ -3850,111 +3791,111 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.11.0': + '@typescript-eslint/scope-manager@8.12.2': dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 - '@typescript-eslint/type-utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.12.2(eslint@9.13.0)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) debug: 4.3.7 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color - '@typescript-eslint/types@8.11.0': {} + '@typescript-eslint/types@8.12.2': {} - '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': + '@typescript-eslint/utils@8.12.2(eslint@9.13.0)(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) eslint: 9.13.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.11.0': + '@typescript-eslint/visitor-keys@8.12.2': dependencies: - '@typescript-eslint/types': 8.11.0 + '@typescript-eslint/types': 8.12.2 eslint-visitor-keys: 3.4.3 - '@vitest/expect@2.1.3': + '@vitest/expect@2.1.4': dependencies: - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.1 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.5.5))': + '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@22.5.5))': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: vite: 5.4.10(@types/node@22.5.5) - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@2.1.4': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.3': + '@vitest/runner@2.1.4': dependencies: - '@vitest/utils': 2.1.3 + '@vitest/utils': 2.1.4 pathe: 1.1.2 - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.4 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.1.3': + '@vitest/spy@2.1.4': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.3': + '@vitest/utils@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.4 loupe: 3.1.2 tinyrainbow: 1.2.0 - '@volar/language-core@2.4.6': + '@volar/language-core@2.4.8': dependencies: - '@volar/source-map': 2.4.6 + '@volar/source-map': 2.4.8 - '@volar/source-map@2.4.6': {} + '@volar/source-map@2.4.8': {} - '@volar/typescript@2.4.6': + '@volar/typescript@2.4.8': dependencies: - '@volar/language-core': 2.4.6 + '@volar/language-core': 2.4.8 path-browserify: 1.0.1 vscode-uri: 3.0.8 '@vue/compiler-core@3.5.12': dependencies: - '@babel/parser': 7.25.9 + '@babel/parser': 7.26.2 '@vue/shared': 3.5.12 entities: 4.5.0 estree-walker: 2.0.2 @@ -3972,7 +3913,7 @@ snapshots: '@vue/language-core@2.1.6(typescript@5.6.3)': dependencies: - '@volar/language-core': 2.4.6 + '@volar/language-core': 2.4.8 '@vue/compiler-dom': 3.5.12 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.12 @@ -3985,11 +3926,11 @@ snapshots: '@vue/shared@3.5.12': {} - acorn-jsx@5.3.2(acorn@8.13.0): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.13.0 + acorn: 8.14.0 - acorn@8.13.0: {} + acorn@8.14.0: {} ajv-draft-04@1.0.0(ajv@8.13.0): optionalDependencies: @@ -4034,11 +3975,6 @@ snapshots: any-promise@1.3.0: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -4055,8 +3991,6 @@ snapshots: dependencies: is-windows: 1.0.2 - binary-extensions@2.3.0: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4070,16 +4004,16 @@ snapshots: dependencies: fill-range: 7.1.1 - bundle-require@5.0.0(esbuild@0.23.1): + bundle-require@5.0.0(esbuild@0.24.0): dependencies: - esbuild: 0.23.1 + esbuild: 0.24.0 load-tsconfig: 0.2.5 cac@6.7.14: {} callsites@3.1.0: {} - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -4096,17 +4030,9 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: + chokidar@4.0.1: dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + readdirp: 4.0.2 ci-info@3.9.0: {} @@ -4197,54 +4123,54 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 escape-string-regexp@4.0.0: {} - eslint-scope@8.1.0: + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.1.0: {} + eslint-visitor-keys@4.2.0: {} eslint@9.13.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.18.0 '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0 '@eslint/js': 9.13.0 - '@eslint/plugin-kit': 0.2.1 - '@humanfs/node': 0.16.5 + '@eslint/plugin-kit': 0.2.2 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.1 '@types/estree': 1.0.6 @@ -4254,9 +4180,9 @@ snapshots: cross-spawn: 7.0.3 debug: 4.3.7 escape-string-regexp: 4.0.0 - eslint-scope: 8.1.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -4275,11 +4201,11 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.2.0: + espree@10.3.0: dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) - eslint-visitor-keys: 4.1.0 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 esprima@4.0.1: {} @@ -4301,17 +4227,7 @@ snapshots: esutils@2.0.3: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 + expect-type@1.1.0: {} extendable-error@0.1.7: {} @@ -4343,12 +4259,12 @@ snapshots: optionalDependencies: picomatch: 4.0.2 - fetch-mock@11.1.5: + fetch-mock@12.0.2: dependencies: '@types/glob-to-regexp': 0.4.4 dequal: 2.0.3 glob-to-regexp: 0.4.1 - is-subset: 0.1.1 + is-subset-of: 3.1.10 regexparam: 3.0.0 file-entry-cache@8.0.0: @@ -4398,8 +4314,6 @@ snapshots: function-bind@1.1.2: {} - get-stream@6.0.1: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4444,8 +4358,6 @@ snapshots: human-id@1.0.2: {} - human-signals@2.1.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -4461,10 +4373,6 @@ snapshots: imurmurhash@0.1.4: {} - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -4479,13 +4387,13 @@ snapshots: is-number@7.0.0: {} - is-stream@2.0.1: {} - is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - is-subset@0.1.1: {} + is-subset-of@3.1.10: + dependencies: + typedescriptor: 3.0.2 is-windows@1.0.2: {} @@ -4577,8 +4485,6 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromatch@4.0.8: @@ -4586,8 +4492,6 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mimic-fn@2.1.0: {} - minimatch@3.0.8: dependencies: brace-expansion: 1.1.11 @@ -4604,7 +4508,7 @@ snapshots: mlly@1.7.2: dependencies: - acorn: 8.13.0 + acorn: 8.14.0 pathe: 1.1.2 pkg-types: 1.2.1 ufo: 1.5.4 @@ -4625,18 +4529,8 @@ snapshots: natural-compare@1.4.0: {} - normalize-path@3.0.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - object-assign@4.1.1: {} - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -4749,9 +4643,7 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 + readdirp@4.0.2: {} regenerator-runtime@0.14.1: {} @@ -4771,26 +4663,28 @@ snapshots: reusify@1.0.4: {} - rollup@4.24.0: + rollup@4.24.3: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.24.3 + '@rollup/rollup-android-arm64': 4.24.3 + '@rollup/rollup-darwin-arm64': 4.24.3 + '@rollup/rollup-darwin-x64': 4.24.3 + '@rollup/rollup-freebsd-arm64': 4.24.3 + '@rollup/rollup-freebsd-x64': 4.24.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 + '@rollup/rollup-linux-arm-musleabihf': 4.24.3 + '@rollup/rollup-linux-arm64-gnu': 4.24.3 + '@rollup/rollup-linux-arm64-musl': 4.24.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 + '@rollup/rollup-linux-riscv64-gnu': 4.24.3 + '@rollup/rollup-linux-s390x-gnu': 4.24.3 + '@rollup/rollup-linux-x64-gnu': 4.24.3 + '@rollup/rollup-linux-x64-musl': 4.24.3 + '@rollup/rollup-win32-arm64-msvc': 4.24.3 + '@rollup/rollup-win32-ia32-msvc': 4.24.3 + '@rollup/rollup-win32-x64-msvc': 4.24.3 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4868,8 +4762,6 @@ snapshots: strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} - strip-json-comments@3.1.1: {} sucrase@3.35.0: @@ -4908,7 +4800,7 @@ snapshots: tinyexec@0.3.1: {} - tinyglobby@0.2.9: + tinyglobby@0.2.10: dependencies: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 @@ -4933,29 +4825,29 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@1.3.0(typescript@5.6.3): + ts-api-utils@1.4.0(typescript@5.6.3): dependencies: typescript: 5.6.3 ts-interface-checker@0.1.13: {} - tsup@8.3.0(@microsoft/api-extractor@7.47.11(@types/node@22.5.5))(postcss@8.4.47)(typescript@5.6.3)(yaml@2.5.1): + tsup@8.3.5(@microsoft/api-extractor@7.47.11(@types/node@22.5.5))(postcss@8.4.47)(typescript@5.6.3)(yaml@2.5.1): dependencies: - bundle-require: 5.0.0(esbuild@0.23.1) + bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 - chokidar: 3.6.0 + chokidar: 4.0.1 consola: 3.2.3 debug: 4.3.7 - esbuild: 0.23.1 - execa: 5.1.1 + esbuild: 0.24.0 joycon: 3.1.1 picocolors: 1.1.1 postcss-load-config: 6.0.1(postcss@8.4.47)(yaml@2.5.1) resolve-from: 5.0.0 - rollup: 4.24.0 + rollup: 4.24.3 source-map: 0.8.0-beta.0 sucrase: 3.35.0 - tinyglobby: 0.2.9 + tinyexec: 0.3.1 + tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: '@microsoft/api-extractor': 7.47.11(@types/node@22.5.5) @@ -4971,11 +4863,13 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.11.0(eslint@9.13.0)(typescript@5.6.3): + typedescriptor@3.0.2: {} + + typescript-eslint@8.12.2(eslint@9.13.0)(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -4997,7 +4891,7 @@ snapshots: dependencies: punycode: 2.3.1 - vite-node@2.1.3(@types/node@22.5.5): + vite-node@2.1.4(@types/node@22.5.5): dependencies: cac: 6.7.14 debug: 4.3.7 @@ -5014,11 +4908,11 @@ snapshots: - supports-color - terser - vite-plugin-dts@4.3.0(@types/node@22.5.5)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.5.5)): + vite-plugin-dts@4.3.0(@types/node@22.5.5)(rollup@4.24.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.5.5)): dependencies: '@microsoft/api-extractor': 7.47.11(@types/node@22.5.5) - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) - '@volar/typescript': 2.4.6 + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) + '@volar/typescript': 2.4.8 '@vue/language-core': 2.1.6(typescript@5.6.3) compare-versions: 6.1.1 debug: 4.3.7 @@ -5037,22 +4931,23 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.24.0 + rollup: 4.24.3 optionalDependencies: '@types/node': 22.5.5 fsevents: 2.3.3 - vitest@2.1.3(@types/node@22.5.5): + vitest@2.1.4(@types/node@22.5.5): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.5.5)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.1 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@22.5.5)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 debug: 4.3.7 + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 @@ -5061,7 +4956,7 @@ snapshots: tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.10(@types/node@22.5.5) - vite-node: 2.1.3(@types/node@22.5.5) + vite-node: 2.1.4(@types/node@22.5.5) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.5.5 diff --git a/npm/src/json.ts b/npm/src/json.ts index 8564a8d..e5c1b88 100644 --- a/npm/src/json.ts +++ b/npm/src/json.ts @@ -28,6 +28,7 @@ export interface JsonMetadata { symbol: string; penumbraAssetId: PenumbraAssetId; images?: Image[]; + badges?: Image[]; } interface DenomUnit { diff --git a/npm/src/registry.test.ts b/npm/src/registry.test.ts index 201495e..db152ba 100644 --- a/npm/src/registry.test.ts +++ b/npm/src/registry.test.ts @@ -10,6 +10,20 @@ describe('Registry', () => { const usdcId = base64ToUint8Array('reum7wQmk/owgvGMWMZn/6RFPV24zIKq3W6In/WwZgg='); const res = registry.getMetadata(new AssetId({ inner: usdcId })); expect(res.base).toEqual('wtest_usd'); + expect(res.badges.length).toEqual(1); + expect(res.badges[0]?.png).toEqual( + 'https://raw.githubusercontent.com/prax-wallet/registry/main/images/penumbra-favicon.png', + ); + }); + + it('gets metadata without badges', () => { + const registry = new Registry(testRegistry); + const usdcId = base64ToUint8Array('ra98J77CX10Us2s6+d7bebfpm1Q3+UOycPfaaEeeuAY='); + const res = registry.getMetadata(new AssetId({ inner: usdcId })); + expect(res.base).toEqual( + 'transfer/channel-0/factory/osmo1zlkzu72774ynac53necz46u4ycqtp36wedrar0/willyz', + ); + expect(res.badges.length).toEqual(0); }); it('throws when searching for metadata that does not exist', () => { diff --git a/npm/src/remote.test.ts b/npm/src/remote.test.ts index c6a5012..efd5381 100644 --- a/npm/src/remote.test.ts +++ b/npm/src/remote.test.ts @@ -1,4 +1,4 @@ -import { it, describe, expect, beforeEach, afterAll } from 'vitest'; +import { it, describe, expect, beforeEach, afterEach } from 'vitest'; import fetchMock from 'fetch-mock'; import { RemoteClient } from './remote'; import { REGISTRY_BASE_URL } from './github'; @@ -12,24 +12,26 @@ describe('RemoteClient', () => { beforeEach(() => { const client = new ChainRegistryClient(); rClient = client.remote; - fetchMock.reset(); + fetchMock.mockGlobal(); }); - afterAll(() => { - fetchMock.restore(); + afterEach(() => { + fetchMock.removeRoutes(); + fetchMock.clearHistory(); + fetchMock.unmockGlobal(); }); it('should fetch registry remotely and parse it', async () => { const chainId = 'test-chain-7'; const endpoint = `${REGISTRY_BASE_URL}/chains/${chainId}.json`; - fetchMock.mock(endpoint, { + fetchMock.get(endpoint, { status: 200, body: Phobos1, }); const registry = await rClient.get(chainId); - expect(fetchMock.called(endpoint)).toBe(true); + expect(fetchMock.callHistory.called(endpoint)).toBe(true); expect(registry.chainId).toEqual(Phobos1.chainId); expect(registry.ibcConnections).toEqual(Phobos1.ibcConnections); expect(registry.getAllAssets().length).toEqual(Object.keys(Phobos1.assetById).length); @@ -38,7 +40,7 @@ describe('RemoteClient', () => { it('should throw if there is not a remote version', async () => { const chainId = 'test-not-real-3242'; const endpoint = `${REGISTRY_BASE_URL}/chains/${chainId}.json`; - fetchMock.mock(endpoint, { + fetchMock.get(endpoint, { status: 404, }); await expect(rClient.get(chainId)).rejects.toThrow(`Failed to fetch from: ${endpoint}`); @@ -46,14 +48,14 @@ describe('RemoteClient', () => { it('should fetch globals remotely and parse it', async () => { const endpoint = `${REGISTRY_BASE_URL}/globals.json`; - fetchMock.mock(endpoint, { + fetchMock.get(endpoint, { status: 200, body: GlobalsJson, }); const registry = await rClient.globals(); - expect(fetchMock.called(endpoint)).toBe(true); + expect(fetchMock.callHistory.called(endpoint)).toBe(true); expect(registry.stakingAssetId.toJson()).toEqual(GlobalsJson.stakingAssetId); expect(registry.frontends).toEqual(GlobalsJson.frontendsV2); expect(registry.rpcs).toEqual(GlobalsJson.rpcs); @@ -63,20 +65,20 @@ describe('RemoteClient', () => { it('fetches falls back if available', async () => { const testnetPreviewChainId = 'penumbra-testnet-phobos-1-x6de97e39'; const firstCall = `${REGISTRY_BASE_URL}/chains/${testnetPreviewChainId}.json`; - fetchMock.mock(firstCall, { + fetchMock.get(firstCall, { status: 404, }); const fallbackChainId = 'penumbra-testnet-phobos-1'; const secondCall = `${REGISTRY_BASE_URL}/chains/${fallbackChainId}.json`; - fetchMock.mock(secondCall, { + fetchMock.get(secondCall, { status: 200, body: Phobos1, }); const registry = await rClient.get(testnetPreviewChainId); - expect(fetchMock.called(firstCall)).toBe(true); - expect(fetchMock.called(secondCall)).toBe(true); + expect(fetchMock.callHistory.called(firstCall)).toBe(true); + expect(fetchMock.callHistory.called(secondCall)).toBe(true); expect(registry.chainId).toEqual(Phobos1.chainId); expect(registry.ibcConnections).toEqual(Phobos1.ibcConnections); expect(registry.getAllAssets().length).toEqual(Object.keys(Phobos1.assetById).length); @@ -85,12 +87,12 @@ describe('RemoteClient', () => { it('throws if falls back not available', async () => { const testnetPreviewChainId = 'penumbra-testnet-phobos-1-x6de97e39'; const firstCall = `${REGISTRY_BASE_URL}/chains/${testnetPreviewChainId}.json`; - fetchMock.mock(firstCall, { + fetchMock.get(firstCall, { status: 404, }); const fallbackChainId = 'penumbra-testnet-phobos-1'; const secondCall = `${REGISTRY_BASE_URL}/chains/${fallbackChainId}.json`; - fetchMock.mock(secondCall, { + fetchMock.get(secondCall, { status: 404, }); @@ -98,8 +100,8 @@ describe('RemoteClient', () => { `Failed to fetch from: ${secondCall}`, ); - expect(fetchMock.called(firstCall)).toBe(true); - expect(fetchMock.called(secondCall)).toBe(true); + expect(fetchMock.callHistory.called(firstCall)).toBe(true); + expect(fetchMock.callHistory.called(secondCall)).toBe(true); }); }); @@ -107,14 +109,14 @@ describe('RemoteClient', () => { it('fetches remote when available', async () => { const chainId = 'test-chain-7'; const endpoint = `${REGISTRY_BASE_URL}/chains/${chainId}.json`; - fetchMock.mock(endpoint, { + fetchMock.get(endpoint, { status: 200, body: Phobos1, }); const registry = await rClient.getWithBundledBackup(chainId); - expect(fetchMock.called(endpoint)).toBe(true); + expect(fetchMock.callHistory.called(endpoint)).toBe(true); expect(registry.chainId).toEqual(Phobos1.chainId); expect(registry.ibcConnections).toEqual(Phobos1.ibcConnections); expect(registry.getAllAssets().length).toEqual(Object.keys(Phobos1.assetById).length); @@ -123,13 +125,13 @@ describe('RemoteClient', () => { it('fetches bundled when available', async () => { const chainId = 'penumbra-testnet-phobos-1'; const endpoint = `${REGISTRY_BASE_URL}/chains/${chainId}.json`; - fetchMock.mock(endpoint, { + fetchMock.get(endpoint, { status: 404, }); const registry = await rClient.getWithBundledBackup(chainId); - expect(fetchMock.called(endpoint)).toBe(true); + expect(fetchMock.callHistory.called(endpoint)).toBe(true); expect(registry.chainId).toEqual(Phobos1.chainId); expect(registry.ibcConnections).toEqual(Phobos1.ibcConnections); expect(registry.getAllAssets().length).toEqual(Object.keys(Phobos1.assetById).length); diff --git a/registry/chains/penumbra-1.json b/registry/chains/penumbra-1.json index 8451779..1e97d7e 100644 --- a/registry/chains/penumbra-1.json +++ b/registry/chains/penumbra-1.json @@ -238,7 +238,13 @@ } } ], - "priorityScore": "200000000" + "priorityScore": "200000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "5B0jxWP9LX+U4uD7aU9OVsIk0U385uD2q+a2eEerHg0=": { "description": "Cosmos Airdrop Chat", @@ -410,7 +416,13 @@ } } ], - "priorityScore": "100000000" + "priorityScore": "100000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "AdlT67pUDx0wsIFBC4opbslYEOk6+QDIzWUcVtQlXgQ=": { "description": "Chain-key Bitcoin bridged via Omnity Network.", @@ -532,7 +544,13 @@ } } ], - "priorityScore": "100000000" + "priorityScore": "100000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "EMttUTznXaZu2d7ecHS5UC0RvJsBh9GYc79abym2ewc=": { "description": "Margined Power Token sqBTC", @@ -788,7 +806,13 @@ "theme": {} } ], - "priorityScore": "50000000000" + "priorityScore": "50000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "MMDbC4jQ7GUP6yEU+Yo2xkW85LyRKJASJN4MPHAPmhE=": { "description": "Levana Well-funded Perps is a protocol for perpetual swaps, which are leveraged trading contracts.", @@ -851,6 +875,12 @@ "circle": true } } + ], + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } ] }, "Md6xXujgk0jvdUPhlf/05wvTeXDEh8X/bDurrVJw2gU=": { @@ -1109,7 +1139,13 @@ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/allBTC.svg" } ], - "priorityScore": "70000000000" + "priorityScore": "70000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "Rvh55FJrd8q3kT8xYIl5ApTOc9ErxyL8m1NS5RArHxE=": { "description": "An alloy of OP asset variants on Osmosis.", @@ -1145,7 +1181,13 @@ } } ], - "priorityScore": "100000000" + "priorityScore": "100000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "SBYNLMUsCQQJaZZYXbrDHD5u/q6rdo6sURKyBlGMtxE=": { "description": "An alloy of DOT asset variants on Osmosis.", @@ -1189,7 +1231,13 @@ } } ], - "priorityScore": "3000000000" + "priorityScore": "3000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "SChNnza9qDQMNGqwSoQMzB2x2M5nmEBtST1EoSy29gM=": { "description": "An alloy of UNI asset variants on Osmosis.", @@ -1213,6 +1261,12 @@ { "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/uni.svg" } + ], + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } ] }, "TNHw/+5PPN0BC2U1Q80CnhoiKx3GI8ivmb2OG6m5yAI=": { @@ -1291,7 +1345,13 @@ } } ], - "priorityScore": "70000000000" + "priorityScore": "70000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "UxSzPuz9XKLpnAttHgzK/j0t1YHJUtgU+2T99R+FxBE=": { "description": "Celestia is a modular blockchain network focused on data availability, allowing developers to deploy their own customizable blockchains with ease.", @@ -1678,7 +1738,13 @@ } } ], - "priorityScore": "4000000000" + "priorityScore": "4000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "hOnMqQbpe5Abe7vvfHYda77fg3Zit88fatqDfPO1bgQ=": { "description": "An alloy of SHIB asset variants on Osmosis.", @@ -1714,7 +1780,13 @@ } } ], - "priorityScore": "100000000" + "priorityScore": "100000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "iI81O5821jqBIu4F1S2E4++UlzcvK+yI8cLEKZICgAs=": { "description": "ERIS liquid staked OSMO", @@ -2131,7 +2203,13 @@ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/allUSDT.svg" } ], - "priorityScore": "100000000000" + "priorityScore": "100000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "vSCVmtndzw2C2RYuB2vcKWfkPVZRCP9GNN8MwB6QUAU=": { "description": "Cosmus Cartol always get rich", @@ -2255,7 +2333,13 @@ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/allETH.svg" } ], - "priorityScore": "60000000000" + "priorityScore": "60000000000", + "badges": [ + { + "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png", + "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg" + } + ] }, "xNdg/Pc2CvrtawUX41EBLTlgj83RTenRJaBFXxsSTwk=": { "description": "ION is the second native token of Osmosis.", diff --git a/registry/chains/penumbra-testnet-deimos-8-x6de97e39.json b/registry/chains/penumbra-testnet-deimos-8-x6de97e39.json index ee0ffee..14b0e67 100644 --- a/registry/chains/penumbra-testnet-deimos-8-x6de97e39.json +++ b/registry/chains/penumbra-testnet-deimos-8-x6de97e39.json @@ -402,6 +402,11 @@ { "svg": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/test-usd.svg" } + ], + "badges": [ + { + "png": "https://raw.githubusercontent.com/prax-wallet/registry/main/images/penumbra-favicon.png" + } ] }, "ypUT1AOtjfwMOKMATACoD9RSvi8jY/YnYGi46CZ/6Q8=": { diff --git a/tools/compiler/Cargo.lock b/tools/compiler/Cargo.lock index 9d8e12f..b3569f2 100644 --- a/tools/compiler/Cargo.lock +++ b/tools/compiler/Cargo.lock @@ -46,9 +46,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "ark-bls12-377" @@ -285,7 +285,7 @@ checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -561,7 +561,7 @@ dependencies = [ "proc-macro2 1.0.86", "quote", "strsim", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -572,7 +572,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -603,8 +603,8 @@ dependencies = [ [[package]] name = "decaf377-fmd" -version = "0.80.4" -source = "git+https://github.com/penumbra-zone/penumbra.git?tag=v0.80.4#7f7c3c6f17d437ec773a38f0a70248b340282d3a" +version = "0.80.7" +source = "git+https://github.com/penumbra-zone/penumbra.git?rev=37f604fcf24653e5777d9a8d4bddb468e889560a#37f604fcf24653e5777d9a8d4bddb468e889560a" dependencies = [ "ark-ff", "ark-serialize", @@ -672,7 +672,7 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -703,7 +703,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -890,7 +890,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -940,8 +940,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -1608,8 +1610,8 @@ dependencies = [ [[package]] name = "penumbra-asset" -version = "0.80.4" -source = "git+https://github.com/penumbra-zone/penumbra.git?tag=v0.80.4#7f7c3c6f17d437ec773a38f0a70248b340282d3a" +version = "0.80.7" +source = "git+https://github.com/penumbra-zone/penumbra.git?rev=37f604fcf24653e5777d9a8d4bddb468e889560a#37f604fcf24653e5777d9a8d4bddb468e889560a" dependencies = [ "anyhow", "ark-ff", @@ -1626,6 +1628,7 @@ dependencies = [ "decaf377-rdsa", "derivative", "ethnum", + "getrandom", "hex", "ibig", "num-bigint", @@ -1646,8 +1649,8 @@ dependencies = [ [[package]] name = "penumbra-num" -version = "0.80.4" -source = "git+https://github.com/penumbra-zone/penumbra.git?tag=v0.80.4#7f7c3c6f17d437ec773a38f0a70248b340282d3a" +version = "0.80.7" +source = "git+https://github.com/penumbra-zone/penumbra.git?rev=37f604fcf24653e5777d9a8d4bddb468e889560a#37f604fcf24653e5777d9a8d4bddb468e889560a" dependencies = [ "anyhow", "ark-ff", @@ -1682,8 +1685,8 @@ dependencies = [ [[package]] name = "penumbra-proto" -version = "0.80.4" -source = "git+https://github.com/penumbra-zone/penumbra.git?tag=v0.80.4#7f7c3c6f17d437ec773a38f0a70248b340282d3a" +version = "0.80.7" +source = "git+https://github.com/penumbra-zone/penumbra.git?rev=37f604fcf24653e5777d9a8d4bddb468e889560a#37f604fcf24653e5777d9a8d4bddb468e889560a" dependencies = [ "anyhow", "async-trait", @@ -1750,7 +1753,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1839,7 +1842,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2 1.0.86", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -1908,7 +1911,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.77", + "syn 2.0.85", "tempfile", ] @@ -1922,7 +1925,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2182,9 +2185,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -2200,20 +2203,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -2229,7 +2232,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2259,7 +2262,7 @@ dependencies = [ "darling", "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2388,9 +2391,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2 1.0.86", "quote", @@ -2488,22 +2491,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2583,7 +2586,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2700,7 +2703,7 @@ dependencies = [ "once_cell", "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", "wasm-bindgen-shared", ] @@ -2722,7 +2725,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2882,7 +2885,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] [[package]] @@ -2902,5 +2905,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2 1.0.86", "quote", - "syn 2.0.77", + "syn 2.0.85", ] diff --git a/tools/compiler/Cargo.toml b/tools/compiler/Cargo.toml index 1bcad6e..c0402d2 100644 --- a/tools/compiler/Cargo.toml +++ b/tools/compiler/Cargo.toml @@ -4,14 +4,15 @@ version = "2.0.0" edition = "2021" [dependencies] -penumbra-asset = { git = "https://github.com/penumbra-zone/penumbra.git", tag = "v0.80.4", package = "penumbra-asset" } -penumbra-proto = { git = "https://github.com/penumbra-zone/penumbra.git", tag = "v0.80.4", package = "penumbra-proto", default-features = false } +# Commit dep until badges update to Metadata is shipped in a point release +penumbra-asset = { git = "https://github.com/penumbra-zone/penumbra.git", rev = "37f604fcf24653e5777d9a8d4bddb468e889560a", package = "penumbra-asset" } +penumbra-proto = { git = "https://github.com/penumbra-zone/penumbra.git", rev = "37f604fcf24653e5777d9a8d4bddb468e889560a", package = "penumbra-proto", default-features = false } -anyhow = "1.0.86" -serde = { version = "1.0.204", features = ["derive"] } -serde_json = "1.0.120" -regress = "0.10.0" +anyhow = "1.0.91" +serde = { version = "1.0.214", features = ["derive"] } +serde_json = "1.0.132" +regress = "0.10.1" tempdir = "0.3.7" -thiserror = "1.0.63" +thiserror = "1.0.65" tracing-subscriber = "0.3.18" tracing = "0.1.40" diff --git a/tools/compiler/src/parser.rs b/tools/compiler/src/parser.rs index 9bfd92f..b2e8322 100644 --- a/tools/compiler/src/parser.rs +++ b/tools/compiler/src/parser.rs @@ -21,6 +21,7 @@ pub struct GlobalsInput { } type BaseDenom = String; +type BadgeName = String; #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -31,41 +32,15 @@ pub struct ChainConfig { pub native_assets: Vec, pub canonical_numeraires: Vec, pub priority_scores_by_base: HashMap, + pub badges: HashMap, + pub badges_by_base: HashMap>, } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct EntityMetadata { pub name: String, pub url: String, - pub images: Vec, -} - -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Image { - #[serde(skip_serializing_if = "Option::is_none")] - pub png: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub svg: Option, -} - -impl From for AssetImage { - fn from(image: Image) -> Self { - AssetImage { - png: image.png.unwrap_or_default(), - svg: image.svg.unwrap_or_default(), - theme: None, - } - } -} - -pub trait IntoPbImages { - fn into_pb_images(self) -> Vec; -} - -impl IntoPbImages for Vec { - fn into_pb_images(self) -> Vec { - self.into_iter().map(AssetImage::from).collect() - } + pub images: Vec, } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -77,7 +52,7 @@ pub struct IbcInput { pub address_prefix: String, pub cosmos_registry_dir: String, pub display_name: String, - pub images: Vec, + pub images: Vec, } #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -85,7 +60,7 @@ pub struct IbcInput { pub struct ValidatorInput { pub name: String, pub base: String, - pub images: Vec, + pub images: Vec, } pub const LOCAL_REGISTRY_DIR: &str = "../../registry"; diff --git a/tools/compiler/src/processor.rs b/tools/compiler/src/processor.rs index 6cdfcf0..a7185b0 100644 --- a/tools/compiler/src/processor.rs +++ b/tools/compiler/src/processor.rs @@ -8,11 +8,12 @@ use crate::assetlist_schema::{AssetList, AssetTypeAsset}; use crate::error::{AppError, AppResult}; use crate::parser::{ copy_globals, get_chain_configs, reset_registry_dir, ChainConfig, EntityMetadata, GlobalsInput, - IbcInput, Image, LOCAL_INPUT_DIR, LOCAL_REGISTRY_DIR, + IbcInput, LOCAL_INPUT_DIR, LOCAL_REGISTRY_DIR, }; use crate::validator::generate_metadata_from_validators; use penumbra_asset::asset::{Id, Metadata}; use penumbra_asset::STAKING_TOKEN_ASSET_ID; +use penumbra_proto::core::asset::v1::AssetImage; use penumbra_proto::penumbra::core::asset::v1 as pb; use serde::{Deserialize, Serialize}; @@ -27,7 +28,7 @@ pub struct Chain { pub channel_id: String, pub counterparty_channel_id: String, pub display_name: String, - pub images: Vec, + pub images: Vec, } impl From for Chain { @@ -182,6 +183,27 @@ fn process_chain_config(chain_config: ChainConfig) -> AppResult { } } + // add badges if available + for metadata in &mut all_metadata { + if let Some(badges) = chain_config + .badges_by_base + .get(&metadata.base_denom().denom) + { + let mut pb_metadata: pb::Metadata = metadata.clone().into(); + pb_metadata.badges = badges + .iter() + .map(|b| { + chain_config + .badges + .get(b) + .ok_or_else(|| anyhow::anyhow!("Badge not found: {}", b)) + .cloned() + }) + .collect::, _>>()?; + *metadata = Metadata::try_from(pb_metadata)?; + } + } + Ok(Registry { chain_id: chain_config.chain_id, ibc_connections: chain_config diff --git a/tools/compiler/src/validator.rs b/tools/compiler/src/validator.rs index d1eb190..3ec5ff4 100644 --- a/tools/compiler/src/validator.rs +++ b/tools/compiler/src/validator.rs @@ -1,5 +1,4 @@ use crate::error::AppResult; -use crate::parser::IntoPbImages; use crate::parser::ValidatorInput; use penumbra_asset::asset::Metadata; @@ -18,7 +17,7 @@ pub fn generate_metadata_from_validators( let pb_metadata = pb::Metadata { symbol: format!("delUM({})", v.name), base: v.base.clone(), - images: v.images.clone().into_pb_images(), + images: v.images.clone(), display: display_denom.clone(), denom_units: vec![ DenomUnit { diff --git a/tools/compiler/tests/test_get_chain_configs.rs b/tools/compiler/tests/test_get_chain_configs.rs index 9e9a453..2eeef4a 100644 --- a/tools/compiler/tests/test_get_chain_configs.rs +++ b/tools/compiler/tests/test_get_chain_configs.rs @@ -27,6 +27,8 @@ fn test_get_chain_configs_reads_configs_correctly() { "nativeAssets": [], "canonicalNumeraires": [], "priorityScoresByBase": {}, + "badges": {}, + "badgesByBase": {}, }) .to_string(); create_test_config_file(temp_input_dir.path(), "test-chain-1.json", &config_content); @@ -50,6 +52,8 @@ fn test_get_chain_configs_reads_multiple_configs_correctly() { "nativeAssets": [], "canonicalNumeraires": [], "priorityScoresByBase": {}, + "badges": {}, + "badgesByBase": {}, }) .to_string(); create_test_config_file( @@ -68,6 +72,8 @@ fn test_get_chain_configs_reads_multiple_configs_correctly() { "nativeAssets": [], "canonicalNumeraires": [], "priorityScoresByBase": {}, + "badges": {}, + "badgesByBase": {}, }) .to_string(); create_test_config_file(