@metamask/snaps-controllers 4.0.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/dist/cjs/cronjob/CronjobController.js +3 -3
- package/dist/cjs/cronjob/CronjobController.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interface/SnapInterfaceController.js +166 -0
- package/dist/cjs/interface/SnapInterfaceController.js.map +1 -0
- package/dist/cjs/interface/index.js +20 -0
- package/dist/cjs/interface/index.js.map +1 -0
- package/dist/cjs/interface/utils.js +59 -0
- package/dist/cjs/interface/utils.js.map +1 -0
- package/dist/cjs/services/ProxyPostMessageStream.js +3 -10
- package/dist/cjs/services/ProxyPostMessageStream.js.map +1 -1
- package/dist/cjs/services/browser.js +1 -0
- package/dist/cjs/services/browser.js.map +1 -1
- package/dist/cjs/services/index.js +1 -0
- package/dist/cjs/services/index.js.map +1 -1
- package/dist/cjs/services/node/NodeProcessExecutionService.js +13 -1
- package/dist/cjs/services/node/NodeProcessExecutionService.js.map +1 -1
- package/dist/cjs/services/node/NodeThreadExecutionService.js +14 -1
- package/dist/cjs/services/node/NodeThreadExecutionService.js.map +1 -1
- package/dist/cjs/services/offscreen/OffscreenExecutionService.js +36 -99
- package/dist/cjs/services/offscreen/OffscreenExecutionService.js.map +1 -1
- package/dist/cjs/services/proxy/ProxyExecutionService.js +110 -0
- package/dist/cjs/services/proxy/ProxyExecutionService.js.map +1 -0
- package/dist/cjs/services/webview/WebViewExecutionService.js +99 -0
- package/dist/cjs/services/webview/WebViewExecutionService.js.map +1 -0
- package/dist/cjs/services/webview/WebViewMessageStream.js +127 -0
- package/dist/cjs/services/webview/WebViewMessageStream.js.map +1 -0
- package/dist/cjs/services/webview/index.js +20 -0
- package/dist/cjs/services/webview/index.js.map +1 -0
- package/dist/cjs/snaps/SnapController.js +303 -138
- package/dist/cjs/snaps/SnapController.js.map +1 -1
- package/dist/cjs/snaps/constants.js +25 -0
- package/dist/cjs/snaps/constants.js.map +1 -0
- package/dist/cjs/snaps/index.js +0 -2
- package/dist/cjs/snaps/index.js.map +1 -1
- package/dist/cjs/snaps/location/npm.js +13 -2
- package/dist/cjs/snaps/location/npm.js.map +1 -1
- package/dist/cjs/utils.js +32 -0
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/cronjob/CronjobController.js +2 -2
- package/dist/esm/cronjob/CronjobController.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interface/SnapInterfaceController.js +158 -0
- package/dist/esm/interface/SnapInterfaceController.js.map +1 -0
- package/dist/esm/interface/index.js +3 -0
- package/dist/esm/interface/index.js.map +1 -0
- package/dist/esm/interface/utils.js +62 -0
- package/dist/esm/interface/utils.js.map +1 -0
- package/dist/esm/services/ProxyPostMessageStream.js +3 -10
- package/dist/esm/services/ProxyPostMessageStream.js.map +1 -1
- package/dist/esm/services/browser.js +1 -0
- package/dist/esm/services/browser.js.map +1 -1
- package/dist/esm/services/index.js +1 -0
- package/dist/esm/services/index.js.map +1 -1
- package/dist/esm/services/node/NodeProcessExecutionService.js +13 -1
- package/dist/esm/services/node/NodeProcessExecutionService.js.map +1 -1
- package/dist/esm/services/node/NodeThreadExecutionService.js +14 -1
- package/dist/esm/services/node/NodeThreadExecutionService.js.map +1 -1
- package/dist/esm/services/offscreen/OffscreenExecutionService.js +36 -99
- package/dist/esm/services/offscreen/OffscreenExecutionService.js.map +1 -1
- package/dist/esm/services/proxy/ProxyExecutionService.js +100 -0
- package/dist/esm/services/proxy/ProxyExecutionService.js.map +1 -0
- package/dist/esm/services/webview/WebViewExecutionService.js +89 -0
- package/dist/esm/services/webview/WebViewExecutionService.js.map +1 -0
- package/dist/esm/services/webview/WebViewMessageStream.js +119 -0
- package/dist/esm/services/webview/WebViewMessageStream.js.map +1 -0
- package/dist/esm/services/webview/index.js +3 -0
- package/dist/esm/services/webview/index.js.map +1 -0
- package/dist/esm/snaps/SnapController.js +299 -134
- package/dist/esm/snaps/SnapController.js.map +1 -1
- package/dist/esm/snaps/constants.js +16 -0
- package/dist/esm/snaps/constants.js.map +1 -0
- package/dist/esm/snaps/index.js +0 -2
- package/dist/esm/snaps/index.js.map +1 -1
- package/dist/esm/snaps/location/npm.js +13 -2
- package/dist/esm/snaps/location/npm.js.map +1 -1
- package/dist/esm/utils.js +37 -0
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interface/SnapInterfaceController.d.ts +85 -0
- package/dist/types/interface/index.d.ts +1 -0
- package/dist/types/interface/utils.d.ts +36 -0
- package/dist/types/services/ProxyPostMessageStream.d.ts +1 -2
- package/dist/types/services/browser.d.ts +1 -0
- package/dist/types/services/index.d.ts +1 -0
- package/dist/types/services/offscreen/OffscreenExecutionService.d.ts +5 -22
- package/dist/types/services/proxy/ProxyExecutionService.d.ts +39 -0
- package/dist/types/services/webview/WebViewExecutionService.d.ts +20 -0
- package/dist/types/services/webview/WebViewMessageStream.d.ts +32 -0
- package/dist/types/services/webview/index.d.ts +1 -0
- package/dist/types/snaps/SnapController.d.ts +37 -6
- package/dist/types/snaps/constants.d.ts +1 -0
- package/dist/types/snaps/index.d.ts +0 -2
- package/dist/types/utils.d.ts +119 -0
- package/package.json +14 -14
- package/dist/cjs/snaps/endowments/cronjob.js +0 -100
- package/dist/cjs/snaps/endowments/cronjob.js.map +0 -1
- package/dist/cjs/snaps/endowments/enum.js +0 -25
- package/dist/cjs/snaps/endowments/enum.js.map +0 -1
- package/dist/cjs/snaps/endowments/ethereum-provider.js +0 -43
- package/dist/cjs/snaps/endowments/ethereum-provider.js.map +0 -1
- package/dist/cjs/snaps/endowments/home-page.js +0 -37
- package/dist/cjs/snaps/endowments/home-page.js.map +0 -1
- package/dist/cjs/snaps/endowments/index.js +0 -99
- package/dist/cjs/snaps/endowments/index.js.map +0 -1
- package/dist/cjs/snaps/endowments/keyring.js +0 -100
- package/dist/cjs/snaps/endowments/keyring.js.map +0 -1
- package/dist/cjs/snaps/endowments/lifecycle-hooks.js +0 -37
- package/dist/cjs/snaps/endowments/lifecycle-hooks.js.map +0 -1
- package/dist/cjs/snaps/endowments/name-lookup.js +0 -106
- package/dist/cjs/snaps/endowments/name-lookup.js.map +0 -1
- package/dist/cjs/snaps/endowments/network-access.js +0 -44
- package/dist/cjs/snaps/endowments/network-access.js.map +0 -1
- package/dist/cjs/snaps/endowments/rpc.js +0 -99
- package/dist/cjs/snaps/endowments/rpc.js.map +0 -1
- package/dist/cjs/snaps/endowments/transaction-insight.js +0 -106
- package/dist/cjs/snaps/endowments/transaction-insight.js.map +0 -1
- package/dist/cjs/snaps/endowments/web-assembly.js +0 -42
- package/dist/cjs/snaps/endowments/web-assembly.js.map +0 -1
- package/dist/cjs/snaps/permissions.js +0 -61
- package/dist/cjs/snaps/permissions.js.map +0 -1
- package/dist/esm/snaps/endowments/cronjob.js +0 -99
- package/dist/esm/snaps/endowments/cronjob.js.map +0 -1
- package/dist/esm/snaps/endowments/enum.js +0 -15
- package/dist/esm/snaps/endowments/enum.js.map +0 -1
- package/dist/esm/snaps/endowments/ethereum-provider.js +0 -33
- package/dist/esm/snaps/endowments/ethereum-provider.js.map +0 -1
- package/dist/esm/snaps/endowments/home-page.js +0 -27
- package/dist/esm/snaps/endowments/home-page.js.map +0 -1
- package/dist/esm/snaps/endowments/index.js +0 -54
- package/dist/esm/snaps/endowments/index.js.map +0 -1
- package/dist/esm/snaps/endowments/keyring.js +0 -91
- package/dist/esm/snaps/endowments/keyring.js.map +0 -1
- package/dist/esm/snaps/endowments/lifecycle-hooks.js +0 -27
- package/dist/esm/snaps/endowments/lifecycle-hooks.js.map +0 -1
- package/dist/esm/snaps/endowments/name-lookup.js +0 -98
- package/dist/esm/snaps/endowments/name-lookup.js.map +0 -1
- package/dist/esm/snaps/endowments/network-access.js +0 -34
- package/dist/esm/snaps/endowments/network-access.js.map +0 -1
- package/dist/esm/snaps/endowments/rpc.js +0 -88
- package/dist/esm/snaps/endowments/rpc.js.map +0 -1
- package/dist/esm/snaps/endowments/transaction-insight.js +0 -99
- package/dist/esm/snaps/endowments/transaction-insight.js.map +0 -1
- package/dist/esm/snaps/endowments/web-assembly.js +0 -32
- package/dist/esm/snaps/endowments/web-assembly.js.map +0 -1
- package/dist/esm/snaps/permissions.js +0 -50
- package/dist/esm/snaps/permissions.js.map +0 -1
- package/dist/types/snaps/endowments/cronjob.d.ts +0 -51
- package/dist/types/snaps/endowments/enum.d.ts +0 -12
- package/dist/types/snaps/endowments/ethereum-provider.d.ts +0 -14
- package/dist/types/snaps/endowments/home-page.d.ts +0 -15
- package/dist/types/snaps/endowments/index.d.ts +0 -115
- package/dist/types/snaps/endowments/keyring.d.ts +0 -39
- package/dist/types/snaps/endowments/lifecycle-hooks.d.ts +0 -15
- package/dist/types/snaps/endowments/name-lookup.d.ts +0 -38
- package/dist/types/snaps/endowments/network-access.d.ts +0 -14
- package/dist/types/snaps/endowments/rpc.d.ts +0 -38
- package/dist/types/snaps/endowments/transaction-insight.d.ts +0 -39
- package/dist/types/snaps/endowments/web-assembly.d.ts +0 -14
- package/dist/types/snaps/permissions.d.ts +0 -16
|
@@ -2,15 +2,15 @@ import type { AddApprovalRequest, UpdateRequestState } from '@metamask/approval-
|
|
|
2
2
|
import type { RestrictedControllerMessenger } from '@metamask/base-controller';
|
|
3
3
|
import { BaseController } from '@metamask/base-controller';
|
|
4
4
|
import type { GetEndowments, GetPermissions, GetSubjectMetadata, AddSubjectMetadata, GetSubjects, GrantPermissions, HasPermission, HasPermissions, RevokeAllPermissions, RevokePermissionForAllSubjects, RevokePermissions, UpdateCaveat } from '@metamask/permission-controller';
|
|
5
|
-
import type { MaybeUpdateState, TestOrigin } from '@metamask/phishing-controller';
|
|
6
5
|
import type { BlockReason } from '@metamask/snaps-registry';
|
|
7
6
|
import type { RequestSnapsParams, RequestSnapsResult, SnapId } from '@metamask/snaps-sdk';
|
|
8
7
|
import { AuxiliaryFileEncoding } from '@metamask/snaps-sdk';
|
|
9
|
-
import type { PersistedSnap, Snap,
|
|
8
|
+
import type { PersistedSnap, Snap, SnapManifest, SnapRpcHookArgs, StatusContext, StatusEvents, StatusStates, TruncatedSnap } from '@metamask/snaps-utils';
|
|
10
9
|
import { SnapStatusEvents } from '@metamask/snaps-utils';
|
|
11
10
|
import type { Json, NonEmptyArray } from '@metamask/utils';
|
|
12
11
|
import type { StateMachine } from '@xstate/fsm';
|
|
13
12
|
import type { Patch } from 'immer';
|
|
13
|
+
import type { CreateInterface, GetInterface } from '../interface';
|
|
14
14
|
import type { ExecuteSnapAction, ExecutionServiceEvents, HandleRpcRequestAction, SnapErrorJson, TerminateAllSnapsAction, TerminateSnapAction } from '../services';
|
|
15
15
|
import type { SnapLocation } from './location';
|
|
16
16
|
import { detectSnapLocation } from './location';
|
|
@@ -24,6 +24,19 @@ export declare type PendingRequest = {
|
|
|
24
24
|
requestId: unknown;
|
|
25
25
|
timer: Timer;
|
|
26
26
|
};
|
|
27
|
+
export interface PreinstalledSnapFile {
|
|
28
|
+
path: string;
|
|
29
|
+
value: string | Uint8Array;
|
|
30
|
+
}
|
|
31
|
+
export interface PreinstalledSnap {
|
|
32
|
+
snapId: SnapId;
|
|
33
|
+
manifest: SnapManifest;
|
|
34
|
+
files: PreinstalledSnapFile[];
|
|
35
|
+
removable?: boolean;
|
|
36
|
+
}
|
|
37
|
+
declare type SnapRpcHandler = (options: SnapRpcHookArgs & {
|
|
38
|
+
timeout: number;
|
|
39
|
+
}) => Promise<unknown>;
|
|
27
40
|
/**
|
|
28
41
|
* A wrapper type for any data stored during runtime of Snaps.
|
|
29
42
|
* It is not persisted in state as it contains non-serializable data and is only relevant for the
|
|
@@ -54,7 +67,7 @@ export interface SnapRuntimeData {
|
|
|
54
67
|
/**
|
|
55
68
|
* RPC handler designated for the Snap
|
|
56
69
|
*/
|
|
57
|
-
rpcHandler: null |
|
|
70
|
+
rpcHandler: null | SnapRpcHandler;
|
|
58
71
|
/**
|
|
59
72
|
* The finite state machine interpreter for possible states that the Snap can be in such as
|
|
60
73
|
* stopped, running, blocked
|
|
@@ -188,6 +201,20 @@ export declare type SnapBlocked = {
|
|
|
188
201
|
type: `${typeof controllerName}:snapBlocked`;
|
|
189
202
|
payload: [snapId: string, blockedSnapInfo?: BlockReason];
|
|
190
203
|
};
|
|
204
|
+
/**
|
|
205
|
+
* Emitted when a snap installation or update is started.
|
|
206
|
+
*/
|
|
207
|
+
export declare type SnapInstallStarted = {
|
|
208
|
+
type: `${typeof controllerName}:snapInstallStarted`;
|
|
209
|
+
payload: [snapId: SnapId, origin: string, isUpdate: boolean];
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Emitted when a snap installation or update failed.
|
|
213
|
+
*/
|
|
214
|
+
export declare type SnapInstallFailed = {
|
|
215
|
+
type: `${typeof controllerName}:snapInstallFailed`;
|
|
216
|
+
payload: [snapId: SnapId, origin: string, isUpdate: boolean, error: string];
|
|
217
|
+
};
|
|
191
218
|
/**
|
|
192
219
|
* Emitted when a snap has been started after being added and authorized during
|
|
193
220
|
* installation.
|
|
@@ -247,8 +274,8 @@ export declare type SnapDisabled = {
|
|
|
247
274
|
type: `${typeof controllerName}:snapDisabled`;
|
|
248
275
|
payload: [snap: TruncatedSnap];
|
|
249
276
|
};
|
|
250
|
-
export declare type SnapControllerEvents = SnapBlocked | SnapInstalled | SnapUninstalled | SnapStateChange | SnapUnblocked | SnapUpdated | SnapRolledback | SnapTerminated | SnapEnabled | SnapDisabled;
|
|
251
|
-
export declare type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | AddSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateAllSnapsAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update | ResolveVersion |
|
|
277
|
+
export declare type SnapControllerEvents = SnapBlocked | SnapInstalled | SnapUninstalled | SnapInstallStarted | SnapInstallFailed | SnapStateChange | SnapUnblocked | SnapUpdated | SnapRolledback | SnapTerminated | SnapEnabled | SnapDisabled;
|
|
278
|
+
export declare type AllowedActions = GetEndowments | GetPermissions | GetSubjects | GetSubjectMetadata | AddSubjectMetadata | HasPermission | HasPermissions | RevokePermissions | RevokeAllPermissions | RevokePermissionForAllSubjects | GrantPermissions | AddApprovalRequest | HandleRpcRequestAction | ExecuteSnapAction | TerminateAllSnapsAction | TerminateSnapAction | UpdateCaveat | UpdateRequestState | GetResult | GetMetadata | Update | ResolveVersion | CreateInterface | GetInterface;
|
|
252
279
|
export declare type AllowedEvents = ExecutionServiceEvents | SnapInstalled | SnapUpdated;
|
|
253
280
|
declare type SnapControllerMessenger = RestrictedControllerMessenger<typeof controllerName, SnapControllerActions | AllowedActions, SnapControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
254
281
|
declare type FeatureFlags = {
|
|
@@ -315,11 +342,15 @@ declare type SnapControllerArgs = {
|
|
|
315
342
|
* Used for test overrides.
|
|
316
343
|
*/
|
|
317
344
|
detectSnapLocation?: typeof detectSnapLocation;
|
|
345
|
+
/**
|
|
346
|
+
* A list of snaps to be preinstalled into the SnapController state on initialization.
|
|
347
|
+
*/
|
|
348
|
+
preinstalledSnaps?: PreinstalledSnap[];
|
|
318
349
|
};
|
|
319
350
|
export declare class SnapController extends BaseController<string, SnapControllerState, SnapControllerMessenger> {
|
|
320
351
|
#private;
|
|
321
352
|
private readonly maxRequestTime;
|
|
322
|
-
constructor({ closeAllConnections, messenger, state, dynamicPermissions, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, }: SnapControllerArgs);
|
|
353
|
+
constructor({ closeAllConnections, messenger, state, dynamicPermissions, environmentEndowmentPermissions, excludedPermissions, idleTimeCheckInterval, maxIdleTime, maxRequestTime, fetchFunction, featureFlags, detectSnapLocation: detectSnapLocationFunction, preinstalledSnaps, }: SnapControllerArgs);
|
|
323
354
|
/**
|
|
324
355
|
* Checks all installed snaps against the block list and
|
|
325
356
|
* blocks/unblocks snaps as appropriate. See {@link SnapController.blockSnap}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ALLOWED_PERMISSIONS: readonly string[];
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SnapId } from '@metamask/snaps-sdk';
|
|
1
2
|
import type { SnapLocation } from './snaps';
|
|
2
3
|
import { Timer } from './snaps/Timer';
|
|
3
4
|
/**
|
|
@@ -134,4 +135,122 @@ export declare type Mutable<Type extends Record<string, unknown>, TargetKey exte
|
|
|
134
135
|
* @returns The array of files as {@link VirtualFile}s.
|
|
135
136
|
*/
|
|
136
137
|
export declare function getSnapFiles(location: SnapLocation, files?: string[] | undefined): Promise<import("@metamask/snaps-utils").VirtualFile<unknown>[]>;
|
|
138
|
+
/**
|
|
139
|
+
* Fetch the Snap manifest, source code, and any other files from the given
|
|
140
|
+
* location.
|
|
141
|
+
*
|
|
142
|
+
* @param snapId - The ID of the Snap to fetch.
|
|
143
|
+
* @param location - The location of the Snap.
|
|
144
|
+
* @returns The Snap files and location.
|
|
145
|
+
* @throws If the Snap files are invalid, or if the Snap could not be fetched.
|
|
146
|
+
*/
|
|
147
|
+
export declare function fetchSnap(snapId: SnapId, location: SnapLocation): Promise<{
|
|
148
|
+
manifest: import("@metamask/snaps-utils").VirtualFile<{
|
|
149
|
+
description: string;
|
|
150
|
+
version: import("@metamask/utils").SemVerVersion;
|
|
151
|
+
source: {
|
|
152
|
+
location: {
|
|
153
|
+
npm: {
|
|
154
|
+
registry: "https://registry.npmjs.org" | "https://registry.npmjs.org/";
|
|
155
|
+
filePath: string;
|
|
156
|
+
packageName: string;
|
|
157
|
+
iconPath?: string | undefined;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
shasum: string;
|
|
161
|
+
files?: string[] | undefined;
|
|
162
|
+
locales?: string[] | undefined;
|
|
163
|
+
};
|
|
164
|
+
proposedName: string;
|
|
165
|
+
initialPermissions: {
|
|
166
|
+
snap_dialog?: {} | undefined;
|
|
167
|
+
snap_getBip32Entropy?: {
|
|
168
|
+
path: string[];
|
|
169
|
+
curve: "ed25519" | "secp256k1";
|
|
170
|
+
}[] | undefined;
|
|
171
|
+
snap_getBip32PublicKey?: {
|
|
172
|
+
path: string[];
|
|
173
|
+
curve: "ed25519" | "secp256k1";
|
|
174
|
+
}[] | undefined;
|
|
175
|
+
snap_getBip44Entropy?: {
|
|
176
|
+
coinType: number;
|
|
177
|
+
}[] | undefined;
|
|
178
|
+
snap_getEntropy?: {} | undefined;
|
|
179
|
+
snap_getLocale?: {} | undefined;
|
|
180
|
+
snap_manageAccounts?: {} | undefined;
|
|
181
|
+
snap_manageState?: {} | undefined;
|
|
182
|
+
snap_notify?: {} | undefined;
|
|
183
|
+
wallet_snap?: Record<string, {
|
|
184
|
+
version?: string | undefined;
|
|
185
|
+
}> | undefined;
|
|
186
|
+
'endowment:cronjob'?: {
|
|
187
|
+
jobs: {
|
|
188
|
+
request: {
|
|
189
|
+
method: string;
|
|
190
|
+
id?: string | number | null | undefined;
|
|
191
|
+
jsonrpc?: "2.0" | undefined;
|
|
192
|
+
params?: Record<string, import("@metamask/snaps-sdk").Json> | import("@metamask/snaps-sdk").Json[] | undefined;
|
|
193
|
+
};
|
|
194
|
+
expression: string;
|
|
195
|
+
}[];
|
|
196
|
+
maxRequestTime?: number | undefined;
|
|
197
|
+
} | undefined;
|
|
198
|
+
'endowment:ethereum-provider'?: {} | undefined;
|
|
199
|
+
'endowment:keyring'?: {
|
|
200
|
+
allowedOrigins?: string[] | undefined;
|
|
201
|
+
maxRequestTime?: number | undefined;
|
|
202
|
+
} | undefined;
|
|
203
|
+
'endowment:lifecycle-hooks'?: {
|
|
204
|
+
maxRequestTime?: number | undefined;
|
|
205
|
+
} | undefined;
|
|
206
|
+
'endowment:name-lookup'?: {
|
|
207
|
+
chains?: `${string}:${string}`[] | undefined;
|
|
208
|
+
maxRequestTime?: number | undefined;
|
|
209
|
+
matchers?: {
|
|
210
|
+
tlds: string[];
|
|
211
|
+
} | {
|
|
212
|
+
schemes: string[];
|
|
213
|
+
} | {
|
|
214
|
+
tlds: string[];
|
|
215
|
+
schemes: string[];
|
|
216
|
+
} | undefined;
|
|
217
|
+
} | undefined;
|
|
218
|
+
'endowment:network-access'?: {} | undefined;
|
|
219
|
+
'endowment:page-home'?: {
|
|
220
|
+
maxRequestTime?: number | undefined;
|
|
221
|
+
} | undefined;
|
|
222
|
+
'endowment:rpc'?: {
|
|
223
|
+
dapps?: boolean | undefined;
|
|
224
|
+
snaps?: boolean | undefined;
|
|
225
|
+
allowedOrigins?: string[] | undefined;
|
|
226
|
+
} | undefined;
|
|
227
|
+
'endowment:signature-insight'?: {
|
|
228
|
+
maxRequestTime?: number | undefined;
|
|
229
|
+
allowSignatureOrigin?: boolean | undefined;
|
|
230
|
+
} | undefined;
|
|
231
|
+
'endowment:transaction-insight'?: {
|
|
232
|
+
maxRequestTime?: number | undefined;
|
|
233
|
+
allowTransactionOrigin?: boolean | undefined;
|
|
234
|
+
} | undefined;
|
|
235
|
+
'endowment:webassembly'?: {} | undefined;
|
|
236
|
+
};
|
|
237
|
+
manifestVersion: "0.1";
|
|
238
|
+
repository?: {
|
|
239
|
+
type: string;
|
|
240
|
+
url: string;
|
|
241
|
+
} | undefined;
|
|
242
|
+
initialConnections?: Record<string & URL, {}> | undefined;
|
|
243
|
+
$schema?: string | undefined;
|
|
244
|
+
}>;
|
|
245
|
+
sourceCode: import("@metamask/snaps-utils").VirtualFile<unknown>;
|
|
246
|
+
svgIcon: import("@metamask/snaps-utils").VirtualFile<unknown> | undefined;
|
|
247
|
+
auxiliaryFiles: import("@metamask/snaps-utils").VirtualFile<unknown>[];
|
|
248
|
+
localizationFiles: import("@metamask/snaps-utils").VirtualFile<{
|
|
249
|
+
locale: string;
|
|
250
|
+
messages: Record<string, {
|
|
251
|
+
message: string;
|
|
252
|
+
description?: string | undefined;
|
|
253
|
+
}>;
|
|
254
|
+
}>[];
|
|
255
|
+
}>;
|
|
137
256
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/snaps-controllers",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Controllers for MetaMask Snaps.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -42,19 +42,19 @@
|
|
|
42
42
|
"lint:dependencies": "depcheck"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@metamask/approval-controller": "^5.1.
|
|
46
|
-
"@metamask/base-controller": "^4.
|
|
47
|
-
"@metamask/json-rpc-engine": "^7.3.
|
|
45
|
+
"@metamask/approval-controller": "^5.1.2",
|
|
46
|
+
"@metamask/base-controller": "^4.1.0",
|
|
47
|
+
"@metamask/json-rpc-engine": "^7.3.2",
|
|
48
48
|
"@metamask/object-multiplex": "^2.0.0",
|
|
49
|
-
"@metamask/permission-controller": "^
|
|
50
|
-
"@metamask/phishing-controller": "^8.0.
|
|
51
|
-
"@metamask/post-message-stream": "^
|
|
49
|
+
"@metamask/permission-controller": "^8.0.0",
|
|
50
|
+
"@metamask/phishing-controller": "^8.0.2",
|
|
51
|
+
"@metamask/post-message-stream": "^8.0.0",
|
|
52
52
|
"@metamask/rpc-errors": "^6.1.0",
|
|
53
53
|
"@metamask/snaps-registry": "^3.0.0",
|
|
54
|
-
"@metamask/snaps-rpc-methods": "^
|
|
55
|
-
"@metamask/snaps-sdk": "^
|
|
56
|
-
"@metamask/snaps-utils": "^
|
|
57
|
-
"@metamask/utils": "^8.
|
|
54
|
+
"@metamask/snaps-rpc-methods": "^6.0.0",
|
|
55
|
+
"@metamask/snaps-sdk": "^2.0.0",
|
|
56
|
+
"@metamask/snaps-utils": "^6.0.0",
|
|
57
|
+
"@metamask/utils": "^8.3.0",
|
|
58
58
|
"@xstate/fsm": "^2.0.0",
|
|
59
59
|
"browserify-zlib": "^0.2.0",
|
|
60
60
|
"concat-stream": "^2.0.0",
|
|
@@ -64,12 +64,12 @@
|
|
|
64
64
|
"nanoid": "^3.1.31",
|
|
65
65
|
"readable-stream": "^3.6.2",
|
|
66
66
|
"readable-web-to-node-stream": "^3.0.2",
|
|
67
|
-
"tar-stream": "^3.1.
|
|
67
|
+
"tar-stream": "^3.1.7"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
|
71
71
|
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
|
|
72
|
-
"@lavamoat/allow-scripts": "^
|
|
72
|
+
"@lavamoat/allow-scripts": "^3.0.0",
|
|
73
73
|
"@metamask/auto-changelog": "^3.4.4",
|
|
74
74
|
"@metamask/eslint-config": "^12.1.0",
|
|
75
75
|
"@metamask/eslint-config-jest": "^12.1.0",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"webdriverio": "^8.19.0"
|
|
126
126
|
},
|
|
127
127
|
"peerDependencies": {
|
|
128
|
-
"@metamask/snaps-execution-environments": "^
|
|
128
|
+
"@metamask/snaps-execution-environments": "^4.0.0"
|
|
129
129
|
},
|
|
130
130
|
"peerDependenciesMeta": {
|
|
131
131
|
"@metamask/snaps-execution-environments": {
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
cronjobEndowmentBuilder: function() {
|
|
13
|
-
return cronjobEndowmentBuilder;
|
|
14
|
-
},
|
|
15
|
-
getCronjobCaveatMapper: function() {
|
|
16
|
-
return getCronjobCaveatMapper;
|
|
17
|
-
},
|
|
18
|
-
getCronjobCaveatJobs: function() {
|
|
19
|
-
return getCronjobCaveatJobs;
|
|
20
|
-
},
|
|
21
|
-
validateCronjobCaveat: function() {
|
|
22
|
-
return validateCronjobCaveat;
|
|
23
|
-
},
|
|
24
|
-
cronjobCaveatSpecifications: function() {
|
|
25
|
-
return cronjobCaveatSpecifications;
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const _permissioncontroller = require("@metamask/permission-controller");
|
|
29
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
30
|
-
const _snapsutils = require("@metamask/snaps-utils");
|
|
31
|
-
const _utils = require("@metamask/utils");
|
|
32
|
-
const _enum = require("./enum");
|
|
33
|
-
const permissionName = _enum.SnapEndowments.Cronjob;
|
|
34
|
-
/**
|
|
35
|
-
* `endowment:cronjob` returns nothing; it is intended to be used as a flag to determine whether the snap wants to run cronjobs.
|
|
36
|
-
*
|
|
37
|
-
* @param _builderOptions - Optional specification builder options.
|
|
38
|
-
* @returns The specification for the cronjob endowment.
|
|
39
|
-
*/ const specificationBuilder = (_builderOptions)=>{
|
|
40
|
-
return {
|
|
41
|
-
permissionType: _permissioncontroller.PermissionType.Endowment,
|
|
42
|
-
targetName: permissionName,
|
|
43
|
-
allowedCaveats: [
|
|
44
|
-
_snapsutils.SnapCaveatType.SnapCronjob
|
|
45
|
-
],
|
|
46
|
-
endowmentGetter: (_getterOptions)=>undefined,
|
|
47
|
-
subjectTypes: [
|
|
48
|
-
_permissioncontroller.SubjectType.Snap
|
|
49
|
-
]
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
const cronjobEndowmentBuilder = Object.freeze({
|
|
53
|
-
targetName: permissionName,
|
|
54
|
-
specificationBuilder
|
|
55
|
-
});
|
|
56
|
-
function getCronjobCaveatMapper(value) {
|
|
57
|
-
return {
|
|
58
|
-
caveats: [
|
|
59
|
-
{
|
|
60
|
-
type: _snapsutils.SnapCaveatType.SnapCronjob,
|
|
61
|
-
value
|
|
62
|
-
}
|
|
63
|
-
]
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
function getCronjobCaveatJobs(permission) {
|
|
67
|
-
if (!permission?.caveats) {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
(0, _utils.assert)(permission.caveats.length === 1);
|
|
71
|
-
(0, _utils.assert)(permission.caveats[0].type === _snapsutils.SnapCaveatType.SnapCronjob);
|
|
72
|
-
const caveat = permission.caveats[0];
|
|
73
|
-
return (caveat.value?.jobs) ?? null;
|
|
74
|
-
}
|
|
75
|
-
function validateCronjobCaveat(caveat) {
|
|
76
|
-
if (!(0, _utils.hasProperty)(caveat, 'value') || !(0, _utils.isPlainObject)(caveat.value)) {
|
|
77
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
78
|
-
message: 'Expected a plain object.'
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
const { value } = caveat;
|
|
82
|
-
if (!(0, _utils.hasProperty)(value, 'jobs') || !(0, _utils.isPlainObject)(value)) {
|
|
83
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
84
|
-
message: 'Expected a plain object.'
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
if (!(0, _snapsutils.isCronjobSpecificationArray)(value.jobs)) {
|
|
88
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
89
|
-
message: 'Expected a valid cronjob specification array.'
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const cronjobCaveatSpecifications = {
|
|
94
|
-
[_snapsutils.SnapCaveatType.SnapCronjob]: Object.freeze({
|
|
95
|
-
type: _snapsutils.SnapCaveatType.SnapCronjob,
|
|
96
|
-
validator: (caveat)=>validateCronjobCaveat(caveat)
|
|
97
|
-
})
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
//# sourceMappingURL=cronjob.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/snaps/endowments/cronjob.ts"],"sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionConstraint,\n Caveat,\n CaveatSpecificationConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { CronjobSpecification } from '@metamask/snaps-utils';\nimport {\n SnapCaveatType,\n isCronjobSpecificationArray,\n} from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isPlainObject } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.Cronjob;\n\ntype CronjobEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: any) => undefined;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:cronjob` returns nothing; it is intended to be used as a flag to determine whether the snap wants to run cronjobs.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the cronjob endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n CronjobEndowmentSpecification\n> = (_builderOptions?: any) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.SnapCronjob],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => undefined,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const cronjobEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getCronjobCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.SnapCronjob,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the cronjobs from a permission.\n *\n * This does basic validation of the caveat, but does not validate the type or\n * value of the namespaces object itself, as this is handled by the\n * `PermissionsController` when the permission is requested.\n *\n * @param permission - The permission to get the keyring namespaces from.\n * @returns The cronjobs, or `null` if the permission does not have a\n * cronjob caveat.\n */\nexport function getCronjobCaveatJobs(\n permission?: PermissionConstraint,\n): CronjobSpecification[] | null {\n if (!permission?.caveats) {\n return null;\n }\n\n assert(permission.caveats.length === 1);\n assert(permission.caveats[0].type === SnapCaveatType.SnapCronjob);\n\n const caveat = permission.caveats[0] as Caveat<string, { jobs: Json[] }>;\n\n return (caveat.value?.jobs as CronjobSpecification[]) ?? null;\n}\n\n/**\n * Validate the cronjob specification values associated with a caveat.\n * This validates that the value is a non-empty array with valid\n * cronjob expression and request object.\n *\n * @param caveat - The caveat to validate.\n * @throws If the value is invalid.\n */\nexport function validateCronjobCaveat(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n\n if (!hasProperty(value, 'jobs') || !isPlainObject(value)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a plain object.',\n });\n }\n\n if (!isCronjobSpecificationArray(value.jobs)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a valid cronjob specification array.',\n });\n }\n}\n\n/**\n * Caveat specification for the Cronjob.\n */\nexport const cronjobCaveatSpecifications: Record<\n SnapCaveatType.SnapCronjob,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SnapCronjob]: Object.freeze({\n type: SnapCaveatType.SnapCronjob,\n validator: (caveat) => validateCronjobCaveat(caveat),\n }),\n};\n"],"names":["cronjobEndowmentBuilder","getCronjobCaveatMapper","getCronjobCaveatJobs","validateCronjobCaveat","cronjobCaveatSpecifications","permissionName","SnapEndowments","Cronjob","specificationBuilder","_builderOptions","permissionType","PermissionType","Endowment","targetName","allowedCaveats","SnapCaveatType","SnapCronjob","endowmentGetter","_getterOptions","undefined","subjectTypes","SubjectType","Snap","Object","freeze","value","caveats","type","permission","assert","length","caveat","jobs","hasProperty","isPlainObject","rpcErrors","invalidParams","message","isCronjobSpecificationArray","validator"],"mappings":";;;;;;;;;;;IAiDaA,uBAAuB;eAAvBA;;IAaGC,sBAAsB;eAAtBA;;IAwBAC,oBAAoB;eAApBA;;IAuBAC,qBAAqB;eAArBA;;IAyBHC,2BAA2B;eAA3BA;;;sCA9H+B;2BAClB;4BAKnB;uBAE4C;sBAEpB;AAE/B,MAAMC,iBAAiBC,oBAAc,CAACC,OAAO;AAS7C;;;;;CAKC,GACD,MAAMC,uBAIF,CAACC;IACH,OAAO;QACLC,gBAAgBC,oCAAc,CAACC,SAAS;QACxCC,YAAYR;QACZS,gBAAgB;YAACC,0BAAc,CAACC,WAAW;SAAC;QAC5CC,iBAAiB,CAACC,iBAA2CC;QAC7DC,cAAc;YAACC,iCAAW,CAACC,IAAI;SAAC;IAClC;AACF;AAEO,MAAMtB,0BAA0BuB,OAAOC,MAAM,CAAC;IACnDX,YAAYR;IACZG;AACF;AAUO,SAASP,uBACdwB,KAAW;IAEX,OAAO;QACLC,SAAS;YACP;gBACEC,MAAMZ,0BAAc,CAACC,WAAW;gBAChCS;YACF;SACD;IACH;AACF;AAaO,SAASvB,qBACd0B,UAAiC;IAEjC,IAAI,CAACA,YAAYF,SAAS;QACxB,OAAO;IACT;IAEAG,IAAAA,aAAM,EAACD,WAAWF,OAAO,CAACI,MAAM,KAAK;IACrCD,IAAAA,aAAM,EAACD,WAAWF,OAAO,CAAC,EAAE,CAACC,IAAI,KAAKZ,0BAAc,CAACC,WAAW;IAEhE,MAAMe,SAASH,WAAWF,OAAO,CAAC,EAAE;IAEpC,OAAO,CAACK,OAAON,KAAK,EAAEO,IAA8B,KAAK;AAC3D;AAUO,SAAS7B,sBAAsB4B,MAA2B;IAC/D,IAAI,CAACE,IAAAA,kBAAW,EAACF,QAAQ,YAAY,CAACG,IAAAA,oBAAa,EAACH,OAAON,KAAK,GAAG;QACjE,MAAMU,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEA,MAAM,EAAEZ,KAAK,EAAE,GAAGM;IAElB,IAAI,CAACE,IAAAA,kBAAW,EAACR,OAAO,WAAW,CAACS,IAAAA,oBAAa,EAACT,QAAQ;QACxD,MAAMU,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEA,IAAI,CAACC,IAAAA,uCAA2B,EAACb,MAAMO,IAAI,GAAG;QAC5C,MAAMG,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;AACF;AAKO,MAAMjC,8BAGT;IACF,CAACW,0BAAc,CAACC,WAAW,CAAC,EAAEO,OAAOC,MAAM,CAAC;QAC1CG,MAAMZ,0BAAc,CAACC,WAAW;QAChCuB,WAAW,CAACR,SAAW5B,sBAAsB4B;IAC/C;AACF"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "SnapEndowments", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return SnapEndowments;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var SnapEndowments;
|
|
12
|
-
(function(SnapEndowments) {
|
|
13
|
-
SnapEndowments["NetworkAccess"] = 'endowment:network-access';
|
|
14
|
-
SnapEndowments["TransactionInsight"] = 'endowment:transaction-insight';
|
|
15
|
-
SnapEndowments["Cronjob"] = 'endowment:cronjob';
|
|
16
|
-
SnapEndowments["EthereumProvider"] = 'endowment:ethereum-provider';
|
|
17
|
-
SnapEndowments["Rpc"] = 'endowment:rpc';
|
|
18
|
-
SnapEndowments["WebAssemblyAccess"] = 'endowment:webassembly';
|
|
19
|
-
SnapEndowments["NameLookup"] = 'endowment:name-lookup';
|
|
20
|
-
SnapEndowments["LifecycleHooks"] = 'endowment:lifecycle-hooks';
|
|
21
|
-
SnapEndowments["Keyring"] = 'endowment:keyring';
|
|
22
|
-
SnapEndowments["HomePage"] = 'endowment:page-home';
|
|
23
|
-
})(SnapEndowments || (SnapEndowments = {}));
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=enum.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/snaps/endowments/enum.ts"],"sourcesContent":["export enum SnapEndowments {\n NetworkAccess = 'endowment:network-access',\n TransactionInsight = 'endowment:transaction-insight',\n Cronjob = 'endowment:cronjob',\n EthereumProvider = 'endowment:ethereum-provider',\n Rpc = 'endowment:rpc',\n WebAssemblyAccess = 'endowment:webassembly',\n NameLookup = 'endowment:name-lookup',\n LifecycleHooks = 'endowment:lifecycle-hooks',\n Keyring = 'endowment:keyring',\n HomePage = 'endowment:page-home',\n}\n"],"names":["SnapEndowments","NetworkAccess","TransactionInsight","Cronjob","EthereumProvider","Rpc","WebAssemblyAccess","NameLookup","LifecycleHooks","Keyring","HomePage"],"mappings":";;;;;;;;;;IAAO;UAAKA,cAAc;IAAdA,eACVC,mBAAgB;IADND,eAEVE,wBAAqB;IAFXF,eAGVG,aAAU;IAHAH,eAIVI,sBAAmB;IAJTJ,eAKVK,SAAM;IALIL,eAMVM,uBAAoB;IANVN,eAOVO,gBAAa;IAPHP,eAQVQ,oBAAiB;IARPR,eASVS,aAAU;IATAT,eAUVU,cAAW;GAVDV,mBAAAA"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "ethereumProviderEndowmentBuilder", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return ethereumProviderEndowmentBuilder;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _permissioncontroller = require("@metamask/permission-controller");
|
|
12
|
-
const _enum = require("./enum");
|
|
13
|
-
const permissionName = _enum.SnapEndowments.EthereumProvider;
|
|
14
|
-
/**
|
|
15
|
-
* `endowment:ethereum-provider` returns the name of the ethereum global browser API.
|
|
16
|
-
* This is intended to populate the endowments of the
|
|
17
|
-
* SES Compartment in which a Snap executes.
|
|
18
|
-
*
|
|
19
|
-
* This populates the global scope with an EIP-1193 provider, which DOES NOT implement all legacy functionality exposed to dapps.
|
|
20
|
-
*
|
|
21
|
-
* @param _builderOptions - Optional specification builder options.
|
|
22
|
-
* @returns The specification for the network endowment.
|
|
23
|
-
*/ const specificationBuilder = (_builderOptions)=>{
|
|
24
|
-
return {
|
|
25
|
-
permissionType: _permissioncontroller.PermissionType.Endowment,
|
|
26
|
-
targetName: permissionName,
|
|
27
|
-
allowedCaveats: null,
|
|
28
|
-
endowmentGetter: (_getterOptions)=>{
|
|
29
|
-
return [
|
|
30
|
-
'ethereum'
|
|
31
|
-
];
|
|
32
|
-
},
|
|
33
|
-
subjectTypes: [
|
|
34
|
-
_permissioncontroller.SubjectType.Snap
|
|
35
|
-
]
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
const ethereumProviderEndowmentBuilder = Object.freeze({
|
|
39
|
-
targetName: permissionName,
|
|
40
|
-
specificationBuilder
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=ethereum-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/snaps/endowments/ethereum-provider.ts"],"sourcesContent":["import type {\n EndowmentGetterParams,\n PermissionSpecificationBuilder,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.EthereumProvider;\n\ntype EthereumProviderEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: any) => ['ethereum'];\n allowedCaveats: null;\n}>;\n\n/**\n * `endowment:ethereum-provider` returns the name of the ethereum global browser API.\n * This is intended to populate the endowments of the\n * SES Compartment in which a Snap executes.\n *\n * This populates the global scope with an EIP-1193 provider, which DOES NOT implement all legacy functionality exposed to dapps.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the network endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n EthereumProviderEndowmentSpecification\n> = (_builderOptions?: any) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => {\n return ['ethereum'];\n },\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const ethereumProviderEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"],"names":["ethereumProviderEndowmentBuilder","permissionName","SnapEndowments","EthereumProvider","specificationBuilder","_builderOptions","permissionType","PermissionType","Endowment","targetName","allowedCaveats","endowmentGetter","_getterOptions","subjectTypes","SubjectType","Snap","Object","freeze"],"mappings":";;;;+BA4CaA;;;eAAAA;;;sCAvC+B;sBAEb;AAE/B,MAAMC,iBAAiBC,oBAAc,CAACC,gBAAgB;AAStD;;;;;;;;;CASC,GACD,MAAMC,uBAIF,CAACC;IACH,OAAO;QACLC,gBAAgBC,oCAAc,CAACC,SAAS;QACxCC,YAAYR;QACZS,gBAAgB;QAChBC,iBAAiB,CAACC;YAChB,OAAO;gBAAC;aAAW;QACrB;QACAC,cAAc;YAACC,iCAAW,CAACC,IAAI;SAAC;IAClC;AACF;AAEO,MAAMf,mCAAmCgB,OAAOC,MAAM,CAAC;IAC5DR,YAAYR;IACZG;AACF"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "homePageEndowmentBuilder", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return homePageEndowmentBuilder;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _permissioncontroller = require("@metamask/permission-controller");
|
|
12
|
-
const _enum = require("./enum");
|
|
13
|
-
const permissionName = _enum.SnapEndowments.HomePage;
|
|
14
|
-
/**
|
|
15
|
-
* `endowment:page-home` returns nothing; it is intended to be used as a
|
|
16
|
-
* flag by the snap controller to detect whether the snap has the capability to
|
|
17
|
-
* use the snap home page feature.
|
|
18
|
-
*
|
|
19
|
-
* @param _builderOptions - Optional specification builder options.
|
|
20
|
-
* @returns The specification for the `snap-pages` endowment.
|
|
21
|
-
*/ const specificationBuilder = (_builderOptions)=>{
|
|
22
|
-
return {
|
|
23
|
-
permissionType: _permissioncontroller.PermissionType.Endowment,
|
|
24
|
-
targetName: permissionName,
|
|
25
|
-
allowedCaveats: null,
|
|
26
|
-
endowmentGetter: (_getterOptions)=>undefined,
|
|
27
|
-
subjectTypes: [
|
|
28
|
-
_permissioncontroller.SubjectType.Snap
|
|
29
|
-
]
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
const homePageEndowmentBuilder = Object.freeze({
|
|
33
|
-
targetName: permissionName,
|
|
34
|
-
specificationBuilder
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=home-page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/snaps/endowments/home-page.ts"],"sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.HomePage;\n\ntype HomePageEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => undefined;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:page-home` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use the snap home page feature.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `snap-pages` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n HomePageEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => undefined,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const homePageEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"],"names":["homePageEndowmentBuilder","permissionName","SnapEndowments","HomePage","specificationBuilder","_builderOptions","permissionType","PermissionType","Endowment","targetName","allowedCaveats","endowmentGetter","_getterOptions","undefined","subjectTypes","SubjectType","Snap","Object","freeze"],"mappings":";;;;+BAyCaA;;;eAAAA;;;sCApC+B;sBAGb;AAE/B,MAAMC,iBAAiBC,oBAAc,CAACC,QAAQ;AAS9C;;;;;;;CAOC,GACD,MAAMC,uBAIF,CAACC;IACH,OAAO;QACLC,gBAAgBC,oCAAc,CAACC,SAAS;QACxCC,YAAYR;QACZS,gBAAgB;QAChBC,iBAAiB,CAACC,iBAA2CC;QAC7DC,cAAc;YAACC,iCAAW,CAACC,IAAI;SAAC;IAClC;AACF;AAEO,MAAMhB,2BAA2BiB,OAAOC,MAAM,CAAC;IACpDT,YAAYR;IACZG;AACF"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
endowmentPermissionBuilders: function() {
|
|
13
|
-
return endowmentPermissionBuilders;
|
|
14
|
-
},
|
|
15
|
-
endowmentCaveatSpecifications: function() {
|
|
16
|
-
return endowmentCaveatSpecifications;
|
|
17
|
-
},
|
|
18
|
-
endowmentCaveatMappers: function() {
|
|
19
|
-
return endowmentCaveatMappers;
|
|
20
|
-
},
|
|
21
|
-
handlerEndowments: function() {
|
|
22
|
-
return handlerEndowments;
|
|
23
|
-
},
|
|
24
|
-
getRpcCaveatOrigins: function() {
|
|
25
|
-
return _rpc.getRpcCaveatOrigins;
|
|
26
|
-
},
|
|
27
|
-
getTransactionOriginCaveat: function() {
|
|
28
|
-
return _transactioninsight.getTransactionOriginCaveat;
|
|
29
|
-
},
|
|
30
|
-
getChainIdsCaveat: function() {
|
|
31
|
-
return _namelookup.getChainIdsCaveat;
|
|
32
|
-
},
|
|
33
|
-
getKeyringCaveatOrigins: function() {
|
|
34
|
-
return _keyring.getKeyringCaveatOrigins;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const _snapsutils = require("@metamask/snaps-utils");
|
|
38
|
-
const _cronjob = require("./cronjob");
|
|
39
|
-
const _ethereumprovider = require("./ethereum-provider");
|
|
40
|
-
const _homepage = require("./home-page");
|
|
41
|
-
const _keyring = require("./keyring");
|
|
42
|
-
const _lifecyclehooks = require("./lifecycle-hooks");
|
|
43
|
-
const _namelookup = require("./name-lookup");
|
|
44
|
-
const _networkaccess = require("./network-access");
|
|
45
|
-
const _rpc = require("./rpc");
|
|
46
|
-
const _transactioninsight = require("./transaction-insight");
|
|
47
|
-
const _webassembly = require("./web-assembly");
|
|
48
|
-
_export_star(require("./enum"), exports);
|
|
49
|
-
function _export_star(from, to) {
|
|
50
|
-
Object.keys(from).forEach(function(k) {
|
|
51
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
52
|
-
Object.defineProperty(to, k, {
|
|
53
|
-
enumerable: true,
|
|
54
|
-
get: function() {
|
|
55
|
-
return from[k];
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
return from;
|
|
61
|
-
}
|
|
62
|
-
const endowmentPermissionBuilders = {
|
|
63
|
-
[_networkaccess.networkAccessEndowmentBuilder.targetName]: _networkaccess.networkAccessEndowmentBuilder,
|
|
64
|
-
[_transactioninsight.transactionInsightEndowmentBuilder.targetName]: _transactioninsight.transactionInsightEndowmentBuilder,
|
|
65
|
-
[_cronjob.cronjobEndowmentBuilder.targetName]: _cronjob.cronjobEndowmentBuilder,
|
|
66
|
-
[_ethereumprovider.ethereumProviderEndowmentBuilder.targetName]: _ethereumprovider.ethereumProviderEndowmentBuilder,
|
|
67
|
-
[_rpc.rpcEndowmentBuilder.targetName]: _rpc.rpcEndowmentBuilder,
|
|
68
|
-
[_webassembly.webAssemblyEndowmentBuilder.targetName]: _webassembly.webAssemblyEndowmentBuilder,
|
|
69
|
-
[_namelookup.nameLookupEndowmentBuilder.targetName]: _namelookup.nameLookupEndowmentBuilder,
|
|
70
|
-
[_lifecyclehooks.lifecycleHooksEndowmentBuilder.targetName]: _lifecyclehooks.lifecycleHooksEndowmentBuilder,
|
|
71
|
-
[_keyring.keyringEndowmentBuilder.targetName]: _keyring.keyringEndowmentBuilder,
|
|
72
|
-
[_homepage.homePageEndowmentBuilder.targetName]: _homepage.homePageEndowmentBuilder
|
|
73
|
-
};
|
|
74
|
-
const endowmentCaveatSpecifications = {
|
|
75
|
-
..._cronjob.cronjobCaveatSpecifications,
|
|
76
|
-
..._transactioninsight.transactionInsightCaveatSpecifications,
|
|
77
|
-
..._rpc.rpcCaveatSpecifications,
|
|
78
|
-
..._namelookup.nameLookupCaveatSpecifications,
|
|
79
|
-
..._keyring.keyringCaveatSpecifications
|
|
80
|
-
};
|
|
81
|
-
const endowmentCaveatMappers = {
|
|
82
|
-
[_cronjob.cronjobEndowmentBuilder.targetName]: _cronjob.getCronjobCaveatMapper,
|
|
83
|
-
[_transactioninsight.transactionInsightEndowmentBuilder.targetName]: _transactioninsight.getTransactionInsightCaveatMapper,
|
|
84
|
-
[_rpc.rpcEndowmentBuilder.targetName]: _rpc.getRpcCaveatMapper,
|
|
85
|
-
[_namelookup.nameLookupEndowmentBuilder.targetName]: _namelookup.getNameLookupCaveatMapper,
|
|
86
|
-
[_keyring.keyringEndowmentBuilder.targetName]: _keyring.getKeyringCaveatMapper
|
|
87
|
-
};
|
|
88
|
-
const handlerEndowments = {
|
|
89
|
-
[_snapsutils.HandlerType.OnRpcRequest]: _rpc.rpcEndowmentBuilder.targetName,
|
|
90
|
-
[_snapsutils.HandlerType.OnTransaction]: _transactioninsight.transactionInsightEndowmentBuilder.targetName,
|
|
91
|
-
[_snapsutils.HandlerType.OnCronjob]: _cronjob.cronjobEndowmentBuilder.targetName,
|
|
92
|
-
[_snapsutils.HandlerType.OnNameLookup]: _namelookup.nameLookupEndowmentBuilder.targetName,
|
|
93
|
-
[_snapsutils.HandlerType.OnInstall]: _lifecyclehooks.lifecycleHooksEndowmentBuilder.targetName,
|
|
94
|
-
[_snapsutils.HandlerType.OnUpdate]: _lifecyclehooks.lifecycleHooksEndowmentBuilder.targetName,
|
|
95
|
-
[_snapsutils.HandlerType.OnKeyringRequest]: _keyring.keyringEndowmentBuilder.targetName,
|
|
96
|
-
[_snapsutils.HandlerType.OnHomePage]: _homepage.homePageEndowmentBuilder.targetName
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
//# sourceMappingURL=index.js.map
|