{"version":3,"file":"errors.mjs","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,sBAAkB;AAChE,OAAO,EAAE,UAAU,EAAE,8BAA0B;AAE/C,OAAO,EAAE,kBAAkB,EAAE,oBAAgB;AAkB7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;;;;;OAKG;IACH,KAAK,EAAE,CACL,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;IAE/C;;;;;OAKG;IACH,cAAc,EAAE,CACd,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC;IAExD;;;;;OAKG;IACH,aAAa,EAAE,CACb,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC;IAEvD;;;;;OAKG;IACH,cAAc,EAAE,CACd,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC;IAExD;;;;;OAKG;IACH,QAAQ,EAAE,CACR,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;IAElD;;;;;;;OAOG;IACH,MAAM,EAAE,CACN,IAA8B,EAC9B,EAAE;QACF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5D,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;SACH;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;YAC7D,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;SACH;QACD,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,YAAY,EAAE,CACZ,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC;IAEtD;;;;;OAKG;IACH,gBAAgB,EAAE,CAChB,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC;IAE1D;;;;;OAKG;IACH,mBAAmB,EAAE,CACnB,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAE7D;;;;;OAKG;IACH,mBAAmB,EAAE,CACnB,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAE7D;;;;;OAKG;IACH,kBAAkB,EAAE,CAClB,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAE5D;;;;;OAKG;IACH,aAAa,EAAE,CACb,GAA4B,EAC5B,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;;;;;OAKG;IACH,mBAAmB,EAAE,CACnB,GAA4B,EAC5B,EAAE;QACF,OAAO,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,YAAY,EAAE,CACZ,GAA4B,EAC5B,EAAE;QACF,OAAO,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,EAAE,CACjB,GAA4B,EAC5B,EAAE;QACF,OAAO,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,YAAY,EAAE,CACZ,GAA4B,EAC5B,EAAE;QACF,OAAO,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,EAAE,CACjB,GAA4B,EAC5B,EAAE;QACF,OAAO,mBAAmB,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,MAAM,EAAE,CACN,IAA0B,EAC1B,EAAE;QACF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5D,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;SACH;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAErC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QACD,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;CACF,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,eAAe,CACtB,IAAY,EACZ,GAA4B;IAE5B,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,GAA4B;IAE5B,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,IAAI,qBAAqB,CAC9B,IAAI,EACJ,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,EACnC,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAChB,GAA4B;IAE5B,IAAI,GAAG,EAAE;QACP,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;SACd;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;YAE9B,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACjD;YACD,OAAO,CAAC,OAAO,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC;SACrC;KACF;IAED,OAAO,EAAE,CAAC;AACZ,CAAC","sourcesContent":["import { JsonRpcError, EthereumProviderError } from './classes';\nimport { errorCodes } from './error-constants';\nimport type { OptionalDataWithOptionalCause } from './utils';\nimport { getMessageFromCode } from './utils';\n\ntype EthereumErrorOptions<Data extends OptionalDataWithOptionalCause> = {\n  message?: string;\n  data?: Data;\n};\n\ntype ServerErrorOptions<Data extends OptionalDataWithOptionalCause> = {\n  code: number;\n} & EthereumErrorOptions<Data>;\n\ntype CustomErrorArg<Data extends OptionalDataWithOptionalCause> =\n  ServerErrorOptions<Data>;\n\ntype JsonRpcErrorsArg<Data extends OptionalDataWithOptionalCause> =\n  | EthereumErrorOptions<Data>\n  | string;\n\nexport const rpcErrors = {\n  /**\n   * Get a JSON RPC 2.0 Parse (-32700) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  parse: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.parse, arg),\n\n  /**\n   * Get a JSON RPC 2.0 Invalid Request (-32600) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  invalidRequest: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.invalidRequest, arg),\n\n  /**\n   * Get a JSON RPC 2.0 Invalid Params (-32602) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  invalidParams: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.invalidParams, arg),\n\n  /**\n   * Get a JSON RPC 2.0 Method Not Found (-32601) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  methodNotFound: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.methodNotFound, arg),\n\n  /**\n   * Get a JSON RPC 2.0 Internal (-32603) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  internal: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.internal, arg),\n\n  /**\n   * Get a JSON RPC 2.0 Server error.\n   * Permits integer error codes in the [ -32099 <= -32005 ] range.\n   * Codes -32000 through -32004 are reserved by EIP-1474.\n   *\n   * @param opts - The error options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  server: <Data extends OptionalDataWithOptionalCause>(\n    opts: ServerErrorOptions<Data>,\n  ) => {\n    if (!opts || typeof opts !== 'object' || Array.isArray(opts)) {\n      throw new Error(\n        'Ethereum RPC Server errors must provide single object argument.',\n      );\n    }\n    const { code } = opts;\n    if (!Number.isInteger(code) || code > -32005 || code < -32099) {\n      throw new Error(\n        '\"code\" must be an integer such that: -32099 <= code <= -32005',\n      );\n    }\n    return getJsonRpcError(code, opts);\n  },\n\n  /**\n   * Get an Ethereum JSON RPC Invalid Input (-32000) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  invalidInput: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.invalidInput, arg),\n\n  /**\n   * Get an Ethereum JSON RPC Resource Not Found (-32001) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  resourceNotFound: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.resourceNotFound, arg),\n\n  /**\n   * Get an Ethereum JSON RPC Resource Unavailable (-32002) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  resourceUnavailable: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.resourceUnavailable, arg),\n\n  /**\n   * Get an Ethereum JSON RPC Transaction Rejected (-32003) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  transactionRejected: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.transactionRejected, arg),\n\n  /**\n   * Get an Ethereum JSON RPC Method Not Supported (-32004) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  methodNotSupported: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.methodNotSupported, arg),\n\n  /**\n   * Get an Ethereum JSON RPC Limit Exceeded (-32005) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link JsonRpcError} class.\n   */\n  limitExceeded: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => getJsonRpcError(errorCodes.rpc.limitExceeded, arg),\n};\n\nexport const providerErrors = {\n  /**\n   * Get an Ethereum Provider User Rejected Request (4001) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link EthereumProviderError} class.\n   */\n  userRejectedRequest: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => {\n    return getEthProviderError(errorCodes.provider.userRejectedRequest, arg);\n  },\n\n  /**\n   * Get an Ethereum Provider Unauthorized (4100) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link EthereumProviderError} class.\n   */\n  unauthorized: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => {\n    return getEthProviderError(errorCodes.provider.unauthorized, arg);\n  },\n\n  /**\n   * Get an Ethereum Provider Unsupported Method (4200) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link EthereumProviderError} class.\n   */\n  unsupportedMethod: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => {\n    return getEthProviderError(errorCodes.provider.unsupportedMethod, arg);\n  },\n\n  /**\n   * Get an Ethereum Provider Not Connected (4900) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link EthereumProviderError} class.\n   */\n  disconnected: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => {\n    return getEthProviderError(errorCodes.provider.disconnected, arg);\n  },\n\n  /**\n   * Get an Ethereum Provider Chain Not Connected (4901) error.\n   *\n   * @param arg - The error message or options bag.\n   * @returns An instance of the {@link EthereumProviderError} class.\n   */\n  chainDisconnected: <Data extends OptionalDataWithOptionalCause>(\n    arg?: JsonRpcErrorsArg<Data>,\n  ) => {\n    return getEthProviderError(errorCodes.provider.chainDisconnected, arg);\n  },\n\n  /**\n   * Get a custom Ethereum Provider error.\n   *\n   * @param opts - The error options bag.\n   * @returns An instance of the {@link EthereumProviderError} class.\n   */\n  custom: <Data extends OptionalDataWithOptionalCause>(\n    opts: CustomErrorArg<Data>,\n  ) => {\n    if (!opts || typeof opts !== 'object' || Array.isArray(opts)) {\n      throw new Error(\n        'Ethereum Provider custom errors must provide single object argument.',\n      );\n    }\n\n    const { code, message, data } = opts;\n\n    if (!message || typeof message !== 'string') {\n      throw new Error('\"message\" must be a nonempty string');\n    }\n    return new EthereumProviderError(code, message, data);\n  },\n};\n\n/**\n * Get a generic JSON-RPC error class instance.\n *\n * @param code - The error code.\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link JsonRpcError} class.\n */\nfunction getJsonRpcError<Data extends OptionalDataWithOptionalCause>(\n  code: number,\n  arg?: JsonRpcErrorsArg<Data>,\n): JsonRpcError<Data> {\n  const [message, data] = parseOpts(arg);\n  return new JsonRpcError(code, message ?? getMessageFromCode(code), data);\n}\n\n/**\n * Get an Ethereum Provider error class instance.\n *\n * @param code - The error code.\n * @param arg - The error message or options bag.\n * @returns An instance of the {@link EthereumProviderError} class.\n */\nfunction getEthProviderError<Data extends OptionalDataWithOptionalCause>(\n  code: number,\n  arg?: JsonRpcErrorsArg<Data>,\n): EthereumProviderError<Data> {\n  const [message, data] = parseOpts(arg);\n  return new EthereumProviderError(\n    code,\n    message ?? getMessageFromCode(code),\n    data,\n  );\n}\n\n/**\n * Get an error message and optional data from an options bag.\n *\n * @param arg - The error message or options bag.\n * @returns A tuple containing the error message and optional data.\n */\nfunction parseOpts<Data extends OptionalDataWithOptionalCause>(\n  arg?: JsonRpcErrorsArg<Data>,\n): [message?: string | undefined, data?: Data | undefined] {\n  if (arg) {\n    if (typeof arg === 'string') {\n      return [arg];\n    } else if (typeof arg === 'object' && !Array.isArray(arg)) {\n      const { message, data } = arg;\n\n      if (message && typeof message !== 'string') {\n        throw new Error('Must specify string message.');\n      }\n      return [message ?? undefined, data];\n    }\n  }\n\n  return [];\n}\n"]}