Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
202 lines
8.1 KiB
Plaintext
202 lines
8.1 KiB
Plaintext
/// <reference types="node" />
|
|
import { inspect } from "util";
|
|
/**
|
|
* The default export of the "ono" module.
|
|
*/
|
|
export interface OnoSingleton extends Ono<Error> {
|
|
error: Ono<Error>;
|
|
eval: Ono<EvalError>;
|
|
range: Ono<RangeError>;
|
|
reference: Ono<ReferenceError>;
|
|
syntax: Ono<SyntaxError>;
|
|
type: Ono<TypeError>;
|
|
uri: Ono<URIError>;
|
|
}
|
|
/**
|
|
* Creates an `Ono` instance for a specifc error type.
|
|
*/
|
|
export interface OnoConstructor {
|
|
<T extends ErrorLike>(constructor: ErrorLikeConstructor<T>, options?: OnoOptions): Ono<T>;
|
|
new <T extends ErrorLike>(constructor: ErrorLikeConstructor<T>, options?: OnoOptions): Ono<T>;
|
|
/**
|
|
* Returns an object containing all properties of the given Error object,
|
|
* which can be used with `JSON.stringify()`.
|
|
*/
|
|
toJSON<E extends ErrorLike>(error: E): ErrorPOJO & E;
|
|
/**
|
|
* Extends the given Error object with enhanced Ono functionality, such as improved support for
|
|
* `JSON.stringify()`.
|
|
*
|
|
* @param error - The error object to extend. This object instance will be modified and returned.
|
|
*/
|
|
extend<T extends ErrorLike>(error: T): T & OnoError<T>;
|
|
/**
|
|
* Extends the given Error object with enhanced Ono functionality, such as additional properties
|
|
* and improved support for `JSON.stringify()`.
|
|
*
|
|
* @param error - The error object to extend. This object instance will be modified and returned.
|
|
* @param props - An object whose properties will be added to the error
|
|
*/
|
|
extend<T extends ErrorLike, P extends object>(error: T, props?: P): T & P & OnoError<T & P>;
|
|
/**
|
|
* Extends the given Error object with enhanced Ono functionality, such as nested stack traces
|
|
* and improved support for `JSON.stringify()`.
|
|
*
|
|
* @param error - The error object to extend. This object instance will be modified and returned.
|
|
* @param originalError - The original error. This error's stack trace will be added to the error's stack trace.
|
|
*/
|
|
extend<T extends ErrorLike, E extends ErrorLike>(error: T, originalError?: E): T & E & OnoError<T & E>;
|
|
/**
|
|
* Extends the given Error object with enhanced Ono functionality, such as nested stack traces,
|
|
* additional properties, and improved support for `JSON.stringify()`.
|
|
*
|
|
* @param error - The error object to extend. This object instance will be modified and returned.
|
|
* @param originalError - The original error. This error's stack trace will be added to the error's stack trace.
|
|
* @param props - An object whose properties will be added to the error
|
|
*/
|
|
extend<T extends ErrorLike, E extends ErrorLike, P extends object>(error: T, originalError?: E, props?: P): T & E & P & OnoError<T & E & P>;
|
|
}
|
|
/**
|
|
* An `Ono` is a function that creates errors of a specific type.
|
|
*/
|
|
export interface Ono<T extends ErrorLike> {
|
|
/**
|
|
* The type of Error that this `Ono` function produces.
|
|
*/
|
|
readonly [Symbol.species]: ErrorLikeConstructor<T>;
|
|
/**
|
|
* Creates a new error with the message, stack trace, and properties of another error.
|
|
*
|
|
* @param error - The original error
|
|
*/
|
|
<E extends ErrorLike>(error: E): T & E & OnoError<T & E>;
|
|
/**
|
|
* Creates a new error with the message, stack trace, and properties of another error,
|
|
* as well as aditional properties.
|
|
*
|
|
* @param error - The original error
|
|
* @param props - An object whose properties will be added to the returned error
|
|
*/
|
|
<E extends ErrorLike, P extends object>(error: E, props: P): T & E & P & OnoError<T & E & P>;
|
|
/**
|
|
* Creates a new error with a formatted message and the stack trace and properties of another error.
|
|
*
|
|
* @param error - The original error
|
|
* @param message - The new error message, possibly including argument placeholders
|
|
* @param params - Optional arguments to replace the corresponding placeholders in the message
|
|
*/
|
|
<E extends ErrorLike>(error: E, message: string, ...params: unknown[]): T & E & OnoError<T & E>;
|
|
/**
|
|
* Creates a new error with a formatted message and the stack trace and properties of another error,
|
|
* as well as additional properties.
|
|
*
|
|
* @param error - The original error
|
|
* @param props - An object whose properties will be added to the returned error
|
|
* @param message - The new error message, possibly including argument placeholders
|
|
* @param params - Optional arguments to replace the corresponding placeholders in the message
|
|
*/
|
|
<E extends ErrorLike, P extends object>(error: E, props: P, message: string, ...params: unknown[]): T & E & P & OnoError<T & E & P>;
|
|
/**
|
|
* Creates an error with a formatted message.
|
|
*
|
|
* @param message - The new error message, possibly including argument placeholders
|
|
* @param params - Optional arguments to replace the corresponding placeholders in the message
|
|
*/
|
|
(message: string, ...params: unknown[]): T & OnoError<T>;
|
|
/**
|
|
* Creates an error with additional properties.
|
|
*
|
|
* @param props - An object whose properties will be added to the returned error
|
|
*/
|
|
<P extends object>(props: P): T & P & OnoError<T & P>;
|
|
/**
|
|
* Creates an error with a formatted message and additional properties.
|
|
*
|
|
* @param props - An object whose properties will be added to the returned error
|
|
* @param message - The new error message, possibly including argument placeholders
|
|
* @param params - Optional arguments to replace the corresponding placeholders in the message
|
|
*/
|
|
<P extends object>(props: P, message: string, ...params: unknown[]): T & P & OnoError<T & P>;
|
|
}
|
|
/**
|
|
* All error objects returned by Ono have these properties.
|
|
*/
|
|
export interface OnoError<T> extends ErrorPOJO {
|
|
/**
|
|
* Returns a JSON representation of the error, including all built-in error properties,
|
|
* as well as properties that were dynamically added.
|
|
*/
|
|
toJSON(): ErrorPOJO & T;
|
|
/**
|
|
* Returns a representation of the error for Node's `util.inspect()` method.
|
|
*
|
|
* @see https://nodejs.org/api/util.html#util_custom_inspection_functions_on_objects
|
|
*/
|
|
[inspect.custom](): ErrorPOJO & T;
|
|
}
|
|
/**
|
|
* An error object that doesn't inherit from the `Error` class, such as `DOMError`, `DOMException`,
|
|
* and some third-party error types.
|
|
*/
|
|
export interface ErrorPOJO {
|
|
message?: string;
|
|
stack?: string;
|
|
name?: string;
|
|
}
|
|
/**
|
|
* Any object that "looks like" an `Error` object.
|
|
*/
|
|
export declare type ErrorLike = Error | ErrorPOJO;
|
|
/**
|
|
* A constructor for `ErrorLike` objects.
|
|
*/
|
|
export declare type ErrorLikeConstructor<T extends ErrorLike> = ErrorLikeConstructorFunction<T> | ErrorLikeConstructorClass<T>;
|
|
/**
|
|
* A constructor function for `ErrorLike` objects.
|
|
* Constructor functions can be called without the `new` keyword.
|
|
*
|
|
* @example
|
|
* throw TypeError();
|
|
*/
|
|
export interface ErrorLikeConstructorFunction<T extends ErrorLike> {
|
|
readonly prototype: T;
|
|
(): T;
|
|
}
|
|
/**
|
|
* A constructor class for `ErrorLike` objects.
|
|
* Constructor classes must be called with the `new` keyword.
|
|
*
|
|
* @example
|
|
* throw new TypeError();
|
|
*/
|
|
export interface ErrorLikeConstructorClass<T extends ErrorLike> {
|
|
readonly prototype: T;
|
|
new (...args: unknown[]): T;
|
|
}
|
|
/**
|
|
* Options that determine the behavior of an `Ono` instance.
|
|
*/
|
|
export interface OnoOptions {
|
|
/**
|
|
* When `Ono` is used to wrap an error, this setting determines whether the inner error's message
|
|
* is appended to the new error message.
|
|
*
|
|
* Defaults to `true`.
|
|
*/
|
|
concatMessages?: boolean;
|
|
/**
|
|
* A function that replaces placeholders like "%s" or "%d" in error messages with values.
|
|
* If set to `false`, then error messages will be treated as literals and no placeholder replacement will occur.
|
|
*
|
|
* Defaults to `utils.inspect()` in Node.js. Defaults to `Array.join()` in browsers.
|
|
*/
|
|
format?: MessageFormatter | false;
|
|
}
|
|
/**
|
|
* A function that accepts a message template and arguments to replace template parameters.
|
|
*
|
|
* @example
|
|
* format("Hello, %s! You have %d unread messages.", "John", 5);
|
|
*/
|
|
export declare type MessageFormatter = (message: string, ...args: unknown[]) => string;
|