@metamask/permission-controller 8.0.1 → 9.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 (135) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/Caveat.js +11 -56
  3. package/dist/Caveat.js.map +1 -1
  4. package/dist/Caveat.mjs +12 -0
  5. package/dist/Caveat.mjs.map +1 -0
  6. package/dist/Permission.js +13 -65
  7. package/dist/Permission.js.map +1 -1
  8. package/dist/Permission.mjs +14 -0
  9. package/dist/Permission.mjs.map +1 -0
  10. package/dist/PermissionController.js +14 -1294
  11. package/dist/PermissionController.js.map +1 -1
  12. package/dist/PermissionController.mjs +15 -0
  13. package/dist/PermissionController.mjs.map +1 -0
  14. package/dist/SubjectMetadataController.js +9 -143
  15. package/dist/SubjectMetadataController.js.map +1 -1
  16. package/dist/SubjectMetadataController.mjs +10 -0
  17. package/dist/SubjectMetadataController.mjs.map +1 -0
  18. package/dist/chunk-4D2RVWNF.mjs +154 -0
  19. package/dist/chunk-4D2RVWNF.mjs.map +1 -0
  20. package/dist/chunk-5C5SZO74.mjs +29 -0
  21. package/dist/chunk-5C5SZO74.mjs.map +1 -0
  22. package/dist/chunk-5L2IOZE2.js +1393 -0
  23. package/dist/chunk-5L2IOZE2.js.map +1 -0
  24. package/dist/chunk-6CID6TBW.js +31 -0
  25. package/dist/chunk-6CID6TBW.js.map +1 -0
  26. package/dist/chunk-73M67Z5X.mjs +17 -0
  27. package/dist/chunk-73M67Z5X.mjs.map +1 -0
  28. package/dist/chunk-7CTPRFQ3.js +29 -0
  29. package/dist/chunk-7CTPRFQ3.js.map +1 -0
  30. package/dist/chunk-AQ35E2HU.js +46 -0
  31. package/dist/chunk-AQ35E2HU.js.map +1 -0
  32. package/dist/chunk-BEQEQLRE.mjs +34 -0
  33. package/dist/chunk-BEQEQLRE.mjs.map +1 -0
  34. package/dist/chunk-CSAU5B4Q.js +10 -0
  35. package/dist/chunk-CSAU5B4Q.js.map +1 -0
  36. package/dist/chunk-CXKOMB77.mjs +1393 -0
  37. package/dist/chunk-CXKOMB77.mjs.map +1 -0
  38. package/dist/chunk-EGNDXGRG.js +37 -0
  39. package/dist/chunk-EGNDXGRG.js.map +1 -0
  40. package/dist/chunk-FEXS6SJF.mjs +192 -0
  41. package/dist/chunk-FEXS6SJF.mjs.map +1 -0
  42. package/dist/chunk-HRDKMOYS.js +17 -0
  43. package/dist/chunk-HRDKMOYS.js.map +1 -0
  44. package/dist/chunk-K5R57Y57.js +12 -0
  45. package/dist/chunk-K5R57Y57.js.map +1 -0
  46. package/dist/chunk-KVKKNDYV.mjs +12 -0
  47. package/dist/chunk-KVKKNDYV.mjs.map +1 -0
  48. package/dist/chunk-N4KQ2BHF.mjs +46 -0
  49. package/dist/chunk-N4KQ2BHF.mjs.map +1 -0
  50. package/dist/chunk-ODCVB4BB.mjs +31 -0
  51. package/dist/chunk-ODCVB4BB.mjs.map +1 -0
  52. package/dist/chunk-SFKE5HHK.js +154 -0
  53. package/dist/chunk-SFKE5HHK.js.map +1 -0
  54. package/dist/chunk-U5LTEXSU.js +192 -0
  55. package/dist/chunk-U5LTEXSU.js.map +1 -0
  56. package/dist/chunk-XBFHEZRU.mjs +37 -0
  57. package/dist/chunk-XBFHEZRU.mjs.map +1 -0
  58. package/dist/chunk-YRNH4R3G.js +30 -0
  59. package/dist/chunk-YRNH4R3G.js.map +1 -0
  60. package/dist/chunk-YVXIWLBE.mjs +30 -0
  61. package/dist/chunk-YVXIWLBE.mjs.map +1 -0
  62. package/dist/chunk-ZSTKOCBT.mjs +10 -0
  63. package/dist/chunk-ZSTKOCBT.mjs.map +1 -0
  64. package/dist/chunk-ZVO26XPN.js +34 -0
  65. package/dist/chunk-ZVO26XPN.js.map +1 -0
  66. package/dist/errors.js +51 -195
  67. package/dist/errors.js.map +1 -1
  68. package/dist/errors.mjs +52 -0
  69. package/dist/errors.mjs.map +1 -0
  70. package/dist/index.js +91 -36
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +92 -0
  73. package/dist/index.mjs.map +1 -0
  74. package/dist/permission-middleware.js +8 -63
  75. package/dist/permission-middleware.js.map +1 -1
  76. package/dist/permission-middleware.mjs +9 -0
  77. package/dist/permission-middleware.mjs.map +1 -0
  78. package/dist/rpc-methods/getPermissions.js +8 -37
  79. package/dist/rpc-methods/getPermissions.js.map +1 -1
  80. package/dist/rpc-methods/getPermissions.mjs +9 -0
  81. package/dist/rpc-methods/getPermissions.mjs.map +1 -0
  82. package/dist/rpc-methods/index.js +12 -11
  83. package/dist/rpc-methods/index.js.map +1 -1
  84. package/dist/rpc-methods/index.mjs +13 -0
  85. package/dist/rpc-methods/index.mjs.map +1 -0
  86. package/dist/rpc-methods/requestPermissions.js +9 -46
  87. package/dist/rpc-methods/requestPermissions.js.map +1 -1
  88. package/dist/rpc-methods/requestPermissions.mjs +10 -0
  89. package/dist/rpc-methods/requestPermissions.mjs.map +1 -0
  90. package/dist/rpc-methods/revokePermissions.js +9 -51
  91. package/dist/rpc-methods/revokePermissions.js.map +1 -1
  92. package/dist/rpc-methods/revokePermissions.mjs +10 -0
  93. package/dist/rpc-methods/revokePermissions.mjs.map +1 -0
  94. package/dist/tsconfig.build.tsbuildinfo +1 -0
  95. package/dist/types/Caveat.d.ts.map +1 -0
  96. package/dist/types/Permission.d.ts.map +1 -0
  97. package/dist/{PermissionController.d.ts → types/PermissionController.d.ts} +1 -1
  98. package/dist/types/PermissionController.d.ts.map +1 -0
  99. package/dist/types/SubjectMetadataController.d.ts.map +1 -0
  100. package/dist/types/errors.d.ts.map +1 -0
  101. package/dist/types/index.d.ts.map +1 -0
  102. package/dist/types/permission-middleware.d.ts.map +1 -0
  103. package/dist/types/rpc-methods/getPermissions.d.ts.map +1 -0
  104. package/dist/types/rpc-methods/index.d.ts.map +1 -0
  105. package/dist/types/rpc-methods/requestPermissions.d.ts.map +1 -0
  106. package/dist/types/rpc-methods/revokePermissions.d.ts.map +1 -0
  107. package/dist/types/utils.d.ts.map +1 -0
  108. package/dist/utils.js +7 -9
  109. package/dist/utils.js.map +1 -1
  110. package/dist/utils.mjs +8 -0
  111. package/dist/utils.mjs.map +1 -0
  112. package/package.json +16 -6
  113. package/dist/Caveat.d.ts.map +0 -1
  114. package/dist/Permission.d.ts.map +0 -1
  115. package/dist/PermissionController.d.ts.map +0 -1
  116. package/dist/SubjectMetadataController.d.ts.map +0 -1
  117. package/dist/errors.d.ts.map +0 -1
  118. package/dist/index.d.ts.map +0 -1
  119. package/dist/permission-middleware.d.ts.map +0 -1
  120. package/dist/rpc-methods/getPermissions.d.ts.map +0 -1
  121. package/dist/rpc-methods/index.d.ts.map +0 -1
  122. package/dist/rpc-methods/requestPermissions.d.ts.map +0 -1
  123. package/dist/rpc-methods/revokePermissions.d.ts.map +0 -1
  124. package/dist/utils.d.ts.map +0 -1
  125. /package/dist/{Caveat.d.ts → types/Caveat.d.ts} +0 -0
  126. /package/dist/{Permission.d.ts → types/Permission.d.ts} +0 -0
  127. /package/dist/{SubjectMetadataController.d.ts → types/SubjectMetadataController.d.ts} +0 -0
  128. /package/dist/{errors.d.ts → types/errors.d.ts} +0 -0
  129. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  130. /package/dist/{permission-middleware.d.ts → types/permission-middleware.d.ts} +0 -0
  131. /package/dist/{rpc-methods → types/rpc-methods}/getPermissions.d.ts +0 -0
  132. /package/dist/{rpc-methods → types/rpc-methods}/index.d.ts +0 -0
  133. /package/dist/{rpc-methods → types/rpc-methods}/requestPermissions.d.ts +0 -0
  134. /package/dist/{rpc-methods → types/rpc-methods}/revokePermissions.d.ts +0 -0
  135. /package/dist/{utils.d.ts → types/utils.d.ts} +0 -0
