@metamask/permission-controller 12.1.1 → 12.2.1

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 (46) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/Caveat.cjs.map +1 -1
  3. package/dist/Caveat.mjs.map +1 -1
  4. package/dist/PermissionController.cjs +406 -642
  5. package/dist/PermissionController.cjs.map +1 -1
  6. package/dist/PermissionController.d.cts +10 -270
  7. package/dist/PermissionController.d.cts.map +1 -1
  8. package/dist/PermissionController.d.mts +10 -270
  9. package/dist/PermissionController.d.mts.map +1 -1
  10. package/dist/PermissionController.mjs +406 -642
  11. package/dist/PermissionController.mjs.map +1 -1
  12. package/dist/SubjectMetadataController.cjs +42 -40
  13. package/dist/SubjectMetadataController.cjs.map +1 -1
  14. package/dist/SubjectMetadataController.d.cts +1 -17
  15. package/dist/SubjectMetadataController.d.cts.map +1 -1
  16. package/dist/SubjectMetadataController.d.mts +1 -17
  17. package/dist/SubjectMetadataController.d.mts.map +1 -1
  18. package/dist/SubjectMetadataController.mjs +42 -40
  19. package/dist/SubjectMetadataController.mjs.map +1 -1
  20. package/dist/errors.cjs +8 -7
  21. package/dist/errors.cjs.map +1 -1
  22. package/dist/errors.d.cts +4 -9
  23. package/dist/errors.d.cts.map +1 -1
  24. package/dist/errors.d.mts +4 -9
  25. package/dist/errors.d.mts.map +1 -1
  26. package/dist/errors.mjs +1 -0
  27. package/dist/errors.mjs.map +1 -1
  28. package/dist/permission-middleware.cjs +1 -1
  29. package/dist/permission-middleware.cjs.map +1 -1
  30. package/dist/permission-middleware.d.cts +4 -3
  31. package/dist/permission-middleware.d.cts.map +1 -1
  32. package/dist/permission-middleware.d.mts +4 -3
  33. package/dist/permission-middleware.d.mts.map +1 -1
  34. package/dist/permission-middleware.mjs +1 -1
  35. package/dist/permission-middleware.mjs.map +1 -1
  36. package/dist/rpc-methods/revokePermissions.cjs.map +1 -1
  37. package/dist/rpc-methods/revokePermissions.d.cts +1 -1
  38. package/dist/rpc-methods/revokePermissions.d.cts.map +1 -1
  39. package/dist/rpc-methods/revokePermissions.d.mts +1 -1
  40. package/dist/rpc-methods/revokePermissions.d.mts.map +1 -1
  41. package/dist/rpc-methods/revokePermissions.mjs.map +1 -1
  42. package/dist/utils.cjs.map +1 -1
  43. package/dist/utils.d.cts.map +1 -1
  44. package/dist/utils.d.mts.map +1 -1
  45. package/dist/utils.mjs.map +1 -1
  46. package/package.json +9 -13
package/dist/errors.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DataWithOptionalCause } from "@metamask/rpc-errors";
1
+ import { DataWithOptionalCause, EthereumProviderError, OptionalDataWithOptionalCause } from "@metamask/rpc-errors";
2
2
  import { JsonRpcError } from "@metamask/rpc-errors";
3
3
  import type { CaveatConstraint } from "./Caveat.cjs";
4
4
  import type { PermissionType } from "./Permission.cjs";
