{"version":3,"file":"errors.cjs","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"]}