@metamask/snaps-utils 11.5.0 → 11.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [11.6.0]
11
+
12
+ ### Added
13
+
14
+ - Add IOTA derivation path ([#3653](https://github.com/MetaMask/snaps/pull/3653))
15
+ - Support byte encoding strings in `getJsonSizeUnsafe` ([#3660](https://github.com/MetaMask/snaps/pull/3660))
16
+
17
+ ### Changed
18
+
19
+ - Bump MetaMask dependencies ([#3651](https://github.com/MetaMask/snaps/pull/3651), [#3638](https://github.com/MetaMask/snaps/pull/3638), [#3648](https://github.com/MetaMask/snaps/pull/3648), [#3630](https://github.com/MetaMask/snaps/pull/3630), [#3628](https://github.com/MetaMask/snaps/pull/3628), [#3629](https://github.com/MetaMask/snaps/pull/3629), [#3607](https://github.com/MetaMask/snaps/pull/3607), [#3623](https://github.com/MetaMask/snaps/pull/3623), [#3612](https://github.com/MetaMask/snaps/pull/3612))
20
+
10
21
  ## [11.5.0]
11
22
 
12
23
  ### Added
@@ -704,7 +715,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
704
715
  - The version of the package no longer needs to match the version of all other
705
716
  MetaMask Snaps packages.
706
717
 
707
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-utils@11.5.0...HEAD
718
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-utils@11.6.0...HEAD
719
+ [11.6.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-utils@11.5.0...@metamask/snaps-utils@11.6.0
708
720
  [11.5.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-utils@11.4.0...@metamask/snaps-utils@11.5.0
709
721
  [11.4.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-utils@11.3.0...@metamask/snaps-utils@11.4.0
710
722
  [11.3.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-utils@11.2.0...@metamask/snaps-utils@11.3.0
@@ -182,6 +182,11 @@ exports.SNAPS_DERIVATION_PATHS = [
182
182
  curve: 'ed25519',
183
183
  name: 'Massa',
184
184
  },
185
+ {
186
+ path: ['m', `44'`, `4218'`],
187
+ curve: 'ed25519',
188
+ name: 'IOTA',
189
+ },
185
190
  ];
186
191
  /**
187
192
  * Gets the name of a derivation path supported by snaps.
@@ -1 +1 @@
1
- {"version":3,"file":"derivation-paths.cjs","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport slip44 from '@metamask/slip44';\n\nimport { isEqual } from './array';\n\nexport type SnapsDerivationPath = {\n path: ['m', ...string[]];\n curve: SupportedCurve;\n name: string;\n};\n\nexport const SNAPS_DERIVATION_PATHS: SnapsDerivationPath[] = [\n {\n path: ['m', `44'`, `0'`],\n curve: 'ed25519',\n name: 'Test BIP-32 Path (ed25519)',\n },\n {\n path: ['m', `44'`, `1'`],\n curve: 'secp256k1',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Legacy',\n },\n {\n path: ['m', `49'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Nested SegWit',\n },\n {\n path: ['m', `49'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Nested SegWit',\n },\n {\n path: ['m', `84'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Native SegWit',\n },\n {\n path: ['m', `84'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Native SegWit',\n },\n {\n path: ['m', `86'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Taproot',\n },\n {\n path: ['m', `86'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Taproot',\n },\n {\n path: ['m', `44'`, `501'`],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `501'`, \"0'\", \"0'\"],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `2'`],\n curve: 'secp256k1',\n name: 'Litecoin',\n },\n {\n path: ['m', `44'`, `3'`],\n curve: 'secp256k1',\n name: 'Dogecoin',\n },\n {\n path: ['m', `44'`, `60'`],\n curve: 'secp256k1',\n name: 'Ethereum',\n },\n {\n path: ['m', `44'`, `118'`],\n curve: 'secp256k1',\n name: 'Atom',\n },\n {\n path: ['m', `44'`, `145'`],\n curve: 'secp256k1',\n name: 'Bitcoin Cash',\n },\n {\n path: ['m', `44'`, `637'`],\n curve: 'ed25519',\n name: 'Aptos',\n },\n {\n path: ['m', `44'`, `714'`],\n curve: 'secp256k1',\n name: 'Binance (BNB)',\n },\n {\n path: ['m', `44'`, `784'`],\n curve: 'ed25519',\n name: 'Sui',\n },\n {\n path: ['m', `44'`, `931'`],\n curve: 'secp256k1',\n name: 'THORChain (RUNE)',\n },\n {\n path: ['m', `44'`, `330'`],\n curve: 'secp256k1',\n name: 'Terra (LUNA)',\n },\n {\n path: ['m', `44'`, `459'`],\n curve: 'secp256k1',\n name: 'Kava',\n },\n {\n path: ['m', `44'`, `529'`],\n curve: 'secp256k1',\n name: 'Secret Network',\n },\n {\n path: ['m', `44'`, `397'`, `0'`],\n curve: 'ed25519',\n name: 'NEAR Protocol',\n },\n {\n path: ['m', `44'`, `1'`, `0'`],\n curve: 'ed25519',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `472'`],\n curve: 'ed25519',\n name: 'Arweave',\n },\n {\n path: ['m', `44'`, `12586'`],\n curve: 'secp256k1',\n name: 'Mina',\n },\n {\n path: ['m', `44'`, `242'`],\n curve: 'ed25519',\n name: 'Nimiq',\n },\n {\n path: ['m', `44'`, `1729'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'Tezos',\n },\n {\n path: ['m', `1789'`, `0'`],\n curve: 'ed25519',\n name: 'Vega',\n },\n {\n path: ['m', `1852'`, `1815'`],\n curve: 'ed25519Bip32',\n name: 'Cardano',\n },\n {\n path: ['m', `44'`, `508'`, `0'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'MultiversX',\n },\n {\n path: ['m', `44'`, `709'`],\n curve: 'secp256k1',\n name: 'Avail',\n },\n {\n path: ['m', `44'`, `626'`],\n curve: 'ed25519',\n name: 'Kadena',\n },\n {\n path: ['m', `44'`, `632'`],\n curve: 'ed25519',\n name: 'Massa',\n },\n];\n\n/**\n * Gets the name of a derivation path supported by snaps.\n *\n * @param path - The derivation path.\n * @param curve - The curve used to derive the keys.\n * @returns The name of the derivation path, otherwise null.\n */\nexport function getSnapDerivationPathName(\n path: SnapsDerivationPath['path'],\n curve: SupportedCurve,\n): string | null {\n const pathMetadata = SNAPS_DERIVATION_PATHS.find(\n (derivationPath) =>\n derivationPath.curve === curve && isEqual(derivationPath.path, path),\n );\n\n if (pathMetadata) {\n return pathMetadata.name;\n }\n\n // If the curve is secp256k1 and the path is a valid BIP44 path\n // we try looking for the network/protocol name in SLIP44\n if (\n curve === 'secp256k1' &&\n path[0] === 'm' &&\n path[1] === `44'` &&\n path[2].endsWith(`'`)\n ) {\n const coinType = path[2].slice(0, -1);\n return getSlip44ProtocolName(coinType) ?? null;\n }\n\n return null;\n}\n\n/**\n * Gets the name of the SLIP-44 protocol corresponding to the specified\n * `coin_type`.\n *\n * @param coinType - The SLIP-44 `coin_type` value whose name\n * to retrieve.\n * @returns The name of the protocol, otherwise null.\n */\nexport function getSlip44ProtocolName(coinType: number | string) {\n if (String(coinType) === '1') {\n return 'Test Networks';\n }\n\n return slip44[coinType as keyof typeof slip44]?.name ?? null;\n}\n"]}
1
+ {"version":3,"file":"derivation-paths.cjs","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport slip44 from '@metamask/slip44';\n\nimport { isEqual } from './array';\n\nexport type SnapsDerivationPath = {\n path: ['m', ...string[]];\n curve: SupportedCurve;\n name: string;\n};\n\nexport const SNAPS_DERIVATION_PATHS: SnapsDerivationPath[] = [\n {\n path: ['m', `44'`, `0'`],\n curve: 'ed25519',\n name: 'Test BIP-32 Path (ed25519)',\n },\n {\n path: ['m', `44'`, `1'`],\n curve: 'secp256k1',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Legacy',\n },\n {\n path: ['m', `49'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Nested SegWit',\n },\n {\n path: ['m', `49'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Nested SegWit',\n },\n {\n path: ['m', `84'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Native SegWit',\n },\n {\n path: ['m', `84'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Native SegWit',\n },\n {\n path: ['m', `86'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Taproot',\n },\n {\n path: ['m', `86'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Taproot',\n },\n {\n path: ['m', `44'`, `501'`],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `501'`, \"0'\", \"0'\"],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `2'`],\n curve: 'secp256k1',\n name: 'Litecoin',\n },\n {\n path: ['m', `44'`, `3'`],\n curve: 'secp256k1',\n name: 'Dogecoin',\n },\n {\n path: ['m', `44'`, `60'`],\n curve: 'secp256k1',\n name: 'Ethereum',\n },\n {\n path: ['m', `44'`, `118'`],\n curve: 'secp256k1',\n name: 'Atom',\n },\n {\n path: ['m', `44'`, `145'`],\n curve: 'secp256k1',\n name: 'Bitcoin Cash',\n },\n {\n path: ['m', `44'`, `637'`],\n curve: 'ed25519',\n name: 'Aptos',\n },\n {\n path: ['m', `44'`, `714'`],\n curve: 'secp256k1',\n name: 'Binance (BNB)',\n },\n {\n path: ['m', `44'`, `784'`],\n curve: 'ed25519',\n name: 'Sui',\n },\n {\n path: ['m', `44'`, `931'`],\n curve: 'secp256k1',\n name: 'THORChain (RUNE)',\n },\n {\n path: ['m', `44'`, `330'`],\n curve: 'secp256k1',\n name: 'Terra (LUNA)',\n },\n {\n path: ['m', `44'`, `459'`],\n curve: 'secp256k1',\n name: 'Kava',\n },\n {\n path: ['m', `44'`, `529'`],\n curve: 'secp256k1',\n name: 'Secret Network',\n },\n {\n path: ['m', `44'`, `397'`, `0'`],\n curve: 'ed25519',\n name: 'NEAR Protocol',\n },\n {\n path: ['m', `44'`, `1'`, `0'`],\n curve: 'ed25519',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `472'`],\n curve: 'ed25519',\n name: 'Arweave',\n },\n {\n path: ['m', `44'`, `12586'`],\n curve: 'secp256k1',\n name: 'Mina',\n },\n {\n path: ['m', `44'`, `242'`],\n curve: 'ed25519',\n name: 'Nimiq',\n },\n {\n path: ['m', `44'`, `1729'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'Tezos',\n },\n {\n path: ['m', `1789'`, `0'`],\n curve: 'ed25519',\n name: 'Vega',\n },\n {\n path: ['m', `1852'`, `1815'`],\n curve: 'ed25519Bip32',\n name: 'Cardano',\n },\n {\n path: ['m', `44'`, `508'`, `0'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'MultiversX',\n },\n {\n path: ['m', `44'`, `709'`],\n curve: 'secp256k1',\n name: 'Avail',\n },\n {\n path: ['m', `44'`, `626'`],\n curve: 'ed25519',\n name: 'Kadena',\n },\n {\n path: ['m', `44'`, `632'`],\n curve: 'ed25519',\n name: 'Massa',\n },\n {\n path: ['m', `44'`, `4218'`],\n curve: 'ed25519',\n name: 'IOTA',\n },\n];\n\n/**\n * Gets the name of a derivation path supported by snaps.\n *\n * @param path - The derivation path.\n * @param curve - The curve used to derive the keys.\n * @returns The name of the derivation path, otherwise null.\n */\nexport function getSnapDerivationPathName(\n path: SnapsDerivationPath['path'],\n curve: SupportedCurve,\n): string | null {\n const pathMetadata = SNAPS_DERIVATION_PATHS.find(\n (derivationPath) =>\n derivationPath.curve === curve && isEqual(derivationPath.path, path),\n );\n\n if (pathMetadata) {\n return pathMetadata.name;\n }\n\n // If the curve is secp256k1 and the path is a valid BIP44 path\n // we try looking for the network/protocol name in SLIP44\n if (\n curve === 'secp256k1' &&\n path[0] === 'm' &&\n path[1] === `44'` &&\n path[2].endsWith(`'`)\n ) {\n const coinType = path[2].slice(0, -1);\n return getSlip44ProtocolName(coinType) ?? null;\n }\n\n return null;\n}\n\n/**\n * Gets the name of the SLIP-44 protocol corresponding to the specified\n * `coin_type`.\n *\n * @param coinType - The SLIP-44 `coin_type` value whose name\n * to retrieve.\n * @returns The name of the protocol, otherwise null.\n */\nexport function getSlip44ProtocolName(coinType: number | string) {\n if (String(coinType) === '1') {\n return 'Test Networks';\n }\n\n return slip44[coinType as keyof typeof slip44]?.name ?? null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"derivation-paths.d.cts","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B;AAKzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAgLvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACjC,KAAK,EAAE,cAAc,GACpB,MAAM,GAAG,IAAI,CAuBf;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,UAM9D"}
1
+ {"version":3,"file":"derivation-paths.d.cts","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B;AAKzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAqLvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACjC,KAAK,EAAE,cAAc,GACpB,MAAM,GAAG,IAAI,CAuBf;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,UAM9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"derivation-paths.d.mts","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B;AAKzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAgLvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACjC,KAAK,EAAE,cAAc,GACpB,MAAM,GAAG,IAAI,CAuBf;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,UAM9D"}
1
+ {"version":3,"file":"derivation-paths.d.mts","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B;AAKzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAqLvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACjC,KAAK,EAAE,cAAc,GACpB,MAAM,GAAG,IAAI,CAuBf;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,UAM9D"}
@@ -176,6 +176,11 @@ export const SNAPS_DERIVATION_PATHS = [
176
176
  curve: 'ed25519',
177
177
  name: 'Massa',
178
178
  },
179
+ {
180
+ path: ['m', `44'`, `4218'`],
181
+ curve: 'ed25519',
182
+ name: 'IOTA',
183
+ },
179
184
  ];
180
185
  /**
181
186
  * Gets the name of a derivation path supported by snaps.
@@ -1 +1 @@
1
- {"version":3,"file":"derivation-paths.mjs","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport slip44 from '@metamask/slip44';\n\nimport { isEqual } from './array';\n\nexport type SnapsDerivationPath = {\n path: ['m', ...string[]];\n curve: SupportedCurve;\n name: string;\n};\n\nexport const SNAPS_DERIVATION_PATHS: SnapsDerivationPath[] = [\n {\n path: ['m', `44'`, `0'`],\n curve: 'ed25519',\n name: 'Test BIP-32 Path (ed25519)',\n },\n {\n path: ['m', `44'`, `1'`],\n curve: 'secp256k1',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Legacy',\n },\n {\n path: ['m', `49'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Nested SegWit',\n },\n {\n path: ['m', `49'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Nested SegWit',\n },\n {\n path: ['m', `84'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Native SegWit',\n },\n {\n path: ['m', `84'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Native SegWit',\n },\n {\n path: ['m', `86'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Taproot',\n },\n {\n path: ['m', `86'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Taproot',\n },\n {\n path: ['m', `44'`, `501'`],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `501'`, \"0'\", \"0'\"],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `2'`],\n curve: 'secp256k1',\n name: 'Litecoin',\n },\n {\n path: ['m', `44'`, `3'`],\n curve: 'secp256k1',\n name: 'Dogecoin',\n },\n {\n path: ['m', `44'`, `60'`],\n curve: 'secp256k1',\n name: 'Ethereum',\n },\n {\n path: ['m', `44'`, `118'`],\n curve: 'secp256k1',\n name: 'Atom',\n },\n {\n path: ['m', `44'`, `145'`],\n curve: 'secp256k1',\n name: 'Bitcoin Cash',\n },\n {\n path: ['m', `44'`, `637'`],\n curve: 'ed25519',\n name: 'Aptos',\n },\n {\n path: ['m', `44'`, `714'`],\n curve: 'secp256k1',\n name: 'Binance (BNB)',\n },\n {\n path: ['m', `44'`, `784'`],\n curve: 'ed25519',\n name: 'Sui',\n },\n {\n path: ['m', `44'`, `931'`],\n curve: 'secp256k1',\n name: 'THORChain (RUNE)',\n },\n {\n path: ['m', `44'`, `330'`],\n curve: 'secp256k1',\n name: 'Terra (LUNA)',\n },\n {\n path: ['m', `44'`, `459'`],\n curve: 'secp256k1',\n name: 'Kava',\n },\n {\n path: ['m', `44'`, `529'`],\n curve: 'secp256k1',\n name: 'Secret Network',\n },\n {\n path: ['m', `44'`, `397'`, `0'`],\n curve: 'ed25519',\n name: 'NEAR Protocol',\n },\n {\n path: ['m', `44'`, `1'`, `0'`],\n curve: 'ed25519',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `472'`],\n curve: 'ed25519',\n name: 'Arweave',\n },\n {\n path: ['m', `44'`, `12586'`],\n curve: 'secp256k1',\n name: 'Mina',\n },\n {\n path: ['m', `44'`, `242'`],\n curve: 'ed25519',\n name: 'Nimiq',\n },\n {\n path: ['m', `44'`, `1729'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'Tezos',\n },\n {\n path: ['m', `1789'`, `0'`],\n curve: 'ed25519',\n name: 'Vega',\n },\n {\n path: ['m', `1852'`, `1815'`],\n curve: 'ed25519Bip32',\n name: 'Cardano',\n },\n {\n path: ['m', `44'`, `508'`, `0'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'MultiversX',\n },\n {\n path: ['m', `44'`, `709'`],\n curve: 'secp256k1',\n name: 'Avail',\n },\n {\n path: ['m', `44'`, `626'`],\n curve: 'ed25519',\n name: 'Kadena',\n },\n {\n path: ['m', `44'`, `632'`],\n curve: 'ed25519',\n name: 'Massa',\n },\n];\n\n/**\n * Gets the name of a derivation path supported by snaps.\n *\n * @param path - The derivation path.\n * @param curve - The curve used to derive the keys.\n * @returns The name of the derivation path, otherwise null.\n */\nexport function getSnapDerivationPathName(\n path: SnapsDerivationPath['path'],\n curve: SupportedCurve,\n): string | null {\n const pathMetadata = SNAPS_DERIVATION_PATHS.find(\n (derivationPath) =>\n derivationPath.curve === curve && isEqual(derivationPath.path, path),\n );\n\n if (pathMetadata) {\n return pathMetadata.name;\n }\n\n // If the curve is secp256k1 and the path is a valid BIP44 path\n // we try looking for the network/protocol name in SLIP44\n if (\n curve === 'secp256k1' &&\n path[0] === 'm' &&\n path[1] === `44'` &&\n path[2].endsWith(`'`)\n ) {\n const coinType = path[2].slice(0, -1);\n return getSlip44ProtocolName(coinType) ?? null;\n }\n\n return null;\n}\n\n/**\n * Gets the name of the SLIP-44 protocol corresponding to the specified\n * `coin_type`.\n *\n * @param coinType - The SLIP-44 `coin_type` value whose name\n * to retrieve.\n * @returns The name of the protocol, otherwise null.\n */\nexport function getSlip44ProtocolName(coinType: number | string) {\n if (String(coinType) === '1') {\n return 'Test Networks';\n }\n\n return slip44[coinType as keyof typeof slip44]?.name ?? null;\n}\n"]}
1
+ {"version":3,"file":"derivation-paths.mjs","sourceRoot":"","sources":["../src/derivation-paths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport slip44 from '@metamask/slip44';\n\nimport { isEqual } from './array';\n\nexport type SnapsDerivationPath = {\n path: ['m', ...string[]];\n curve: SupportedCurve;\n name: string;\n};\n\nexport const SNAPS_DERIVATION_PATHS: SnapsDerivationPath[] = [\n {\n path: ['m', `44'`, `0'`],\n curve: 'ed25519',\n name: 'Test BIP-32 Path (ed25519)',\n },\n {\n path: ['m', `44'`, `1'`],\n curve: 'secp256k1',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Legacy',\n },\n {\n path: ['m', `49'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Nested SegWit',\n },\n {\n path: ['m', `49'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Nested SegWit',\n },\n {\n path: ['m', `84'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Native SegWit',\n },\n {\n path: ['m', `84'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Native SegWit',\n },\n {\n path: ['m', `86'`, `0'`],\n curve: 'secp256k1',\n name: 'Bitcoin Taproot',\n },\n {\n path: ['m', `86'`, `1'`],\n curve: 'secp256k1',\n name: 'Bitcoin Testnet Taproot',\n },\n {\n path: ['m', `44'`, `501'`],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `501'`, \"0'\", \"0'\"],\n curve: 'ed25519',\n name: 'Solana',\n },\n {\n path: ['m', `44'`, `2'`],\n curve: 'secp256k1',\n name: 'Litecoin',\n },\n {\n path: ['m', `44'`, `3'`],\n curve: 'secp256k1',\n name: 'Dogecoin',\n },\n {\n path: ['m', `44'`, `60'`],\n curve: 'secp256k1',\n name: 'Ethereum',\n },\n {\n path: ['m', `44'`, `118'`],\n curve: 'secp256k1',\n name: 'Atom',\n },\n {\n path: ['m', `44'`, `145'`],\n curve: 'secp256k1',\n name: 'Bitcoin Cash',\n },\n {\n path: ['m', `44'`, `637'`],\n curve: 'ed25519',\n name: 'Aptos',\n },\n {\n path: ['m', `44'`, `714'`],\n curve: 'secp256k1',\n name: 'Binance (BNB)',\n },\n {\n path: ['m', `44'`, `784'`],\n curve: 'ed25519',\n name: 'Sui',\n },\n {\n path: ['m', `44'`, `931'`],\n curve: 'secp256k1',\n name: 'THORChain (RUNE)',\n },\n {\n path: ['m', `44'`, `330'`],\n curve: 'secp256k1',\n name: 'Terra (LUNA)',\n },\n {\n path: ['m', `44'`, `459'`],\n curve: 'secp256k1',\n name: 'Kava',\n },\n {\n path: ['m', `44'`, `529'`],\n curve: 'secp256k1',\n name: 'Secret Network',\n },\n {\n path: ['m', `44'`, `397'`, `0'`],\n curve: 'ed25519',\n name: 'NEAR Protocol',\n },\n {\n path: ['m', `44'`, `1'`, `0'`],\n curve: 'ed25519',\n name: 'Testnet',\n },\n {\n path: ['m', `44'`, `472'`],\n curve: 'ed25519',\n name: 'Arweave',\n },\n {\n path: ['m', `44'`, `12586'`],\n curve: 'secp256k1',\n name: 'Mina',\n },\n {\n path: ['m', `44'`, `242'`],\n curve: 'ed25519',\n name: 'Nimiq',\n },\n {\n path: ['m', `44'`, `1729'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'Tezos',\n },\n {\n path: ['m', `1789'`, `0'`],\n curve: 'ed25519',\n name: 'Vega',\n },\n {\n path: ['m', `1852'`, `1815'`],\n curve: 'ed25519Bip32',\n name: 'Cardano',\n },\n {\n path: ['m', `44'`, `508'`, `0'`, `0'`, `0'`],\n curve: 'ed25519',\n name: 'MultiversX',\n },\n {\n path: ['m', `44'`, `709'`],\n curve: 'secp256k1',\n name: 'Avail',\n },\n {\n path: ['m', `44'`, `626'`],\n curve: 'ed25519',\n name: 'Kadena',\n },\n {\n path: ['m', `44'`, `632'`],\n curve: 'ed25519',\n name: 'Massa',\n },\n {\n path: ['m', `44'`, `4218'`],\n curve: 'ed25519',\n name: 'IOTA',\n },\n];\n\n/**\n * Gets the name of a derivation path supported by snaps.\n *\n * @param path - The derivation path.\n * @param curve - The curve used to derive the keys.\n * @returns The name of the derivation path, otherwise null.\n */\nexport function getSnapDerivationPathName(\n path: SnapsDerivationPath['path'],\n curve: SupportedCurve,\n): string | null {\n const pathMetadata = SNAPS_DERIVATION_PATHS.find(\n (derivationPath) =>\n derivationPath.curve === curve && isEqual(derivationPath.path, path),\n );\n\n if (pathMetadata) {\n return pathMetadata.name;\n }\n\n // If the curve is secp256k1 and the path is a valid BIP44 path\n // we try looking for the network/protocol name in SLIP44\n if (\n curve === 'secp256k1' &&\n path[0] === 'm' &&\n path[1] === `44'` &&\n path[2].endsWith(`'`)\n ) {\n const coinType = path[2].slice(0, -1);\n return getSlip44ProtocolName(coinType) ?? null;\n }\n\n return null;\n}\n\n/**\n * Gets the name of the SLIP-44 protocol corresponding to the specified\n * `coin_type`.\n *\n * @param coinType - The SLIP-44 `coin_type` value whose name\n * to retrieve.\n * @returns The name of the protocol, otherwise null.\n */\nexport function getSlip44ProtocolName(coinType: number | string) {\n if (String(coinType) === '1') {\n return 'Test Networks';\n }\n\n return slip44[coinType as keyof typeof slip44]?.name ?? null;\n}\n"]}
package/dist/json.cjs CHANGED
@@ -23,16 +23,17 @@ exports.parseJson = parseJson;
23
23
  *
24
24
  * This may sometimes be preferred over `getJsonSize` for performance reasons.
25
25
  *
26
- * Note: This function does not encode the string to bytes, thus the input may
26
+ * Note: By default this function does not encode the string to bytes, thus the input may
27
27
  * be about 4x larger in practice. Use this function with caution.
28
28
  *
29
29
  * @param value - The JSON value to get the size of.
30
+ * @param encode - Whether the value should be encoded before measuring.
30
31
  * @returns The size of the JSON value in bytes.
31
32
  */
32
- function getJsonSizeUnsafe(value) {
33
+ function getJsonSizeUnsafe(value, encode = false) {
33
34
  const json = JSON.stringify(value);
34
- // We intentionally don't use `TextEncoder` because of bad performance on React Native.
35
- return json.length;
35
+ // We intentionally don't use `TextEncoder` by default because of bad performance on React Native.
36
+ return encode ? new TextEncoder().encode(json).byteLength : json.length;
36
37
  }
37
38
  exports.getJsonSizeUnsafe = getJsonSizeUnsafe;
38
39
  //# sourceMappingURL=json.cjs.map
package/dist/json.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"json.cjs","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAE9C,yCAAyC;AAEzC;;;;;;;;;;GAUG;AACH,SAAgB,SAAS,CAA2B,IAAY;IAC9D,OAAO,IAAA,mBAAW,EAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAFD,8BAEC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,KAAW;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,uFAAuF;IACvF,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAJD,8CAIC","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { getSafeJson } from '@metamask/utils';\n\n// TODO: Upstream this to @metamask/utils\n\n/**\n * Parse JSON safely.\n *\n * Does multiple kinds of validation and strips unwanted properties like\n * `__proto__` and `constructor`.\n *\n * @param json - A JSON string to be parsed.\n * @returns The parsed JSON object.\n * @template Type - The type of the JSON object. The type is not actually\n * checked, but it is used to infer the return type.\n */\nexport function parseJson<Type extends Json = Json>(json: string) {\n return getSafeJson<Type>(JSON.parse(json));\n}\n\n/**\n * Get the size of a JSON blob without validating that is valid JSON.\n *\n * This may sometimes be preferred over `getJsonSize` for performance reasons.\n *\n * Note: This function does not encode the string to bytes, thus the input may\n * be about 4x larger in practice. Use this function with caution.\n *\n * @param value - The JSON value to get the size of.\n * @returns The size of the JSON value in bytes.\n */\nexport function getJsonSizeUnsafe(value: Json): number {\n const json = JSON.stringify(value);\n // We intentionally don't use `TextEncoder` because of bad performance on React Native.\n return json.length;\n}\n"]}
1
+ {"version":3,"file":"json.cjs","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAE9C,yCAAyC;AAEzC;;;;;;;;;;GAUG;AACH,SAAgB,SAAS,CAA2B,IAAY;IAC9D,OAAO,IAAA,mBAAW,EAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAFD,8BAEC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,iBAAiB,CAAC,KAAW,EAAE,MAAM,GAAG,KAAK;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,kGAAkG;IAClG,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1E,CAAC;AAJD,8CAIC","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { getSafeJson } from '@metamask/utils';\n\n// TODO: Upstream this to @metamask/utils\n\n/**\n * Parse JSON safely.\n *\n * Does multiple kinds of validation and strips unwanted properties like\n * `__proto__` and `constructor`.\n *\n * @param json - A JSON string to be parsed.\n * @returns The parsed JSON object.\n * @template Type - The type of the JSON object. The type is not actually\n * checked, but it is used to infer the return type.\n */\nexport function parseJson<Type extends Json = Json>(json: string) {\n return getSafeJson<Type>(JSON.parse(json));\n}\n\n/**\n * Get the size of a JSON blob without validating that is valid JSON.\n *\n * This may sometimes be preferred over `getJsonSize` for performance reasons.\n *\n * Note: By default this function does not encode the string to bytes, thus the input may\n * be about 4x larger in practice. Use this function with caution.\n *\n * @param value - The JSON value to get the size of.\n * @param encode - Whether the value should be encoded before measuring.\n * @returns The size of the JSON value in bytes.\n */\nexport function getJsonSizeUnsafe(value: Json, encode = false): number {\n const json = JSON.stringify(value);\n // We intentionally don't use `TextEncoder` by default because of bad performance on React Native.\n return encode ? new TextEncoder().encode(json).byteLength : json.length;\n}\n"]}
package/dist/json.d.cts CHANGED
@@ -16,11 +16,12 @@ export declare function parseJson<Type extends Json = Json>(json: string): Type;
16
16
  *
17
17
  * This may sometimes be preferred over `getJsonSize` for performance reasons.
18
18
  *
19
- * Note: This function does not encode the string to bytes, thus the input may
19
+ * Note: By default this function does not encode the string to bytes, thus the input may
20
20
  * be about 4x larger in practice. Use this function with caution.
21
21
  *
22
22
  * @param value - The JSON value to get the size of.
23
+ * @param encode - Whether the value should be encoded before measuring.
23
24
  * @returns The size of the JSON value in bytes.
24
25
  */
25
- export declare function getJsonSizeUnsafe(value: Json): number;
26
+ export declare function getJsonSizeUnsafe(value: Json, encode?: boolean): number;
26
27
  //# sourceMappingURL=json.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.cts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,QAE/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAIrD"}
1
+ {"version":3,"file":"json.d.cts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,QAE/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,UAAQ,GAAG,MAAM,CAIrE"}
package/dist/json.d.mts CHANGED
@@ -16,11 +16,12 @@ export declare function parseJson<Type extends Json = Json>(json: string): Type;
16
16
  *
17
17
  * This may sometimes be preferred over `getJsonSize` for performance reasons.
18
18
  *
19
- * Note: This function does not encode the string to bytes, thus the input may
19
+ * Note: By default this function does not encode the string to bytes, thus the input may
20
20
  * be about 4x larger in practice. Use this function with caution.
21
21
  *
22
22
  * @param value - The JSON value to get the size of.
23
+ * @param encode - Whether the value should be encoded before measuring.
23
24
  * @returns The size of the JSON value in bytes.
24
25
  */
25
- export declare function getJsonSizeUnsafe(value: Json): number;
26
+ export declare function getJsonSizeUnsafe(value: Json, encode?: boolean): number;
26
27
  //# sourceMappingURL=json.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,QAE/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAIrD"}
1
+ {"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAK5C;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,QAE/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,UAAQ,GAAG,MAAM,CAIrE"}
package/dist/json.mjs CHANGED
@@ -19,15 +19,16 @@ export function parseJson(json) {
19
19
  *
20
20
  * This may sometimes be preferred over `getJsonSize` for performance reasons.
21
21
  *
22
- * Note: This function does not encode the string to bytes, thus the input may
22
+ * Note: By default this function does not encode the string to bytes, thus the input may
23
23
  * be about 4x larger in practice. Use this function with caution.
24
24
  *
25
25
  * @param value - The JSON value to get the size of.
26
+ * @param encode - Whether the value should be encoded before measuring.
26
27
  * @returns The size of the JSON value in bytes.
27
28
  */
28
- export function getJsonSizeUnsafe(value) {
29
+ export function getJsonSizeUnsafe(value, encode = false) {
29
30
  const json = JSON.stringify(value);
30
- // We intentionally don't use `TextEncoder` because of bad performance on React Native.
31
- return json.length;
31
+ // We intentionally don't use `TextEncoder` by default because of bad performance on React Native.
32
+ return encode ? new TextEncoder().encode(json).byteLength : json.length;
32
33
  }
33
34
  //# sourceMappingURL=json.mjs.map
package/dist/json.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"json.mjs","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,yCAAyC;AAEzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAA2B,IAAY;IAC9D,OAAO,WAAW,CAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAW;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,uFAAuF;IACvF,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { getSafeJson } from '@metamask/utils';\n\n// TODO: Upstream this to @metamask/utils\n\n/**\n * Parse JSON safely.\n *\n * Does multiple kinds of validation and strips unwanted properties like\n * `__proto__` and `constructor`.\n *\n * @param json - A JSON string to be parsed.\n * @returns The parsed JSON object.\n * @template Type - The type of the JSON object. The type is not actually\n * checked, but it is used to infer the return type.\n */\nexport function parseJson<Type extends Json = Json>(json: string) {\n return getSafeJson<Type>(JSON.parse(json));\n}\n\n/**\n * Get the size of a JSON blob without validating that is valid JSON.\n *\n * This may sometimes be preferred over `getJsonSize` for performance reasons.\n *\n * Note: This function does not encode the string to bytes, thus the input may\n * be about 4x larger in practice. Use this function with caution.\n *\n * @param value - The JSON value to get the size of.\n * @returns The size of the JSON value in bytes.\n */\nexport function getJsonSizeUnsafe(value: Json): number {\n const json = JSON.stringify(value);\n // We intentionally don't use `TextEncoder` because of bad performance on React Native.\n return json.length;\n}\n"]}
1
+ {"version":3,"file":"json.mjs","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,wBAAwB;AAE9C,yCAAyC;AAEzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAA2B,IAAY;IAC9D,OAAO,WAAW,CAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAW,EAAE,MAAM,GAAG,KAAK;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,kGAAkG;IAClG,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1E,CAAC","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { getSafeJson } from '@metamask/utils';\n\n// TODO: Upstream this to @metamask/utils\n\n/**\n * Parse JSON safely.\n *\n * Does multiple kinds of validation and strips unwanted properties like\n * `__proto__` and `constructor`.\n *\n * @param json - A JSON string to be parsed.\n * @returns The parsed JSON object.\n * @template Type - The type of the JSON object. The type is not actually\n * checked, but it is used to infer the return type.\n */\nexport function parseJson<Type extends Json = Json>(json: string) {\n return getSafeJson<Type>(JSON.parse(json));\n}\n\n/**\n * Get the size of a JSON blob without validating that is valid JSON.\n *\n * This may sometimes be preferred over `getJsonSize` for performance reasons.\n *\n * Note: By default this function does not encode the string to bytes, thus the input may\n * be about 4x larger in practice. Use this function with caution.\n *\n * @param value - The JSON value to get the size of.\n * @param encode - Whether the value should be encoded before measuring.\n * @returns The size of the JSON value in bytes.\n */\nexport function getJsonSizeUnsafe(value: Json, encode = false): number {\n const json = JSON.stringify(value);\n // We intentionally don't use `TextEncoder` by default because of bad performance on React Native.\n return encode ? new TextEncoder().encode(json).byteLength : json.length;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/snaps-utils",
3
- "version": "11.5.0",
3
+ "version": "11.6.0",
4
4
  "description": "A collection of utilities for MetaMask Snaps",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -80,15 +80,15 @@
80
80
  "dependencies": {
81
81
  "@babel/core": "^7.23.2",
82
82
  "@babel/types": "^7.23.0",
83
- "@metamask/base-controller": "^8.1.0",
83
+ "@metamask/base-controller": "^8.4.0",
84
84
  "@metamask/key-tree": "^10.1.1",
85
85
  "@metamask/permission-controller": "^11.0.6",
86
86
  "@metamask/rpc-errors": "^7.0.3",
87
- "@metamask/slip44": "^4.2.0",
87
+ "@metamask/slip44": "^4.3.0",
88
88
  "@metamask/snaps-registry": "^3.2.3",
89
- "@metamask/snaps-sdk": "^9.3.0",
89
+ "@metamask/snaps-sdk": "^10.0.0",
90
90
  "@metamask/superstruct": "^3.2.1",
91
- "@metamask/utils": "^11.4.2",
91
+ "@metamask/utils": "^11.8.1",
92
92
  "@noble/hashes": "^1.7.1",
93
93
  "@scure/base": "^1.1.1",
94
94
  "chalk": "^4.1.2",
@@ -104,7 +104,7 @@
104
104
  "validate-npm-package-name": "^5.0.0"
105
105
  },
106
106
  "devDependencies": {
107
- "@lavamoat/allow-scripts": "^3.3.4",
107
+ "@lavamoat/allow-scripts": "^3.4.0",
108
108
  "@metamask/auto-changelog": "^5.0.2",
109
109
  "@metamask/post-message-stream": "^10.0.0",
110
110
  "@swc/core": "1.11.31",