@metamask-previews/keyring-snap-sdk 0.0.1-672cc7b → 0.0.1-b85bfaa
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/dist/{JsonRpcRequest.js → JsonRpcRequest.cjs} +1 -1
- package/dist/JsonRpcRequest.cjs.map +1 -0
- package/dist/{JsonRpcRequest.d.ts → JsonRpcRequest.d.cts} +3 -2
- package/dist/JsonRpcRequest.d.cts.map +1 -0
- package/dist/JsonRpcRequest.d.mts +17 -0
- package/dist/JsonRpcRequest.d.mts.map +1 -0
- package/dist/JsonRpcRequest.mjs +10 -0
- package/dist/JsonRpcRequest.mjs.map +1 -0
- package/dist/{events.js → events.cjs} +1 -1
- package/dist/events.cjs.map +1 -0
- package/dist/events.d.cts +2 -0
- package/dist/events.d.cts.map +1 -0
- package/dist/events.d.mts +2 -0
- package/dist/events.d.mts.map +1 -0
- package/dist/events.mjs +2 -0
- package/dist/events.mjs.map +1 -0
- package/dist/{index.js → index.cjs} +5 -5
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +5 -0
- package/dist/index.mjs.map +1 -0
- package/dist/{rpc-handler.js → rpc-handler.cjs} +17 -17
- package/dist/rpc-handler.cjs.map +1 -0
- package/dist/{rpc-handler.d.ts → rpc-handler.d.cts} +4 -3
- package/dist/rpc-handler.d.cts.map +1 -0
- package/dist/rpc-handler.d.mts +30 -0
- package/dist/rpc-handler.d.mts.map +1 -0
- package/dist/rpc-handler.mjs +130 -0
- package/dist/rpc-handler.mjs.map +1 -0
- package/dist/{snap-utils.js → snap-utils.cjs} +2 -3
- package/dist/snap-utils.cjs.map +1 -0
- package/dist/{snap-utils.d.ts → snap-utils.d.cts} +4 -3
- package/dist/snap-utils.d.cts.map +1 -0
- package/dist/snap-utils.d.mts +12 -0
- package/dist/snap-utils.d.mts.map +1 -0
- package/dist/snap-utils.mjs +17 -0
- package/dist/snap-utils.mjs.map +1 -0
- package/package.json +33 -18
- package/dist/JsonRpcRequest.js.map +0 -1
- package/dist/events.d.ts +0 -1
- package/dist/events.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.js.map +0 -1
- package/dist/rpc-handler.js.map +0 -1
- package/dist/snap-utils.js.map +0 -1
|
@@ -10,4 +10,4 @@ exports.JsonRpcRequestStruct = (0, keyring_utils_1.object)({
|
|
|
10
10
|
method: (0, superstruct_1.string)(),
|
|
11
11
|
params: (0, keyring_utils_1.exactOptional)((0, superstruct_1.union)([(0, superstruct_1.array)(utils_1.JsonStruct), (0, superstruct_1.record)((0, superstruct_1.string)(), utils_1.JsonStruct)])),
|
|
12
12
|
});
|
|
13
|
-
//# sourceMappingURL=JsonRpcRequest.
|
|
13
|
+
//# sourceMappingURL=JsonRpcRequest.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonRpcRequest.cjs","sourceRoot":"","sources":["../src/JsonRpcRequest.ts"],"names":[],"mappings":";;;AAAA,2DAAgE;AAChE,uDAO+B;AAE/B,2CAA6C;AAEhC,QAAA,oBAAoB,GAAG,IAAA,sBAAM,EAAC;IACzC,OAAO,EAAE,IAAA,qBAAO,EAAC,KAAK,CAAC;IACvB,EAAE,EAAE,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,EAAE,IAAA,qBAAO,EAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,EAAE,IAAA,oBAAM,GAAE;IAChB,MAAM,EAAE,IAAA,6BAAa,EACnB,IAAA,mBAAK,EAAC,CAAC,IAAA,mBAAK,EAAC,kBAAU,CAAC,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC,CAAC,CACzD;CACF,CAAC,CAAC","sourcesContent":["import { exactOptional, object } from '@metamask/keyring-utils';\nimport {\n array,\n literal,\n number,\n record,\n string,\n union,\n} from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\nimport { JsonStruct } from '@metamask/utils';\n\nexport const JsonRpcRequestStruct = object({\n jsonrpc: literal('2.0'),\n id: union([string(), number(), literal(null)]),\n method: string(),\n params: exactOptional(\n union([array(JsonStruct), record(string(), JsonStruct)]),\n ),\n});\n\n/**\n * JSON-RPC request type.\n */\nexport type JsonRpcRequest = Infer<typeof JsonRpcRequestStruct>;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Infer } from
|
|
1
|
+
import type { Infer } from "@metamask/superstruct";
|
|
2
2
|
export declare const JsonRpcRequestStruct: import("@metamask/superstruct").Struct<{
|
|
3
3
|
jsonrpc: "2.0";
|
|
4
4
|
id: string | number | null;
|
|
@@ -13,4 +13,5 @@ export declare const JsonRpcRequestStruct: import("@metamask/superstruct").Struc
|
|
|
13
13
|
/**
|
|
14
14
|
* JSON-RPC request type.
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
16
|
+
export type JsonRpcRequest = Infer<typeof JsonRpcRequestStruct>;
|
|
17
|
+
//# sourceMappingURL=JsonRpcRequest.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonRpcRequest.d.cts","sourceRoot":"","sources":["../src/JsonRpcRequest.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAGnD,eAAO,MAAM,oBAAoB;;;;;;;;;;EAO/B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Infer } from "@metamask/superstruct";
|
|
2
|
+
export declare const JsonRpcRequestStruct: import("@metamask/superstruct").Struct<{
|
|
3
|
+
jsonrpc: "2.0";
|
|
4
|
+
id: string | number | null;
|
|
5
|
+
method: string;
|
|
6
|
+
params?: import("@metamask/utils").Json[] | Record<string, import("@metamask/utils").Json>;
|
|
7
|
+
}, {
|
|
8
|
+
jsonrpc: import("@metamask/superstruct").Struct<"2.0", "2.0">;
|
|
9
|
+
id: import("@metamask/superstruct").Struct<string | number | null, null>;
|
|
10
|
+
method: import("@metamask/superstruct").Struct<string, null>;
|
|
11
|
+
params: import("@metamask/superstruct").Struct<import("@metamask/keyring-utils").ExactOptionalTag | import("@metamask/utils").Json[] | Record<string, import("@metamask/utils").Json>, null>;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* JSON-RPC request type.
|
|
15
|
+
*/
|
|
16
|
+
export type JsonRpcRequest = Infer<typeof JsonRpcRequestStruct>;
|
|
17
|
+
//# sourceMappingURL=JsonRpcRequest.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonRpcRequest.d.mts","sourceRoot":"","sources":["../src/JsonRpcRequest.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAGnD,eAAO,MAAM,oBAAoB;;;;;;;;;;EAO/B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { exactOptional, object } from "@metamask/keyring-utils";
|
|
2
|
+
import { array, literal, number, record, string, union } from "@metamask/superstruct";
|
|
3
|
+
import { JsonStruct } from "@metamask/utils";
|
|
4
|
+
export const JsonRpcRequestStruct = object({
|
|
5
|
+
jsonrpc: literal('2.0'),
|
|
6
|
+
id: union([string(), number(), literal(null)]),
|
|
7
|
+
method: string(),
|
|
8
|
+
params: exactOptional(union([array(JsonStruct), record(string(), JsonStruct)])),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=JsonRpcRequest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonRpcRequest.mjs","sourceRoot":"","sources":["../src/JsonRpcRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,gCAAgC;AAChE,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,KAAK,EACN,8BAA8B;AAE/B,OAAO,EAAE,UAAU,EAAE,wBAAwB;AAE7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;IACzC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;IACvB,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,EAAE;IAChB,MAAM,EAAE,aAAa,CACnB,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CACzD;CACF,CAAC,CAAC","sourcesContent":["import { exactOptional, object } from '@metamask/keyring-utils';\nimport {\n array,\n literal,\n number,\n record,\n string,\n union,\n} from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\nimport { JsonStruct } from '@metamask/utils';\n\nexport const JsonRpcRequestStruct = object({\n jsonrpc: literal('2.0'),\n id: union([string(), number(), literal(null)]),\n method: string(),\n params: exactOptional(\n union([array(JsonStruct), record(string(), JsonStruct)]),\n ),\n});\n\n/**\n * JSON-RPC request type.\n */\nexport type JsonRpcRequest = Infer<typeof JsonRpcRequestStruct>;\n"]}
|
|
@@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.KeyringEvent = void 0;
|
|
4
4
|
var keyring_internal_api_1 = require("@metamask/keyring-internal-api");
|
|
5
5
|
Object.defineProperty(exports, "KeyringEvent", { enumerable: true, get: function () { return keyring_internal_api_1.KeyringEvent; } });
|
|
6
|
-
//# sourceMappingURL=events.
|
|
6
|
+
//# sourceMappingURL=events.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.cjs","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;AAAA,uEAA8D;AAArD,oHAAA,YAAY,OAAA","sourcesContent":["export { KeyringEvent } from '@metamask/keyring-internal-api';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.cts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uCAAuC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.mts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uCAAuC"}
|
package/dist/events.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.mjs","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uCAAuC","sourcesContent":["export { KeyringEvent } from '@metamask/keyring-internal-api';\n"]}
|
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./JsonRpcRequest"), exports);
|
|
18
|
-
__exportStar(require("./events"), exports);
|
|
19
|
-
__exportStar(require("./rpc-handler"), exports);
|
|
20
|
-
__exportStar(require("./snap-utils"), exports);
|
|
21
|
-
//# sourceMappingURL=index.
|
|
17
|
+
__exportStar(require("./JsonRpcRequest.cjs"), exports);
|
|
18
|
+
__exportStar(require("./events.cjs"), exports);
|
|
19
|
+
__exportStar(require("./rpc-handler.cjs"), exports);
|
|
20
|
+
__exportStar(require("./snap-utils.cjs"), exports);
|
|
21
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAiC;AACjC,+CAAyB;AACzB,oDAA8B;AAC9B,mDAA6B","sourcesContent":["export * from './JsonRpcRequest';\nexport * from './events';\nexport * from './rpc-handler';\nexport * from './snap-utils';\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,6BAAyB;AACzB,kCAA8B;AAC9B,iCAA6B"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,6BAAyB;AACzB,kCAA8B;AAC9B,iCAA6B"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAiC;AACjC,6BAAyB;AACzB,kCAA8B;AAC9B,iCAA6B","sourcesContent":["export * from './JsonRpcRequest';\nexport * from './events';\nexport * from './rpc-handler';\nexport * from './snap-utils';\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MethodNotSupportedError = void 0;
|
|
4
|
+
exports.handleKeyringRequest = handleKeyringRequest;
|
|
4
5
|
const keyring_internal_api_1 = require("@metamask/keyring-internal-api");
|
|
5
6
|
const superstruct_1 = require("@metamask/superstruct");
|
|
6
|
-
const JsonRpcRequest_1 = require("./JsonRpcRequest");
|
|
7
|
+
const JsonRpcRequest_1 = require("./JsonRpcRequest.cjs");
|
|
7
8
|
/**
|
|
8
9
|
* Error thrown when a keyring JSON-RPC method is not supported.
|
|
9
10
|
*/
|
|
@@ -26,70 +27,70 @@ async function dispatchRequest(keyring, request) {
|
|
|
26
27
|
// we can check its method name.
|
|
27
28
|
(0, superstruct_1.assert)(request, JsonRpcRequest_1.JsonRpcRequestStruct);
|
|
28
29
|
switch (request.method) {
|
|
29
|
-
case keyring_internal_api_1.KeyringRpcMethod.ListAccounts
|
|
30
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.ListAccounts}`: {
|
|
30
31
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.ListAccountsRequestStruct);
|
|
31
32
|
return keyring.listAccounts();
|
|
32
33
|
}
|
|
33
|
-
case keyring_internal_api_1.KeyringRpcMethod.GetAccount
|
|
34
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.GetAccount}`: {
|
|
34
35
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.GetAccountRequestStruct);
|
|
35
36
|
return keyring.getAccount(request.params.id);
|
|
36
37
|
}
|
|
37
|
-
case keyring_internal_api_1.KeyringRpcMethod.CreateAccount
|
|
38
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.CreateAccount}`: {
|
|
38
39
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.CreateAccountRequestStruct);
|
|
39
40
|
return keyring.createAccount(request.params.options);
|
|
40
41
|
}
|
|
41
|
-
case keyring_internal_api_1.KeyringRpcMethod.GetAccountBalances
|
|
42
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.GetAccountBalances}`: {
|
|
42
43
|
if (keyring.getAccountBalances === undefined) {
|
|
43
44
|
throw new MethodNotSupportedError(request.method);
|
|
44
45
|
}
|
|
45
46
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.GetAccountBalancesRequestStruct);
|
|
46
47
|
return keyring.getAccountBalances(request.params.id, request.params.assets);
|
|
47
48
|
}
|
|
48
|
-
case keyring_internal_api_1.KeyringRpcMethod.FilterAccountChains
|
|
49
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.FilterAccountChains}`: {
|
|
49
50
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.FilterAccountChainsStruct);
|
|
50
51
|
return keyring.filterAccountChains(request.params.id, request.params.chains);
|
|
51
52
|
}
|
|
52
|
-
case keyring_internal_api_1.KeyringRpcMethod.UpdateAccount
|
|
53
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.UpdateAccount}`: {
|
|
53
54
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.UpdateAccountRequestStruct);
|
|
54
55
|
return keyring.updateAccount(request.params.account);
|
|
55
56
|
}
|
|
56
|
-
case keyring_internal_api_1.KeyringRpcMethod.DeleteAccount
|
|
57
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.DeleteAccount}`: {
|
|
57
58
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.DeleteAccountRequestStruct);
|
|
58
59
|
return keyring.deleteAccount(request.params.id);
|
|
59
60
|
}
|
|
60
|
-
case keyring_internal_api_1.KeyringRpcMethod.ExportAccount
|
|
61
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.ExportAccount}`: {
|
|
61
62
|
if (keyring.exportAccount === undefined) {
|
|
62
63
|
throw new MethodNotSupportedError(request.method);
|
|
63
64
|
}
|
|
64
65
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.ExportAccountRequestStruct);
|
|
65
66
|
return keyring.exportAccount(request.params.id);
|
|
66
67
|
}
|
|
67
|
-
case keyring_internal_api_1.KeyringRpcMethod.ListRequests
|
|
68
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.ListRequests}`: {
|
|
68
69
|
if (keyring.listRequests === undefined) {
|
|
69
70
|
throw new MethodNotSupportedError(request.method);
|
|
70
71
|
}
|
|
71
72
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.ListRequestsRequestStruct);
|
|
72
73
|
return keyring.listRequests();
|
|
73
74
|
}
|
|
74
|
-
case keyring_internal_api_1.KeyringRpcMethod.GetRequest
|
|
75
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.GetRequest}`: {
|
|
75
76
|
if (keyring.getRequest === undefined) {
|
|
76
77
|
throw new MethodNotSupportedError(request.method);
|
|
77
78
|
}
|
|
78
79
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.GetRequestRequestStruct);
|
|
79
80
|
return keyring.getRequest(request.params.id);
|
|
80
81
|
}
|
|
81
|
-
case keyring_internal_api_1.KeyringRpcMethod.SubmitRequest
|
|
82
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.SubmitRequest}`: {
|
|
82
83
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.SubmitRequestRequestStruct);
|
|
83
84
|
return keyring.submitRequest(request.params);
|
|
84
85
|
}
|
|
85
|
-
case keyring_internal_api_1.KeyringRpcMethod.ApproveRequest
|
|
86
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.ApproveRequest}`: {
|
|
86
87
|
if (keyring.approveRequest === undefined) {
|
|
87
88
|
throw new MethodNotSupportedError(request.method);
|
|
88
89
|
}
|
|
89
90
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.ApproveRequestRequestStruct);
|
|
90
91
|
return keyring.approveRequest(request.params.id, request.params.data);
|
|
91
92
|
}
|
|
92
|
-
case keyring_internal_api_1.KeyringRpcMethod.RejectRequest
|
|
93
|
+
case `${keyring_internal_api_1.KeyringRpcMethod.RejectRequest}`: {
|
|
93
94
|
if (keyring.rejectRequest === undefined) {
|
|
94
95
|
throw new MethodNotSupportedError(request.method);
|
|
95
96
|
}
|
|
@@ -131,5 +132,4 @@ async function handleKeyringRequest(keyring, request) {
|
|
|
131
132
|
throw new Error(message);
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
|
-
|
|
135
|
-
//# sourceMappingURL=rpc-handler.js.map
|
|
135
|
+
//# sourceMappingURL=rpc-handler.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-handler.cjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Keyring } from '@metamask/keyring-api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n KeyringRpcMethod,\n} from '@metamask/keyring-internal-api';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\nimport type { JsonRpcRequest } from './JsonRpcRequest';\nimport { JsonRpcRequestStruct } from './JsonRpcRequest';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Keyring } from
|
|
2
|
-
import type { Json } from
|
|
3
|
-
import type { JsonRpcRequest } from
|
|
1
|
+
import type { Keyring } from "@metamask/keyring-api";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import type { JsonRpcRequest } from "./JsonRpcRequest.cjs";
|
|
4
4
|
/**
|
|
5
5
|
* Error thrown when a keyring JSON-RPC method is not supported.
|
|
6
6
|
*/
|
|
@@ -27,3 +27,4 @@ export declare class MethodNotSupportedError extends Error {
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
|
|
30
|
+
//# sourceMappingURL=rpc-handler.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-handler.d.cts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,8BAA8B;AAkBrD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;AAGvD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AAkHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Keyring } from "@metamask/keyring-api";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import type { JsonRpcRequest } from "./JsonRpcRequest.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when a keyring JSON-RPC method is not supported.
|
|
6
|
+
*/
|
|
7
|
+
export declare class MethodNotSupportedError extends Error {
|
|
8
|
+
constructor(method: string);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Handles a keyring JSON-RPC request.
|
|
12
|
+
*
|
|
13
|
+
* This function is meant to be used as a handler for Keyring JSON-RPC requests
|
|
14
|
+
* in an Accounts Snap.
|
|
15
|
+
*
|
|
16
|
+
* @param keyring - Keyring instance.
|
|
17
|
+
* @param request - Keyring JSON-RPC request.
|
|
18
|
+
* @returns A promise that resolves to the keyring response.
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* export const onKeyringRequest: OnKeyringRequestHandler = async ({
|
|
22
|
+
* origin,
|
|
23
|
+
* request,
|
|
24
|
+
* }) => {
|
|
25
|
+
* return await handleKeyringRequest(keyring, request);
|
|
26
|
+
* };
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
|
|
30
|
+
//# sourceMappingURL=rpc-handler.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-handler.d.mts","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,8BAA8B;AAkBrD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;AAGvD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,MAAM,EAAE,MAAM;CAG3B;AAkHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAWtB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { GetAccountRequestStruct, CreateAccountRequestStruct, ApproveRequestRequestStruct, DeleteAccountRequestStruct, ExportAccountRequestStruct, GetRequestRequestStruct, RejectRequestRequestStruct, SubmitRequestRequestStruct, UpdateAccountRequestStruct, FilterAccountChainsStruct, ListAccountsRequestStruct, ListRequestsRequestStruct, GetAccountBalancesRequestStruct, KeyringRpcMethod } from "@metamask/keyring-internal-api";
|
|
2
|
+
import { assert } from "@metamask/superstruct";
|
|
3
|
+
import { JsonRpcRequestStruct } from "./JsonRpcRequest.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when a keyring JSON-RPC method is not supported.
|
|
6
|
+
*/
|
|
7
|
+
export class MethodNotSupportedError extends Error {
|
|
8
|
+
constructor(method) {
|
|
9
|
+
super(`Method not supported: ${method}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Inner function that dispatches JSON-RPC request to the associated Keyring
|
|
14
|
+
* methods.
|
|
15
|
+
*
|
|
16
|
+
* @param keyring - Keyring instance.
|
|
17
|
+
* @param request - Keyring JSON-RPC request.
|
|
18
|
+
* @returns A promise that resolves to the keyring response.
|
|
19
|
+
*/
|
|
20
|
+
async function dispatchRequest(keyring, request) {
|
|
21
|
+
// We first have to make sure that the request is a valid JSON-RPC request so
|
|
22
|
+
// we can check its method name.
|
|
23
|
+
assert(request, JsonRpcRequestStruct);
|
|
24
|
+
switch (request.method) {
|
|
25
|
+
case `${KeyringRpcMethod.ListAccounts}`: {
|
|
26
|
+
assert(request, ListAccountsRequestStruct);
|
|
27
|
+
return keyring.listAccounts();
|
|
28
|
+
}
|
|
29
|
+
case `${KeyringRpcMethod.GetAccount}`: {
|
|
30
|
+
assert(request, GetAccountRequestStruct);
|
|
31
|
+
return keyring.getAccount(request.params.id);
|
|
32
|
+
}
|
|
33
|
+
case `${KeyringRpcMethod.CreateAccount}`: {
|
|
34
|
+
assert(request, CreateAccountRequestStruct);
|
|
35
|
+
return keyring.createAccount(request.params.options);
|
|
36
|
+
}
|
|
37
|
+
case `${KeyringRpcMethod.GetAccountBalances}`: {
|
|
38
|
+
if (keyring.getAccountBalances === undefined) {
|
|
39
|
+
throw new MethodNotSupportedError(request.method);
|
|
40
|
+
}
|
|
41
|
+
assert(request, GetAccountBalancesRequestStruct);
|
|
42
|
+
return keyring.getAccountBalances(request.params.id, request.params.assets);
|
|
43
|
+
}
|
|
44
|
+
case `${KeyringRpcMethod.FilterAccountChains}`: {
|
|
45
|
+
assert(request, FilterAccountChainsStruct);
|
|
46
|
+
return keyring.filterAccountChains(request.params.id, request.params.chains);
|
|
47
|
+
}
|
|
48
|
+
case `${KeyringRpcMethod.UpdateAccount}`: {
|
|
49
|
+
assert(request, UpdateAccountRequestStruct);
|
|
50
|
+
return keyring.updateAccount(request.params.account);
|
|
51
|
+
}
|
|
52
|
+
case `${KeyringRpcMethod.DeleteAccount}`: {
|
|
53
|
+
assert(request, DeleteAccountRequestStruct);
|
|
54
|
+
return keyring.deleteAccount(request.params.id);
|
|
55
|
+
}
|
|
56
|
+
case `${KeyringRpcMethod.ExportAccount}`: {
|
|
57
|
+
if (keyring.exportAccount === undefined) {
|
|
58
|
+
throw new MethodNotSupportedError(request.method);
|
|
59
|
+
}
|
|
60
|
+
assert(request, ExportAccountRequestStruct);
|
|
61
|
+
return keyring.exportAccount(request.params.id);
|
|
62
|
+
}
|
|
63
|
+
case `${KeyringRpcMethod.ListRequests}`: {
|
|
64
|
+
if (keyring.listRequests === undefined) {
|
|
65
|
+
throw new MethodNotSupportedError(request.method);
|
|
66
|
+
}
|
|
67
|
+
assert(request, ListRequestsRequestStruct);
|
|
68
|
+
return keyring.listRequests();
|
|
69
|
+
}
|
|
70
|
+
case `${KeyringRpcMethod.GetRequest}`: {
|
|
71
|
+
if (keyring.getRequest === undefined) {
|
|
72
|
+
throw new MethodNotSupportedError(request.method);
|
|
73
|
+
}
|
|
74
|
+
assert(request, GetRequestRequestStruct);
|
|
75
|
+
return keyring.getRequest(request.params.id);
|
|
76
|
+
}
|
|
77
|
+
case `${KeyringRpcMethod.SubmitRequest}`: {
|
|
78
|
+
assert(request, SubmitRequestRequestStruct);
|
|
79
|
+
return keyring.submitRequest(request.params);
|
|
80
|
+
}
|
|
81
|
+
case `${KeyringRpcMethod.ApproveRequest}`: {
|
|
82
|
+
if (keyring.approveRequest === undefined) {
|
|
83
|
+
throw new MethodNotSupportedError(request.method);
|
|
84
|
+
}
|
|
85
|
+
assert(request, ApproveRequestRequestStruct);
|
|
86
|
+
return keyring.approveRequest(request.params.id, request.params.data);
|
|
87
|
+
}
|
|
88
|
+
case `${KeyringRpcMethod.RejectRequest}`: {
|
|
89
|
+
if (keyring.rejectRequest === undefined) {
|
|
90
|
+
throw new MethodNotSupportedError(request.method);
|
|
91
|
+
}
|
|
92
|
+
assert(request, RejectRequestRequestStruct);
|
|
93
|
+
return keyring.rejectRequest(request.params.id);
|
|
94
|
+
}
|
|
95
|
+
default: {
|
|
96
|
+
throw new MethodNotSupportedError(request.method);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Handles a keyring JSON-RPC request.
|
|
102
|
+
*
|
|
103
|
+
* This function is meant to be used as a handler for Keyring JSON-RPC requests
|
|
104
|
+
* in an Accounts Snap.
|
|
105
|
+
*
|
|
106
|
+
* @param keyring - Keyring instance.
|
|
107
|
+
* @param request - Keyring JSON-RPC request.
|
|
108
|
+
* @returns A promise that resolves to the keyring response.
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts
|
|
111
|
+
* export const onKeyringRequest: OnKeyringRequestHandler = async ({
|
|
112
|
+
* origin,
|
|
113
|
+
* request,
|
|
114
|
+
* }) => {
|
|
115
|
+
* return await handleKeyringRequest(keyring, request);
|
|
116
|
+
* };
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export async function handleKeyringRequest(keyring, request) {
|
|
120
|
+
try {
|
|
121
|
+
return await dispatchRequest(keyring, request);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
const message = error instanceof Error && typeof error.message === 'string'
|
|
125
|
+
? error.message
|
|
126
|
+
: 'An unknown error occurred while handling the keyring request';
|
|
127
|
+
throw new Error(message);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=rpc-handler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-handler.mjs","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Keyring } from '@metamask/keyring-api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n KeyringRpcMethod,\n} from '@metamask/keyring-internal-api';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\nimport type { JsonRpcRequest } from './JsonRpcRequest';\nimport { JsonRpcRequestStruct } from './JsonRpcRequest';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case `${KeyringRpcMethod.ListAccounts}`: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case `${KeyringRpcMethod.GetAccount}`: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.CreateAccount}`: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case `${KeyringRpcMethod.GetAccountBalances}`: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case `${KeyringRpcMethod.FilterAccountChains}`: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case `${KeyringRpcMethod.UpdateAccount}`: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case `${KeyringRpcMethod.DeleteAccount}`: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ExportAccount}`: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case `${KeyringRpcMethod.ListRequests}`: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case `${KeyringRpcMethod.GetRequest}`: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case `${KeyringRpcMethod.SubmitRequest}`: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case `${KeyringRpcMethod.ApproveRequest}`: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case `${KeyringRpcMethod.RejectRequest}`: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.emitSnapKeyringEvent =
|
|
3
|
+
exports.emitSnapKeyringEvent = emitSnapKeyringEvent;
|
|
4
4
|
/**
|
|
5
5
|
* Emit a keyring event from a snap.
|
|
6
6
|
*
|
|
@@ -17,5 +17,4 @@ async function emitSnapKeyringEvent(snap, event, data) {
|
|
|
17
17
|
},
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=snap-utils.js.map
|
|
20
|
+
//# sourceMappingURL=snap-utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-utils.cjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":";;AAYA,oDAYC;AAnBD;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { SnapsProvider } from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\n\nimport type { KeyringEvent } from './events';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent(\n snap: SnapsProvider,\n event: KeyringEvent,\n data: Record<string, Json>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SnapsProvider } from
|
|
2
|
-
import type { Json } from
|
|
3
|
-
import type { KeyringEvent } from
|
|
1
|
+
import type { SnapsProvider } from "@metamask/snaps-sdk";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import type { KeyringEvent } from "./events.cjs";
|
|
4
4
|
/**
|
|
5
5
|
* Emit a keyring event from a snap.
|
|
6
6
|
*
|
|
@@ -9,3 +9,4 @@ import type { KeyringEvent } from './events';
|
|
|
9
9
|
* @param data - The event data.
|
|
10
10
|
*/
|
|
11
11
|
export declare function emitSnapKeyringEvent(snap: SnapsProvider, event: KeyringEvent, data: Record<string, Json>): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=snap-utils.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-utils.d.cts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAE7C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SnapsProvider } from "@metamask/snaps-sdk";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import type { KeyringEvent } from "./events.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Emit a keyring event from a snap.
|
|
6
|
+
*
|
|
7
|
+
* @param snap - The global snap object.
|
|
8
|
+
* @param event - The event name.
|
|
9
|
+
* @param data - The event data.
|
|
10
|
+
*/
|
|
11
|
+
export declare function emitSnapKeyringEvent(snap: SnapsProvider, event: KeyringEvent, data: Record<string, Json>): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=snap-utils.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-utils.d.mts","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,4BAA4B;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAE7C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emit a keyring event from a snap.
|
|
3
|
+
*
|
|
4
|
+
* @param snap - The global snap object.
|
|
5
|
+
* @param event - The event name.
|
|
6
|
+
* @param data - The event data.
|
|
7
|
+
*/
|
|
8
|
+
export async function emitSnapKeyringEvent(snap, event, data) {
|
|
9
|
+
await snap.request({
|
|
10
|
+
method: 'snap_manageAccounts',
|
|
11
|
+
params: {
|
|
12
|
+
method: event,
|
|
13
|
+
params: { ...data },
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=snap-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snap-utils.mjs","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { SnapsProvider } from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\n\nimport type { KeyringEvent } from './events';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent(\n snap: SnapsProvider,\n event: KeyringEvent,\n data: Record<string, Json>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/keyring-snap-sdk",
|
|
3
|
-
"version": "0.0.1-
|
|
3
|
+
"version": "0.0.1-b85bfaa",
|
|
4
4
|
"description": "MetaMask Keyring Snap SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"metamask",
|
|
@@ -14,51 +14,66 @@
|
|
|
14
14
|
"type": "git",
|
|
15
15
|
"url": "https://github.com/MetaMask/accounts.git"
|
|
16
16
|
},
|
|
17
|
-
"
|
|
18
|
-
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"import": {
|
|
20
|
+
"types": "./dist/index.d.mts",
|
|
21
|
+
"default": "./dist/index.mjs"
|
|
22
|
+
},
|
|
23
|
+
"require": {
|
|
24
|
+
"types": "./dist/index.d.cts",
|
|
25
|
+
"default": "./dist/index.cjs"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"main": "./dist/index.cjs",
|
|
30
|
+
"types": "./dist/index.d.cts",
|
|
19
31
|
"files": [
|
|
20
32
|
"dist/"
|
|
21
33
|
],
|
|
22
34
|
"scripts": {
|
|
23
|
-
"build": "
|
|
24
|
-
"build:clean": "
|
|
35
|
+
"build": "ts-bridge --project tsconfig.build.json --no-references",
|
|
36
|
+
"build:clean": "yarn build --clean",
|
|
25
37
|
"build:docs": "typedoc",
|
|
26
|
-
"build:force": "tsc --build tsconfig.build.json --force",
|
|
27
38
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/keyring-snap-sdk",
|
|
28
39
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/keyring-snap-sdk",
|
|
29
40
|
"publish:preview": "yarn npm publish --tag preview",
|
|
30
41
|
"test": "yarn test:source && yarn test:types",
|
|
31
42
|
"test:clean": "jest --clearCache",
|
|
32
43
|
"test:source": "jest && jest-it-up",
|
|
33
|
-
"test:types": "
|
|
34
|
-
"test:verbose": "jest --verbose",
|
|
44
|
+
"test:types": "echo 'No tests to run for now'",
|
|
35
45
|
"test:watch": "jest --watch"
|
|
36
46
|
},
|
|
37
47
|
"dependencies": {
|
|
38
48
|
"@metamask/keyring-internal-api": "0.0.1",
|
|
39
49
|
"@metamask/keyring-utils": "0.0.1",
|
|
40
|
-
"@metamask/snaps-sdk": "^6.
|
|
50
|
+
"@metamask/snaps-sdk": "^6.7.0",
|
|
41
51
|
"@metamask/superstruct": "^3.1.0",
|
|
42
|
-
"@metamask/utils": "^9.1
|
|
43
|
-
"deepmerge": "^4.2.2"
|
|
52
|
+
"@metamask/utils": "^9.2.1",
|
|
53
|
+
"deepmerge": "^4.2.2",
|
|
54
|
+
"webextension-polyfill": "^0.12.0"
|
|
44
55
|
},
|
|
45
56
|
"devDependencies": {
|
|
46
|
-
"@lavamoat/allow-scripts": "^3.
|
|
47
|
-
"@lavamoat/preinstall-always-fail": "^2.
|
|
57
|
+
"@lavamoat/allow-scripts": "^3.2.1",
|
|
58
|
+
"@lavamoat/preinstall-always-fail": "^2.1.0",
|
|
48
59
|
"@metamask/auto-changelog": "^3.4.4",
|
|
49
|
-
"@metamask/keyring-api": "
|
|
50
|
-
"@metamask/providers": "^
|
|
60
|
+
"@metamask/keyring-api": "11.0.0",
|
|
61
|
+
"@metamask/providers": "^18.1.0",
|
|
62
|
+
"@ts-bridge/cli": "^0.6.0",
|
|
51
63
|
"@types/jest": "^29.5.12",
|
|
52
64
|
"@types/node": "^20.12.12",
|
|
53
65
|
"depcheck": "^1.4.7",
|
|
54
|
-
"jest": "^
|
|
66
|
+
"jest": "^29.5.0",
|
|
55
67
|
"jest-it-up": "^3.1.0",
|
|
56
68
|
"rimraf": "^5.0.7",
|
|
57
|
-
"ts-jest": "^
|
|
69
|
+
"ts-jest": "^29.0.5",
|
|
58
70
|
"ts-node": "^10.9.2",
|
|
59
71
|
"tsd": "^0.31.0",
|
|
60
72
|
"typedoc": "^0.25.13",
|
|
61
|
-
"typescript": "~
|
|
73
|
+
"typescript": "~5.6.3"
|
|
74
|
+
},
|
|
75
|
+
"peerDependencies": {
|
|
76
|
+
"@metamask/providers": "^18.1.0"
|
|
62
77
|
},
|
|
63
78
|
"engines": {
|
|
64
79
|
"node": "^18.18 || >=20"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRpcRequest.js","sourceRoot":"","sources":["../src/JsonRpcRequest.ts"],"names":[],"mappings":";;;AAAA,2DAAgE;AAChE,uDAO+B;AAE/B,2CAA6C;AAEhC,QAAA,oBAAoB,GAAG,IAAA,sBAAM,EAAC;IACzC,OAAO,EAAE,IAAA,qBAAO,EAAC,KAAK,CAAC;IACvB,EAAE,EAAE,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,EAAE,IAAA,qBAAO,EAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,EAAE,IAAA,oBAAM,GAAE;IAChB,MAAM,EAAE,IAAA,6BAAa,EACnB,IAAA,mBAAK,EAAC,CAAC,IAAA,mBAAK,EAAC,kBAAU,CAAC,EAAE,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,kBAAU,CAAC,CAAC,CAAC,CACzD;CACF,CAAC,CAAC","sourcesContent":["import { exactOptional, object } from '@metamask/keyring-utils';\nimport {\n array,\n literal,\n number,\n record,\n string,\n union,\n} from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\nimport { JsonStruct } from '@metamask/utils';\n\nexport const JsonRpcRequestStruct = object({\n jsonrpc: literal('2.0'),\n id: union([string(), number(), literal(null)]),\n method: string(),\n params: exactOptional(\n union([array(JsonStruct), record(string(), JsonStruct)]),\n ),\n});\n\n/**\n * JSON-RPC request type.\n */\nexport type JsonRpcRequest = Infer<typeof JsonRpcRequestStruct>;\n"]}
|
package/dist/events.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { KeyringEvent } from '@metamask/keyring-internal-api';
|
package/dist/events.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;AAAA,uEAA8D;AAArD,oHAAA,YAAY,OAAA","sourcesContent":["export { KeyringEvent } from '@metamask/keyring-internal-api';\n"]}
|
package/dist/index.d.ts
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,2CAAyB;AACzB,gDAA8B;AAC9B,+CAA6B","sourcesContent":["export * from './JsonRpcRequest';\nexport * from './events';\nexport * from './rpc-handler';\nexport * from './snap-utils';\n"]}
|
package/dist/rpc-handler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-handler.js","sourceRoot":"","sources":["../src/rpc-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Keyring } from '@metamask/keyring-api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n ExportAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n GetAccountBalancesRequestStruct,\n KeyringRpcMethod,\n} from '@metamask/keyring-internal-api';\nimport { assert } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\nimport type { JsonRpcRequest } from './JsonRpcRequest';\nimport { JsonRpcRequestStruct } from './JsonRpcRequest';\n\n/**\n * Error thrown when a keyring JSON-RPC method is not supported.\n */\nexport class MethodNotSupportedError extends Error {\n constructor(method: string) {\n super(`Method not supported: ${method}`);\n }\n}\n\n/**\n * Inner function that dispatches JSON-RPC request to the associated Keyring\n * methods.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nasync function dispatchRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n // We first have to make sure that the request is a valid JSON-RPC request so\n // we can check its method name.\n assert(request, JsonRpcRequestStruct);\n\n switch (request.method) {\n case KeyringRpcMethod.ListAccounts: {\n assert(request, ListAccountsRequestStruct);\n return keyring.listAccounts();\n }\n\n case KeyringRpcMethod.GetAccount: {\n assert(request, GetAccountRequestStruct);\n return keyring.getAccount(request.params.id);\n }\n\n case KeyringRpcMethod.CreateAccount: {\n assert(request, CreateAccountRequestStruct);\n return keyring.createAccount(request.params.options);\n }\n\n case KeyringRpcMethod.GetAccountBalances: {\n if (keyring.getAccountBalances === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetAccountBalancesRequestStruct);\n return keyring.getAccountBalances(\n request.params.id,\n request.params.assets,\n );\n }\n\n case KeyringRpcMethod.FilterAccountChains: {\n assert(request, FilterAccountChainsStruct);\n return keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case KeyringRpcMethod.UpdateAccount: {\n assert(request, UpdateAccountRequestStruct);\n return keyring.updateAccount(request.params.account);\n }\n\n case KeyringRpcMethod.DeleteAccount: {\n assert(request, DeleteAccountRequestStruct);\n return keyring.deleteAccount(request.params.id);\n }\n\n case KeyringRpcMethod.ExportAccount: {\n if (keyring.exportAccount === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ExportAccountRequestStruct);\n return keyring.exportAccount(request.params.id);\n }\n\n case KeyringRpcMethod.ListRequests: {\n if (keyring.listRequests === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ListRequestsRequestStruct);\n return keyring.listRequests();\n }\n\n case KeyringRpcMethod.GetRequest: {\n if (keyring.getRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, GetRequestRequestStruct);\n return keyring.getRequest(request.params.id);\n }\n\n case KeyringRpcMethod.SubmitRequest: {\n assert(request, SubmitRequestRequestStruct);\n return keyring.submitRequest(request.params);\n }\n\n case KeyringRpcMethod.ApproveRequest: {\n if (keyring.approveRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, ApproveRequestRequestStruct);\n return keyring.approveRequest(request.params.id, request.params.data);\n }\n\n case KeyringRpcMethod.RejectRequest: {\n if (keyring.rejectRequest === undefined) {\n throw new MethodNotSupportedError(request.method);\n }\n assert(request, RejectRequestRequestStruct);\n return keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * This function is meant to be used as a handler for Keyring JSON-RPC requests\n * in an Accounts Snap.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n * @example\n * ```ts\n * export const onKeyringRequest: OnKeyringRequestHandler = async ({\n * origin,\n * request,\n * }) => {\n * return await handleKeyringRequest(keyring, request);\n * };\n * ```\n */\nexport async function handleKeyringRequest(\n keyring: Keyring,\n request: JsonRpcRequest,\n): Promise<Json | void> {\n try {\n return await dispatchRequest(keyring, request);\n } catch (error) {\n const message =\n error instanceof Error && typeof error.message === 'string'\n ? error.message\n : 'An unknown error occurred while handling the keyring request';\n\n throw new Error(message);\n }\n}\n"]}
|
package/dist/snap-utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snap-utils.js","sourceRoot":"","sources":["../src/snap-utils.ts"],"names":[],"mappings":";;;AAKA;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,IAAmB,EACnB,KAAmB,EACnB,IAA0B;IAE1B,MAAM,IAAI,CAAC,OAAO,CAAC;QACjB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE;SACpB;KACF,CAAC,CAAC;AACL,CAAC;AAZD,oDAYC","sourcesContent":["import type { SnapsProvider } from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\n\nimport type { KeyringEvent } from './events';\n\n/**\n * Emit a keyring event from a snap.\n *\n * @param snap - The global snap object.\n * @param event - The event name.\n * @param data - The event data.\n */\nexport async function emitSnapKeyringEvent(\n snap: SnapsProvider,\n event: KeyringEvent,\n data: Record<string, Json>,\n): Promise<void> {\n await snap.request({\n method: 'snap_manageAccounts',\n params: {\n method: event,\n params: { ...data },\n },\n });\n}\n"]}
|