package/dist/index.mjs ADDED
@@ -0,0 +1,92 @@
1
+ import {
2
+ rpc_methods_exports
3
+ } from "./chunk-5C5SZO74.mjs";
4
+ import "./chunk-73M67Z5X.mjs";
5
+ import "./chunk-YVXIWLBE.mjs";
6
+ import "./chunk-BEQEQLRE.mjs";
7
+ import {
8
+ CaveatMutatorOperation,
9
+ PermissionController
10
+ } from "./chunk-CXKOMB77.mjs";
11
+ import {
12
+ decorateWithCaveats,
13
+ isRestrictedMethodCaveatSpecification
14
+ } from "./chunk-XBFHEZRU.mjs";
15
+ import {
16
+ PermissionType,
17
+ constructPermission,
18
+ findCaveat,
19
+ hasSpecificationType
20
+ } from "./chunk-ODCVB4BB.mjs";
21
+ import {
22
+ SubjectMetadataController,
23
+ SubjectType
24
+ } from "./chunk-4D2RVWNF.mjs";
25
+ import "./chunk-N4KQ2BHF.mjs";
26
+ import {
27
+ CaveatAlreadyExistsError,
28
+ CaveatDoesNotExistError,
29
+ CaveatInvalidJsonError,
30
+ CaveatMissingValueError,
31
+ CaveatSpecificationMismatchError,
32
+ DuplicateCaveatError,
33
+ EndowmentPermissionDoesNotExistError,
34
+ ForbiddenCaveatError,
35
+ InvalidApprovedPermissionError,
36
+ InvalidCaveatError,
37
+ InvalidCaveatFieldsError,
38
+ InvalidCaveatTypeError,
39
+ InvalidCaveatsPropertyError,
40
+ InvalidSubjectIdentifierError,
41
+ PermissionDoesNotExistError,
42
+ PermissionsRequestNotFoundError,
43
+ UnrecognizedCaveatTypeError,
44
+ UnrecognizedSubjectError,
45
+ internalError,
46
+ invalidParams,
47
+ methodNotFound,
48
+ unauthorized,
49
+ userRejectedRequest
50
+ } from "./chunk-FEXS6SJF.mjs";
51
+ import {
52
+ MethodNames
53
+ } from "./chunk-KVKKNDYV.mjs";
54
+ import "./chunk-ZSTKOCBT.mjs";
55
+ export {
56
+ CaveatAlreadyExistsError,
57
+ CaveatDoesNotExistError,
58
+ CaveatInvalidJsonError,
59
+ CaveatMissingValueError,
60
+ CaveatMutatorOperation,
61
+ CaveatSpecificationMismatchError,
62
+ DuplicateCaveatError,
63
+ EndowmentPermissionDoesNotExistError,
64
+ ForbiddenCaveatError,
65
+ InvalidApprovedPermissionError,
66
+ InvalidCaveatError,
67
+ InvalidCaveatFieldsError,
68
+ InvalidCaveatTypeError,
69
+ InvalidCaveatsPropertyError,
70
+ InvalidSubjectIdentifierError,
71
+ MethodNames,
72
+ PermissionController,
73
+ PermissionDoesNotExistError,
74
+ PermissionType,
75
+ PermissionsRequestNotFoundError,
76
+ SubjectMetadataController,
77
+ SubjectType,
78
+ UnrecognizedCaveatTypeError,
79
+ UnrecognizedSubjectError,
80
+ constructPermission,
81
+ decorateWithCaveats,
82
+ findCaveat,
83
+ hasSpecificationType,
84
+ internalError,
85
+ invalidParams,
86
+ isRestrictedMethodCaveatSpecification,
87
+ methodNotFound,
88
+ rpc_methods_exports as permissionRpcMethods,
89
+ unauthorized,
90
+ userRejectedRequest
91
+ };
92
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,64 +1,9 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getPermissionMiddlewareFactory = void 0;
13
- const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
14
- const errors_1 = require("./errors");
15
- /**
16
- * Creates a permission middleware function factory. Intended for internal use
17
- * in the {@link PermissionController}. Like any {@link JsonRpcEngine}
18
- * middleware, each middleware will only receive requests from a particular
19
- * subject / origin. However, each middleware also requires access to some
20
- * `PermissionController` internals, which is why this "factory factory" exists.
21
- *
22
- * The middlewares returned by the factory will pass through requests for
23
- * unrestricted methods, and attempt to execute restricted methods. If a method
24
- * is neither restricted nor unrestricted, a "method not found" error will be
25
- * returned.
26
- * If a method is restricted, the middleware will first attempt to retrieve the
27
- * subject's permission for that method. If the permission is found, the method
28
- * will be executed. Otherwise, an "unauthorized" error will be returned.
29
- *
30
- * @param options - Options bag.
31
- * @param options.executeRestrictedMethod - {@link PermissionController._executeRestrictedMethod}.
32
- * @param options.getRestrictedMethod - {@link PermissionController.getRestrictedMethod}.
33
- * @param options.isUnrestrictedMethod - A function that checks whether a
34
- * particular method is unrestricted.
35
- * @returns A permission middleware factory function.
36
- */
37
- function getPermissionMiddlewareFactory({ executeRestrictedMethod, getRestrictedMethod, isUnrestrictedMethod, }) {
38
- return function createPermissionMiddleware(subject) {
39
- const { origin } = subject;
40
- if (typeof origin !== 'string' || !origin) {
41
- throw new Error('The subject "origin" must be a non-empty string.');
42
- }
43
- const permissionsMiddleware = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
44
- const { method, params } = req;
45
- // Skip registered unrestricted methods.
46
- if (isUnrestrictedMethod(method)) {
47
- return next();
48
- }
49
- // This will throw if no restricted method implementation is found.
50
- const methodImplementation = getRestrictedMethod(method, origin);
51
- // This will throw if the permission does not exist.
52
- const result = yield executeRestrictedMethod(methodImplementation, subject, method, params);
53
- if (result === undefined) {
54
- res.error = (0, errors_1.internalError)(`Request for method "${req.method}" returned undefined result.`, { request: req });
55
- return undefined;
56
- }
57
- res.result = result;
58
- return undefined;
59
- });
60
- return (0, json_rpc_engine_1.createAsyncMiddleware)(permissionsMiddleware);
61
- };
62
- }
63
- exports.getPermissionMiddlewareFactory = getPermissionMiddlewareFactory;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkAQ35E2HUjs = require('./chunk-AQ35E2HU.js');
4
+ require('./chunk-U5LTEXSU.js');
5
+ require('./chunk-CSAU5B4Q.js');
6
+
7
+
8
+ exports.getPermissionMiddlewareFactory = _chunkAQ35E2HUjs.getPermissionMiddlewareFactory;
64
9
  //# sourceMappingURL=permission-middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission-middleware.js","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAkE;AAkBlE,qCAAyC;AAUzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,8BAA8B,CAAC,EAC7C,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACe;IACnC,OAAO,SAAS,0BAA0B,CACxC,OAAkC;QAElC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACrE;QAED,MAAM,qBAAqB,GAAG,CAC5B,GAA+C,EAC/C,GAAiC,EACjC,IAAoC,EACrB,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE/B,wCAAwC;YACxC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;gBAChC,OAAO,IAAI,EAAE,CAAC;aACf;YAED,mEAAmE;YACnE,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAEjE,oDAAoD;YACpD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,MAAM,CACP,CAAC;YAEF,IAAI,MAAM,KAAK,SAAS,EAAE;gBACxB,GAAG,CAAC,KAAK,GAAG,IAAA,sBAAa,EACvB,uBAAuB,GAAG,CAAC,MAAM,8BAA8B,EAC/D,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;gBACF,OAAO,SAAS,CAAC;aAClB;YAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC,CAAA,CAAC;QAEF,OAAO,IAAA,uCAAqB,EAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC;AAlDD,wEAkDC","sourcesContent":["import { createAsyncMiddleware } from '@metamask/json-rpc-engine';\nimport type {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n JsonRpcEngine,\n JsonRpcMiddleware,\n AsyncJsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type {\n Json,\n PendingJsonRpcResponse,\n JsonRpcRequest,\n} from '@metamask/utils';\n\nimport type {\n GenericPermissionController,\n PermissionSubjectMetadata,\n RestrictedMethodParameters,\n} from '.';\nimport { internalError } from './errors';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { PermissionController } from './PermissionController';\n\ntype PermissionMiddlewareFactoryOptions = {\n executeRestrictedMethod: GenericPermissionController['_executeRestrictedMethod'];\n getRestrictedMethod: GenericPermissionController['getRestrictedMethod'];\n isUnrestrictedMethod: (method: string) => boolean;\n};\n\n/**\n * Creates a permission middleware function factory. Intended for internal use\n * in the {@link PermissionController}. Like any {@link JsonRpcEngine}\n * middleware, each middleware will only receive requests from a particular\n * subject / origin. However, each middleware also requires access to some\n * `PermissionController` internals, which is why this \"factory factory\" exists.\n *\n * The middlewares returned by the factory will pass through requests for\n * unrestricted methods, and attempt to execute restricted methods. If a method\n * is neither restricted nor unrestricted, a \"method not found\" error will be\n * returned.\n * If a method is restricted, the middleware will first attempt to retrieve the\n * subject's permission for that method. If the permission is found, the method\n * will be executed. Otherwise, an \"unauthorized\" error will be returned.\n *\n * @param options - Options bag.\n * @param options.executeRestrictedMethod - {@link PermissionController._executeRestrictedMethod}.\n * @param options.getRestrictedMethod - {@link PermissionController.getRestrictedMethod}.\n * @param options.isUnrestrictedMethod - A function that checks whether a\n * particular method is unrestricted.\n * @returns A permission middleware factory function.\n */\nexport function getPermissionMiddlewareFactory({\n executeRestrictedMethod,\n getRestrictedMethod,\n isUnrestrictedMethod,\n}: PermissionMiddlewareFactoryOptions) {\n return function createPermissionMiddleware(\n subject: PermissionSubjectMetadata,\n ): JsonRpcMiddleware<RestrictedMethodParameters, Json> {\n const { origin } = subject;\n if (typeof origin !== 'string' || !origin) {\n throw new Error('The subject \"origin\" must be a non-empty string.');\n }\n\n const permissionsMiddleware = async (\n req: JsonRpcRequest<RestrictedMethodParameters>,\n res: PendingJsonRpcResponse<Json>,\n next: AsyncJsonRpcEngineNextCallback,\n ): Promise<void> => {\n const { method, params } = req;\n\n // Skip registered unrestricted methods.\n if (isUnrestrictedMethod(method)) {\n return next();\n }\n\n // This will throw if no restricted method implementation is found.\n const methodImplementation = getRestrictedMethod(method, origin);\n\n // This will throw if the permission does not exist.\n const result = await executeRestrictedMethod(\n methodImplementation,\n subject,\n method,\n params,\n );\n\n if (result === undefined) {\n res.error = internalError(\n `Request for method \"${req.method}\" returned undefined result.`,\n { request: req },\n );\n return undefined;\n }\n\n res.result = result;\n return undefined;\n };\n\n return createAsyncMiddleware(permissionsMiddleware);\n };\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import {
2
+ getPermissionMiddlewareFactory
3
+ } from "./chunk-N4KQ2BHF.mjs";
4
+ import "./chunk-FEXS6SJF.mjs";
5
+ import "./chunk-ZSTKOCBT.mjs";
6
+ export {
7
+ getPermissionMiddlewareFactory
8
+ };
9
+ //# sourceMappingURL=permission-middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,38 +1,9 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getPermissionsHandler = void 0;
13
- const utils_1 = require("../utils");
14
- exports.getPermissionsHandler = {
15
- methodNames: [utils_1.MethodNames.getPermissions],
16
- implementation: getPermissionsImplementation,
17
- hookNames: {
18
- getPermissionsForOrigin: true,
19
- },
20
- };
21
- /**
22
- * Get Permissions implementation to be used in JsonRpcEngine middleware.
23
- *
24
- * @param _req - The JsonRpcEngine request - unused
25
- * @param res - The JsonRpcEngine result object
26
- * @param _next - JsonRpcEngine next() callback - unused
27
- * @param end - JsonRpcEngine end() callback
28
- * @param options - Method hooks passed to the method implementation
29
- * @param options.getPermissionsForOrigin - The specific method hook needed for this method implementation
30
- * @returns A promise that resolves to nothing
31
- */
32
- function getPermissionsImplementation(_req, res, _next, end, { getPermissionsForOrigin }) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- res.result = Object.values(getPermissionsForOrigin() || {});
35
- return end();
36
- });
37
- }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkHRDKMOYSjs = require('../chunk-HRDKMOYS.js');
4
+ require('../chunk-K5R57Y57.js');
5
+ require('../chunk-CSAU5B4Q.js');
6
+
7
+
8
+ exports.getPermissionsHandler = _chunkHRDKMOYSjs.getPermissionsHandler;
38
9
  //# sourceMappingURL=getPermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPermissions.js","sourceRoot":"","sources":["../../src/rpc-methods/getPermissions.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,oCAAuC;AAE1B,QAAA,qBAAqB,GAI9B;IACF,WAAW,EAAE,CAAC,mBAAW,CAAC,cAAc,CAAC;IACzC,cAAc,EAAE,4BAA4B;IAC5C,SAAS,EAAE;QACT,uBAAuB,EAAE,IAAI;KAC9B;CACF,CAAC;AAOF;;;;;;;;;;GAUG;AACH,SAAe,4BAA4B,CACzC,IAAa,EACb,GAAmD,EACnD,KAAc,EACd,GAA6B,EAC7B,EAAE,uBAAuB,EAAuB;;QAEhD,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;CAAA","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"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import {
