@apollo/client
Version:
A fully-featured caching GraphQL client.
68 lines (67 loc) • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkError = void 0;
exports.registerLinkError = registerLinkError;
const registry = new WeakSet();
/**
* @internal Please do not use directly.
*
* @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
*/
function registerLinkError(error) {
registry.add(error);
}
/**
* A facade error type that keeps a registry of errors emitted from the link
* chain. `LinkError` is not an error class itself but rather a utility to
* detect whether an error originated from the link chain.
*
* @remarks
*
* Use `LinkError` to distinguish between errors from the link chain and custom
* errors. This is helpful for retrying an operation at the call site only when
* the error originates from the link chain.
*
* @example
*
* The following example creates a custom wrapped query function that detects
* whether the query includes an operation name and throws if not.
*
* ```ts
* import { LinkError } from "@apollo/client/errors";
*
* async function runQuery<TData>(query: TypedDocumentNode<TData>) {
* if (!hasOperationName(query)) {
* throw new Error("Queries should have operation names.");
* }
*
* return client.watchQuery({ query });
* }
*
* try {
* const result = await runQuery(query);
* } catch (error) {
* // Only log the error if the error wasn't our own custom thrown error
* if (LinkError.is(error)) {
* console.log("Got network error:", error.message);
* }
* }
* ```
*/
exports.LinkError = {
/**
* A method that determines whether an error originated from the link chain.
* `is` does not provide any type narrowing.
*
* @example
*
* ```ts
* if (LinkError.is(error)) {
* // The error originated from the link chain
* console.log("Got network error:", error.message);
* }
* ```
*/
is: (error) => registry.has(error),
};
//# sourceMappingURL=LinkError.cjs.map