UNPKG

@ayonli/jsext

Version:

A JavaScript extension package for building strong and modern applications.

125 lines (124 loc) 3.38 kB
/** * Functions for converting errors to/from other types of objects. * @module */ import { Constructor } from "./types.ts"; import Exception, { type ExceptionOptions } from "./error/Exception.ts"; export { Exception }; export type { ExceptionOptions }; /** * Transforms the error to a plain object. * * @example * ```ts * import { toObject } from "@ayonli/jsext/error"; * * const err = new Error("Something went wrong."); * * const obj = toObject(err); * console.log(obj); * // { * // "@@type": "Error", * // name: "Error", * // message: "Something went wrong.", * // stack: "Error: Something went wrong.\n at <anonymous>:1:13" * // } * ``` */ export declare function toObject<T extends Error>(err: T): { [x: string | symbol]: any; }; /** * Reverses a plain object to a specific error type. * * @example * ```ts * import { fromObject } from "@ayonli/jsext/error"; * * const obj = { * "@@type": "Error", * name: "Error", * message: "Something went wrong.", * stack: "Error: Something went wrong.\n at <anonymous>:1:13" * }; * * const err = fromObject(obj); * console.log(err); * // Error: Something went wrong. * // at <anonymous>:1:13 * ``` */ export declare function fromObject<T extends { name: "Error"; }>(obj: T): Error; export declare function fromObject<T extends { name: "EvalError"; }>(obj: T): EvalError; export declare function fromObject<T extends { name: "RangeError"; }>(obj: T): RangeError; export declare function fromObject<T extends { name: "ReferenceError"; }>(obj: T): ReferenceError; export declare function fromObject<T extends { name: "SyntaxError"; }>(obj: T): SyntaxError; export declare function fromObject<T extends { name: "TypeError"; }>(obj: T): TypeError; export declare function fromObject<T extends { name: "URIError"; }>(obj: T): URIError; export declare function fromObject<T extends { name: "Exception"; }>(obj: T): Exception; export declare function fromObject<T extends Error>(obj: { [x: string | symbol]: any; }, ctor?: Constructor<Error>): T | null; /** * Creates an `ErrorEvent` instance based on the given error. * * @example * ```ts * import { toErrorEvent } from "@ayonli/jsext/error"; * * const err = new Error("Something went wrong."); * * const event = toErrorEvent(err); * console.log(event); * // ErrorEvent { * // error: Error: Something went wrong. * // at <anonymous>:1:13, * // message: "Something went wrong.", * // filename: "", * // lineno: 1, * // colno: 13 * // } * ``` */ export declare function toErrorEvent(err: Error, type?: string): ErrorEvent; /** * Creates an error instance based on the given `ErrorEvent` instance. * * @example * ```ts * import { fromErrorEvent } from "@ayonli/jsext/error"; * * const event = new ErrorEvent("error", { * message: "Something went wrong.", * filename: "", * lineno: 1, * colno: 13, * }); * * const err = fromErrorEvent(event); * console.log(err); * // Error: Something went wrong. * // at <anonymous>:1:13 * ``` */ export declare function fromErrorEvent<T extends Error>(event: ErrorEvent): T | null; /** @inner */ export declare function isDOMException(value: unknown): value is DOMException; /** @inner */ export declare function isAggregateError(value: unknown): boolean;