UNPKG

@apollo/client

Version:

A fully-featured caching GraphQL client.

1 lines 4.73 kB
{"version":3,"file":"UnconventionalError.cjs","sources":["../../../src/errors/UnconventionalError.ts"],"sourcesContent":["import { brand, isBranded } from \"./utils.js\";\n\n/**\n * A wrapper error type that represents a non-standard error thrown from a\n * A wrapper error type that represents a non-error value thrown from the\n * link chain, such as a symbol, primitive or plain object. Read the `cause` property to\n * determine the source of the error.\n *\n * @remarks\n *\n * This error is used to standardize error handling when non-Error values are\n * thrown in the Apollo Client link chain or other parts of the system.\n * JavaScript allows throwing any value (not just Error instances), and this\n * wrapper ensures that all thrown values can be handled consistently as\n * Error-like objects while preserving the original thrown value.\n *\n * > [!NOTE]\n * > Plain strings thrown as errors are wrapped in regular [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) objects instead of `UnconventionalError` objects since strings can be safely used as the error's `message`.\n *\n * @example\n *\n * ```ts\n * import { UnconventionalError } from \"@apollo/client/errors\";\n *\n * // Check if an error is an UnconventionalError instance\n * if (UnconventionalError.is(error)) {\n * console.log(\"Non-standard error thrown:\", error.cause);\n *\n * // Check the type of the original thrown value\n * if (typeof error.cause === \"symbol\") {\n * console.log(\"A symbol was thrown:\", error.cause.toString());\n * } else if (typeof error.cause === \"object\") {\n * console.log(\"An object was thrown:\", error.cause);\n * } else {\n * console.log(\"Unexpected value thrown:\", error.cause);\n * }\n * }\n * ```\n */\nexport class UnconventionalError extends Error {\n /**\n * A method that determines whether an error is an `UnconventionalError`\n * object. This method enables TypeScript to narrow the error type.\n *\n * @example\n *\n * ```ts\n * if (UnconventionalError.is(error)) {\n * // TypeScript now knows `error` is a UnconventionalError object\n * console.log(\"What caused this?\", error.cause);\n * }\n * ```\n */\n static is(error: unknown): error is UnconventionalError {\n return isBranded(error, \"UnconventionalError\");\n }\n\n constructor(errorType: unknown) {\n super(\"An error of unexpected shape occurred.\", { cause: errorType });\n this.name = \"UnconventionalError\";\n\n brand(this);\n Object.setPrototypeOf(this, UnconventionalError.prototype);\n }\n}\n"],"names":[],"mappings":"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"}