@metamask/snaps-rpc-methods 13.2.0 → 13.4.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/dist/endowments/index.cjs +2 -0
  3. package/dist/endowments/index.cjs.map +1 -1
  4. package/dist/endowments/index.d.cts.map +1 -1
  5. package/dist/endowments/index.d.mts.map +1 -1
  6. package/dist/endowments/index.mjs +2 -0
  7. package/dist/endowments/index.mjs.map +1 -1
  8. package/dist/index.cjs +1 -0
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +1 -0
  11. package/dist/index.d.cts.map +1 -1
  12. package/dist/index.d.mts +1 -0
  13. package/dist/index.d.mts.map +1 -1
  14. package/dist/index.mjs +1 -0
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/middleware/index.cjs +18 -0
  17. package/dist/middleware/index.cjs.map +1 -0
  18. package/dist/middleware/index.d.cts +2 -0
  19. package/dist/middleware/index.d.cts.map +1 -0
  20. package/dist/middleware/index.d.mts +2 -0
  21. package/dist/middleware/index.d.mts.map +1 -0
  22. package/dist/middleware/index.mjs +2 -0
  23. package/dist/middleware/index.mjs.map +1 -0
  24. package/dist/middleware/preinstalled-snaps.cjs +61 -0
  25. package/dist/middleware/preinstalled-snaps.cjs.map +1 -0
  26. package/dist/middleware/preinstalled-snaps.d.cts +35 -0
  27. package/dist/middleware/preinstalled-snaps.d.cts.map +1 -0
  28. package/dist/middleware/preinstalled-snaps.d.mts +35 -0
  29. package/dist/middleware/preinstalled-snaps.d.mts.map +1 -0
  30. package/dist/middleware/preinstalled-snaps.mjs +57 -0
  31. package/dist/middleware/preinstalled-snaps.mjs.map +1 -0
  32. package/dist/permitted/endTrace.cjs +74 -0
  33. package/dist/permitted/endTrace.cjs.map +1 -0
  34. package/dist/permitted/endTrace.d.cts +34 -0
  35. package/dist/permitted/endTrace.d.cts.map +1 -0
  36. package/dist/permitted/endTrace.d.mts +34 -0
  37. package/dist/permitted/endTrace.d.mts.map +1 -0
  38. package/dist/permitted/endTrace.mjs +71 -0
  39. package/dist/permitted/endTrace.mjs.map +1 -0
  40. package/dist/permitted/handlers.cjs +4 -0
  41. package/dist/permitted/handlers.cjs.map +1 -1
  42. package/dist/permitted/handlers.d.cts +4 -2
  43. package/dist/permitted/handlers.d.cts.map +1 -1
  44. package/dist/permitted/handlers.d.mts +4 -2
  45. package/dist/permitted/handlers.d.mts.map +1 -1
  46. package/dist/permitted/handlers.mjs +4 -0
  47. package/dist/permitted/handlers.mjs.map +1 -1
  48. package/dist/permitted/index.cjs.map +1 -1
  49. package/dist/permitted/index.d.cts +3 -1
  50. package/dist/permitted/index.d.cts.map +1 -1
  51. package/dist/permitted/index.d.mts +3 -1
  52. package/dist/permitted/index.d.mts.map +1 -1
  53. package/dist/permitted/index.mjs.map +1 -1
  54. package/dist/permitted/startTrace.cjs +77 -0
  55. package/dist/permitted/startTrace.cjs.map +1 -0
  56. package/dist/permitted/startTrace.d.cts +40 -0
  57. package/dist/permitted/startTrace.d.cts.map +1 -0
  58. package/dist/permitted/startTrace.d.mts +40 -0
  59. package/dist/permitted/startTrace.d.mts.map +1 -0
  60. package/dist/permitted/startTrace.mjs +74 -0
  61. package/dist/permitted/startTrace.mjs.map +1 -0
  62. package/dist/permitted/trackError.cjs +1 -1
  63. package/dist/permitted/trackError.cjs.map +1 -1
  64. package/dist/permitted/trackError.mjs +1 -1
  65. package/dist/permitted/trackError.mjs.map +1 -1
  66. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [13.4.0]
