@metamask/snaps-execution-environments 9.0.0 → 10.0.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 +20 -1
- package/dist/common/commands.cjs +13 -2
- package/dist/common/commands.cjs.map +1 -1
- package/dist/common/commands.d.cts.map +1 -1
- package/dist/common/commands.d.mts.map +1 -1
- package/dist/common/commands.mjs +14 -3
- package/dist/common/commands.mjs.map +1 -1
- package/dist/common/validation.cjs +67 -2
- package/dist/common/validation.cjs.map +1 -1
- package/dist/common/validation.d.cts +131 -8
- package/dist/common/validation.d.cts.map +1 -1
- package/dist/common/validation.d.mts +131 -8
- package/dist/common/validation.d.mts.map +1 -1
- package/dist/common/validation.mjs +66 -3
- package/dist/common/validation.mjs.map +1 -1
- package/dist/webpack/iframe/bundle.js +1 -1
- package/dist/webpack/iframe/index.html +104 -37
- package/dist/webpack/node-process/bundle.js +3987 -3670
- package/dist/webpack/node-process/bundle.js.LICENSE.txt +3986 -3669
- package/dist/webpack/node-thread/bundle.js +3987 -3670
- package/dist/webpack/node-thread/bundle.js.LICENSE.txt +3986 -3669
- package/dist/webpack/webview/index.html +105 -38
- package/package.json +9 -12
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [10.0.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **BREAKING:** Market data is now fetched through `onAssetsMarketData` instead
|
|
15
|
+
of `onAssetConversion` ([#3496](https://github.com/MetaMask/snaps/pull/3496))
|
|
16
|
+
- Previously, `onAssetConversion` could return a `marketData` property, which
|
|
17
|
+
contained market data for the asset being converted. This property
|
|
18
|
+
has been removed, and `onAssetsMarketData` should be used instead.
|
|
19
|
+
|
|
20
|
+
## [9.1.0]
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- Add support for the `onWebSocketEvent` handler ([#3450](https://github.com/MetaMask/snaps/pull/3450))
|
|
25
|
+
- Add support for the `onStart` handler ([#3455](https://github.com/MetaMask/snaps/pull/3455))
|
|
26
|
+
|
|
10
27
|
## [9.0.0]
|
|
11
28
|
|
|
12
29
|
### Changed
|
|
@@ -516,7 +533,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
516
533
|
- The version of the package no longer needs to match the version of all other
|
|
517
534
|
MetaMask Snaps packages.
|
|
518
535
|
|
|
519
|
-
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@
|
|
536
|
+
[Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@10.0.0...HEAD
|
|
537
|
+
[10.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@9.1.0...@metamask/snaps-execution-environments@10.0.0
|
|
538
|
+
[9.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@9.0.0...@metamask/snaps-execution-environments@9.1.0
|
|
520
539
|
[9.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@8.2.0...@metamask/snaps-execution-environments@9.0.0
|
|
521
540
|
[8.2.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@8.1.0...@metamask/snaps-execution-environments@8.2.0
|
|
522
541
|
[8.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-execution-environments@8.0.1...@metamask/snaps-execution-environments@8.1.0
|
package/dist/common/commands.cjs
CHANGED
|
@@ -41,8 +41,13 @@ function getHandlerArguments(origin, handler, request) {
|
|
|
41
41
|
}
|
|
42
42
|
case snaps_utils_1.HandlerType.OnAssetsConversion: {
|
|
43
43
|
(0, validation_1.assertIsOnAssetsConversionRequestArguments)(request.params);
|
|
44
|
-
const { conversions
|
|
45
|
-
return { conversions
|
|
44
|
+
const { conversions } = request.params;
|
|
45
|
+
return { conversions };
|
|
46
|
+
}
|
|
47
|
+
case snaps_utils_1.HandlerType.OnAssetsMarketData: {
|
|
48
|
+
(0, validation_1.assertIsOnAssetsMarketDataRequestArguments)(request.params);
|
|
49
|
+
const { assets } = request.params;
|
|
50
|
+
return { assets };
|
|
46
51
|
}
|
|
47
52
|
case snaps_utils_1.HandlerType.OnNameLookup: {
|
|
48
53
|
(0, validation_1.assertIsOnNameLookupRequestArguments)(request.params);
|
|
@@ -64,6 +69,11 @@ function getHandlerArguments(origin, handler, request) {
|
|
|
64
69
|
const { request: nestedRequest, scope } = request.params;
|
|
65
70
|
return { origin, request: nestedRequest, scope };
|
|
66
71
|
}
|
|
72
|
+
case snaps_utils_1.HandlerType.OnWebSocketEvent: {
|
|
73
|
+
(0, validation_1.assertIsOnWebSocketEventArguments)(request.params);
|
|
74
|
+
const { event } = request.params;
|
|
75
|
+
return { event };
|
|
76
|
+
}
|
|
67
77
|
case snaps_utils_1.HandlerType.OnRpcRequest:
|
|
68
78
|
case snaps_utils_1.HandlerType.OnKeyringRequest:
|
|
69
79
|
return { origin, request };
|
|
@@ -72,6 +82,7 @@ function getHandlerArguments(origin, handler, request) {
|
|
|
72
82
|
return { request };
|
|
73
83
|
case snaps_utils_1.HandlerType.OnInstall:
|
|
74
84
|
case snaps_utils_1.HandlerType.OnUpdate:
|
|
85
|
+
case snaps_utils_1.HandlerType.OnStart:
|
|
75
86
|
return { origin };
|
|
76
87
|
case snaps_utils_1.HandlerType.OnHomePage:
|
|
77
88
|
case snaps_utils_1.HandlerType.OnSettingsPage:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.cjs","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AACpD,2CAAmD;AAWnD,
|
|
1
|
+
{"version":3,"file":"commands.cjs","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"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","sourcesContent":["import { HandlerType } from '@metamask/snaps-utils';\nimport { assertExhaustive } from '@metamask/utils';\n\nimport type { InvokeSnap, InvokeSnapArgs } from './BaseSnapExecutor';\nimport type {\n ExecuteSnap,\n JsonRpcRequestWithoutId,\n Ping,\n PossibleLookupRequestArgs,\n SnapRpc,\n Terminate,\n} from './validation';\nimport {\n assertIsOnTransactionRequestArguments,\n assertIsOnSignatureRequestArguments,\n assertIsOnNameLookupRequestArguments,\n assertIsOnUserInputRequestArguments,\n assertIsOnAssetsLookupRequestArguments,\n assertIsOnAssetsConversionRequestArguments,\n assertIsOnProtocolRequestArguments,\n assertIsOnAssetHistoricalPriceRequestArguments,\n assertIsOnWebSocketEventArguments,\n assertIsOnAssetsMarketDataRequestArguments,\n} from './validation';\n\nexport type CommandMethodsMapping = {\n ping: Ping;\n terminate: Terminate;\n executeSnap: ExecuteSnap;\n snapRpc: SnapRpc;\n};\n\n/**\n * Formats the arguments for the given handler.\n *\n * @param origin - The origin of the request.\n * @param handler - The handler to pass the request to.\n * @param request - The request object.\n * @returns The formatted arguments.\n */\nexport function getHandlerArguments(\n origin: string,\n handler: HandlerType,\n request: JsonRpcRequestWithoutId,\n): InvokeSnapArgs {\n // `request` is already validated by the time this function is called.\n\n switch (handler) {\n case HandlerType.OnTransaction: {\n assertIsOnTransactionRequestArguments(request.params);\n\n const { transaction, chainId, transactionOrigin } = request.params;\n return {\n transaction,\n chainId,\n transactionOrigin,\n };\n }\n case HandlerType.OnSignature: {\n assertIsOnSignatureRequestArguments(request.params);\n\n const { signature, signatureOrigin } = request.params;\n return { signature, signatureOrigin };\n }\n\n case HandlerType.OnAssetHistoricalPrice: {\n assertIsOnAssetHistoricalPriceRequestArguments(request.params);\n const { from, to } = request.params;\n return { from, to };\n }\n\n case HandlerType.OnAssetsLookup: {\n assertIsOnAssetsLookupRequestArguments(request.params);\n const { assets } = request.params;\n return { assets };\n }\n case HandlerType.OnAssetsConversion: {\n assertIsOnAssetsConversionRequestArguments(request.params);\n const { conversions } = request.params;\n return { conversions };\n }\n\n case HandlerType.OnAssetsMarketData: {\n assertIsOnAssetsMarketDataRequestArguments(request.params);\n const { assets } = request.params;\n return { assets };\n }\n\n case HandlerType.OnNameLookup: {\n assertIsOnNameLookupRequestArguments(request.params);\n\n // TS complains that domain/address are not part of the type\n // casting here as we've already validated the request args in the above step.\n const { chainId, domain, address } =\n request.params as unknown as PossibleLookupRequestArgs;\n\n return domain\n ? {\n chainId,\n domain,\n }\n : {\n chainId,\n address,\n };\n }\n\n case HandlerType.OnProtocolRequest: {\n assertIsOnProtocolRequestArguments(request.params);\n\n const { request: nestedRequest, scope } = request.params;\n return { origin, request: nestedRequest, scope };\n }\n\n case HandlerType.OnWebSocketEvent: {\n assertIsOnWebSocketEventArguments(request.params);\n const { event } = request.params;\n return { event };\n }\n\n case HandlerType.OnRpcRequest:\n case HandlerType.OnKeyringRequest:\n return { origin, request };\n\n case HandlerType.OnClientRequest:\n case HandlerType.OnCronjob:\n return { request };\n\n case HandlerType.OnInstall:\n case HandlerType.OnUpdate:\n case HandlerType.OnStart:\n return { origin };\n\n case HandlerType.OnHomePage:\n case HandlerType.OnSettingsPage:\n return {};\n case HandlerType.OnUserInput: {\n assertIsOnUserInputRequestArguments(request.params);\n\n const { id, event, context } = request.params;\n return { id, event, context };\n }\n\n default:\n return assertExhaustive(handler);\n }\n}\n\n/**\n * Gets an object mapping internal, \"command\" JSON-RPC method names to their\n * implementations.\n *\n * @param startSnap - A function that starts a snap.\n * @param invokeSnap - A function that invokes the RPC method handler of a\n * snap.\n * @param onTerminate - A function that will be called when this executor is\n * terminated in order to handle cleanup tasks.\n * @returns An object containing the \"command\" method implementations.\n */\nexport function getCommandMethodImplementations(\n startSnap: (...args: Parameters<ExecuteSnap>) => Promise<void>,\n invokeSnap: InvokeSnap,\n onTerminate: () => void,\n): CommandMethodsMapping {\n return {\n ping: async () => Promise.resolve('OK'),\n terminate: async () => {\n onTerminate();\n return Promise.resolve('OK');\n },\n\n executeSnap: async (snapId, sourceCode, endowments) => {\n await startSnap(snapId, sourceCode, endowments);\n return 'OK';\n },\n\n snapRpc: async (target, handler, origin, request) => {\n return (\n (await invokeSnap(\n target,\n handler,\n getHandlerArguments(origin, handler, request),\n )) ?? null\n );\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.cts","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,+BAA2B;AACrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,IAAI,EAEJ,OAAO,EACP,SAAS,EACV,yBAAqB;
|
|
1
|
+
{"version":3,"file":"commands.d.cts","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,+BAA2B;AACrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,IAAI,EAEJ,OAAO,EACP,SAAS,EACV,yBAAqB;AActB,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,uBAAuB,GAC/B,cAAc,CAsGhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAC9D,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,IAAI,GACtB,qBAAqB,CAuBvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.mts","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,+BAA2B;AACrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,IAAI,EAEJ,OAAO,EACP,SAAS,EACV,yBAAqB;
|
|
1
|
+
{"version":3,"file":"commands.d.mts","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAGpD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,+BAA2B;AACrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,IAAI,EAEJ,OAAO,EACP,SAAS,EACV,yBAAqB;AActB,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,uBAAuB,GAC/B,cAAc,CAsGhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAC9D,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,IAAI,GACtB,qBAAqB,CAuBvB"}
|
package/dist/common/commands.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HandlerType } from "@metamask/snaps-utils";
|
|
2
2
|
import { assertExhaustive } from "@metamask/utils";
|
|
3
|
-
import { assertIsOnTransactionRequestArguments, assertIsOnSignatureRequestArguments, assertIsOnNameLookupRequestArguments, assertIsOnUserInputRequestArguments, assertIsOnAssetsLookupRequestArguments, assertIsOnAssetsConversionRequestArguments, assertIsOnProtocolRequestArguments, assertIsOnAssetHistoricalPriceRequestArguments } from "./validation.mjs";
|
|
3
|
+
import { assertIsOnTransactionRequestArguments, assertIsOnSignatureRequestArguments, assertIsOnNameLookupRequestArguments, assertIsOnUserInputRequestArguments, assertIsOnAssetsLookupRequestArguments, assertIsOnAssetsConversionRequestArguments, assertIsOnProtocolRequestArguments, assertIsOnAssetHistoricalPriceRequestArguments, assertIsOnWebSocketEventArguments, assertIsOnAssetsMarketDataRequestArguments } from "./validation.mjs";
|
|
4
4
|
/**
|
|
5
5
|
* Formats the arguments for the given handler.
|
|
6
6
|
*
|
|
@@ -38,8 +38,13 @@ export function getHandlerArguments(origin, handler, request) {
|
|
|
38
38
|
}
|
|
39
39
|
case HandlerType.OnAssetsConversion: {
|
|
40
40
|
assertIsOnAssetsConversionRequestArguments(request.params);
|
|
41
|
-
const { conversions
|
|
42
|
-
return { conversions
|
|
41
|
+
const { conversions } = request.params;
|
|
42
|
+
return { conversions };
|
|
43
|
+
}
|
|
44
|
+
case HandlerType.OnAssetsMarketData: {
|
|
45
|
+
assertIsOnAssetsMarketDataRequestArguments(request.params);
|
|
46
|
+
const { assets } = request.params;
|
|
47
|
+
return { assets };
|
|
43
48
|
}
|
|
44
49
|
case HandlerType.OnNameLookup: {
|
|
45
50
|
assertIsOnNameLookupRequestArguments(request.params);
|
|
@@ -61,6 +66,11 @@ export function getHandlerArguments(origin, handler, request) {
|
|
|
61
66
|
const { request: nestedRequest, scope } = request.params;
|
|
62
67
|
return { origin, request: nestedRequest, scope };
|
|
63
68
|
}
|
|
69
|
+
case HandlerType.OnWebSocketEvent: {
|
|
70
|
+
assertIsOnWebSocketEventArguments(request.params);
|
|
71
|
+
const { event } = request.params;
|
|
72
|
+
return { event };
|
|
73
|
+
}
|
|
64
74
|
case HandlerType.OnRpcRequest:
|
|
65
75
|
case HandlerType.OnKeyringRequest:
|
|
66
76
|
return { origin, request };
|
|
@@ -69,6 +79,7 @@ export function getHandlerArguments(origin, handler, request) {
|
|
|
69
79
|
return { request };
|
|
70
80
|
case HandlerType.OnInstall:
|
|
71
81
|
case HandlerType.OnUpdate:
|
|
82
|
+
case HandlerType.OnStart:
|
|
72
83
|
return { origin };
|
|
73
84
|
case HandlerType.OnHomePage:
|
|
74
85
|
case HandlerType.OnSettingsPage:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.mjs","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AACpD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB;AAWnD,OAAO,EACL,qCAAqC,EACrC,mCAAmC,EACnC,oCAAoC,EACpC,mCAAmC,EACnC,sCAAsC,EACtC,0CAA0C,EAC1C,kCAAkC,EAClC,8CAA8C,
|
|
1
|
+
{"version":3,"file":"commands.mjs","sourceRoot":"","sources":["../../src/common/commands.ts"],"names":[],"mappings":"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","sourcesContent":["import { HandlerType } from '@metamask/snaps-utils';\nimport { assertExhaustive } from '@metamask/utils';\n\nimport type { InvokeSnap, InvokeSnapArgs } from './BaseSnapExecutor';\nimport type {\n ExecuteSnap,\n JsonRpcRequestWithoutId,\n Ping,\n PossibleLookupRequestArgs,\n SnapRpc,\n Terminate,\n} from './validation';\nimport {\n assertIsOnTransactionRequestArguments,\n assertIsOnSignatureRequestArguments,\n assertIsOnNameLookupRequestArguments,\n assertIsOnUserInputRequestArguments,\n assertIsOnAssetsLookupRequestArguments,\n assertIsOnAssetsConversionRequestArguments,\n assertIsOnProtocolRequestArguments,\n assertIsOnAssetHistoricalPriceRequestArguments,\n assertIsOnWebSocketEventArguments,\n assertIsOnAssetsMarketDataRequestArguments,\n} from './validation';\n\nexport type CommandMethodsMapping = {\n ping: Ping;\n terminate: Terminate;\n executeSnap: ExecuteSnap;\n snapRpc: SnapRpc;\n};\n\n/**\n * Formats the arguments for the given handler.\n *\n * @param origin - The origin of the request.\n * @param handler - The handler to pass the request to.\n * @param request - The request object.\n * @returns The formatted arguments.\n */\nexport function getHandlerArguments(\n origin: string,\n handler: HandlerType,\n request: JsonRpcRequestWithoutId,\n): InvokeSnapArgs {\n // `request` is already validated by the time this function is called.\n\n switch (handler) {\n case HandlerType.OnTransaction: {\n assertIsOnTransactionRequestArguments(request.params);\n\n const { transaction, chainId, transactionOrigin } = request.params;\n return {\n transaction,\n chainId,\n transactionOrigin,\n };\n }\n case HandlerType.OnSignature: {\n assertIsOnSignatureRequestArguments(request.params);\n\n const { signature, signatureOrigin } = request.params;\n return { signature, signatureOrigin };\n }\n\n case HandlerType.OnAssetHistoricalPrice: {\n assertIsOnAssetHistoricalPriceRequestArguments(request.params);\n const { from, to } = request.params;\n return { from, to };\n }\n\n case HandlerType.OnAssetsLookup: {\n assertIsOnAssetsLookupRequestArguments(request.params);\n const { assets } = request.params;\n return { assets };\n }\n case HandlerType.OnAssetsConversion: {\n assertIsOnAssetsConversionRequestArguments(request.params);\n const { conversions } = request.params;\n return { conversions };\n }\n\n case HandlerType.OnAssetsMarketData: {\n assertIsOnAssetsMarketDataRequestArguments(request.params);\n const { assets } = request.params;\n return { assets };\n }\n\n case HandlerType.OnNameLookup: {\n assertIsOnNameLookupRequestArguments(request.params);\n\n // TS complains that domain/address are not part of the type\n // casting here as we've already validated the request args in the above step.\n const { chainId, domain, address } =\n request.params as unknown as PossibleLookupRequestArgs;\n\n return domain\n ? {\n chainId,\n domain,\n }\n : {\n chainId,\n address,\n };\n }\n\n case HandlerType.OnProtocolRequest: {\n assertIsOnProtocolRequestArguments(request.params);\n\n const { request: nestedRequest, scope } = request.params;\n return { origin, request: nestedRequest, scope };\n }\n\n case HandlerType.OnWebSocketEvent: {\n assertIsOnWebSocketEventArguments(request.params);\n const { event } = request.params;\n return { event };\n }\n\n case HandlerType.OnRpcRequest:\n case HandlerType.OnKeyringRequest:\n return { origin, request };\n\n case HandlerType.OnClientRequest:\n case HandlerType.OnCronjob:\n return { request };\n\n case HandlerType.OnInstall:\n case HandlerType.OnUpdate:\n case HandlerType.OnStart:\n return { origin };\n\n case HandlerType.OnHomePage:\n case HandlerType.OnSettingsPage:\n return {};\n case HandlerType.OnUserInput: {\n assertIsOnUserInputRequestArguments(request.params);\n\n const { id, event, context } = request.params;\n return { id, event, context };\n }\n\n default:\n return assertExhaustive(handler);\n }\n}\n\n/**\n * Gets an object mapping internal, \"command\" JSON-RPC method names to their\n * implementations.\n *\n * @param startSnap - A function that starts a snap.\n * @param invokeSnap - A function that invokes the RPC method handler of a\n * snap.\n * @param onTerminate - A function that will be called when this executor is\n * terminated in order to handle cleanup tasks.\n * @returns An object containing the \"command\" method implementations.\n */\nexport function getCommandMethodImplementations(\n startSnap: (...args: Parameters<ExecuteSnap>) => Promise<void>,\n invokeSnap: InvokeSnap,\n onTerminate: () => void,\n): CommandMethodsMapping {\n return {\n ping: async () => Promise.resolve('OK'),\n terminate: async () => {\n onTerminate();\n return Promise.resolve('OK');\n },\n\n executeSnap: async (snapId, sourceCode, endowments) => {\n await startSnap(snapId, sourceCode, endowments);\n return 'OK';\n },\n\n snapRpc: async (target, handler, origin, request) => {\n return (\n (await invokeSnap(\n target,\n handler,\n getHandlerArguments(origin, handler, request),\n )) ?? null\n );\n },\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertIsOnProtocolRequestArguments = exports.OnProtocolRequestArgumentsStruct = exports.assertIsOnUserInputRequestArguments = exports.OnUserInputArgumentsStruct = exports.assertIsOnAssetsConversionRequestArguments = exports.OnAssetsConversionRequestArgumentsStruct = exports.assertIsOnAssetsLookupRequestArguments = exports.OnAssetsLookupRequestArgumentsStruct = exports.assertIsOnAssetHistoricalPriceRequestArguments = exports.OnAssetHistoricalPriceRequestArgumentsStruct = exports.assertIsOnNameLookupRequestArguments = exports.OnNameLookupRequestArgumentsStruct = exports.assertIsOnSignatureRequestArguments = exports.OnSignatureRequestArgumentsStruct = exports.assertIsOnTransactionRequestArguments = exports.OnTransactionRequestArgumentsStruct = exports.SnapRpcRequestArgumentsStruct = exports.ExecuteSnapRequestArgumentsStruct = exports.TerminateRequestArgumentsStruct = exports.PingRequestArgumentsStruct = exports.isEndowmentsArray = exports.isEndowment = exports.EndowmentStruct = exports.JsonRpcRequestWithoutIdStruct = void 0;
|
|
3
|
+
exports.assertIsOnWebSocketEventArguments = exports.OnWebSocketEventArgumentsStruct = exports.WebSocketEventStruct = exports.assertIsOnProtocolRequestArguments = exports.OnProtocolRequestArgumentsStruct = exports.assertIsOnUserInputRequestArguments = exports.OnUserInputArgumentsStruct = exports.assertIsOnAssetsConversionRequestArguments = exports.OnAssetsConversionRequestArgumentsStruct = exports.assertIsOnAssetsLookupRequestArguments = exports.OnAssetsLookupRequestArgumentsStruct = exports.assertIsOnAssetsMarketDataRequestArguments = exports.OnAssetsMarketDataRequestArgumentsStruct = exports.assertIsOnAssetHistoricalPriceRequestArguments = exports.OnAssetHistoricalPriceRequestArgumentsStruct = exports.assertIsOnNameLookupRequestArguments = exports.OnNameLookupRequestArgumentsStruct = exports.assertIsOnSignatureRequestArguments = exports.OnSignatureRequestArgumentsStruct = exports.assertIsOnTransactionRequestArguments = exports.OnTransactionRequestArgumentsStruct = exports.SnapRpcRequestArgumentsStruct = exports.ExecuteSnapRequestArgumentsStruct = exports.TerminateRequestArgumentsStruct = exports.PingRequestArgumentsStruct = exports.isEndowmentsArray = exports.isEndowment = exports.EndowmentStruct = exports.JsonRpcRequestWithoutIdStruct = void 0;
|
|
4
4
|
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
5
|
const snaps_sdk_1 = require("@metamask/snaps-sdk");
|
|
6
6
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
@@ -140,6 +140,24 @@ function assertIsOnAssetHistoricalPriceRequestArguments(value) {
|
|
|
140
140
|
assertRequestArguments(value, exports.OnAssetHistoricalPriceRequestArgumentsStruct);
|
|
141
141
|
}
|
|
142
142
|
exports.assertIsOnAssetHistoricalPriceRequestArguments = assertIsOnAssetHistoricalPriceRequestArguments;
|
|
143
|
+
exports.OnAssetsMarketDataRequestArgumentsStruct = (0, superstruct_1.object)({
|
|
144
|
+
assets: (0, superstruct_1.size)((0, superstruct_1.array)((0, superstruct_1.object)({
|
|
145
|
+
asset: utils_1.CaipAssetTypeStruct,
|
|
146
|
+
unit: utils_1.CaipAssetTypeStruct,
|
|
147
|
+
})), 1, Infinity),
|
|
148
|
+
});
|
|
149
|
+
/**
|
|
150
|
+
* Asserts that the given value is a valid {@link OnAssetsMarketDataRequestArguments}
|
|
151
|
+
* object.
|
|
152
|
+
*
|
|
153
|
+
* @param value - The value to validate.
|
|
154
|
+
* @throws If the value is not a valid {@link OnAssetsMarketDataRequestArguments}
|
|
155
|
+
* object.
|
|
156
|
+
*/
|
|
157
|
+
function assertIsOnAssetsMarketDataRequestArguments(value) {
|
|
158
|
+
assertRequestArguments(value, exports.OnAssetsMarketDataRequestArgumentsStruct);
|
|
159
|
+
}
|
|
160
|
+
exports.assertIsOnAssetsMarketDataRequestArguments = assertIsOnAssetsMarketDataRequestArguments;
|
|
143
161
|
exports.OnAssetsLookupRequestArgumentsStruct = (0, superstruct_1.object)({
|
|
144
162
|
assets: (0, superstruct_1.size)((0, superstruct_1.array)(utils_1.CaipAssetTypeStruct), 1, Infinity),
|
|
145
163
|
});
|
|
@@ -160,7 +178,6 @@ exports.OnAssetsConversionRequestArgumentsStruct = (0, superstruct_1.object)({
|
|
|
160
178
|
from: utils_1.CaipAssetTypeStruct,
|
|
161
179
|
to: utils_1.CaipAssetTypeStruct,
|
|
162
180
|
})), 1, Infinity),
|
|
163
|
-
includeMarketData: (0, superstruct_1.optional)((0, superstruct_1.boolean)()),
|
|
164
181
|
});
|
|
165
182
|
/**
|
|
166
183
|
* Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}
|
|
@@ -207,6 +224,54 @@ function assertIsOnProtocolRequestArguments(value) {
|
|
|
207
224
|
assertRequestArguments(value, exports.OnProtocolRequestArgumentsStruct);
|
|
208
225
|
}
|
|
209
226
|
exports.assertIsOnProtocolRequestArguments = assertIsOnProtocolRequestArguments;
|
|
227
|
+
const WebSocketOpenEventStruct = (0, superstruct_1.object)({
|
|
228
|
+
type: (0, snaps_sdk_1.literal)('open'),
|
|
229
|
+
id: (0, superstruct_1.string)(),
|
|
230
|
+
origin: (0, superstruct_1.string)(),
|
|
231
|
+
});
|
|
232
|
+
const WebSocketCloseEventStruct = (0, superstruct_1.object)({
|
|
233
|
+
type: (0, snaps_sdk_1.literal)('close'),
|
|
234
|
+
id: (0, superstruct_1.string)(),
|
|
235
|
+
origin: (0, superstruct_1.string)(),
|
|
236
|
+
code: (0, superstruct_1.number)(),
|
|
237
|
+
reason: (0, superstruct_1.nullable)((0, superstruct_1.string)()),
|
|
238
|
+
wasClean: (0, superstruct_1.nullable)((0, superstruct_1.boolean)()),
|
|
239
|
+
});
|
|
240
|
+
const WebSocketMessageEventStruct = (0, superstruct_1.object)({
|
|
241
|
+
type: (0, snaps_sdk_1.literal)('message'),
|
|
242
|
+
id: (0, superstruct_1.string)(),
|
|
243
|
+
origin: (0, superstruct_1.string)(),
|
|
244
|
+
data: (0, snaps_sdk_1.typedUnion)([
|
|
245
|
+
(0, superstruct_1.object)({
|
|
246
|
+
type: (0, snaps_sdk_1.literal)('text'),
|
|
247
|
+
message: (0, superstruct_1.string)(),
|
|
248
|
+
}),
|
|
249
|
+
(0, superstruct_1.object)({
|
|
250
|
+
type: (0, snaps_sdk_1.literal)('binary'),
|
|
251
|
+
message: (0, superstruct_1.array)((0, superstruct_1.number)()),
|
|
252
|
+
}),
|
|
253
|
+
]),
|
|
254
|
+
});
|
|
255
|
+
exports.WebSocketEventStruct = (0, snaps_sdk_1.typedUnion)([
|
|
256
|
+
WebSocketOpenEventStruct,
|
|
257
|
+
WebSocketCloseEventStruct,
|
|
258
|
+
WebSocketMessageEventStruct,
|
|
259
|
+
]);
|
|
260
|
+
exports.OnWebSocketEventArgumentsStruct = (0, superstruct_1.object)({
|
|
261
|
+
event: exports.WebSocketEventStruct,
|
|
262
|
+
});
|
|
263
|
+
/**
|
|
264
|
+
* Asserts that the given value is a valid {@link OnWebSocketEventArguments}
|
|
265
|
+
* object.
|
|
266
|
+
*
|
|
267
|
+
* @param value - The value to validate.
|
|
268
|
+
* @throws If the value is not a valid {@link OnWebSocketEventArguments}
|
|
269
|
+
* object.
|
|
270
|
+
*/
|
|
271
|
+
function assertIsOnWebSocketEventArguments(value) {
|
|
272
|
+
assertRequestArguments(value, exports.OnWebSocketEventArgumentsStruct);
|
|
273
|
+
}
|
|
274
|
+
exports.assertIsOnWebSocketEventArguments = assertIsOnWebSocketEventArguments;
|
|
210
275
|
// TODO: Either fix this lint violation or explain why it's necessary to ignore.
|
|
211
276
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
212
277
|
const OkResponseStruct = (0, superstruct_1.object)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n InterfaceContextStruct,\n UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n any,\n array,\n assign,\n boolean,\n enums,\n is,\n literal,\n nullable,\n object,\n optional,\n record,\n size,\n string,\n tuple,\n union,\n} from '@metamask/superstruct';\nimport type {\n CaipChainId,\n JsonRpcRequest,\n JsonRpcSuccess,\n} from '@metamask/utils';\nimport {\n assertStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n JsonRpcIdStruct,\n JsonRpcParamsStruct,\n JsonRpcRequestStruct,\n JsonRpcSuccessStruct,\n JsonRpcVersionStruct,\n JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n jsonrpc: optional(JsonRpcVersionStruct),\n id: optional(JsonRpcIdStruct),\n method: string(),\n params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n return Array.isArray(value) && value.every(isEndowment);\n}\n\nconst OkStruct = literal('OK');\n\nexport const PingRequestArgumentsStruct = optional(\n union([literal(undefined), array()]),\n);\n\nexport const TerminateRequestArgumentsStruct = union([\n literal(undefined),\n array(),\n]);\n\nexport const ExecuteSnapRequestArgumentsStruct = tuple([\n string(),\n string(),\n array(EndowmentStruct),\n]);\n\nexport const SnapRpcRequestArgumentsStruct = tuple([\n string(),\n enums(Object.values(HandlerType)),\n string(),\n assign(\n JsonRpcRequestWithoutIdStruct,\n object({\n // Previously this would validate that the parameters were valid JSON.\n // This is already validated for all messages received by the executor.\n // If that assumption changes, this should once again validate JSON.\n params: optional(record(string(), any())),\n }),\n ),\n]);\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n | PingRequestArguments\n | TerminateRequestArguments\n | ExecuteSnapRequestArguments\n | SnapRpcRequestArguments;\n\n/**\n * Asserts that the given value is a valid request arguments object.\n *\n * @param value - The value to validate.\n * @param struct - The struct to validate the value against.\n * @throws If the value is not a valid request arguments object.\n */\nfunction assertRequestArguments<Type, Schema>(\n value: unknown,\n struct: Struct<Type, Schema>,\n): asserts value is Struct<Type, Schema> {\n assertStruct(\n value,\n struct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnTransactionRequestArgumentsStruct = object({\n // TODO: Improve `transaction` type.\n transaction: record(string(), JsonStruct),\n chainId: CaipChainIdStruct,\n transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n value: unknown,\n): asserts value is OnTransactionRequestArguments {\n assertRequestArguments(value, OnTransactionRequestArgumentsStruct);\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n signature: record(string(), JsonStruct),\n signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n value: unknown,\n): asserts value is OnSignatureRequestArguments {\n assertRequestArguments(value, OnSignatureRequestArgumentsStruct);\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n ...baseNameLookupArgs,\n address: string(),\n});\nconst addressRequestStruct = object({\n ...baseNameLookupArgs,\n domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n domainRequestStruct,\n addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n address?: string;\n domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n assertRequestArguments(value, OnNameLookupRequestArgumentsStruct);\n}\n\nexport const OnAssetHistoricalPriceRequestArgumentsStruct = object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n});\n\nexport type OnAssetHistoricalPriceRequestArguments = Infer<\n typeof OnAssetHistoricalPriceRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetHistoricalPriceRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetHistoricalPriceRequestArguments}\n * object.\n */\nexport function assertIsOnAssetHistoricalPriceRequestArguments(\n value: unknown,\n): asserts value is OnAssetHistoricalPriceRequestArguments {\n assertRequestArguments(value, OnAssetHistoricalPriceRequestArgumentsStruct);\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n assets: size(array(CaipAssetTypeStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n assertRequestArguments(value, OnAssetsLookupRequestArgumentsStruct);\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n conversions: size(\n array(\n object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n includeMarketData: optional(boolean()),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n assertRequestArguments(value, OnAssetsConversionRequestArgumentsStruct);\n}\n\nexport const OnUserInputArgumentsStruct = object({\n id: string(),\n event: UserInputEventStruct,\n context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n value: unknown,\n): asserts value is OnUserInputArguments {\n assertRequestArguments(value, OnUserInputArgumentsStruct);\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n value: unknown,\n): asserts value is OnProtocolRequestArguments {\n assertRequestArguments(value, OnProtocolRequestArgumentsStruct);\n}\n\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst OkResponseStruct = object({\n id: JsonRpcIdStruct,\n jsonrpc: JsonRpcVersionStruct,\n result: OkStruct,\n});\n\nconst SnapRpcResponse = JsonRpcSuccessStruct;\n\nexport type OkResponse = Infer<typeof OkResponseStruct>;\nexport type SnapRpcResponse = Infer<typeof SnapRpcResponse>;\n\nexport type Response = OkResponse | SnapRpcResponse;\n\ntype RequestParams<Params extends unknown[] | undefined> =\n Params extends undefined ? [] : Params;\n\ntype RequestFunction<\n Args extends RequestArguments,\n ResponseType extends JsonRpcSuccess,\n> = (...args: RequestParams<Args>) => Promise<ResponseType['result']>;\n\nexport type Ping = RequestFunction<PingRequestArguments, OkResponse>;\nexport type Terminate = RequestFunction<TerminateRequestArguments, OkResponse>;\nexport type ExecuteSnap = RequestFunction<\n ExecuteSnapRequestArguments,\n OkResponse\n>;\nexport type SnapRpc = RequestFunction<SnapRpcRequestArguments, SnapRpcResponse>;\n"]}
|
|
1
|
+
{"version":3,"file":"validation.cjs","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport {\n InterfaceContextStruct,\n literal as customLiteral,\n typedUnion,\n UserInputEventStruct,\n} from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Infer, Struct } from '@metamask/superstruct';\nimport {\n any,\n array,\n assign,\n boolean,\n enums,\n is,\n nullable,\n number,\n object,\n optional,\n record,\n size,\n string,\n tuple,\n union,\n literal,\n} from '@metamask/superstruct';\nimport type {\n CaipChainId,\n JsonRpcRequest,\n JsonRpcSuccess,\n} from '@metamask/utils';\nimport {\n assertStruct,\n CaipAssetTypeStruct,\n CaipChainIdStruct,\n JsonRpcIdStruct,\n JsonRpcParamsStruct,\n JsonRpcRequestStruct,\n JsonRpcSuccessStruct,\n JsonRpcVersionStruct,\n JsonStruct,\n} from '@metamask/utils';\n\nexport const JsonRpcRequestWithoutIdStruct = object({\n jsonrpc: optional(JsonRpcVersionStruct),\n id: optional(JsonRpcIdStruct),\n method: string(),\n params: optional(JsonRpcParamsStruct),\n});\n\nexport type JsonRpcRequestWithoutId = Infer<\n typeof JsonRpcRequestWithoutIdStruct\n>;\n\nexport const EndowmentStruct = string();\nexport type Endowment = Infer<typeof EndowmentStruct>;\n\n/**\n * Check if the given value is an endowment.\n *\n * @param value - The value to check.\n * @returns Whether the value is an endowment.\n */\nexport function isEndowment(value: unknown): value is Endowment {\n return is(value, EndowmentStruct);\n}\n\n/**\n * Check if the given value is an array of endowments.\n *\n * @param value - The value to check.\n * @returns Whether the value is an array of endowments.\n */\nexport function isEndowmentsArray(value: unknown): value is Endowment[] {\n return Array.isArray(value) && value.every(isEndowment);\n}\n\nconst OkStruct = literal('OK');\n\nexport const PingRequestArgumentsStruct = optional(\n union([literal(undefined), array()]),\n);\n\nexport const TerminateRequestArgumentsStruct = union([\n literal(undefined),\n array(),\n]);\n\nexport const ExecuteSnapRequestArgumentsStruct = tuple([\n string(),\n string(),\n array(EndowmentStruct),\n]);\n\nexport const SnapRpcRequestArgumentsStruct = tuple([\n string(),\n enums(Object.values(HandlerType)),\n string(),\n assign(\n JsonRpcRequestWithoutIdStruct,\n object({\n // Previously this would validate that the parameters were valid JSON.\n // This is already validated for all messages received by the executor.\n // If that assumption changes, this should once again validate JSON.\n params: optional(record(string(), any())),\n }),\n ),\n]);\n\nexport type PingRequestArguments = Infer<typeof PingRequestArgumentsStruct>;\nexport type TerminateRequestArguments = Infer<\n typeof TerminateRequestArgumentsStruct\n>;\n\nexport type ExecuteSnapRequestArguments = Infer<\n typeof ExecuteSnapRequestArgumentsStruct\n>;\n\nexport type SnapRpcRequestArguments = Infer<\n typeof SnapRpcRequestArgumentsStruct\n>;\n\nexport type RequestArguments =\n | PingRequestArguments\n | TerminateRequestArguments\n | ExecuteSnapRequestArguments\n | SnapRpcRequestArguments;\n\n/**\n * Asserts that the given value is a valid request arguments object.\n *\n * @param value - The value to validate.\n * @param struct - The struct to validate the value against.\n * @throws If the value is not a valid request arguments object.\n */\nfunction assertRequestArguments<Type, Schema>(\n value: unknown,\n struct: Struct<Type, Schema>,\n): asserts value is Struct<Type, Schema> {\n assertStruct(\n value,\n struct,\n 'Invalid request params',\n rpcErrors.invalidParams,\n );\n}\n\nexport const OnTransactionRequestArgumentsStruct = object({\n // TODO: Improve `transaction` type.\n transaction: record(string(), JsonStruct),\n chainId: CaipChainIdStruct,\n transactionOrigin: nullable(string()),\n});\n\nexport type OnTransactionRequestArguments = Infer<\n typeof OnTransactionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnTransactionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnTransactionRequestArguments}\n * object.\n */\nexport function assertIsOnTransactionRequestArguments(\n value: unknown,\n): asserts value is OnTransactionRequestArguments {\n assertRequestArguments(value, OnTransactionRequestArgumentsStruct);\n}\n\nexport const OnSignatureRequestArgumentsStruct = object({\n signature: record(string(), JsonStruct),\n signatureOrigin: nullable(string()),\n});\n\nexport type OnSignatureRequestArguments = Infer<\n typeof OnSignatureRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnSignatureRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnSignatureRequestArguments}\n * object.\n */\nexport function assertIsOnSignatureRequestArguments(\n value: unknown,\n): asserts value is OnSignatureRequestArguments {\n assertRequestArguments(value, OnSignatureRequestArgumentsStruct);\n}\n\nconst baseNameLookupArgs = { chainId: CaipChainIdStruct };\nconst domainRequestStruct = object({\n ...baseNameLookupArgs,\n address: string(),\n});\nconst addressRequestStruct = object({\n ...baseNameLookupArgs,\n domain: string(),\n});\n\nexport const OnNameLookupRequestArgumentsStruct = union([\n domainRequestStruct,\n addressRequestStruct,\n]);\n\nexport type OnNameLookupRequestArguments = Infer<\n typeof OnNameLookupRequestArgumentsStruct\n>;\n\nexport type PossibleLookupRequestArgs = typeof baseNameLookupArgs & {\n address?: string;\n domain?: string;\n};\n\n/**\n * Asserts that the given value is a valid {@link OnNameLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnNameLookupRequestArguments(\n value: unknown,\n): asserts value is OnNameLookupRequestArguments {\n assertRequestArguments(value, OnNameLookupRequestArgumentsStruct);\n}\n\nexport const OnAssetHistoricalPriceRequestArgumentsStruct = object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n});\n\nexport type OnAssetHistoricalPriceRequestArguments = Infer<\n typeof OnAssetHistoricalPriceRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetHistoricalPriceRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetHistoricalPriceRequestArguments}\n * object.\n */\nexport function assertIsOnAssetHistoricalPriceRequestArguments(\n value: unknown,\n): asserts value is OnAssetHistoricalPriceRequestArguments {\n assertRequestArguments(value, OnAssetHistoricalPriceRequestArgumentsStruct);\n}\n\nexport const OnAssetsMarketDataRequestArgumentsStruct = object({\n assets: size(\n array(\n object({\n asset: CaipAssetTypeStruct,\n unit: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n});\n\nexport type OnAssetsMarketDataRequestArguments = Infer<\n typeof OnAssetsMarketDataRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsMarketDataRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsMarketDataRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsMarketDataRequestArguments(\n value: unknown,\n): asserts value is OnAssetsMarketDataRequestArguments {\n assertRequestArguments(value, OnAssetsMarketDataRequestArgumentsStruct);\n}\n\nexport const OnAssetsLookupRequestArgumentsStruct = object({\n assets: size(array(CaipAssetTypeStruct), 1, Infinity),\n});\n\nexport type OnAssetsLookupRequestArguments = Infer<\n typeof OnAssetsLookupRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsLookupRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnAssetsLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsLookupRequestArguments(\n value: unknown,\n): asserts value is OnAssetsLookupRequestArguments {\n assertRequestArguments(value, OnAssetsLookupRequestArgumentsStruct);\n}\n\nexport const OnAssetsConversionRequestArgumentsStruct = object({\n conversions: size(\n array(\n object({\n from: CaipAssetTypeStruct,\n to: CaipAssetTypeStruct,\n }),\n ),\n 1,\n Infinity,\n ),\n});\n\nexport type OnAssetsConversionRequestArguments = Infer<\n typeof OnAssetsConversionRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnAssetsConversionRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnNameLookupRequestArguments}\n * object.\n */\nexport function assertIsOnAssetsConversionRequestArguments(\n value: unknown,\n): asserts value is OnAssetsConversionRequestArguments {\n assertRequestArguments(value, OnAssetsConversionRequestArgumentsStruct);\n}\n\nexport const OnUserInputArgumentsStruct = object({\n id: string(),\n event: UserInputEventStruct,\n context: optional(nullable(InterfaceContextStruct)),\n});\n\nexport type OnUserInputArguments = Infer<typeof OnUserInputArgumentsStruct>;\n\n/**\n * Asserts that the given value is a valid {@link OnUserInputArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnUserInputArguments}\n * object.\n */\nexport function assertIsOnUserInputRequestArguments(\n value: unknown,\n): asserts value is OnUserInputArguments {\n assertRequestArguments(value, OnUserInputArgumentsStruct);\n}\n\nexport const OnProtocolRequestArgumentsStruct = object({\n scope: CaipChainIdStruct,\n request: JsonRpcRequestStruct,\n}) as unknown as Struct<{ scope: CaipChainId; request: JsonRpcRequest }, null>;\n\nexport type OnProtocolRequestArguments = Infer<\n typeof OnProtocolRequestArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnProtocolRequestArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnProtocolRequestArguments}\n * object.\n */\nexport function assertIsOnProtocolRequestArguments(\n value: unknown,\n): asserts value is OnProtocolRequestArguments {\n assertRequestArguments(value, OnProtocolRequestArgumentsStruct);\n}\n\nconst WebSocketOpenEventStruct = object({\n type: customLiteral('open'),\n id: string(),\n origin: string(),\n});\n\nconst WebSocketCloseEventStruct = object({\n type: customLiteral('close'),\n id: string(),\n origin: string(),\n code: number(),\n reason: nullable(string()),\n wasClean: nullable(boolean()),\n});\n\nconst WebSocketMessageEventStruct = object({\n type: customLiteral('message'),\n id: string(),\n origin: string(),\n data: typedUnion([\n object({\n type: customLiteral('text'),\n message: string(),\n }),\n object({\n type: customLiteral('binary'),\n message: array(number()),\n }),\n ]),\n});\n\nexport const WebSocketEventStruct = typedUnion([\n WebSocketOpenEventStruct,\n WebSocketCloseEventStruct,\n WebSocketMessageEventStruct,\n]);\n\nexport const OnWebSocketEventArgumentsStruct = object({\n event: WebSocketEventStruct,\n});\n\nexport type OnWebSocketEventArguments = Infer<\n typeof OnWebSocketEventArgumentsStruct\n>;\n\n/**\n * Asserts that the given value is a valid {@link OnWebSocketEventArguments}\n * object.\n *\n * @param value - The value to validate.\n * @throws If the value is not a valid {@link OnWebSocketEventArguments}\n * object.\n */\nexport function assertIsOnWebSocketEventArguments(\n value: unknown,\n): asserts value is OnWebSocketEventArguments {\n assertRequestArguments(value, OnWebSocketEventArgumentsStruct);\n}\n\n// TODO: Either fix this lint violation or explain why it's necessary to ignore.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst OkResponseStruct = object({\n id: JsonRpcIdStruct,\n jsonrpc: JsonRpcVersionStruct,\n result: OkStruct,\n});\n\nconst SnapRpcResponse = JsonRpcSuccessStruct;\n\nexport type OkResponse = Infer<typeof OkResponseStruct>;\nexport type SnapRpcResponse = Infer<typeof SnapRpcResponse>;\n\nexport type Response = OkResponse | SnapRpcResponse;\n\ntype RequestParams<Params extends unknown[] | undefined> =\n Params extends undefined ? [] : Params;\n\ntype RequestFunction<\n Args extends RequestArguments,\n ResponseType extends JsonRpcSuccess,\n> = (...args: RequestParams<Args>) => Promise<ResponseType['result']>;\n\nexport type Ping = RequestFunction<PingRequestArguments, OkResponse>;\nexport type Terminate = RequestFunction<TerminateRequestArguments, OkResponse>;\nexport type ExecuteSnap = RequestFunction<\n ExecuteSnapRequestArguments,\n OkResponse\n>;\nexport type SnapRpc = RequestFunction<SnapRpcRequestArguments, SnapRpcResponse>;\n"]}
|
|
@@ -120,6 +120,33 @@ export type OnAssetHistoricalPriceRequestArguments = Infer<typeof OnAssetHistori
|
|
|
120
120
|
* object.
|
|
121
121
|
*/
|
|
122
122
|
export declare function assertIsOnAssetHistoricalPriceRequestArguments(value: unknown): asserts value is OnAssetHistoricalPriceRequestArguments;
|
|
123
|
+
export declare const OnAssetsMarketDataRequestArgumentsStruct: Struct<{
|
|
124
|
+
assets: {
|
|
125
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
126
|
+
unit: `${string}:${string}/${string}:${string}`;
|
|
127
|
+
}[];
|
|
128
|
+
}, {
|
|
129
|
+
assets: Struct<{
|
|
130
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
131
|
+
unit: `${string}:${string}/${string}:${string}`;
|
|
132
|
+
}[], Struct<{
|
|
133
|
+
asset: `${string}:${string}/${string}:${string}`;
|
|
134
|
+
unit: `${string}:${string}/${string}:${string}`;
|
|
135
|
+
}, {
|
|
136
|
+
asset: Struct<`${string}:${string}/${string}:${string}`, null>;
|
|
137
|
+
unit: Struct<`${string}:${string}/${string}:${string}`, null>;
|
|
138
|
+
}>>;
|
|
139
|
+
}>;
|
|
140
|
+
export type OnAssetsMarketDataRequestArguments = Infer<typeof OnAssetsMarketDataRequestArgumentsStruct>;
|
|
141
|
+
/**
|
|
142
|
+
* Asserts that the given value is a valid {@link OnAssetsMarketDataRequestArguments}
|
|
143
|
+
* object.
|
|
144
|
+
*
|
|
145
|
+
* @param value - The value to validate.
|
|
146
|
+
* @throws If the value is not a valid {@link OnAssetsMarketDataRequestArguments}
|
|
147
|
+
* object.
|
|
148
|
+
*/
|
|
149
|
+
export declare function assertIsOnAssetsMarketDataRequestArguments(value: unknown): asserts value is OnAssetsMarketDataRequestArguments;
|
|
123
150
|
export declare const OnAssetsLookupRequestArgumentsStruct: Struct<{
|
|
124
151
|
assets: `${string}:${string}/${string}:${string}`[];
|
|
125
152
|
}, {
|
|
@@ -140,7 +167,6 @@ export declare const OnAssetsConversionRequestArgumentsStruct: Struct<{
|
|
|
140
167
|
from: `${string}:${string}/${string}:${string}`;
|
|
141
168
|
to: `${string}:${string}/${string}:${string}`;
|
|
142
169
|
}[];
|
|
143
|
-
includeMarketData?: boolean | undefined;
|
|
144
170
|
}, {
|
|
145
171
|
conversions: Struct<{
|
|
146
172
|
from: `${string}:${string}/${string}:${string}`;
|
|
@@ -152,7 +178,6 @@ export declare const OnAssetsConversionRequestArgumentsStruct: Struct<{
|
|
|
152
178
|
from: Struct<`${string}:${string}/${string}:${string}`, null>;
|
|
153
179
|
to: Struct<`${string}:${string}/${string}:${string}`, null>;
|
|
154
180
|
}>>;
|
|
155
|
-
includeMarketData: Struct<boolean | undefined, null>;
|
|
156
181
|
}>;
|
|
157
182
|
export type OnAssetsConversionRequestArguments = Infer<typeof OnAssetsConversionRequestArgumentsStruct>;
|
|
158
183
|
/**
|
|
@@ -183,8 +208,8 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
183
208
|
name: string;
|
|
184
209
|
asset: `${string}:${string}/${string}:${string}`;
|
|
185
210
|
} | null>;
|
|
186
|
-
name: string;
|
|
187
211
|
type: import("@metamask/snaps-sdk").UserInputEventType.FormSubmitEvent;
|
|
212
|
+
name: string;
|
|
188
213
|
} | {
|
|
189
214
|
value: string | boolean | {
|
|
190
215
|
addresses: `${string}:${string}:${string}`[];
|
|
@@ -194,11 +219,19 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
194
219
|
name: string;
|
|
195
220
|
asset: `${string}:${string}/${string}:${string}`;
|
|
196
221
|
};
|
|
197
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Asserts that the given value is a valid {@link OnUserInputArguments}
|
|
224
|
+
* object.
|
|
225
|
+
*
|
|
226
|
+
* @param value - The value to validate.
|
|
227
|
+
* @throws If the value is not a valid {@link OnUserInputArguments}
|
|
228
|
+
* object.
|
|
229
|
+
*/
|
|
198
230
|
type: import("@metamask/snaps-sdk").UserInputEventType.InputChangeEvent;
|
|
199
|
-
} | {
|
|
200
231
|
name: string;
|
|
232
|
+
} | {
|
|
201
233
|
type: import("@metamask/snaps-sdk").UserInputEventType.FileUploadEvent;
|
|
234
|
+
name: string;
|
|
202
235
|
file: {
|
|
203
236
|
name: string;
|
|
204
237
|
size: number;
|
|
@@ -226,8 +259,8 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
226
259
|
name: string;
|
|
227
260
|
asset: `${string}:${string}/${string}:${string}`;
|
|
228
261
|
} | null>;
|
|
229
|
-
name: string;
|
|
230
262
|
type: import("@metamask/snaps-sdk").UserInputEventType.FormSubmitEvent;
|
|
263
|
+
name: string;
|
|
231
264
|
} | {
|
|
232
265
|
value: string | boolean | {
|
|
233
266
|
addresses: `${string}:${string}:${string}`[];
|
|
@@ -237,11 +270,19 @@ export declare const OnUserInputArgumentsStruct: Struct<{
|
|
|
237
270
|
name: string;
|
|
238
271
|
asset: `${string}:${string}/${string}:${string}`;
|
|
239
272
|
};
|
|
240
|
-
|
|
273
|
+
/**
|
|
274
|
+
* Asserts that the given value is a valid {@link OnUserInputArguments}
|
|
275
|
+
* object.
|
|
276
|
+
*
|
|
277
|
+
* @param value - The value to validate.
|
|
278
|
+
* @throws If the value is not a valid {@link OnUserInputArguments}
|
|
279
|
+
* object.
|
|
280
|
+
*/
|
|
241
281
|
type: import("@metamask/snaps-sdk").UserInputEventType.InputChangeEvent;
|
|
242
|
-
} | {
|
|
243
282
|
name: string;
|
|
283
|
+
} | {
|
|
244
284
|
type: import("@metamask/snaps-sdk").UserInputEventType.FileUploadEvent;
|
|
285
|
+
name: string;
|
|
245
286
|
file: {
|
|
246
287
|
name: string;
|
|
247
288
|
size: number;
|
|
@@ -275,6 +316,88 @@ export type OnProtocolRequestArguments = Infer<typeof OnProtocolRequestArguments
|
|
|
275
316
|
* object.
|
|
276
317
|
*/
|
|
277
318
|
export declare function assertIsOnProtocolRequestArguments(value: unknown): asserts value is OnProtocolRequestArguments;
|
|
319
|
+
export declare const WebSocketEventStruct: Struct<{
|
|
320
|
+
id: string;
|
|
321
|
+
type: "open";
|
|
322
|
+
origin: string;
|
|
323
|
+
} | {
|
|
324
|
+
id: string;
|
|
325
|
+
type: "close";
|
|
326
|
+
origin: string;
|
|
327
|
+
code: number;
|
|
328
|
+
reason: string | null;
|
|
329
|
+
wasClean: boolean | null;
|
|
330
|
+
} | {
|
|
331
|
+
data: {
|
|
332
|
+
type: "text";
|
|
333
|
+
message: string;
|
|
334
|
+
} | {
|
|
335
|
+
type: "binary";
|
|
336
|
+
message: number[];
|
|
337
|
+
};
|
|
338
|
+
id: string;
|
|
339
|
+
type: "message";
|
|
340
|
+
origin: string;
|
|
341
|
+
}, null>;
|
|
342
|
+
export declare const OnWebSocketEventArgumentsStruct: Struct<{
|
|
343
|
+
event: {
|
|
344
|
+
id: string;
|
|
345
|
+
type: "open";
|
|
346
|
+
origin: string;
|
|
347
|
+
} | {
|
|
348
|
+
id: string;
|
|
349
|
+
type: "close";
|
|
350
|
+
origin: string;
|
|
351
|
+
code: number;
|
|
352
|
+
reason: string | null;
|
|
353
|
+
wasClean: boolean | null;
|
|
354
|
+
} | {
|
|
355
|
+
data: {
|
|
356
|
+
type: "text";
|
|
357
|
+
message: string;
|
|
358
|
+
} | {
|
|
359
|
+
type: "binary";
|
|
360
|
+
message: number[];
|
|
361
|
+
};
|
|
362
|
+
id: string;
|
|
363
|
+
type: "message";
|
|
364
|
+
origin: string;
|
|
365
|
+
};
|
|
366
|
+
}, {
|
|
367
|
+
event: Struct<{
|
|
368
|
+
id: string;
|
|
369
|
+
type: "open";
|
|
370
|
+
origin: string;
|
|
371
|
+
} | {
|
|
372
|
+
id: string;
|
|
373
|
+
type: "close";
|
|
374
|
+
origin: string;
|
|
375
|
+
code: number;
|
|
376
|
+
reason: string | null;
|
|
377
|
+
wasClean: boolean | null;
|
|
378
|
+
} | {
|
|
379
|
+
data: {
|
|
380
|
+
type: "text";
|
|
381
|
+
message: string;
|
|
382
|
+
} | {
|
|
383
|
+
type: "binary";
|
|
384
|
+
message: number[];
|
|
385
|
+
};
|
|
386
|
+
id: string;
|
|
387
|
+
type: "message";
|
|
388
|
+
origin: string;
|
|
389
|
+
}, null>;
|
|
390
|
+
}>;
|
|
391
|
+
export type OnWebSocketEventArguments = Infer<typeof OnWebSocketEventArgumentsStruct>;
|
|
392
|
+
/**
|
|
393
|
+
* Asserts that the given value is a valid {@link OnWebSocketEventArguments}
|
|
394
|
+
* object.
|
|
395
|
+
*
|
|
396
|
+
* @param value - The value to validate.
|
|
397
|
+
* @throws If the value is not a valid {@link OnWebSocketEventArguments}
|
|
398
|
+
* object.
|
|
399
|
+
*/
|
|
400
|
+
export declare function assertIsOnWebSocketEventArguments(value: unknown): asserts value is OnWebSocketEventArguments;
|
|
278
401
|
declare const OkResponseStruct: Struct<{
|
|
279
402
|
jsonrpc: "2.0";
|
|
280
403
|
id: string | number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.cts","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.cts","sourceRoot":"","sources":["../../src/common/validation.ts"],"names":[],"mappings":"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"}
|