forked from orbit-oss/is
Add .weakRef() (#165)
Co-authored-by: Sindre Sorhus <sindresorhus@gmail.com>
This commit is contained in:
parent
06d217f70c
commit
e503a9ec49
4 changed files with 23 additions and 2 deletions
|
|
@ -1,5 +1,5 @@
|
|||
import type {Buffer} from 'node:buffer';
|
||||
import type {Class, Falsy, TypedArray, ObservableLike, Primitive} from './types.js';
|
||||
import type {Class, Falsy, TypedArray, ObservableLike, Primitive, WeakRef} from './types.js';
|
||||
|
||||
const typedArrayTypeNames = [
|
||||
'Int8Array',
|
||||
|
|
@ -40,6 +40,7 @@ const objectTypeNames = [
|
|||
'Set',
|
||||
'WeakMap',
|
||||
'WeakSet',
|
||||
'WeakRef',
|
||||
'ArrayBuffer',
|
||||
'SharedArrayBuffer',
|
||||
'DataView',
|
||||
|
|
@ -230,6 +231,8 @@ is.weakMap = <Key extends object = object, Value = unknown>(value: unknown): val
|
|||
|
||||
is.weakSet = (value: unknown): value is WeakSet<object> => isObjectOfType<WeakSet<object>>('WeakSet')(value); // eslint-disable-line @typescript-eslint/ban-types
|
||||
|
||||
is.weakRef = (value: unknown): value is WeakRef<object> => isObjectOfType<WeakRef<object>>('WeakRef')(value); // eslint-disable-line @typescript-eslint/ban-types
|
||||
|
||||
is.int8Array = isObjectOfType<Int8Array>('Int8Array');
|
||||
is.uint8Array = isObjectOfType<Uint8Array>('Uint8Array');
|
||||
is.uint8ClampedArray = isObjectOfType<Uint8ClampedArray>('Uint8ClampedArray');
|
||||
|
|
@ -524,6 +527,7 @@ interface Assert {
|
|||
set: <T = unknown>(value: unknown) => asserts value is Set<T>;
|
||||
weakMap: <Key extends object = object, Value = unknown>(value: unknown) => asserts value is WeakMap<Key, Value>; // eslint-disable-line @typescript-eslint/ban-types
|
||||
weakSet: <T extends object = object>(value: unknown) => asserts value is WeakSet<T>; // eslint-disable-line @typescript-eslint/ban-types
|
||||
weakRef: <T extends object = object>(value: unknown) => asserts value is WeakRef<T>; // eslint-disable-line @typescript-eslint/ban-types
|
||||
int8Array: (value: unknown) => asserts value is Int8Array;
|
||||
uint8Array: (value: unknown) => asserts value is Uint8Array;
|
||||
uint8ClampedArray: (value: unknown) => asserts value is Uint8ClampedArray;
|
||||
|
|
@ -629,6 +633,7 @@ export const assert: Assert = {
|
|||
set: <T = unknown>(value: unknown): asserts value is Set<T> => assertType(is.set(value), 'Set', value),
|
||||
weakMap: <Key extends object = object, Value = unknown>(value: unknown): asserts value is WeakMap<Key, Value> => assertType(is.weakMap(value), 'WeakMap', value), // eslint-disable-line @typescript-eslint/ban-types
|
||||
weakSet: <T extends object = object>(value: unknown): asserts value is WeakSet<T> => assertType(is.weakSet(value), 'WeakSet', value), // eslint-disable-line @typescript-eslint/ban-types
|
||||
weakRef: <T extends object = object>(value: unknown): asserts value is WeakRef<T> => assertType(is.weakRef(value), 'WeakRef', value), // eslint-disable-line @typescript-eslint/ban-types
|
||||
int8Array: (value: unknown): asserts value is Int8Array => assertType(is.int8Array(value), 'Int8Array', value),
|
||||
uint8Array: (value: unknown): asserts value is Uint8Array => assertType(is.uint8Array(value), 'Uint8Array', value),
|
||||
uint8ClampedArray: (value: unknown): asserts value is Uint8ClampedArray => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),
|
||||
|
|
|
|||
|
|
@ -49,3 +49,8 @@ export interface ObservableLike {
|
|||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
export type Falsy = false | 0 | 0n | '' | null | undefined;
|
||||
|
||||
export interface WeakRef<T extends object> { // eslint-disable-line @typescript-eslint/ban-types
|
||||
readonly [Symbol.toStringTag]: 'WeakRef';
|
||||
deref(): T | undefined;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue