Require Node.js 22
This commit is contained in:
parent
eff8e6b318
commit
faf700367e
6 changed files with 1069 additions and 1067 deletions
7
.github/workflows/main.yml
vendored
7
.github/workflows/main.yml
vendored
|
|
@ -10,10 +10,11 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
node-version:
|
node-version:
|
||||||
- 20
|
- 24
|
||||||
|
- 22
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
- run: npm install
|
- run: npm install
|
||||||
|
|
|
||||||
45
package.json
45
package.json
|
|
@ -17,11 +17,11 @@
|
||||||
},
|
},
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=22"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "del distribution && tsc",
|
"build": "del distribution && tsc",
|
||||||
"test": "tsc --noEmit && xo && ava",
|
"test": "tsc --noEmit && xo && node --experimental-transform-types --test test/test.ts",
|
||||||
"prepare": "npm run build"
|
"prepare": "npm run build"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
|
|
@ -51,31 +51,26 @@
|
||||||
"typeguards",
|
"typeguards",
|
||||||
"types"
|
"types"
|
||||||
],
|
],
|
||||||
|
"xo": {
|
||||||
|
"rules": {
|
||||||
|
"@typescript-eslint/no-unsafe-enum-comparison": "off",
|
||||||
|
"@typescript-eslint/no-confusing-void-expression": "off",
|
||||||
|
"@typescript-eslint/no-unsafe-type-assertion": "off",
|
||||||
|
"@stylistic/operator-linebreak": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sindresorhus/tsconfig": "^6.0.0",
|
"@sindresorhus/tsconfig": "^8.1.0",
|
||||||
"@types/jsdom": "^21.1.7",
|
"@types/jsdom": "^28.0.1",
|
||||||
"@types/node": "^20.14.10",
|
"@types/node": "^25.5.2",
|
||||||
"@types/zen-observable": "^0.8.7",
|
"@types/zen-observable": "^0.8.7",
|
||||||
"ava": "^6.1.3",
|
"del-cli": "^7.0.0",
|
||||||
"del-cli": "^5.1.0",
|
"expect-type": "^1.3.0",
|
||||||
"expect-type": "^0.19.0",
|
"jsdom": "^29.0.2",
|
||||||
"jsdom": "^24.1.0",
|
"rxjs": "^7.8.2",
|
||||||
"rxjs": "^7.8.1",
|
"tempy": "^3.2.0",
|
||||||
"tempy": "^3.1.0",
|
"typescript": "6.0.2",
|
||||||
"tsimp": "2.0.11",
|
"xo": "^2.0.2",
|
||||||
"typescript": "5.5.3",
|
|
||||||
"xo": "^0.58.0",
|
|
||||||
"zen-observable": "^0.10.0"
|
"zen-observable": "^0.10.0"
|
||||||
},
|
|
||||||
"ava": {
|
|
||||||
"environmentVariables": {
|
|
||||||
"TSIMP_DIAG": "error"
|
|
||||||
},
|
|
||||||
"extensions": {
|
|
||||||
"ts": "module"
|
|
||||||
},
|
|
||||||
"nodeArguments": [
|
|
||||||
"--import=tsimp/import"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ import type {
|
||||||
UrlString,
|
UrlString,
|
||||||
WeakRef,
|
WeakRef,
|
||||||
Whitespace,
|
Whitespace,
|
||||||
} from './types.js';
|
} from './types.ts';
|
||||||
import {keysOf} from './utilities.js';
|
import {keysOf} from './utilities.ts';
|
||||||
|
|
||||||
// From type-fest.
|
// From type-fest.
|
||||||
type ExtractFromGlobalConstructors<Name extends string> =
|
type ExtractFromGlobalConstructors<Name extends string> =
|
||||||
|
|
@ -150,7 +150,7 @@ export type AssertionTypeDescription = typeof assertionTypeDescriptions[number];
|
||||||
const getObjectType = (value: unknown): ObjectTypeName | undefined => {
|
const getObjectType = (value: unknown): ObjectTypeName | undefined => {
|
||||||
const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);
|
const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);
|
||||||
|
|
||||||
if (/HTML\w+Element/.test(objectTypeName) && isHtmlElement(value)) {
|
if (/HTML\w+Element/v.test(objectTypeName) && isHtmlElement(value)) {
|
||||||
return 'HTMLElement';
|
return 'HTMLElement';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -166,6 +166,7 @@ function detect(value: unknown): TypeName {
|
||||||
return 'null';
|
return 'null';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
||||||
switch (typeof value) {
|
switch (typeof value) {
|
||||||
case 'undefined': {
|
case 'undefined': {
|
||||||
return 'undefined';
|
return 'undefined';
|
||||||
|
|
@ -211,7 +212,7 @@ function detect(value: unknown): TypeName {
|
||||||
}
|
}
|
||||||
|
|
||||||
const tagType = getObjectType(value);
|
const tagType = getObjectType(value);
|
||||||
if (tagType && tagType !== 'Object') {
|
if (tagType !== undefined && tagType !== 'Object') {
|
||||||
return tagType;
|
return tagType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,7 +220,8 @@ function detect(value: unknown): TypeName {
|
||||||
return 'Promise';
|
return 'Promise';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value instanceof String || value instanceof Boolean || value instanceof Number) {
|
const objectTag = Object.prototype.toString.call(value).slice(8, -1);
|
||||||
|
if (objectTag === 'String' || objectTag === 'Boolean' || objectTag === 'Number') {
|
||||||
throw new TypeError('Please don\'t use object wrappers for primitive types');
|
throw new TypeError('Please don\'t use object wrappers for primitive types');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -466,7 +468,7 @@ export function isBoolean(value: unknown): value is boolean {
|
||||||
return value === true || value === false;
|
return value === true || value === false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
export function isBoundFunction(value: unknown): value is Function {
|
export function isBoundFunction(value: unknown): value is Function {
|
||||||
return isFunction(value) && !Object.hasOwn(value, 'prototype');
|
return isFunction(value) && !Object.hasOwn(value, 'prototype');
|
||||||
}
|
}
|
||||||
|
|
@ -475,12 +477,12 @@ export function isBoundFunction(value: unknown): value is Function {
|
||||||
Note: [Prefer using `Uint8Array` instead of `Buffer`.](https://sindresorhus.com/blog/goodbye-nodejs-buffer)
|
Note: [Prefer using `Uint8Array` instead of `Buffer`.](https://sindresorhus.com/blog/goodbye-nodejs-buffer)
|
||||||
*/
|
*/
|
||||||
export function isBuffer(value: unknown): value is NodeBuffer {
|
export function isBuffer(value: unknown): value is NodeBuffer {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
||||||
return (value as any)?.constructor?.isBuffer?.(value) ?? false;
|
return (value as any)?.constructor?.isBuffer?.(value) ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isClass<T = unknown>(value: unknown): value is Class<T> {
|
export function isClass<T = unknown>(value: unknown): value is Class<T> {
|
||||||
return isFunction(value) && /^class(\s+|{)/.test(value.toString());
|
return isFunction(value) && /^class(?:\s+|\{)/v.test(value.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isDataView(value: unknown): value is DataView {
|
export function isDataView(value: unknown): value is DataView {
|
||||||
|
|
@ -556,7 +558,7 @@ export function isFormData(value: unknown): value is FormData {
|
||||||
return getObjectType(value) === 'FormData';
|
return getObjectType(value) === 'FormData';
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
export function isFunction(value: unknown): value is Function {
|
export function isFunction(value: unknown): value is Function {
|
||||||
return typeof value === 'function';
|
return typeof value === 'function';
|
||||||
}
|
}
|
||||||
|
|
@ -569,11 +571,9 @@ export function isGeneratorFunction(value: unknown): value is GeneratorFunction
|
||||||
return getObjectType(value) === 'GeneratorFunction';
|
return getObjectType(value) === 'GeneratorFunction';
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
const NODE_TYPE_ELEMENT = 1; // eslint-disable-line @typescript-eslint/naming-convention
|
||||||
const NODE_TYPE_ELEMENT = 1;
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
const DOM_PROPERTIES_TO_CHECK: Array<(keyof HTMLElement)> = [ // eslint-disable-line @typescript-eslint/naming-convention
|
||||||
const DOM_PROPERTIES_TO_CHECK: Array<(keyof HTMLElement)> = [
|
|
||||||
'innerHTML',
|
'innerHTML',
|
||||||
'ownerDocument',
|
'ownerDocument',
|
||||||
'style',
|
'style',
|
||||||
|
|
@ -673,12 +673,12 @@ export function isNonEmptyStringAndNotWhitespace(value: unknown): value is NonEm
|
||||||
return isString(value) && !isEmptyStringOrWhitespace(value);
|
return isString(value) && !isEmptyStringOrWhitespace(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function isNull(value: unknown): value is null {
|
export function isNull(value: unknown): value is null {
|
||||||
return value === null;
|
return value === null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function isNullOrUndefined(value: unknown): value is null | undefined {
|
export function isNullOrUndefined(value: unknown): value is null | undefined {
|
||||||
return isNull(value) || isUndefined(value);
|
return isNull(value) || isUndefined(value);
|
||||||
}
|
}
|
||||||
|
|
@ -691,7 +691,7 @@ export function isNumericString(value: unknown): value is `${number}` {
|
||||||
return isString(value) && !isEmptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
|
return isString(value) && !isEmptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function isObject(value: unknown): value is object {
|
export function isObject(value: unknown): value is object {
|
||||||
return !isNull(value) && (typeof value === 'object' || isFunction(value));
|
return !isNull(value) && (typeof value === 'object' || isFunction(value));
|
||||||
}
|
}
|
||||||
|
|
@ -701,12 +701,12 @@ export function isObservable(value: unknown): value is ObservableLike {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line no-use-extend-native/no-use-extend-native, @typescript-eslint/no-unsafe-call
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
||||||
if (Symbol.observable !== undefined && value === (value as any)[Symbol.observable]?.()) {
|
if (Symbol.observable !== undefined && value === (value as any)[Symbol.observable]?.()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
||||||
if (value === (value as any)['@@observable']?.()) {
|
if (value === (value as any)['@@observable']?.()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -777,8 +777,8 @@ export function isTruthy<T>(value: T | Falsy): value is T {
|
||||||
return Boolean(value);
|
return Boolean(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
type ResolveTypesOfTypeGuardsTuple<TypeGuardsOfT, ResultOfT extends unknown[] = [] > =
|
type ResolveTypesOfTypeGuardsTuple<TypeGuardsOfT, ResultOfT extends unknown[] = []> =
|
||||||
TypeGuardsOfT extends [TypeGuard<infer U>, ...infer TOthers]
|
TypeGuardsOfT extends [TypeGuard<infer U>, ...infer TOthers]
|
||||||
? ResolveTypesOfTypeGuardsTuple<TOthers, [...ResultOfT, U]>
|
? ResolveTypesOfTypeGuardsTuple<TOthers, [...ResultOfT, U]>
|
||||||
: TypeGuardsOfT extends undefined[]
|
: TypeGuardsOfT extends undefined[]
|
||||||
|
|
@ -847,23 +847,23 @@ export function isValidLength(value: unknown): value is number {
|
||||||
return isSafeInteger(value) && value >= 0;
|
return isSafeInteger(value) && value >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function isWeakMap<Key extends object = object, Value = unknown>(value: unknown): value is WeakMap<Key, Value> {
|
export function isWeakMap<Key extends object = object, Value = unknown>(value: unknown): value is WeakMap<Key, Value> {
|
||||||
return getObjectType(value) === 'WeakMap';
|
return getObjectType(value) === 'WeakMap';
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function isWeakRef(value: unknown): value is WeakRef<object> {
|
export function isWeakRef(value: unknown): value is WeakRef<object> {
|
||||||
return getObjectType(value) === 'WeakRef';
|
return getObjectType(value) === 'WeakRef';
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function isWeakSet(value: unknown): value is WeakSet<object> {
|
export function isWeakSet(value: unknown): value is WeakSet<object> {
|
||||||
return getObjectType(value) === 'WeakSet';
|
return getObjectType(value) === 'WeakSet';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isWhitespaceString(value: unknown): value is Whitespace {
|
export function isWhitespaceString(value: unknown): value is Whitespace {
|
||||||
return isString(value) && /^\s+$/.test(value);
|
return isString(value) && /^\s+$/v.test(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
type ArrayMethod = (function_: (value: unknown, index: number, array: unknown[]) => boolean, thisArgument?: unknown) => boolean;
|
type ArrayMethod = (function_: (value: unknown, index: number, array: unknown[]) => boolean, thisArgument?: unknown) => boolean;
|
||||||
|
|
@ -907,9 +907,9 @@ type Assert = {
|
||||||
positiveNumber: (value: unknown, message?: string) => asserts value is number;
|
positiveNumber: (value: unknown, message?: string) => asserts value is number;
|
||||||
negativeNumber: (value: unknown, message?: string) => asserts value is number;
|
negativeNumber: (value: unknown, message?: string) => asserts value is number;
|
||||||
bigint: (value: unknown, message?: string) => asserts value is bigint;
|
bigint: (value: unknown, message?: string) => asserts value is bigint;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
function: (value: unknown, message?: string) => asserts value is Function;
|
function: (value: unknown, message?: string) => asserts value is Function;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
null: (value: unknown, message?: string) => asserts value is null;
|
null: (value: unknown, message?: string) => asserts value is null;
|
||||||
class: <T = unknown>(value: unknown, message?: string) => asserts value is Class<T>;
|
class: <T = unknown>(value: unknown, message?: string) => asserts value is Class<T>;
|
||||||
boolean: (value: unknown, message?: string) => asserts value is boolean;
|
boolean: (value: unknown, message?: string) => asserts value is boolean;
|
||||||
|
|
@ -918,7 +918,7 @@ type Assert = {
|
||||||
array: <T = unknown>(value: unknown, assertion?: (element: unknown) => asserts element is T, message?: string) => asserts value is T[];
|
array: <T = unknown>(value: unknown, assertion?: (element: unknown) => asserts element is T, message?: string) => asserts value is T[];
|
||||||
buffer: (value: unknown, message?: string) => asserts value is NodeBuffer;
|
buffer: (value: unknown, message?: string) => asserts value is NodeBuffer;
|
||||||
blob: (value: unknown, message?: string) => asserts value is Blob;
|
blob: (value: unknown, message?: string) => asserts value is Blob;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
nullOrUndefined: (value: unknown, message?: string) => asserts value is null | undefined;
|
nullOrUndefined: (value: unknown, message?: string) => asserts value is null | undefined;
|
||||||
object: <Key extends keyof any = string, Value = unknown>(value: unknown, message?: string) => asserts value is Record<Key, Value>;
|
object: <Key extends keyof any = string, Value = unknown>(value: unknown, message?: string) => asserts value is Record<Key, Value>;
|
||||||
iterable: <T = unknown>(value: unknown, message?: string) => asserts value is Iterable<T>;
|
iterable: <T = unknown>(value: unknown, message?: string) => asserts value is Iterable<T>;
|
||||||
|
|
@ -929,20 +929,20 @@ type Assert = {
|
||||||
promise: <T = unknown>(value: unknown, message?: string) => asserts value is Promise<T>;
|
promise: <T = unknown>(value: unknown, message?: string) => asserts value is Promise<T>;
|
||||||
generatorFunction: (value: unknown, message?: string) => asserts value is GeneratorFunction;
|
generatorFunction: (value: unknown, message?: string) => asserts value is GeneratorFunction;
|
||||||
asyncGeneratorFunction: (value: unknown, message?: string) => asserts value is AsyncGeneratorFunction;
|
asyncGeneratorFunction: (value: unknown, message?: string) => asserts value is AsyncGeneratorFunction;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
asyncFunction: (value: unknown, message?: string) => asserts value is Function;
|
asyncFunction: (value: unknown, message?: string) => asserts value is Function;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
boundFunction: (value: unknown, message?: string) => asserts value is Function;
|
boundFunction: (value: unknown, message?: string) => asserts value is Function;
|
||||||
regExp: (value: unknown, message?: string) => asserts value is RegExp;
|
regExp: (value: unknown, message?: string) => asserts value is RegExp;
|
||||||
date: (value: unknown, message?: string) => asserts value is Date;
|
date: (value: unknown, message?: string) => asserts value is Date;
|
||||||
error: (value: unknown, message?: string) => asserts value is Error;
|
error: (value: unknown, message?: string) => asserts value is Error;
|
||||||
map: <Key = unknown, Value = unknown>(value: unknown, message?: string) => asserts value is Map<Key, Value>;
|
map: <Key = unknown, Value = unknown>(value: unknown, message?: string) => asserts value is Map<Key, Value>;
|
||||||
set: <T = unknown>(value: unknown, message?: string) => asserts value is Set<T>;
|
set: <T = unknown>(value: unknown, message?: string) => asserts value is Set<T>;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
weakMap: <Key extends object = object, Value = unknown>(value: unknown, message?: string) => asserts value is WeakMap<Key, Value>;
|
weakMap: <Key extends object = object, Value = unknown>(value: unknown, message?: string) => asserts value is WeakMap<Key, Value>;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
weakSet: <T extends object = object>(value: unknown, message?: string) => asserts value is WeakSet<T>;
|
weakSet: <T extends object = object>(value: unknown, message?: string) => asserts value is WeakSet<T>;
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
weakRef: <T extends object = object>(value: unknown, message?: string) => asserts value is WeakRef<T>;
|
weakRef: <T extends object = object>(value: unknown, message?: string) => asserts value is WeakRef<T>;
|
||||||
int8Array: (value: unknown, message?: string) => asserts value is Int8Array;
|
int8Array: (value: unknown, message?: string) => asserts value is Int8Array;
|
||||||
uint8Array: (value: unknown, message?: string) => asserts value is Uint8Array;
|
uint8Array: (value: unknown, message?: string) => asserts value is Uint8Array;
|
||||||
|
|
@ -1261,7 +1261,7 @@ export function assertArrayLike<T = unknown>(value: unknown, message?: string):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
export function assertAsyncFunction(value: unknown, message?: string): asserts value is Function {
|
export function assertAsyncFunction(value: unknown, message?: string): asserts value is Function {
|
||||||
if (!isAsyncFunction(value)) {
|
if (!isAsyncFunction(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('AsyncFunction', value));
|
throw new TypeError(message ?? typeErrorMessage('AsyncFunction', value));
|
||||||
|
|
@ -1316,7 +1316,7 @@ export function assertBoolean(value: unknown, message?: string): asserts value i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
export function assertBoundFunction(value: unknown, message?: string): asserts value is Function {
|
export function assertBoundFunction(value: unknown, message?: string): asserts value is Function {
|
||||||
if (!isBoundFunction(value)) {
|
if (!isBoundFunction(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('Function', value));
|
throw new TypeError(message ?? typeErrorMessage('Function', value));
|
||||||
|
|
@ -1434,7 +1434,7 @@ export function assertFormData(value: unknown, message?: string): asserts value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
||||||
export function assertFunction(value: unknown, message?: string): asserts value is Function {
|
export function assertFunction(value: unknown, message?: string): asserts value is Function {
|
||||||
if (!isFunction(value)) {
|
if (!isFunction(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('Function', value));
|
throw new TypeError(message ?? typeErrorMessage('Function', value));
|
||||||
|
|
@ -1567,14 +1567,14 @@ export function assertNonEmptyStringAndNotWhitespace(value: unknown, message?: s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function assertNull(value: unknown, message?: string): asserts value is null {
|
export function assertNull(value: unknown, message?: string): asserts value is null {
|
||||||
if (!isNull(value)) {
|
if (!isNull(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('null', value));
|
throw new TypeError(message ?? typeErrorMessage('null', value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function assertNullOrUndefined(value: unknown, message?: string): asserts value is null | undefined {
|
export function assertNullOrUndefined(value: unknown, message?: string): asserts value is null | undefined {
|
||||||
if (!isNullOrUndefined(value)) {
|
if (!isNullOrUndefined(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('null or undefined', value));
|
throw new TypeError(message ?? typeErrorMessage('null or undefined', value));
|
||||||
|
|
@ -1593,7 +1593,7 @@ export function assertNumericString(value: unknown, message?: string): asserts v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function assertObject(value: unknown, message?: string): asserts value is object {
|
export function assertObject(value: unknown, message?: string): asserts value is object {
|
||||||
if (!isObject(value)) {
|
if (!isObject(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('Object', value));
|
throw new TypeError(message ?? typeErrorMessage('Object', value));
|
||||||
|
|
@ -1757,21 +1757,21 @@ export function assertValidLength(value: unknown, message?: string): asserts val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function assertWeakMap<Key extends object = object, Value = unknown>(value: unknown, message?: string): asserts value is WeakMap<Key, Value> {
|
export function assertWeakMap<Key extends object = object, Value = unknown>(value: unknown, message?: string): asserts value is WeakMap<Key, Value> {
|
||||||
if (!isWeakMap(value)) {
|
if (!isWeakMap(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('WeakMap', value));
|
throw new TypeError(message ?? typeErrorMessage('WeakMap', value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function assertWeakRef<T extends object = object>(value: unknown, message?: string): asserts value is WeakRef<T> {
|
export function assertWeakRef<T extends object = object>(value: unknown, message?: string): asserts value is WeakRef<T> {
|
||||||
if (!isWeakRef(value)) {
|
if (!isWeakRef(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('WeakRef', value));
|
throw new TypeError(message ?? typeErrorMessage('WeakRef', value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export function assertWeakSet<T extends object = object>(value: unknown, message?: string): asserts value is WeakSet<T> {
|
export function assertWeakSet<T extends object = object>(value: unknown, message?: string): asserts value is WeakSet<T> {
|
||||||
if (!isWeakSet(value)) {
|
if (!isWeakSet(value)) {
|
||||||
throw new TypeError(message ?? typeErrorMessage('WeakSet', value));
|
throw new TypeError(message ?? typeErrorMessage('WeakSet', value));
|
||||||
|
|
@ -1795,4 +1795,4 @@ export type {
|
||||||
Primitive,
|
Primitive,
|
||||||
TypedArray,
|
TypedArray,
|
||||||
UrlString,
|
UrlString,
|
||||||
} from './types.js';
|
} from './types.ts';
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
|
Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
|
||||||
*/
|
*/
|
||||||
export type Primitive =
|
export type Primitive =
|
||||||
| null // eslint-disable-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
|
| null
|
||||||
| undefined
|
| undefined
|
||||||
| string
|
| string
|
||||||
| number
|
| number
|
||||||
|
|
@ -53,10 +54,11 @@ export type ObservableLike = {
|
||||||
[Symbol.observable](): ObservableLike;
|
[Symbol.observable](): ObservableLike;
|
||||||
};
|
};
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
export type Falsy = false | 0 | 0n | '' | null | undefined;
|
export type Falsy = false | 0 | 0n | '' | null | undefined;
|
||||||
|
|
||||||
export type WeakRef<T extends object> = { // eslint-disable-line @typescript-eslint/ban-types, unicorn/prevent-abbreviations
|
// eslint-disable-next-line @typescript-eslint/no-restricted-types
|
||||||
|
export type WeakRef<T extends object> = {
|
||||||
readonly [Symbol.toStringTag]: 'WeakRef';
|
readonly [Symbol.toStringTag]: 'WeakRef';
|
||||||
deref(): T | undefined;
|
deref(): T | undefined;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
1982
test/test.ts
1982
test/test.ts
File diff suppressed because it is too large
Load diff
|
|
@ -1,5 +1,11 @@
|
||||||
{
|
{
|
||||||
"extends": "@sindresorhus/tsconfig",
|
"extends": "@sindresorhus/tsconfig",
|
||||||
|
"compilerOptions": {
|
||||||
|
"types": ["node"],
|
||||||
|
"rootDir": "source",
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
|
"rewriteRelativeImportExtensions": true
|
||||||
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"source"
|
"source"
|
||||||
],
|
],
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue