@voxpelli/typed-utils
Version:
My personal (type-enabled) utils / helpers
129 lines • 4.92 kB
TypeScript
/**
* @param {boolean} condition
* @param {string} message
* @returns {asserts condition}
*/
export function assert(condition: boolean, message: string): asserts condition;
/**
* @template T
* @param {unknown} actual
* @param {T} expected
* @param {string} [message]
* @returns {asserts actual is T}
* @see https://nodejs.org/api/assert.html#assertstrictequalactual-expected-message
* @see https://www.chaijs.com/api/assert/#method_strictequal
* @see https://www.npmjs.com/package/jest-diff
*/
export function assertStrictEqual<T>(actual: unknown, expected: T, message?: string): asserts actual is T;
/**
* @param {unknown} obj
* @returns {asserts obj is Record<string, unknown>}
*/
export function assertObject(obj: unknown): asserts obj is Record<string, unknown>;
/**
* @template {string} K
* @param {unknown} obj
* @param {K} key
* @returns {asserts obj is Record<K, unknown>}
*/
export function assertObjectWithKey<K extends string>(obj: unknown, key: K): asserts obj is Record<K, unknown>;
/**
* @template {keyof LiteralTypes} T
* @param {unknown} value
* @param {T | T[]} type
* @param {string} [message]
* @returns {asserts value is LiteralTypes[T]}
*/
export function assertType<T extends keyof LiteralTypes>(value: unknown, type: T | T[], message?: string): asserts value is LiteralTypes[T];
/**
* @template {string} K
* @template {keyof LiteralTypes} T
* @param {unknown} obj
* @param {K} key
* @param {T | T[]} type
* @returns {asserts obj is Record<K, LiteralTypes[T]>}
*/
export function assertKeyWithType<K extends string, T extends keyof LiteralTypes>(obj: unknown, key: K, type: T | T[]): asserts obj is Record<K, LiteralTypes[T]>;
/**
* @template {string} K
* @template {keyof LiteralTypes} T
* @param {unknown} obj
* @param {K} key
* @param {T | T[]} type
* @returns {asserts obj is Partial<Record<K, LiteralTypes[T]>>}
*/
export function assertOptionalKeyWithType<K extends string, T extends keyof LiteralTypes>(obj: unknown, key: K, type: T | T[]): asserts obj is Partial<Record<K, LiteralTypes[T]>>;
/**
* @template {string} K
* @template T
* @param {unknown} obj
* @param {K} key
* @param {T} value
* @returns {asserts obj is Record<K, T>}
*/
export function assertKeyWithValue<K extends string, T>(obj: unknown, key: K, value: T): asserts obj is Record<K, T>;
/**
* @template {keyof LiteralTypes} T
* @param {unknown} value
* @param {T | T[]} type
* @param {string} [message]
* @returns {asserts value is Array<LiteralTypes[T]>}
*/
export function assertArrayOfLiteralType<T extends keyof LiteralTypes>(value: unknown, type: T | T[], message?: string): asserts value is Array<LiteralTypes[T]>;
/**
* @template {keyof LiteralTypes} T
* @param {unknown} obj
* @param {T | T[]} type
* @returns {asserts obj is Record<string, LiteralTypes[T]>}
*/
export function assertObjectValueType<T extends keyof LiteralTypes>(obj: unknown, type: T | T[]): asserts obj is Record<string, LiteralTypes[T]>;
/** @import { LiteralTypes } from './types/literal-types.d.ts' */
/** @typedef {((...args: any[]) => any) | (new (...args: any[]) => any)} StackStartFn */
export class TypeHelpersAssertionError extends Error {
/**
* @param {string} message
* @param {{ stackStartFn?: StackStartFn | undefined }} [options]
*/
constructor(message: string, { stackStartFn }?: {
stackStartFn?: StackStartFn | undefined;
});
}
/**
* @template [Actual=unknown]
* @template [Expected=unknown]
* @template [Operator=string]
* @see https://nodejs.org/api/assert.html#class-assertassertionerror
* @see https://www.chaijs.com/api/assert/#method_strictequal
* @see https://github.com/voxpelli/node-test-pretty-reporter#rendering-diffs-from-assertions
*/
export class TypeHelpersAssertionEqualityError<Actual = unknown, Expected = unknown, Operator = string> extends TypeHelpersAssertionError {
/**
* @param {Actual} actual
* @param {Expected} expected
* @param {Operator} operator
* @param {string} message
* @param {{
* diff?: 'simple' | 'full' | undefined,
* showDiff?: boolean | undefined,
* stackStartFn?: StackStartFn | undefined,
* }} [options]
*/
constructor(actual: Actual, expected: Expected, operator: Operator, message: string, { diff, showDiff, stackStartFn, }?: {
diff?: "simple" | "full" | undefined;
showDiff?: boolean | undefined;
stackStartFn?: StackStartFn | undefined;
});
/** @type {Actual} */
actual: Actual;
/** @type {'simple' | 'full'} */
diff: "simple" | "full";
/** @type {Expected} */
expected: Expected;
/** @type {Operator} */
operator: Operator;
/** @type {boolean} */
showDiff: boolean;
}
export type StackStartFn = ((...args: any[]) => any) | (new (...args: any[]) => any);
import type { LiteralTypes } from './types/literal-types.d.ts';
//# sourceMappingURL=assert.d.ts.map