@metamask/snaps-rpc-methods 15.1.0 → 16.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 +34 -4
- package/dist/endowments/keyring.cjs +2 -5
- package/dist/endowments/keyring.cjs.map +1 -1
- package/dist/endowments/keyring.d.cts +0 -2
- package/dist/endowments/keyring.d.cts.map +1 -1
- package/dist/endowments/keyring.d.mts +0 -2
- package/dist/endowments/keyring.d.mts.map +1 -1
- package/dist/endowments/keyring.mjs +3 -6
- package/dist/endowments/keyring.mjs.map +1 -1
- package/dist/index.cjs +1 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/dist/permissions.cjs +18 -8
- package/dist/permissions.cjs.map +1 -1
- package/dist/permissions.d.cts +3 -2
- package/dist/permissions.d.cts.map +1 -1
- package/dist/permissions.d.mts +3 -2
- package/dist/permissions.d.mts.map +1 -1
- package/dist/permissions.mjs +17 -7
- package/dist/permissions.mjs.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.cjs +10 -14
- package/dist/permitted/cancelBackgroundEvent.cjs.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.d.cts +9 -12
- package/dist/permitted/cancelBackgroundEvent.d.cts.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.d.mts +9 -12
- package/dist/permitted/cancelBackgroundEvent.d.mts.map +1 -1
- package/dist/permitted/cancelBackgroundEvent.mjs +10 -14
- package/dist/permitted/cancelBackgroundEvent.mjs.map +1 -1
- package/dist/permitted/clearState.cjs +10 -16
- package/dist/permitted/clearState.cjs.map +1 -1
- package/dist/permitted/clearState.d.cts +9 -23
- package/dist/permitted/clearState.d.cts.map +1 -1
- package/dist/permitted/clearState.d.mts +9 -23
- package/dist/permitted/clearState.d.mts.map +1 -1
- package/dist/permitted/clearState.mjs +10 -16
- package/dist/permitted/clearState.mjs.map +1 -1
- package/dist/permitted/closeWebSocket.cjs +7 -14
- package/dist/permitted/closeWebSocket.cjs.map +1 -1
- package/dist/permitted/closeWebSocket.d.cts +9 -12
- package/dist/permitted/closeWebSocket.d.cts.map +1 -1
- package/dist/permitted/closeWebSocket.d.mts +9 -12
- package/dist/permitted/closeWebSocket.d.mts.map +1 -1
- package/dist/permitted/closeWebSocket.mjs +7 -14
- package/dist/permitted/closeWebSocket.mjs.map +1 -1
- package/dist/permitted/createInterface.cjs +11 -15
- package/dist/permitted/createInterface.cjs.map +1 -1
- package/dist/permitted/createInterface.d.cts +23 -37
- package/dist/permitted/createInterface.d.cts.map +1 -1
- package/dist/permitted/createInterface.d.mts +23 -37
- package/dist/permitted/createInterface.d.mts.map +1 -1
- package/dist/permitted/createInterface.mjs +11 -15
- package/dist/permitted/createInterface.mjs.map +1 -1
- package/dist/permitted/endTrace.cjs +4 -6
- package/dist/permitted/endTrace.cjs.map +1 -1
- package/dist/permitted/endTrace.d.cts +8 -11
- package/dist/permitted/endTrace.d.cts.map +1 -1
- package/dist/permitted/endTrace.d.mts +8 -11
- package/dist/permitted/endTrace.d.mts.map +1 -1
- package/dist/permitted/endTrace.mjs +4 -6
- package/dist/permitted/endTrace.mjs.map +1 -1
- package/dist/permitted/getAllSnaps.cjs +5 -11
- package/dist/permitted/getAllSnaps.cjs.map +1 -1
- package/dist/permitted/getAllSnaps.d.cts +10 -14
- package/dist/permitted/getAllSnaps.d.cts.map +1 -1
- package/dist/permitted/getAllSnaps.d.mts +10 -14
- package/dist/permitted/getAllSnaps.d.mts.map +1 -1
- package/dist/permitted/getAllSnaps.mjs +5 -11
- package/dist/permitted/getAllSnaps.mjs.map +1 -1
- package/dist/permitted/getBackgroundEvents.cjs +8 -15
- package/dist/permitted/getBackgroundEvents.cjs.map +1 -1
- package/dist/permitted/getBackgroundEvents.d.cts +10 -13
- package/dist/permitted/getBackgroundEvents.d.cts.map +1 -1
- package/dist/permitted/getBackgroundEvents.d.mts +10 -13
- package/dist/permitted/getBackgroundEvents.d.mts.map +1 -1
- package/dist/permitted/getBackgroundEvents.mjs +8 -15
- package/dist/permitted/getBackgroundEvents.mjs.map +1 -1
- package/dist/permitted/getClientStatus.cjs +5 -6
- package/dist/permitted/getClientStatus.cjs.map +1 -1
- package/dist/permitted/getClientStatus.d.cts +17 -18
- package/dist/permitted/getClientStatus.d.cts.map +1 -1
- package/dist/permitted/getClientStatus.d.mts +17 -18
- package/dist/permitted/getClientStatus.d.mts.map +1 -1
- package/dist/permitted/getClientStatus.mjs +5 -6
- package/dist/permitted/getClientStatus.mjs.map +1 -1
- package/dist/permitted/getFile.cjs +7 -11
- package/dist/permitted/getFile.cjs.map +1 -1
- package/dist/permitted/getFile.d.cts +8 -10
- package/dist/permitted/getFile.d.cts.map +1 -1
- package/dist/permitted/getFile.d.mts +8 -10
- package/dist/permitted/getFile.d.mts.map +1 -1
- package/dist/permitted/getFile.mjs +7 -11
- package/dist/permitted/getFile.mjs.map +1 -1
- package/dist/permitted/getInterfaceContext.cjs +12 -15
- package/dist/permitted/getInterfaceContext.cjs.map +1 -1
- package/dist/permitted/getInterfaceContext.d.cts +9 -21
- package/dist/permitted/getInterfaceContext.d.cts.map +1 -1
- package/dist/permitted/getInterfaceContext.d.mts +9 -21
- package/dist/permitted/getInterfaceContext.d.mts.map +1 -1
- package/dist/permitted/getInterfaceContext.mjs +12 -15
- package/dist/permitted/getInterfaceContext.mjs.map +1 -1
- package/dist/permitted/getInterfaceState.cjs +11 -15
- package/dist/permitted/getInterfaceState.cjs.map +1 -1
- package/dist/permitted/getInterfaceState.d.cts +9 -21
- package/dist/permitted/getInterfaceState.d.cts.map +1 -1
- package/dist/permitted/getInterfaceState.d.mts +9 -21
- package/dist/permitted/getInterfaceState.d.mts.map +1 -1
- package/dist/permitted/getInterfaceState.mjs +11 -15
- package/dist/permitted/getInterfaceState.mjs.map +1 -1
- package/dist/permitted/getSnaps.cjs +6 -12
- package/dist/permitted/getSnaps.cjs.map +1 -1
- package/dist/permitted/getSnaps.d.cts +11 -14
- package/dist/permitted/getSnaps.d.cts.map +1 -1
- package/dist/permitted/getSnaps.d.mts +11 -14
- package/dist/permitted/getSnaps.d.mts.map +1 -1
- package/dist/permitted/getSnaps.mjs +6 -12
- package/dist/permitted/getSnaps.mjs.map +1 -1
- package/dist/permitted/getState.cjs +9 -11
- package/dist/permitted/getState.cjs.map +1 -1
- package/dist/permitted/getState.d.cts +17 -28
- package/dist/permitted/getState.d.cts.map +1 -1
- package/dist/permitted/getState.d.mts +17 -28
- package/dist/permitted/getState.d.mts.map +1 -1
- package/dist/permitted/getState.mjs +9 -11
- package/dist/permitted/getState.mjs.map +1 -1
- package/dist/permitted/getWebSockets.cjs +11 -14
- package/dist/permitted/getWebSockets.cjs.map +1 -1
- package/dist/permitted/getWebSockets.d.cts +10 -13
- package/dist/permitted/getWebSockets.d.cts.map +1 -1
- package/dist/permitted/getWebSockets.d.mts +10 -13
- package/dist/permitted/getWebSockets.d.mts.map +1 -1
- package/dist/permitted/getWebSockets.mjs +11 -14
- package/dist/permitted/getWebSockets.mjs.map +1 -1
- package/dist/permitted/index.cjs +0 -1
- package/dist/permitted/index.cjs.map +1 -1
- package/dist/permitted/index.d.cts +29 -25
- package/dist/permitted/index.d.cts.map +1 -1
- package/dist/permitted/index.d.mts +29 -25
- package/dist/permitted/index.d.mts.map +1 -1
- package/dist/permitted/index.mjs +0 -1
- package/dist/permitted/index.mjs.map +1 -1
- package/dist/permitted/invokeKeyring.cjs +12 -13
- package/dist/permitted/invokeKeyring.cjs.map +1 -1
- package/dist/permitted/invokeKeyring.d.cts +17 -16
- package/dist/permitted/invokeKeyring.d.cts.map +1 -1
- package/dist/permitted/invokeKeyring.d.mts +17 -16
- package/dist/permitted/invokeKeyring.d.mts.map +1 -1
- package/dist/permitted/invokeKeyring.mjs +12 -13
- package/dist/permitted/invokeKeyring.mjs.map +1 -1
- package/dist/permitted/invokeSnapSugar.cjs +6 -10
- package/dist/permitted/invokeSnapSugar.cjs.map +1 -1
- package/dist/permitted/invokeSnapSugar.d.cts +9 -12
- package/dist/permitted/invokeSnapSugar.d.cts.map +1 -1
- package/dist/permitted/invokeSnapSugar.d.mts +9 -12
- package/dist/permitted/invokeSnapSugar.d.mts.map +1 -1
- package/dist/permitted/invokeSnapSugar.mjs +6 -10
- package/dist/permitted/invokeSnapSugar.mjs.map +1 -1
- package/dist/permitted/listEntropySources.cjs +28 -12
- package/dist/permitted/listEntropySources.cjs.map +1 -1
- package/dist/permitted/listEntropySources.d.cts +12 -23
- package/dist/permitted/listEntropySources.d.cts.map +1 -1
- package/dist/permitted/listEntropySources.d.mts +12 -23
- package/dist/permitted/listEntropySources.d.mts.map +1 -1
- package/dist/permitted/listEntropySources.mjs +28 -12
- package/dist/permitted/listEntropySources.mjs.map +1 -1
- package/dist/permitted/middleware.cjs +70 -20
- package/dist/permitted/middleware.cjs.map +1 -1
- package/dist/permitted/middleware.d.cts +5 -2
- package/dist/permitted/middleware.d.cts.map +1 -1
- package/dist/permitted/middleware.d.mts +5 -2
- package/dist/permitted/middleware.d.mts.map +1 -1
- package/dist/permitted/middleware.mjs +70 -20
- package/dist/permitted/middleware.mjs.map +1 -1
- package/dist/permitted/openWebSocket.cjs +7 -14
- package/dist/permitted/openWebSocket.cjs.map +1 -1
- package/dist/permitted/openWebSocket.d.cts +9 -12
- package/dist/permitted/openWebSocket.d.cts.map +1 -1
- package/dist/permitted/openWebSocket.d.mts +9 -12
- package/dist/permitted/openWebSocket.d.mts.map +1 -1
- package/dist/permitted/openWebSocket.mjs +7 -14
- package/dist/permitted/openWebSocket.mjs.map +1 -1
- package/dist/permitted/requestSnaps.cjs +14 -19
- package/dist/permitted/requestSnaps.cjs.map +1 -1
- package/dist/permitted/requestSnaps.d.cts +9 -36
- package/dist/permitted/requestSnaps.d.cts.map +1 -1
- package/dist/permitted/requestSnaps.d.mts +9 -36
- package/dist/permitted/requestSnaps.d.mts.map +1 -1
- package/dist/permitted/requestSnaps.mjs +15 -20
- package/dist/permitted/requestSnaps.mjs.map +1 -1
- package/dist/permitted/resolveInterface.cjs +11 -15
- package/dist/permitted/resolveInterface.cjs.map +1 -1
- package/dist/permitted/resolveInterface.d.cts +12 -24
- package/dist/permitted/resolveInterface.d.cts.map +1 -1
- package/dist/permitted/resolveInterface.d.mts +12 -24
- package/dist/permitted/resolveInterface.d.mts.map +1 -1
- package/dist/permitted/resolveInterface.mjs +11 -15
- package/dist/permitted/resolveInterface.mjs.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.cjs +11 -14
- package/dist/permitted/scheduleBackgroundEvent.cjs.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.d.cts +10 -17
- package/dist/permitted/scheduleBackgroundEvent.d.cts.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.d.mts +10 -17
- package/dist/permitted/scheduleBackgroundEvent.d.mts.map +1 -1
- package/dist/permitted/scheduleBackgroundEvent.mjs +11 -14
- package/dist/permitted/scheduleBackgroundEvent.mjs.map +1 -1
- package/dist/permitted/sendWebSocketMessage.cjs +10 -14
- package/dist/permitted/sendWebSocketMessage.cjs.map +1 -1
- package/dist/permitted/sendWebSocketMessage.d.cts +9 -12
- package/dist/permitted/sendWebSocketMessage.d.cts.map +1 -1
- package/dist/permitted/sendWebSocketMessage.d.mts +9 -12
- package/dist/permitted/sendWebSocketMessage.d.mts.map +1 -1
- package/dist/permitted/sendWebSocketMessage.mjs +10 -14
- package/dist/permitted/sendWebSocketMessage.mjs.map +1 -1
- package/dist/permitted/setState.cjs +18 -21
- package/dist/permitted/setState.cjs.map +1 -1
- package/dist/permitted/setState.d.cts +18 -45
- package/dist/permitted/setState.d.cts.map +1 -1
- package/dist/permitted/setState.d.mts +18 -45
- package/dist/permitted/setState.d.mts.map +1 -1
- package/dist/permitted/setState.mjs +18 -21
- package/dist/permitted/setState.mjs.map +1 -1
- package/dist/permitted/startTrace.cjs +4 -6
- package/dist/permitted/startTrace.cjs.map +1 -1
- package/dist/permitted/startTrace.d.cts +8 -11
- package/dist/permitted/startTrace.d.cts.map +1 -1
- package/dist/permitted/startTrace.d.mts +8 -11
- package/dist/permitted/startTrace.d.mts.map +1 -1
- package/dist/permitted/startTrace.mjs +4 -6
- package/dist/permitted/startTrace.mjs.map +1 -1
- package/dist/permitted/trackError.cjs +4 -6
- package/dist/permitted/trackError.cjs.map +1 -1
- package/dist/permitted/trackError.d.cts +8 -11
- package/dist/permitted/trackError.d.cts.map +1 -1
- package/dist/permitted/trackError.d.mts +8 -11
- package/dist/permitted/trackError.d.mts.map +1 -1
- package/dist/permitted/trackError.mjs +4 -6
- package/dist/permitted/trackError.mjs.map +1 -1
- package/dist/permitted/trackEvent.cjs +4 -6
- package/dist/permitted/trackEvent.cjs.map +1 -1
- package/dist/permitted/trackEvent.d.cts +8 -11
- package/dist/permitted/trackEvent.d.cts.map +1 -1
- package/dist/permitted/trackEvent.d.mts +8 -11
- package/dist/permitted/trackEvent.d.mts.map +1 -1
- package/dist/permitted/trackEvent.mjs +4 -6
- package/dist/permitted/trackEvent.mjs.map +1 -1
- package/dist/permitted/updateInterface.cjs +11 -15
- package/dist/permitted/updateInterface.cjs.map +1 -1
- package/dist/permitted/updateInterface.d.cts +9 -22
- package/dist/permitted/updateInterface.d.cts.map +1 -1
- package/dist/permitted/updateInterface.d.mts +9 -22
- package/dist/permitted/updateInterface.d.mts.map +1 -1
- package/dist/permitted/updateInterface.mjs +11 -15
- package/dist/permitted/updateInterface.mjs.map +1 -1
- package/dist/restricted/dialog.cjs +23 -30
- package/dist/restricted/dialog.cjs.map +1 -1
- package/dist/restricted/dialog.d.cts +10 -58
- package/dist/restricted/dialog.d.cts.map +1 -1
- package/dist/restricted/dialog.d.mts +10 -58
- package/dist/restricted/dialog.d.mts.map +1 -1
- package/dist/restricted/dialog.mjs +23 -30
- package/dist/restricted/dialog.mjs.map +1 -1
- package/dist/restricted/getBip32Entropy.cjs +15 -12
- package/dist/restricted/getBip32Entropy.cjs.map +1 -1
- package/dist/restricted/getBip32Entropy.d.cts +11 -24
- package/dist/restricted/getBip32Entropy.d.cts.map +1 -1
- package/dist/restricted/getBip32Entropy.d.mts +11 -24
- package/dist/restricted/getBip32Entropy.d.mts.map +1 -1
- package/dist/restricted/getBip32Entropy.mjs +16 -13
- package/dist/restricted/getBip32Entropy.mjs.map +1 -1
- package/dist/restricted/getBip32PublicKey.cjs +15 -12
- package/dist/restricted/getBip32PublicKey.cjs.map +1 -1
- package/dist/restricted/getBip32PublicKey.d.cts +11 -24
- package/dist/restricted/getBip32PublicKey.d.cts.map +1 -1
- package/dist/restricted/getBip32PublicKey.d.mts +11 -24
- package/dist/restricted/getBip32PublicKey.d.mts.map +1 -1
- package/dist/restricted/getBip32PublicKey.mjs +16 -13
- package/dist/restricted/getBip32PublicKey.mjs.map +1 -1
- package/dist/restricted/getBip44Entropy.cjs +14 -10
- package/dist/restricted/getBip44Entropy.cjs.map +1 -1
- package/dist/restricted/getBip44Entropy.d.cts +11 -15
- package/dist/restricted/getBip44Entropy.d.cts.map +1 -1
- package/dist/restricted/getBip44Entropy.d.mts +11 -15
- package/dist/restricted/getBip44Entropy.d.mts.map +1 -1
- package/dist/restricted/getBip44Entropy.mjs +15 -11
- package/dist/restricted/getBip44Entropy.mjs.map +1 -1
- package/dist/restricted/getEntropy.cjs +10 -10
- package/dist/restricted/getEntropy.cjs.map +1 -1
- package/dist/restricted/getEntropy.d.cts +11 -15
- package/dist/restricted/getEntropy.d.cts.map +1 -1
- package/dist/restricted/getEntropy.d.mts +11 -15
- package/dist/restricted/getEntropy.d.mts.map +1 -1
- package/dist/restricted/getEntropy.mjs +11 -11
- package/dist/restricted/getEntropy.mjs.map +1 -1
- package/dist/restricted/index.cjs.map +1 -1
- package/dist/restricted/index.d.cts +20 -160
- package/dist/restricted/index.d.cts.map +1 -1
- package/dist/restricted/index.d.mts +20 -160
- package/dist/restricted/index.d.mts.map +1 -1
- package/dist/restricted/index.mjs.map +1 -1
- package/dist/restricted/invokeSnap.cjs +11 -12
- package/dist/restricted/invokeSnap.cjs.map +1 -1
- package/dist/restricted/invokeSnap.d.cts +9 -13
- package/dist/restricted/invokeSnap.d.cts.map +1 -1
- package/dist/restricted/invokeSnap.d.mts +9 -13
- package/dist/restricted/invokeSnap.d.mts.map +1 -1
- package/dist/restricted/invokeSnap.mjs +11 -12
- package/dist/restricted/invokeSnap.mjs.map +1 -1
- package/dist/restricted/manageState.cjs +21 -20
- package/dist/restricted/manageState.cjs.map +1 -1
- package/dist/restricted/manageState.d.cts +12 -34
- package/dist/restricted/manageState.d.cts.map +1 -1
- package/dist/restricted/manageState.d.mts +12 -34
- package/dist/restricted/manageState.d.mts.map +1 -1
- package/dist/restricted/manageState.mjs +21 -20
- package/dist/restricted/manageState.mjs.map +1 -1
- package/dist/restricted/notify.cjs +31 -24
- package/dist/restricted/notify.cjs.map +1 -1
- package/dist/restricted/notify.d.cts +16 -25
- package/dist/restricted/notify.d.cts.map +1 -1
- package/dist/restricted/notify.d.mts +16 -25
- package/dist/restricted/notify.d.mts.map +1 -1
- package/dist/restricted/notify.mjs +32 -25
- package/dist/restricted/notify.mjs.map +1 -1
- package/dist/types.cjs +3 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +155 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +155 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils.cjs +78 -24
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +21 -13
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +21 -13
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +75 -22
- package/dist/utils.mjs.map +1 -1
- package/package.json +6 -6
- package/dist/permitted/handlers.cjs +0 -63
- package/dist/permitted/handlers.cjs.map +0 -1
- package/dist/permitted/handlers.d.cts +0 -299
- package/dist/permitted/handlers.d.cts.map +0 -1
- package/dist/permitted/handlers.d.mts +0 -299
- package/dist/permitted/handlers.d.mts.map +0 -1
- package/dist/permitted/handlers.mjs +0 -60
- package/dist/permitted/handlers.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.cjs","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"middleware.cjs","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":";;;AAAA,+DAGmC;AAEnC,qDAAiD;AACjD,uDAAiD;AAIjD,uEAAuE;AACvE,iDAAiD;AACjD,yDAAyD;AACzD,2DAA2D;AAC3D,6CAA6C;AAC7C,mDAAmD;AACnD,mEAAmE;AACnE,2DAA2D;AAC3D,2CAA2C;AAC3C,mEAAmE;AACnE,+DAA+D;AAC/D,6CAA6C;AAC7C,6CAA6C;AAC7C,uDAAuD;AACvD,uDAAuD;AACvD,2DAA2D;AAC3D,iEAAiE;AACjE,uDAAuD;AACvD,qDAAqD;AACrD,6DAA6D;AAC7D,2EAA2E;AAC3E,qEAAqE;AACrE,6CAA6C;AAC7C,iDAAiD;AACjD,iDAAiD;AACjD,iDAAiD;AACjD,2DAA2D;AAE3D,yDAAyD;AACzD,MAAM,cAAc,GAAG;IACrB,kBAAkB,EAAE,gCAAkB;IACtC,eAAe,EAAE,0BAAe;IAChC,mBAAmB,EAAE,kCAAmB;IACxC,iBAAiB,EAAE,wCAAsB;IACzC,oBAAoB,EAAE,oCAAoB;IAC1C,eAAe,EAAE,8BAAiB;IAClC,oBAAoB,EAAE,wCAAsB;IAC5C,YAAY,EAAE,wBAAc;IAC5B,aAAa,EAAE,0BAAe;IAC9B,oBAAoB,EAAE,wCAAsB;IAC5C,oBAAoB,EAAE,wCAAsB;IAC5C,sBAAsB,EAAE,4CAAwB;IAChD,wBAAwB,EAAE,gDAA0B;IACpD,uBAAuB,EAAE,8CAAyB;IAClD,qBAAqB,EAAE,0CAAuB;IAC9C,4BAA4B,EAAE,wDAA8B;IAC5D,0BAA0B,EAAE,oDAA4B;IACxD,wBAAwB,EAAE,gDAA0B;IACpD,aAAa,EAAE,0BAAe;IAC9B,eAAe,EAAE,8BAAiB;IAClC,eAAe,EAAE,8BAAiB;IAClC,kBAAkB,EAAE,oCAAoB;IACxC,mBAAmB,EAAE,sCAAqB;IAC1C,yBAAyB,EAAE,kDAA2B;IACtD,kBAAkB,EAAE,oCAAoB;IACxC,eAAe,EAAE,8BAAiB;IAClC,aAAa,EAAE,0BAAe;CAC/B,CAAC;AACF,wDAAwD;AAExD;;;;;;;GAOG;AACH,SAAgB,2BAA2B,CACzC,MAAe,EACf,KAA8B,EAC9B,SAAuD;IAEvD,MAAM,gBAAgB,GAAG,IAAA,wCAAsB,EAAC;QAC9C,QAAQ,EAAE,cAAc;QACxB,KAAK;QACL,SAAS;QACT,OAAO,EAAE,sBAAQ;KAClB,CAAC,CAAC;IAEH,iEAAiE;IACjE,kEAAkE;IAClE,OAAO,KAAK,UAAU,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG;QACjE,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACzE,OAAO,GAAG,CAAC,sBAAS,CAAC,cAAc,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC;AArBD,kEAqBC","sourcesContent":["import {\n createMethodMiddleware,\n type JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { logError } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\n\nimport type { PermittedRpcMethodActions, PermittedRpcMethodHooks } from '.';\nimport { cancelBackgroundEventHandler } from './cancelBackgroundEvent';\nimport { clearStateHandler } from './clearState';\nimport { closeWebSocketHandler } from './closeWebSocket';\nimport { createInterfaceHandler } from './createInterface';\nimport { endTraceHandler } from './endTrace';\nimport { getAllSnapsHandler } from './getAllSnaps';\nimport { getBackgroundEventsHandler } from './getBackgroundEvents';\nimport { getClientStatusHandler } from './getClientStatus';\nimport { getFileHandler } from './getFile';\nimport { getInterfaceContextHandler } from './getInterfaceContext';\nimport { getInterfaceStateHandler } from './getInterfaceState';\nimport { getSnapsHandler } from './getSnaps';\nimport { getStateHandler } from './getState';\nimport { getWebSocketsHandler } from './getWebSockets';\nimport { invokeKeyringHandler } from './invokeKeyring';\nimport { invokeSnapSugarHandler } from './invokeSnapSugar';\nimport { listEntropySourcesHandler } from './listEntropySources';\nimport { openWebSocketHandler } from './openWebSocket';\nimport { requestSnapsHandler } from './requestSnaps';\nimport { resolveInterfaceHandler } from './resolveInterface';\nimport { scheduleBackgroundEventHandler } from './scheduleBackgroundEvent';\nimport { sendWebSocketMessageHandler } from './sendWebSocketMessage';\nimport { setStateHandler } from './setState';\nimport { startTraceHandler } from './startTrace';\nimport { trackErrorHandler } from './trackError';\nimport { trackEventHandler } from './trackEvent';\nimport { updateInterfaceHandler } from './updateInterface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nconst methodHandlers = {\n wallet_getAllSnaps: getAllSnapsHandler,\n wallet_getSnaps: getSnapsHandler,\n wallet_requestSnaps: requestSnapsHandler,\n wallet_invokeSnap: invokeSnapSugarHandler,\n wallet_invokeKeyring: invokeKeyringHandler,\n snap_clearState: clearStateHandler,\n snap_getClientStatus: getClientStatusHandler,\n snap_getFile: getFileHandler,\n snap_getState: getStateHandler,\n snap_createInterface: createInterfaceHandler,\n snap_updateInterface: updateInterfaceHandler,\n snap_getInterfaceState: getInterfaceStateHandler,\n snap_getInterfaceContext: getInterfaceContextHandler,\n snap_listEntropySources: listEntropySourcesHandler,\n snap_resolveInterface: resolveInterfaceHandler,\n snap_scheduleBackgroundEvent: scheduleBackgroundEventHandler,\n snap_cancelBackgroundEvent: cancelBackgroundEventHandler,\n snap_getBackgroundEvents: getBackgroundEventsHandler,\n snap_setState: setStateHandler,\n snap_trackError: trackErrorHandler,\n snap_trackEvent: trackEventHandler,\n snap_openWebSocket: openWebSocketHandler,\n snap_closeWebSocket: closeWebSocketHandler,\n snap_sendWebSocketMessage: sendWebSocketMessageHandler,\n snap_getWebSockets: getWebSocketsHandler,\n snap_startTrace: startTraceHandler,\n snap_endTrace: endTraceHandler,\n};\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/**\n * Creates a middleware that handles permitted snap RPC methods.\n *\n * @param isSnap - A flag that should indicate whether the requesting origin is a snap or not.\n * @param hooks - An object containing the hooks made available to the permitted RPC methods.\n * @param messenger - The messenger.\n * @returns The middleware.\n */\nexport function createSnapsMethodMiddleware(\n isSnap: boolean,\n hooks: PermittedRpcMethodHooks,\n messenger: Messenger<string, PermittedRpcMethodActions>,\n): JsonRpcMiddleware<JsonRpcParams, Json> {\n const nestedMiddleware = createMethodMiddleware({\n handlers: methodHandlers,\n hooks,\n messenger,\n onError: logError,\n });\n\n // This is not actually a misused promise, the type is just wrong\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async function methodMiddleware(request, response, next, end) {\n if (String.prototype.startsWith.call(request.method, 'snap_') && !isSnap) {\n return end(rpcErrors.methodNotFound());\n }\n\n return nestedMiddleware(request, response, next, end);\n };\n}\n"]}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { Messenger } from "@metamask/messenger";
|
|
2
3
|
import type { Json, JsonRpcParams } from "@metamask/utils";
|
|
4
|
+
import type { PermittedRpcMethodActions, PermittedRpcMethodHooks } from "./index.cjs";
|
|
3
5
|
/**
|
|
4
6
|
* Creates a middleware that handles permitted snap RPC methods.
|
|
5
7
|
*
|
|
6
8
|
* @param isSnap - A flag that should indicate whether the requesting origin is a snap or not.
|
|
7
9
|
* @param hooks - An object containing the hooks made available to the permitted RPC methods.
|
|
10
|
+
* @param messenger - The messenger.
|
|
8
11
|
* @returns The middleware.
|
|
9
12
|
*/
|
|
10
|
-
export declare function createSnapsMethodMiddleware(isSnap: boolean, hooks:
|
|
13
|
+
export declare function createSnapsMethodMiddleware(isSnap: boolean, hooks: PermittedRpcMethodHooks, messenger: Messenger<string, PermittedRpcMethodActions>): JsonRpcMiddleware<JsonRpcParams, Json>;
|
|
11
14
|
//# sourceMappingURL=middleware.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.cts","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"middleware.d.cts","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACvB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAE3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,oBAAU;AA6D5E;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC,GACtD,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAiBxC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
+
import type { Messenger } from "@metamask/messenger";
|
|
2
3
|
import type { Json, JsonRpcParams } from "@metamask/utils";
|
|
4
|
+
import type { PermittedRpcMethodActions, PermittedRpcMethodHooks } from "./index.mjs";
|
|
3
5
|
/**
|
|
4
6
|
* Creates a middleware that handles permitted snap RPC methods.
|
|
5
7
|
*
|
|
6
8
|
* @param isSnap - A flag that should indicate whether the requesting origin is a snap or not.
|
|
7
9
|
* @param hooks - An object containing the hooks made available to the permitted RPC methods.
|
|
10
|
+
* @param messenger - The messenger.
|
|
8
11
|
* @returns The middleware.
|
|
9
12
|
*/
|
|
10
|
-
export declare function createSnapsMethodMiddleware(isSnap: boolean, hooks:
|
|
13
|
+
export declare function createSnapsMethodMiddleware(isSnap: boolean, hooks: PermittedRpcMethodHooks, messenger: Messenger<string, PermittedRpcMethodActions>): JsonRpcMiddleware<JsonRpcParams, Json>;
|
|
11
14
|
//# sourceMappingURL=middleware.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.mts","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"middleware.d.mts","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACvB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AAGrD,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAE3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,oBAAU;AA6D5E;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,yBAAyB,CAAC,GACtD,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAiBxC"}
|
|
@@ -1,36 +1,86 @@
|
|
|
1
|
+
import { createMethodMiddleware } from "@metamask/json-rpc-engine";
|
|
1
2
|
import { rpcErrors } from "@metamask/rpc-errors";
|
|
2
3
|
import { logError } from "@metamask/snaps-utils";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
4
|
+
import { cancelBackgroundEventHandler } from "./cancelBackgroundEvent.mjs";
|
|
5
|
+
import { clearStateHandler } from "./clearState.mjs";
|
|
6
|
+
import { closeWebSocketHandler } from "./closeWebSocket.mjs";
|
|
7
|
+
import { createInterfaceHandler } from "./createInterface.mjs";
|
|
8
|
+
import { endTraceHandler } from "./endTrace.mjs";
|
|
9
|
+
import { getAllSnapsHandler } from "./getAllSnaps.mjs";
|
|
10
|
+
import { getBackgroundEventsHandler } from "./getBackgroundEvents.mjs";
|
|
11
|
+
import { getClientStatusHandler } from "./getClientStatus.mjs";
|
|
12
|
+
import { getFileHandler } from "./getFile.mjs";
|
|
13
|
+
import { getInterfaceContextHandler } from "./getInterfaceContext.mjs";
|
|
14
|
+
import { getInterfaceStateHandler } from "./getInterfaceState.mjs";
|
|
15
|
+
import { getSnapsHandler } from "./getSnaps.mjs";
|
|
16
|
+
import { getStateHandler } from "./getState.mjs";
|
|
17
|
+
import { getWebSocketsHandler } from "./getWebSockets.mjs";
|
|
18
|
+
import { invokeKeyringHandler } from "./invokeKeyring.mjs";
|
|
19
|
+
import { invokeSnapSugarHandler } from "./invokeSnapSugar.mjs";
|
|
20
|
+
import { listEntropySourcesHandler } from "./listEntropySources.mjs";
|
|
21
|
+
import { openWebSocketHandler } from "./openWebSocket.mjs";
|
|
22
|
+
import { requestSnapsHandler } from "./requestSnaps.mjs";
|
|
23
|
+
import { resolveInterfaceHandler } from "./resolveInterface.mjs";
|
|
24
|
+
import { scheduleBackgroundEventHandler } from "./scheduleBackgroundEvent.mjs";
|
|
25
|
+
import { sendWebSocketMessageHandler } from "./sendWebSocketMessage.mjs";
|
|
26
|
+
import { setStateHandler } from "./setState.mjs";
|
|
27
|
+
import { startTraceHandler } from "./startTrace.mjs";
|
|
28
|
+
import { trackErrorHandler } from "./trackError.mjs";
|
|
29
|
+
import { trackEventHandler } from "./trackEvent.mjs";
|
|
30
|
+
import { updateInterfaceHandler } from "./updateInterface.mjs";
|
|
31
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
32
|
+
const methodHandlers = {
|
|
33
|
+
wallet_getAllSnaps: getAllSnapsHandler,
|
|
34
|
+
wallet_getSnaps: getSnapsHandler,
|
|
35
|
+
wallet_requestSnaps: requestSnapsHandler,
|
|
36
|
+
wallet_invokeSnap: invokeSnapSugarHandler,
|
|
37
|
+
wallet_invokeKeyring: invokeKeyringHandler,
|
|
38
|
+
snap_clearState: clearStateHandler,
|
|
39
|
+
snap_getClientStatus: getClientStatusHandler,
|
|
40
|
+
snap_getFile: getFileHandler,
|
|
41
|
+
snap_getState: getStateHandler,
|
|
42
|
+
snap_createInterface: createInterfaceHandler,
|
|
43
|
+
snap_updateInterface: updateInterfaceHandler,
|
|
44
|
+
snap_getInterfaceState: getInterfaceStateHandler,
|
|
45
|
+
snap_getInterfaceContext: getInterfaceContextHandler,
|
|
46
|
+
snap_listEntropySources: listEntropySourcesHandler,
|
|
47
|
+
snap_resolveInterface: resolveInterfaceHandler,
|
|
48
|
+
snap_scheduleBackgroundEvent: scheduleBackgroundEventHandler,
|
|
49
|
+
snap_cancelBackgroundEvent: cancelBackgroundEventHandler,
|
|
50
|
+
snap_getBackgroundEvents: getBackgroundEventsHandler,
|
|
51
|
+
snap_setState: setStateHandler,
|
|
52
|
+
snap_trackError: trackErrorHandler,
|
|
53
|
+
snap_trackEvent: trackEventHandler,
|
|
54
|
+
snap_openWebSocket: openWebSocketHandler,
|
|
55
|
+
snap_closeWebSocket: closeWebSocketHandler,
|
|
56
|
+
snap_sendWebSocketMessage: sendWebSocketMessageHandler,
|
|
57
|
+
snap_getWebSockets: getWebSocketsHandler,
|
|
58
|
+
snap_startTrace: startTraceHandler,
|
|
59
|
+
snap_endTrace: endTraceHandler,
|
|
60
|
+
};
|
|
61
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
5
62
|
/**
|
|
6
63
|
* Creates a middleware that handles permitted snap RPC methods.
|
|
7
64
|
*
|
|
8
65
|
* @param isSnap - A flag that should indicate whether the requesting origin is a snap or not.
|
|
9
66
|
* @param hooks - An object containing the hooks made available to the permitted RPC methods.
|
|
67
|
+
* @param messenger - The messenger.
|
|
10
68
|
* @returns The middleware.
|
|
11
69
|
*/
|
|
12
|
-
export function createSnapsMethodMiddleware(isSnap, hooks) {
|
|
70
|
+
export function createSnapsMethodMiddleware(isSnap, hooks, messenger) {
|
|
71
|
+
const nestedMiddleware = createMethodMiddleware({
|
|
72
|
+
handlers: methodHandlers,
|
|
73
|
+
hooks,
|
|
74
|
+
messenger,
|
|
75
|
+
onError: logError,
|
|
76
|
+
});
|
|
13
77
|
// This is not actually a misused promise, the type is just wrong
|
|
14
78
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
15
79
|
return async function methodMiddleware(request, response, next, end) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (String.prototype.startsWith.call(request.method, 'snap_') &&
|
|
19
|
-
!isSnap) {
|
|
20
|
-
return end(rpcErrors.methodNotFound());
|
|
21
|
-
}
|
|
22
|
-
// TODO: Once json-rpc-engine types are up to date, we should type this correctly
|
|
23
|
-
const { implementation, hookNames } = handler;
|
|
24
|
-
try {
|
|
25
|
-
// Implementations may or may not be async, so we must await them.
|
|
26
|
-
return await implementation(request, response, next, end, selectHooks(hooks, hookNames));
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
logError(error);
|
|
30
|
-
return end(error);
|
|
31
|
-
}
|
|
80
|
+
if (String.prototype.startsWith.call(request.method, 'snap_') && !isSnap) {
|
|
81
|
+
return end(rpcErrors.methodNotFound());
|
|
32
82
|
}
|
|
33
|
-
return next
|
|
83
|
+
return nestedMiddleware(request, response, next, end);
|
|
34
84
|
};
|
|
35
85
|
}
|
|
36
86
|
//# sourceMappingURL=middleware.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.mjs","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware.mjs","sourceRoot":"","sources":["../../src/permitted/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAEvB,kCAAkC;AAEnC,OAAO,EAAE,SAAS,EAAE,6BAA6B;AACjD,OAAO,EAAE,QAAQ,EAAE,8BAA8B;AAIjD,OAAO,EAAE,4BAA4B,EAAE,oCAAgC;AACvE,OAAO,EAAE,iBAAiB,EAAE,yBAAqB;AACjD,OAAO,EAAE,qBAAqB,EAAE,6BAAyB;AACzD,OAAO,EAAE,sBAAsB,EAAE,8BAA0B;AAC3D,OAAO,EAAE,eAAe,EAAE,uBAAmB;AAC7C,OAAO,EAAE,kBAAkB,EAAE,0BAAsB;AACnD,OAAO,EAAE,0BAA0B,EAAE,kCAA8B;AACnE,OAAO,EAAE,sBAAsB,EAAE,8BAA0B;AAC3D,OAAO,EAAE,cAAc,EAAE,sBAAkB;AAC3C,OAAO,EAAE,0BAA0B,EAAE,kCAA8B;AACnE,OAAO,EAAE,wBAAwB,EAAE,gCAA4B;AAC/D,OAAO,EAAE,eAAe,EAAE,uBAAmB;AAC7C,OAAO,EAAE,eAAe,EAAE,uBAAmB;AAC7C,OAAO,EAAE,oBAAoB,EAAE,4BAAwB;AACvD,OAAO,EAAE,oBAAoB,EAAE,4BAAwB;AACvD,OAAO,EAAE,sBAAsB,EAAE,8BAA0B;AAC3D,OAAO,EAAE,yBAAyB,EAAE,iCAA6B;AACjE,OAAO,EAAE,oBAAoB,EAAE,4BAAwB;AACvD,OAAO,EAAE,mBAAmB,EAAE,2BAAuB;AACrD,OAAO,EAAE,uBAAuB,EAAE,+BAA2B;AAC7D,OAAO,EAAE,8BAA8B,EAAE,sCAAkC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,mCAA+B;AACrE,OAAO,EAAE,eAAe,EAAE,uBAAmB;AAC7C,OAAO,EAAE,iBAAiB,EAAE,yBAAqB;AACjD,OAAO,EAAE,iBAAiB,EAAE,yBAAqB;AACjD,OAAO,EAAE,iBAAiB,EAAE,yBAAqB;AACjD,OAAO,EAAE,sBAAsB,EAAE,8BAA0B;AAE3D,yDAAyD;AACzD,MAAM,cAAc,GAAG;IACrB,kBAAkB,EAAE,kBAAkB;IACtC,eAAe,EAAE,eAAe;IAChC,mBAAmB,EAAE,mBAAmB;IACxC,iBAAiB,EAAE,sBAAsB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,4BAA4B,EAAE,8BAA8B;IAC5D,0BAA0B,EAAE,4BAA4B;IACxD,wBAAwB,EAAE,0BAA0B;IACpD,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,yBAAyB,EAAE,2BAA2B;IACtD,kBAAkB,EAAE,oBAAoB;IACxC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;CAC/B,CAAC;AACF,wDAAwD;AAExD;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAe,EACf,KAA8B,EAC9B,SAAuD;IAEvD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;QAC9C,QAAQ,EAAE,cAAc;QACxB,KAAK;QACL,SAAS;QACT,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,iEAAiE;IACjE,kEAAkE;IAClE,OAAO,KAAK,UAAU,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG;QACjE,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACzE,OAAO,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import {\n createMethodMiddleware,\n type JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { logError } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\n\nimport type { PermittedRpcMethodActions, PermittedRpcMethodHooks } from '.';\nimport { cancelBackgroundEventHandler } from './cancelBackgroundEvent';\nimport { clearStateHandler } from './clearState';\nimport { closeWebSocketHandler } from './closeWebSocket';\nimport { createInterfaceHandler } from './createInterface';\nimport { endTraceHandler } from './endTrace';\nimport { getAllSnapsHandler } from './getAllSnaps';\nimport { getBackgroundEventsHandler } from './getBackgroundEvents';\nimport { getClientStatusHandler } from './getClientStatus';\nimport { getFileHandler } from './getFile';\nimport { getInterfaceContextHandler } from './getInterfaceContext';\nimport { getInterfaceStateHandler } from './getInterfaceState';\nimport { getSnapsHandler } from './getSnaps';\nimport { getStateHandler } from './getState';\nimport { getWebSocketsHandler } from './getWebSockets';\nimport { invokeKeyringHandler } from './invokeKeyring';\nimport { invokeSnapSugarHandler } from './invokeSnapSugar';\nimport { listEntropySourcesHandler } from './listEntropySources';\nimport { openWebSocketHandler } from './openWebSocket';\nimport { requestSnapsHandler } from './requestSnaps';\nimport { resolveInterfaceHandler } from './resolveInterface';\nimport { scheduleBackgroundEventHandler } from './scheduleBackgroundEvent';\nimport { sendWebSocketMessageHandler } from './sendWebSocketMessage';\nimport { setStateHandler } from './setState';\nimport { startTraceHandler } from './startTrace';\nimport { trackErrorHandler } from './trackError';\nimport { trackEventHandler } from './trackEvent';\nimport { updateInterfaceHandler } from './updateInterface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nconst methodHandlers = {\n wallet_getAllSnaps: getAllSnapsHandler,\n wallet_getSnaps: getSnapsHandler,\n wallet_requestSnaps: requestSnapsHandler,\n wallet_invokeSnap: invokeSnapSugarHandler,\n wallet_invokeKeyring: invokeKeyringHandler,\n snap_clearState: clearStateHandler,\n snap_getClientStatus: getClientStatusHandler,\n snap_getFile: getFileHandler,\n snap_getState: getStateHandler,\n snap_createInterface: createInterfaceHandler,\n snap_updateInterface: updateInterfaceHandler,\n snap_getInterfaceState: getInterfaceStateHandler,\n snap_getInterfaceContext: getInterfaceContextHandler,\n snap_listEntropySources: listEntropySourcesHandler,\n snap_resolveInterface: resolveInterfaceHandler,\n snap_scheduleBackgroundEvent: scheduleBackgroundEventHandler,\n snap_cancelBackgroundEvent: cancelBackgroundEventHandler,\n snap_getBackgroundEvents: getBackgroundEventsHandler,\n snap_setState: setStateHandler,\n snap_trackError: trackErrorHandler,\n snap_trackEvent: trackEventHandler,\n snap_openWebSocket: openWebSocketHandler,\n snap_closeWebSocket: closeWebSocketHandler,\n snap_sendWebSocketMessage: sendWebSocketMessageHandler,\n snap_getWebSockets: getWebSocketsHandler,\n snap_startTrace: startTraceHandler,\n snap_endTrace: endTraceHandler,\n};\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/**\n * Creates a middleware that handles permitted snap RPC methods.\n *\n * @param isSnap - A flag that should indicate whether the requesting origin is a snap or not.\n * @param hooks - An object containing the hooks made available to the permitted RPC methods.\n * @param messenger - The messenger.\n * @returns The middleware.\n */\nexport function createSnapsMethodMiddleware(\n isSnap: boolean,\n hooks: PermittedRpcMethodHooks,\n messenger: Messenger<string, PermittedRpcMethodActions>,\n): JsonRpcMiddleware<JsonRpcParams, Json> {\n const nestedMiddleware = createMethodMiddleware({\n handlers: methodHandlers,\n hooks,\n messenger,\n onError: logError,\n });\n\n // This is not actually a misused promise, the type is just wrong\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async function methodMiddleware(request, response, next, end) {\n if (String.prototype.startsWith.call(request.method, 'snap_') && !isSnap) {\n return end(rpcErrors.methodNotFound());\n }\n\n return nestedMiddleware(request, response, next, end);\n };\n}\n"]}
|
|
@@ -6,11 +6,6 @@ const snaps_sdk_1 = require("@metamask/snaps-sdk");
|
|
|
6
6
|
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
7
7
|
const superstruct_1 = require("@metamask/superstruct");
|
|
8
8
|
const endowments_1 = require("../endowments/index.cjs");
|
|
9
|
-
const methodName = 'snap_openWebSocket';
|
|
10
|
-
const hookNames = {
|
|
11
|
-
hasPermission: true,
|
|
12
|
-
openWebSocket: true,
|
|
13
|
-
};
|
|
14
9
|
const OpenWebSocketParametersStruct = (0, superstruct_1.object)({
|
|
15
10
|
url: (0, snaps_utils_1.uri)({ protocol: (0, snaps_sdk_1.union)([(0, snaps_sdk_1.literal)('wss:'), (0, snaps_sdk_1.literal)('ws:')]) }),
|
|
16
11
|
protocols: (0, superstruct_1.optional)((0, superstruct_1.array)((0, superstruct_1.string)())),
|
|
@@ -62,9 +57,8 @@ const OpenWebSocketParametersStruct = (0, superstruct_1.object)({
|
|
|
62
57
|
* ```
|
|
63
58
|
*/
|
|
64
59
|
exports.openWebSocketHandler = {
|
|
65
|
-
methodNames: [methodName],
|
|
66
60
|
implementation: openWebSocketImplementation,
|
|
67
|
-
|
|
61
|
+
actionNames: ['PermissionController:hasPermission', 'WebSocketService:open'],
|
|
68
62
|
};
|
|
69
63
|
/**
|
|
70
64
|
* The `snap_openWebSocket` method implementation.
|
|
@@ -73,19 +67,18 @@ exports.openWebSocketHandler = {
|
|
|
73
67
|
* @param res - The JSON-RPC response object.
|
|
74
68
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
|
|
75
69
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @param hooks.openWebSocket - The function to open a WebSocket.
|
|
70
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
71
|
+
* @param messenger - The messenger used to call controller actions.
|
|
79
72
|
* @returns Nothing.
|
|
80
73
|
*/
|
|
81
|
-
async function openWebSocketImplementation(req, res, _next, end,
|
|
82
|
-
|
|
74
|
+
async function openWebSocketImplementation(req, res, _next, end, _hooks, messenger) {
|
|
75
|
+
const { params, origin } = req;
|
|
76
|
+
if (!messenger.call('PermissionController:hasPermission', origin, endowments_1.SnapEndowments.NetworkAccess)) {
|
|
83
77
|
return end(rpc_errors_1.providerErrors.unauthorized());
|
|
84
78
|
}
|
|
85
|
-
const { params } = req;
|
|
86
79
|
try {
|
|
87
80
|
const { url, protocols } = getValidatedParams(params);
|
|
88
|
-
res.result = await
|
|
81
|
+
res.result = await messenger.call('WebSocketService:open', origin, url, protocols);
|
|
89
82
|
}
|
|
90
83
|
catch (error) {
|
|
91
84
|
return end(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openWebSocket.cjs","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"openWebSocket.cjs","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":";;;AAMA,qDAAiE;AACjE,mDAK6B;AAC7B,uDAAgE;AAChE,uDAO+B;AAG/B,wDAA+C;AAU/C,MAAM,6BAA6B,GAAG,IAAA,oBAAM,EAAC;IAC3C,GAAG,EAAE,IAAA,iBAAG,EAAC,EAAE,QAAQ,EAAE,IAAA,iBAAK,EAAC,CAAC,IAAA,mBAAO,EAAC,MAAM,CAAC,EAAE,IAAA,mBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,SAAS,EAAE,IAAA,sBAAQ,EAAC,IAAA,mBAAK,EAAC,IAAA,oBAAM,GAAE,CAAC,CAAC;CACrC,CAAC,CAAC;AAOH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACU,QAAA,oBAAoB,GAAG;IAClC,cAAc,EAAE,2BAA2B;IAC3C,WAAW,EAAE,CAAC,oCAAoC,EAAE,uBAAuB,CAAC;CAO7E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,KAAK,UAAU,2BAA2B,CACxC,GAAsD,EACtD,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAAwD;IAExD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE/B,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,2BAAc,CAAC,aAAa,CAC7B,EACD,CAAC;QACD,OAAO,GAAG,CAAC,2BAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAC/B,uBAAuB,EACvB,MAAM,EACN,GAAG,EACH,SAAS,CACV,CAAC;IACJ,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,6BAA6B,CAAC,CAAC;IACvD,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;QACD,0BAA0B;QAC1B,MAAM,sBAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport {\n literal,\n union,\n type OpenWebSocketParams,\n type OpenWebSocketResult,\n} from '@metamask/snaps-sdk';\nimport { uri, type InferMatching } from '@metamask/snaps-utils';\nimport {\n create,\n object,\n array,\n string,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n JsonRpcRequestWithOrigin,\n WebSocketServiceOpenAction,\n} from '../types';\n\nexport type OpenWebSocketMethodActions =\n | PermissionControllerHasPermissionAction\n | WebSocketServiceOpenAction;\n\nconst OpenWebSocketParametersStruct = object({\n url: uri({ protocol: union([literal('wss:'), literal('ws:')]) }),\n protocols: optional(array(string())),\n});\n\nexport type OpenWebSocketParameters = InferMatching<\n typeof OpenWebSocketParametersStruct,\n OpenWebSocketParams\n>;\n\n/**\n * Open a WebSocket connection to the specified URL with optional protocols.\n *\n * Note: This method is only available to snaps that have the\n * [`endowment:network-access`](https://docs.metamask.io/snaps/features/network-access/)\n * permission.\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * // Open a connection to a WebSocket server, e.g., in the JSON-RPC handler of\n * // the Snap:\n * snap.request({\n * method: 'snap_openWebSocket',\n * params: {\n * url: 'wss://example.com/socket',\n * protocols: ['protocol1', 'protocol2'], // Optional\n * },\n * });\n *\n * // Listen for events from the WebSocket connection in the `onWebSocketEvent`\n * // handler of the Snap:\n * export const onWebSocketEvent: OnWebSocketEventHandler = async ({ event }) => {\n * switch (event.type) {\n * case 'open':\n * console.log(`WebSocket connection opened with origin ${event.origin}`);\n * break;\n * case 'message':\n * console.log(`WebSocket message received from origin ${event.origin}:`, event.data);\n * break;\n * case 'close':\n * console.log(`WebSocket connection closed with origin ${event.origin}`);\n * break;\n * case 'error':\n * console.error(`WebSocket error from origin ${event.origin}:`, event.error);\n * break;\n * }\n * };\n * ```\n */\nexport const openWebSocketHandler = {\n implementation: openWebSocketImplementation,\n actionNames: ['PermissionController:hasPermission', 'WebSocketService:open'],\n} satisfies MethodHandler<\n never,\n OpenWebSocketMethodActions,\n OpenWebSocketParams,\n OpenWebSocketResult,\n { origin: string }\n>;\n\n/**\n * The `snap_openWebSocket` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nasync function openWebSocketImplementation(\n req: JsonRpcRequestWithOrigin<OpenWebSocketParameters>,\n res: PendingJsonRpcResponse<OpenWebSocketResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, OpenWebSocketMethodActions>,\n): Promise<void> {\n const { params, origin } = req;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n SnapEndowments.NetworkAccess,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const { url, protocols } = getValidatedParams(params);\n res.result = await messenger.call(\n 'WebSocketService:open',\n origin,\n url,\n protocols,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_openWebSocket 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): OpenWebSocketParameters {\n try {\n return create(params, OpenWebSocketParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import
|
|
2
|
+
import type { Messenger } from "@metamask/messenger";
|
|
3
|
+
import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
|
|
4
|
+
import { type OpenWebSocketParams, type OpenWebSocketResult } from "@metamask/snaps-sdk";
|
|
3
5
|
import { type InferMatching } from "@metamask/snaps-utils";
|
|
4
6
|
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
-
import type {
|
|
6
|
-
export type
|
|
7
|
-
hasPermission: (permissionName: string) => boolean;
|
|
8
|
-
openWebSocket: (url: string, protocols?: string[]) => Promise<string>;
|
|
9
|
-
};
|
|
7
|
+
import type { JsonRpcRequestWithOrigin, WebSocketServiceOpenAction } from "../types.cjs";
|
|
8
|
+
export type OpenWebSocketMethodActions = PermissionControllerHasPermissionAction | WebSocketServiceOpenAction;
|
|
10
9
|
declare const OpenWebSocketParametersStruct: import("@metamask/superstruct").Struct<{
|
|
11
10
|
url: string;
|
|
12
11
|
protocols?: string[] | undefined;
|
|
@@ -62,9 +61,8 @@ export type OpenWebSocketParameters = InferMatching<typeof OpenWebSocketParamete
|
|
|
62
61
|
* ```
|
|
63
62
|
*/
|
|
64
63
|
export declare const openWebSocketHandler: {
|
|
65
|
-
methodNames: ["snap_openWebSocket"];
|
|
66
64
|
implementation: typeof openWebSocketImplementation;
|
|
67
|
-
|
|
65
|
+
actionNames: ("WebSocketService:open" | "PermissionController:hasPermission")[];
|
|
68
66
|
};
|
|
69
67
|
/**
|
|
70
68
|
* The `snap_openWebSocket` method implementation.
|
|
@@ -73,11 +71,10 @@ export declare const openWebSocketHandler: {
|
|
|
73
71
|
* @param res - The JSON-RPC response object.
|
|
74
72
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
|
|
75
73
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @param hooks.openWebSocket - The function to open a WebSocket.
|
|
74
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
75
|
+
* @param messenger - The messenger used to call controller actions.
|
|
79
76
|
* @returns Nothing.
|
|
80
77
|
*/
|
|
81
|
-
declare function openWebSocketImplementation(req:
|
|
78
|
+
declare function openWebSocketImplementation(req: JsonRpcRequestWithOrigin<OpenWebSocketParameters>, res: PendingJsonRpcResponse<OpenWebSocketResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, OpenWebSocketMethodActions>): Promise<void>;
|
|
82
79
|
export {};
|
|
83
80
|
//# sourceMappingURL=openWebSocket.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openWebSocket.d.cts","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"openWebSocket.d.cts","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,4BAA4B;AAC7B,OAAO,EAAO,KAAK,aAAa,EAAE,8BAA8B;AAShE,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,qBAAiB;AAElB,MAAM,MAAM,0BAA0B,GAClC,uCAAuC,GACvC,0BAA0B,CAAC;AAE/B,QAAA,MAAM,6BAA6B;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,aAAa,CACjD,OAAO,6BAA6B,EACpC,mBAAmB,CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,oBAAoB;;;CAShC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,iBAAe,2BAA2B,CACxC,GAAG,EAAE,wBAAwB,CAAC,uBAAuB,CAAC,EACtD,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { JsonRpcEngineEndCallback } from "@metamask/json-rpc-engine";
|
|
2
|
-
import
|
|
2
|
+
import type { Messenger } from "@metamask/messenger";
|
|
3
|
+
import type { PermissionControllerHasPermissionAction } from "@metamask/permission-controller";
|
|
4
|
+
import { type OpenWebSocketParams, type OpenWebSocketResult } from "@metamask/snaps-sdk";
|
|
3
5
|
import { type InferMatching } from "@metamask/snaps-utils";
|
|
4
6
|
import type { PendingJsonRpcResponse } from "@metamask/utils";
|
|
5
|
-
import type {
|
|
6
|
-
export type
|
|
7
|
-
hasPermission: (permissionName: string) => boolean;
|
|
8
|
-
openWebSocket: (url: string, protocols?: string[]) => Promise<string>;
|
|
9
|
-
};
|
|
7
|
+
import type { JsonRpcRequestWithOrigin, WebSocketServiceOpenAction } from "../types.mjs";
|
|
8
|
+
export type OpenWebSocketMethodActions = PermissionControllerHasPermissionAction | WebSocketServiceOpenAction;
|
|
10
9
|
declare const OpenWebSocketParametersStruct: import("@metamask/superstruct").Struct<{
|
|
11
10
|
url: string;
|
|
12
11
|
protocols?: string[] | undefined;
|
|
@@ -62,9 +61,8 @@ export type OpenWebSocketParameters = InferMatching<typeof OpenWebSocketParamete
|
|
|
62
61
|
* ```
|
|
63
62
|
*/
|
|
64
63
|
export declare const openWebSocketHandler: {
|
|
65
|
-
methodNames: ["snap_openWebSocket"];
|
|
66
64
|
implementation: typeof openWebSocketImplementation;
|
|
67
|
-
|
|
65
|
+
actionNames: ("WebSocketService:open" | "PermissionController:hasPermission")[];
|
|
68
66
|
};
|
|
69
67
|
/**
|
|
70
68
|
* The `snap_openWebSocket` method implementation.
|
|
@@ -73,11 +71,10 @@ export declare const openWebSocketHandler: {
|
|
|
73
71
|
* @param res - The JSON-RPC response object.
|
|
74
72
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
|
|
75
73
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @param hooks.openWebSocket - The function to open a WebSocket.
|
|
74
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
75
|
+
* @param messenger - The messenger used to call controller actions.
|
|
79
76
|
* @returns Nothing.
|
|
80
77
|
*/
|
|
81
|
-
declare function openWebSocketImplementation(req:
|
|
78
|
+
declare function openWebSocketImplementation(req: JsonRpcRequestWithOrigin<OpenWebSocketParameters>, res: PendingJsonRpcResponse<OpenWebSocketResult>, _next: unknown, end: JsonRpcEngineEndCallback, _hooks: never, messenger: Messenger<string, OpenWebSocketMethodActions>): Promise<void>;
|
|
82
79
|
export {};
|
|
83
80
|
//# sourceMappingURL=openWebSocket.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openWebSocket.d.mts","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"openWebSocket.d.mts","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAEzB,kCAAkC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAAE,uCAAuC,EAAE,wCAAwC;AAE/F,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,4BAA4B;AAC7B,OAAO,EAAO,KAAK,aAAa,EAAE,8BAA8B;AAShE,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB;AAG9D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,qBAAiB;AAElB,MAAM,MAAM,0BAA0B,GAClC,uCAAuC,GACvC,0BAA0B,CAAC;AAE/B,QAAA,MAAM,6BAA6B;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,aAAa,CACjD,OAAO,6BAA6B,EACpC,mBAAmB,CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,oBAAoB;;;CAShC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,iBAAe,2BAA2B,CACxC,GAAG,EAAE,wBAAwB,CAAC,uBAAuB,CAAC,EACtD,GAAG,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,EAChD,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,0BAA0B,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -3,11 +3,6 @@ import { literal, union } from "@metamask/snaps-sdk";
|
|
|
3
3
|
import { uri } from "@metamask/snaps-utils";
|
|
4
4
|
import { create, object, array, string, optional, StructError } from "@metamask/superstruct";
|
|
5
5
|
import { SnapEndowments } from "../endowments/index.mjs";
|
|
6
|
-
const methodName = 'snap_openWebSocket';
|
|
7
|
-
const hookNames = {
|
|
8
|
-
hasPermission: true,
|
|
9
|
-
openWebSocket: true,
|
|
10
|
-
};
|
|
11
6
|
const OpenWebSocketParametersStruct = object({
|
|
12
7
|
url: uri({ protocol: union([literal('wss:'), literal('ws:')]) }),
|
|
13
8
|
protocols: optional(array(string())),
|
|
@@ -59,9 +54,8 @@ const OpenWebSocketParametersStruct = object({
|
|
|
59
54
|
* ```
|
|
60
55
|
*/
|
|
61
56
|
export const openWebSocketHandler = {
|
|
62
|
-
methodNames: [methodName],
|
|
63
57
|
implementation: openWebSocketImplementation,
|
|
64
|
-
|
|
58
|
+
actionNames: ['PermissionController:hasPermission', 'WebSocketService:open'],
|
|
65
59
|
};
|
|
66
60
|
/**
|
|
67
61
|
* The `snap_openWebSocket` method implementation.
|
|
@@ -70,19 +64,18 @@ export const openWebSocketHandler = {
|
|
|
70
64
|
* @param res - The JSON-RPC response object.
|
|
71
65
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this function.
|
|
72
66
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
73
|
-
* @param
|
|
74
|
-
* @param
|
|
75
|
-
* @param hooks.openWebSocket - The function to open a WebSocket.
|
|
67
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
68
|
+
* @param messenger - The messenger used to call controller actions.
|
|
76
69
|
* @returns Nothing.
|
|
77
70
|
*/
|
|
78
|
-
async function openWebSocketImplementation(req, res, _next, end,
|
|
79
|
-
|
|
71
|
+
async function openWebSocketImplementation(req, res, _next, end, _hooks, messenger) {
|
|
72
|
+
const { params, origin } = req;
|
|
73
|
+
if (!messenger.call('PermissionController:hasPermission', origin, SnapEndowments.NetworkAccess)) {
|
|
80
74
|
return end(providerErrors.unauthorized());
|
|
81
75
|
}
|
|
82
|
-
const { params } = req;
|
|
83
76
|
try {
|
|
84
77
|
const { url, protocols } = getValidatedParams(params);
|
|
85
|
-
res.result = await
|
|
78
|
+
res.result = await messenger.call('WebSocketService:open', origin, url, protocols);
|
|
86
79
|
}
|
|
87
80
|
catch (error) {
|
|
88
81
|
return end(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openWebSocket.mjs","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openWebSocket.mjs","sourceRoot":"","sources":["../../src/permitted/openWebSocket.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,6BAA6B;AACjE,OAAO,EACL,OAAO,EACP,KAAK,EAGN,4BAA4B;AAC7B,OAAO,EAAE,GAAG,EAAsB,8BAA8B;AAChE,OAAO,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,WAAW,EACZ,8BAA8B;AAG/B,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAU/C,MAAM,6BAA6B,GAAG,MAAM,CAAC;IAC3C,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;CACrC,CAAC,CAAC;AAOH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,2BAA2B;IAC3C,WAAW,EAAE,CAAC,oCAAoC,EAAE,uBAAuB,CAAC;CAO7E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,KAAK,UAAU,2BAA2B,CACxC,GAAsD,EACtD,GAAgD,EAChD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAAwD;IAExD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAE/B,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,cAAc,CAAC,aAAa,CAC7B,EACD,CAAC;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAC/B,uBAAuB,EACvB,MAAM,EACN,GAAG,EACH,SAAS,CACV,CAAC;IACJ,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,6BAA6B,CAAC,CAAC;IACvD,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;QACD,0BAA0B;QAC1B,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport {\n literal,\n union,\n type OpenWebSocketParams,\n type OpenWebSocketResult,\n} from '@metamask/snaps-sdk';\nimport { uri, type InferMatching } from '@metamask/snaps-utils';\nimport {\n create,\n object,\n array,\n string,\n optional,\n StructError,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n JsonRpcRequestWithOrigin,\n WebSocketServiceOpenAction,\n} from '../types';\n\nexport type OpenWebSocketMethodActions =\n | PermissionControllerHasPermissionAction\n | WebSocketServiceOpenAction;\n\nconst OpenWebSocketParametersStruct = object({\n url: uri({ protocol: union([literal('wss:'), literal('ws:')]) }),\n protocols: optional(array(string())),\n});\n\nexport type OpenWebSocketParameters = InferMatching<\n typeof OpenWebSocketParametersStruct,\n OpenWebSocketParams\n>;\n\n/**\n * Open a WebSocket connection to the specified URL with optional protocols.\n *\n * Note: This method is only available to snaps that have the\n * [`endowment:network-access`](https://docs.metamask.io/snaps/features/network-access/)\n * permission.\n *\n * @example\n * ```json name=\"Manifest\"\n * {\n * \"initialPermissions\": {\n * \"endowment:network-access\": {}\n * }\n * }\n * ```\n * ```ts name=\"Usage\"\n * // Open a connection to a WebSocket server, e.g., in the JSON-RPC handler of\n * // the Snap:\n * snap.request({\n * method: 'snap_openWebSocket',\n * params: {\n * url: 'wss://example.com/socket',\n * protocols: ['protocol1', 'protocol2'], // Optional\n * },\n * });\n *\n * // Listen for events from the WebSocket connection in the `onWebSocketEvent`\n * // handler of the Snap:\n * export const onWebSocketEvent: OnWebSocketEventHandler = async ({ event }) => {\n * switch (event.type) {\n * case 'open':\n * console.log(`WebSocket connection opened with origin ${event.origin}`);\n * break;\n * case 'message':\n * console.log(`WebSocket message received from origin ${event.origin}:`, event.data);\n * break;\n * case 'close':\n * console.log(`WebSocket connection closed with origin ${event.origin}`);\n * break;\n * case 'error':\n * console.error(`WebSocket error from origin ${event.origin}:`, event.error);\n * break;\n * }\n * };\n * ```\n */\nexport const openWebSocketHandler = {\n implementation: openWebSocketImplementation,\n actionNames: ['PermissionController:hasPermission', 'WebSocketService:open'],\n} satisfies MethodHandler<\n never,\n OpenWebSocketMethodActions,\n OpenWebSocketParams,\n OpenWebSocketResult,\n { origin: string }\n>;\n\n/**\n * The `snap_openWebSocket` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns Nothing.\n */\nasync function openWebSocketImplementation(\n req: JsonRpcRequestWithOrigin<OpenWebSocketParameters>,\n res: PendingJsonRpcResponse<OpenWebSocketResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n _hooks: never,\n messenger: Messenger<string, OpenWebSocketMethodActions>,\n): Promise<void> {\n const { params, origin } = req;\n\n if (\n !messenger.call(\n 'PermissionController:hasPermission',\n origin,\n SnapEndowments.NetworkAccess,\n )\n ) {\n return end(providerErrors.unauthorized());\n }\n\n try {\n const { url, protocols } = getValidatedParams(params);\n res.result = await messenger.call(\n 'WebSocketService:open',\n origin,\n url,\n protocols,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validates the parameters for the snap_openWebSocket 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): OpenWebSocketParameters {\n try {\n return create(params, OpenWebSocketParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"]}
|
|
@@ -6,12 +6,6 @@ const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
|
6
6
|
const utils_1 = require("@metamask/utils");
|
|
7
7
|
const async_mutex_1 = require("async-mutex");
|
|
8
8
|
const invokeSnap_1 = require("../restricted/invokeSnap.cjs");
|
|
9
|
-
const methodName = 'wallet_requestSnaps';
|
|
10
|
-
const hookNames = {
|
|
11
|
-
installSnaps: true,
|
|
12
|
-
requestPermissions: true,
|
|
13
|
-
getPermissions: true,
|
|
14
|
-
};
|
|
15
9
|
/**
|
|
16
10
|
* Request permission for a dapp to communicate with the specified Snaps and
|
|
17
11
|
* attempt to install them if they're not already installed.
|
|
@@ -38,9 +32,12 @@ const hookNames = {
|
|
|
38
32
|
* ```
|
|
39
33
|
*/
|
|
40
34
|
exports.requestSnapsHandler = {
|
|
41
|
-
methodNames: [methodName],
|
|
42
35
|
implementation: requestSnapsImplementation,
|
|
43
|
-
|
|
36
|
+
actionNames: [
|
|
37
|
+
'SnapController:installSnaps',
|
|
38
|
+
'PermissionController:requestPermissions',
|
|
39
|
+
'PermissionController:getPermissions',
|
|
40
|
+
],
|
|
44
41
|
};
|
|
45
42
|
/**
|
|
46
43
|
* Checks whether an origin has existing `wallet_snap` permission and
|
|
@@ -110,15 +107,12 @@ function getMutex(origin) {
|
|
|
110
107
|
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
111
108
|
* function.
|
|
112
109
|
* @param end - The `json-rpc-engine` "end" callback.
|
|
113
|
-
* @param
|
|
114
|
-
* @param
|
|
115
|
-
* @param hooks.requestPermissions - A function that requests permissions on
|
|
116
|
-
* behalf of a subject.
|
|
117
|
-
* @param hooks.getPermissions - A function that gets the current permissions.
|
|
110
|
+
* @param _hooks - The RPC method hooks. Not used by this function.
|
|
111
|
+
* @param messenger - The messenger used to call controller actions.
|
|
118
112
|
* @returns A promise that resolves once the JSON-RPC response has been modified.
|
|
119
113
|
* @throws If the params are invalid.
|
|
120
114
|
*/
|
|
121
|
-
async function requestSnapsImplementation(req, res, _next, end,
|
|
115
|
+
async function requestSnapsImplementation(req, res, _next, end, _hooks, messenger) {
|
|
122
116
|
const requestedSnaps = req.params;
|
|
123
117
|
if (!(0, utils_1.isObject)(requestedSnaps)) {
|
|
124
118
|
return end(rpc_errors_1.rpcErrors.invalidParams({
|
|
@@ -130,7 +124,6 @@ async function requestSnapsImplementation(req, res, _next, end, { installSnaps,
|
|
|
130
124
|
message: 'Request must have at least one requested snap.',
|
|
131
125
|
}));
|
|
132
126
|
}
|
|
133
|
-
// We expect the MM middleware stack to always add the origin to requests
|
|
134
127
|
const { origin } = req;
|
|
135
128
|
const mutex = getMutex(origin);
|
|
136
129
|
// Process requests sequentially for each origin as permissions need to be merged
|
|
@@ -142,17 +135,19 @@ async function requestSnapsImplementation(req, res, _next, end, { installSnaps,
|
|
|
142
135
|
caveats: [{ type: snaps_utils_1.SnapCaveatType.SnapIds, value: requestedSnaps }],
|
|
143
136
|
},
|
|
144
137
|
};
|
|
145
|
-
const existingPermissions =
|
|
138
|
+
const existingPermissions = messenger.call('PermissionController:getPermissions', origin);
|
|
146
139
|
if (!existingPermissions) {
|
|
147
|
-
const [, metadata] = await requestPermissions
|
|
140
|
+
const [, metadata] = await messenger.call('PermissionController:requestPermissions', { origin }, requestedPermissions);
|
|
141
|
+
(0, utils_1.assert)(metadata.data);
|
|
148
142
|
res.result = metadata.data[invokeSnap_1.WALLET_SNAP_PERMISSION_KEY];
|
|
149
143
|
}
|
|
150
144
|
else if (hasRequestedSnaps(existingPermissions, requestedSnaps)) {
|
|
151
|
-
res.result = await installSnaps
|
|
145
|
+
res.result = await messenger.call('SnapController:installSnaps', origin, requestedSnaps);
|
|
152
146
|
}
|
|
153
147
|
else {
|
|
154
148
|
const mergedPermissionsRequest = getSnapPermissionsRequest(existingPermissions, requestedPermissions);
|
|
155
|
-
const [, metadata] = await requestPermissions
|
|
149
|
+
const [, metadata] = await messenger.call('PermissionController:requestPermissions', { origin }, mergedPermissionsRequest);
|
|
150
|
+
(0, utils_1.assert)(metadata.data);
|
|
156
151
|
res.result = metadata.data[invokeSnap_1.WALLET_SNAP_PERMISSION_KEY];
|
|
157
152
|
}
|
|
158
153
|
}
|