@metamask/permission-controller 10.0.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/dist/Caveat.js +3 -3
  3. package/dist/Caveat.mjs +2 -2
  4. package/dist/PermissionController.js +6 -6
  5. package/dist/PermissionController.mjs +5 -5
  6. package/dist/SubjectMetadataController.js +2 -2
  7. package/dist/SubjectMetadataController.mjs +1 -1
  8. package/dist/{chunk-RJKSCKTD.mjs → chunk-3WWJKO7P.mjs} +2 -2
  9. package/dist/{chunk-RKDXFKNN.js → chunk-3YOPLPVY.js} +4 -4
  10. package/dist/{chunk-W4CPVA4J.mjs → chunk-42QSJHWO.mjs} +5 -1
  11. package/dist/chunk-42QSJHWO.mjs.map +1 -0
  12. package/dist/{chunk-TBOKQ5NP.mjs → chunk-4FMYQC3Y.mjs} +4 -4
  13. package/dist/{chunk-3R56AY2L.mjs → chunk-4NAVRO44.mjs} +4 -4
  14. package/dist/chunk-4NAVRO44.mjs.map +1 -0
  15. package/dist/{chunk-73M67Z5X.mjs → chunk-5RFW5THA.mjs} +2 -2
  16. package/dist/{chunk-73M67Z5X.mjs.map → chunk-5RFW5THA.mjs.map} +1 -1
  17. package/dist/{chunk-DV74ZDGD.js → chunk-6PXDVUYM.js} +7 -7
  18. package/dist/{chunk-Y6GRGXOL.mjs → chunk-74H4CVH7.mjs} +3 -3
  19. package/dist/{chunk-Y6GRGXOL.mjs.map → chunk-74H4CVH7.mjs.map} +1 -1
  20. package/dist/{chunk-XM622CMP.js → chunk-7A3VYLCK.js} +4 -4
  21. package/dist/{chunk-XM622CMP.js.map → chunk-7A3VYLCK.js.map} +1 -1
  22. package/dist/{chunk-I3DJ23QH.js → chunk-B6PDRQ7N.js} +73 -73
  23. package/dist/chunk-B6PDRQ7N.js.map +1 -0
  24. package/dist/{chunk-4B6NOD2D.mjs → chunk-COGJLF22.mjs} +19 -19
  25. package/dist/chunk-COGJLF22.mjs.map +1 -0
  26. package/dist/{chunk-VM4LI55W.js → chunk-F5TBMVWC.js} +3 -3
  27. package/dist/{chunk-3X6WO7UG.js → chunk-FYADAA2G.js} +4 -2
  28. package/dist/chunk-FYADAA2G.js.map +1 -0
  29. package/dist/{chunk-AZUM6CBY.mjs → chunk-G4BWJ7EA.mjs} +4 -2
  30. package/dist/chunk-G4BWJ7EA.mjs.map +1 -0
  31. package/dist/{chunk-RXC2KFRK.mjs → chunk-I62TTXZ6.mjs} +2 -2
  32. package/dist/{chunk-DUZPZORW.mjs → chunk-OCLNDUYO.mjs} +3 -3
  33. package/dist/{chunk-DUZPZORW.mjs.map → chunk-OCLNDUYO.mjs.map} +1 -1
  34. package/dist/{chunk-HRDKMOYS.js → chunk-VBIZGGQL.js} +2 -2
  35. package/dist/{chunk-HRDKMOYS.js.map → chunk-VBIZGGQL.js.map} +1 -1
  36. package/dist/{chunk-PTE4672I.js → chunk-VQPP5PWS.js} +4 -4
  37. package/dist/chunk-VQPP5PWS.js.map +1 -0
  38. package/dist/{chunk-C73QV75D.js → chunk-VSDHL2GQ.js} +5 -1
  39. package/dist/chunk-VSDHL2GQ.js.map +1 -0
  40. package/dist/{chunk-GHOOCGN3.js → chunk-X4ZAW4QR.js} +5 -5
  41. package/dist/{chunk-GHOOCGN3.js.map → chunk-X4ZAW4QR.js.map} +1 -1
  42. package/dist/errors.js +2 -2
  43. package/dist/errors.mjs +1 -1
  44. package/dist/index.js +11 -11
  45. package/dist/index.mjs +10 -10
  46. package/dist/permission-middleware.js +3 -3
  47. package/dist/permission-middleware.mjs +2 -2
  48. package/dist/rpc-methods/getPermissions.js +3 -3
  49. package/dist/rpc-methods/getPermissions.mjs +2 -2
  50. package/dist/rpc-methods/index.js +7 -7
  51. package/dist/rpc-methods/index.mjs +6 -6
  52. package/dist/rpc-methods/requestPermissions.js +4 -4
  53. package/dist/rpc-methods/requestPermissions.mjs +3 -3
  54. package/dist/rpc-methods/revokePermissions.js +4 -4
  55. package/dist/rpc-methods/revokePermissions.mjs +3 -3
  56. package/dist/tsconfig.build.tsbuildinfo +1 -1
  57. package/dist/types/PermissionController.d.ts +10 -10
  58. package/dist/types/PermissionController.d.ts.map +1 -1
  59. package/dist/types/SubjectMetadataController.d.ts.map +1 -1
  60. package/dist/types/errors.d.ts.map +1 -1
  61. package/dist/types/utils.d.ts +9 -9
  62. package/dist/types/utils.d.ts.map +1 -1
  63. package/dist/utils.js +2 -2
  64. package/dist/utils.mjs +1 -1
  65. package/package.json +12 -12
  66. package/dist/chunk-3R56AY2L.mjs.map +0 -1
  67. package/dist/chunk-3X6WO7UG.js.map +0 -1
  68. package/dist/chunk-4B6NOD2D.mjs.map +0 -1
  69. package/dist/chunk-AZUM6CBY.mjs.map +0 -1
  70. package/dist/chunk-C73QV75D.js.map +0 -1
  71. package/dist/chunk-I3DJ23QH.js.map +0 -1
  72. package/dist/chunk-PTE4672I.js.map +0 -1
  73. package/dist/chunk-W4CPVA4J.mjs.map +0 -1
  74. /package/dist/{chunk-RJKSCKTD.mjs.map → chunk-3WWJKO7P.mjs.map} +0 -0
  75. /package/dist/{chunk-RKDXFKNN.js.map → chunk-3YOPLPVY.js.map} +0 -0
  76. /package/dist/{chunk-TBOKQ5NP.mjs.map → chunk-4FMYQC3Y.mjs.map} +0 -0
  77. /package/dist/{chunk-DV74ZDGD.js.map → chunk-6PXDVUYM.js.map} +0 -0
  78. /package/dist/{chunk-VM4LI55W.js.map → chunk-F5TBMVWC.js.map} +0 -0
  79. /package/dist/{chunk-RXC2KFRK.mjs.map → chunk-I62TTXZ6.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [11.0.0]
11
+
12
+ ### Changed
13
+
14
+ - **BREAKING:** Rename enum property names to match PascalCase instead of camelCase ([#4521](https://github.com/MetaMask/core/pull/4521))
15
+ - The affected enums are: `CaveatMutatorOperations`, `MethodNames`.
16
+ - Bump TypeScript version to `~5.0.4` and set `moduleResolution` option to `Node16` ([#3645](https://github.com/MetaMask/core/pull/3645))
17
+ - Bump `@metamask/base-controller` from `^6.0.1` to `^6.0.2` ([#4544](https://github.com/MetaMask/core/pull/4544))
18
+ - Bump `@metamask/controller-utils` from `^11.0.1` to `^11.0.2` ([#4544](https://github.com/MetaMask/core/pull/4544))
19
+ - Bump `@metamask/json-rpc-engine` from `^9.0.1` to `^9.0.2` ([#4544](https://github.com/MetaMask/core/pull/4544))
20
+ - Bump `@metamask/utils` from `^9.0.0` to `^9.1.0` ([#4529](https://github.com/MetaMask/core/pull/4529))
21
+
22
+ ## [10.0.1]
23
+
24
+ ### Changed
25
+
26
+ - Bump `@metamask/rpc-errors` from `6.2.1` to `^6.3.1` ([#4516](https://github.com/MetaMask/core/pull/4516))
27
+ - Bump `@metamask/utils` from `^8.3.0` to `^9.0.0` ([#4516](https://github.com/MetaMask/core/pull/4516))
28
+ - Bump `@metamask/base-controller` to `^9.0.1` ([#4517](https://github.com/MetaMask/core/pull/4517))
29
+ - Bump `@metamask/controller-utils` to `^11.0.1` ([#4517](https://github.com/MetaMask/core/pull/4517))
30
+ - Bump `@metamask/json-rpc-engine` to `^9.0.1` ([#4517](https://github.com/MetaMask/core/pull/4517))
31
+
10
32
  ## [10.0.0]
11
33
 
12
34
  ### Changed
@@ -242,7 +264,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
242
264
 
243
265
  All changes listed after this point were applied to this package following the monorepo conversion.
244
266
 
245
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@10.0.0...HEAD
267
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@11.0.0...HEAD
268
+ [11.0.0]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@10.0.1...@metamask/permission-controller@11.0.0
269
+ [10.0.1]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@10.0.0...@metamask/permission-controller@10.0.1
246
270
  [10.0.0]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@9.1.1...@metamask/permission-controller@10.0.0
247
271
  [9.1.1]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@9.1.0...@metamask/permission-controller@9.1.1
248
272
  [9.1.0]: https://github.com/MetaMask/core/compare/@metamask/permission-controller@9.0.2...@metamask/permission-controller@9.1.0
package/dist/Caveat.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkRKDXFKNNjs = require('./chunk-RKDXFKNN.js');
4
+ var _chunk3YOPLPVYjs = require('./chunk-3YOPLPVY.js');
5
5
  require('./chunk-ZH4MLSXX.js');
6
- require('./chunk-3X6WO7UG.js');
6
+ require('./chunk-FYADAA2G.js');
7
7
  require('./chunk-Z2XKIXLS.js');
8
8
 
9
9
 
10
10
 
11
- exports.decorateWithCaveats = _chunkRKDXFKNNjs.decorateWithCaveats; exports.isRestrictedMethodCaveatSpecification = _chunkRKDXFKNNjs.isRestrictedMethodCaveatSpecification;
11
+ exports.decorateWithCaveats = _chunk3YOPLPVYjs.decorateWithCaveats; exports.isRestrictedMethodCaveatSpecification = _chunk3YOPLPVYjs.isRestrictedMethodCaveatSpecification;
12
12
  //# sourceMappingURL=Caveat.js.map
package/dist/Caveat.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  decorateWithCaveats,
3
3
  isRestrictedMethodCaveatSpecification
4
- } from "./chunk-RJKSCKTD.mjs";
4
+ } from "./chunk-3WWJKO7P.mjs";
5
5
  import "./chunk-HYMS7IGB.mjs";
6
- import "./chunk-AZUM6CBY.mjs";
6
+ import "./chunk-G4BWJ7EA.mjs";
7
7
  import "./chunk-2L4QPE5A.mjs";
8
8
  export {
9
9
  decorateWithCaveats,
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkI3DJ23QHjs = require('./chunk-I3DJ23QH.js');
5
- require('./chunk-RKDXFKNN.js');
4
+ var _chunkB6PDRQ7Njs = require('./chunk-B6PDRQ7N.js');
5
+ require('./chunk-3YOPLPVY.js');
6
6
  require('./chunk-ZH4MLSXX.js');
7
- require('./chunk-VM4LI55W.js');
8
- require('./chunk-3X6WO7UG.js');
9
- require('./chunk-PTE4672I.js');
7
+ require('./chunk-F5TBMVWC.js');
8
+ require('./chunk-FYADAA2G.js');
9
+ require('./chunk-VQPP5PWS.js');
10
10
  require('./chunk-Z2XKIXLS.js');
11
11
 
12
12
 
13
13
 
14
- exports.CaveatMutatorOperation = _chunkI3DJ23QHjs.CaveatMutatorOperation; exports.PermissionController = _chunkI3DJ23QHjs.PermissionController;
14
+ exports.CaveatMutatorOperation = _chunkB6PDRQ7Njs.CaveatMutatorOperation; exports.PermissionController = _chunkB6PDRQ7Njs.PermissionController;
15
15
  //# sourceMappingURL=PermissionController.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  CaveatMutatorOperation,
3
3
  PermissionController
4
- } from "./chunk-4B6NOD2D.mjs";
5
- import "./chunk-RJKSCKTD.mjs";
4
+ } from "./chunk-COGJLF22.mjs";
5
+ import "./chunk-3WWJKO7P.mjs";
6
6
  import "./chunk-HYMS7IGB.mjs";
7
- import "./chunk-RXC2KFRK.mjs";
8
- import "./chunk-AZUM6CBY.mjs";
9
- import "./chunk-3R56AY2L.mjs";
7
+ import "./chunk-I62TTXZ6.mjs";
8
+ import "./chunk-G4BWJ7EA.mjs";
9
+ import "./chunk-4NAVRO44.mjs";
10
10
  import "./chunk-2L4QPE5A.mjs";
11
11
  export {
12
12
  CaveatMutatorOperation,
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkC73QV75Djs = require('./chunk-C73QV75D.js');
4
+ var _chunkVSDHL2GQjs = require('./chunk-VSDHL2GQ.js');
5
5
  require('./chunk-Z2XKIXLS.js');
6
6
 
7
7
 
8
8
 
9
- exports.SubjectMetadataController = _chunkC73QV75Djs.SubjectMetadataController; exports.SubjectType = _chunkC73QV75Djs.SubjectType;
9
+ exports.SubjectMetadataController = _chunkVSDHL2GQjs.SubjectMetadataController; exports.SubjectType = _chunkVSDHL2GQjs.SubjectType;
10
10
  //# sourceMappingURL=SubjectMetadataController.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SubjectMetadataController,
3
3
  SubjectType
4
- } from "./chunk-W4CPVA4J.mjs";
4
+ } from "./chunk-42QSJHWO.mjs";
5
5
  import "./chunk-2L4QPE5A.mjs";
6
6
  export {
7
7
  SubjectMetadataController,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CaveatSpecificationMismatchError,
3
3
  UnrecognizedCaveatTypeError
4
- } from "./chunk-AZUM6CBY.mjs";
4
+ } from "./chunk-G4BWJ7EA.mjs";
5
5
 
6
6
  // src/Caveat.ts
7
7
  import { hasProperty } from "@metamask/utils";
@@ -34,4 +34,4 @@ export {
34
34
  isRestrictedMethodCaveatSpecification,
35
35
  decorateWithCaveats
36
36
  };
37
- //# sourceMappingURL=chunk-RJKSCKTD.mjs.map
37
+ //# sourceMappingURL=chunk-3WWJKO7P.mjs.map
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunk3X6WO7UGjs = require('./chunk-3X6WO7UG.js');
4
+ var _chunkFYADAA2Gjs = require('./chunk-FYADAA2G.js');
5
5
 
6
6
  // src/Caveat.ts
7
7
  var _utils = require('@metamask/utils');
@@ -17,10 +17,10 @@ function decorateWithCaveats(methodImplementation, permission, caveatSpecificati
17
17
  for (const caveat of caveats) {
18
18
  const specification = caveatSpecifications[caveat.type];
19
19
  if (!specification) {
20
- throw new (0, _chunk3X6WO7UGjs.UnrecognizedCaveatTypeError)(caveat.type);
20
+ throw new (0, _chunkFYADAA2Gjs.UnrecognizedCaveatTypeError)(caveat.type);
21
21
  }
22
22
  if (!isRestrictedMethodCaveatSpecification(specification)) {
23
- throw new (0, _chunk3X6WO7UGjs.CaveatSpecificationMismatchError)(
23
+ throw new (0, _chunkFYADAA2Gjs.CaveatSpecificationMismatchError)(
24
24
  specification,
25
25
  "RestrictedMethod" /* RestrictedMethod */
26
26
  );
@@ -34,4 +34,4 @@ function decorateWithCaveats(methodImplementation, permission, caveatSpecificati
34
34
 
35
35
 
36
36
  exports.isRestrictedMethodCaveatSpecification = isRestrictedMethodCaveatSpecification; exports.decorateWithCaveats = decorateWithCaveats;
37
- //# sourceMappingURL=chunk-RKDXFKNN.js.map
37
+ //# sourceMappingURL=chunk-3YOPLPVY.js.map
@@ -41,10 +41,14 @@ var SubjectMetadataController = class _SubjectMetadataController extends BaseCon
41
41
  this.subjectCacheLimit = subjectCacheLimit;
42
42
  this.subjectsWithoutPermissionsEncounteredSinceStartup = /* @__PURE__ */ new Set();
43
43
  this.messagingSystem.registerActionHandler(
44
+ // ESLint is confused by the string literal type.
45
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
44
46
  `${this.name}:getSubjectMetadata`,
45
47
  this.getSubjectMetadata.bind(this)
46
48
  );
47
49
  this.messagingSystem.registerActionHandler(
50
+ // ESLint is confused by the string literal type.
51
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
48
52
  `${this.name}:addSubjectMetadata`,
49
53
  this.addSubjectMetadata.bind(this)
50
54
  );
@@ -148,4 +152,4 @@ export {
148
152
  SubjectType,
149
153
  SubjectMetadataController
150
154
  };
151
- //# sourceMappingURL=chunk-W4CPVA4J.mjs.map
155
+ //# sourceMappingURL=chunk-42QSJHWO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/SubjectMetadataController.ts"],"sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { Json } from '@metamask/utils';\n\nimport type {\n GenericPermissionController,\n HasPermissions,\n PermissionSubjectMetadata,\n} from './PermissionController';\n\nconst controllerName = 'SubjectMetadataController';\n\ntype SubjectOrigin = string;\n\n/**\n * The different kinds of subjects that MetaMask may interact with, including\n * third parties and itself (e.g., when the background communicated with the UI).\n */\nexport enum SubjectType {\n Extension = 'extension',\n Internal = 'internal',\n Unknown = 'unknown',\n Website = 'website',\n Snap = 'snap',\n}\n\nexport type SubjectMetadata = PermissionSubjectMetadata & {\n [key: string]: Json;\n name: string | null;\n subjectType: SubjectType | null;\n extensionId: string | null;\n iconUrl: string | null;\n};\n\ntype SubjectMetadataToAdd = PermissionSubjectMetadata & {\n name?: string | null;\n subjectType?: SubjectType | null;\n extensionId?: string | null;\n iconUrl?: string | null;\n} & Record<string, Json>;\n\nexport type SubjectMetadataControllerState = {\n subjectMetadata: Record<SubjectOrigin, SubjectMetadata>;\n};\n\nconst stateMetadata = {\n subjectMetadata: { persist: true, anonymous: false },\n};\n\nconst defaultState: SubjectMetadataControllerState = {\n subjectMetadata: {},\n};\n\nexport type GetSubjectMetadataState = ControllerGetStateAction<\n typeof controllerName,\n SubjectMetadataControllerState\n>;\n\nexport type GetSubjectMetadata = {\n type: `${typeof controllerName}:getSubjectMetadata`;\n handler: (origin: SubjectOrigin) => SubjectMetadata | undefined;\n};\n\nexport type AddSubjectMetadata = {\n type: `${typeof controllerName}:addSubjectMetadata`;\n handler: (metadata: SubjectMetadataToAdd) => void;\n};\n\nexport type SubjectMetadataControllerActions =\n | GetSubjectMetadataState\n | GetSubjectMetadata\n | AddSubjectMetadata;\n\nexport type SubjectMetadataStateChange = ControllerStateChangeEvent<\n typeof controllerName,\n SubjectMetadataControllerState\n>;\n\nexport type SubjectMetadataControllerEvents = SubjectMetadataStateChange;\n\ntype AllowedActions = HasPermissions;\n\nexport type SubjectMetadataControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SubjectMetadataControllerActions | AllowedActions,\n SubjectMetadataControllerEvents,\n AllowedActions['type'],\n never\n>;\n\ntype SubjectMetadataControllerOptions = {\n messenger: SubjectMetadataControllerMessenger;\n subjectCacheLimit: number;\n state?: Partial<SubjectMetadataControllerState>;\n};\n\n/**\n * A controller for storing metadata associated with permission subjects. More\n * or less, a cache.\n */\nexport class SubjectMetadataController extends BaseController<\n typeof controllerName,\n SubjectMetadataControllerState,\n SubjectMetadataControllerMessenger\n> {\n private readonly subjectCacheLimit: number;\n\n private readonly subjectsWithoutPermissionsEncounteredSinceStartup: Set<string>;\n\n private readonly subjectHasPermissions: GenericPermissionController['hasPermissions'];\n\n constructor({\n messenger,\n subjectCacheLimit,\n state = {},\n }: SubjectMetadataControllerOptions) {\n if (!Number.isInteger(subjectCacheLimit) || subjectCacheLimit < 1) {\n throw new Error(\n `subjectCacheLimit must be a positive integer. Received: \"${subjectCacheLimit}\"`,\n );\n }\n\n const hasPermissions = (origin: string) => {\n return messenger.call('PermissionController:hasPermissions', origin);\n };\n\n super({\n name: controllerName,\n metadata: stateMetadata,\n messenger,\n state: {\n ...SubjectMetadataController.getTrimmedState(state, hasPermissions),\n },\n });\n\n this.subjectHasPermissions = hasPermissions;\n this.subjectCacheLimit = subjectCacheLimit;\n this.subjectsWithoutPermissionsEncounteredSinceStartup = new Set();\n\n this.messagingSystem.registerActionHandler(\n // ESLint is confused by the string literal type.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `${this.name}:getSubjectMetadata`,\n this.getSubjectMetadata.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n // ESLint is confused by the string literal type.\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `${this.name}:addSubjectMetadata`,\n this.addSubjectMetadata.bind(this),\n );\n }\n\n /**\n * Clears the state of this controller. Also resets the cache of subjects\n * encountered since startup, so as to not prematurely reach the cache limit.\n */\n clearState(): void {\n this.subjectsWithoutPermissionsEncounteredSinceStartup.clear();\n this.update((_draftState) => {\n return { ...defaultState };\n });\n }\n\n /**\n * Stores domain metadata for the given origin (subject). Deletes metadata for\n * subjects without permissions in a FIFO manner once more than\n * {@link SubjectMetadataController.subjectCacheLimit} distinct origins have\n * been added since boot.\n *\n * In order to prevent a degraded user experience,\n * metadata is never deleted for subjects with permissions, since metadata\n * cannot yet be requested on demand.\n *\n * @param metadata - The subject metadata to store.\n */\n addSubjectMetadata(metadata: SubjectMetadataToAdd): void {\n const { origin } = metadata;\n const newMetadata: SubjectMetadata = {\n ...metadata,\n extensionId: metadata.extensionId || null,\n iconUrl: metadata.iconUrl || null,\n name: metadata.name || null,\n subjectType: metadata.subjectType || null,\n };\n\n let originToForget: string | null = null;\n // We only delete the oldest encountered subject from the cache, again to\n // ensure that the user's experience isn't degraded by missing icons etc.\n if (\n this.subjectsWithoutPermissionsEncounteredSinceStartup.size >=\n this.subjectCacheLimit\n ) {\n const cachedOrigin =\n this.subjectsWithoutPermissionsEncounteredSinceStartup\n .values()\n .next().value;\n\n this.subjectsWithoutPermissionsEncounteredSinceStartup.delete(\n cachedOrigin,\n );\n\n if (!this.subjectHasPermissions(cachedOrigin)) {\n originToForget = cachedOrigin;\n }\n }\n\n this.subjectsWithoutPermissionsEncounteredSinceStartup.add(origin);\n\n this.update((draftState) => {\n draftState.subjectMetadata[origin] = newMetadata;\n if (typeof originToForget === 'string') {\n delete draftState.subjectMetadata[originToForget];\n }\n });\n }\n\n /**\n * Gets the subject metadata for the given origin, if any.\n *\n * @param origin - The origin for which to get the subject metadata.\n * @returns The subject metadata, if any, or `undefined` otherwise.\n */\n getSubjectMetadata(origin: SubjectOrigin): SubjectMetadata | undefined {\n return this.state.subjectMetadata[origin];\n }\n\n /**\n * Deletes all subjects without permissions from the controller's state.\n */\n trimMetadataState(): void {\n this.update((draftState) => {\n // @ts-expect-error ts(2589)\n return SubjectMetadataController.getTrimmedState(\n draftState,\n this.subjectHasPermissions,\n );\n });\n }\n\n /**\n * Returns a new state object that only includes subjects with permissions.\n * This method is static because we want to call it in the constructor, before\n * the controller's state is initialized.\n *\n * @param state - The state object to trim.\n * @param hasPermissions - A function that returns a boolean indicating\n * whether a particular subject (identified by its origin) has any\n * permissions.\n * @returns The new state object. If the specified `state` object has no\n * subject metadata, the returned object will be equivalent to the default\n * state of this controller.\n */\n private static getTrimmedState(\n state: Partial<SubjectMetadataControllerState>,\n hasPermissions: SubjectMetadataController['subjectHasPermissions'],\n ): SubjectMetadataControllerState {\n const { subjectMetadata = {} } = state;\n\n return {\n subjectMetadata: Object.keys(subjectMetadata).reduce<\n Record<SubjectOrigin, SubjectMetadata>\n >((newSubjectMetadata, origin) => {\n if (hasPermissions(origin)) {\n newSubjectMetadata[origin] = subjectMetadata[origin];\n }\n return newSubjectMetadata;\n }, {}),\n };\n }\n}\n"],"mappings":";AAKA,SAAS,sBAAsB;AAS/B,IAAM,iBAAiB;AAQhB,IAAK,cAAL,kBAAKA,iBAAL;AACL,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,cAAW;AACX,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,UAAO;AALG,SAAAA;AAAA,GAAA;AA2BZ,IAAM,gBAAgB;AAAA,EACpB,iBAAiB,EAAE,SAAS,MAAM,WAAW,MAAM;AACrD;AAEA,IAAM,eAA+C;AAAA,EACnD,iBAAiB,CAAC;AACpB;AAiDO,IAAM,4BAAN,MAAM,mCAAkC,eAI7C;AAAA,EAOA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ,CAAC;AAAA,EACX,GAAqC;AACnC,QAAI,CAAC,OAAO,UAAU,iBAAiB,KAAK,oBAAoB,GAAG;AACjE,YAAM,IAAI;AAAA,QACR,4DAA4D,iBAAiB;AAAA,MAC/E;AAAA,IACF;AAEA,UAAM,iBAAiB,CAAC,WAAmB;AACzC,aAAO,UAAU,KAAK,uCAAuC,MAAM;AAAA,IACrE;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV;AAAA,MACA,OAAO;AAAA,QACL,GAAG,2BAA0B,gBAAgB,OAAO,cAAc;AAAA,MACpE;AAAA,IACF,CAAC;AAED,SAAK,wBAAwB;AAC7B,SAAK,oBAAoB;AACzB,SAAK,oDAAoD,oBAAI,IAAI;AAEjE,SAAK,gBAAgB;AAAA;AAAA;AAAA,MAGnB,GAAG,KAAK,IAAI;AAAA,MACZ,KAAK,mBAAmB,KAAK,IAAI;AAAA,IACnC;AAEA,SAAK,gBAAgB;AAAA;AAAA;AAAA,MAGnB,GAAG,KAAK,IAAI;AAAA,MACZ,KAAK,mBAAmB,KAAK,IAAI;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAmB;AACjB,SAAK,kDAAkD,MAAM;AAC7D,SAAK,OAAO,CAAC,gBAAgB;AAC3B,aAAO,EAAE,GAAG,aAAa;AAAA,IAC3B,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,mBAAmB,UAAsC;AACvD,UAAM,EAAE,OAAO,IAAI;AACnB,UAAM,cAA+B;AAAA,MACnC,GAAG;AAAA,MACH,aAAa,SAAS,eAAe;AAAA,MACrC,SAAS,SAAS,WAAW;AAAA,MAC7B,MAAM,SAAS,QAAQ;AAAA,MACvB,aAAa,SAAS,eAAe;AAAA,IACvC;AAEA,QAAI,iBAAgC;AAGpC,QACE,KAAK,kDAAkD,QACvD,KAAK,mBACL;AACA,YAAM,eACJ,KAAK,kDACF,OAAO,EACP,KAAK,EAAE;AAEZ,WAAK,kDAAkD;AAAA,QACrD;AAAA,MACF;AAEA,UAAI,CAAC,KAAK,sBAAsB,YAAY,GAAG;AAC7C,yBAAiB;AAAA,MACnB;AAAA,IACF;AAEA,SAAK,kDAAkD,IAAI,MAAM;AAEjE,SAAK,OAAO,CAAC,eAAe;AAC1B,iBAAW,gBAAgB,MAAM,IAAI;AACrC,UAAI,OAAO,mBAAmB,UAAU;AACtC,eAAO,WAAW,gBAAgB,cAAc;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,QAAoD;AACrE,WAAO,KAAK,MAAM,gBAAgB,MAAM;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,oBAA0B;AACxB,SAAK,OAAO,CAAC,eAAe;AAE1B,aAAO,2BAA0B;AAAA,QAC/B;AAAA,QACA,KAAK;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,OAAe,gBACb,OACA,gBACgC;AAChC,UAAM,EAAE,kBAAkB,CAAC,EAAE,IAAI;AAEjC,WAAO;AAAA,MACL,iBAAiB,OAAO,KAAK,eAAe,EAAE,OAE5C,CAAC,oBAAoB,WAAW;AAChC,YAAI,eAAe,MAAM,GAAG;AAC1B,6BAAmB,MAAM,IAAI,gBAAgB,MAAM;AAAA,QACrD;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,EACF;AACF;","names":["SubjectType"]}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getPermissionsHandler
3
- } from "./chunk-73M67Z5X.mjs";
3
+ } from "./chunk-5RFW5THA.mjs";
4
4
  import {
5
5
  requestPermissionsHandler
6
- } from "./chunk-DUZPZORW.mjs";
6
+ } from "./chunk-OCLNDUYO.mjs";
7
7
  import {
8
8
  revokePermissionsHandler
9
- } from "./chunk-Y6GRGXOL.mjs";
9
+ } from "./chunk-74H4CVH7.mjs";
10
10
  import {
11
11
  __export
12
12
  } from "./chunk-2L4QPE5A.mjs";
@@ -26,4 +26,4 @@ export {
26
26
  handlers,
27
27
  rpc_methods_exports
28
28
  };
29
- //# sourceMappingURL=chunk-TBOKQ5NP.mjs.map
29
+ //# sourceMappingURL=chunk-4FMYQC3Y.mjs.map
@@ -1,8 +1,8 @@
1
1
  // src/utils.ts
2
2
  var MethodNames = /* @__PURE__ */ ((MethodNames2) => {
3
- MethodNames2["requestPermissions"] = "wallet_requestPermissions";
4
- MethodNames2["getPermissions"] = "wallet_getPermissions";
5
- MethodNames2["revokePermissions"] = "wallet_revokePermissions";
3
+ MethodNames2["RequestPermissions"] = "wallet_requestPermissions";
4
+ MethodNames2["GetPermissions"] = "wallet_getPermissions";
5
+ MethodNames2["RevokePermissions"] = "wallet_revokePermissions";
6
6
  return MethodNames2;
7
7
  })(MethodNames || {});
8
8
  function collectUniqueAndPairedCaveats(leftPermission, rightPermission) {
@@ -32,4 +32,4 @@ export {
32
32
  MethodNames,
33
33
  collectUniqueAndPairedCaveats
34
34
  };
35
- //# sourceMappingURL=chunk-3R56AY2L.mjs.map
35
+ //# sourceMappingURL=chunk-4NAVRO44.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type {\n Json,\n JsonRpcParams,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type {\n CaveatConstraint,\n CaveatSpecificationConstraint,\n CaveatSpecificationMap,\n} from './Caveat';\nimport type {\n PermissionConstraint,\n PermissionSpecificationConstraint,\n PermissionSpecificationMap,\n} from './Permission';\n\nexport enum MethodNames {\n RequestPermissions = 'wallet_requestPermissions',\n GetPermissions = 'wallet_getPermissions',\n RevokePermissions = 'wallet_revokePermissions',\n}\n\n/**\n * Utility type for extracting a union of all individual caveat or permission\n * specification types from a {@link CaveatSpecificationMap} or\n * {@link PermissionSpecificationMap}.\n *\n * @template SpecificationsMap - The caveat or permission specifications map\n * whose specification type union to extract.\n */\nexport type ExtractSpecifications<\n SpecificationsMap extends\n | CaveatSpecificationMap<CaveatSpecificationConstraint>\n | PermissionSpecificationMap<PermissionSpecificationConstraint>,\n> = SpecificationsMap[keyof SpecificationsMap];\n\n/**\n * A middleware function for handling a permitted method.\n */\nexport type HandlerMiddlewareFunction<\n Hooks,\n Params extends JsonRpcParams,\n Result extends Json,\n> = (\n req: JsonRpcRequest<Params>,\n res: PendingJsonRpcResponse<Result>,\n next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: Hooks,\n) => void | Promise<void>;\n\n/**\n * We use a mapped object type in order to create a type that requires the\n * presence of the names of all hooks for the given handler.\n * This can then be used to select only the necessary hooks whenever a method\n * is called for purposes of POLA.\n */\nexport type HookNames<HookMap> = {\n [Property in keyof HookMap]: true;\n};\n\n/**\n * A handler for a permitted method.\n */\nexport type PermittedHandlerExport<\n Hooks,\n Params extends JsonRpcParams,\n Result extends Json,\n> = {\n implementation: HandlerMiddlewareFunction<Hooks, Params, Result>;\n hookNames: HookNames<Hooks>;\n methodNames: string[];\n};\n\n/**\n * Given two permission objects, computes 3 sets:\n * - The set of caveat pairs that are common to both permissions.\n * - The set of caveats that are unique to the existing permission.\n * - The set of caveats that are unique to the requested permission.\n *\n * Assumes that the caveat arrays of both permissions are valid.\n *\n * @param leftPermission - The left-hand permission.\n * @param rightPermission - The right-hand permission.\n * @returns The sets of caveat pairs and unique caveats.\n */\nexport function collectUniqueAndPairedCaveats(\n leftPermission: Partial<PermissionConstraint> | undefined,\n rightPermission: Partial<PermissionConstraint>,\n) {\n const leftCaveats = leftPermission?.caveats?.slice() ?? [];\n const rightCaveats = rightPermission.caveats?.slice() ?? [];\n const leftUniqueCaveats: CaveatConstraint[] = [];\n const caveatPairs: [CaveatConstraint, CaveatConstraint][] = [];\n\n leftCaveats.forEach((leftCaveat) => {\n const rightCaveatIndex = rightCaveats.findIndex(\n (rightCaveat) => rightCaveat.type === leftCaveat.type,\n );\n\n if (rightCaveatIndex === -1) {\n leftUniqueCaveats.push(leftCaveat);\n } else {\n caveatPairs.push([leftCaveat, rightCaveats[rightCaveatIndex]]);\n rightCaveats.splice(rightCaveatIndex, 1);\n }\n });\n\n return {\n caveatPairs,\n leftUniqueCaveats,\n rightUniqueCaveats: [...rightCaveats],\n };\n}\n"],"mappings":";AAsBO,IAAK,cAAL,kBAAKA,iBAAL;AACL,EAAAA,aAAA,wBAAqB;AACrB,EAAAA,aAAA,oBAAiB;AACjB,EAAAA,aAAA,uBAAoB;AAHV,SAAAA;AAAA,GAAA;AAsEL,SAAS,8BACd,gBACA,iBACA;AACA,QAAM,cAAc,gBAAgB,SAAS,MAAM,KAAK,CAAC;AACzD,QAAM,eAAe,gBAAgB,SAAS,MAAM,KAAK,CAAC;AAC1D,QAAM,oBAAwC,CAAC;AAC/C,QAAM,cAAsD,CAAC;AAE7D,cAAY,QAAQ,CAAC,eAAe;AAClC,UAAM,mBAAmB,aAAa;AAAA,MACpC,CAAC,gBAAgB,YAAY,SAAS,WAAW;AAAA,IACnD;AAEA,QAAI,qBAAqB,IAAI;AAC3B,wBAAkB,KAAK,UAAU;AAAA,IACnC,OAAO;AACL,kBAAY,KAAK,CAAC,YAAY,aAAa,gBAAgB,CAAC,CAAC;AAC7D,mBAAa,OAAO,kBAAkB,CAAC;AAAA,IACzC;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,oBAAoB,CAAC,GAAG,YAAY;AAAA,EACtC;AACF;","names":["MethodNames"]}
@@ -1,6 +1,6 @@
1
1
  // src/rpc-methods/getPermissions.ts
2
2
  var getPermissionsHandler = {
3
- methodNames: ["wallet_getPermissions" /* getPermissions */],
3
+ methodNames: ["wallet_getPermissions" /* GetPermissions */],
4
4
  implementation: getPermissionsImplementation,
5
5
  hookNames: {
6
6
  getPermissionsForOrigin: true
@@ -14,4 +14,4 @@ async function getPermissionsImplementation(_req, res, _next, end, { getPermissi
14
14
  export {
15
15
  getPermissionsHandler
16
16
  };
17
- //# sourceMappingURL=chunk-73M67Z5X.mjs.map
17
+ //# sourceMappingURL=chunk-5RFW5THA.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/rpc-methods/getPermissions.ts"],"sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { PermissionConstraint } from '../Permission';\nimport type { SubjectPermissions } from '../PermissionController';\nimport type { PermittedHandlerExport } from '../utils';\nimport { MethodNames } from '../utils';\n\nexport const getPermissionsHandler: PermittedHandlerExport<\n GetPermissionsHooks,\n [],\n PermissionConstraint[]\n> = {\n methodNames: [MethodNames.getPermissions],\n implementation: getPermissionsImplementation,\n hookNames: {\n getPermissionsForOrigin: true,\n },\n};\n\nexport type GetPermissionsHooks = {\n // This must be bound to the requesting origin.\n getPermissionsForOrigin: () => SubjectPermissions<PermissionConstraint>;\n};\n\n/**\n * Get Permissions implementation to be used in JsonRpcEngine middleware.\n *\n * @param _req - The JsonRpcEngine request - unused\n * @param res - The JsonRpcEngine result object\n * @param _next - JsonRpcEngine next() callback - unused\n * @param end - JsonRpcEngine end() callback\n * @param options - Method hooks passed to the method implementation\n * @param options.getPermissionsForOrigin - The specific method hook needed for this method implementation\n * @returns A promise that resolves to nothing\n */\nasync function getPermissionsImplementation(\n _req: unknown,\n res: PendingJsonRpcResponse<PermissionConstraint[]>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getPermissionsForOrigin }: GetPermissionsHooks,\n): Promise<void> {\n res.result = Object.values(getPermissionsForOrigin() || {});\n return end();\n}\n"],"mappings":";AAQO,IAAM,wBAIT;AAAA,EACF,aAAa,6CAA2B;AAAA,EACxC,gBAAgB;AAAA,EAChB,WAAW;AAAA,IACT,yBAAyB;AAAA,EAC3B;AACF;AAkBA,eAAe,6BACb,MACA,KACA,OACA,KACA,EAAE,wBAAwB,GACX;AACf,MAAI,SAAS,OAAO,OAAO,wBAAwB,KAAK,CAAC,CAAC;AAC1D,SAAO,IAAI;AACb;","names":[]}
1
+ {"version":3,"sources":["../src/rpc-methods/getPermissions.ts"],"sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { PermissionConstraint } from '../Permission';\nimport type { SubjectPermissions } from '../PermissionController';\nimport type { PermittedHandlerExport } from '../utils';\nimport { MethodNames } from '../utils';\n\nexport const getPermissionsHandler: PermittedHandlerExport<\n GetPermissionsHooks,\n [],\n PermissionConstraint[]\n> = {\n methodNames: [MethodNames.GetPermissions],\n implementation: getPermissionsImplementation,\n hookNames: {\n getPermissionsForOrigin: true,\n },\n};\n\nexport type GetPermissionsHooks = {\n // This must be bound to the requesting origin.\n getPermissionsForOrigin: () => SubjectPermissions<PermissionConstraint>;\n};\n\n/**\n * Get Permissions implementation to be used in JsonRpcEngine middleware.\n *\n * @param _req - The JsonRpcEngine request - unused\n * @param res - The JsonRpcEngine result object\n * @param _next - JsonRpcEngine next() callback - unused\n * @param end - JsonRpcEngine end() callback\n * @param options - Method hooks passed to the method implementation\n * @param options.getPermissionsForOrigin - The specific method hook needed for this method implementation\n * @returns A promise that resolves to nothing\n */\nasync function getPermissionsImplementation(\n _req: unknown,\n res: PendingJsonRpcResponse<PermissionConstraint[]>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getPermissionsForOrigin }: GetPermissionsHooks,\n): Promise<void> {\n res.result = Object.values(getPermissionsForOrigin() || {});\n return end();\n}\n"],"mappings":";AAQO,IAAM,wBAIT;AAAA,EACF,aAAa,6CAA2B;AAAA,EACxC,gBAAgB;AAAA,EAChB,WAAW;AAAA,IACT,yBAAyB;AAAA,EAC3B;AACF;AAkBA,eAAe,6BACb,MACA,KACA,OACA,KACA,EAAE,wBAAwB,GACX;AACf,MAAI,SAAS,OAAO,OAAO,wBAAwB,KAAK,CAAC,CAAC;AAC1D,SAAO,IAAI;AACb;","names":[]}
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkHRDKMOYSjs = require('./chunk-HRDKMOYS.js');
3
+ var _chunkVBIZGGQLjs = require('./chunk-VBIZGGQL.js');
4
4
 
5
5
 
6
- var _chunkXM622CMPjs = require('./chunk-XM622CMP.js');
6
+ var _chunk7A3VYLCKjs = require('./chunk-7A3VYLCK.js');
7
7
 
8
8
 
9
- var _chunkGHOOCGN3js = require('./chunk-GHOOCGN3.js');
9
+ var _chunkX4ZAW4QRjs = require('./chunk-X4ZAW4QR.js');
10
10
 
11
11
 
12
12
  var _chunkZ2XKIXLSjs = require('./chunk-Z2XKIXLS.js');
@@ -17,13 +17,13 @@ _chunkZ2XKIXLSjs.__export.call(void 0, rpc_methods_exports, {
17
17
  handlers: () => handlers
18
18
  });
19
19
  var handlers = [
20
- _chunkXM622CMPjs.requestPermissionsHandler,
21
- _chunkHRDKMOYSjs.getPermissionsHandler,
22
- _chunkGHOOCGN3js.revokePermissionsHandler
20
+ _chunk7A3VYLCKjs.requestPermissionsHandler,
21
+ _chunkVBIZGGQLjs.getPermissionsHandler,
22
+ _chunkX4ZAW4QRjs.revokePermissionsHandler
23
23
  ];
24
24
 
25
25
 
26
26
 
27
27
 
28
28
  exports.handlers = handlers; exports.rpc_methods_exports = rpc_methods_exports;
29
- //# sourceMappingURL=chunk-DV74ZDGD.js.map
29
+ //# sourceMappingURL=chunk-6PXDVUYM.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  invalidParams
3
- } from "./chunk-AZUM6CBY.mjs";
3
+ } from "./chunk-G4BWJ7EA.mjs";
4
4
 
5
5
  // src/rpc-methods/revokePermissions.ts
6
6
  import {
7
7
  isNonEmptyArray
8
8
  } from "@metamask/utils";
9
9
  var revokePermissionsHandler = {
10
- methodNames: ["wallet_revokePermissions" /* revokePermissions */],
10
+ methodNames: ["wallet_revokePermissions" /* RevokePermissions */],
11
11
  implementation: revokePermissionsImplementation,
12
12
  hookNames: {
13
13
  revokePermissionsForOrigin: true
@@ -31,4 +31,4 @@ async function revokePermissionsImplementation(req, res, _next, end, { revokePer
31
31
  export {
32
32
  revokePermissionsHandler
33
33
  };
34
- //# sourceMappingURL=chunk-Y6GRGXOL.mjs.map
34
+ //# sourceMappingURL=chunk-74H4CVH7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/rpc-methods/revokePermissions.ts"],"sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport {\n isNonEmptyArray,\n type Json,\n type JsonRpcRequest,\n type NonEmptyArray,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport { invalidParams } from '../errors';\nimport type { PermissionConstraint } from '../Permission';\nimport type { PermittedHandlerExport } from '../utils';\nimport { MethodNames } from '../utils';\n\nexport const revokePermissionsHandler: PermittedHandlerExport<\n RevokePermissionsHooks,\n RevokePermissionArgs,\n null\n> = {\n methodNames: [MethodNames.revokePermissions],\n implementation: revokePermissionsImplementation,\n hookNames: {\n revokePermissionsForOrigin: true,\n },\n};\n\nexport type RevokePermissionArgs = Record<\n PermissionConstraint['parentCapability'],\n Json\n>;\n\ntype RevokePermissions = (\n permissions: NonEmptyArray<PermissionConstraint['parentCapability']>,\n) => void;\n\nexport type RevokePermissionsHooks = {\n revokePermissionsForOrigin: RevokePermissions;\n};\n\n/**\n * Revoke Permissions implementation to be used in JsonRpcEngine middleware.\n *\n * @param req - The JsonRpcEngine request\n * @param res - The JsonRpcEngine result object\n * @param _next - JsonRpcEngine next() callback - unused\n * @param end - JsonRpcEngine end() callback\n * @param options - Method hooks passed to the method implementation\n * @param options.revokePermissionsForOrigin - A hook that revokes given permission keys for an origin\n * @returns A promise that resolves to nothing\n */\nasync function revokePermissionsImplementation(\n req: JsonRpcRequest<RevokePermissionArgs>,\n res: PendingJsonRpcResponse<null>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { revokePermissionsForOrigin }: RevokePermissionsHooks,\n): Promise<void> {\n const { params } = req;\n\n const param = params?.[0];\n\n if (!param) {\n return end(invalidParams({ data: { request: req } }));\n }\n\n // For now, this API revokes the entire permission key\n // even if caveats are specified.\n const permissionKeys = Object.keys(param);\n\n if (!isNonEmptyArray(permissionKeys)) {\n return end(invalidParams({ data: { request: req } }));\n }\n\n revokePermissionsForOrigin(permissionKeys);\n\n res.result = null;\n\n return end();\n}\n"],"mappings":";;;;;AACA;AAAA,EACE;AAAA,OAKK;AAOA,IAAM,2BAIT;AAAA,EACF,aAAa,mDAA8B;AAAA,EAC3C,gBAAgB;AAAA,EAChB,WAAW;AAAA,IACT,4BAA4B;AAAA,EAC9B;AACF;AA0BA,eAAe,gCACb,KACA,KACA,OACA,KACA,EAAE,2BAA2B,GACd;AACf,QAAM,EAAE,OAAO,IAAI;AAEnB,QAAM,QAAQ,SAAS,CAAC;AAExB,MAAI,CAAC,OAAO;AACV,WAAO,IAAI,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAAA,EACtD;AAIA,QAAM,iBAAiB,OAAO,KAAK,KAAK;AAExC,MAAI,CAAC,gBAAgB,cAAc,GAAG;AACpC,WAAO,IAAI,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAAA,EACtD;AAEA,6BAA2B,cAAc;AAEzC,MAAI,SAAS;AAEb,SAAO,IAAI;AACb;","names":[]}
1
+ {"version":3,"sources":["../src/rpc-methods/revokePermissions.ts"],"sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport {\n isNonEmptyArray,\n type Json,\n type JsonRpcRequest,\n type NonEmptyArray,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport { invalidParams } from '../errors';\nimport type { PermissionConstraint } from '../Permission';\nimport type { PermittedHandlerExport } from '../utils';\nimport { MethodNames } from '../utils';\n\nexport const revokePermissionsHandler: PermittedHandlerExport<\n RevokePermissionsHooks,\n RevokePermissionArgs,\n null\n> = {\n methodNames: [MethodNames.RevokePermissions],\n implementation: revokePermissionsImplementation,\n hookNames: {\n revokePermissionsForOrigin: true,\n },\n};\n\nexport type RevokePermissionArgs = Record<\n PermissionConstraint['parentCapability'],\n Json\n>;\n\ntype RevokePermissions = (\n permissions: NonEmptyArray<PermissionConstraint['parentCapability']>,\n) => void;\n\nexport type RevokePermissionsHooks = {\n revokePermissionsForOrigin: RevokePermissions;\n};\n\n/**\n * Revoke Permissions implementation to be used in JsonRpcEngine middleware.\n *\n * @param req - The JsonRpcEngine request\n * @param res - The JsonRpcEngine result object\n * @param _next - JsonRpcEngine next() callback - unused\n * @param end - JsonRpcEngine end() callback\n * @param options - Method hooks passed to the method implementation\n * @param options.revokePermissionsForOrigin - A hook that revokes given permission keys for an origin\n * @returns A promise that resolves to nothing\n */\nasync function revokePermissionsImplementation(\n req: JsonRpcRequest<RevokePermissionArgs>,\n res: PendingJsonRpcResponse<null>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { revokePermissionsForOrigin }: RevokePermissionsHooks,\n): Promise<void> {\n const { params } = req;\n\n const param = params?.[0];\n\n if (!param) {\n return end(invalidParams({ data: { request: req } }));\n }\n\n // For now, this API revokes the entire permission key\n // even if caveats are specified.\n const permissionKeys = Object.keys(param);\n\n if (!isNonEmptyArray(permissionKeys)) {\n return end(invalidParams({ data: { request: req } }));\n }\n\n revokePermissionsForOrigin(permissionKeys);\n\n res.result = null;\n\n return end();\n}\n"],"mappings":";;;;;AACA;AAAA,EACE;AAAA,OAKK;AAOA,IAAM,2BAIT;AAAA,EACF,aAAa,mDAA8B;AAAA,EAC3C,gBAAgB;AAAA,EAChB,WAAW;AAAA,IACT,4BAA4B;AAAA,EAC9B;AACF;AA0BA,eAAe,gCACb,KACA,KACA,OACA,KACA,EAAE,2BAA2B,GACd;AACf,QAAM,EAAE,OAAO,IAAI;AAEnB,QAAM,QAAQ,SAAS,CAAC;AAExB,MAAI,CAAC,OAAO;AACV,WAAO,IAAI,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAAA,EACtD;AAIA,QAAM,iBAAiB,OAAO,KAAK,KAAK;AAExC,MAAI,CAAC,gBAAgB,cAAc,GAAG;AACpC,WAAO,IAAI,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAAA,EACtD;AAEA,6BAA2B,cAAc;AAEzC,MAAI,SAAS;AAEb,SAAO,IAAI;AACb;","names":[]}
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunk3X6WO7UGjs = require('./chunk-3X6WO7UG.js');
3
+ var _chunkFYADAA2Gjs = require('./chunk-FYADAA2G.js');
4
4
 
5
5
  // src/rpc-methods/requestPermissions.ts
6
6
  var _controllerutils = require('@metamask/controller-utils');
7
7
  var requestPermissionsHandler = {
8
- methodNames: ["wallet_requestPermissions" /* requestPermissions */],
8
+ methodNames: ["wallet_requestPermissions" /* RequestPermissions */],
9
9
  implementation: requestPermissionsImplementation,
10
10
  hookNames: {
11
11
  requestPermissionsForOrigin: true
@@ -14,7 +14,7 @@ var requestPermissionsHandler = {
14
14
  async function requestPermissionsImplementation(req, res, _next, end, { requestPermissionsForOrigin }) {
15
15
  const { params } = req;
16
16
  if (!Array.isArray(params) || !_controllerutils.isPlainObject.call(void 0, params[0])) {
17
- return end(_chunk3X6WO7UGjs.invalidParams.call(void 0, { data: { request: req } }));
17
+ return end(_chunkFYADAA2Gjs.invalidParams.call(void 0, { data: { request: req } }));
18
18
  }
19
19
  const [requestedPermissions] = params;
20
20
  const [grantedPermissions] = await requestPermissionsForOrigin(
@@ -27,4 +27,4 @@ async function requestPermissionsImplementation(req, res, _next, end, { requestP
27
27
 
28
28
 
29
29
  exports.requestPermissionsHandler = requestPermissionsHandler;
30
- //# sourceMappingURL=chunk-XM622CMP.js.map
30
+ //# sourceMappingURL=chunk-7A3VYLCK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/rpc-methods/requestPermissions.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,qBAAqB;AASvB,IAAM,4BAIT;AAAA,EACF,aAAa,qDAA+B;AAAA,EAC5C,gBAAgB;AAAA,EAChB,WAAW;AAAA,IACT,6BAA6B;AAAA,EAC/B;AACF;AAuBA,eAAe,iCACb,KACA,KACA,OACA,KACA,EAAE,4BAA4B,GACf;AACf,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,CAAC,cAAc,OAAO,CAAC,CAAC,GAAG;AACvD,WAAO,IAAI,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAAA,EACtD;AAEA,QAAM,CAAC,oBAAoB,IAAI;AAC/B,QAAM,CAAC,kBAAkB,IAAI,MAAM;AAAA,IACjC;AAAA,EACF;AAGA,MAAI,SAAS,OAAO,OAAO,kBAAkB;AAC7C,SAAO,IAAI;AACb","sourcesContent":["import { isPlainObject } from '@metamask/controller-utils';\nimport type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { invalidParams } from '../errors';\nimport type { PermissionConstraint, RequestedPermissions } from '../Permission';\nimport type { PermittedHandlerExport } from '../utils';\nimport { MethodNames } from '../utils';\n\nexport const requestPermissionsHandler: PermittedHandlerExport<\n RequestPermissionsHooks,\n [RequestedPermissions],\n PermissionConstraint[]\n> = {\n methodNames: [MethodNames.requestPermissions],\n implementation: requestPermissionsImplementation,\n hookNames: {\n requestPermissionsForOrigin: true,\n },\n};\n\ntype RequestPermissions = (\n requestedPermissions: RequestedPermissions,\n) => Promise<\n [Record<string, PermissionConstraint>, { id: string; origin: string }]\n>;\n\nexport type RequestPermissionsHooks = {\n requestPermissionsForOrigin: RequestPermissions;\n};\n\n/**\n * Request Permissions implementation to be used in JsonRpcEngine middleware.\n *\n * @param req - The JsonRpcEngine request\n * @param res - The JsonRpcEngine result object\n * @param _next - JsonRpcEngine next() callback - unused\n * @param end - JsonRpcEngine end() callback\n * @param options - Method hooks passed to the method implementation\n * @param options.requestPermissionsForOrigin - The specific method hook needed for this method implementation\n * @returns A promise that resolves to nothing\n */\nasync function requestPermissionsImplementation(\n req: JsonRpcRequest<[RequestedPermissions]>,\n res: PendingJsonRpcResponse<PermissionConstraint[]>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { requestPermissionsForOrigin }: RequestPermissionsHooks,\n): Promise<void> {\n const { params } = req;\n\n if (!Array.isArray(params) || !isPlainObject(params[0])) {\n return end(invalidParams({ data: { request: req } }));\n }\n\n const [requestedPermissions] = params;\n const [grantedPermissions] = await requestPermissionsForOrigin(\n requestedPermissions,\n );\n\n // `wallet_requestPermission` is specified to return an array.\n res.result = Object.values(grantedPermissions);\n return end();\n}\n"]}
1
+ {"version":3,"sources":["../src/rpc-methods/requestPermissions.ts"],"names":[],"mappings":";;;;;AAAA,SAAS,qBAAqB;AASvB,IAAM,4BAIT;AAAA,EACF,aAAa,qDAA+B;AAAA,EAC5C,gBAAgB;AAAA,EAChB,WAAW;AAAA,IACT,6BAA6B;AAAA,EAC/B;AACF;AAuBA,eAAe,iCACb,KACA,KACA,OACA,KACA,EAAE,4BAA4B,GACf;AACf,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,CAAC,cAAc,OAAO,CAAC,CAAC,GAAG;AACvD,WAAO,IAAI,cAAc,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAAA,EACtD;AAEA,QAAM,CAAC,oBAAoB,IAAI;AAC/B,QAAM,CAAC,kBAAkB,IAAI,MAAM;AAAA,IACjC;AAAA,EACF;AAGA,MAAI,SAAS,OAAO,OAAO,kBAAkB;AAC7C,SAAO,IAAI;AACb","sourcesContent":["import { isPlainObject } from '@metamask/controller-utils';\nimport type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { invalidParams } from '../errors';\nimport type { PermissionConstraint, RequestedPermissions } from '../Permission';\nimport type { PermittedHandlerExport } from '../utils';\nimport { MethodNames } from '../utils';\n\nexport const requestPermissionsHandler: PermittedHandlerExport<\n RequestPermissionsHooks,\n [RequestedPermissions],\n PermissionConstraint[]\n> = {\n methodNames: [MethodNames.RequestPermissions],\n implementation: requestPermissionsImplementation,\n hookNames: {\n requestPermissionsForOrigin: true,\n },\n};\n\ntype RequestPermissions = (\n requestedPermissions: RequestedPermissions,\n) => Promise<\n [Record<string, PermissionConstraint>, { id: string; origin: string }]\n>;\n\nexport type RequestPermissionsHooks = {\n requestPermissionsForOrigin: RequestPermissions;\n};\n\n/**\n * Request Permissions implementation to be used in JsonRpcEngine middleware.\n *\n * @param req - The JsonRpcEngine request\n * @param res - The JsonRpcEngine result object\n * @param _next - JsonRpcEngine next() callback - unused\n * @param end - JsonRpcEngine end() callback\n * @param options - Method hooks passed to the method implementation\n * @param options.requestPermissionsForOrigin - The specific method hook needed for this method implementation\n * @returns A promise that resolves to nothing\n */\nasync function requestPermissionsImplementation(\n req: JsonRpcRequest<[RequestedPermissions]>,\n res: PendingJsonRpcResponse<PermissionConstraint[]>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { requestPermissionsForOrigin }: RequestPermissionsHooks,\n): Promise<void> {\n const { params } = req;\n\n if (!Array.isArray(params) || !isPlainObject(params[0])) {\n return end(invalidParams({ data: { request: req } }));\n }\n\n const [requestedPermissions] = params;\n const [grantedPermissions] = await requestPermissionsForOrigin(\n requestedPermissions,\n );\n\n // `wallet_requestPermission` is specified to return an array.\n res.result = Object.values(grantedPermissions);\n return end();\n}\n"]}