@metamask/snaps-rpc-methods 13.1.0 → 13.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/endowments/index.cjs +1 -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 +1 -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/createInterface.d.cts +10 -10
  33. package/dist/permitted/createInterface.d.mts +10 -10
  34. package/dist/permitted/endTrace.cjs +74 -0
  35. package/dist/permitted/endTrace.cjs.map +1 -0
  36. package/dist/permitted/endTrace.d.cts +34 -0
  37. package/dist/permitted/endTrace.d.cts.map +1 -0
  38. package/dist/permitted/endTrace.d.mts +34 -0
  39. package/dist/permitted/endTrace.d.mts.map +1 -0
  40. package/dist/permitted/endTrace.mjs +71 -0
  41. package/dist/permitted/endTrace.mjs.map +1 -0
  42. package/dist/permitted/handlers.cjs +6 -0
  43. package/dist/permitted/handlers.cjs.map +1 -1
  44. package/dist/permitted/handlers.d.cts +5 -2
  45. package/dist/permitted/handlers.d.cts.map +1 -1
  46. package/dist/permitted/handlers.d.mts +5 -2
  47. package/dist/permitted/handlers.d.mts.map +1 -1
  48. package/dist/permitted/handlers.mjs +6 -0
  49. package/dist/permitted/handlers.mjs.map +1 -1
  50. package/dist/permitted/index.cjs.map +1 -1
  51. package/dist/permitted/index.d.cts +5 -1
  52. package/dist/permitted/index.d.cts.map +1 -1
  53. package/dist/permitted/index.d.mts +5 -1
  54. package/dist/permitted/index.d.mts.map +1 -1
  55. package/dist/permitted/index.mjs.map +1 -1
  56. package/dist/permitted/startTrace.cjs +77 -0
  57. package/dist/permitted/startTrace.cjs.map +1 -0
  58. package/dist/permitted/startTrace.d.cts +40 -0
  59. package/dist/permitted/startTrace.d.cts.map +1 -0
  60. package/dist/permitted/startTrace.d.mts +40 -0
  61. package/dist/permitted/startTrace.d.mts.map +1 -0
  62. package/dist/permitted/startTrace.mjs +74 -0
  63. package/dist/permitted/startTrace.mjs.map +1 -0
  64. package/dist/permitted/trackError.cjs +94 -0
  65. package/dist/permitted/trackError.cjs.map +1 -0
  66. package/dist/permitted/trackError.d.cts +32 -0
  67. package/dist/permitted/trackError.d.cts.map +1 -0
  68. package/dist/permitted/trackError.d.mts +32 -0
  69. package/dist/permitted/trackError.d.mts.map +1 -0
  70. package/dist/permitted/trackError.mjs +91 -0
  71. package/dist/permitted/trackError.mjs.map +1 -0
  72. package/dist/permitted/updateInterface.d.cts +10 -10
  73. package/dist/permitted/updateInterface.d.mts +10 -10
  74. package/dist/restricted/dialog.d.cts +20 -20
  75. package/dist/restricted/dialog.d.mts +20 -20
  76. package/dist/restricted/notify.d.cts +15 -15
  77. package/dist/restricted/notify.d.mts +15 -15
  78. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [13.3.0]