@@ -13,7 +13,7 @@ type UnauthorizedArg = {
13
13
  * @param opts - Optional arguments that add extra context
14
14
  * @returns The built error
15
15
  */
16
- export declare function unauthorized(opts: UnauthorizedArg): import("@metamask/rpc-errors").EthereumProviderError<Record<string, unknown>>;
16
+ export declare function unauthorized(opts: UnauthorizedArg): EthereumProviderError<UnauthorizedArg>;
17
17
  /**
18
18
  * Utility function for building a "method not found" error.
19
19
  *
@@ -21,7 +21,7 @@ export declare function unauthorized(opts: UnauthorizedArg): import("@metamask/r
21
21
  * @param data - Optional data for context.
22
22
  * @returns The built error
23
23
  */
24
- export declare function methodNotFound(method: string, data?: DataWithOptionalCause): JsonRpcError<import("@metamask/rpc-errors").OptionalDataWithOptionalCause>;
24
+ export declare function methodNotFound(method: string, data?: DataWithOptionalCause): JsonRpcError<OptionalDataWithOptionalCause>;
25
25
  type InvalidParamsArg = {
26
26
  message?: string;
27
27
  data?: DataWithOptionalCause;
@@ -32,12 +32,7 @@ type InvalidParamsArg = {
32
32
  * @param opts - Optional arguments that add extra context
33
33
  * @returns The built error
34
34
  */
35
- export declare function invalidParams(opts: InvalidParamsArg): JsonRpcError<string | number | boolean | import("@metamask/utils").Json[] | {
36
- [prop: string]: import("@metamask/utils").Json;
37
- } | {
38
- [key: string]: unknown;
39
- cause?: unknown;
40
- } | null>;
35
+ export declare function invalidParams(opts: InvalidParamsArg): JsonRpcError<DataWithOptionalCause>;
41
36
  /**
42
37
  * Utility function for building an "user rejected request" error.
43
38
  *
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.cts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.cts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DataWithOptionalCause } from "@metamask/rpc-errors";
1
+ import { DataWithOptionalCause, EthereumProviderError, OptionalDataWithOptionalCause } from "@metamask/rpc-errors";
2
2
  import { JsonRpcError } from "@metamask/rpc-errors";
3
3
  import type { CaveatConstraint } from "./Caveat.mjs";
4
4
  import type { PermissionType } from "./Permission.mjs";
@@ -13,7 +13,7 @@ type UnauthorizedArg = {
13
13
  * @param opts - Optional arguments that add extra context
14
14
  * @returns The built error
15
15
  */
16
- export declare function unauthorized(opts: UnauthorizedArg): import("@metamask/rpc-errors").EthereumProviderError<Record<string, unknown>>;
16
+ export declare function unauthorized(opts: UnauthorizedArg): EthereumProviderError<UnauthorizedArg>;
17
17
  /**
18
18
  * Utility function for building a "method not found" error.
19
19
  *
@@ -21,7 +21,7 @@ export declare function unauthorized(opts: UnauthorizedArg): import("@metamask/r
21
21
  * @param data - Optional data for context.
22
22
  * @returns The built error
23
23
  */
24
- export declare function methodNotFound(method: string, data?: DataWithOptionalCause): JsonRpcError<import("@metamask/rpc-errors").OptionalDataWithOptionalCause>;
24
+ export declare function methodNotFound(method: string, data?: DataWithOptionalCause): JsonRpcError<OptionalDataWithOptionalCause>;
25
25
  type InvalidParamsArg = {
26
26
  message?: string;
27
27
  data?: DataWithOptionalCause;
@@ -32,12 +32,7 @@ type InvalidParamsArg = {
32
32
  * @param opts - Optional arguments that add extra context
33
33
  * @returns The built error
34
34
  */
35
- export declare function invalidParams(opts: InvalidParamsArg): JsonRpcError<string | number | boolean | import("@metamask/utils").Json[] | {
36
- [prop: string]: import("@metamask/utils").Json;
37
- } | {
38
- [key: string]: unknown;
39
- cause?: unknown;
40
- } | null>;
35
+ export declare function invalidParams(opts: InvalidParamsArg): JsonRpcError<DataWithOptionalCause>;
41
36
  /**
42
37
  * Utility function for building an "user rejected request" error.
43
38
  *
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.mts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/errors.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { EthereumProviderError } from "@metamask/rpc-errors";
1
2
  import { errorCodes, providerErrors, rpcErrors, JsonRpcError } from "@metamask/rpc-errors";
2
3
  /**
3
4
  * Utility function for building an "unauthorized" error.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataWithOptionalCause } from '@metamask/rpc-errors';\nimport {\n errorCodes,\n providerErrors,\n rpcErrors,\n JsonRpcError,\n} from '@metamask/rpc-errors';\n\nimport type { CaveatConstraint } from './Caveat';\nimport type { PermissionType } from './Permission';\nimport type { PermissionDiffMap } from './PermissionController';\n\ntype UnauthorizedArg = {\n data?: Record<string, unknown>;\n message?: string;\n};\n\n/**\n * Utility function for building an \"unauthorized\" error.\n *\n * @param opts - Optional arguments that add extra context\n * @returns The built error\n */\nexport function unauthorized(opts: UnauthorizedArg) {\n return providerErrors.unauthorized({\n message:\n 'Unauthorized to perform action. Try requesting the required permission(s) first. For more information, see: https://docs.metamask.io/guide/rpc-api.html#permissions',\n data: opts.data,\n });\n}\n\n/**\n * Utility function for building a \"method not found\" error.\n *\n * @param method - The method in question.\n * @param data - Optional data for context.\n * @returns The built error\n */\nexport function methodNotFound(method: string, data?: DataWithOptionalCause) {\n const message = `The method \"${method}\" does not exist / is not available.`;\n\n const opts: Parameters<typeof rpcErrors.methodNotFound>[0] = { message };\n if (data !== undefined) {\n opts.data = data;\n }\n return rpcErrors.methodNotFound(opts);\n}\n\ntype InvalidParamsArg = {\n message?: string;\n data?: DataWithOptionalCause;\n};\n\n/**\n * Utility function for building an \"invalid params\" error.\n *\n * @param opts - Optional arguments that add extra context\n * @returns The built error\n */\nexport function invalidParams(opts: InvalidParamsArg) {\n return rpcErrors.invalidParams({\n data: opts.data,\n message: opts.message,\n });\n}\n\n/**\n * Utility function for building an \"user rejected request\" error.\n *\n * @param data - Optional data to add extra context\n * @returns The built error\n */\nexport function userRejectedRequest<Data extends Record<string, unknown>>(\n data?: Data,\n): JsonRpcError<Data> {\n return providerErrors.userRejectedRequest({ data });\n}\n\n/**\n * Utility function for building an internal error.\n *\n * @param message - The error message\n * @param data - Optional data to add extra context\n * @returns The built error\n */\nexport function internalError<Data extends Record<string, unknown>>(\n message: string,\n data?: Data,\n): JsonRpcError<Data> {\n return rpcErrors.internal({ message, data });\n}\n\nclass CustomError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\nexport class InvalidSubjectIdentifierError extends CustomError {\n constructor(origin: unknown) {\n super(\n `Invalid subject identifier: \"${\n typeof origin === 'string' ? origin : typeof origin\n }\"`,\n );\n this.name = this.constructor.name;\n }\n}\n\nexport class UnrecognizedSubjectError extends CustomError {\n constructor(origin: string) {\n super(`Unrecognized subject: \"${origin}\" has no permissions.`);\n this.name = this.constructor.name;\n }\n}\n\nexport class CaveatMergerDoesNotExistError extends CustomError {\n constructor(caveatType: string) {\n super(`Caveat value merger does not exist for type: \"${caveatType}\"`);\n }\n}\n\nexport class InvalidMergedPermissionsError extends Error {\n public cause: Error;\n\n public data: {\n diff: PermissionDiffMap<string, CaveatConstraint>;\n };\n\n constructor(\n origin: string,\n cause: Error,\n diff: PermissionDiffMap<string, CaveatConstraint>,\n ) {\n super(\n `Invalid merged permissions for subject \"${origin}\":\\n${cause.message}`,\n );\n this.cause = cause;\n this.data = { diff };\n }\n}\n\nexport class InvalidApprovedPermissionError extends CustomError {\n public data: {\n origin: string;\n target: string;\n approvedPermission: Record<string, unknown>;\n };\n\n constructor(\n origin: string,\n target: string,\n approvedPermission: Record<string, unknown>,\n ) {\n super(\n `Invalid approved permission for origin \"${origin}\" and target \"${target}\".`,\n );\n this.data = { origin, target, approvedPermission };\n }\n}\nexport class PermissionDoesNotExistError extends CustomError {\n constructor(origin: string, target: string) {\n super(`Subject \"${origin}\" has no permission for \"${target}\".`);\n }\n}\n\nexport class EndowmentPermissionDoesNotExistError extends CustomError {\n public data?: { origin: string };\n\n constructor(target: string, origin?: string) {\n super(\n `${\n origin ? `Subject \"${origin}\"` : 'Unknown subject'\n } has no permission for \"${target}\".`,\n );\n if (origin) {\n this.data = { origin };\n }\n }\n}\n\nexport class UnrecognizedCaveatTypeError extends CustomError {\n public data: {\n caveatType: string;\n origin?: string;\n target?: string;\n };\n\n constructor(caveatType: string);\n\n constructor(caveatType: string, origin: string, target: string);\n\n constructor(caveatType: string, origin?: string, target?: string) {\n super(`Unrecognized caveat type: \"${caveatType}\"`);\n this.data = { caveatType };\n if (origin !== undefined) {\n this.data.origin = origin;\n }\n\n if (target !== undefined) {\n this.data.target = target;\n }\n }\n}\n\nexport class InvalidCaveatsPropertyError extends CustomError {\n public data: { origin: string; target: string; caveatsProperty: unknown };\n\n constructor(origin: string, target: string, caveatsProperty: unknown) {\n super(\n `The \"caveats\" property of permission for \"${target}\" of subject \"${origin}\" is invalid. It must be a non-empty array if specified.`,\n );\n this.data = { origin, target, caveatsProperty };\n }\n}\n\nexport class CaveatDoesNotExistError extends CustomError {\n constructor(origin: string, target: string, caveatType: string) {\n super(\n `Permission for \"${target}\" of subject \"${origin}\" has no caveat of type \"${caveatType}\".`,\n );\n }\n}\n\nexport class CaveatAlreadyExistsError extends CustomError {\n constructor(origin: string, target: string, caveatType: string) {\n super(\n `Permission for \"${target}\" of subject \"${origin}\" already has a caveat of type \"${caveatType}\".`,\n );\n }\n}\n\nexport class InvalidCaveatError extends JsonRpcError<\n DataWithOptionalCause | undefined\n> {\n public override data: { origin: string; target: string };\n\n constructor(receivedCaveat: unknown, origin: string, target: string) {\n super(\n errorCodes.rpc.invalidParams,\n `Invalid caveat. Caveats must be plain objects.`,\n { receivedCaveat },\n );\n this.data = { origin, target };\n }\n}\n\nexport class InvalidCaveatTypeError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(`Caveat types must be strings. Received: \"${typeof caveat.type}\"`);\n this.data = { caveat, origin, target };\n }\n}\n\nexport class CaveatMissingValueError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(`Caveat is missing \"value\" field.`);\n this.data = { caveat, origin, target };\n }\n}\n\nexport class CaveatInvalidJsonError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(`Caveat \"value\" is invalid JSON.`);\n this.data = { caveat, origin, target };\n }\n}\n\nexport class InvalidCaveatFieldsError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(\n `Caveat has unexpected number of fields: \"${Object.keys(caveat).length}\"`,\n );\n this.data = { caveat, origin, target };\n }\n}\n\nexport class ForbiddenCaveatError extends CustomError {\n public data: {\n caveatType: string;\n origin: string;\n target: string;\n };\n\n constructor(caveatType: string, origin: string, targetName: string) {\n super(\n `Permissions for target \"${targetName}\" may not have caveats of type \"${caveatType}\".`,\n );\n this.data = { caveatType, origin, target: targetName };\n }\n}\n\nexport class DuplicateCaveatError extends CustomError {\n public data: {\n caveatType: string;\n origin: string;\n target: string;\n };\n\n constructor(caveatType: string, origin: string, targetName: string) {\n super(\n `Permissions for target \"${targetName}\" contains multiple caveats of type \"${caveatType}\".`,\n );\n this.data = { caveatType, origin, target: targetName };\n }\n}\n\nexport class CaveatMergeTypeMismatchError extends CustomError {\n public data: {\n leftCaveatType: string;\n rightCaveatType: string;\n };\n\n constructor(leftCaveatType: string, rightCaveatType: string) {\n super(\n `Cannot merge caveats of different types: \"${leftCaveatType}\" and \"${rightCaveatType}\".`,\n );\n this.data = { leftCaveatType, rightCaveatType };\n }\n}\n\nexport class CaveatSpecificationMismatchError extends CustomError {\n public data: {\n caveatSpec: Record<string, unknown>;\n permissionType: PermissionType;\n };\n\n constructor(\n caveatSpec: Record<string, unknown>,\n permissionType: PermissionType,\n ) {\n super(\n `Caveat specification uses a mismatched type. Expected caveats for ${permissionType}`,\n );\n this.data = { caveatSpec, permissionType };\n }\n}\n\nexport class PermissionsRequestNotFoundError extends CustomError {\n constructor(id: string) {\n super(`Permissions request with id \"${id}\" not found.`);\n }\n}\n"]}
1
+ {"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DataWithOptionalCause,\n EthereumProviderError,\n OptionalDataWithOptionalCause,\n} from '@metamask/rpc-errors';\nimport {\n errorCodes,\n providerErrors,\n rpcErrors,\n JsonRpcError,\n} from '@metamask/rpc-errors';\n\nimport type { CaveatConstraint } from './Caveat';\nimport type { PermissionType } from './Permission';\nimport type { PermissionDiffMap } from './PermissionController';\n\ntype UnauthorizedArg = {\n data?: Record<string, unknown>;\n message?: string;\n};\n\n/**\n * Utility function for building an \"unauthorized\" error.\n *\n * @param opts - Optional arguments that add extra context\n * @returns The built error\n */\nexport function unauthorized(\n opts: UnauthorizedArg,\n): EthereumProviderError<UnauthorizedArg> {\n return providerErrors.unauthorized({\n message:\n 'Unauthorized to perform action. Try requesting the required permission(s) first. For more information, see: https://docs.metamask.io/guide/rpc-api.html#permissions',\n data: opts.data,\n });\n}\n\n/**\n * Utility function for building a \"method not found\" error.\n *\n * @param method - The method in question.\n * @param data - Optional data for context.\n * @returns The built error\n */\nexport function methodNotFound(\n method: string,\n data?: DataWithOptionalCause,\n): JsonRpcError<OptionalDataWithOptionalCause> {\n const message = `The method \"${method}\" does not exist / is not available.`;\n\n const opts: Parameters<typeof rpcErrors.methodNotFound>[0] = { message };\n if (data !== undefined) {\n opts.data = data;\n }\n return rpcErrors.methodNotFound(opts);\n}\n\ntype InvalidParamsArg = {\n message?: string;\n data?: DataWithOptionalCause;\n};\n\n/**\n * Utility function for building an \"invalid params\" error.\n *\n * @param opts - Optional arguments that add extra context\n * @returns The built error\n */\nexport function invalidParams(\n opts: InvalidParamsArg,\n): JsonRpcError<DataWithOptionalCause> {\n return rpcErrors.invalidParams({\n data: opts.data,\n message: opts.message,\n });\n}\n\n/**\n * Utility function for building an \"user rejected request\" error.\n *\n * @param data - Optional data to add extra context\n * @returns The built error\n */\nexport function userRejectedRequest<Data extends Record<string, unknown>>(\n data?: Data,\n): JsonRpcError<Data> {\n return providerErrors.userRejectedRequest({ data });\n}\n\n/**\n * Utility function for building an internal error.\n *\n * @param message - The error message\n * @param data - Optional data to add extra context\n * @returns The built error\n */\nexport function internalError<Data extends Record<string, unknown>>(\n message: string,\n data?: Data,\n): JsonRpcError<Data> {\n return rpcErrors.internal({ message, data });\n}\n\nclass CustomError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\nexport class InvalidSubjectIdentifierError extends CustomError {\n constructor(origin: unknown) {\n super(\n `Invalid subject identifier: \"${\n typeof origin === 'string' ? origin : typeof origin\n }\"`,\n );\n this.name = this.constructor.name;\n }\n}\n\nexport class UnrecognizedSubjectError extends CustomError {\n constructor(origin: string) {\n super(`Unrecognized subject: \"${origin}\" has no permissions.`);\n this.name = this.constructor.name;\n }\n}\n\nexport class CaveatMergerDoesNotExistError extends CustomError {\n constructor(caveatType: string) {\n super(`Caveat value merger does not exist for type: \"${caveatType}\"`);\n }\n}\n\nexport class InvalidMergedPermissionsError extends Error {\n public cause: Error;\n\n public data: {\n diff: PermissionDiffMap<string, CaveatConstraint>;\n };\n\n constructor(\n origin: string,\n cause: Error,\n diff: PermissionDiffMap<string, CaveatConstraint>,\n ) {\n super(\n `Invalid merged permissions for subject \"${origin}\":\\n${cause.message}`,\n );\n this.cause = cause;\n this.data = { diff };\n }\n}\n\nexport class InvalidApprovedPermissionError extends CustomError {\n public data: {\n origin: string;\n target: string;\n approvedPermission: Record<string, unknown>;\n };\n\n constructor(\n origin: string,\n target: string,\n approvedPermission: Record<string, unknown>,\n ) {\n super(\n `Invalid approved permission for origin \"${origin}\" and target \"${target}\".`,\n );\n this.data = { origin, target, approvedPermission };\n }\n}\nexport class PermissionDoesNotExistError extends CustomError {\n constructor(origin: string, target: string) {\n super(`Subject \"${origin}\" has no permission for \"${target}\".`);\n }\n}\n\nexport class EndowmentPermissionDoesNotExistError extends CustomError {\n public data?: { origin: string };\n\n constructor(target: string, origin?: string) {\n super(\n `${\n origin ? `Subject \"${origin}\"` : 'Unknown subject'\n } has no permission for \"${target}\".`,\n );\n if (origin) {\n this.data = { origin };\n }\n }\n}\n\nexport class UnrecognizedCaveatTypeError extends CustomError {\n public data: {\n caveatType: string;\n origin?: string;\n target?: string;\n };\n\n constructor(caveatType: string);\n\n constructor(caveatType: string, origin: string, target: string);\n\n constructor(caveatType: string, origin?: string, target?: string) {\n super(`Unrecognized caveat type: \"${caveatType}\"`);\n this.data = { caveatType };\n if (origin !== undefined) {\n this.data.origin = origin;\n }\n\n if (target !== undefined) {\n this.data.target = target;\n }\n }\n}\n\nexport class InvalidCaveatsPropertyError extends CustomError {\n public data: { origin: string; target: string; caveatsProperty: unknown };\n\n constructor(origin: string, target: string, caveatsProperty: unknown) {\n super(\n `The \"caveats\" property of permission for \"${target}\" of subject \"${origin}\" is invalid. It must be a non-empty array if specified.`,\n );\n this.data = { origin, target, caveatsProperty };\n }\n}\n\nexport class CaveatDoesNotExistError extends CustomError {\n constructor(origin: string, target: string, caveatType: string) {\n super(\n `Permission for \"${target}\" of subject \"${origin}\" has no caveat of type \"${caveatType}\".`,\n );\n }\n}\n\nexport class CaveatAlreadyExistsError extends CustomError {\n constructor(origin: string, target: string, caveatType: string) {\n super(\n `Permission for \"${target}\" of subject \"${origin}\" already has a caveat of type \"${caveatType}\".`,\n );\n }\n}\n\nexport class InvalidCaveatError extends JsonRpcError<\n DataWithOptionalCause | undefined\n> {\n public override data: { origin: string; target: string };\n\n constructor(receivedCaveat: unknown, origin: string, target: string) {\n super(\n errorCodes.rpc.invalidParams,\n `Invalid caveat. Caveats must be plain objects.`,\n { receivedCaveat },\n );\n this.data = { origin, target };\n }\n}\n\nexport class InvalidCaveatTypeError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(`Caveat types must be strings. Received: \"${typeof caveat.type}\"`);\n this.data = { caveat, origin, target };\n }\n}\n\nexport class CaveatMissingValueError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(`Caveat is missing \"value\" field.`);\n this.data = { caveat, origin, target };\n }\n}\n\nexport class CaveatInvalidJsonError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(`Caveat \"value\" is invalid JSON.`);\n this.data = { caveat, origin, target };\n }\n}\n\nexport class InvalidCaveatFieldsError extends CustomError {\n public data: {\n caveat: Record<string, unknown>;\n origin: string;\n target: string;\n };\n\n constructor(caveat: Record<string, unknown>, origin: string, target: string) {\n super(\n `Caveat has unexpected number of fields: \"${Object.keys(caveat).length}\"`,\n );\n this.data = { caveat, origin, target };\n }\n}\n\nexport class ForbiddenCaveatError extends CustomError {\n public data: {\n caveatType: string;\n origin: string;\n target: string;\n };\n\n constructor(caveatType: string, origin: string, targetName: string) {\n super(\n `Permissions for target \"${targetName}\" may not have caveats of type \"${caveatType}\".`,\n );\n this.data = { caveatType, origin, target: targetName };\n }\n}\n\nexport class DuplicateCaveatError extends CustomError {\n public data: {\n caveatType: string;\n origin: string;\n target: string;\n };\n\n constructor(caveatType: string, origin: string, targetName: string) {\n super(\n `Permissions for target \"${targetName}\" contains multiple caveats of type \"${caveatType}\".`,\n );\n this.data = { caveatType, origin, target: targetName };\n }\n}\n\nexport class CaveatMergeTypeMismatchError extends CustomError {\n public data: {\n leftCaveatType: string;\n rightCaveatType: string;\n };\n\n constructor(leftCaveatType: string, rightCaveatType: string) {\n super(\n `Cannot merge caveats of different types: \"${leftCaveatType}\" and \"${rightCaveatType}\".`,\n );\n this.data = { leftCaveatType, rightCaveatType };\n }\n}\n\nexport class CaveatSpecificationMismatchError extends CustomError {\n public data: {\n caveatSpec: Record<string, unknown>;\n permissionType: PermissionType;\n };\n\n constructor(\n caveatSpec: Record<string, unknown>,\n permissionType: PermissionType,\n ) {\n super(\n `Caveat specification uses a mismatched type. Expected caveats for ${permissionType}`,\n );\n this.data = { caveatSpec, permissionType };\n }\n}\n\nexport class PermissionsRequestNotFoundError extends CustomError {\n constructor(id: string) {\n super(`Permissions request with id \"${id}\" not found.`);\n }\n}\n"]}
@@ -19,7 +19,7 @@ const errors_1 = require("./errors.cjs");
19
19
  * will be executed. Otherwise, an "unauthorized" error will be returned.
20
20
  *
21
21
  * @param options - Options bag.
22
- * @param options.executeRestrictedMethod - {@link PermissionController._executeRestrictedMethod}.
22
+ * @param options.executeRestrictedMethod - `PermissionController.executeRestrictedMethod`.
23
23
  * @param options.getRestrictedMethod - {@link PermissionController.getRestrictedMethod}.
24
24
  * @param options.isUnrestrictedMethod - A function that checks whether a
25
25
  * particular method is unrestricted.
@@ -1 +1 @@
1
- {"version":3,"file":"permission-middleware.cjs","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":";;;AAAA,+DAAkE;AAkBlE,yCAAyC;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,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,GAA+C,EAC/C,GAA2B,EAC3B,IAAoC,EACrB,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE/B,wCAAwC;YACxC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;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,CAAC;gBACzB,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;YACnB,CAAC;YAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC,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,\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,"file":"permission-middleware.cjs","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":";;;AAAA,+DAAkE;AAmBlE,yCAAyC;AAiBzC;;;;;;;;;;;;;;;;;;;;;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,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,GAA+C,EAC/C,GAA2B,EAC3B,IAAoC,EACrB,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE/B,wCAAwC;YACxC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;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,CAAC;gBACzB,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;YACnB,CAAC;YAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC,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 RestrictedMethod,\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 ExecuteRestrictedMethod = (\n methodImplementation: RestrictedMethod<RestrictedMethodParameters, Json>,\n subject: PermissionSubjectMetadata,\n method: string,\n params?: RestrictedMethodParameters,\n) => ReturnType<RestrictedMethod<RestrictedMethodParameters, Json>>;\n\ntype PermissionMiddlewareFactoryOptions = {\n executeRestrictedMethod: 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 - `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,\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,8 +1,9 @@
1
1
  import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
2
2
  import type { Json } from "@metamask/utils";
3
- import type { GenericPermissionController, PermissionSubjectMetadata, RestrictedMethodParameters } from "./index.cjs";
3
+ import type { GenericPermissionController, PermissionSubjectMetadata, RestrictedMethod, RestrictedMethodParameters } from "./index.cjs";
4
+ type ExecuteRestrictedMethod = (methodImplementation: RestrictedMethod<RestrictedMethodParameters, Json>, subject: PermissionSubjectMetadata, method: string, params?: RestrictedMethodParameters) => ReturnType<RestrictedMethod<RestrictedMethodParameters, Json>>;
4
5
  type PermissionMiddlewareFactoryOptions = {
5
- executeRestrictedMethod: GenericPermissionController['_executeRestrictedMethod'];
6
+ executeRestrictedMethod: ExecuteRestrictedMethod;
6
7
  getRestrictedMethod: GenericPermissionController['getRestrictedMethod'];
7
8
  isUnrestrictedMethod: (method: string) => boolean;
8
9
  };
@@ -22,7 +23,7 @@ type PermissionMiddlewareFactoryOptions = {
22
23
  * will be executed. Otherwise, an "unauthorized" error will be returned.
23
24
  *
24
25
  * @param options - Options bag.
25
- * @param options.executeRestrictedMethod - {@link PermissionController._executeRestrictedMethod}.
26
+ * @param options.executeRestrictedMethod - `PermissionController.executeRestrictedMethod`.
26
27
  * @param options.getRestrictedMethod - {@link PermissionController.getRestrictedMethod}.
27
28
  * @param options.isUnrestrictedMethod - A function that checks whether a
28
29
  * particular method is unrestricted.
@@ -1 +1 @@
1
- {"version":3,"file":"permission-middleware.d.cts","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,iBAAiB,EAElB,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EAGL,wBAAwB;AAEzB,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC3B,oBAAU;AAKX,KAAK,kCAAkC,GAAG;IACxC,uBAAuB,EAAE,2BAA2B,CAAC,0BAA0B,CAAC,CAAC;IACjF,mBAAmB,EAAE,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IACxE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,EAAE,kCAAkC,aAExB,yBAAyB,KACjC,kBAAkB,0BAA0B,EAAE,IAAI,CAAC,CA2CvD"}
1
+ {"version":3,"file":"permission-middleware.d.cts","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,iBAAiB,EAElB,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EAGL,wBAAwB;AAEzB,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,gBAAgB,EAChB,0BAA0B,EAC3B,oBAAU;AAKX,KAAK,uBAAuB,GAAG,CAC7B,oBAAoB,EAAE,gBAAgB,CAAC,0BAA0B,EAAE,IAAI,CAAC,EACxE,OAAO,EAAE,yBAAyB,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,0BAA0B,KAChC,UAAU,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpE,KAAK,kCAAkC,GAAG;IACxC,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,mBAAmB,EAAE,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IACxE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,EAAE,kCAAkC,aAExB,yBAAyB,KACjC,kBAAkB,0BAA0B,EAAE,IAAI,CAAC,CA2CvD"}
@@ -1,8 +1,9 @@
1
1
  import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
2
2
  import type { Json } from "@metamask/utils";
3
- import type { GenericPermissionController, PermissionSubjectMetadata, RestrictedMethodParameters } from "./index.mjs";
3
+ import type { GenericPermissionController, PermissionSubjectMetadata, RestrictedMethod, RestrictedMethodParameters } from "./index.mjs";
4
+ type ExecuteRestrictedMethod = (methodImplementation: RestrictedMethod<RestrictedMethodParameters, Json>, subject: PermissionSubjectMetadata, method: string, params?: RestrictedMethodParameters) => ReturnType<RestrictedMethod<RestrictedMethodParameters, Json>>;
4
5
  type PermissionMiddlewareFactoryOptions = {
5
- executeRestrictedMethod: GenericPermissionController['_executeRestrictedMethod'];
6
+ executeRestrictedMethod: ExecuteRestrictedMethod;
6
7
  getRestrictedMethod: GenericPermissionController['getRestrictedMethod'];
7
8
  isUnrestrictedMethod: (method: string) => boolean;
8
9
  };
@@ -22,7 +23,7 @@ type PermissionMiddlewareFactoryOptions = {
22
23
  * will be executed. Otherwise, an "unauthorized" error will be returned.
23
24
  *
24
25
  * @param options - Options bag.
25
- * @param options.executeRestrictedMethod - {@link PermissionController._executeRestrictedMethod}.
26
+ * @param options.executeRestrictedMethod - `PermissionController.executeRestrictedMethod`.
26
27
  * @param options.getRestrictedMethod - {@link PermissionController.getRestrictedMethod}.
27
28
  * @param options.isUnrestrictedMethod - A function that checks whether a
28
29
  * particular method is unrestricted.
@@ -1 +1 @@
1
- {"version":3,"file":"permission-middleware.d.mts","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,iBAAiB,EAElB,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EAGL,wBAAwB;AAEzB,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC3B,oBAAU;AAKX,KAAK,kCAAkC,GAAG;IACxC,uBAAuB,EAAE,2BAA2B,CAAC,0BAA0B,CAAC,CAAC;IACjF,mBAAmB,EAAE,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IACxE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,EAAE,kCAAkC,aAExB,yBAAyB,KACjC,kBAAkB,0BAA0B,EAAE,IAAI,CAAC,CA2CvD"}
1
+ {"version":3,"file":"permission-middleware.d.mts","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,iBAAiB,EAElB,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EAGL,wBAAwB;AAEzB,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,gBAAgB,EAChB,0BAA0B,EAC3B,oBAAU;AAKX,KAAK,uBAAuB,GAAG,CAC7B,oBAAoB,EAAE,gBAAgB,CAAC,0BAA0B,EAAE,IAAI,CAAC,EACxE,OAAO,EAAE,yBAAyB,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,0BAA0B,KAChC,UAAU,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpE,KAAK,kCAAkC,GAAG;IACxC,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,mBAAmB,EAAE,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IACxE,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAAC,EAC7C,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,EAAE,kCAAkC,aAExB,yBAAyB,KACjC,kBAAkB,0BAA0B,EAAE,IAAI,CAAC,CA2CvD"}
@@ -16,7 +16,7 @@ import { internalError } from "./errors.mjs";
16
16
  * will be executed. Otherwise, an "unauthorized" error will be returned.
17
17
  *
18
18
  * @param options - Options bag.
19
- * @param options.executeRestrictedMethod - {@link PermissionController._executeRestrictedMethod}.
19
+ * @param options.executeRestrictedMethod - `PermissionController.executeRestrictedMethod`.
20
20
  * @param options.getRestrictedMethod - {@link PermissionController.getRestrictedMethod}.
21
21
  * @param options.isUnrestrictedMethod - A function that checks whether a
22
22
  * particular method is unrestricted.
@@ -1 +1 @@
1
- {"version":3,"file":"permission-middleware.mjs","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kCAAkC;AAkBlE,OAAO,EAAE,aAAa,EAAE,qBAAiB;AAUzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,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,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,GAA+C,EAC/C,GAA2B,EAC3B,IAAoC,EACrB,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE/B,wCAAwC;YACxC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;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,CAAC;gBACzB,GAAG,CAAC,KAAK,GAAG,aAAa,CACvB,uBAAuB,GAAG,CAAC,MAAM,8BAA8B,EAC/D,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC","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,\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,"file":"permission-middleware.mjs","sourceRoot":"","sources":["../src/permission-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kCAAkC;AAmBlE,OAAO,EAAE,aAAa,EAAE,qBAAiB;AAiBzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,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,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,qBAAqB,GAAG,KAAK,EACjC,GAA+C,EAC/C,GAA2B,EAC3B,IAAoC,EACrB,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE/B,wCAAwC;YACxC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;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,CAAC;gBACzB,GAAG,CAAC,KAAK,GAAG,aAAa,CACvB,uBAAuB,GAAG,CAAC,MAAM,8BAA8B,EAC/D,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,OAAO,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC","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 RestrictedMethod,\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 ExecuteRestrictedMethod = (\n methodImplementation: RestrictedMethod<RestrictedMethodParameters, Json>,\n subject: PermissionSubjectMetadata,\n method: string,\n params?: RestrictedMethodParameters,\n) => ReturnType<RestrictedMethod<RestrictedMethodParameters, Json>>;\n\ntype PermissionMiddlewareFactoryOptions = {\n executeRestrictedMethod: 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 - `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,\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 +1 @@
1
- {"version":3,"file":"revokePermissions.cjs","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":";;;AACA,2CAMyB;AAEzB,0CAA0C;AAG1C,wCAAuC;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,KAAK,UAAU,+BAA+B,CAC5C,GAAyC,EACzC,GAAiC,EACjC,KAAc,EACd,GAA6B,EAC7B,EAAE,0BAA0B,EAA0B;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sDAAsD;IACtD,iCAAiC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,IAAA,uBAAe,EAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAE3C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IAElB,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","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"]}
1
+ {"version":3,"file":"revokePermissions.cjs","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":";;;AACA,2CAAkD;AAQlD,0CAA0C;AAG1C,wCAAuC;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,KAAK,UAAU,+BAA+B,CAC5C,GAAyC,EACzC,GAAiC,EACjC,KAAc,EACd,GAA6B,EAC7B,EAAE,0BAA0B,EAA0B;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sDAAsD;IACtD,iCAAiC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,IAAA,uBAAe,EAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAE3C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IAElB,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport { isNonEmptyArray } from '@metamask/utils';\nimport type {\n Json,\n JsonRpcRequest,\n NonEmptyArray,\n 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"]}
@@ -1,4 +1,4 @@
1
- import { type Json, type NonEmptyArray } from "@metamask/utils";
1
+ import type { Json, NonEmptyArray } from "@metamask/utils";
2
2
  import type { PermissionConstraint } from "../Permission.cjs";
3
3
  import type { PermittedHandlerExport } from "../utils.cjs";
4
4
  export declare const revokePermissionsHandler: PermittedHandlerExport<RevokePermissionsHooks, RevokePermissionArgs, null>;
@@ -1 +1 @@
1
- {"version":3,"file":"revokePermissions.d.cts","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EAET,KAAK,aAAa,EAEnB,wBAAwB;AAGzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAAsB;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAiB;AAGvD,eAAO,MAAM,wBAAwB,EAAE,sBAAsB,CAC3D,sBAAsB,EACtB,oBAAoB,EACpB,IAAI,CAOL,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,oBAAoB,CAAC,kBAAkB,CAAC,EACxC,IAAI,CACL,CAAC;AAEF,KAAK,iBAAiB,GAAG,CACvB,WAAW,EAAE,aAAa,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,KACjE,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,GAAG;IACnC,0BAA0B,EAAE,iBAAiB,CAAC;CAC/C,CAAC"}
1
+ {"version":3,"file":"revokePermissions.d.cts","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EAEJ,aAAa,EAEd,wBAAwB;AAGzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAAsB;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAiB;AAGvD,eAAO,MAAM,wBAAwB,EAAE,sBAAsB,CAC3D,sBAAsB,EACtB,oBAAoB,EACpB,IAAI,CAOL,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,oBAAoB,CAAC,kBAAkB,CAAC,EACxC,IAAI,CACL,CAAC;AAEF,KAAK,iBAAiB,GAAG,CACvB,WAAW,EAAE,aAAa,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,KACjE,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,GAAG;IACnC,0BAA0B,EAAE,iBAAiB,CAAC;CAC/C,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type Json, type NonEmptyArray } from "@metamask/utils";
1
+ import type { Json, NonEmptyArray } from "@metamask/utils";
2
2
  import type { PermissionConstraint } from "../Permission.mjs";
3
3
  import type { PermittedHandlerExport } from "../utils.mjs";
4
4
  export declare const revokePermissionsHandler: PermittedHandlerExport<RevokePermissionsHooks, RevokePermissionArgs, null>;
@@ -1 +1 @@
1
- {"version":3,"file":"revokePermissions.d.mts","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EAET,KAAK,aAAa,EAEnB,wBAAwB;AAGzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAAsB;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAiB;AAGvD,eAAO,MAAM,wBAAwB,EAAE,sBAAsB,CAC3D,sBAAsB,EACtB,oBAAoB,EACpB,IAAI,CAOL,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,oBAAoB,CAAC,kBAAkB,CAAC,EACxC,IAAI,CACL,CAAC;AAEF,KAAK,iBAAiB,GAAG,CACvB,WAAW,EAAE,aAAa,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,KACjE,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,GAAG;IACnC,0BAA0B,EAAE,iBAAiB,CAAC;CAC/C,CAAC"}
1
+ {"version":3,"file":"revokePermissions.d.mts","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EAEJ,aAAa,EAEd,wBAAwB;AAGzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,0BAAsB;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAiB;AAGvD,eAAO,MAAM,wBAAwB,EAAE,sBAAsB,CAC3D,sBAAsB,EACtB,oBAAoB,EACpB,IAAI,CAOL,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,oBAAoB,CAAC,kBAAkB,CAAC,EACxC,IAAI,CACL,CAAC;AAEF,KAAK,iBAAiB,GAAG,CACvB,WAAW,EAAE,aAAa,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,KACjE,IAAI,CAAC;AAEV,MAAM,MAAM,sBAAsB,GAAG;IACnC,0BAA0B,EAAE,iBAAiB,CAAC;CAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"revokePermissions.mjs","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAKhB,wBAAwB;AAEzB,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAG1C,OAAO,EAAE,WAAW,EAAE,qBAAiB;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GAIjC;IACF,WAAW,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC;IAC5C,cAAc,EAAE,+BAA+B;IAC/C,SAAS,EAAE;QACT,0BAA0B,EAAE,IAAI;KACjC;CACF,CAAC;AAeF;;;;;;;;;;GAUG;AACH,KAAK,UAAU,+BAA+B,CAC5C,GAAyC,EACzC,GAAiC,EACjC,KAAc,EACd,GAA6B,EAC7B,EAAE,0BAA0B,EAA0B;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sDAAsD;IACtD,iCAAiC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAE3C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IAElB,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","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"]}
1
+ {"version":3,"file":"revokePermissions.mjs","sourceRoot":"","sources":["../../src/rpc-methods/revokePermissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,wBAAwB;AAQlD,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAG1C,OAAO,EAAE,WAAW,EAAE,qBAAiB;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GAIjC;IACF,WAAW,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC;IAC5C,cAAc,EAAE,+BAA+B;IAC/C,SAAS,EAAE;QACT,0BAA0B,EAAE,IAAI;KACjC;CACF,CAAC;AAeF;;;;;;;;;;GAUG;AACH,KAAK,UAAU,+BAA+B,CAC5C,GAAyC,EACzC,GAAiC,EACjC,KAAc,EACd,GAA6B,EAC7B,EAAE,0BAA0B,EAA0B;IAEtD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sDAAsD;IACtD,iCAAiC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAE3C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;IAElB,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport { isNonEmptyArray } from '@metamask/utils';\nimport type {\n Json,\n JsonRpcRequest,\n NonEmptyArray,\n 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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAsBA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,+DAAgD,CAAA;IAChD,uDAAwC,CAAA;IACxC,6DAA8C,CAAA;AAChD,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAsDD;;;;;;;;;;;GAWG;AACH,SAAgB,6BAA6B,CAC3C,cAAyD,EACzD,eAA8C;IAE9C,MAAM,WAAW,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IACjD,MAAM,WAAW,GAA2C,EAAE,CAAC;IAE/D,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAC7C,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CACtD,CAAC;QAEF,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/D,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,iBAAiB;QACjB,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC;AA3BD,sEA2BC","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"]}
1
+ {"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAsBA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,+DAAgD,CAAA;IAChD,uDAAwC,CAAA;IACxC,6DAA8C,CAAA;AAChD,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAsDD;;;;;;;;;;;GAWG;AACH,SAAgB,6BAA6B,CAC3C,cAAyD,EACzD,eAA8C;IAM9C,MAAM,WAAW,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IACjD,MAAM,WAAW,GAA2C,EAAE,CAAC;IAE/D,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAC7C,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CACtD,CAAC;QAEF,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/D,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,iBAAiB;QACjB,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC;AA/BD,sEA+BC","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 caveatPairs: [CaveatConstraint, CaveatConstraint][];\n leftUniqueCaveats: CaveatConstraint[];\n rightUniqueCaveats: CaveatConstraint[];\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,wBAAwB;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACvB,qBAAiB;AAClB,OAAO,KAAK,EACV,oBAAoB,EACpB,iCAAiC,EACjC,0BAA0B,EAC3B,yBAAqB;AAEtB,oBAAY,WAAW;IACrB,kBAAkB,8BAA8B;IAChD,cAAc,0BAA0B;IACxC,iBAAiB,6BAA6B;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,CAC/B,iBAAiB,SACb,sBAAsB,CAAC,6BAA6B,CAAC,GACrD,0BAA0B,CAAC,iCAAiC,CAAC,IAC/D,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,CACF,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,EAC3B,GAAG,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI;KAC9B,QAAQ,IAAI,MAAM,OAAO,GAAG,IAAI;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAChC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB;IACF,cAAc,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,SAAS,EACzD,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAAC;;;;EAyB/C"}
1
+ {"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,wBAAwB;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACvB,qBAAiB;AAClB,OAAO,KAAK,EACV,oBAAoB,EACpB,iCAAiC,EACjC,0BAA0B,EAC3B,yBAAqB;AAEtB,oBAAY,WAAW;IACrB,kBAAkB,8BAA8B;IAChD,cAAc,0BAA0B;IACxC,iBAAiB,6BAA6B;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,CAC/B,iBAAiB,SACb,sBAAsB,CAAC,6BAA6B,CAAC,GACrD,0BAA0B,CAAC,iCAAiC,CAAC,IAC/D,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,CACF,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,EAC3B,GAAG,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI;KAC9B,QAAQ,IAAI,MAAM,OAAO,GAAG,IAAI;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAChC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB;IACF,cAAc,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,SAAS,EACzD,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC7C;IACD,WAAW,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;IACpD,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;CACxC,CAwBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,wBAAwB;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACvB,qBAAiB;AAClB,OAAO,KAAK,EACV,oBAAoB,EACpB,iCAAiC,EACjC,0BAA0B,EAC3B,yBAAqB;AAEtB,oBAAY,WAAW;IACrB,kBAAkB,8BAA8B;IAChD,cAAc,0BAA0B;IACxC,iBAAiB,6BAA6B;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,CAC/B,iBAAiB,SACb,sBAAsB,CAAC,6BAA6B,CAAC,GACrD,0BAA0B,CAAC,iCAAiC,CAAC,IAC/D,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,CACF,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,EAC3B,GAAG,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI;KAC9B,QAAQ,IAAI,MAAM,OAAO,GAAG,IAAI;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAChC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB;IACF,cAAc,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,SAAS,EACzD,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAAC;;;;EAyB/C"}
1
+ {"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,kCAAkC;AACnC,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,wBAAwB;AAEzB,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,EACvB,qBAAiB;AAClB,OAAO,KAAK,EACV,oBAAoB,EACpB,iCAAiC,EACjC,0BAA0B,EAC3B,yBAAqB;AAEtB,oBAAY,WAAW;IACrB,kBAAkB,8BAA8B;IAChD,cAAc,0BAA0B;IACxC,iBAAiB,6BAA6B;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,CAC/B,iBAAiB,SACb,sBAAsB,CAAC,6BAA6B,CAAC,GACrD,0BAA0B,CAAC,iCAAiC,CAAC,IAC/D,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,MAAM,yBAAyB,CACnC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,CACF,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,EAC3B,GAAG,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,yBAAyB,EAC/B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,KAAK,KACT,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,IAAI;KAC9B,QAAQ,IAAI,MAAM,OAAO,GAAG,IAAI;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAChC,KAAK,EACL,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB;IACF,cAAc,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,SAAS,EACzD,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC7C;IACD,WAAW,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;IACpD,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;CACxC,CAwBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,+DAAgD,CAAA;IAChD,uDAAwC,CAAA;IACxC,6DAA8C,CAAA;AAChD,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAsDD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,cAAyD,EACzD,eAA8C;IAE9C,MAAM,WAAW,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IACjD,MAAM,WAAW,GAA2C,EAAE,CAAC;IAE/D,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAC7C,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CACtD,CAAC;QAEF,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/D,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,iBAAiB;QACjB,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC","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"]}
1
+ {"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,+DAAgD,CAAA;IAChD,uDAAwC,CAAA;IACxC,6DAA8C,CAAA;AAChD,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAsDD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,cAAyD,EACzD,eAA8C;IAM9C,MAAM,WAAW,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IACjD,MAAM,WAAW,GAA2C,EAAE,CAAC;IAE/D,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAC7C,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CACtD,CAAC;QAEF,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5B,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/D,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,iBAAiB;QACjB,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC;KACtC,CAAC;AACJ,CAAC","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 caveatPairs: [CaveatConstraint, CaveatConstraint][];\n leftUniqueCaveats: CaveatConstraint[];\n rightUniqueCaveats: CaveatConstraint[];\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask/permission-controller",
3
- "version": "12.1.1",
3
+ "version": "12.2.1",
4
4
  "description": "Mediates access to JSON-RPC methods, used to interact with pieces of the MetaMask stack, via middleware for json-rpc-engine",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -40,7 +40,6 @@
40
40
  "build:docs": "typedoc",
41
41
  "changelog:update": "../../scripts/update-changelog.sh @metamask/permission-controller",
42
42
  "changelog:validate": "../../scripts/validate-changelog.sh @metamask/permission-controller",
43
- "publish:preview": "yarn npm publish --tag preview",
44
43
  "since-latest-release": "../../scripts/since-latest-release.sh",
45
44
  "test": "NODE_OPTIONS=--experimental-vm-modules jest --reporters=jest-silent-reporter",
46
45
  "test:clean": "NODE_OPTIONS=--experimental-vm-modules jest --clearCache",
@@ -48,32 +47,29 @@
48
47
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch"
49
48
  },
50
49
  "dependencies": {
50
+ "@metamask/approval-controller": "^9.0.0",
51
51
  "@metamask/base-controller": "^9.0.0",
52
- "@metamask/controller-utils": "^11.16.0",
53
- "@metamask/json-rpc-engine": "^10.2.0",
52
+ "@metamask/controller-utils": "^11.19.0",
53
+ "@metamask/json-rpc-engine": "^10.2.3",
54
54
  "@metamask/messenger": "^0.3.0",
55
55
  "@metamask/rpc-errors": "^7.0.2",
56
- "@metamask/utils": "^11.8.1",
56
+ "@metamask/utils": "^11.9.0",
57
57
  "@types/deep-freeze-strict": "^1.1.0",
58
58
  "deep-freeze-strict": "^1.1.1",
59
59
  "immer": "^9.0.6",
60
60
  "nanoid": "^3.3.8"
61
61
  },
62
62
  "devDependencies": {
63
- "@metamask/approval-controller": "^8.0.0",
64
63
  "@metamask/auto-changelog": "^3.4.4",
65
64
  "@ts-bridge/cli": "^0.6.4",
66
- "@types/jest": "^27.4.1",
65
+ "@types/jest": "^29.5.14",
67
66
  "deepmerge": "^4.2.2",
68
- "jest": "^27.5.1",
69
- "ts-jest": "^27.1.4",
70
- "typedoc": "^0.24.8",
67
+ "jest": "^29.7.0",
68
+ "ts-jest": "^29.2.5",
69
+ "typedoc": "^0.25.13",
71
70
  "typedoc-plugin-missing-exports": "^2.0.0",
72
71
  "typescript": "~5.3.3"
73
72
  },
74
- "peerDependencies": {
75
- "@metamask/approval-controller": "^8.0.0"
76
- },
77
73
  "engines": {
78
74
  "node": "^18.18 || >=20"
79
75
  },