@metamask/snaps-rpc-methods 13.1.0 → 13.3.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 +17 -1
- package/dist/endowments/index.cjs +1 -0
- package/dist/endowments/index.cjs.map +1 -1
- package/dist/endowments/index.d.cts.map +1 -1
- package/dist/endowments/index.d.mts.map +1 -1
- package/dist/endowments/index.mjs +1 -0
- package/dist/endowments/index.mjs.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/middleware/index.cjs +18 -0
- package/dist/middleware/index.cjs.map +1 -0
- package/dist/middleware/index.d.cts +2 -0
- package/dist/middleware/index.d.cts.map +1 -0
- package/dist/middleware/index.d.mts +2 -0
- package/dist/middleware/index.d.mts.map +1 -0
- package/dist/middleware/index.mjs +2 -0
- package/dist/middleware/index.mjs.map +1 -0
- package/dist/middleware/preinstalled-snaps.cjs +61 -0
- package/dist/middleware/preinstalled-snaps.cjs.map +1 -0
- package/dist/middleware/preinstalled-snaps.d.cts +35 -0
- package/dist/middleware/preinstalled-snaps.d.cts.map +1 -0
- package/dist/middleware/preinstalled-snaps.d.mts +35 -0
- package/dist/middleware/preinstalled-snaps.d.mts.map +1 -0
- package/dist/middleware/preinstalled-snaps.mjs +57 -0
- package/dist/middleware/preinstalled-snaps.mjs.map +1 -0
- package/dist/permitted/createInterface.d.cts +10 -10
- package/dist/permitted/createInterface.d.mts +10 -10
- package/dist/permitted/endTrace.cjs +74 -0
- package/dist/permitted/endTrace.cjs.map +1 -0
- package/dist/permitted/endTrace.d.cts +34 -0
- package/dist/permitted/endTrace.d.cts.map +1 -0
- package/dist/permitted/endTrace.d.mts +34 -0
- package/dist/permitted/endTrace.d.mts.map +1 -0
- package/dist/permitted/endTrace.mjs +71 -0
- package/dist/permitted/endTrace.mjs.map +1 -0
- package/dist/permitted/handlers.cjs +6 -0
- package/dist/permitted/handlers.cjs.map +1 -1
- package/dist/permitted/handlers.d.cts +5 -2
- package/dist/permitted/handlers.d.cts.map +1 -1
- package/dist/permitted/handlers.d.mts +5 -2
- package/dist/permitted/handlers.d.mts.map +1 -1
- package/dist/permitted/handlers.mjs +6 -0
- package/dist/permitted/handlers.mjs.map +1 -1
- package/dist/permitted/index.cjs.map +1 -1
- package/dist/permitted/index.d.cts +5 -1
- package/dist/permitted/index.d.cts.map +1 -1
- package/dist/permitted/index.d.mts +5 -1
- package/dist/permitted/index.d.mts.map +1 -1
- package/dist/permitted/index.mjs.map +1 -1
- package/dist/permitted/startTrace.cjs +77 -0
- package/dist/permitted/startTrace.cjs.map +1 -0
- package/dist/permitted/startTrace.d.cts +40 -0
- package/dist/permitted/startTrace.d.cts.map +1 -0
- package/dist/permitted/startTrace.d.mts +40 -0
- package/dist/permitted/startTrace.d.mts.map +1 -0
- package/dist/permitted/startTrace.mjs +74 -0
- package/dist/permitted/startTrace.mjs.map +1 -0
- package/dist/permitted/trackError.cjs +94 -0
- package/dist/permitted/trackError.cjs.map +1 -0
- package/dist/permitted/trackError.d.cts +32 -0
- package/dist/permitted/trackError.d.cts.map +1 -0
- package/dist/permitted/trackError.d.mts +32 -0
- package/dist/permitted/trackError.d.mts.map +1 -0
- package/dist/permitted/trackError.mjs +91 -0
- package/dist/permitted/trackError.mjs.map +1 -0
- package/dist/permitted/updateInterface.d.cts +10 -10
- package/dist/permitted/updateInterface.d.mts +10 -10
- package/dist/restricted/dialog.d.cts +20 -20
- package/dist/restricted/dialog.d.mts +20 -20
- package/dist/restricted/notify.d.cts +15 -15
- package/dist/restricted/notify.d.mts +15 -15
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAgC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAAyB;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0CAAsC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAsB;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,kCAA8B;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,4BAA4B,EAAE,gCAA4B;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,iCAA6B;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAAuB;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,+BAA2B;AACtE,OAAO,KAAK,EAAE,kCAAkC,EAAE,sCAAkC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,mCAA+B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AAEpE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GACnD,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,uBAAuB,GACvB,iBAAiB,GACjB,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,kCAAkC,GAClC,gCAAgC,GAChC,8BAA8B,GAC9B,aAAa,GACb,wBAAwB,GACxB,yBAAyB,GACzB,+BAA+B,GAC/B,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAgC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAAyB;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAmB;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAE,0CAAsC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAsB;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,kCAA8B;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,4BAA4B,EAAE,gCAA4B;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,iCAA6B;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAAuB;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,+BAA2B;AACtE,OAAO,KAAK,EAAE,kCAAkC,EAAE,sCAAkC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,mCAA+B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AAEpE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GACnD,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,uBAAuB,GACvB,iBAAiB,GACjB,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,kCAAkC,GAClC,gCAAgC,GAChC,8BAA8B,GAC9B,aAAa,GACb,wBAAwB,GACxB,yBAAyB,GACzB,+BAA+B,GAC/B,wBAAwB,GACxB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,CAAC;AAEtB,+BAA2B;AAC3B,iCAA6B"}
|
|
@@ -2,6 +2,7 @@ import type { CancelBackgroundEventMethodHooks } from "./cancelBackgroundEvent.m
|
|
|
2
2
|
import type { ClearStateHooks } from "./clearState.mjs";
|
|
3
3
|
import type { CloseWebSocketMethodHooks } from "./closeWebSocket.mjs";
|
|
4
4
|
import type { CreateInterfaceMethodHooks } from "./createInterface.mjs";
|
|
5
|
+
import type { EndTraceMethodHooks } from "./endTrace.mjs";
|
|
5
6
|
import type { ProviderRequestMethodHooks } from "./experimentalProviderRequest.mjs";
|
|
6
7
|
import type { GetAllSnapsHooks } from "./getAllSnaps.mjs";
|
|
7
8
|
import type { GetBackgroundEventsMethodHooks } from "./getBackgroundEvents.mjs";
|
|
@@ -18,8 +19,11 @@ import type { ResolveInterfaceMethodHooks } from "./resolveInterface.mjs";
|
|
|
18
19
|
import type { ScheduleBackgroundEventMethodHooks } from "./scheduleBackgroundEvent.mjs";
|
|
19
20
|
import type { SendWebSocketMessageMethodHooks } from "./sendWebSocketMessage.mjs";
|
|
20
21
|
import type { SetStateHooks } from "./setState.mjs";
|
|
22
|
+
import type { StartTraceMethodHooks } from "./startTrace.mjs";
|
|
23
|
+
import type { TrackErrorMethodHooks } from "./trackError.mjs";
|
|
24
|
+
import type { TrackEventMethodHooks } from "./trackEvent.mjs";
|
|
21
25
|
import type { UpdateInterfaceMethodHooks } from "./updateInterface.mjs";
|
|
22
|
-
export type PermittedRpcMethodHooks = ClearStateHooks & GetAllSnapsHooks & GetClientStatusHooks & GetSnapsHooks & GetStateHooks & ListEntropySourcesHooks & RequestSnapsHooks & CreateInterfaceMethodHooks & UpdateInterfaceMethodHooks & GetInterfaceStateMethodHooks & ResolveInterfaceMethodHooks & GetCurrencyRateMethodHooks & ProviderRequestMethodHooks & ScheduleBackgroundEventMethodHooks & CancelBackgroundEventMethodHooks & GetBackgroundEventsMethodHooks & SetStateHooks & OpenWebSocketMethodHooks & CloseWebSocketMethodHooks & SendWebSocketMessageMethodHooks & GetWebSocketsMethodHooks;
|
|
26
|
+
export type PermittedRpcMethodHooks = ClearStateHooks & GetAllSnapsHooks & GetClientStatusHooks & GetSnapsHooks & GetStateHooks & ListEntropySourcesHooks & RequestSnapsHooks & CreateInterfaceMethodHooks & UpdateInterfaceMethodHooks & GetInterfaceStateMethodHooks & ResolveInterfaceMethodHooks & GetCurrencyRateMethodHooks & ProviderRequestMethodHooks & ScheduleBackgroundEventMethodHooks & CancelBackgroundEventMethodHooks & GetBackgroundEventsMethodHooks & SetStateHooks & OpenWebSocketMethodHooks & CloseWebSocketMethodHooks & SendWebSocketMessageMethodHooks & GetWebSocketsMethodHooks & TrackEventMethodHooks & TrackErrorMethodHooks & StartTraceMethodHooks & EndTraceMethodHooks;
|
|
23
27
|
export * from "./handlers.mjs";
|
|
24
28
|
export * from "./middleware.mjs";
|
|
25
29
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAgC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAAyB;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0CAAsC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAsB;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,kCAA8B;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,4BAA4B,EAAE,gCAA4B;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,iCAA6B;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAAuB;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,+BAA2B;AACtE,OAAO,KAAK,EAAE,kCAAkC,EAAE,sCAAkC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,mCAA+B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AAEpE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GACnD,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,uBAAuB,GACvB,iBAAiB,GACjB,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,kCAAkC,GAClC,gCAAgC,GAChC,8BAA8B,GAC9B,aAAa,GACb,wBAAwB,GACxB,yBAAyB,GACzB,+BAA+B,GAC/B,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAgC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAqB;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAAyB;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAmB;AACtD,OAAO,KAAK,EAAE,0BAA0B,EAAE,0CAAsC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAsB;AACtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,kCAA8B;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AACpE,OAAO,KAAK,EAAE,4BAA4B,EAAE,gCAA4B;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,iCAA6B;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,4BAAwB;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,2BAAuB;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,+BAA2B;AACtE,OAAO,KAAK,EAAE,kCAAkC,EAAE,sCAAkC;AACpF,OAAO,KAAK,EAAE,+BAA+B,EAAE,mCAA+B;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAmB;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAqB;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA0B;AAEpE,MAAM,MAAM,uBAAuB,GAAG,eAAe,GACnD,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,uBAAuB,GACvB,iBAAiB,GACjB,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,kCAAkC,GAClC,gCAAgC,GAChC,8BAA8B,GAC9B,aAAa,GACb,wBAAwB,GACxB,yBAAyB,GACzB,+BAA+B,GAC/B,wBAAwB,GACxB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,CAAC;AAEtB,+BAA2B;AAC3B,iCAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/permitted/index.ts"],"names":[],"mappings":"AAoDA,+BAA2B;AAC3B,iCAA6B","sourcesContent":["import type { CancelBackgroundEventMethodHooks } from './cancelBackgroundEvent';\nimport type { ClearStateHooks } from './clearState';\nimport type { CloseWebSocketMethodHooks } from './closeWebSocket';\nimport type { CreateInterfaceMethodHooks } from './createInterface';\nimport type { EndTraceMethodHooks } from './endTrace';\nimport type { ProviderRequestMethodHooks } from './experimentalProviderRequest';\nimport type { GetAllSnapsHooks } from './getAllSnaps';\nimport type { GetBackgroundEventsMethodHooks } from './getBackgroundEvents';\nimport type { GetClientStatusHooks } from './getClientStatus';\nimport type { GetCurrencyRateMethodHooks } from './getCurrencyRate';\nimport type { GetInterfaceStateMethodHooks } from './getInterfaceState';\nimport type { GetSnapsHooks } from './getSnaps';\nimport type { GetStateHooks } from './getState';\nimport type { GetWebSocketsMethodHooks } from './getWebSockets';\nimport type { ListEntropySourcesHooks } from './listEntropySources';\nimport type { OpenWebSocketMethodHooks } from './openWebSocket';\nimport type { RequestSnapsHooks } from './requestSnaps';\nimport type { ResolveInterfaceMethodHooks } from './resolveInterface';\nimport type { ScheduleBackgroundEventMethodHooks } from './scheduleBackgroundEvent';\nimport type { SendWebSocketMessageMethodHooks } from './sendWebSocketMessage';\nimport type { SetStateHooks } from './setState';\nimport type { StartTraceMethodHooks } from './startTrace';\nimport type { TrackErrorMethodHooks } from './trackError';\nimport type { TrackEventMethodHooks } from './trackEvent';\nimport type { UpdateInterfaceMethodHooks } from './updateInterface';\n\nexport type PermittedRpcMethodHooks = ClearStateHooks &\n GetAllSnapsHooks &\n GetClientStatusHooks &\n GetSnapsHooks &\n GetStateHooks &\n ListEntropySourcesHooks &\n RequestSnapsHooks &\n CreateInterfaceMethodHooks &\n UpdateInterfaceMethodHooks &\n GetInterfaceStateMethodHooks &\n ResolveInterfaceMethodHooks &\n GetCurrencyRateMethodHooks &\n ProviderRequestMethodHooks &\n ScheduleBackgroundEventMethodHooks &\n CancelBackgroundEventMethodHooks &\n GetBackgroundEventsMethodHooks &\n SetStateHooks &\n OpenWebSocketMethodHooks &\n CloseWebSocketMethodHooks &\n SendWebSocketMessageMethodHooks &\n GetWebSocketsMethodHooks &\n TrackEventMethodHooks &\n TrackErrorMethodHooks &\n StartTraceMethodHooks &\n EndTraceMethodHooks;\n\nexport * from './handlers';\nexport * from './middleware';\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startTraceHandler = void 0;
|
|
4
|
+
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
6
|
+
const utils_1 = require("@metamask/utils");
|
|
7
|
+
const hookNames = {
|
|
8
|
+
startTrace: true,
|
|
9
|
+
getSnap: true,
|
|
10
|
+
};
|
|
11
|
+
const StartTraceParametersStruct = (0, superstruct_1.object)({
|
|
12
|
+
data: (0, superstruct_1.exactOptional)((0, superstruct_1.record)((0, superstruct_1.string)(), (0, superstruct_1.union)([(0, superstruct_1.string)(), (0, superstruct_1.number)(), (0, superstruct_1.boolean)()]))),
|
|
13
|
+
id: (0, superstruct_1.exactOptional)((0, superstruct_1.string)()),
|
|
14
|
+
name: (0, superstruct_1.string)(),
|
|
15
|
+
parentContext: (0, superstruct_1.exactOptional)(utils_1.JsonStruct),
|
|
16
|
+
startTime: (0, superstruct_1.exactOptional)((0, superstruct_1.number)()),
|
|
17
|
+
tags: (0, superstruct_1.exactOptional)((0, superstruct_1.record)((0, superstruct_1.string)(), (0, superstruct_1.union)([(0, superstruct_1.string)(), (0, superstruct_1.number)(), (0, superstruct_1.boolean)()]))),
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Handler for the `snap_startTrace` method.
|
|
21
|
+
*/
|
|
22
|
+
exports.startTraceHandler = {
|
|
23
|
+
methodNames: ['snap_startTrace'],
|
|
24
|
+
implementation: getStartTraceImplementation,
|
|
25
|
+
hookNames,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The `snap_startTrace` method implementation. This method is used to start a
|
|
29
|
+
* performance trace in Sentry. It is only available to preinstalled Snaps.
|
|
30
|
+
*
|
|
31
|
+
* @param request - The JSON-RPC request object.
|
|
32
|
+
* @param response - The JSON-RPC response object.
|
|
33
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
34
|
+
* function.
|
|
35
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
36
|
+
* @param hooks - The RPC method hooks.
|
|
37
|
+
* @param hooks.startTrace - The hook function to start a performance trace.
|
|
38
|
+
* @param hooks.getSnap - The hook function to get Snap metadata.
|
|
39
|
+
* @returns Nothing.
|
|
40
|
+
*/
|
|
41
|
+
function getStartTraceImplementation(request, response, _next, end, { startTrace, getSnap }) {
|
|
42
|
+
const snap = getSnap(request.origin);
|
|
43
|
+
if (!snap?.preinstalled) {
|
|
44
|
+
return end(rpc_errors_1.rpcErrors.methodNotFound());
|
|
45
|
+
}
|
|
46
|
+
const { params } = request;
|
|
47
|
+
try {
|
|
48
|
+
const validatedParams = getValidatedParams(params);
|
|
49
|
+
response.result = startTrace(validatedParams);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return end(error);
|
|
53
|
+
}
|
|
54
|
+
return end();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate the parameters for the `snap_startTrace` method.
|
|
58
|
+
*
|
|
59
|
+
* @param params - Parameters to validate.
|
|
60
|
+
* @returns Validated parameters.
|
|
61
|
+
* @throws Throws RPC error if validation fails.
|
|
62
|
+
*/
|
|
63
|
+
function getValidatedParams(params) {
|
|
64
|
+
try {
|
|
65
|
+
return (0, superstruct_1.create)(params, StartTraceParametersStruct);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof superstruct_1.StructError) {
|
|
69
|
+
throw rpc_errors_1.rpcErrors.invalidParams({
|
|
70
|
+
message: `Invalid params: ${error.message}.`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/* istanbul ignore next */
|
|
74
|
+
throw rpc_errors_1.rpcErrors.internal();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=startTrace.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTrace.cjs","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AASjD,uDAU+B;AAE/B,2CAA6C;AAI7C,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAmBF,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,IAAI,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,EAAE,IAAA,qBAAO,GAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,EAAE,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC3B,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,aAAa,EAAE,IAAA,2BAAa,EAAC,kBAAU,CAAC;IACxC,SAAS,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;IAClC,IAAI,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,EAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,mBAAK,EAAC,CAAC,IAAA,oBAAM,GAAE,EAAE,IAAA,oBAAM,GAAE,EAAE,IAAA,qBAAO,GAAE,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC,CAAC;AAOH;;GAEG;AACU,QAAA,iBAAiB,GAI1B;IACF,WAAW,EAAE,CAAC,iBAAiB,CAAC;IAChC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n StartTraceParams,\n StartTraceResult,\n TraceContext,\n TraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport {\n boolean,\n number,\n record,\n union,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<StartTraceMethodHooks> = {\n startTrace: true,\n getSnap: true,\n};\n\nexport type StartTraceMethodHooks = {\n /**\n * Start a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n startTrace: (request: TraceRequest) => TraceContext;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst StartTraceParametersStruct = object({\n data: exactOptional(record(string(), union([string(), number(), boolean()]))),\n id: exactOptional(string()),\n name: string(),\n parentContext: exactOptional(JsonStruct),\n startTime: exactOptional(number()),\n tags: exactOptional(record(string(), union([string(), number(), boolean()]))),\n});\n\nexport type StartTraceParameters = InferMatching<\n typeof StartTraceParametersStruct,\n StartTraceParams\n>;\n\n/**\n * Handler for the `snap_startTrace` method.\n */\nexport const startTraceHandler: PermittedHandlerExport<\n StartTraceMethodHooks,\n StartTraceParameters,\n StartTraceResult\n> = {\n methodNames: ['snap_startTrace'],\n implementation: getStartTraceImplementation,\n hookNames,\n};\n\n/**\n * The `snap_startTrace` method implementation. This method is used to start a\n * performance trace in Sentry. It is only available to preinstalled Snaps.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.startTrace - The hook function to start a performance trace.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getStartTraceImplementation(\n request: JsonRpcRequest<StartTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { startTrace, getSnap }: StartTraceMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<StartTraceParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n response.result = startTrace(validatedParams);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_startTrace` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): StartTraceParameters {\n try {\n return create(params, StartTraceParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PermittedHandlerExport } from "@metamask/permission-controller";
|
|
2
|
+
import type { StartTraceParams, StartTraceResult, TraceContext, TraceRequest } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { InferMatching, Snap } from "@metamask/snaps-utils";
|
|
4
|
+
export type StartTraceMethodHooks = {
|
|
5
|
+
/**
|
|
6
|
+
* Start a performance trace in Sentry.
|
|
7
|
+
*
|
|
8
|
+
* @param request - The trace request object.
|
|
9
|
+
* @returns The performance trace context.
|
|
10
|
+
*/
|
|
11
|
+
startTrace: (request: TraceRequest) => TraceContext;
|
|
12
|
+
/**
|
|
13
|
+
* Get Snap metadata.
|
|
14
|
+
*
|
|
15
|
+
* @param snapId - The ID of a Snap.
|
|
16
|
+
*/
|
|
17
|
+
getSnap: (snapId: string) => Snap | undefined;
|
|
18
|
+
};
|
|
19
|
+
declare const StartTraceParametersStruct: import("@metamask/superstruct").Struct<{
|
|
20
|
+
name: string;
|
|
21
|
+
id?: string | undefined;
|
|
22
|
+
data?: Record<string, string | number | boolean> | undefined;
|
|
23
|
+
parentContext?: import("@metamask/snaps-sdk").Json | undefined;
|
|
24
|
+
startTime?: number | undefined;
|
|
25
|
+
tags?: Record<string, string | number | boolean> | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
data: import("@metamask/superstruct").ExactOptionalStruct<Record<string, string | number | boolean>, null>;
|
|
28
|
+
id: import("@metamask/superstruct").ExactOptionalStruct<string, null>;
|
|
29
|
+
name: import("@metamask/superstruct").Struct<string, null>;
|
|
30
|
+
parentContext: import("@metamask/superstruct").ExactOptionalStruct<import("@metamask/snaps-sdk").Json, unknown>;
|
|
31
|
+
startTime: import("@metamask/superstruct").ExactOptionalStruct<number, null>;
|
|
32
|
+
tags: import("@metamask/superstruct").ExactOptionalStruct<Record<string, string | number | boolean>, null>;
|
|
33
|
+
}>;
|
|
34
|
+
export type StartTraceParameters = InferMatching<typeof StartTraceParametersStruct, StartTraceParams>;
|
|
35
|
+
/**
|
|
36
|
+
* Handler for the `snap_startTrace` method.
|
|
37
|
+
*/
|
|
38
|
+
export declare const startTraceHandler: PermittedHandlerExport<StartTraceMethodHooks, StartTraceParameters, StartTraceResult>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=startTrace.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTrace.d.cts","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAsBjE,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;IAEpD;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CACpD,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,CAKjB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PermittedHandlerExport } from "@metamask/permission-controller";
|
|
2
|
+
import type { StartTraceParams, StartTraceResult, TraceContext, TraceRequest } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { InferMatching, Snap } from "@metamask/snaps-utils";
|
|
4
|
+
export type StartTraceMethodHooks = {
|
|
5
|
+
/**
|
|
6
|
+
* Start a performance trace in Sentry.
|
|
7
|
+
*
|
|
8
|
+
* @param request - The trace request object.
|
|
9
|
+
* @returns The performance trace context.
|
|
10
|
+
*/
|
|
11
|
+
startTrace: (request: TraceRequest) => TraceContext;
|
|
12
|
+
/**
|
|
13
|
+
* Get Snap metadata.
|
|
14
|
+
*
|
|
15
|
+
* @param snapId - The ID of a Snap.
|
|
16
|
+
*/
|
|
17
|
+
getSnap: (snapId: string) => Snap | undefined;
|
|
18
|
+
};
|
|
19
|
+
declare const StartTraceParametersStruct: import("@metamask/superstruct").Struct<{
|
|
20
|
+
name: string;
|
|
21
|
+
id?: string | undefined;
|
|
22
|
+
data?: Record<string, string | number | boolean> | undefined;
|
|
23
|
+
parentContext?: import("@metamask/snaps-sdk").Json | undefined;
|
|
24
|
+
startTime?: number | undefined;
|
|
25
|
+
tags?: Record<string, string | number | boolean> | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
data: import("@metamask/superstruct").ExactOptionalStruct<Record<string, string | number | boolean>, null>;
|
|
28
|
+
id: import("@metamask/superstruct").ExactOptionalStruct<string, null>;
|
|
29
|
+
name: import("@metamask/superstruct").Struct<string, null>;
|
|
30
|
+
parentContext: import("@metamask/superstruct").ExactOptionalStruct<import("@metamask/snaps-sdk").Json, unknown>;
|
|
31
|
+
startTime: import("@metamask/superstruct").ExactOptionalStruct<number, null>;
|
|
32
|
+
tags: import("@metamask/superstruct").ExactOptionalStruct<Record<string, string | number | boolean>, null>;
|
|
33
|
+
}>;
|
|
34
|
+
export type StartTraceParameters = InferMatching<typeof StartTraceParametersStruct, StartTraceParams>;
|
|
35
|
+
/**
|
|
36
|
+
* Handler for the `snap_startTrace` method.
|
|
37
|
+
*/
|
|
38
|
+
export declare const startTraceHandler: PermittedHandlerExport<StartTraceMethodHooks, StartTraceParameters, StartTraceResult>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=startTrace.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTrace.d.mts","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AAsBjE,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;OAKG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;IAEpD;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CACpD,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,CAKjB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
2
|
+
import { boolean, number, record, union, create, object, string, StructError, exactOptional } from "@metamask/superstruct";
|
|
3
|
+
import { JsonStruct } from "@metamask/utils";
|
|
4
|
+
const hookNames = {
|
|
5
|
+
startTrace: true,
|
|
6
|
+
getSnap: true,
|
|
7
|
+
};
|
|
8
|
+
const StartTraceParametersStruct = object({
|
|
9
|
+
data: exactOptional(record(string(), union([string(), number(), boolean()]))),
|
|
10
|
+
id: exactOptional(string()),
|
|
11
|
+
name: string(),
|
|
12
|
+
parentContext: exactOptional(JsonStruct),
|
|
13
|
+
startTime: exactOptional(number()),
|
|
14
|
+
tags: exactOptional(record(string(), union([string(), number(), boolean()]))),
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Handler for the `snap_startTrace` method.
|
|
18
|
+
*/
|
|
19
|
+
export const startTraceHandler = {
|
|
20
|
+
methodNames: ['snap_startTrace'],
|
|
21
|
+
implementation: getStartTraceImplementation,
|
|
22
|
+
hookNames,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* The `snap_startTrace` method implementation. This method is used to start a
|
|
26
|
+
* performance trace in Sentry. It is only available to preinstalled Snaps.
|
|
27
|
+
*
|
|
28
|
+
* @param request - The JSON-RPC request object.
|
|
29
|
+
* @param response - The JSON-RPC response object.
|
|
30
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
31
|
+
* function.
|
|
32
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
33
|
+
* @param hooks - The RPC method hooks.
|
|
34
|
+
* @param hooks.startTrace - The hook function to start a performance trace.
|
|
35
|
+
* @param hooks.getSnap - The hook function to get Snap metadata.
|
|
36
|
+
* @returns Nothing.
|
|
37
|
+
*/
|
|
38
|
+
function getStartTraceImplementation(request, response, _next, end, { startTrace, getSnap }) {
|
|
39
|
+
const snap = getSnap(request.origin);
|
|
40
|
+
if (!snap?.preinstalled) {
|
|
41
|
+
return end(rpcErrors.methodNotFound());
|
|
42
|
+
}
|
|
43
|
+
const { params } = request;
|
|
44
|
+
try {
|
|
45
|
+
const validatedParams = getValidatedParams(params);
|
|
46
|
+
response.result = startTrace(validatedParams);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return end(error);
|
|
50
|
+
}
|
|
51
|
+
return end();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate the parameters for the `snap_startTrace` method.
|
|
55
|
+
*
|
|
56
|
+
* @param params - Parameters to validate.
|
|
57
|
+
* @returns Validated parameters.
|
|
58
|
+
* @throws Throws RPC error if validation fails.
|
|
59
|
+
*/
|
|
60
|
+
function getValidatedParams(params) {
|
|
61
|
+
try {
|
|
62
|
+
return create(params, StartTraceParametersStruct);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (error instanceof StructError) {
|
|
66
|
+
throw rpcErrors.invalidParams({
|
|
67
|
+
message: `Invalid params: ${error.message}.`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/* istanbul ignore next */
|
|
71
|
+
throw rpcErrors.internal();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=startTrace.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startTrace.mjs","sourceRoot":"","sources":["../../src/permitted/startTrace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AASjD,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACd,8BAA8B;AAE/B,OAAO,EAAE,UAAU,EAAE,wBAAwB;AAI7C,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAmBF,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,EAAE;IACd,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC;IACxC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9E,CAAC,CAAC;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAI1B;IACF,WAAW,EAAE,CAAC,iBAAiB,CAAC;IAChC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n StartTraceParams,\n StartTraceResult,\n TraceContext,\n TraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport {\n boolean,\n number,\n record,\n union,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\nimport { JsonStruct } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<StartTraceMethodHooks> = {\n startTrace: true,\n getSnap: true,\n};\n\nexport type StartTraceMethodHooks = {\n /**\n * Start a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n startTrace: (request: TraceRequest) => TraceContext;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst StartTraceParametersStruct = object({\n data: exactOptional(record(string(), union([string(), number(), boolean()]))),\n id: exactOptional(string()),\n name: string(),\n parentContext: exactOptional(JsonStruct),\n startTime: exactOptional(number()),\n tags: exactOptional(record(string(), union([string(), number(), boolean()]))),\n});\n\nexport type StartTraceParameters = InferMatching<\n typeof StartTraceParametersStruct,\n StartTraceParams\n>;\n\n/**\n * Handler for the `snap_startTrace` method.\n */\nexport const startTraceHandler: PermittedHandlerExport<\n StartTraceMethodHooks,\n StartTraceParameters,\n StartTraceResult\n> = {\n methodNames: ['snap_startTrace'],\n implementation: getStartTraceImplementation,\n hookNames,\n};\n\n/**\n * The `snap_startTrace` method implementation. This method is used to start a\n * performance trace in Sentry. It is only available to preinstalled Snaps.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.startTrace - The hook function to start a performance trace.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getStartTraceImplementation(\n request: JsonRpcRequest<StartTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { startTrace, getSnap }: StartTraceMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<StartTraceParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n response.result = startTrace(validatedParams);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_startTrace` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): StartTraceParameters {\n try {\n return create(params, StartTraceParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trackErrorHandler = void 0;
|
|
4
|
+
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
|
+
const superstruct_1 = require("@metamask/superstruct");
|
|
6
|
+
const hookNames = {
|
|
7
|
+
trackError: true,
|
|
8
|
+
getSnap: true,
|
|
9
|
+
};
|
|
10
|
+
const TrackableErrorStruct = (0, superstruct_1.object)({
|
|
11
|
+
name: (0, superstruct_1.string)(),
|
|
12
|
+
message: (0, superstruct_1.string)(),
|
|
13
|
+
stack: (0, superstruct_1.nullable)((0, superstruct_1.string)()),
|
|
14
|
+
cause: (0, superstruct_1.nullable)((0, superstruct_1.lazy)(() => TrackableErrorStruct)),
|
|
15
|
+
});
|
|
16
|
+
const TrackErrorParametersStruct = (0, superstruct_1.object)({
|
|
17
|
+
error: TrackableErrorStruct,
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Handler for the `snap_trackError` method.
|
|
21
|
+
*/
|
|
22
|
+
exports.trackErrorHandler = {
|
|
23
|
+
methodNames: ['snap_trackError'],
|
|
24
|
+
implementation: getTrackErrorImplementation,
|
|
25
|
+
hookNames,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The `snap_trackError` method implementation. This method allows preinstalled
|
|
29
|
+
* Snaps to send errors to the Sentry instance in the client for tracking.
|
|
30
|
+
*
|
|
31
|
+
* @param request - The JSON-RPC request object.
|
|
32
|
+
* @param response - The JSON-RPC response object.
|
|
33
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
34
|
+
* function.
|
|
35
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
36
|
+
* @param hooks - The RPC method hooks.
|
|
37
|
+
* @param hooks.trackError - The hook function to track an error.
|
|
38
|
+
* @param hooks.getSnap - The hook function to get Snap metadata.
|
|
39
|
+
* @returns Nothing.
|
|
40
|
+
*/
|
|
41
|
+
function getTrackErrorImplementation(request, response, _next, end, { trackError, getSnap }) {
|
|
42
|
+
const snap = getSnap(request.origin);
|
|
43
|
+
if (!snap?.preinstalled) {
|
|
44
|
+
return end(rpc_errors_1.rpcErrors.methodNotFound());
|
|
45
|
+
}
|
|
46
|
+
const { params } = request;
|
|
47
|
+
try {
|
|
48
|
+
const validatedParams = getValidatedParams(params);
|
|
49
|
+
const error = deserializeError(validatedParams.error);
|
|
50
|
+
response.result = trackError(error);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return end(error);
|
|
54
|
+
}
|
|
55
|
+
return end();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validate the parameters for the `snap_trackError` method.
|
|
59
|
+
*
|
|
60
|
+
* @param params - Parameters to validate.
|
|
61
|
+
* @returns Validated parameters.
|
|
62
|
+
* @throws Throws RPC error if validation fails.
|
|
63
|
+
*/
|
|
64
|
+
function getValidatedParams(params) {
|
|
65
|
+
try {
|
|
66
|
+
return (0, superstruct_1.create)(params, TrackErrorParametersStruct);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error instanceof superstruct_1.StructError) {
|
|
70
|
+
throw rpc_errors_1.rpcErrors.invalidParams({
|
|
71
|
+
message: `Invalid params: ${error.message}.`,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/* istanbul ignore next */
|
|
75
|
+
throw rpc_errors_1.rpcErrors.internal();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Deserialize a {@link TrackableError} into a standard {@link Error} object.
|
|
80
|
+
*
|
|
81
|
+
* @param error - The error to deserialize.
|
|
82
|
+
* @returns A standard {@link Error} object with the same properties as the
|
|
83
|
+
* original {@link TrackableError}.
|
|
84
|
+
*/
|
|
85
|
+
function deserializeError(error) {
|
|
86
|
+
const deserializedError = new Error(error.message);
|
|
87
|
+
deserializedError.name = error.name;
|
|
88
|
+
deserializedError.stack = error.stack ?? undefined;
|
|
89
|
+
deserializedError.cause = error.cause
|
|
90
|
+
? deserializeError(error.cause)
|
|
91
|
+
: undefined;
|
|
92
|
+
return deserializedError;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=trackError.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackError.cjs","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AASjD,uDAO+B;AAK/B,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAoBF,MAAM,oBAAoB,GAA2B,IAAA,oBAAM,EAAC;IAC1D,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,OAAO,EAAE,IAAA,oBAAM,GAAE;IACjB,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,oBAAM,GAAE,CAAC;IACzB,KAAK,EAAE,IAAA,sBAAQ,EAAC,IAAA,kBAAI,EAAiB,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;CAClE,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,IAAA,oBAAM,EAAC;IACxC,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CAAC;AAOH;;GAEG;AACU,QAAA,iBAAiB,GAI1B;IACF,WAAW,EAAE,CAAC,iBAAiB,CAAC;IAChC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,oBAAM,EAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAW,EAAE,CAAC;YACjC,MAAM,sBAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACnD,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACnC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n TrackableError,\n TrackErrorParams,\n TrackErrorResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport type { Struct } from '@metamask/superstruct';\nimport {\n create,\n lazy,\n nullable,\n object,\n string,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<TrackErrorMethodHooks> = {\n trackError: true,\n getSnap: true,\n};\n\nexport type TrackErrorMethodHooks = {\n /**\n * Track an error.\n *\n * @param error - The error object to track.\n * @returns The ID of the tracked error, as returned by the Sentry instance\n * in the client.\n */\n trackError: (error: Error) => string;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst TrackableErrorStruct: Struct<TrackableError> = object({\n name: string(),\n message: string(),\n stack: nullable(string()),\n cause: nullable(lazy<TrackableError>(() => TrackableErrorStruct)),\n});\n\nconst TrackErrorParametersStruct = object({\n error: TrackableErrorStruct,\n});\n\nexport type TrackErrorParameters = InferMatching<\n typeof TrackErrorParametersStruct,\n TrackErrorParams\n>;\n\n/**\n * Handler for the `snap_trackError` method.\n */\nexport const trackErrorHandler: PermittedHandlerExport<\n TrackErrorMethodHooks,\n TrackErrorParameters,\n TrackErrorResult\n> = {\n methodNames: ['snap_trackError'],\n implementation: getTrackErrorImplementation,\n hookNames,\n};\n\n/**\n * The `snap_trackError` method implementation. This method allows preinstalled\n * Snaps to send errors to the Sentry instance in the client for tracking.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.trackError - The hook function to track an error.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getTrackErrorImplementation(\n request: JsonRpcRequest<TrackErrorParameters>,\n response: PendingJsonRpcResponse<TrackErrorResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackError, getSnap }: TrackErrorMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<TrackErrorParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n const error = deserializeError(validatedParams.error);\n\n response.result = trackError(error);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_trackError` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackErrorParameters {\n try {\n return create(params, TrackErrorParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n\n/**\n * Deserialize a {@link TrackableError} into a standard {@link Error} object.\n *\n * @param error - The error to deserialize.\n * @returns A standard {@link Error} object with the same properties as the\n * original {@link TrackableError}.\n */\nfunction deserializeError(error: TrackableError): Error {\n const deserializedError = new Error(error.message);\n deserializedError.name = error.name;\n deserializedError.stack = error.stack ?? undefined;\n deserializedError.cause = error.cause\n ? deserializeError(error.cause)\n : undefined;\n\n return deserializedError;\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PermittedHandlerExport } from "@metamask/permission-controller";
|
|
2
|
+
import type { TrackableError, TrackErrorParams, TrackErrorResult } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { InferMatching, Snap } from "@metamask/snaps-utils";
|
|
4
|
+
import type { Struct } from "@metamask/superstruct";
|
|
5
|
+
export type TrackErrorMethodHooks = {
|
|
6
|
+
/**
|
|
7
|
+
* Track an error.
|
|
8
|
+
*
|
|
9
|
+
* @param error - The error object to track.
|
|
10
|
+
* @returns The ID of the tracked error, as returned by the Sentry instance
|
|
11
|
+
* in the client.
|
|
12
|
+
*/
|
|
13
|
+
trackError: (error: Error) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Get Snap metadata.
|
|
16
|
+
*
|
|
17
|
+
* @param snapId - The ID of a Snap.
|
|
18
|
+
*/
|
|
19
|
+
getSnap: (snapId: string) => Snap | undefined;
|
|
20
|
+
};
|
|
21
|
+
declare const TrackErrorParametersStruct: Struct<{
|
|
22
|
+
error: TrackableError;
|
|
23
|
+
}, {
|
|
24
|
+
error: Struct<TrackableError, unknown>;
|
|
25
|
+
}>;
|
|
26
|
+
export type TrackErrorParameters = InferMatching<typeof TrackErrorParametersStruct, TrackErrorParams>;
|
|
27
|
+
/**
|
|
28
|
+
* Handler for the `snap_trackError` method.
|
|
29
|
+
*/
|
|
30
|
+
export declare const trackErrorHandler: PermittedHandlerExport<TrackErrorMethodHooks, TrackErrorParameters, TrackErrorResult>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=trackError.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackError.d.cts","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,8BAA8B;AAkBpD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAErC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AASF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CACpD,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,CAKjB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PermittedHandlerExport } from "@metamask/permission-controller";
|
|
2
|
+
import type { TrackableError, TrackErrorParams, TrackErrorResult } from "@metamask/snaps-sdk";
|
|
3
|
+
import type { InferMatching, Snap } from "@metamask/snaps-utils";
|
|
4
|
+
import type { Struct } from "@metamask/superstruct";
|
|
5
|
+
export type TrackErrorMethodHooks = {
|
|
6
|
+
/**
|
|
7
|
+
* Track an error.
|
|
8
|
+
*
|
|
9
|
+
* @param error - The error object to track.
|
|
10
|
+
* @returns The ID of the tracked error, as returned by the Sentry instance
|
|
11
|
+
* in the client.
|
|
12
|
+
*/
|
|
13
|
+
trackError: (error: Error) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Get Snap metadata.
|
|
16
|
+
*
|
|
17
|
+
* @param snapId - The ID of a Snap.
|
|
18
|
+
*/
|
|
19
|
+
getSnap: (snapId: string) => Snap | undefined;
|
|
20
|
+
};
|
|
21
|
+
declare const TrackErrorParametersStruct: Struct<{
|
|
22
|
+
error: TrackableError;
|
|
23
|
+
}, {
|
|
24
|
+
error: Struct<TrackableError, unknown>;
|
|
25
|
+
}>;
|
|
26
|
+
export type TrackErrorParameters = InferMatching<typeof TrackErrorParametersStruct, TrackErrorParams>;
|
|
27
|
+
/**
|
|
28
|
+
* Handler for the `snap_trackError` method.
|
|
29
|
+
*/
|
|
30
|
+
export declare const trackErrorHandler: PermittedHandlerExport<TrackErrorMethodHooks, TrackErrorParameters, TrackErrorResult>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=trackError.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackError.d.mts","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,wCAAwC;AAE9E,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,4BAA4B;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,8BAA8B;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,8BAA8B;AAkBpD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAErC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AASF,QAAA,MAAM,0BAA0B;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,OAAO,0BAA0B,EACjC,gBAAgB,CACjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAAsB,CACpD,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,CAKjB,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
2
|
+
import { create, lazy, nullable, object, string, StructError } from "@metamask/superstruct";
|
|
3
|
+
const hookNames = {
|
|
4
|
+
trackError: true,
|
|
5
|
+
getSnap: true,
|
|
6
|
+
};
|
|
7
|
+
const TrackableErrorStruct = object({
|
|
8
|
+
name: string(),
|
|
9
|
+
message: string(),
|
|
10
|
+
stack: nullable(string()),
|
|
11
|
+
cause: nullable(lazy(() => TrackableErrorStruct)),
|
|
12
|
+
});
|
|
13
|
+
const TrackErrorParametersStruct = object({
|
|
14
|
+
error: TrackableErrorStruct,
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Handler for the `snap_trackError` method.
|
|
18
|
+
*/
|
|
19
|
+
export const trackErrorHandler = {
|
|
20
|
+
methodNames: ['snap_trackError'],
|
|
21
|
+
implementation: getTrackErrorImplementation,
|
|
22
|
+
hookNames,
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* The `snap_trackError` method implementation. This method allows preinstalled
|
|
26
|
+
* Snaps to send errors to the Sentry instance in the client for tracking.
|
|
27
|
+
*
|
|
28
|
+
* @param request - The JSON-RPC request object.
|
|
29
|
+
* @param response - The JSON-RPC response object.
|
|
30
|
+
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
31
|
+
* function.
|
|
32
|
+
* @param end - The `json-rpc-engine` "end" callback.
|
|
33
|
+
* @param hooks - The RPC method hooks.
|
|
34
|
+
* @param hooks.trackError - The hook function to track an error.
|
|
35
|
+
* @param hooks.getSnap - The hook function to get Snap metadata.
|
|
36
|
+
* @returns Nothing.
|
|
37
|
+
*/
|
|
38
|
+
function getTrackErrorImplementation(request, response, _next, end, { trackError, getSnap }) {
|
|
39
|
+
const snap = getSnap(request.origin);
|
|
40
|
+
if (!snap?.preinstalled) {
|
|
41
|
+
return end(rpcErrors.methodNotFound());
|
|
42
|
+
}
|
|
43
|
+
const { params } = request;
|
|
44
|
+
try {
|
|
45
|
+
const validatedParams = getValidatedParams(params);
|
|
46
|
+
const error = deserializeError(validatedParams.error);
|
|
47
|
+
response.result = trackError(error);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return end(error);
|
|
51
|
+
}
|
|
52
|
+
return end();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Validate the parameters for the `snap_trackError` method.
|
|
56
|
+
*
|
|
57
|
+
* @param params - Parameters to validate.
|
|
58
|
+
* @returns Validated parameters.
|
|
59
|
+
* @throws Throws RPC error if validation fails.
|
|
60
|
+
*/
|
|
61
|
+
function getValidatedParams(params) {
|
|
62
|
+
try {
|
|
63
|
+
return create(params, TrackErrorParametersStruct);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof StructError) {
|
|
67
|
+
throw rpcErrors.invalidParams({
|
|
68
|
+
message: `Invalid params: ${error.message}.`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/* istanbul ignore next */
|
|
72
|
+
throw rpcErrors.internal();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Deserialize a {@link TrackableError} into a standard {@link Error} object.
|
|
77
|
+
*
|
|
78
|
+
* @param error - The error to deserialize.
|
|
79
|
+
* @returns A standard {@link Error} object with the same properties as the
|
|
80
|
+
* original {@link TrackableError}.
|
|
81
|
+
*/
|
|
82
|
+
function deserializeError(error) {
|
|
83
|
+
const deserializedError = new Error(error.message);
|
|
84
|
+
deserializedError.name = error.name;
|
|
85
|
+
deserializedError.stack = error.stack ?? undefined;
|
|
86
|
+
deserializedError.cause = error.cause
|
|
87
|
+
? deserializeError(error.cause)
|
|
88
|
+
: undefined;
|
|
89
|
+
return deserializedError;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=trackError.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackError.mjs","sourceRoot":"","sources":["../../src/permitted/trackError.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AASjD,OAAO,EACL,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,MAAM,EACN,WAAW,EACZ,8BAA8B;AAK/B,MAAM,SAAS,GAA6C;IAC1D,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;CACd,CAAC;AAoBF,MAAM,oBAAoB,GAA2B,MAAM,CAAC;IAC1D,IAAI,EAAE,MAAM,EAAE;IACd,OAAO,EAAE,MAAM,EAAE;IACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAiB,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;CAClE,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CAAC;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAI1B;IACF,WAAW,EAAE,CAAC,iBAAiB,CAAC;IAChC,cAAc,EAAE,2BAA2B;IAC3C,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,2BAA2B,CAClC,OAA6C,EAC7C,QAAkD,EAClD,KAAc,EACd,GAA6B,EAC7B,EAAE,UAAU,EAAE,OAAO,EAAyB;IAE9C,MAAM,IAAI,GAAG,OAAO,CACjB,OAAiE,CAAC,MAAM,CAC1E,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtD,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,CAAC,aAAa,CAAC;gBAC5B,OAAO,EAAE,mBAAmB,KAAK,CAAC,OAAO,GAAG;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;IACnD,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;QACnC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n JsonRpcRequest,\n TrackableError,\n TrackErrorParams,\n TrackErrorResult,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport type { Struct } from '@metamask/superstruct';\nimport {\n create,\n lazy,\n nullable,\n object,\n string,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<TrackErrorMethodHooks> = {\n trackError: true,\n getSnap: true,\n};\n\nexport type TrackErrorMethodHooks = {\n /**\n * Track an error.\n *\n * @param error - The error object to track.\n * @returns The ID of the tracked error, as returned by the Sentry instance\n * in the client.\n */\n trackError: (error: Error) => string;\n\n /**\n * Get Snap metadata.\n *\n * @param snapId - The ID of a Snap.\n */\n getSnap: (snapId: string) => Snap | undefined;\n};\n\nconst TrackableErrorStruct: Struct<TrackableError> = object({\n name: string(),\n message: string(),\n stack: nullable(string()),\n cause: nullable(lazy<TrackableError>(() => TrackableErrorStruct)),\n});\n\nconst TrackErrorParametersStruct = object({\n error: TrackableErrorStruct,\n});\n\nexport type TrackErrorParameters = InferMatching<\n typeof TrackErrorParametersStruct,\n TrackErrorParams\n>;\n\n/**\n * Handler for the `snap_trackError` method.\n */\nexport const trackErrorHandler: PermittedHandlerExport<\n TrackErrorMethodHooks,\n TrackErrorParameters,\n TrackErrorResult\n> = {\n methodNames: ['snap_trackError'],\n implementation: getTrackErrorImplementation,\n hookNames,\n};\n\n/**\n * The `snap_trackError` method implementation. This method allows preinstalled\n * Snaps to send errors to the Sentry instance in the client for tracking.\n *\n * @param request - The JSON-RPC request object.\n * @param response - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.trackError - The hook function to track an error.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getTrackErrorImplementation(\n request: JsonRpcRequest<TrackErrorParameters>,\n response: PendingJsonRpcResponse<TrackErrorResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { trackError, getSnap }: TrackErrorMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<TrackErrorParams> & { origin: string }).origin,\n );\n\n if (!snap?.preinstalled) {\n return end(rpcErrors.methodNotFound());\n }\n\n const { params } = request;\n\n try {\n const validatedParams = getValidatedParams(params);\n const error = deserializeError(validatedParams.error);\n\n response.result = trackError(error);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_trackError` method.\n *\n * @param params - Parameters to validate.\n * @returns Validated parameters.\n * @throws Throws RPC error if validation fails.\n */\nfunction getValidatedParams(params: unknown): TrackErrorParameters {\n try {\n return create(params, TrackErrorParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n\n/**\n * Deserialize a {@link TrackableError} into a standard {@link Error} object.\n *\n * @param error - The error to deserialize.\n * @returns A standard {@link Error} object with the same properties as the\n * original {@link TrackableError}.\n */\nfunction deserializeError(error: TrackableError): Error {\n const deserializedError = new Error(error.message);\n deserializedError.name = error.name;\n deserializedError.stack = error.stack ?? undefined;\n deserializedError.cause = error.cause\n ? deserializeError(error.cause)\n : undefined;\n\n return deserializedError;\n}\n"]}
|