11
+
12
+ ### Added
13
+
14
+ - Add support `onActive` and `onInactive` lifecycle hooks ([#3542](https://github.com/MetaMask/snaps/pull/3542))
15
+
16
+ ### Changed
17
+
18
+ - Bump `@metamask/rpc-errors` from `7.0.2` to `7.0.3` ([#3525](https://github.com/MetaMask/snaps/pull/3525))
19
+ - Bump `@metamask/utils` from `11.4.1` to `11.4.2` ([#3526](https://github.com/MetaMask/snaps/pull/3526))
20
+
21
+ ## [13.3.0]
22
+
23
+ ### Added
24
+
25
+ - Add middleware for automatically granting EVM permissions to preinstalled Snaps ([#3410](https://github.com/MetaMask/snaps/pull/3410))
26
+ - Add `snap_startTrace` and `snap_endTrace` methods for performance tracing ([#3519](https://github.com/MetaMask/snaps/pull/3519))
27
+
10
28
  ## [13.2.0]
11
29
 
12
30
  ### Added
@@ -469,7 +487,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
469
487
  - The version of the package no longer needs to match the version of all other
470
488
  MetaMask Snaps packages.
471
489
 
472
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.2.0...HEAD
490
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.4.0...HEAD
491
+ [13.4.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.3.0...@metamask/snaps-rpc-methods@13.4.0
492
+ [13.3.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.2.0...@metamask/snaps-rpc-methods@13.3.0
473
493
  [13.2.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.1.0...@metamask/snaps-rpc-methods@13.2.0
474
494
  [13.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.0.0...@metamask/snaps-rpc-methods@13.1.0
475
495
  [13.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@12.4.0...@metamask/snaps-rpc-methods@13.0.0
@@ -79,6 +79,8 @@ exports.handlerEndowments = {
79
79
  [snaps_utils_1.HandlerType.OnInstall]: lifecycle_hooks_1.lifecycleHooksEndowmentBuilder.targetName,
80
80
  [snaps_utils_1.HandlerType.OnUpdate]: lifecycle_hooks_1.lifecycleHooksEndowmentBuilder.targetName,
81
81
  [snaps_utils_1.HandlerType.OnStart]: lifecycle_hooks_1.lifecycleHooksEndowmentBuilder.targetName,
82
+ [snaps_utils_1.HandlerType.OnActive]: lifecycle_hooks_1.lifecycleHooksEndowmentBuilder.targetName,
83
+ [snaps_utils_1.HandlerType.OnInactive]: lifecycle_hooks_1.lifecycleHooksEndowmentBuilder.targetName,
82
84
  [snaps_utils_1.HandlerType.OnKeyringRequest]: keyring_1.keyringEndowmentBuilder.targetName,
83
85
  [snaps_utils_1.HandlerType.OnHomePage]: home_page_1.homePageEndowmentBuilder.targetName,
84
86
  [snaps_utils_1.HandlerType.OnSettingsPage]: settings_page_1.settingsPageEndowmentBuilder.targetName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PermissionConstraint } from '@metamask/permission-controller';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\n\nimport { assetsEndowmentBuilder, getAssetsCaveatMapper } from './assets';\nimport {\n createMaxRequestTimeMapper,\n getMaxRequestTimeCaveatMapper,\n maxRequestTimeCaveatSpecifications,\n} from './caveats';\nimport {\n cronjobCaveatSpecifications,\n cronjobEndowmentBuilder,\n getCronjobCaveatMapper,\n} from './cronjob';\nimport { ethereumProviderEndowmentBuilder } from './ethereum-provider';\nimport { homePageEndowmentBuilder } from './home-page';\nimport {\n getKeyringCaveatMapper,\n keyringCaveatSpecifications,\n keyringEndowmentBuilder,\n} from './keyring';\nimport { lifecycleHooksEndowmentBuilder } from './lifecycle-hooks';\nimport {\n getNameLookupCaveatMapper,\n nameLookupCaveatSpecifications,\n nameLookupEndowmentBuilder,\n} from './name-lookup';\nimport { networkAccessEndowmentBuilder } from './network-access';\nimport {\n getProtocolCaveatMapper,\n protocolCaveatSpecifications,\n protocolEndowmentBuilder,\n} from './protocol';\nimport {\n getRpcCaveatMapper,\n rpcCaveatSpecifications,\n rpcEndowmentBuilder,\n} from './rpc';\nimport { settingsPageEndowmentBuilder } from './settings-page';\nimport {\n getSignatureInsightCaveatMapper,\n signatureInsightCaveatSpecifications,\n signatureInsightEndowmentBuilder,\n} from './signature-insight';\nimport {\n getTransactionInsightCaveatMapper,\n transactionInsightCaveatSpecifications,\n transactionInsightEndowmentBuilder,\n} from './transaction-insight';\nimport { webAssemblyEndowmentBuilder } from './web-assembly';\n\nexport const endowmentPermissionBuilders = {\n [networkAccessEndowmentBuilder.targetName]: networkAccessEndowmentBuilder,\n [transactionInsightEndowmentBuilder.targetName]:\n transactionInsightEndowmentBuilder,\n [cronjobEndowmentBuilder.targetName]: cronjobEndowmentBuilder,\n [ethereumProviderEndowmentBuilder.targetName]:\n ethereumProviderEndowmentBuilder,\n [rpcEndowmentBuilder.targetName]: rpcEndowmentBuilder,\n [webAssemblyEndowmentBuilder.targetName]: webAssemblyEndowmentBuilder,\n [nameLookupEndowmentBuilder.targetName]: nameLookupEndowmentBuilder,\n [lifecycleHooksEndowmentBuilder.targetName]: lifecycleHooksEndowmentBuilder,\n [keyringEndowmentBuilder.targetName]: keyringEndowmentBuilder,\n [settingsPageEndowmentBuilder.targetName]: settingsPageEndowmentBuilder,\n [protocolEndowmentBuilder.targetName]: protocolEndowmentBuilder,\n [homePageEndowmentBuilder.targetName]: homePageEndowmentBuilder,\n [signatureInsightEndowmentBuilder.targetName]:\n signatureInsightEndowmentBuilder,\n [assetsEndowmentBuilder.targetName]: assetsEndowmentBuilder,\n} as const;\n\nexport const endowmentCaveatSpecifications = {\n ...cronjobCaveatSpecifications,\n ...transactionInsightCaveatSpecifications,\n ...rpcCaveatSpecifications,\n ...nameLookupCaveatSpecifications,\n ...keyringCaveatSpecifications,\n ...signatureInsightCaveatSpecifications,\n ...maxRequestTimeCaveatSpecifications,\n ...protocolCaveatSpecifications,\n};\n\nexport const endowmentCaveatMappers: Record<\n string,\n (value: Json) => Pick<PermissionConstraint, 'caveats'>\n> = {\n [cronjobEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getCronjobCaveatMapper,\n ),\n [transactionInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getTransactionInsightCaveatMapper,\n ),\n [rpcEndowmentBuilder.targetName]:\n createMaxRequestTimeMapper(getRpcCaveatMapper),\n [nameLookupEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getNameLookupCaveatMapper,\n ),\n [keyringEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getKeyringCaveatMapper,\n ),\n [protocolEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getProtocolCaveatMapper,\n ),\n [signatureInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getSignatureInsightCaveatMapper,\n ),\n [lifecycleHooksEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [homePageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [settingsPageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [assetsEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getAssetsCaveatMapper,\n ),\n};\n\n// We allow null because a permitted handler does not have an endowment\nexport const handlerEndowments: Record<HandlerType, string | null> = {\n [HandlerType.OnRpcRequest]: rpcEndowmentBuilder.targetName,\n [HandlerType.OnTransaction]: transactionInsightEndowmentBuilder.targetName,\n [HandlerType.OnCronjob]: cronjobEndowmentBuilder.targetName,\n [HandlerType.OnNameLookup]: nameLookupEndowmentBuilder.targetName,\n [HandlerType.OnInstall]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnUpdate]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnStart]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnKeyringRequest]: keyringEndowmentBuilder.targetName,\n [HandlerType.OnHomePage]: homePageEndowmentBuilder.targetName,\n [HandlerType.OnSettingsPage]: settingsPageEndowmentBuilder.targetName,\n [HandlerType.OnSignature]: signatureInsightEndowmentBuilder.targetName,\n [HandlerType.OnUserInput]: null,\n [HandlerType.OnAssetHistoricalPrice]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsLookup]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsConversion]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsMarketData]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnProtocolRequest]: protocolEndowmentBuilder.targetName,\n [HandlerType.OnClientRequest]: null,\n [HandlerType.OnWebSocketEvent]: networkAccessEndowmentBuilder.targetName,\n};\n\nexport * from './enum';\nexport { getRpcCaveatOrigins } from './rpc';\nexport { getSignatureOriginCaveat } from './signature-insight';\nexport { getTransactionOriginCaveat } from './transaction-insight';\nexport { getChainIdsCaveat, getLookupMatchersCaveat } from './name-lookup';\nexport { getKeyringCaveatOrigins } from './keyring';\nexport { getMaxRequestTimeCaveat } from './caveats';\nexport { getCronjobCaveatJobs } from './cronjob';\nexport { getProtocolCaveatScopes } from './protocol';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PermissionConstraint } from '@metamask/permission-controller';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\n\nimport { assetsEndowmentBuilder, getAssetsCaveatMapper } from './assets';\nimport {\n createMaxRequestTimeMapper,\n getMaxRequestTimeCaveatMapper,\n maxRequestTimeCaveatSpecifications,\n} from './caveats';\nimport {\n cronjobCaveatSpecifications,\n cronjobEndowmentBuilder,\n getCronjobCaveatMapper,\n} from './cronjob';\nimport { ethereumProviderEndowmentBuilder } from './ethereum-provider';\nimport { homePageEndowmentBuilder } from './home-page';\nimport {\n getKeyringCaveatMapper,\n keyringCaveatSpecifications,\n keyringEndowmentBuilder,\n} from './keyring';\nimport { lifecycleHooksEndowmentBuilder } from './lifecycle-hooks';\nimport {\n getNameLookupCaveatMapper,\n nameLookupCaveatSpecifications,\n nameLookupEndowmentBuilder,\n} from './name-lookup';\nimport { networkAccessEndowmentBuilder } from './network-access';\nimport {\n getProtocolCaveatMapper,\n protocolCaveatSpecifications,\n protocolEndowmentBuilder,\n} from './protocol';\nimport {\n getRpcCaveatMapper,\n rpcCaveatSpecifications,\n rpcEndowmentBuilder,\n} from './rpc';\nimport { settingsPageEndowmentBuilder } from './settings-page';\nimport {\n getSignatureInsightCaveatMapper,\n signatureInsightCaveatSpecifications,\n signatureInsightEndowmentBuilder,\n} from './signature-insight';\nimport {\n getTransactionInsightCaveatMapper,\n transactionInsightCaveatSpecifications,\n transactionInsightEndowmentBuilder,\n} from './transaction-insight';\nimport { webAssemblyEndowmentBuilder } from './web-assembly';\n\nexport const endowmentPermissionBuilders = {\n [networkAccessEndowmentBuilder.targetName]: networkAccessEndowmentBuilder,\n [transactionInsightEndowmentBuilder.targetName]:\n transactionInsightEndowmentBuilder,\n [cronjobEndowmentBuilder.targetName]: cronjobEndowmentBuilder,\n [ethereumProviderEndowmentBuilder.targetName]:\n ethereumProviderEndowmentBuilder,\n [rpcEndowmentBuilder.targetName]: rpcEndowmentBuilder,\n [webAssemblyEndowmentBuilder.targetName]: webAssemblyEndowmentBuilder,\n [nameLookupEndowmentBuilder.targetName]: nameLookupEndowmentBuilder,\n [lifecycleHooksEndowmentBuilder.targetName]: lifecycleHooksEndowmentBuilder,\n [keyringEndowmentBuilder.targetName]: keyringEndowmentBuilder,\n [settingsPageEndowmentBuilder.targetName]: settingsPageEndowmentBuilder,\n [protocolEndowmentBuilder.targetName]: protocolEndowmentBuilder,\n [homePageEndowmentBuilder.targetName]: homePageEndowmentBuilder,\n [signatureInsightEndowmentBuilder.targetName]:\n signatureInsightEndowmentBuilder,\n [assetsEndowmentBuilder.targetName]: assetsEndowmentBuilder,\n} as const;\n\nexport const endowmentCaveatSpecifications = {\n ...cronjobCaveatSpecifications,\n ...transactionInsightCaveatSpecifications,\n ...rpcCaveatSpecifications,\n ...nameLookupCaveatSpecifications,\n ...keyringCaveatSpecifications,\n ...signatureInsightCaveatSpecifications,\n ...maxRequestTimeCaveatSpecifications,\n ...protocolCaveatSpecifications,\n};\n\nexport const endowmentCaveatMappers: Record<\n string,\n (value: Json) => Pick<PermissionConstraint, 'caveats'>\n> = {\n [cronjobEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getCronjobCaveatMapper,\n ),\n [transactionInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getTransactionInsightCaveatMapper,\n ),\n [rpcEndowmentBuilder.targetName]:\n createMaxRequestTimeMapper(getRpcCaveatMapper),\n [nameLookupEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getNameLookupCaveatMapper,\n ),\n [keyringEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getKeyringCaveatMapper,\n ),\n [protocolEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getProtocolCaveatMapper,\n ),\n [signatureInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getSignatureInsightCaveatMapper,\n ),\n [lifecycleHooksEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [homePageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [settingsPageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [assetsEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getAssetsCaveatMapper,\n ),\n};\n\n// We allow null because a permitted handler does not have an endowment\nexport const handlerEndowments: Record<HandlerType, string | null> = {\n [HandlerType.OnRpcRequest]: rpcEndowmentBuilder.targetName,\n [HandlerType.OnTransaction]: transactionInsightEndowmentBuilder.targetName,\n [HandlerType.OnCronjob]: cronjobEndowmentBuilder.targetName,\n [HandlerType.OnNameLookup]: nameLookupEndowmentBuilder.targetName,\n [HandlerType.OnInstall]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnUpdate]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnStart]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnActive]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnInactive]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnKeyringRequest]: keyringEndowmentBuilder.targetName,\n [HandlerType.OnHomePage]: homePageEndowmentBuilder.targetName,\n [HandlerType.OnSettingsPage]: settingsPageEndowmentBuilder.targetName,\n [HandlerType.OnSignature]: signatureInsightEndowmentBuilder.targetName,\n [HandlerType.OnUserInput]: null,\n [HandlerType.OnAssetHistoricalPrice]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsLookup]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsConversion]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsMarketData]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnProtocolRequest]: protocolEndowmentBuilder.targetName,\n [HandlerType.OnClientRequest]: null,\n [HandlerType.OnWebSocketEvent]: networkAccessEndowmentBuilder.targetName,\n};\n\nexport * from './enum';\nexport { getRpcCaveatOrigins } from './rpc';\nexport { getSignatureOriginCaveat } from './signature-insight';\nexport { getTransactionOriginCaveat } from './transaction-insight';\nexport { getChainIdsCaveat, getLookupMatchersCaveat } from './name-lookup';\nexport { getKeyringCaveatOrigins } from './keyring';\nexport { getMaxRequestTimeCaveat } from './caveats';\nexport { getCronjobCaveatJobs } from './cronjob';\nexport { getProtocolCaveatScopes } from './protocol';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wCAAwC;AAC5E,OAAO,EAAE,WAAW,EAAE,8BAA8B;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAkD5C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB9B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;;;CASzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CA4BvD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAoBhE,CAAC;AAEF,2BAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,kBAAc;AAC5C,OAAO,EAAE,wBAAwB,EAAE,gCAA4B;AAC/D,OAAO,EAAE,0BAA0B,EAAE,kCAA8B;AACnE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,0BAAsB;AAC3E,OAAO,EAAE,uBAAuB,EAAE,sBAAkB;AACpD,OAAO,EAAE,uBAAuB,EAAE,4BAAkB;AACpD,OAAO,EAAE,oBAAoB,EAAE,sBAAkB;AACjD,OAAO,EAAE,uBAAuB,EAAE,uBAAmB"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wCAAwC;AAC5E,OAAO,EAAE,WAAW,EAAE,8BAA8B;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAkD5C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB9B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;;;CASzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CA4BvD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAsBhE,CAAC;AAEF,2BAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,kBAAc;AAC5C,OAAO,EAAE,wBAAwB,EAAE,gCAA4B;AAC/D,OAAO,EAAE,0BAA0B,EAAE,kCAA8B;AACnE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,0BAAsB;AAC3E,OAAO,EAAE,uBAAuB,EAAE,sBAAkB;AACpD,OAAO,EAAE,uBAAuB,EAAE,4BAAkB;AACpD,OAAO,EAAE,oBAAoB,EAAE,sBAAkB;AACjD,OAAO,EAAE,uBAAuB,EAAE,uBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wCAAwC;AAC5E,OAAO,EAAE,WAAW,EAAE,8BAA8B;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAkD5C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB9B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;;;CASzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CA4BvD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAoBhE,CAAC;AAEF,2BAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,kBAAc;AAC5C,OAAO,EAAE,wBAAwB,EAAE,gCAA4B;AAC/D,OAAO,EAAE,0BAA0B,EAAE,kCAA8B;AACnE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,0BAAsB;AAC3E,OAAO,EAAE,uBAAuB,EAAE,sBAAkB;AACpD,OAAO,EAAE,uBAAuB,EAAE,4BAAkB;AACpD,OAAO,EAAE,oBAAoB,EAAE,sBAAkB;AACjD,OAAO,EAAE,uBAAuB,EAAE,uBAAmB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wCAAwC;AAC5E,OAAO,EAAE,WAAW,EAAE,8BAA8B;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAkD5C,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB9B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;;;CASzC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CA4BvD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAsBhE,CAAC;AAEF,2BAAuB;AACvB,OAAO,EAAE,mBAAmB,EAAE,kBAAc;AAC5C,OAAO,EAAE,wBAAwB,EAAE,gCAA4B;AAC/D,OAAO,EAAE,0BAA0B,EAAE,kCAA8B;AACnE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,0BAAsB;AAC3E,OAAO,EAAE,uBAAuB,EAAE,sBAAkB;AACpD,OAAO,EAAE,uBAAuB,EAAE,4BAAkB;AACpD,OAAO,EAAE,oBAAoB,EAAE,sBAAkB;AACjD,OAAO,EAAE,uBAAuB,EAAE,uBAAmB"}
@@ -62,6 +62,8 @@ export const handlerEndowments = {
62
62
  [HandlerType.OnInstall]: lifecycleHooksEndowmentBuilder.targetName,
63
63
  [HandlerType.OnUpdate]: lifecycleHooksEndowmentBuilder.targetName,
64
64
  [HandlerType.OnStart]: lifecycleHooksEndowmentBuilder.targetName,
65
+ [HandlerType.OnActive]: lifecycleHooksEndowmentBuilder.targetName,
66
+ [HandlerType.OnInactive]: lifecycleHooksEndowmentBuilder.targetName,
65
67
  [HandlerType.OnKeyringRequest]: keyringEndowmentBuilder.targetName,
66
68
  [HandlerType.OnHomePage]: homePageEndowmentBuilder.targetName,
67
69
  [HandlerType.OnSettingsPage]: settingsPageEndowmentBuilder.targetName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PermissionConstraint } from '@metamask/permission-controller';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\n\nimport { assetsEndowmentBuilder, getAssetsCaveatMapper } from './assets';\nimport {\n createMaxRequestTimeMapper,\n getMaxRequestTimeCaveatMapper,\n maxRequestTimeCaveatSpecifications,\n} from './caveats';\nimport {\n cronjobCaveatSpecifications,\n cronjobEndowmentBuilder,\n getCronjobCaveatMapper,\n} from './cronjob';\nimport { ethereumProviderEndowmentBuilder } from './ethereum-provider';\nimport { homePageEndowmentBuilder } from './home-page';\nimport {\n getKeyringCaveatMapper,\n keyringCaveatSpecifications,\n keyringEndowmentBuilder,\n} from './keyring';\nimport { lifecycleHooksEndowmentBuilder } from './lifecycle-hooks';\nimport {\n getNameLookupCaveatMapper,\n nameLookupCaveatSpecifications,\n nameLookupEndowmentBuilder,\n} from './name-lookup';\nimport { networkAccessEndowmentBuilder } from './network-access';\nimport {\n getProtocolCaveatMapper,\n protocolCaveatSpecifications,\n protocolEndowmentBuilder,\n} from './protocol';\nimport {\n getRpcCaveatMapper,\n rpcCaveatSpecifications,\n rpcEndowmentBuilder,\n} from './rpc';\nimport { settingsPageEndowmentBuilder } from './settings-page';\nimport {\n getSignatureInsightCaveatMapper,\n signatureInsightCaveatSpecifications,\n signatureInsightEndowmentBuilder,\n} from './signature-insight';\nimport {\n getTransactionInsightCaveatMapper,\n transactionInsightCaveatSpecifications,\n transactionInsightEndowmentBuilder,\n} from './transaction-insight';\nimport { webAssemblyEndowmentBuilder } from './web-assembly';\n\nexport const endowmentPermissionBuilders = {\n [networkAccessEndowmentBuilder.targetName]: networkAccessEndowmentBuilder,\n [transactionInsightEndowmentBuilder.targetName]:\n transactionInsightEndowmentBuilder,\n [cronjobEndowmentBuilder.targetName]: cronjobEndowmentBuilder,\n [ethereumProviderEndowmentBuilder.targetName]:\n ethereumProviderEndowmentBuilder,\n [rpcEndowmentBuilder.targetName]: rpcEndowmentBuilder,\n [webAssemblyEndowmentBuilder.targetName]: webAssemblyEndowmentBuilder,\n [nameLookupEndowmentBuilder.targetName]: nameLookupEndowmentBuilder,\n [lifecycleHooksEndowmentBuilder.targetName]: lifecycleHooksEndowmentBuilder,\n [keyringEndowmentBuilder.targetName]: keyringEndowmentBuilder,\n [settingsPageEndowmentBuilder.targetName]: settingsPageEndowmentBuilder,\n [protocolEndowmentBuilder.targetName]: protocolEndowmentBuilder,\n [homePageEndowmentBuilder.targetName]: homePageEndowmentBuilder,\n [signatureInsightEndowmentBuilder.targetName]:\n signatureInsightEndowmentBuilder,\n [assetsEndowmentBuilder.targetName]: assetsEndowmentBuilder,\n} as const;\n\nexport const endowmentCaveatSpecifications = {\n ...cronjobCaveatSpecifications,\n ...transactionInsightCaveatSpecifications,\n ...rpcCaveatSpecifications,\n ...nameLookupCaveatSpecifications,\n ...keyringCaveatSpecifications,\n ...signatureInsightCaveatSpecifications,\n ...maxRequestTimeCaveatSpecifications,\n ...protocolCaveatSpecifications,\n};\n\nexport const endowmentCaveatMappers: Record<\n string,\n (value: Json) => Pick<PermissionConstraint, 'caveats'>\n> = {\n [cronjobEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getCronjobCaveatMapper,\n ),\n [transactionInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getTransactionInsightCaveatMapper,\n ),\n [rpcEndowmentBuilder.targetName]:\n createMaxRequestTimeMapper(getRpcCaveatMapper),\n [nameLookupEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getNameLookupCaveatMapper,\n ),\n [keyringEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getKeyringCaveatMapper,\n ),\n [protocolEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getProtocolCaveatMapper,\n ),\n [signatureInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getSignatureInsightCaveatMapper,\n ),\n [lifecycleHooksEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [homePageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [settingsPageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [assetsEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getAssetsCaveatMapper,\n ),\n};\n\n// We allow null because a permitted handler does not have an endowment\nexport const handlerEndowments: Record<HandlerType, string | null> = {\n [HandlerType.OnRpcRequest]: rpcEndowmentBuilder.targetName,\n [HandlerType.OnTransaction]: transactionInsightEndowmentBuilder.targetName,\n [HandlerType.OnCronjob]: cronjobEndowmentBuilder.targetName,\n [HandlerType.OnNameLookup]: nameLookupEndowmentBuilder.targetName,\n [HandlerType.OnInstall]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnUpdate]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnStart]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnKeyringRequest]: keyringEndowmentBuilder.targetName,\n [HandlerType.OnHomePage]: homePageEndowmentBuilder.targetName,\n [HandlerType.OnSettingsPage]: settingsPageEndowmentBuilder.targetName,\n [HandlerType.OnSignature]: signatureInsightEndowmentBuilder.targetName,\n [HandlerType.OnUserInput]: null,\n [HandlerType.OnAssetHistoricalPrice]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsLookup]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsConversion]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsMarketData]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnProtocolRequest]: protocolEndowmentBuilder.targetName,\n [HandlerType.OnClientRequest]: null,\n [HandlerType.OnWebSocketEvent]: networkAccessEndowmentBuilder.targetName,\n};\n\nexport * from './enum';\nexport { getRpcCaveatOrigins } from './rpc';\nexport { getSignatureOriginCaveat } from './signature-insight';\nexport { getTransactionOriginCaveat } from './transaction-insight';\nexport { getChainIdsCaveat, getLookupMatchersCaveat } from './name-lookup';\nexport { getKeyringCaveatOrigins } from './keyring';\nexport { getMaxRequestTimeCaveat } from './caveats';\nexport { getCronjobCaveatJobs } from './cronjob';\nexport { getProtocolCaveatScopes } from './protocol';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/endowments/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PermissionConstraint } from '@metamask/permission-controller';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\n\nimport { assetsEndowmentBuilder, getAssetsCaveatMapper } from './assets';\nimport {\n createMaxRequestTimeMapper,\n getMaxRequestTimeCaveatMapper,\n maxRequestTimeCaveatSpecifications,\n} from './caveats';\nimport {\n cronjobCaveatSpecifications,\n cronjobEndowmentBuilder,\n getCronjobCaveatMapper,\n} from './cronjob';\nimport { ethereumProviderEndowmentBuilder } from './ethereum-provider';\nimport { homePageEndowmentBuilder } from './home-page';\nimport {\n getKeyringCaveatMapper,\n keyringCaveatSpecifications,\n keyringEndowmentBuilder,\n} from './keyring';\nimport { lifecycleHooksEndowmentBuilder } from './lifecycle-hooks';\nimport {\n getNameLookupCaveatMapper,\n nameLookupCaveatSpecifications,\n nameLookupEndowmentBuilder,\n} from './name-lookup';\nimport { networkAccessEndowmentBuilder } from './network-access';\nimport {\n getProtocolCaveatMapper,\n protocolCaveatSpecifications,\n protocolEndowmentBuilder,\n} from './protocol';\nimport {\n getRpcCaveatMapper,\n rpcCaveatSpecifications,\n rpcEndowmentBuilder,\n} from './rpc';\nimport { settingsPageEndowmentBuilder } from './settings-page';\nimport {\n getSignatureInsightCaveatMapper,\n signatureInsightCaveatSpecifications,\n signatureInsightEndowmentBuilder,\n} from './signature-insight';\nimport {\n getTransactionInsightCaveatMapper,\n transactionInsightCaveatSpecifications,\n transactionInsightEndowmentBuilder,\n} from './transaction-insight';\nimport { webAssemblyEndowmentBuilder } from './web-assembly';\n\nexport const endowmentPermissionBuilders = {\n [networkAccessEndowmentBuilder.targetName]: networkAccessEndowmentBuilder,\n [transactionInsightEndowmentBuilder.targetName]:\n transactionInsightEndowmentBuilder,\n [cronjobEndowmentBuilder.targetName]: cronjobEndowmentBuilder,\n [ethereumProviderEndowmentBuilder.targetName]:\n ethereumProviderEndowmentBuilder,\n [rpcEndowmentBuilder.targetName]: rpcEndowmentBuilder,\n [webAssemblyEndowmentBuilder.targetName]: webAssemblyEndowmentBuilder,\n [nameLookupEndowmentBuilder.targetName]: nameLookupEndowmentBuilder,\n [lifecycleHooksEndowmentBuilder.targetName]: lifecycleHooksEndowmentBuilder,\n [keyringEndowmentBuilder.targetName]: keyringEndowmentBuilder,\n [settingsPageEndowmentBuilder.targetName]: settingsPageEndowmentBuilder,\n [protocolEndowmentBuilder.targetName]: protocolEndowmentBuilder,\n [homePageEndowmentBuilder.targetName]: homePageEndowmentBuilder,\n [signatureInsightEndowmentBuilder.targetName]:\n signatureInsightEndowmentBuilder,\n [assetsEndowmentBuilder.targetName]: assetsEndowmentBuilder,\n} as const;\n\nexport const endowmentCaveatSpecifications = {\n ...cronjobCaveatSpecifications,\n ...transactionInsightCaveatSpecifications,\n ...rpcCaveatSpecifications,\n ...nameLookupCaveatSpecifications,\n ...keyringCaveatSpecifications,\n ...signatureInsightCaveatSpecifications,\n ...maxRequestTimeCaveatSpecifications,\n ...protocolCaveatSpecifications,\n};\n\nexport const endowmentCaveatMappers: Record<\n string,\n (value: Json) => Pick<PermissionConstraint, 'caveats'>\n> = {\n [cronjobEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getCronjobCaveatMapper,\n ),\n [transactionInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getTransactionInsightCaveatMapper,\n ),\n [rpcEndowmentBuilder.targetName]:\n createMaxRequestTimeMapper(getRpcCaveatMapper),\n [nameLookupEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getNameLookupCaveatMapper,\n ),\n [keyringEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getKeyringCaveatMapper,\n ),\n [protocolEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getProtocolCaveatMapper,\n ),\n [signatureInsightEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getSignatureInsightCaveatMapper,\n ),\n [lifecycleHooksEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [homePageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [settingsPageEndowmentBuilder.targetName]: getMaxRequestTimeCaveatMapper,\n [assetsEndowmentBuilder.targetName]: createMaxRequestTimeMapper(\n getAssetsCaveatMapper,\n ),\n};\n\n// We allow null because a permitted handler does not have an endowment\nexport const handlerEndowments: Record<HandlerType, string | null> = {\n [HandlerType.OnRpcRequest]: rpcEndowmentBuilder.targetName,\n [HandlerType.OnTransaction]: transactionInsightEndowmentBuilder.targetName,\n [HandlerType.OnCronjob]: cronjobEndowmentBuilder.targetName,\n [HandlerType.OnNameLookup]: nameLookupEndowmentBuilder.targetName,\n [HandlerType.OnInstall]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnUpdate]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnStart]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnActive]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnInactive]: lifecycleHooksEndowmentBuilder.targetName,\n [HandlerType.OnKeyringRequest]: keyringEndowmentBuilder.targetName,\n [HandlerType.OnHomePage]: homePageEndowmentBuilder.targetName,\n [HandlerType.OnSettingsPage]: settingsPageEndowmentBuilder.targetName,\n [HandlerType.OnSignature]: signatureInsightEndowmentBuilder.targetName,\n [HandlerType.OnUserInput]: null,\n [HandlerType.OnAssetHistoricalPrice]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsLookup]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsConversion]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnAssetsMarketData]: assetsEndowmentBuilder.targetName,\n [HandlerType.OnProtocolRequest]: protocolEndowmentBuilder.targetName,\n [HandlerType.OnClientRequest]: null,\n [HandlerType.OnWebSocketEvent]: networkAccessEndowmentBuilder.targetName,\n};\n\nexport * from './enum';\nexport { getRpcCaveatOrigins } from './rpc';\nexport { getSignatureOriginCaveat } from './signature-insight';\nexport { getTransactionOriginCaveat } from './transaction-insight';\nexport { getChainIdsCaveat, getLookupMatchersCaveat } from './name-lookup';\nexport { getKeyringCaveatOrigins } from './keyring';\nexport { getMaxRequestTimeCaveat } from './caveats';\nexport { getCronjobCaveatJobs } from './cronjob';\nexport { getProtocolCaveatScopes } from './protocol';\n"]}
package/dist/index.cjs CHANGED
@@ -23,6 +23,7 @@ Object.defineProperty(exports, "SnapCaveatType", { enumerable: true, get: functi
23
23
  var utils_1 = require("./utils.cjs");
24
24
  Object.defineProperty(exports, "selectHooks", { enumerable: true, get: function () { return utils_1.selectHooks; } });
25
25
  __exportStar(require("./endowments/index.cjs"), exports);
26
+ __exportStar(require("./middleware/index.cjs"), exports);
26
27
  __exportStar(require("./permissions.cjs"), exports);
27
28
  __exportStar(require("./restricted/index.cjs"), exports);
28
29
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAGqB;AAFnB,6GAAA,QAAQ,OAAoB;AAC5B,wHAAA,2BAA2B,OAAA;AAG7B,qDAAuD;AAA9C,6GAAA,cAAc,OAAA;AACvB,qCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,yDAA6B;AAC7B,oDAA8B;AAC9B,yDAA6B","sourcesContent":["export {\n handlers as permittedMethods,\n createSnapsMethodMiddleware,\n} from './permitted';\nexport type { PermittedRpcMethodHooks } from './permitted';\nexport { SnapCaveatType } from '@metamask/snaps-utils';\nexport { selectHooks } from './utils';\nexport * from './endowments';\nexport * from './permissions';\nexport * from './restricted';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAGqB;AAFnB,6GAAA,QAAQ,OAAoB;AAC5B,wHAAA,2BAA2B,OAAA;AAG7B,qDAAuD;AAA9C,6GAAA,cAAc,OAAA;AACvB,qCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,yDAA6B;AAC7B,yDAA6B;AAC7B,oDAA8B;AAC9B,yDAA6B","sourcesContent":["export {\n handlers as permittedMethods,\n createSnapsMethodMiddleware,\n} from './permitted';\nexport type { PermittedRpcMethodHooks } from './permitted';\nexport { SnapCaveatType } from '@metamask/snaps-utils';\nexport { selectHooks } from './utils';\nexport * from './endowments';\nexport * from './middleware';\nexport * from './permissions';\nexport * from './restricted';\n"]}
package/dist/index.d.cts CHANGED
@@ -3,6 +3,7 @@ export type { PermittedRpcMethodHooks } from "./permitted/index.cjs";
3
3
  export { SnapCaveatType } from "@metamask/snaps-utils";
4
4
  export { selectHooks } from "./utils.cjs";
5
5
  export * from "./endowments/index.cjs";
6
+ export * from "./middleware/index.cjs";
6
7
  export * from "./permissions.cjs";
7
8
  export * from "./restricted/index.cjs";
8
9
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,2BAA2B,GAC5B,8BAAoB;AACrB,YAAY,EAAE,uBAAuB,EAAE,8BAAoB;AAC3D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,WAAW,EAAE,oBAAgB;AACtC,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,2BAA2B,GAC5B,8BAAoB;AACrB,YAAY,EAAE,uBAAuB,EAAE,8BAAoB;AAC3D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,WAAW,EAAE,oBAAgB;AACtC,uCAA6B;AAC7B,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B"}
package/dist/index.d.mts CHANGED
@@ -3,6 +3,7 @@ export type { PermittedRpcMethodHooks } from "./permitted/index.mjs";
3
3
  export { SnapCaveatType } from "@metamask/snaps-utils";
4
4
  export { selectHooks } from "./utils.mjs";
5
5
  export * from "./endowments/index.mjs";
6
+ export * from "./middleware/index.mjs";
6
7
  export * from "./permissions.mjs";
7
8
  export * from "./restricted/index.mjs";
8
9
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,2BAA2B,GAC5B,8BAAoB;AACrB,YAAY,EAAE,uBAAuB,EAAE,8BAAoB;AAC3D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,WAAW,EAAE,oBAAgB;AACtC,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,2BAA2B,GAC5B,8BAAoB;AACrB,YAAY,EAAE,uBAAuB,EAAE,8BAAoB;AAC3D,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,WAAW,EAAE,oBAAgB;AACtC,uCAA6B;AAC7B,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B"}
package/dist/index.mjs CHANGED
@@ -2,6 +2,7 @@ export { handlers as permittedMethods, createSnapsMethodMiddleware } from "./per
2
2
  export { SnapCaveatType } from "@metamask/snaps-utils";
3
3
  export { selectHooks } from "./utils.mjs";
4
4
  export * from "./endowments/index.mjs";
5
+ export * from "./middleware/index.mjs";
5
6
  export * from "./permissions.mjs";
6
7
  export * from "./restricted/index.mjs";
7
8
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,2BAA2B,EAC5B,8BAAoB;AAErB,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,WAAW,EAAE,oBAAgB;AACtC,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B","sourcesContent":["export {\n handlers as permittedMethods,\n createSnapsMethodMiddleware,\n} from './permitted';\nexport type { PermittedRpcMethodHooks } from './permitted';\nexport { SnapCaveatType } from '@metamask/snaps-utils';\nexport { selectHooks } from './utils';\nexport * from './endowments';\nexport * from './permissions';\nexport * from './restricted';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,2BAA2B,EAC5B,8BAAoB;AAErB,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,WAAW,EAAE,oBAAgB;AACtC,uCAA6B;AAC7B,uCAA6B;AAC7B,kCAA8B;AAC9B,uCAA6B","sourcesContent":["export {\n handlers as permittedMethods,\n createSnapsMethodMiddleware,\n} from './permitted';\nexport type { PermittedRpcMethodHooks } from './permitted';\nexport { SnapCaveatType } from '@metamask/snaps-utils';\nexport { selectHooks } from './utils';\nexport * from './endowments';\nexport * from './middleware';\nexport * from './permissions';\nexport * from './restricted';\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./preinstalled-snaps.cjs"), exports);
18
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAqC","sourcesContent":["export * from './preinstalled-snaps';\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./preinstalled-snaps.cjs";
2
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,yCAAqC"}
@@ -0,0 +1,2 @@
1
+ export * from "./preinstalled-snaps.mjs";
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,yCAAqC"}
@@ -0,0 +1,2 @@
1
+ export * from "./preinstalled-snaps.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,yCAAqC","sourcesContent":["export * from './preinstalled-snaps';\n"]}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPreinstalledSnapsMiddleware = void 0;
4
+ const snaps_utils_1 = require("@metamask/snaps-utils");
5
+ const utils_1 = require("@metamask/utils");
6
+ const endowments_1 = require("../endowments/index.cjs");
7
+ const WILDCARD_SCOPE = 'wallet:eip155';
8
+ /**
9
+ * Create a middleware that automatically grants account permissions to preinstalled Snaps
10
+ * that want to use the Ethereum provider endowment.
11
+ *
12
+ * @param hooks - The hooks used by the middleware.
13
+ * @param hooks.getAllEvmAccounts - Hook for retriveing all available EVM addresses.
14
+ * @param hooks.getPermissions - Hook for retrieving the permissions of the requesting origin.
15
+ * @param hooks.grantPermissions - Hook for granting permissions to the requesting origin.
16
+ * @returns The middleware.
17
+ */
18
+ function createPreinstalledSnapsMiddleware({ getAllEvmAccounts, getPermissions, grantPermissions, }) {
19
+ return function methodMiddleware(request, _response, next, _end) {
20
+ if (request.method.startsWith('snap')) {
21
+ return next();
22
+ }
23
+ const permissions = getPermissions();
24
+ if (!permissions ||
25
+ !(0, utils_1.hasProperty)(permissions, endowments_1.SnapEndowments.EthereumProvider)) {
26
+ return next();
27
+ }
28
+ const existingEndowment = permissions['endowment:caip25'];
29
+ const existingCaveat = existingEndowment?.caveats?.find((caveat) => caveat.type === 'authorizedScopes')?.value;
30
+ const existingRequiredScopes = existingCaveat?.requiredScopes ?? {};
31
+ const existingOptionalScopes = existingCaveat?.optionalScopes ?? {};
32
+ const existingEvmAccounts = existingOptionalScopes[WILDCARD_SCOPE]?.accounts.map((account) => account.slice(WILDCARD_SCOPE.length + 1)) ?? [];
33
+ const evmAccounts = getAllEvmAccounts();
34
+ if ((0, snaps_utils_1.isEqual)(evmAccounts, existingEvmAccounts)) {
35
+ return next();
36
+ }
37
+ grantPermissions({
38
+ 'endowment:caip25': {
39
+ caveats: [
40
+ {
41
+ type: 'authorizedScopes',
42
+ value: {
43
+ requiredScopes: existingRequiredScopes,
44
+ optionalScopes: {
45
+ ...existingOptionalScopes,
46
+ [WILDCARD_SCOPE]: {
47
+ accounts: evmAccounts.map((account) => `${WILDCARD_SCOPE}:${account}`),
48
+ },
49
+ },
50
+ sessionProperties: {},
51
+ isMultichainOrigin: false,
52
+ },
53
+ },
54
+ ],
55
+ },
56
+ });
57
+ return next();
58
+ };
59
+ }
60
+ exports.createPreinstalledSnapsMiddleware = createPreinstalledSnapsMiddleware;
61
+ //# sourceMappingURL=preinstalled-snaps.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preinstalled-snaps.cjs","sourceRoot":"","sources":["../../src/middleware/preinstalled-snaps.ts"],"names":[],"mappings":";;;AAKA,uDAAgD;AAChD,2CAMyB;AAEzB,wDAA+C;AAuB/C,MAAM,cAAc,GAAG,eAAe,CAAC;AAWvC;;;;;;;;;GASG;AACH,SAAgB,iCAAiC,CAAC,EAChD,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACiB;IACjC,OAAO,SAAS,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI;QAC7D,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QAErC,IACE,CAAC,WAAW;YACZ,CAAC,IAAA,mBAAW,EAAC,WAAW,EAAE,2BAAc,CAAC,gBAAgB,CAAC,EAC1D,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,iBAAiB,EAAE,OAAO,EAAE,IAAI,CACrD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAC/C,EAAE,KAA0C,CAAC;QAE9C,MAAM,sBAAsB,GAAG,cAAc,EAAE,cAAc,IAAI,EAAE,CAAC;QACpE,MAAM,sBAAsB,GAAG,cAAc,EAAE,cAAc,IAAI,EAAE,CAAC;QAEpE,MAAM,mBAAmB,GACvB,sBAAsB,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/D,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CACzC,IAAI,EAAE,CAAC;QAEV,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QAExC,IAAI,IAAA,qBAAO,EAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,gBAAgB,CAAC;YACf,kBAAkB,EAAE;gBAClB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE;4BACL,cAAc,EAAE,sBAAsB;4BACtC,cAAc,EAAE;gCACd,GAAG,sBAAsB;gCACzB,CAAC,cAAc,CAAC,EAAE;oCAChB,QAAQ,EAAE,WAAW,CAAC,GAAG,CACvB,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,cAAc,IAAI,OAAO,EAAE,CAC5C;iCACF;6BACF;4BACD,iBAAiB,EAAE,EAAE;4BACrB,kBAAkB,EAAE,KAAK;yBAC1B;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AA/DD,8EA+DC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type {\n PermissionConstraint,\n RequestedPermissions,\n} from '@metamask/permission-controller';\nimport { isEqual } from '@metamask/snaps-utils';\nimport {\n type CaipAccountId,\n type CaipChainId,\n hasProperty,\n type Json,\n type JsonRpcParams,\n} from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\n\nexport type PreinstalledSnapsMiddlewareHooks = {\n /**\n * Get all accounts with the eip155 scope.\n *\n * @returns A list of all account addresses from the eip155 scope.\n */\n getAllEvmAccounts: () => string[];\n /**\n * Get the current permissions for the requesting origin.\n *\n * @returns An object containing the metadata about each permission.\n */\n getPermissions: () => Record<string, PermissionConstraint> | undefined;\n /**\n * Grant the passed permissions to the origin.\n *\n * @param permissions\n */\n grantPermissions: (permissions: RequestedPermissions) => void;\n};\n\nconst WILDCARD_SCOPE = 'wallet:eip155';\n\ntype ScopesObject = Record<CaipChainId, { accounts: CaipAccountId[] }>;\n\ntype AuthorizedScopeCaveat = {\n requiredScopes: ScopesObject;\n optionalScopes: ScopesObject;\n sessionProperties: Record<string, Json>;\n isMultichainOrigin: boolean;\n};\n\n/**\n * Create a middleware that automatically grants account permissions to preinstalled Snaps\n * that want to use the Ethereum provider endowment.\n *\n * @param hooks - The hooks used by the middleware.\n * @param hooks.getAllEvmAccounts - Hook for retriveing all available EVM addresses.\n * @param hooks.getPermissions - Hook for retrieving the permissions of the requesting origin.\n * @param hooks.grantPermissions - Hook for granting permissions to the requesting origin.\n * @returns The middleware.\n */\nexport function createPreinstalledSnapsMiddleware({\n getAllEvmAccounts,\n getPermissions,\n grantPermissions,\n}: PreinstalledSnapsMiddlewareHooks): JsonRpcMiddleware<JsonRpcParams, Json> {\n return function methodMiddleware(request, _response, next, _end) {\n if (request.method.startsWith('snap')) {\n return next();\n }\n\n const permissions = getPermissions();\n\n if (\n !permissions ||\n !hasProperty(permissions, SnapEndowments.EthereumProvider)\n ) {\n return next();\n }\n\n const existingEndowment = permissions['endowment:caip25'];\n const existingCaveat = existingEndowment?.caveats?.find(\n (caveat) => caveat.type === 'authorizedScopes',\n )?.value as AuthorizedScopeCaveat | undefined;\n\n const existingRequiredScopes = existingCaveat?.requiredScopes ?? {};\n const existingOptionalScopes = existingCaveat?.optionalScopes ?? {};\n\n const existingEvmAccounts =\n existingOptionalScopes[WILDCARD_SCOPE]?.accounts.map((account) =>\n account.slice(WILDCARD_SCOPE.length + 1),\n ) ?? [];\n\n const evmAccounts = getAllEvmAccounts();\n\n if (isEqual(evmAccounts, existingEvmAccounts)) {\n return next();\n }\n\n grantPermissions({\n 'endowment:caip25': {\n caveats: [\n {\n type: 'authorizedScopes',\n value: {\n requiredScopes: existingRequiredScopes,\n optionalScopes: {\n ...existingOptionalScopes,\n [WILDCARD_SCOPE]: {\n accounts: evmAccounts.map(\n (account) => `${WILDCARD_SCOPE}:${account}`,\n ),\n },\n },\n sessionProperties: {},\n isMultichainOrigin: false,\n },\n },\n ],\n },\n });\n\n return next();\n };\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
2
+ import type { PermissionConstraint, RequestedPermissions } from "@metamask/permission-controller";
3
+ import { type Json, type JsonRpcParams } from "@metamask/utils";
4
+ export type PreinstalledSnapsMiddlewareHooks = {
5
+ /**
6
+ * Get all accounts with the eip155 scope.
7
+ *
8
+ * @returns A list of all account addresses from the eip155 scope.
9
+ */
10
+ getAllEvmAccounts: () => string[];
11
+ /**
12
+ * Get the current permissions for the requesting origin.
13
+ *
14
+ * @returns An object containing the metadata about each permission.
15
+ */
16
+ getPermissions: () => Record<string, PermissionConstraint> | undefined;
17
+ /**
18
+ * Grant the passed permissions to the origin.
19
+ *
20
+ * @param permissions
21
+ */
22
+ grantPermissions: (permissions: RequestedPermissions) => void;
23
+ };
24
+ /**
25
+ * Create a middleware that automatically grants account permissions to preinstalled Snaps
26
+ * that want to use the Ethereum provider endowment.
27
+ *
28
+ * @param hooks - The hooks used by the middleware.
29
+ * @param hooks.getAllEvmAccounts - Hook for retriveing all available EVM addresses.
30
+ * @param hooks.getPermissions - Hook for retrieving the permissions of the requesting origin.
31
+ * @param hooks.grantPermissions - Hook for granting permissions to the requesting origin.
32
+ * @returns The middleware.
33
+ */
34
+ export declare function createPreinstalledSnapsMiddleware({ getAllEvmAccounts, getPermissions, grantPermissions, }: PreinstalledSnapsMiddlewareHooks): JsonRpcMiddleware<JsonRpcParams, Json>;
35
+ //# sourceMappingURL=preinstalled-snaps.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preinstalled-snaps.d.cts","sourceRoot":"","sources":["../../src/middleware/preinstalled-snaps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,wCAAwC;AAEzC,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,aAAa,EACnB,wBAAwB;AAIzB,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,SAAS,CAAC;IACvE;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/D,CAAC;AAaF;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAAC,EAChD,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,EAAE,gCAAgC,GAAG,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CA2D3E"}
@@ -0,0 +1,35 @@
1
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
2
+ import type { PermissionConstraint, RequestedPermissions } from "@metamask/permission-controller";
3
+ import { type Json, type JsonRpcParams } from "@metamask/utils";
4
+ export type PreinstalledSnapsMiddlewareHooks = {
5
+ /**
6
+ * Get all accounts with the eip155 scope.
7
+ *
8
+ * @returns A list of all account addresses from the eip155 scope.
9
+ */
10
+ getAllEvmAccounts: () => string[];
11
+ /**
12
+ * Get the current permissions for the requesting origin.
13
+ *
14
+ * @returns An object containing the metadata about each permission.
15
+ */
16
+ getPermissions: () => Record<string, PermissionConstraint> | undefined;
17
+ /**
18
+ * Grant the passed permissions to the origin.
19
+ *
20
+ * @param permissions
21
+ */
22
+ grantPermissions: (permissions: RequestedPermissions) => void;
23
+ };
24
+ /**
25
+ * Create a middleware that automatically grants account permissions to preinstalled Snaps
26
+ * that want to use the Ethereum provider endowment.
27
+ *
28
+ * @param hooks - The hooks used by the middleware.
29
+ * @param hooks.getAllEvmAccounts - Hook for retriveing all available EVM addresses.
30
+ * @param hooks.getPermissions - Hook for retrieving the permissions of the requesting origin.
31
+ * @param hooks.grantPermissions - Hook for granting permissions to the requesting origin.
32
+ * @returns The middleware.
33
+ */
34
+ export declare function createPreinstalledSnapsMiddleware({ getAllEvmAccounts, getPermissions, grantPermissions, }: PreinstalledSnapsMiddlewareHooks): JsonRpcMiddleware<JsonRpcParams, Json>;
35
+ //# sourceMappingURL=preinstalled-snaps.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preinstalled-snaps.d.mts","sourceRoot":"","sources":["../../src/middleware/preinstalled-snaps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AACnE,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,wCAAwC;AAEzC,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,aAAa,EACnB,wBAAwB;AAIzB,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAC;IAClC;;;;OAIG;IACH,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,SAAS,CAAC;IACvE;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/D,CAAC;AAaF;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAAC,EAChD,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,EAAE,gCAAgC,GAAG,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CA2D3E"}
@@ -0,0 +1,57 @@
1
+ import { isEqual } from "@metamask/snaps-utils";
2
+ import { hasProperty } from "@metamask/utils";
3
+ import { SnapEndowments } from "../endowments/index.mjs";
4
+ const WILDCARD_SCOPE = 'wallet:eip155';
5
+ /**
6
+ * Create a middleware that automatically grants account permissions to preinstalled Snaps
7
+ * that want to use the Ethereum provider endowment.
8
+ *
9
+ * @param hooks - The hooks used by the middleware.
10
+ * @param hooks.getAllEvmAccounts - Hook for retriveing all available EVM addresses.
11
+ * @param hooks.getPermissions - Hook for retrieving the permissions of the requesting origin.
12
+ * @param hooks.grantPermissions - Hook for granting permissions to the requesting origin.
13
+ * @returns The middleware.
14
+ */
15
+ export function createPreinstalledSnapsMiddleware({ getAllEvmAccounts, getPermissions, grantPermissions, }) {
16
+ return function methodMiddleware(request, _response, next, _end) {
17
+ if (request.method.startsWith('snap')) {
18
+ return next();
19
+ }
20
+ const permissions = getPermissions();
21
+ if (!permissions ||
22
+ !hasProperty(permissions, SnapEndowments.EthereumProvider)) {
23
+ return next();
24
+ }
25
+ const existingEndowment = permissions['endowment:caip25'];
26
+ const existingCaveat = existingEndowment?.caveats?.find((caveat) => caveat.type === 'authorizedScopes')?.value;
27
+ const existingRequiredScopes = existingCaveat?.requiredScopes ?? {};
28
+ const existingOptionalScopes = existingCaveat?.optionalScopes ?? {};
29
+ const existingEvmAccounts = existingOptionalScopes[WILDCARD_SCOPE]?.accounts.map((account) => account.slice(WILDCARD_SCOPE.length + 1)) ?? [];
30
+ const evmAccounts = getAllEvmAccounts();
31
+ if (isEqual(evmAccounts, existingEvmAccounts)) {
32
+ return next();
33
+ }
34
+ grantPermissions({
35
+ 'endowment:caip25': {
36
+ caveats: [
37
+ {
38
+ type: 'authorizedScopes',
39
+ value: {
40
+ requiredScopes: existingRequiredScopes,
41
+ optionalScopes: {
42
+ ...existingOptionalScopes,
43
+ [WILDCARD_SCOPE]: {
44
+ accounts: evmAccounts.map((account) => `${WILDCARD_SCOPE}:${account}`),
45
+ },
46
+ },
47
+ sessionProperties: {},
48
+ isMultichainOrigin: false,
49
+ },
50
+ },
51
+ ],
52
+ },
53
+ });
54
+ return next();
55
+ };
56
+ }
57
+ //# sourceMappingURL=preinstalled-snaps.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preinstalled-snaps.mjs","sourceRoot":"","sources":["../../src/middleware/preinstalled-snaps.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,8BAA8B;AAChD,OAAO,EAGL,WAAW,EAGZ,wBAAwB;AAEzB,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAuB/C,MAAM,cAAc,GAAG,eAAe,CAAC;AAWvC;;;;;;;;;GASG;AACH,MAAM,UAAU,iCAAiC,CAAC,EAChD,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACiB;IACjC,OAAO,SAAS,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI;QAC7D,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QAErC,IACE,CAAC,WAAW;YACZ,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAC1D,CAAC;YACD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,iBAAiB,EAAE,OAAO,EAAE,IAAI,CACrD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAC/C,EAAE,KAA0C,CAAC;QAE9C,MAAM,sBAAsB,GAAG,cAAc,EAAE,cAAc,IAAI,EAAE,CAAC;QACpE,MAAM,sBAAsB,GAAG,cAAc,EAAE,cAAc,IAAI,EAAE,CAAC;QAEpE,MAAM,mBAAmB,GACvB,sBAAsB,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/D,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CACzC,IAAI,EAAE,CAAC;QAEV,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QAExC,IAAI,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,gBAAgB,CAAC;YACf,kBAAkB,EAAE;gBAClB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE;4BACL,cAAc,EAAE,sBAAsB;4BACtC,cAAc,EAAE;gCACd,GAAG,sBAAsB;gCACzB,CAAC,cAAc,CAAC,EAAE;oCAChB,QAAQ,EAAE,WAAW,CAAC,GAAG,CACvB,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,cAAc,IAAI,OAAO,EAAE,CAC5C;iCACF;6BACF;4BACD,iBAAiB,EAAE,EAAE;4BACrB,kBAAkB,EAAE,KAAK;yBAC1B;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type {\n PermissionConstraint,\n RequestedPermissions,\n} from '@metamask/permission-controller';\nimport { isEqual } from '@metamask/snaps-utils';\nimport {\n type CaipAccountId,\n type CaipChainId,\n hasProperty,\n type Json,\n type JsonRpcParams,\n} from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\n\nexport type PreinstalledSnapsMiddlewareHooks = {\n /**\n * Get all accounts with the eip155 scope.\n *\n * @returns A list of all account addresses from the eip155 scope.\n */\n getAllEvmAccounts: () => string[];\n /**\n * Get the current permissions for the requesting origin.\n *\n * @returns An object containing the metadata about each permission.\n */\n getPermissions: () => Record<string, PermissionConstraint> | undefined;\n /**\n * Grant the passed permissions to the origin.\n *\n * @param permissions\n */\n grantPermissions: (permissions: RequestedPermissions) => void;\n};\n\nconst WILDCARD_SCOPE = 'wallet:eip155';\n\ntype ScopesObject = Record<CaipChainId, { accounts: CaipAccountId[] }>;\n\ntype AuthorizedScopeCaveat = {\n requiredScopes: ScopesObject;\n optionalScopes: ScopesObject;\n sessionProperties: Record<string, Json>;\n isMultichainOrigin: boolean;\n};\n\n/**\n * Create a middleware that automatically grants account permissions to preinstalled Snaps\n * that want to use the Ethereum provider endowment.\n *\n * @param hooks - The hooks used by the middleware.\n * @param hooks.getAllEvmAccounts - Hook for retriveing all available EVM addresses.\n * @param hooks.getPermissions - Hook for retrieving the permissions of the requesting origin.\n * @param hooks.grantPermissions - Hook for granting permissions to the requesting origin.\n * @returns The middleware.\n */\nexport function createPreinstalledSnapsMiddleware({\n getAllEvmAccounts,\n getPermissions,\n grantPermissions,\n}: PreinstalledSnapsMiddlewareHooks): JsonRpcMiddleware<JsonRpcParams, Json> {\n return function methodMiddleware(request, _response, next, _end) {\n if (request.method.startsWith('snap')) {\n return next();\n }\n\n const permissions = getPermissions();\n\n if (\n !permissions ||\n !hasProperty(permissions, SnapEndowments.EthereumProvider)\n ) {\n return next();\n }\n\n const existingEndowment = permissions['endowment:caip25'];\n const existingCaveat = existingEndowment?.caveats?.find(\n (caveat) => caveat.type === 'authorizedScopes',\n )?.value as AuthorizedScopeCaveat | undefined;\n\n const existingRequiredScopes = existingCaveat?.requiredScopes ?? {};\n const existingOptionalScopes = existingCaveat?.optionalScopes ?? {};\n\n const existingEvmAccounts =\n existingOptionalScopes[WILDCARD_SCOPE]?.accounts.map((account) =>\n account.slice(WILDCARD_SCOPE.length + 1),\n ) ?? [];\n\n const evmAccounts = getAllEvmAccounts();\n\n if (isEqual(evmAccounts, existingEvmAccounts)) {\n return next();\n }\n\n grantPermissions({\n 'endowment:caip25': {\n caveats: [\n {\n type: 'authorizedScopes',\n value: {\n requiredScopes: existingRequiredScopes,\n optionalScopes: {\n ...existingOptionalScopes,\n [WILDCARD_SCOPE]: {\n accounts: evmAccounts.map(\n (account) => `${WILDCARD_SCOPE}:${account}`,\n ),\n },\n },\n sessionProperties: {},\n isMultichainOrigin: false,\n },\n },\n ],\n },\n });\n\n return next();\n };\n}\n"]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.endTraceHandler = void 0;
4
+ const rpc_errors_1 = require("@metamask/rpc-errors");
5
+ const superstruct_1 = require("@metamask/superstruct");
6
+ const hookNames = {
7
+ endTrace: true,
8
+ getSnap: true,
9
+ };
10
+ const EndTraceParametersStruct = (0, superstruct_1.object)({
11
+ id: (0, superstruct_1.exactOptional)((0, superstruct_1.string)()),
12
+ name: (0, superstruct_1.string)(),
13
+ timestamp: (0, superstruct_1.exactOptional)((0, superstruct_1.number)()),
14
+ });
15
+ /**
16
+ * Handler for the `snap_endTrace` method.
17
+ */
18
+ exports.endTraceHandler = {
19
+ methodNames: ['snap_endTrace'],
20
+ implementation: getEndTraceImplementation,
21
+ hookNames,
22
+ };
23
+ /**
24
+ * The `snap_endTrace` method implementation. This method is used to end a
25
+ * performance trace in Sentry. It is only available to preinstalled Snaps.
26
+ *
27
+ * @param request - The JSON-RPC request object.
28
+ * @param response - The JSON-RPC response object.
29
+ * @param _next - The `json-rpc-engine` "next" callback. Not used by this
30
+ * function.
31
+ * @param end - The `json-rpc-engine` "end" callback.
32
+ * @param hooks - The RPC method hooks.
33
+ * @param hooks.endTrace - The hook function to end a performance trace.
34
+ * @param hooks.getSnap - The hook function to get Snap metadata.
35
+ * @returns Nothing.
36
+ */
37
+ function getEndTraceImplementation(request, response, _next, end, { endTrace, getSnap }) {
38
+ const snap = getSnap(request.origin);
39
+ if (!snap?.preinstalled) {
40
+ return end(rpc_errors_1.rpcErrors.methodNotFound());
41
+ }
42
+ const { params } = request;
43
+ try {
44
+ const validatedParams = getValidatedParams(params);
45
+ endTrace(validatedParams);
46
+ response.result = null;
47
+ }
48
+ catch (error) {
49
+ return end(error);
50
+ }
51
+ return end();
52
+ }
53
+ /**
54
+ * Validate the parameters for the `snap_endTrace` 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 (0, superstruct_1.create)(params, EndTraceParametersStruct);
63
+ }
64
+ catch (error) {
65
+ if (error instanceof superstruct_1.StructError) {
66
+ throw rpc_errors_1.rpcErrors.invalidParams({
67
+ message: `Invalid params: ${error.message}.`,
68
+ });
69
+ }
70
+ /* istanbul ignore next */
71
+ throw rpc_errors_1.rpcErrors.internal();
72
+ }
73
+ }
74
+ //# sourceMappingURL=endTrace.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endTrace.cjs","sourceRoot":"","sources":["../../src/permitted/endTrace.ts"],"names":[],"mappings":";;;AAEA,qDAAiD;AAQjD,uDAO+B;AAK/B,MAAM,SAAS,GAA2C;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;CACd,CAAC;AAmBF,MAAM,wBAAwB,GAAG,IAAA,oBAAM,EAAC;IACtC,EAAE,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;IAC3B,IAAI,EAAE,IAAA,oBAAM,GAAE;IACd,SAAS,EAAE,IAAA,2BAAa,EAAC,IAAA,oBAAM,GAAE,CAAC;CACnC,CAAC,CAAC;AAOH;;GAEG;AACU,QAAA,eAAe,GAIxB;IACF,WAAW,EAAE,CAAC,eAAe,CAAC;IAC9B,cAAc,EAAE,yBAAyB;IACzC,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,SAAS,yBAAyB,CAChC,OAA2C,EAC3C,QAAgC,EAChC,KAAc,EACd,GAA6B,EAC7B,EAAE,QAAQ,EAAE,OAAO,EAAuB;IAE1C,MAAM,IAAI,GAAG,OAAO,CACjB,OAA+D,CAAC,MAAM,CACxE,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,eAAe,CAAC,CAAC;QAE1B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,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,wBAAwB,CAAC,CAAC;IAClD,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 EndTraceParams,\n EndTraceResult,\n EndTraceRequest,\n} from '@metamask/snaps-sdk';\nimport type { InferMatching, Snap } from '@metamask/snaps-utils';\nimport {\n number,\n create,\n object,\n string,\n StructError,\n exactOptional,\n} from '@metamask/superstruct';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<EndTraceMethodHooks> = {\n endTrace: true,\n getSnap: true,\n};\n\nexport type EndTraceMethodHooks = {\n /**\n * End a performance trace in Sentry.\n *\n * @param request - The trace request object.\n * @returns The performance trace context.\n */\n endTrace: (request: EndTraceRequest) => void;\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 EndTraceParametersStruct = object({\n id: exactOptional(string()),\n name: string(),\n timestamp: exactOptional(number()),\n});\n\nexport type EndTraceParameters = InferMatching<\n typeof EndTraceParametersStruct,\n EndTraceParams\n>;\n\n/**\n * Handler for the `snap_endTrace` method.\n */\nexport const endTraceHandler: PermittedHandlerExport<\n EndTraceMethodHooks,\n EndTraceParameters,\n EndTraceResult\n> = {\n methodNames: ['snap_endTrace'],\n implementation: getEndTraceImplementation,\n hookNames,\n};\n\n/**\n * The `snap_endTrace` method implementation. This method is used to end 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.endTrace - The hook function to end a performance trace.\n * @param hooks.getSnap - The hook function to get Snap metadata.\n * @returns Nothing.\n */\nfunction getEndTraceImplementation(\n request: JsonRpcRequest<EndTraceParameters>,\n response: PendingJsonRpcResponse,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { endTrace, getSnap }: EndTraceMethodHooks,\n): void {\n const snap = getSnap(\n (request as JsonRpcRequest<EndTraceParams> & { 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 endTrace(validatedParams);\n\n response.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the parameters for the `snap_endTrace` 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): EndTraceParameters {\n try {\n return create(params, EndTraceParametersStruct);\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"]}