11
+
12
+ ### Added
13
+
14
+ - Add middleware for automatically granting EVM permissions to preinstalled Snaps ([#3410](https://github.com/MetaMask/snaps/pull/3410))
15
+ - Add `snap_startTrace` and `snap_endTrace` methods for performance tracing ([#3519](https://github.com/MetaMask/snaps/pull/3519))
16
+
17
+ ## [13.2.0]
18
+
19
+ ### Added
20
+
21
+ - Add `snap_trackError` method for error tracking through Sentry ([#3498](https://github.com/MetaMask/snaps/pull/3498))
22
+ - Add support for `onAssetsMarketData` handler ([#3496](https://github.com/MetaMask/snaps/pull/3496))
23
+
10
24
  ## [13.1.0]
11
25
 
12
26
  ### Added
@@ -462,7 +476,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
462
476
  - The version of the package no longer needs to match the version of all other
463
477
  MetaMask Snaps packages.
464
478
 
465
- [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.1.0...HEAD
479
+ [Unreleased]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.3.0...HEAD
480
+ [13.3.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.2.0...@metamask/snaps-rpc-methods@13.3.0
481
+ [13.2.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.1.0...@metamask/snaps-rpc-methods@13.2.0
466
482
  [13.1.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@13.0.0...@metamask/snaps-rpc-methods@13.1.0
467
483
  [13.0.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@12.4.0...@metamask/snaps-rpc-methods@13.0.0
468
484
  [12.4.0]: https://github.com/MetaMask/snaps/compare/@metamask/snaps-rpc-methods@12.3.0...@metamask/snaps-rpc-methods@12.4.0
@@ -87,6 +87,7 @@ exports.handlerEndowments = {
87
87
  [snaps_utils_1.HandlerType.OnAssetHistoricalPrice]: assets_1.assetsEndowmentBuilder.targetName,
88
88
  [snaps_utils_1.HandlerType.OnAssetsLookup]: assets_1.assetsEndowmentBuilder.targetName,
89
89
  [snaps_utils_1.HandlerType.OnAssetsConversion]: assets_1.assetsEndowmentBuilder.targetName,
90
+ [snaps_utils_1.HandlerType.OnAssetsMarketData]: assets_1.assetsEndowmentBuilder.targetName,
90
91
  [snaps_utils_1.HandlerType.OnProtocolRequest]: protocol_1.protocolEndowmentBuilder.targetName,
91
92
  [snaps_utils_1.HandlerType.OnClientRequest]: null,
92
93
  [snaps_utils_1.HandlerType.OnWebSocketEvent]: network_access_1.networkAccessEndowmentBuilder.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.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.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,CAmBhE,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,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 +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,CAmBhE,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,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"}
@@ -70,6 +70,7 @@ export const handlerEndowments = {
70
70
  [HandlerType.OnAssetHistoricalPrice]: assetsEndowmentBuilder.targetName,
71
71
  [HandlerType.OnAssetsLookup]: assetsEndowmentBuilder.targetName,
72
72
  [HandlerType.OnAssetsConversion]: assetsEndowmentBuilder.targetName,
73
+ [HandlerType.OnAssetsMarketData]: assetsEndowmentBuilder.targetName,
73
74
  [HandlerType.OnProtocolRequest]: protocolEndowmentBuilder.targetName,
74
75
  [HandlerType.OnClientRequest]: null,
75
76
  [HandlerType.OnWebSocketEvent]: networkAccessEndowmentBuilder.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.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.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"]}
@@ -47,8 +47,8 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
47
47
  label: string;
48
48
  variant?: "default" | "critical" | "warning" | undefined;
49
49
  } | {
50
- name: string;
51
50
  type: import("@metamask/snaps-sdk").NodeType.Input;
51
+ name: string;
52
52
  value?: string | undefined;
53
53
  label?: string | undefined;
54
54
  inputType?: "number" | "text" | "password" | undefined;
@@ -57,15 +57,15 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
57
57
  } | {
58
58
  value: string;
59
59
  type: import("@metamask/snaps-sdk").NodeType.Button;
60
- name?: string | undefined;
61
60
  variant?: "primary" | "secondary" | undefined;
61
+ name?: string | undefined;
62
62
  buttonType?: "button" | "submit" | undefined;
63
63
  } | {
64
- name: string;
65
64
  type: import("@metamask/snaps-sdk").NodeType.Form;
65
+ name: string;
66
66
  children: ({
67
- name: string;
68
67
  type: import("@metamask/snaps-sdk").NodeType.Input;
68
+ name: string;
69
69
  value?: string | undefined;
70
70
  label?: string | undefined;
71
71
  inputType?: "number" | "text" | "password" | undefined;
@@ -74,8 +74,8 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
74
74
  } | {
75
75
  value: string;
76
76
  type: import("@metamask/snaps-sdk").NodeType.Button;
77
- name?: string | undefined;
78
77
  variant?: "primary" | "secondary" | undefined;
78
+ name?: string | undefined;
79
79
  buttonType?: "button" | "submit" | undefined;
80
80
  })[];
81
81
  } | import("@metamask/snaps-sdk/jsx").SnapElement<{
@@ -134,8 +134,8 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
134
134
  label: string;
135
135
  variant?: "default" | "critical" | "warning" | undefined;
136
136
  } | {
137
- name: string;
138
137
  type: import("@metamask/snaps-sdk").NodeType.Input;
138
+ name: string;
139
139
  value?: string | undefined;
140
140
  label?: string | undefined;
141
141
  inputType?: "number" | "text" | "password" | undefined;
@@ -144,15 +144,15 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
144
144
  } | {
145
145
  value: string;
146
146
  type: import("@metamask/snaps-sdk").NodeType.Button;
147
- name?: string | undefined;
148
147
  variant?: "primary" | "secondary" | undefined;
148
+ name?: string | undefined;
149
149
  buttonType?: "button" | "submit" | undefined;
150
150
  } | {
151
- name: string;
152
151
  type: import("@metamask/snaps-sdk").NodeType.Form;
152
+ name: string;
153
153
  children: ({
154
- name: string;
155
154
  type: import("@metamask/snaps-sdk").NodeType.Input;
155
+ name: string;
156
156
  value?: string | undefined;
157
157
  label?: string | undefined;
158
158
  inputType?: "number" | "text" | "password" | undefined;
@@ -161,8 +161,8 @@ declare const CreateInterfaceParametersStruct: import("@metamask/superstruct").S
161
161
  } | {
162
162
  value: string;
163
163
  type: import("@metamask/snaps-sdk").NodeType.Button;
164
- name?: string | undefined;
165
164
  variant?: "primary" | "secondary" | undefined;
165
+ name?: string | undefined;
166
166
  buttonType?: "button" | "submit" | undefined;
167
167
  })[];
168
168
  } | import("@metamask/snaps-sdk/jsx").SnapElement<{