@metamask/snaps-utils 12.1.3 → 12.2.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 +13 -1
- package/dist/caveats.cjs +4 -0
- package/dist/caveats.cjs.map +1 -1
- package/dist/caveats.d.cts +4 -0
- package/dist/caveats.d.cts.map +1 -1
- package/dist/caveats.d.mts +4 -0
- package/dist/caveats.d.mts.map +1 -1
- package/dist/caveats.mjs +4 -0
- package/dist/caveats.mjs.map +1 -1
- package/dist/handlers/home-page.d.cts +3 -3
- package/dist/handlers/home-page.d.mts +3 -3
- package/dist/handlers/settings-page.d.cts +1 -1
- package/dist/handlers/settings-page.d.mts +1 -1
- package/dist/handlers/signature.d.cts +1 -1
- package/dist/handlers/signature.d.mts +1 -1
- package/dist/handlers/transaction.d.cts +3 -3
- package/dist/handlers/transaction.d.mts +3 -3
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/keyring.cjs +73 -0
- package/dist/keyring.cjs.map +1 -0
- package/dist/keyring.d.cts +119 -0
- package/dist/keyring.d.cts.map +1 -0
- package/dist/keyring.d.mts +119 -0
- package/dist/keyring.d.mts.map +1 -0
- package/dist/keyring.mjs +69 -0
- package/dist/keyring.mjs.map +1 -0
- package/dist/localization.d.cts +21 -0
- package/dist/localization.d.cts.map +1 -1
- package/dist/localization.d.mts +21 -0
- package/dist/localization.d.mts.map +1 -1
- package/dist/manifest/validation.cjs +2 -1
- package/dist/manifest/validation.cjs.map +1 -1
- package/dist/manifest/validation.d.cts +42 -0
- package/dist/manifest/validation.d.cts.map +1 -1
- package/dist/manifest/validation.d.mts +42 -0
- package/dist/manifest/validation.d.mts.map +1 -1
- package/dist/manifest/validation.mjs +2 -1
- package/dist/manifest/validation.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -88,6 +88,27 @@ export declare const SnapManifestStruct: Struct<{
|
|
|
88
88
|
'endowment:ethereum-provider': EmptyObject;
|
|
89
89
|
'endowment:keyring': {
|
|
90
90
|
allowedOrigins?: string[] | undefined;
|
|
91
|
+
capabilities?: {
|
|
92
|
+
scopes: `${string}:${string}`[];
|
|
93
|
+
bip44?: {
|
|
94
|
+
derivePath?: boolean | undefined;
|
|
95
|
+
deriveIndex?: boolean | undefined;
|
|
96
|
+
deriveIndexRange?: boolean | undefined;
|
|
97
|
+
discover?: boolean | undefined;
|
|
98
|
+
} | undefined;
|
|
99
|
+
privateKey?: {
|
|
100
|
+
importFormats?: {
|
|
101
|
+
encoding: "hexadecimal" | "base58";
|
|
102
|
+
type?: ("eip155:eoa" | "eip155:erc4337" | "bip122:p2pkh" | "bip122:p2sh" | "bip122:p2wpkh" | "bip122:p2tr" | "solana:data-account" | "tron:eoa" | "entropy:account") | undefined;
|
|
103
|
+
}[] | undefined;
|
|
104
|
+
exportFormats?: {
|
|
105
|
+
encoding: "hexadecimal" | "base58";
|
|
106
|
+
}[] | undefined;
|
|
107
|
+
} | undefined;
|
|
108
|
+
custom?: {
|
|
109
|
+
createAccounts?: boolean | undefined;
|
|
110
|
+
} | undefined;
|
|
111
|
+
} | undefined;
|
|
91
112
|
maxRequestTime?: number | undefined;
|
|
92
113
|
};
|
|
93
114
|
'endowment:lifecycle-hooks'?: {
|
|
@@ -198,6 +219,27 @@ export declare const SnapManifestStruct: Struct<{
|
|
|
198
219
|
'endowment:ethereum-provider': EmptyObject;
|
|
199
220
|
'endowment:keyring': {
|
|
200
221
|
allowedOrigins?: string[] | undefined;
|
|
222
|
+
capabilities?: {
|
|
223
|
+
scopes: `${string}:${string}`[];
|
|
224
|
+
bip44?: {
|
|
225
|
+
derivePath?: boolean | undefined;
|
|
226
|
+
deriveIndex?: boolean | undefined;
|
|
227
|
+
deriveIndexRange?: boolean | undefined;
|
|
228
|
+
discover?: boolean | undefined;
|
|
229
|
+
} | undefined;
|
|
230
|
+
privateKey?: {
|
|
231
|
+
importFormats?: {
|
|
232
|
+
encoding: "hexadecimal" | "base58";
|
|
233
|
+
type?: ("eip155:eoa" | "eip155:erc4337" | "bip122:p2pkh" | "bip122:p2sh" | "bip122:p2wpkh" | "bip122:p2tr" | "solana:data-account" | "tron:eoa" | "entropy:account") | undefined;
|
|
234
|
+
}[] | undefined;
|
|
235
|
+
exportFormats?: {
|
|
236
|
+
encoding: "hexadecimal" | "base58";
|
|
237
|
+
}[] | undefined;
|
|
238
|
+
} | undefined;
|
|
239
|
+
custom?: {
|
|
240
|
+
createAccounts?: boolean | undefined;
|
|
241
|
+
} | undefined;
|
|
242
|
+
} | undefined;
|
|
201
243
|
maxRequestTime?: number | undefined;
|
|
202
244
|
};
|
|
203
245
|
'endowment:lifecycle-hooks'?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.mts","sourceRoot":"","sources":["../../src/manifest/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,4BAA4B;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B;
|
|
1
|
+
{"version":3,"file":"validation.d.mts","sourceRoot":"","sources":["../../src/manifest/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,2BAA2B;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,4BAA4B;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B;AAmCrE,OAAO,EAAgB,KAAK,aAAa,EAAE,uBAAmB;AAc9D,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAAS,CAAC;AAKnD,eAAO,MAAM,eAAe,wCA8C3B,CAAC;AAEF,eAAO,MAAM,YAAY;UACF,MAAM,EAAE;WAAS,MAAM;gEAc1C,CAAC;AAEL,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,cAAc,CAI/C,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;EAK9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE5D,eAAO,MAAM,oCAAoC;;;;;;;;;GAIhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,sBAK5B,CAAC;AAEH,eAAO,MAAM,aAAa;;SAUzB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAElD,eAAO,MAAM,cAAc,sEAA8C,CAAC;AAE1E,eAAO,MAAM,oBAAoB;;;;;;;QAW/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,QAAqC,CAAC;AAC1E,eAAO,MAAM,uBAAuB,QAAqC,CAAC;AAE1E,eAAO,MAAM,oBAAoB,sBAIhC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;SAGhC,CAAC;AAGF,eAAO,MAAM,oBAAoB;;;;EAE/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB,2BAG7B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAwEzD,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,aAAa,CACzC,OAAO,iBAAiB,EACxB,kBAAkB,CACnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,wCAAkB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,uBAAuB,wCAA2B,CAAC;AAEhE,eAAO,MAAM,wBAAwB,kCAGpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,YAAY,CAM/B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAG/D"}
|
|
@@ -5,6 +5,7 @@ import { isDerivationPathEqual } from "../array.mjs";
|
|
|
5
5
|
import { CronjobSpecificationArrayStruct } from "../cronjob.mjs";
|
|
6
6
|
import { SIP_6_MAGIC_VALUE, STATE_ENCRYPTION_MAGIC_VALUE } from "../entropy.mjs";
|
|
7
7
|
import { KeyringOriginsStruct, RpcOriginsStruct } from "../json-rpc.mjs";
|
|
8
|
+
import { KeyringCapabilitiesStruct } from "../keyring.mjs";
|
|
8
9
|
import { SnapIdStruct } from "../snaps.mjs";
|
|
9
10
|
import { mergeStructs } from "../structs.mjs";
|
|
10
11
|
import { NameStruct, NpmSnapFileNames, uri } from "../types.mjs";
|
|
@@ -95,7 +96,7 @@ export const PermissionsStruct = type({
|
|
|
95
96
|
'endowment:assets': optional(mergeStructs(HandlerCaveatsStruct, object({ scopes: ChainIdsStruct }))),
|
|
96
97
|
'endowment:cronjob': optional(mergeStructs(HandlerCaveatsStruct, object({ jobs: optional(CronjobSpecificationArrayStruct) }))),
|
|
97
98
|
'endowment:ethereum-provider': optional(EmptyObjectStruct),
|
|
98
|
-
'endowment:keyring': optional(mergeStructs(HandlerCaveatsStruct, KeyringOriginsStruct)),
|
|
99
|
+
'endowment:keyring': optional(mergeStructs(HandlerCaveatsStruct, KeyringOriginsStruct, KeyringCapabilitiesStruct)),
|
|
99
100
|
'endowment:protocol': optional(mergeStructs(HandlerCaveatsStruct, object({ scopes: ProtocolScopesStruct }))),
|
|
100
101
|
'endowment:lifecycle-hooks': optional(HandlerCaveatsStruct),
|
|
101
102
|
'endowment:name-lookup': optional(mergeStructs(HandlerCaveatsStruct, object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.mjs","sourceRoot":"","sources":["../../src/manifest/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport { isValidBIP32PathSegment } from '@metamask/key-tree';\nimport type { EmptyObject, InitialPermissions } from '@metamask/snaps-sdk';\nimport type { Describe, Infer, Struct } from '@metamask/superstruct';\nimport {\n array,\n boolean,\n create,\n enums,\n integer,\n is,\n literal,\n object,\n optional,\n refine,\n record,\n size,\n string,\n type,\n union,\n intersection,\n} from '@metamask/superstruct';\nimport {\n assertStruct,\n ChecksumStruct,\n VersionStruct,\n isValidSemVerRange,\n inMilliseconds,\n Duration,\n CaipChainIdStruct,\n} from '@metamask/utils';\n\nimport { isDerivationPathEqual } from '../array';\nimport { CronjobSpecificationArrayStruct } from '../cronjob';\nimport { SIP_6_MAGIC_VALUE, STATE_ENCRYPTION_MAGIC_VALUE } from '../entropy';\nimport { KeyringOriginsStruct, RpcOriginsStruct } from '../json-rpc';\nimport { SnapIdStruct } from '../snaps';\nimport { mergeStructs, type InferMatching } from '../structs';\nimport { NameStruct, NpmSnapFileNames, uri } from '../types';\n\n// BIP-43 purposes that cannot be used for entropy derivation. These are in the\n// string form, ending with `'`.\nconst FORBIDDEN_PURPOSES: string[] = [\n SIP_6_MAGIC_VALUE,\n STATE_ENCRYPTION_MAGIC_VALUE,\n];\n\nconst FORBIDDEN_PURPOSE_PATHS: string[][] = FORBIDDEN_PURPOSES.map(\n (purpose) => ['m', `${purpose}`],\n);\n\nexport const FORBIDDEN_COIN_TYPES: number[] = [60];\nconst FORBIDDEN_COIN_TYPE_PATHS: string[][] = FORBIDDEN_COIN_TYPES.map(\n (coinType) => ['m', \"44'\", `${coinType}'`],\n);\n\nexport const Bip32PathStruct = refine(\n array(string()),\n 'BIP-32 path',\n (path: string[]) => {\n if (path.length === 0) {\n return 'Path must be a non-empty BIP-32 derivation path array';\n }\n\n if (path[0] !== 'm') {\n return 'Path must start with \"m\".';\n }\n\n if (path.length < 3) {\n return 'Paths must have a length of at least three.';\n }\n\n if (path.slice(1).some((part) => !isValidBIP32PathSegment(part))) {\n return 'Path must be a valid BIP-32 derivation path array.';\n }\n\n if (\n FORBIDDEN_PURPOSE_PATHS.some((forbiddenPath) =>\n isDerivationPathEqual(\n path.slice(0, forbiddenPath.length),\n forbiddenPath,\n ),\n )\n ) {\n return `The purpose \"${path[1]}\" is not allowed for entropy derivation.`;\n }\n\n if (\n FORBIDDEN_COIN_TYPE_PATHS.some((forbiddenPath) =>\n isDerivationPathEqual(\n path.slice(0, forbiddenPath.length),\n forbiddenPath,\n ),\n )\n ) {\n return `The path \"${path.join(\n '/',\n )}\" is not allowed for entropy derivation.`;\n }\n\n return true;\n },\n);\n\nexport const bip32entropy = <\n Type extends { path: string[]; curve: string },\n Schema,\n>(\n struct: Struct<Type, Schema>,\n) =>\n refine(struct, 'BIP-32 entropy', (value) => {\n if (\n value.curve === 'ed25519' &&\n value.path.slice(1).some((part) => !part.endsWith(\"'\"))\n ) {\n return 'Ed25519 does not support unhardened paths.';\n }\n\n return true;\n });\n\nexport const CurveStruct: Describe<SupportedCurve> = enums([\n 'ed25519',\n 'secp256k1',\n 'ed25519Bip32',\n]);\n\n// Used outside @metamask/snap-utils\nexport const Bip32EntropyStruct = bip32entropy(\n type({\n path: Bip32PathStruct,\n curve: CurveStruct,\n }),\n);\n\nexport type Bip32Entropy = Infer<typeof Bip32EntropyStruct>;\n\nexport const SnapGetBip32EntropyPermissionsStruct = size(\n array(Bip32EntropyStruct),\n 1,\n Infinity,\n);\n\nexport const SemVerRangeStruct = refine(string(), 'SemVer range', (value) => {\n if (isValidSemVerRange(value)) {\n return true;\n }\n return 'Expected a valid SemVer range.';\n});\n\nexport const SnapIdsStruct = refine(\n record(SnapIdStruct, object({ version: optional(SemVerRangeStruct) })),\n 'SnapIds',\n (value) => {\n if (Object.keys(value).length === 0) {\n return false;\n }\n\n return true;\n },\n);\n\nexport type SnapIds = Infer<typeof SnapIdsStruct>;\n\nexport const ChainIdsStruct = size(array(CaipChainIdStruct), 1, Infinity);\n\nexport const LookupMatchersStruct = union([\n object({\n tlds: size(array(string()), 1, Infinity),\n }),\n object({\n schemes: size(array(string()), 1, Infinity),\n }),\n object({\n tlds: size(array(string()), 1, Infinity),\n schemes: size(array(string()), 1, Infinity),\n }),\n]);\n\nexport const MINIMUM_REQUEST_TIMEOUT = inMilliseconds(5, Duration.Second);\nexport const MAXIMUM_REQUEST_TIMEOUT = inMilliseconds(3, Duration.Minute);\n\nexport const MaxRequestTimeStruct = size(\n integer(),\n MINIMUM_REQUEST_TIMEOUT,\n MAXIMUM_REQUEST_TIMEOUT,\n);\n\nexport const ProtocolScopesStruct = record(\n CaipChainIdStruct,\n object({ methods: array(string()) }),\n);\n\n// Utility type to union with for all handler structs\nexport const HandlerCaveatsStruct = object({\n maxRequestTime: optional(MaxRequestTimeStruct),\n});\n\nexport type HandlerCaveats = Infer<typeof HandlerCaveatsStruct>;\n\nexport const EmptyObjectStruct = object<EmptyObject>({}) as unknown as Struct<\n EmptyObject,\n null\n>;\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport const PermissionsStruct: Describe<InitialPermissions> = type({\n 'endowment:assets': optional(\n mergeStructs(HandlerCaveatsStruct, object({ scopes: ChainIdsStruct })),\n ),\n 'endowment:cronjob': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({ jobs: optional(CronjobSpecificationArrayStruct) }),\n ),\n ),\n 'endowment:ethereum-provider': optional(EmptyObjectStruct),\n 'endowment:keyring': optional(\n mergeStructs(HandlerCaveatsStruct, KeyringOriginsStruct),\n ),\n 'endowment:protocol': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({ scopes: ProtocolScopesStruct }),\n ),\n ),\n 'endowment:lifecycle-hooks': optional(HandlerCaveatsStruct),\n 'endowment:name-lookup': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({\n chains: optional(ChainIdsStruct),\n matchers: optional(LookupMatchersStruct),\n }),\n ),\n ),\n 'endowment:network-access': optional(EmptyObjectStruct),\n 'endowment:page-home': optional(HandlerCaveatsStruct),\n 'endowment:rpc': optional(\n mergeStructs(HandlerCaveatsStruct, RpcOriginsStruct),\n ),\n 'endowment:signature-insight': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({\n allowSignatureOrigin: optional(boolean()),\n }),\n ),\n ),\n 'endowment:transaction-insight': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({\n allowTransactionOrigin: optional(boolean()),\n }),\n ),\n ),\n 'endowment:webassembly': optional(EmptyObjectStruct),\n snap_dialog: optional(EmptyObjectStruct),\n snap_manageState: optional(EmptyObjectStruct),\n snap_manageAccounts: optional(EmptyObjectStruct),\n snap_notify: optional(EmptyObjectStruct),\n snap_getBip32Entropy: optional(SnapGetBip32EntropyPermissionsStruct),\n snap_getBip32PublicKey: optional(SnapGetBip32EntropyPermissionsStruct),\n snap_getBip44Entropy: optional(\n size(\n array(object({ coinType: size(integer(), 0, 2 ** 32 - 1) })),\n 1,\n Infinity,\n ),\n ),\n snap_getEntropy: optional(EmptyObjectStruct),\n snap_getLocale: optional(EmptyObjectStruct),\n wallet_snap: optional(SnapIdsStruct),\n});\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport type SnapPermissions = InferMatching<\n typeof PermissionsStruct,\n InitialPermissions\n>;\n\nexport const SnapAuxiliaryFilesStruct = array(string());\n\n/**\n * @deprecated Use SnapAuxiliaryFilesStruct instead. This was a typo that has been fixed.\n */\nexport const SnapAuxilaryFilesStruct = SnapAuxiliaryFilesStruct;\n\nexport const InitialConnectionsStruct = record(\n intersection([string(), uri()]),\n object({}),\n);\n\nexport type InitialConnections = Infer<typeof InitialConnectionsStruct>;\n\nexport const SnapManifestStruct = object({\n extends: optional(size(string(), 1, Infinity)),\n version: VersionStruct,\n description: size(string(), 1, 280),\n proposedName: size(string(), 1, 214),\n repository: optional(\n type({\n type: size(string(), 1, Infinity),\n url: size(string(), 1, Infinity),\n }),\n ),\n source: object({\n shasum: ChecksumStruct,\n location: object({\n npm: object({\n filePath: size(string(), 1, Infinity),\n iconPath: optional(size(string(), 1, Infinity)),\n packageName: NameStruct,\n registry: union([\n literal('https://registry.npmjs.org'),\n literal('https://registry.npmjs.org/'),\n ]),\n }),\n }),\n files: optional(SnapAuxiliaryFilesStruct),\n locales: optional(SnapAuxiliaryFilesStruct),\n }),\n initialConnections: optional(InitialConnectionsStruct),\n initialPermissions: PermissionsStruct,\n manifestVersion: literal('0.1'),\n platformVersion: optional(VersionStruct),\n $schema: optional(string()), // enables JSON-Schema linting in VSC and other IDEs\n});\n\nexport type SnapManifest = Infer<typeof SnapManifestStruct>;\n\n/**\n * Check if the given value is a valid {@link SnapManifest} object.\n *\n * @param value - The value to check.\n * @returns Whether the value is a valid {@link SnapManifest} object.\n */\nexport function isSnapManifest(value: unknown): value is SnapManifest {\n return is(value, SnapManifestStruct);\n}\n\n/**\n * Assert that the given value is a valid {@link SnapManifest} object.\n *\n * @param value - The value to check.\n * @throws If the value is not a valid {@link SnapManifest} object.\n */\nexport function assertIsSnapManifest(\n value: unknown,\n): asserts value is SnapManifest {\n assertStruct(\n value,\n SnapManifestStruct,\n `\"${NpmSnapFileNames.Manifest}\" is invalid`,\n );\n}\n\n/**\n * Creates a {@link SnapManifest} object from JSON.\n *\n * @param value - The value to check.\n * @throws If the value cannot be coerced to a {@link SnapManifest} object.\n * @returns The created {@link SnapManifest} object.\n */\nexport function createSnapManifest(value: unknown): SnapManifest {\n // TODO: Add a utility to prefix these errors similar to assertStruct\n return create(value, SnapManifestStruct);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"validation.mjs","sourceRoot":"","sources":["../../src/manifest/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SupportedCurve } from '@metamask/key-tree';\nimport { isValidBIP32PathSegment } from '@metamask/key-tree';\nimport type { EmptyObject, InitialPermissions } from '@metamask/snaps-sdk';\nimport type { Describe, Infer, Struct } from '@metamask/superstruct';\nimport {\n array,\n boolean,\n create,\n enums,\n integer,\n is,\n literal,\n object,\n optional,\n refine,\n record,\n size,\n string,\n type,\n union,\n intersection,\n} from '@metamask/superstruct';\nimport {\n assertStruct,\n ChecksumStruct,\n VersionStruct,\n isValidSemVerRange,\n inMilliseconds,\n Duration,\n CaipChainIdStruct,\n} from '@metamask/utils';\n\nimport { isDerivationPathEqual } from '../array';\nimport { CronjobSpecificationArrayStruct } from '../cronjob';\nimport { SIP_6_MAGIC_VALUE, STATE_ENCRYPTION_MAGIC_VALUE } from '../entropy';\nimport { KeyringOriginsStruct, RpcOriginsStruct } from '../json-rpc';\nimport { KeyringCapabilitiesStruct } from '../keyring';\nimport { SnapIdStruct } from '../snaps';\nimport { mergeStructs, type InferMatching } from '../structs';\nimport { NameStruct, NpmSnapFileNames, uri } from '../types';\n\n// BIP-43 purposes that cannot be used for entropy derivation. These are in the\n// string form, ending with `'`.\nconst FORBIDDEN_PURPOSES: string[] = [\n SIP_6_MAGIC_VALUE,\n STATE_ENCRYPTION_MAGIC_VALUE,\n];\n\nconst FORBIDDEN_PURPOSE_PATHS: string[][] = FORBIDDEN_PURPOSES.map(\n (purpose) => ['m', `${purpose}`],\n);\n\nexport const FORBIDDEN_COIN_TYPES: number[] = [60];\nconst FORBIDDEN_COIN_TYPE_PATHS: string[][] = FORBIDDEN_COIN_TYPES.map(\n (coinType) => ['m', \"44'\", `${coinType}'`],\n);\n\nexport const Bip32PathStruct = refine(\n array(string()),\n 'BIP-32 path',\n (path: string[]) => {\n if (path.length === 0) {\n return 'Path must be a non-empty BIP-32 derivation path array';\n }\n\n if (path[0] !== 'm') {\n return 'Path must start with \"m\".';\n }\n\n if (path.length < 3) {\n return 'Paths must have a length of at least three.';\n }\n\n if (path.slice(1).some((part) => !isValidBIP32PathSegment(part))) {\n return 'Path must be a valid BIP-32 derivation path array.';\n }\n\n if (\n FORBIDDEN_PURPOSE_PATHS.some((forbiddenPath) =>\n isDerivationPathEqual(\n path.slice(0, forbiddenPath.length),\n forbiddenPath,\n ),\n )\n ) {\n return `The purpose \"${path[1]}\" is not allowed for entropy derivation.`;\n }\n\n if (\n FORBIDDEN_COIN_TYPE_PATHS.some((forbiddenPath) =>\n isDerivationPathEqual(\n path.slice(0, forbiddenPath.length),\n forbiddenPath,\n ),\n )\n ) {\n return `The path \"${path.join(\n '/',\n )}\" is not allowed for entropy derivation.`;\n }\n\n return true;\n },\n);\n\nexport const bip32entropy = <\n Type extends { path: string[]; curve: string },\n Schema,\n>(\n struct: Struct<Type, Schema>,\n) =>\n refine(struct, 'BIP-32 entropy', (value) => {\n if (\n value.curve === 'ed25519' &&\n value.path.slice(1).some((part) => !part.endsWith(\"'\"))\n ) {\n return 'Ed25519 does not support unhardened paths.';\n }\n\n return true;\n });\n\nexport const CurveStruct: Describe<SupportedCurve> = enums([\n 'ed25519',\n 'secp256k1',\n 'ed25519Bip32',\n]);\n\n// Used outside @metamask/snap-utils\nexport const Bip32EntropyStruct = bip32entropy(\n type({\n path: Bip32PathStruct,\n curve: CurveStruct,\n }),\n);\n\nexport type Bip32Entropy = Infer<typeof Bip32EntropyStruct>;\n\nexport const SnapGetBip32EntropyPermissionsStruct = size(\n array(Bip32EntropyStruct),\n 1,\n Infinity,\n);\n\nexport const SemVerRangeStruct = refine(string(), 'SemVer range', (value) => {\n if (isValidSemVerRange(value)) {\n return true;\n }\n return 'Expected a valid SemVer range.';\n});\n\nexport const SnapIdsStruct = refine(\n record(SnapIdStruct, object({ version: optional(SemVerRangeStruct) })),\n 'SnapIds',\n (value) => {\n if (Object.keys(value).length === 0) {\n return false;\n }\n\n return true;\n },\n);\n\nexport type SnapIds = Infer<typeof SnapIdsStruct>;\n\nexport const ChainIdsStruct = size(array(CaipChainIdStruct), 1, Infinity);\n\nexport const LookupMatchersStruct = union([\n object({\n tlds: size(array(string()), 1, Infinity),\n }),\n object({\n schemes: size(array(string()), 1, Infinity),\n }),\n object({\n tlds: size(array(string()), 1, Infinity),\n schemes: size(array(string()), 1, Infinity),\n }),\n]);\n\nexport const MINIMUM_REQUEST_TIMEOUT = inMilliseconds(5, Duration.Second);\nexport const MAXIMUM_REQUEST_TIMEOUT = inMilliseconds(3, Duration.Minute);\n\nexport const MaxRequestTimeStruct = size(\n integer(),\n MINIMUM_REQUEST_TIMEOUT,\n MAXIMUM_REQUEST_TIMEOUT,\n);\n\nexport const ProtocolScopesStruct = record(\n CaipChainIdStruct,\n object({ methods: array(string()) }),\n);\n\n// Utility type to union with for all handler structs\nexport const HandlerCaveatsStruct = object({\n maxRequestTime: optional(MaxRequestTimeStruct),\n});\n\nexport type HandlerCaveats = Infer<typeof HandlerCaveatsStruct>;\n\nexport const EmptyObjectStruct = object<EmptyObject>({}) as unknown as Struct<\n EmptyObject,\n null\n>;\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport const PermissionsStruct: Describe<InitialPermissions> = type({\n 'endowment:assets': optional(\n mergeStructs(HandlerCaveatsStruct, object({ scopes: ChainIdsStruct })),\n ),\n 'endowment:cronjob': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({ jobs: optional(CronjobSpecificationArrayStruct) }),\n ),\n ),\n 'endowment:ethereum-provider': optional(EmptyObjectStruct),\n 'endowment:keyring': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n KeyringOriginsStruct,\n KeyringCapabilitiesStruct,\n ),\n ),\n 'endowment:protocol': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({ scopes: ProtocolScopesStruct }),\n ),\n ),\n 'endowment:lifecycle-hooks': optional(HandlerCaveatsStruct),\n 'endowment:name-lookup': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({\n chains: optional(ChainIdsStruct),\n matchers: optional(LookupMatchersStruct),\n }),\n ),\n ),\n 'endowment:network-access': optional(EmptyObjectStruct),\n 'endowment:page-home': optional(HandlerCaveatsStruct),\n 'endowment:rpc': optional(\n mergeStructs(HandlerCaveatsStruct, RpcOriginsStruct),\n ),\n 'endowment:signature-insight': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({\n allowSignatureOrigin: optional(boolean()),\n }),\n ),\n ),\n 'endowment:transaction-insight': optional(\n mergeStructs(\n HandlerCaveatsStruct,\n object({\n allowTransactionOrigin: optional(boolean()),\n }),\n ),\n ),\n 'endowment:webassembly': optional(EmptyObjectStruct),\n snap_dialog: optional(EmptyObjectStruct),\n snap_manageState: optional(EmptyObjectStruct),\n snap_manageAccounts: optional(EmptyObjectStruct),\n snap_notify: optional(EmptyObjectStruct),\n snap_getBip32Entropy: optional(SnapGetBip32EntropyPermissionsStruct),\n snap_getBip32PublicKey: optional(SnapGetBip32EntropyPermissionsStruct),\n snap_getBip44Entropy: optional(\n size(\n array(object({ coinType: size(integer(), 0, 2 ** 32 - 1) })),\n 1,\n Infinity,\n ),\n ),\n snap_getEntropy: optional(EmptyObjectStruct),\n snap_getLocale: optional(EmptyObjectStruct),\n wallet_snap: optional(SnapIdsStruct),\n});\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport type SnapPermissions = InferMatching<\n typeof PermissionsStruct,\n InitialPermissions\n>;\n\nexport const SnapAuxiliaryFilesStruct = array(string());\n\n/**\n * @deprecated Use SnapAuxiliaryFilesStruct instead. This was a typo that has been fixed.\n */\nexport const SnapAuxilaryFilesStruct = SnapAuxiliaryFilesStruct;\n\nexport const InitialConnectionsStruct = record(\n intersection([string(), uri()]),\n object({}),\n);\n\nexport type InitialConnections = Infer<typeof InitialConnectionsStruct>;\n\nexport const SnapManifestStruct = object({\n extends: optional(size(string(), 1, Infinity)),\n version: VersionStruct,\n description: size(string(), 1, 280),\n proposedName: size(string(), 1, 214),\n repository: optional(\n type({\n type: size(string(), 1, Infinity),\n url: size(string(), 1, Infinity),\n }),\n ),\n source: object({\n shasum: ChecksumStruct,\n location: object({\n npm: object({\n filePath: size(string(), 1, Infinity),\n iconPath: optional(size(string(), 1, Infinity)),\n packageName: NameStruct,\n registry: union([\n literal('https://registry.npmjs.org'),\n literal('https://registry.npmjs.org/'),\n ]),\n }),\n }),\n files: optional(SnapAuxiliaryFilesStruct),\n locales: optional(SnapAuxiliaryFilesStruct),\n }),\n initialConnections: optional(InitialConnectionsStruct),\n initialPermissions: PermissionsStruct,\n manifestVersion: literal('0.1'),\n platformVersion: optional(VersionStruct),\n $schema: optional(string()), // enables JSON-Schema linting in VSC and other IDEs\n});\n\nexport type SnapManifest = Infer<typeof SnapManifestStruct>;\n\n/**\n * Check if the given value is a valid {@link SnapManifest} object.\n *\n * @param value - The value to check.\n * @returns Whether the value is a valid {@link SnapManifest} object.\n */\nexport function isSnapManifest(value: unknown): value is SnapManifest {\n return is(value, SnapManifestStruct);\n}\n\n/**\n * Assert that the given value is a valid {@link SnapManifest} object.\n *\n * @param value - The value to check.\n * @throws If the value is not a valid {@link SnapManifest} object.\n */\nexport function assertIsSnapManifest(\n value: unknown,\n): asserts value is SnapManifest {\n assertStruct(\n value,\n SnapManifestStruct,\n `\"${NpmSnapFileNames.Manifest}\" is invalid`,\n );\n}\n\n/**\n * Creates a {@link SnapManifest} object from JSON.\n *\n * @param value - The value to check.\n * @throws If the value cannot be coerced to a {@link SnapManifest} object.\n * @returns The created {@link SnapManifest} object.\n */\nexport function createSnapManifest(value: unknown): SnapManifest {\n // TODO: Add a utility to prefix these errors similar to assertStruct\n return create(value, SnapManifestStruct);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/snaps-utils",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.2.0",
|
|
4
4
|
"description": "A collection of utilities for MetaMask Snaps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -81,14 +81,14 @@
|
|
|
81
81
|
"@babel/core": "^7.23.2",
|
|
82
82
|
"@babel/types": "^7.23.0",
|
|
83
83
|
"@metamask/key-tree": "^10.1.1",
|
|
84
|
-
"@metamask/messenger": "^1.1.
|
|
84
|
+
"@metamask/messenger": "^1.1.1",
|
|
85
85
|
"@metamask/permission-controller": "^12.3.0",
|
|
86
86
|
"@metamask/rpc-errors": "^7.0.3",
|
|
87
87
|
"@metamask/slip44": "^4.4.0",
|
|
88
88
|
"@metamask/snaps-registry": "^4.0.0",
|
|
89
|
-
"@metamask/snaps-sdk": "^11.
|
|
89
|
+
"@metamask/snaps-sdk": "^11.1.0",
|
|
90
90
|
"@metamask/superstruct": "^3.2.1",
|
|
91
|
-
"@metamask/utils": "^11.
|
|
91
|
+
"@metamask/utils": "^11.11.0",
|
|
92
92
|
"@scure/base": "^1.1.1",
|
|
93
93
|
"chalk": "^4.1.2",
|
|
94
94
|
"cron-parser": "^4.5.0",
|