2
+ getPermissionsHandler
3
+ } from "../chunk-73M67Z5X.mjs";
4
+ import "../chunk-KVKKNDYV.mjs";
5
+ import "../chunk-ZSTKOCBT.mjs";
6
+ export {
7
+ getPermissionsHandler
8
+ };
9
+ //# sourceMappingURL=getPermissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,12 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handlers = void 0;
4
- const getPermissions_1 = require("./getPermissions");
5
- const requestPermissions_1 = require("./requestPermissions");
6
- const revokePermissions_1 = require("./revokePermissions");
7
- exports.handlers = [
8
- requestPermissions_1.requestPermissionsHandler,
9
- getPermissions_1.getPermissionsHandler,
10
- revokePermissions_1.revokePermissionsHandler,
11
- ];
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7CTPRFQ3js = require('../chunk-7CTPRFQ3.js');
4
+ require('../chunk-HRDKMOYS.js');
5
+ require('../chunk-YRNH4R3G.js');
6
+ require('../chunk-ZVO26XPN.js');
7
+ require('../chunk-U5LTEXSU.js');
8
+ require('../chunk-K5R57Y57.js');
9
+ require('../chunk-CSAU5B4Q.js');
10
+
11
+
12
+ exports.handlers = _chunk7CTPRFQ3js.handlers;
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rpc-methods/index.ts"],"names":[],"mappings":";;;AACA,qDAAyD;AAEzD,6DAAiE;AAEjE,2DAA+D;AAMlD,QAAA,QAAQ,GAAG;IACtB,8CAAyB;IACzB,sCAAqB;IACrB,4CAAwB;CAChB,CAAC","sourcesContent":["import type { GetPermissionsHooks } from './getPermissions';\nimport { getPermissionsHandler } from './getPermissions';\nimport type { RequestPermissionsHooks } from './requestPermissions';\nimport { requestPermissionsHandler } from './requestPermissions';\nimport type { RevokePermissionsHooks } from './revokePermissions';\nimport { revokePermissionsHandler } from './revokePermissions';\n\nexport type PermittedRpcMethodHooks = RequestPermissionsHooks &\n GetPermissionsHooks &\n RevokePermissionsHooks;\n\nexport const handlers = [\n requestPermissionsHandler,\n getPermissionsHandler,\n revokePermissionsHandler,\n] as const;\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import {
2
+ handlers
3
+ } from "../chunk-5C5SZO74.mjs";
4
+ import "../chunk-73M67Z5X.mjs";
5
+ import "../chunk-YVXIWLBE.mjs";
6
+ import "../chunk-BEQEQLRE.mjs";
7
+ import "../chunk-FEXS6SJF.mjs";
8
+ import "../chunk-KVKKNDYV.mjs";
9
+ import "../chunk-ZSTKOCBT.mjs";
10
+ export {
11
+ handlers
12
+ };
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,47 +1,10 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.requestPermissionsHandler = void 0;
13
- const controller_utils_1 = require("@metamask/controller-utils");
14
- const errors_1 = require("../errors");
15
- const utils_1 = require("../utils");
16
- exports.requestPermissionsHandler = {
17
- methodNames: [utils_1.MethodNames.requestPermissions],
18
- implementation: requestPermissionsImplementation,
19
- hookNames: {
20
- requestPermissionsForOrigin: true,
21
- },
22
- };
23
- /**
24
- * Request Permissions implementation to be used in JsonRpcEngine middleware.
25
- *
26
- * @param req - The JsonRpcEngine request
27
- * @param res - The JsonRpcEngine result object
28
- * @param _next - JsonRpcEngine next() callback - unused
29
- * @param end - JsonRpcEngine end() callback
30
- * @param options - Method hooks passed to the method implementation
31
- * @param options.requestPermissionsForOrigin - The specific method hook needed for this method implementation
32
- * @returns A promise that resolves to nothing
33
- */
34
- function requestPermissionsImplementation(req, res, _next, end, { requestPermissionsForOrigin }) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const { params } = req;
37
- if (!Array.isArray(params) || !(0, controller_utils_1.isPlainObject)(params[0])) {
38
- return end((0, errors_1.invalidParams)({ data: { request: req } }));
39
- }
40
- const [requestedPermissions] = params;
41
- const [grantedPermissions] = yield requestPermissionsForOrigin(requestedPermissions);
42
- // `wallet_requestPermission` is specified to return an array.
43
- res.result = Object.values(grantedPermissions);
44
- return end();
45
- });
46
- }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkYRNH4R3Gjs = require('../chunk-YRNH4R3G.js');
4
+ require('../chunk-U5LTEXSU.js');
5
+ require('../chunk-K5R57Y57.js');
6
+ require('../chunk-CSAU5B4Q.js');
7
+
8
+
9
+ exports.requestPermissionsHandler = _chunkYRNH4R3Gjs.requestPermissionsHandler;
47
10
  //# sourceMappingURL=requestPermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestPermissions.js","sourceRoot":"","sources":["../../src/rpc-methods/requestPermissions.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA2D;AAI3D,sCAA0C;AAG1C,oCAAuC;AAE1B,QAAA,yBAAyB,GAIlC;IACF,WAAW,EAAE,CAAC,mBAAW,CAAC,kBAAkB,CAAC;IAC7C,cAAc,EAAE,gCAAgC;IAChD,SAAS,EAAE;QACT,2BAA2B,EAAE,IAAI;KAClC;CACF,CAAC;AAYF;;;;;;;;;;GAUG;AACH,SAAe,gCAAgC,CAC7C,GAA2C,EAC3C,GAAmD,EACnD,KAAc,EACd,GAA6B,EAC7B,EAAE,2BAA2B,EAA2B;;QAExD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,gCAAa,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACvD,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;SACvD;QAED,MAAM,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC;QACtC,MAAM,CAAC,kBAAkB,CAAC,GAAG,MAAM,2BAA2B,CAC5D,oBAAoB,CACrB,CAAC;QAEF,8DAA8D;QAC9D,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/C,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;CAAA","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":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import {
