@metamask/keyring-api 0.1.0 → 0.1.2
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 +14 -1
- package/dist/keyring-client.d.ts +2 -2
- package/dist/keyring-client.js +26 -26
- package/dist/keyring-client.js.map +1 -1
- package/dist/keyring-internal-api.d.ts +3 -15
- package/dist/keyring-internal-api.js +1 -13
- package/dist/keyring-internal-api.js.map +1 -1
- package/dist/keyring-rpc-dispatcher.d.ts +3 -3
- package/dist/keyring-rpc-dispatcher.js +17 -8
- package/dist/keyring-rpc-dispatcher.js.map +1 -1
- package/dist/keyring-snap-controller-client.js +3 -4
- package/dist/keyring-snap-controller-client.js.map +1 -1
- package/dist/keyring-snap-rpc-client.d.ts +2 -3
- package/dist/keyring-snap-rpc-client.js +4 -3
- package/dist/keyring-snap-rpc-client.js.map +1 -1
- package/dist/utils.d.ts +14 -1
- package/dist/utils.js +17 -1
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
@@ -6,6 +6,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [0.1.2]
|
10
|
+
### Changed
|
11
|
+
- Update snaps dependencies. ([#21](https://github.com/MetaMask/keyring-api/pull/21))
|
12
|
+
|
13
|
+
## [0.1.1]
|
14
|
+
### Added
|
15
|
+
- Validate snap responses for type correctness. ([#15](https://github.com/MetaMask/keyring-api/pull/15))
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
- Rename RPC handling functions. ([#16](https://github.com/MetaMask/keyring-api/pull/16))
|
19
|
+
|
9
20
|
## [0.1.0] - 2023-06-20
|
10
21
|
### Added
|
11
22
|
- Usage examples to [`README.md`](./README.md).
|
@@ -14,5 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
14
25
|
- SnapController keyring client. It is intended to be used by MetaMask to talk to the snap.
|
15
26
|
- Helper functions to create keyring handler in the snap.
|
16
27
|
|
17
|
-
[Unreleased]: https://github.com/MetaMask/keyring-api/compare/v0.1.
|
28
|
+
[Unreleased]: https://github.com/MetaMask/keyring-api/compare/v0.1.2...HEAD
|
29
|
+
[0.1.2]: https://github.com/MetaMask/keyring-api/compare/v0.1.1...v0.1.2
|
30
|
+
[0.1.1]: https://github.com/MetaMask/keyring-api/compare/v0.1.0...v0.1.1
|
18
31
|
[0.1.0]: https://github.com/MetaMask/keyring-api/releases/tag/v0.1.0
|
package/dist/keyring-client.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import type { Json } from '@metamask/utils';
|
2
2
|
import { Keyring, KeyringAccount, KeyringRequest, SubmitRequestResponse } from './keyring-api';
|
3
|
-
import { InternalRequest } from './keyring-internal-api';
|
3
|
+
import { InternalRequest, InternalResponse } from './keyring-internal-api';
|
4
4
|
export declare type Sender = {
|
5
|
-
send
|
5
|
+
send(request: InternalRequest): Promise<InternalResponse>;
|
6
6
|
};
|
7
7
|
export declare class KeyringClient implements Keyring {
|
8
8
|
#private;
|
package/dist/keyring-client.js
CHANGED
@@ -15,7 +15,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.KeyringClient = void 0;
|
16
16
|
const superstruct_1 = require("superstruct");
|
17
17
|
const uuid_1 = require("uuid");
|
18
|
+
const keyring_api_1 = require("./keyring-api");
|
18
19
|
const keyring_internal_api_1 = require("./keyring-internal-api");
|
20
|
+
const utils_1 = require("./utils");
|
19
21
|
class KeyringClient {
|
20
22
|
/**
|
21
23
|
* Create a new instance of `KeyringClient`.
|
@@ -28,68 +30,68 @@ class KeyringClient {
|
|
28
30
|
__classPrivateFieldSet(this, _KeyringClient_sender, sender, "f");
|
29
31
|
}
|
30
32
|
async listAccounts() {
|
31
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
33
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
32
34
|
method: 'keyring_listAccounts',
|
33
|
-
});
|
35
|
+
}), keyring_internal_api_1.ListAccountsResponseStruct);
|
34
36
|
}
|
35
37
|
async getAccount(id) {
|
36
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
38
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
37
39
|
method: 'keyring_getAccount',
|
38
40
|
params: { id },
|
39
|
-
});
|
41
|
+
}), keyring_internal_api_1.GetAccountResponseStruct);
|
40
42
|
}
|
41
43
|
async createAccount(name, options = null) {
|
42
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
44
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
43
45
|
method: 'keyring_createAccount',
|
44
46
|
params: { name, options },
|
45
|
-
});
|
47
|
+
}), keyring_internal_api_1.CreateAccountResponseStruct);
|
46
48
|
}
|
47
49
|
async filterAccountChains(id, chains) {
|
48
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
50
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
49
51
|
method: 'keyring_filterAccountChains',
|
50
52
|
params: { id, chains },
|
51
|
-
});
|
53
|
+
}), keyring_internal_api_1.FilterAccountChainsResponseStruct);
|
52
54
|
}
|
53
55
|
async updateAccount(account) {
|
54
|
-
await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
56
|
+
(0, superstruct_1.assert)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
55
57
|
method: 'keyring_updateAccount',
|
56
58
|
params: { account },
|
57
|
-
});
|
59
|
+
}), keyring_internal_api_1.UpdateAccountResponseStruct);
|
58
60
|
}
|
59
61
|
async deleteAccount(id) {
|
60
|
-
await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
62
|
+
(0, superstruct_1.assert)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
61
63
|
method: 'keyring_deleteAccount',
|
62
64
|
params: { id },
|
63
|
-
});
|
65
|
+
}), keyring_internal_api_1.DeleteAccountResponseStruct);
|
64
66
|
}
|
65
67
|
async listRequests() {
|
66
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
68
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
67
69
|
method: 'keyring_listRequests',
|
68
|
-
});
|
70
|
+
}), keyring_internal_api_1.ListRequestsResponseStruct);
|
69
71
|
}
|
70
72
|
async getRequest(id) {
|
71
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
73
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
72
74
|
method: 'keyring_getRequest',
|
73
75
|
params: { id },
|
74
|
-
});
|
76
|
+
}), keyring_internal_api_1.GetRequestResponseStruct);
|
75
77
|
}
|
76
78
|
async submitRequest(request) {
|
77
|
-
return await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
79
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
78
80
|
method: 'keyring_submitRequest',
|
79
81
|
params: request,
|
80
|
-
});
|
82
|
+
}), keyring_api_1.SubmitRequestResponseStruct);
|
81
83
|
}
|
82
84
|
async approveRequest(id) {
|
83
|
-
await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
85
|
+
(0, superstruct_1.assert)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
84
86
|
method: 'keyring_approveRequest',
|
85
87
|
params: { id },
|
86
|
-
});
|
88
|
+
}), keyring_internal_api_1.ApproveRequestResponseStruct);
|
87
89
|
}
|
88
90
|
async rejectRequest(id) {
|
89
|
-
await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
91
|
+
(0, superstruct_1.assert)(await __classPrivateFieldGet(this, _KeyringClient_instances, "m", _KeyringClient_send).call(this, {
|
90
92
|
method: 'keyring_rejectRequest',
|
91
93
|
params: { id },
|
92
|
-
});
|
94
|
+
}), keyring_internal_api_1.RejectRequestResponseStruct);
|
93
95
|
}
|
94
96
|
}
|
95
97
|
exports.KeyringClient = KeyringClient;
|
@@ -101,12 +103,10 @@ _KeyringClient_sender = new WeakMap(), _KeyringClient_instances = new WeakSet(),
|
|
101
103
|
* @returns A promise that resolves to the response to the request.
|
102
104
|
*/
|
103
105
|
async function _KeyringClient_send(partial) {
|
104
|
-
|
106
|
+
return await __classPrivateFieldGet(this, _KeyringClient_sender, "f").send({
|
105
107
|
jsonrpc: '2.0',
|
106
108
|
id: (0, uuid_1.v4)(),
|
107
109
|
...partial,
|
108
|
-
};
|
109
|
-
(0, superstruct_1.assert)(request, keyring_internal_api_1.InternalRequestStruct);
|
110
|
-
return await __classPrivateFieldGet(this, _KeyringClient_sender, "f").send(request);
|
110
|
+
});
|
111
111
|
};
|
112
112
|
//# sourceMappingURL=keyring-client.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keyring-client.js","sourceRoot":"","sources":["../src/keyring-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,6CAAqC;AACrC,+BAAkC;
|
1
|
+
{"version":3,"file":"keyring-client.js","sourceRoot":"","sources":["../src/keyring-client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Json } from '@metamask/utils';\nimport { assert } from 'superstruct';\nimport { v4 as uuid } from 'uuid';\n\nimport {\n Keyring,\n KeyringAccount,\n KeyringRequest,\n SubmitRequestResponse,\n SubmitRequestResponseStruct,\n} from './keyring-api';\nimport {\n ApproveRequestResponseStruct,\n CreateAccountResponseStruct,\n DeleteAccountResponseStruct,\n FilterAccountChainsResponseStruct,\n GetAccountResponseStruct,\n GetRequestResponseStruct,\n InternalRequest,\n InternalResponse,\n ListAccountsResponseStruct,\n ListRequestsResponseStruct,\n RejectRequestResponseStruct,\n UpdateAccountResponseStruct,\n} from './keyring-internal-api';\nimport { OmitUnion, strictMask } from './utils';\n\nexport type Sender = {\n send(request: InternalRequest): Promise<InternalResponse>;\n};\n\nexport class KeyringClient implements Keyring {\n #sender: Sender;\n\n /**\n * Create a new instance of `KeyringClient`.\n *\n * @param sender - The `Sender` instance to use to send requests to the snap.\n */\n constructor(sender: Sender) {\n this.#sender = sender;\n }\n\n /**\n * Send a request to the snap and return the response.\n *\n * @param partial - Partial internal request (method and params).\n * @returns A promise that resolves to the response to the request.\n */\n async #send(\n partial: OmitUnion<InternalRequest, 'jsonrpc' | 'id'>,\n ): Promise<InternalResponse> {\n return await this.#sender.send({\n jsonrpc: '2.0',\n id: uuid(),\n ...partial,\n });\n }\n\n async listAccounts(): Promise<KeyringAccount[]> {\n return strictMask(\n await this.#send({\n method: 'keyring_listAccounts',\n }),\n ListAccountsResponseStruct,\n );\n }\n\n async getAccount(id: string): Promise<KeyringAccount> {\n return strictMask(\n await this.#send({\n method: 'keyring_getAccount',\n params: { id },\n }),\n GetAccountResponseStruct,\n );\n }\n\n async createAccount(\n name: string,\n options: Record<string, Json> | null = null,\n ): Promise<KeyringAccount> {\n return strictMask(\n await this.#send({\n method: 'keyring_createAccount',\n params: { name, options },\n }),\n CreateAccountResponseStruct,\n );\n }\n\n async filterAccountChains(id: string, chains: string[]): Promise<string[]> {\n return strictMask(\n await this.#send({\n method: 'keyring_filterAccountChains',\n params: { id, chains },\n }),\n FilterAccountChainsResponseStruct,\n );\n }\n\n async updateAccount(account: KeyringAccount): Promise<void> {\n assert(\n await this.#send({\n method: 'keyring_updateAccount',\n params: { account },\n }),\n UpdateAccountResponseStruct,\n );\n }\n\n async deleteAccount(id: string): Promise<void> {\n assert(\n await this.#send({\n method: 'keyring_deleteAccount',\n params: { id },\n }),\n DeleteAccountResponseStruct,\n );\n }\n\n async listRequests(): Promise<KeyringRequest[]> {\n return strictMask(\n await this.#send({\n method: 'keyring_listRequests',\n }),\n ListRequestsResponseStruct,\n );\n }\n\n async getRequest(id: string): Promise<KeyringRequest> {\n return strictMask(\n await this.#send({\n method: 'keyring_getRequest',\n params: { id },\n }),\n GetRequestResponseStruct,\n );\n }\n\n async submitRequest(request: KeyringRequest): Promise<SubmitRequestResponse> {\n return strictMask(\n await this.#send({\n method: 'keyring_submitRequest',\n params: request,\n }),\n SubmitRequestResponseStruct,\n );\n }\n\n async approveRequest(id: string): Promise<void> {\n assert(\n await this.#send({\n method: 'keyring_approveRequest',\n params: { id },\n }),\n ApproveRequestResponseStruct,\n );\n }\n\n async rejectRequest(id: string): Promise<void> {\n assert(\n await this.#send({\n method: 'keyring_rejectRequest',\n params: { id },\n }),\n RejectRequestResponseStruct,\n );\n }\n}\n"]}
|
@@ -2,23 +2,11 @@ import { Infer } from 'superstruct';
|
|
2
2
|
export declare const ListAccountsRequestStruct: import("superstruct").Struct<{
|
3
3
|
id: string;
|
4
4
|
jsonrpc: "2.0";
|
5
|
-
method: "keyring_listAccounts"
|
5
|
+
method: "keyring_listAccounts";
|
6
6
|
}, {
|
7
7
|
id: import("superstruct").Struct<string, null>;
|
8
8
|
jsonrpc: import("superstruct").Struct<"2.0", "2.0">;
|
9
|
-
method: import("superstruct").Struct<"keyring_listAccounts"
|
10
|
-
keyring_listAccounts: "keyring_listAccounts";
|
11
|
-
keyring_getAccount: "keyring_getAccount";
|
12
|
-
keyring_createAccount: "keyring_createAccount";
|
13
|
-
keyring_filterAccountChains: "keyring_filterAccountChains";
|
14
|
-
keyring_updateAccount: "keyring_updateAccount";
|
15
|
-
keyring_deleteAccount: "keyring_deleteAccount";
|
16
|
-
keyring_listRequests: "keyring_listRequests";
|
17
|
-
keyring_getRequest: "keyring_getRequest";
|
18
|
-
keyring_submitRequest: "keyring_submitRequest";
|
19
|
-
keyring_approveRequest: "keyring_approveRequest";
|
20
|
-
keyring_rejectRequest: "keyring_rejectRequest";
|
21
|
-
}>;
|
9
|
+
method: import("superstruct").Struct<"keyring_listAccounts", "keyring_listAccounts">;
|
22
10
|
}>;
|
23
11
|
export declare type ListAccountsRequest = Infer<typeof ListAccountsRequestStruct>;
|
24
12
|
export declare const ListAccountsResponseStruct: import("superstruct").Struct<{
|
@@ -449,7 +437,7 @@ export declare type RejectRequestResponse = Infer<typeof RejectRequestResponseSt
|
|
449
437
|
export declare const InternalRequestStruct: import("superstruct").Struct<{
|
450
438
|
id: string;
|
451
439
|
jsonrpc: "2.0";
|
452
|
-
method: "keyring_listAccounts"
|
440
|
+
method: "keyring_listAccounts";
|
453
441
|
} | {
|
454
442
|
id: string;
|
455
443
|
jsonrpc: "2.0";
|
@@ -10,19 +10,7 @@ const utils_2 = require("./utils");
|
|
10
10
|
exports.ListAccountsRequestStruct = (0, superstruct_1.object)({
|
11
11
|
id: utils_2.UuidStruct,
|
12
12
|
jsonrpc: (0, superstruct_1.literal)('2.0'),
|
13
|
-
method: (0, superstruct_1.
|
14
|
-
'keyring_listAccounts',
|
15
|
-
'keyring_getAccount',
|
16
|
-
'keyring_createAccount',
|
17
|
-
'keyring_filterAccountChains',
|
18
|
-
'keyring_updateAccount',
|
19
|
-
'keyring_deleteAccount',
|
20
|
-
'keyring_listRequests',
|
21
|
-
'keyring_getRequest',
|
22
|
-
'keyring_submitRequest',
|
23
|
-
'keyring_approveRequest',
|
24
|
-
'keyring_rejectRequest',
|
25
|
-
]),
|
13
|
+
method: (0, superstruct_1.literal)('keyring_listAccounts'),
|
26
14
|
});
|
27
15
|
exports.ListAccountsResponseStruct = (0, superstruct_1.array)(keyring_api_1.KeyringAccountStruct);
|
28
16
|
// ----------------------------------------------------------------------------
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keyring-internal-api.js","sourceRoot":"","sources":["../src/keyring-internal-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { JsonStruct } from '@metamask/utils';\nimport {\n array,\n enums,\n Infer,\n literal,\n never,\n nullable,\n object,\n record,\n string,\n union,\n} from 'superstruct';\n\nimport {\n KeyringAccountStruct,\n KeyringRequestStruct,\n SubmitRequestResponseStruct,\n} from './keyring-api';\nimport { UuidStruct } from './utils';\n\n// ----------------------------------------------------------------------------\n// List accounts\n\nexport const ListAccountsRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: enums([\n 'keyring_listAccounts',\n 'keyring_getAccount',\n 'keyring_createAccount',\n 'keyring_filterAccountChains',\n 'keyring_updateAccount',\n 'keyring_deleteAccount',\n 'keyring_listRequests',\n 'keyring_getRequest',\n 'keyring_submitRequest',\n 'keyring_approveRequest',\n 'keyring_rejectRequest',\n ]),\n});\n\nexport type ListAccountsRequest = Infer<typeof ListAccountsRequestStruct>;\n\nexport const ListAccountsResponseStruct = array(KeyringAccountStruct);\n\nexport type ListAccountsResponse = Infer<typeof ListAccountsResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Get account\n\nexport const GetAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_getAccount'),\n params: object({\n id: string(),\n }),\n});\n\nexport type GetAccountRequest = Infer<typeof GetAccountRequestStruct>;\n\nexport const GetAccountResponseStruct = KeyringAccountStruct;\n\nexport type GetAccountResponse = Infer<typeof GetAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Create account\n\nexport const CreateAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_createAccount'),\n params: object({\n name: string(),\n options: nullable(record(string(), JsonStruct)),\n }),\n});\n\nexport type CreateAccountRequest = Infer<typeof CreateAccountRequestStruct>;\n\nexport const CreateAccountResponseStruct = KeyringAccountStruct;\n\nexport type CreateAccountResponse = Infer<typeof CreateAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Filter account chains\n\nexport const FilterAccountChainsStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_filterAccountChains'),\n params: object({\n id: string(),\n chains: array(string()),\n }),\n});\n\nexport type FilterAccountChainsRequest = Infer<\n typeof FilterAccountChainsStruct\n>;\n\nexport const FilterAccountChainsResponseStruct = array(string());\n\nexport type FilterAccountChainsResponse = Infer<\n typeof FilterAccountChainsResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n// Update account\n\nexport const UpdateAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_updateAccount'),\n params: object({\n account: KeyringAccountStruct,\n }),\n});\n\nexport type UpdateAccountRequest = Infer<typeof UpdateAccountRequestStruct>;\n\nexport const UpdateAccountResponseStruct = nullable(never());\n\nexport type UpdateAccountResponse = Infer<typeof UpdateAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Delete account\n\nexport const DeleteAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_deleteAccount'),\n params: object({\n id: string(),\n }),\n});\n\nexport type DeleteAccountRequest = Infer<typeof DeleteAccountRequestStruct>;\n\nexport const DeleteAccountResponseStruct = nullable(never());\n\nexport type DeleteAccountResponse = Infer<typeof DeleteAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// List requests\n\nexport const ListRequestsRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_listRequests'),\n});\n\nexport type ListRequestsRequest = Infer<typeof ListRequestsRequestStruct>;\n\nexport const ListRequestsResponseStruct = array(KeyringRequestStruct);\n\nexport type ListRequestsResponse = Infer<typeof ListRequestsResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Get request\n\nexport const GetRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_getRequest'),\n params: object({\n id: string(),\n }),\n});\n\nexport type GetRequestRequest = Infer<typeof GetRequestRequestStruct>;\n\nexport const GetRequestResponseStruct = KeyringRequestStruct;\n\nexport type GetRequestResponse = Infer<typeof GetRequestResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Submit request\n\nexport const SubmitRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_submitRequest'),\n params: KeyringRequestStruct,\n});\n\nexport type SubmitRequestRequest = Infer<typeof SubmitRequestRequestStruct>;\n\n// The response type is already defined in the `keyring-api.ts` file since it\n// is used by the `Keyring` interface.\n\n// ----------------------------------------------------------------------------\n// Approve request\n\nexport const ApproveRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_approveRequest'),\n params: object({\n id: string(),\n }),\n});\n\nexport type ApproveRequestRequest = Infer<typeof ApproveRequestRequestStruct>;\n\nexport const ApproveRequestResponseStruct = nullable(never());\n\nexport type ApproveRequestResponse = Infer<typeof ApproveRequestResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Reject request\n\nexport const RejectRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_rejectRequest'),\n params: object({\n id: string(),\n }),\n});\n\nexport type RejectRequestRequest = Infer<typeof RejectRequestRequestStruct>;\n\nexport const RejectRequestResponseStruct = nullable(never());\n\nexport type RejectRequestResponse = Infer<typeof RejectRequestResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Internal request\n\nexport const InternalRequestStruct = union([\n ListAccountsRequestStruct,\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n FilterAccountChainsStruct,\n UpdateAccountRequestStruct,\n DeleteAccountRequestStruct,\n ListRequestsRequestStruct,\n GetRequestRequestStruct,\n SubmitRequestRequestStruct,\n ApproveRequestRequestStruct,\n RejectRequestRequestStruct,\n]);\n\nexport type InternalRequest = Infer<typeof InternalRequestStruct>;\n\n// ----------------------------------------------------------------------------\n// Internal response\n\nexport const InternalResponseStruct = union([\n ListAccountsResponseStruct,\n GetAccountResponseStruct,\n CreateAccountResponseStruct,\n FilterAccountChainsResponseStruct,\n UpdateAccountResponseStruct,\n DeleteAccountResponseStruct,\n ListRequestsResponseStruct,\n GetRequestResponseStruct,\n SubmitRequestResponseStruct,\n ApproveRequestResponseStruct,\n RejectRequestResponseStruct,\n]);\n\nexport type InternalResponse = Infer<typeof InternalResponseStruct>;\n"]}
|
1
|
+
{"version":3,"file":"keyring-internal-api.js","sourceRoot":"","sources":["../src/keyring-internal-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { JsonStruct } from '@metamask/utils';\nimport {\n array,\n Infer,\n literal,\n never,\n nullable,\n object,\n record,\n string,\n union,\n} from 'superstruct';\n\nimport {\n KeyringAccountStruct,\n KeyringRequestStruct,\n SubmitRequestResponseStruct,\n} from './keyring-api';\nimport { UuidStruct } from './utils';\n\n// ----------------------------------------------------------------------------\n// List accounts\n\nexport const ListAccountsRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_listAccounts'),\n});\n\nexport type ListAccountsRequest = Infer<typeof ListAccountsRequestStruct>;\n\nexport const ListAccountsResponseStruct = array(KeyringAccountStruct);\n\nexport type ListAccountsResponse = Infer<typeof ListAccountsResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Get account\n\nexport const GetAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_getAccount'),\n params: object({\n id: string(),\n }),\n});\n\nexport type GetAccountRequest = Infer<typeof GetAccountRequestStruct>;\n\nexport const GetAccountResponseStruct = KeyringAccountStruct;\n\nexport type GetAccountResponse = Infer<typeof GetAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Create account\n\nexport const CreateAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_createAccount'),\n params: object({\n name: string(),\n options: nullable(record(string(), JsonStruct)),\n }),\n});\n\nexport type CreateAccountRequest = Infer<typeof CreateAccountRequestStruct>;\n\nexport const CreateAccountResponseStruct = KeyringAccountStruct;\n\nexport type CreateAccountResponse = Infer<typeof CreateAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Filter account chains\n\nexport const FilterAccountChainsStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_filterAccountChains'),\n params: object({\n id: string(),\n chains: array(string()),\n }),\n});\n\nexport type FilterAccountChainsRequest = Infer<\n typeof FilterAccountChainsStruct\n>;\n\nexport const FilterAccountChainsResponseStruct = array(string());\n\nexport type FilterAccountChainsResponse = Infer<\n typeof FilterAccountChainsResponseStruct\n>;\n\n// ----------------------------------------------------------------------------\n// Update account\n\nexport const UpdateAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_updateAccount'),\n params: object({\n account: KeyringAccountStruct,\n }),\n});\n\nexport type UpdateAccountRequest = Infer<typeof UpdateAccountRequestStruct>;\n\nexport const UpdateAccountResponseStruct = nullable(never());\n\nexport type UpdateAccountResponse = Infer<typeof UpdateAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Delete account\n\nexport const DeleteAccountRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_deleteAccount'),\n params: object({\n id: string(),\n }),\n});\n\nexport type DeleteAccountRequest = Infer<typeof DeleteAccountRequestStruct>;\n\nexport const DeleteAccountResponseStruct = nullable(never());\n\nexport type DeleteAccountResponse = Infer<typeof DeleteAccountResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// List requests\n\nexport const ListRequestsRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_listRequests'),\n});\n\nexport type ListRequestsRequest = Infer<typeof ListRequestsRequestStruct>;\n\nexport const ListRequestsResponseStruct = array(KeyringRequestStruct);\n\nexport type ListRequestsResponse = Infer<typeof ListRequestsResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Get request\n\nexport const GetRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_getRequest'),\n params: object({\n id: string(),\n }),\n});\n\nexport type GetRequestRequest = Infer<typeof GetRequestRequestStruct>;\n\nexport const GetRequestResponseStruct = KeyringRequestStruct;\n\nexport type GetRequestResponse = Infer<typeof GetRequestResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Submit request\n\nexport const SubmitRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_submitRequest'),\n params: KeyringRequestStruct,\n});\n\nexport type SubmitRequestRequest = Infer<typeof SubmitRequestRequestStruct>;\n\n// The response type is already defined in the `keyring-api.ts` file since it\n// is used by the `Keyring` interface.\n\n// ----------------------------------------------------------------------------\n// Approve request\n\nexport const ApproveRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_approveRequest'),\n params: object({\n id: string(),\n }),\n});\n\nexport type ApproveRequestRequest = Infer<typeof ApproveRequestRequestStruct>;\n\nexport const ApproveRequestResponseStruct = nullable(never());\n\nexport type ApproveRequestResponse = Infer<typeof ApproveRequestResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Reject request\n\nexport const RejectRequestRequestStruct = object({\n id: UuidStruct,\n jsonrpc: literal('2.0'),\n method: literal('keyring_rejectRequest'),\n params: object({\n id: string(),\n }),\n});\n\nexport type RejectRequestRequest = Infer<typeof RejectRequestRequestStruct>;\n\nexport const RejectRequestResponseStruct = nullable(never());\n\nexport type RejectRequestResponse = Infer<typeof RejectRequestResponseStruct>;\n\n// ----------------------------------------------------------------------------\n// Internal request\n\nexport const InternalRequestStruct = union([\n ListAccountsRequestStruct,\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n FilterAccountChainsStruct,\n UpdateAccountRequestStruct,\n DeleteAccountRequestStruct,\n ListRequestsRequestStruct,\n GetRequestRequestStruct,\n SubmitRequestRequestStruct,\n ApproveRequestRequestStruct,\n RejectRequestRequestStruct,\n]);\n\nexport type InternalRequest = Infer<typeof InternalRequestStruct>;\n\n// ----------------------------------------------------------------------------\n// Internal response\n\nexport const InternalResponseStruct = union([\n ListAccountsResponseStruct,\n GetAccountResponseStruct,\n CreateAccountResponseStruct,\n FilterAccountChainsResponseStruct,\n UpdateAccountResponseStruct,\n DeleteAccountResponseStruct,\n ListRequestsResponseStruct,\n GetRequestResponseStruct,\n SubmitRequestResponseStruct,\n ApproveRequestResponseStruct,\n RejectRequestResponseStruct,\n]);\n\nexport type InternalResponse = Infer<typeof InternalResponseStruct>;\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { OnRpcRequestHandler } from '@metamask/snaps-utils';
|
2
|
-
import type
|
2
|
+
import { type Json, JsonRpcRequest } from '@metamask/utils';
|
3
3
|
import type { Keyring } from './keyring-api';
|
4
4
|
/**
|
5
5
|
* Error thrown when a keyring JSON-RPC method is not supported.
|
@@ -19,7 +19,7 @@ export declare class MethodNotSupportedError extends Error {
|
|
19
19
|
* @param handlers - Handlers to chain.
|
20
20
|
* @returns A handler that chains the given handlers.
|
21
21
|
*/
|
22
|
-
export declare function
|
22
|
+
export declare function buildHandlersChain(...handlers: OnRpcRequestHandler[]): OnRpcRequestHandler;
|
23
23
|
/**
|
24
24
|
* Handles a keyring JSON-RPC request.
|
25
25
|
*
|
@@ -27,4 +27,4 @@ export declare function chainHandlers(...handlers: OnRpcRequestHandler[]): OnRpc
|
|
27
27
|
* @param request - Keyring JSON-RPC request.
|
28
28
|
* @returns A promise that resolves to the keyring response.
|
29
29
|
*/
|
30
|
-
export declare function
|
30
|
+
export declare function handleKeyringRequest(keyring: Keyring, request: JsonRpcRequest): Promise<Json | void>;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.handleKeyringRequest = exports.buildHandlersChain = exports.MethodNotSupportedError = void 0;
|
4
|
+
const utils_1 = require("@metamask/utils");
|
4
5
|
const superstruct_1 = require("superstruct");
|
5
6
|
const keyring_internal_api_1 = require("./keyring-internal-api");
|
6
7
|
/**
|
@@ -24,7 +25,7 @@ exports.MethodNotSupportedError = MethodNotSupportedError;
|
|
24
25
|
* @param handlers - Handlers to chain.
|
25
26
|
* @returns A handler that chains the given handlers.
|
26
27
|
*/
|
27
|
-
function
|
28
|
+
function buildHandlersChain(...handlers) {
|
28
29
|
return async ({ origin, request }) => {
|
29
30
|
for (const handler of handlers) {
|
30
31
|
try {
|
@@ -40,7 +41,7 @@ function chainHandlers(...handlers) {
|
|
40
41
|
throw new MethodNotSupportedError(request.method);
|
41
42
|
};
|
42
43
|
}
|
43
|
-
exports.
|
44
|
+
exports.buildHandlersChain = buildHandlersChain;
|
44
45
|
/**
|
45
46
|
* Handles a keyring JSON-RPC request.
|
46
47
|
*
|
@@ -48,10 +49,15 @@ exports.chainHandlers = chainHandlers;
|
|
48
49
|
* @param request - Keyring JSON-RPC request.
|
49
50
|
* @returns A promise that resolves to the keyring response.
|
50
51
|
*/
|
51
|
-
async function
|
52
|
+
async function handleKeyringRequest(keyring, request) {
|
53
|
+
// We first have to make sure that the request is a valid JSON-RPC request so
|
54
|
+
// we can check its method name.
|
55
|
+
(0, superstruct_1.assert)(request, utils_1.JsonRpcRequestStruct);
|
52
56
|
switch (request.method) {
|
53
|
-
case 'keyring_listAccounts':
|
57
|
+
case 'keyring_listAccounts': {
|
58
|
+
(0, superstruct_1.assert)(request, keyring_internal_api_1.ListAccountsRequestStruct);
|
54
59
|
return await keyring.listAccounts();
|
60
|
+
}
|
55
61
|
case 'keyring_getAccount': {
|
56
62
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.GetAccountRequestStruct);
|
57
63
|
return await keyring.getAccount(request.params.id);
|
@@ -72,8 +78,10 @@ async function keyringRpcDispatcher(keyring, request) {
|
|
72
78
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.DeleteAccountRequestStruct);
|
73
79
|
return await keyring.deleteAccount(request.params.id);
|
74
80
|
}
|
75
|
-
case 'keyring_listRequests':
|
81
|
+
case 'keyring_listRequests': {
|
82
|
+
(0, superstruct_1.assert)(request, keyring_internal_api_1.ListRequestsRequestStruct);
|
76
83
|
return await keyring.listRequests();
|
84
|
+
}
|
77
85
|
case 'keyring_getRequest': {
|
78
86
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.GetRequestRequestStruct);
|
79
87
|
return await keyring.getRequest(request.params.id);
|
@@ -90,9 +98,10 @@ async function keyringRpcDispatcher(keyring, request) {
|
|
90
98
|
(0, superstruct_1.assert)(request, keyring_internal_api_1.RejectRequestRequestStruct);
|
91
99
|
return await keyring.rejectRequest(request.params.id);
|
92
100
|
}
|
93
|
-
default:
|
101
|
+
default: {
|
94
102
|
throw new MethodNotSupportedError(request.method);
|
103
|
+
}
|
95
104
|
}
|
96
105
|
}
|
97
|
-
exports.
|
106
|
+
exports.handleKeyringRequest = handleKeyringRequest;
|
98
107
|
//# sourceMappingURL=keyring-rpc-dispatcher.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keyring-rpc-dispatcher.js","sourceRoot":"","sources":["../src/keyring-rpc-dispatcher.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"keyring-rpc-dispatcher.js","sourceRoot":"","sources":["../src/keyring-rpc-dispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OnRpcRequestHandler } from '@metamask/snaps-utils';\nimport {\n JsonRpcRequestStruct,\n type Json,\n JsonRpcRequest,\n} from '@metamask/utils';\nimport { assert } from 'superstruct';\n\nimport type { Keyring } from './keyring-api';\nimport {\n GetAccountRequestStruct,\n CreateAccountRequestStruct,\n ApproveRequestRequestStruct,\n DeleteAccountRequestStruct,\n GetRequestRequestStruct,\n RejectRequestRequestStruct,\n SubmitRequestRequestStruct,\n UpdateAccountRequestStruct,\n FilterAccountChainsStruct,\n ListAccountsRequestStruct,\n ListRequestsRequestStruct,\n} from './keyring-internal-api';\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 * Build a chain of handlers for a JSON-RPC request.\n *\n * If a handler throws a MethodNotSupportedError, the next handler in the chain\n * is called. If all handlers throw a MethodNotSupportedError, the error is re-\n * thrown.\n *\n * Any other error thrown by a handler is re-thrown.\n *\n * @param handlers - Handlers to chain.\n * @returns A handler that chains the given handlers.\n */\nexport function buildHandlersChain(\n ...handlers: OnRpcRequestHandler[]\n): OnRpcRequestHandler {\n return async ({ origin, request }) => {\n for (const handler of handlers) {\n try {\n return await handler({ origin, request });\n } catch (error) {\n if (!(error instanceof MethodNotSupportedError)) {\n throw error;\n }\n }\n }\n\n // All handlers failed to handle the request.\n throw new MethodNotSupportedError(request.method);\n };\n}\n\n/**\n * Handles a keyring JSON-RPC request.\n *\n * @param keyring - Keyring instance.\n * @param request - Keyring JSON-RPC request.\n * @returns A promise that resolves to the keyring response.\n */\nexport async function handleKeyringRequest(\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 switch (request.method) {\n case 'keyring_listAccounts': {\n assert(request, ListAccountsRequestStruct);\n return await keyring.listAccounts();\n }\n\n case 'keyring_getAccount': {\n assert(request, GetAccountRequestStruct);\n return await keyring.getAccount(request.params.id);\n }\n\n case 'keyring_createAccount': {\n assert(request, CreateAccountRequestStruct);\n return await keyring.createAccount(\n request.params.name,\n request.params.options,\n );\n }\n\n case 'keyring_filterAccountChains': {\n assert(request, FilterAccountChainsStruct);\n return await keyring.filterAccountChains(\n request.params.id,\n request.params.chains,\n );\n }\n\n case 'keyring_updateAccount': {\n assert(request, UpdateAccountRequestStruct);\n return await keyring.updateAccount(request.params.account);\n }\n\n case 'keyring_deleteAccount': {\n assert(request, DeleteAccountRequestStruct);\n return await keyring.deleteAccount(request.params.id);\n }\n\n case 'keyring_listRequests': {\n assert(request, ListRequestsRequestStruct);\n return await keyring.listRequests();\n }\n\n case 'keyring_getRequest': {\n assert(request, GetRequestRequestStruct);\n return await keyring.getRequest(request.params.id);\n }\n\n case 'keyring_submitRequest': {\n assert(request, SubmitRequestRequestStruct);\n return await keyring.submitRequest(request.params);\n }\n\n case 'keyring_approveRequest': {\n assert(request, ApproveRequestRequestStruct);\n return await keyring.approveRequest(request.params.id);\n }\n\n case 'keyring_rejectRequest': {\n assert(request, RejectRequestRequestStruct);\n return await keyring.rejectRequest(request.params.id);\n }\n\n default: {\n throw new MethodNotSupportedError(request.method);\n }\n }\n}\n"]}
|
@@ -13,9 +13,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
13
13
|
var _SnapControllerSender_snapId, _SnapControllerSender_origin, _SnapControllerSender_controller, _SnapControllerSender_handler, _KeyringSnapControllerClient_controller;
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
15
|
exports.KeyringSnapControllerClient = void 0;
|
16
|
-
const superstruct_1 = require("superstruct");
|
17
16
|
const keyring_client_1 = require("./keyring-client");
|
18
17
|
const keyring_internal_api_1 = require("./keyring-internal-api");
|
18
|
+
const utils_1 = require("./utils");
|
19
19
|
/**
|
20
20
|
* Implementation of the `Sender` interface that can be used to send requests
|
21
21
|
* to a snap through a `SnapController`.
|
@@ -46,13 +46,12 @@ class SnapControllerSender {
|
|
46
46
|
* @returns A promise that resolves to the response of the request.
|
47
47
|
*/
|
48
48
|
async send(request) {
|
49
|
-
(0,
|
50
|
-
return (await __classPrivateFieldGet(this, _SnapControllerSender_controller, "f").handleRequest({
|
49
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _SnapControllerSender_controller, "f").handleRequest({
|
51
50
|
snapId: __classPrivateFieldGet(this, _SnapControllerSender_snapId, "f"),
|
52
51
|
origin: __classPrivateFieldGet(this, _SnapControllerSender_origin, "f"),
|
53
52
|
handler: __classPrivateFieldGet(this, _SnapControllerSender_handler, "f"),
|
54
53
|
request,
|
55
|
-
}));
|
54
|
+
}), keyring_internal_api_1.InternalResponseStruct);
|
56
55
|
}
|
57
56
|
}
|
58
57
|
_SnapControllerSender_snapId = new WeakMap(), _SnapControllerSender_origin = new WeakMap(), _SnapControllerSender_controller = new WeakMap(), _SnapControllerSender_handler = new WeakMap();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keyring-snap-controller-client.js","sourceRoot":"","sources":["../src/keyring-snap-controller-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,
|
1
|
+
{"version":3,"file":"keyring-snap-controller-client.js","sourceRoot":"","sources":["../src/keyring-snap-controller-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,qDAAyD;AACzD,iEAIgC;AAChC,mCAAqC;AAErC;;;GAGG;AACH,MAAM,oBAAoB;IASxB;;;;;;;OAOG;IACH,YACE,UAAe,EACf,MAAc,EACd,MAAc,EACd,OAAoB;QApBtB,+CAAgB;QAEhB,+CAAgB;QAEhB,mDAA4B;QAE5B,gDAAsB;QAgBpB,uBAAA,IAAI,oCAAe,UAAU,MAAA,CAAC;QAC9B,uBAAA,IAAI,gCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,gCAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,iCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,OAAO,IAAA,kBAAU,EACf,MAAM,uBAAA,IAAI,wCAAY,CAAC,aAAa,CAAC;YACnC,MAAM,EAAE,uBAAA,IAAI,oCAA2B;YACvC,MAAM,EAAE,uBAAA,IAAI,oCAAQ;YACpB,OAAO,EAAE,uBAAA,IAAI,qCAAS;YACtB,OAAO;SACR,CAAC,EACF,6CAAsB,CACvB,CAAC;IACJ,CAAC;CACF;;AAED;;;GAGG;AACH,MAAa,2BAA4B,SAAQ,8BAAa;IAG5D;;;;;;;;;;;;OAYG;IACH,YAAY,EACV,UAAU,EACV,MAAM,GAAG,WAAW,EACpB,MAAM,GAAG,UAAU,EACnB,OAAO,GAAG,cAA6B,GAMxC;QACC,KAAK,CAAC,IAAI,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QA1BvE,0DAA4B;QA2B1B,uBAAA,IAAI,2CAAe,UAAU,MAAA,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,2BAA2B,CAAC;YACrC,UAAU,EAAE,uBAAA,IAAI,+CAAY;YAC5B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;AA7CD,kEA6CC","sourcesContent":["import type { SnapController } from '@metamask/snaps-controllers';\nimport type { HandlerType, ValidatedSnapId } from '@metamask/snaps-utils';\n\nimport { KeyringClient, Sender } from './keyring-client';\nimport {\n InternalRequest,\n InternalResponse,\n InternalResponseStruct,\n} from './keyring-internal-api';\nimport { strictMask } from './utils';\n\n/**\n * Implementation of the `Sender` interface that can be used to send requests\n * to a snap through a `SnapController`.\n */\nclass SnapControllerSender implements Sender {\n #snapId: string;\n\n #origin: string;\n\n #controller: SnapController;\n\n #handler: HandlerType;\n\n /**\n * Create a new instance of `SnapControllerSender`.\n *\n * @param controller - The `SnapController` instance to send requests to.\n * @param snapId - The ID of the snap to use.\n * @param origin - The sender's origin.\n * @param handler - The handler type.\n */\n constructor(\n controller: any,\n snapId: string,\n origin: string,\n handler: HandlerType,\n ) {\n this.#controller = controller;\n this.#snapId = snapId;\n this.#origin = origin;\n this.#handler = handler;\n }\n\n /**\n * Send a request to the snap and return the response.\n *\n * @param request - JSON-RPC request to send to the snap.\n * @returns A promise that resolves to the response of the request.\n */\n async send(request: InternalRequest): Promise<InternalResponse> {\n return strictMask(\n await this.#controller.handleRequest({\n snapId: this.#snapId as ValidatedSnapId,\n origin: this.#origin,\n handler: this.#handler,\n request,\n }),\n InternalResponseStruct,\n );\n }\n}\n\n/**\n * A `KeyringClient` that allows the communication with a snap through the\n * `SnapController`.\n */\nexport class KeyringSnapControllerClient extends KeyringClient {\n #controller: SnapController;\n\n /**\n * Create a new instance of `KeyringSnapControllerClient`.\n *\n * The `handlerType` argument has a hard-coded default `string` value instead\n * of a `HandlerType` value to prevent the `@metamask/snaps-utils` module\n * from being required at runtime.\n *\n * @param args - Constructor arguments.\n * @param args.controller - The `SnapController` instance to use.\n * @param args.snapId - The ID of the snap to use (default: `'undefined'`).\n * @param args.origin - The sender's origin (default: `'metamask'`).\n * @param args.handler - The handler type (default: `'onRpcRequest'`).\n */\n constructor({\n controller,\n snapId = 'undefined',\n origin = 'metamask',\n handler = 'onRpcRequest' as HandlerType,\n }: {\n controller: SnapController;\n snapId?: string;\n origin?: string;\n handler?: HandlerType;\n }) {\n super(new SnapControllerSender(controller, snapId, origin, handler));\n this.#controller = controller;\n }\n\n /**\n * Create a new instance of `KeyringSnapControllerClient` with the specified\n * `snapId`.\n *\n * @param snapId - The ID of the snap to use in the new instance.\n * @returns A new instance of `KeyringSnapControllerClient` with the\n * specified snap ID.\n */\n withSnapId(snapId: string): KeyringSnapControllerClient {\n return new KeyringSnapControllerClient({\n controller: this.#controller,\n snapId,\n });\n }\n}\n"]}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import type { MetaMaskInpageProvider } from '@metamask/providers';
|
2
|
-
import type { Json } from '@metamask/utils';
|
3
2
|
import { KeyringClient, Sender } from './keyring-client';
|
4
|
-
import type
|
3
|
+
import { type InternalRequest, InternalResponse } from './keyring-internal-api';
|
5
4
|
/**
|
6
5
|
* Implementation of the `Sender` interface that can be used to send requests
|
7
6
|
* to a snap through the snap JSON-RPC API.
|
@@ -21,7 +20,7 @@ export declare class SnapRpcSender implements Sender {
|
|
21
20
|
* @param request - The JSON-RPC request to send to the snap.
|
22
21
|
* @returns A promise that resolves to the response of the request.
|
23
22
|
*/
|
24
|
-
send
|
23
|
+
send(request: InternalRequest): Promise<InternalResponse>;
|
25
24
|
}
|
26
25
|
/**
|
27
26
|
* A `KeyringClient` that allows the communication with a snap through the snap
|
@@ -14,6 +14,8 @@ var _SnapRpcSender_origin, _SnapRpcSender_provider;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
15
|
exports.KeyringSnapRpcClient = exports.SnapRpcSender = void 0;
|
16
16
|
const keyring_client_1 = require("./keyring-client");
|
17
|
+
const keyring_internal_api_1 = require("./keyring-internal-api");
|
18
|
+
const utils_1 = require("./utils");
|
17
19
|
/**
|
18
20
|
* Implementation of the `Sender` interface that can be used to send requests
|
19
21
|
* to a snap through the snap JSON-RPC API.
|
@@ -38,14 +40,13 @@ class SnapRpcSender {
|
|
38
40
|
* @returns A promise that resolves to the response of the request.
|
39
41
|
*/
|
40
42
|
async send(request) {
|
41
|
-
|
43
|
+
return (0, utils_1.strictMask)(await __classPrivateFieldGet(this, _SnapRpcSender_provider, "f").request({
|
42
44
|
method: 'wallet_invokeSnap',
|
43
45
|
params: {
|
44
46
|
snapId: __classPrivateFieldGet(this, _SnapRpcSender_origin, "f"),
|
45
47
|
request,
|
46
48
|
},
|
47
|
-
});
|
48
|
-
return response;
|
49
|
+
}), keyring_internal_api_1.InternalResponseStruct);
|
49
50
|
}
|
50
51
|
}
|
51
52
|
exports.SnapRpcSender = SnapRpcSender;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keyring-snap-rpc-client.js","sourceRoot":"","sources":["../src/keyring-snap-rpc-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"keyring-snap-rpc-client.js","sourceRoot":"","sources":["../src/keyring-snap-rpc-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,qDAAyD;AACzD,iEAIgC;AAChC,mCAAqC;AAErC;;;GAGG;AACH,MAAa,aAAa;IAKxB;;;;;OAKG;IACH,YAAY,MAAc,EAAE,QAAgC;QAV5D,wCAAgB;QAEhB,0CAAkC;QAShC,uBAAA,IAAI,yBAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,2BAAa,QAAQ,MAAA,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,OAAO,IAAA,kBAAU,EACf,MAAM,uBAAA,IAAI,+BAAU,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,mBAAmB;YAC3B,MAAM,EAAE;gBACN,MAAM,EAAE,uBAAA,IAAI,6BAAQ;gBACpB,OAAO;aACR;SACF,CAAC,EACF,6CAAsB,CACvB,CAAC;IACJ,CAAC;CACF;AAlCD,sCAkCC;;AAED;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,8BAAa;IACrD;;;;;OAKG;IACH,YAAY,MAAc,EAAE,QAAgC;QAC1D,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAVD,oDAUC","sourcesContent":["import type { MetaMaskInpageProvider } from '@metamask/providers';\n\nimport { KeyringClient, Sender } from './keyring-client';\nimport {\n InternalResponseStruct,\n type InternalRequest,\n InternalResponse,\n} from './keyring-internal-api';\nimport { strictMask } from './utils';\n\n/**\n * Implementation of the `Sender` interface that can be used to send requests\n * to a snap through the snap JSON-RPC API.\n */\nexport class SnapRpcSender implements Sender {\n #origin: string;\n\n #provider: MetaMaskInpageProvider;\n\n /**\n * Create a new instance of `SnapRpcSender`.\n *\n * @param origin - The caller's origin.\n * @param provider - The `MetaMaskInpageProvider` instance to use.\n */\n constructor(origin: string, provider: MetaMaskInpageProvider) {\n this.#origin = origin;\n this.#provider = provider;\n }\n\n /**\n * Send a request to the snap and return the response.\n *\n * @param request - The JSON-RPC request to send to the snap.\n * @returns A promise that resolves to the response of the request.\n */\n async send(request: InternalRequest): Promise<InternalResponse> {\n return strictMask(\n await this.#provider.request({\n method: 'wallet_invokeSnap',\n params: {\n snapId: this.#origin,\n request,\n },\n }),\n InternalResponseStruct,\n );\n }\n}\n\n/**\n * A `KeyringClient` that allows the communication with a snap through the snap\n * JSON-RPC API.\n */\nexport class KeyringSnapRpcClient extends KeyringClient {\n /**\n * Create a new instance of `KeyringSnapRpcClient`.\n *\n * @param origin - Caller's origin.\n * @param provider - The `MetaMaskInpageProvider` instance to use.\n */\n constructor(origin: string, provider: MetaMaskInpageProvider) {\n super(new SnapRpcSender(origin, provider));\n }\n}\n"]}
|
package/dist/utils.d.ts
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
import { Struct } from 'superstruct';
|
1
2
|
/**
|
2
3
|
* UUIDv4 struct.
|
3
4
|
*/
|
4
|
-
export declare const UuidStruct:
|
5
|
+
export declare const UuidStruct: Struct<string, null>;
|
5
6
|
/**
|
6
7
|
* Omit keys from a union type.
|
7
8
|
*
|
@@ -11,3 +12,15 @@ export declare const UuidStruct: import("superstruct").Struct<string, null>;
|
|
11
12
|
* See: <https://github.com/microsoft/TypeScript/issues/31501#issuecomment-1280579305>
|
12
13
|
*/
|
13
14
|
export declare type OmitUnion<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
|
15
|
+
/**
|
16
|
+
* Assert that a value is valid according to a struct.
|
17
|
+
*
|
18
|
+
* It is similar to superstruct's mask function, but it does not ignore extra
|
19
|
+
* properties.
|
20
|
+
*
|
21
|
+
* @param value - Value to check.
|
22
|
+
* @param struct - Struct to validate the value against.
|
23
|
+
* @param message - Error message to throw if the value is not valid.
|
24
|
+
* @returns The value if it is valid.
|
25
|
+
*/
|
26
|
+
export declare function strictMask<T, S>(value: unknown, struct: Struct<T, S>, message?: string): T;
|
package/dist/utils.js
CHANGED
@@ -1,9 +1,25 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.UuidStruct = void 0;
|
3
|
+
exports.strictMask = exports.UuidStruct = void 0;
|
4
4
|
const superstruct_1 = require("superstruct");
|
5
5
|
/**
|
6
6
|
* UUIDv4 struct.
|
7
7
|
*/
|
8
8
|
exports.UuidStruct = (0, superstruct_1.pattern)((0, superstruct_1.string)(), /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu);
|
9
|
+
/**
|
10
|
+
* Assert that a value is valid according to a struct.
|
11
|
+
*
|
12
|
+
* It is similar to superstruct's mask function, but it does not ignore extra
|
13
|
+
* properties.
|
14
|
+
*
|
15
|
+
* @param value - Value to check.
|
16
|
+
* @param struct - Struct to validate the value against.
|
17
|
+
* @param message - Error message to throw if the value is not valid.
|
18
|
+
* @returns The value if it is valid.
|
19
|
+
*/
|
20
|
+
function strictMask(value, struct, message) {
|
21
|
+
(0, superstruct_1.assert)(value, struct, message);
|
22
|
+
return value;
|
23
|
+
}
|
24
|
+
exports.strictMask = strictMask;
|
9
25
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAE9D;;GAEG;AACU,QAAA,UAAU,GAAG,IAAA,qBAAO,EAC/B,IAAA,oBAAM,GAAE,EACR,yEAAyE,CAC1E,CAAC;AAcF;;;;;;;;;;GAUG;AACH,SAAgB,UAAU,CACxB,KAAc,EACd,MAAoB,EACpB,OAAgB;IAEhB,IAAA,oBAAM,EAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,gCAOC","sourcesContent":["import { Struct, assert, pattern, string } from 'superstruct';\n\n/**\n * UUIDv4 struct.\n */\nexport const UuidStruct = pattern(\n string(),\n /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu,\n);\n\n/**\n * Omit keys from a union type.\n *\n * The normal `Omit` type does not distribute over unions. So we use this\n * workaround that applies `Omit` to each member of the union.\n *\n * See: <https://github.com/microsoft/TypeScript/issues/31501#issuecomment-1280579305>\n */\nexport type OmitUnion<T, K extends keyof any> = T extends any\n ? Omit<T, K>\n : never;\n\n/**\n * Assert that a value is valid according to a struct.\n *\n * It is similar to superstruct's mask function, but it does not ignore extra\n * properties.\n *\n * @param value - Value to check.\n * @param struct - Struct to validate the value against.\n * @param message - Error message to throw if the value is not valid.\n * @returns The value if it is valid.\n */\nexport function strictMask<T, S>(\n value: unknown,\n struct: Struct<T, S>,\n message?: string,\n): T {\n assert(value, struct, message);\n return value;\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@metamask/keyring-api",
|
3
|
-
"version": "0.1.
|
3
|
+
"version": "0.1.2",
|
4
4
|
"description": "MetaMask Keyring API",
|
5
5
|
"homepage": "https://github.com/MetaMask/keyring-api#readme",
|
6
6
|
"bugs": {
|
@@ -32,8 +32,8 @@
|
|
32
32
|
},
|
33
33
|
"dependencies": {
|
34
34
|
"@metamask/providers": "^11.0.0",
|
35
|
-
"@metamask/snaps-controllers": "^0.
|
36
|
-
"@metamask/snaps-utils": "^0.
|
35
|
+
"@metamask/snaps-controllers": "^1.0.0-prerelease.1",
|
36
|
+
"@metamask/snaps-utils": "^1.0.0-prerelease.1",
|
37
37
|
"@metamask/utils": "^6.0.1",
|
38
38
|
"@types/uuid": "^9.0.1",
|
39
39
|
"superstruct": "^1.0.3",
|