2
+ requestPermissionsHandler
3
+ } from "../chunk-YVXIWLBE.mjs";
4
+ import "../chunk-FEXS6SJF.mjs";
5
+ import "../chunk-KVKKNDYV.mjs";
6
+ import "../chunk-ZSTKOCBT.mjs";
7
+ export {
8
+ requestPermissionsHandler
9
+ };
10
+ //# sourceMappingURL=requestPermissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,52 +1,10 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.revokePermissionsHandler = void 0;
13
- const utils_1 = require("@metamask/utils");
14
- const errors_1 = require("../errors");
15
- const utils_2 = require("../utils");
16
- exports.revokePermissionsHandler = {
17
- methodNames: [utils_2.MethodNames.revokePermissions],
18
- implementation: revokePermissionsImplementation,
19
- hookNames: {
20
- revokePermissionsForOrigin: true,
21
- },
22
- };
23
- /**
24
- * Revoke Permissions implementation to be used in JsonRpcEngine middleware.
25
- *
26
- * @param req - The JsonRpcEngine request
27
- * @param res - The JsonRpcEngine result object
28
- * @param _next - JsonRpcEngine next() callback - unused
29
- * @param end - JsonRpcEngine end() callback
30
- * @param options - Method hooks passed to the method implementation
31
- * @param options.revokePermissionsForOrigin - A hook that revokes given permission keys for an origin
32
- * @returns A promise that resolves to nothing
33
- */
34
- function revokePermissionsImplementation(req, res, _next, end, { revokePermissionsForOrigin }) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const { params } = req;
37
- const param = params === null || params === void 0 ? void 0 : params[0];
38
- if (!param) {
39
- return end((0, errors_1.invalidParams)({ data: { request: req } }));
40
- }
41
- // For now, this API revokes the entire permission key
42
- // even if caveats are specified.
43
- const permissionKeys = Object.keys(param);
44
- if (!(0, utils_1.isNonEmptyArray)(permissionKeys)) {
45
- return end((0, errors_1.invalidParams)({ data: { request: req } }));
46
- }
47
- revokePermissionsForOrigin(permissionKeys);
48
- res.result = null;
49
- return end();
50
- });
51
- }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkZVO26XPNjs = require('../chunk-ZVO26XPN.js');
4
+ require('../chunk-U5LTEXSU.js');
5
+ require('../chunk-K5R57Y57.js');
6
+ require('../chunk-CSAU5B4Q.js');
7
+
8
+
9
+ exports.revokePermissionsHandler = _chunkZVO26XPNjs.revokePermissionsHandler;
52
10
  //# sourceMappingURL=revokePermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"revokePermissions.js","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAMyB;AAEzB,sCAA0C;AAG1C,oCAAuC;AAE1B,QAAA,wBAAwB,GAIjC;IACF,WAAW,EAAE,CAAC,mBAAW,CAAC,iBAAiB,CAAC;IAC5C,cAAc,EAAE,+BAA+B;IAC/C,SAAS,EAAE;QACT,0BAA0B,EAAE,IAAI;KACjC;CACF,CAAC;AAeF;;;;;;;;;;GAUG;AACH,SAAe,+BAA+B,CAC5C,GAAyC,EACzC,GAAiC,EACjC,KAAc,EACd,GAA6B,EAC7B,EAAE,0BAA0B,EAA0B;;QAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAEvB,MAAM,KAAK,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAC;QAE1B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;SACvD;QAED,sDAAsD;QACtD,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,IAAA,uBAAe,EAAC,cAAc,CAAC,EAAE;YACpC,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;SACvD;QAED,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAE3C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QAElB,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;CAAA","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\ntype 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"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import {
2
+ revokePermissionsHandler
3
+ } from "../chunk-BEQEQLRE.mjs";
4
+ import "../chunk-FEXS6SJF.mjs";
5
+ import "../chunk-KVKKNDYV.mjs";
6
+ import "../chunk-ZSTKOCBT.mjs";
7
+ export {
8
+ revokePermissionsHandler
9
+ };
10
+ //# sourceMappingURL=revokePermissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}