index.d.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. /// <reference types="node" />
  2. /// <reference lib="es2018" />
  3. /// <reference lib="dom" />
  4. import { Class, Falsy, TypedArray, ObservableLike, Primitive } from './types';
  5. declare const objectTypeNames: readonly ["Function", "Generator", "AsyncGenerator", "GeneratorFunction", "AsyncGeneratorFunction", "AsyncFunction", "Observable", "Array", "Buffer", "Blob", "Object", "RegExp", "Date", "Error", "Map", "Set", "WeakMap", "WeakSet", "ArrayBuffer", "SharedArrayBuffer", "DataView", "Promise", "URL", "FormData", "URLSearchParams", "HTMLElement", ...("Int8Array" | "Uint8Array" | "Uint8ClampedArray" | "Int16Array" | "Uint16Array" | "Int32Array" | "Uint32Array" | "Float32Array" | "Float64Array" | "BigInt64Array" | "BigUint64Array")[]];
  6. declare type ObjectTypeName = typeof objectTypeNames[number];
  7. declare const primitiveTypeNames: readonly ["null", "undefined", "string", "number", "bigint", "boolean", "symbol"];
  8. declare type PrimitiveTypeName = typeof primitiveTypeNames[number];
  9. export declare type TypeName = ObjectTypeName | PrimitiveTypeName;
  10. declare function is(value: unknown): TypeName;
  11. declare namespace is {
  12. var undefined: (value: unknown) => value is undefined;
  13. var string: (value: unknown) => value is string;
  14. var number: (value: unknown) => value is number;
  15. var bigint: (value: unknown) => value is bigint;
  16. var function_: (value: unknown) => value is Function;
  17. var null_: (value: unknown) => value is null;
  18. var class_: (value: unknown) => value is Class<unknown, any[]>;
  19. var boolean: (value: unknown) => value is boolean;
  20. var symbol: (value: unknown) => value is symbol;
  21. var numericString: (value: unknown) => value is string;
  22. var array: <T = unknown>(value: unknown, assertion?: ((value: T) => value is T) | undefined) => value is T[];
  23. var buffer: (value: unknown) => value is Buffer;
  24. var blob: (value: unknown) => value is Blob;
  25. var nullOrUndefined: (value: unknown) => value is null | undefined;
  26. var object: (value: unknown) => value is object;
  27. var iterable: <T = unknown>(value: unknown) => value is Iterable<T>;
  28. var asyncIterable: <T = unknown>(value: unknown) => value is AsyncIterable<T>;
  29. var generator: (value: unknown) => value is Generator<unknown, any, unknown>;
  30. var asyncGenerator: (value: unknown) => value is AsyncGenerator<unknown, any, unknown>;
  31. var nativePromise: <T = unknown>(value: unknown) => value is Promise<T>;
  32. var promise: <T = unknown>(value: unknown) => value is Promise<T>;
  33. var generatorFunction: (value: unknown) => value is GeneratorFunction;
  34. var asyncGeneratorFunction: (value: unknown) => value is (...args: any[]) => Promise<unknown>;
  35. var asyncFunction: <T = unknown>(value: unknown) => value is (...args: any[]) => Promise<T>;
  36. var boundFunction: (value: unknown) => value is Function;
  37. var regExp: (value: unknown) => value is RegExp;
  38. var date: (value: unknown) => value is Date;
  39. var error: (value: unknown) => value is Error;
  40. var map: <Key = unknown, Value = unknown>(value: unknown) => value is Map<Key, Value>;
  41. var set: <T = unknown>(value: unknown) => value is Set<T>;
  42. var weakMap: <Key extends object = object, Value = unknown>(value: unknown) => value is WeakMap<Key, Value>;
  43. var weakSet: (value: unknown) => value is WeakSet<object>;
  44. var int8Array: (value: unknown) => value is Int8Array;
  45. var uint8Array: (value: unknown) => value is Uint8Array;
  46. var uint8ClampedArray: (value: unknown) => value is Uint8ClampedArray;
  47. var int16Array: (value: unknown) => value is Int16Array;
  48. var uint16Array: (value: unknown) => value is Uint16Array;
  49. var int32Array: (value: unknown) => value is Int32Array;
  50. var uint32Array: (value: unknown) => value is Uint32Array;
  51. var float32Array: (value: unknown) => value is Float32Array;
  52. var float64Array: (value: unknown) => value is Float64Array;
  53. var bigInt64Array: (value: unknown) => value is BigInt64Array;
  54. var bigUint64Array: (value: unknown) => value is BigUint64Array;
  55. var arrayBuffer: (value: unknown) => value is ArrayBuffer;
  56. var sharedArrayBuffer: (value: unknown) => value is SharedArrayBuffer;
  57. var dataView: (value: unknown) => value is DataView;
  58. var enumCase: <T = unknown>(value: unknown, targetEnum: T) => boolean;
  59. var directInstanceOf: <T>(instance: unknown, class_: Class<T, any[]>) => instance is T;
  60. var urlInstance: (value: unknown) => value is URL;
  61. var urlString: (value: unknown) => value is string;
  62. var truthy: <T>(value: false | "" | 0 | 0n | T | null | undefined) => value is T;
  63. var falsy: <T>(value: false | "" | 0 | 0n | T | null | undefined) => value is Falsy;
  64. var nan: (value: unknown) => boolean;
  65. var primitive: (value: unknown) => value is Primitive;
  66. var integer: (value: unknown) => value is number;
  67. var safeInteger: (value: unknown) => value is number;
  68. var plainObject: <Value = unknown>(value: unknown) => value is Record<string | number | symbol, Value>;
  69. var typedArray: (value: unknown) => value is TypedArray;
  70. var arrayLike: <T = unknown>(value: unknown) => value is ArrayLike<T>;
  71. var inRange: (value: number, range: number | number[]) => value is number;
  72. var domElement: (value: unknown) => value is HTMLElement;
  73. var observable: (value: unknown) => value is ObservableLike;
  74. var nodeStream: (value: unknown) => value is NodeStream;
  75. var infinite: (value: unknown) => value is number;
  76. var evenInteger: (value: number) => value is number;
  77. var oddInteger: (value: number) => value is number;
  78. var emptyArray: (value: unknown) => value is never[];
  79. var nonEmptyArray: (value: unknown) => value is unknown[];
  80. var emptyString: (value: unknown) => value is "";
  81. var emptyStringOrWhitespace: (value: unknown) => value is string;
  82. var nonEmptyString: (value: unknown) => value is string;
  83. var nonEmptyStringAndNotWhitespace: (value: unknown) => value is string;
  84. var emptyObject: <Key extends string | number | symbol = string>(value: unknown) => value is Record<Key, never>;
  85. var nonEmptyObject: <Key extends string | number | symbol = string, Value = unknown>(value: unknown) => value is Record<Key, Value>;
  86. var emptySet: (value: unknown) => value is Set<never>;
  87. var nonEmptySet: <T = unknown>(value: unknown) => value is Set<T>;
  88. var emptyMap: (value: unknown) => value is Map<never, never>;
  89. var nonEmptyMap: <Key = unknown, Value = unknown>(value: unknown) => value is Map<Key, Value>;
  90. var propertyKey: (value: unknown) => value is string | number | symbol;
  91. var formData: (value: unknown) => value is FormData;
  92. var urlSearchParams: (value: unknown) => value is URLSearchParams;
  93. var any: (predicate: Predicate | Predicate[], ...values: unknown[]) => boolean;
  94. var all: (predicate: Predicate, ...values: unknown[]) => boolean;
  95. }
  96. export interface ArrayLike<T> {
  97. readonly [index: number]: T;
  98. readonly length: number;
  99. }
  100. export interface NodeStream extends NodeJS.EventEmitter {
  101. pipe<T extends NodeJS.WritableStream>(destination: T, options?: {
  102. end?: boolean;
  103. }): T;
  104. }
  105. export declare type Predicate = (value: unknown) => boolean;
  106. export declare const enum AssertionTypeDescription {
  107. class_ = "Class",
  108. numericString = "string with a number",
  109. nullOrUndefined = "null or undefined",
  110. iterable = "Iterable",
  111. asyncIterable = "AsyncIterable",
  112. nativePromise = "native Promise",
  113. urlString = "string with a URL",
  114. truthy = "truthy",
  115. falsy = "falsy",
  116. nan = "NaN",
  117. primitive = "primitive",
  118. integer = "integer",
  119. safeInteger = "integer",
  120. plainObject = "plain object",
  121. arrayLike = "array-like",
  122. typedArray = "TypedArray",
  123. domElement = "HTMLElement",
  124. nodeStream = "Node.js Stream",
  125. infinite = "infinite number",
  126. emptyArray = "empty array",
  127. nonEmptyArray = "non-empty array",
  128. emptyString = "empty string",
  129. emptyStringOrWhitespace = "empty string or whitespace",
  130. nonEmptyString = "non-empty string",
  131. nonEmptyStringAndNotWhitespace = "non-empty string and not whitespace",
  132. emptyObject = "empty object",
  133. nonEmptyObject = "non-empty object",
  134. emptySet = "empty set",
  135. nonEmptySet = "non-empty set",
  136. emptyMap = "empty map",
  137. nonEmptyMap = "non-empty map",
  138. evenInteger = "even integer",
  139. oddInteger = "odd integer",
  140. directInstanceOf = "T",
  141. inRange = "in range",
  142. any = "predicate returns truthy for any value",
  143. all = "predicate returns truthy for all values"
  144. }
  145. interface Assert {
  146. undefined: (value: unknown) => asserts value is undefined;
  147. string: (value: unknown) => asserts value is string;
  148. number: (value: unknown) => asserts value is number;
  149. bigint: (value: unknown) => asserts value is bigint;
  150. function_: (value: unknown) => asserts value is Function;
  151. null_: (value: unknown) => asserts value is null;
  152. class_: (value: unknown) => asserts value is Class;
  153. boolean: (value: unknown) => asserts value is boolean;
  154. symbol: (value: unknown) => asserts value is symbol;
  155. numericString: (value: unknown) => asserts value is string;
  156. array: <T = unknown>(value: unknown, assertion?: (element: unknown) => asserts element is T) => asserts value is T[];
  157. buffer: (value: unknown) => asserts value is Buffer;
  158. blob: (value: unknown) => asserts value is Blob;
  159. nullOrUndefined: (value: unknown) => asserts value is null | undefined;
  160. object: <Key extends keyof any = string, Value = unknown>(value: unknown) => asserts value is Record<Key, Value>;
  161. iterable: <T = unknown>(value: unknown) => asserts value is Iterable<T>;
  162. asyncIterable: <T = unknown>(value: unknown) => asserts value is AsyncIterable<T>;
  163. generator: (value: unknown) => asserts value is Generator;
  164. asyncGenerator: (value: unknown) => asserts value is AsyncGenerator;
  165. nativePromise: <T = unknown>(value: unknown) => asserts value is Promise<T>;
  166. promise: <T = unknown>(value: unknown) => asserts value is Promise<T>;
  167. generatorFunction: (value: unknown) => asserts value is GeneratorFunction;
  168. asyncGeneratorFunction: (value: unknown) => asserts value is AsyncGeneratorFunction;
  169. asyncFunction: (value: unknown) => asserts value is Function;
  170. boundFunction: (value: unknown) => asserts value is Function;
  171. regExp: (value: unknown) => asserts value is RegExp;
  172. date: (value: unknown) => asserts value is Date;
  173. error: (value: unknown) => asserts value is Error;
  174. map: <Key = unknown, Value = unknown>(value: unknown) => asserts value is Map<Key, Value>;
  175. set: <T = unknown>(value: unknown) => asserts value is Set<T>;
  176. weakMap: <Key extends object = object, Value = unknown>(value: unknown) => asserts value is WeakMap<Key, Value>;
  177. weakSet: <T extends object = object>(value: unknown) => asserts value is WeakSet<T>;
  178. int8Array: (value: unknown) => asserts value is Int8Array;
  179. uint8Array: (value: unknown) => asserts value is Uint8Array;
  180. uint8ClampedArray: (value: unknown) => asserts value is Uint8ClampedArray;
  181. int16Array: (value: unknown) => asserts value is Int16Array;
  182. uint16Array: (value: unknown) => asserts value is Uint16Array;
  183. int32Array: (value: unknown) => asserts value is Int32Array;
  184. uint32Array: (value: unknown) => asserts value is Uint32Array;
  185. float32Array: (value: unknown) => asserts value is Float32Array;
  186. float64Array: (value: unknown) => asserts value is Float64Array;
  187. bigInt64Array: (value: unknown) => asserts value is BigInt64Array;
  188. bigUint64Array: (value: unknown) => asserts value is BigUint64Array;
  189. arrayBuffer: (value: unknown) => asserts value is ArrayBuffer;
  190. sharedArrayBuffer: (value: unknown) => asserts value is SharedArrayBuffer;
  191. dataView: (value: unknown) => asserts value is DataView;
  192. enumCase: <T = unknown>(value: unknown, targetEnum: T) => asserts value is T[keyof T];
  193. urlInstance: (value: unknown) => asserts value is URL;
  194. urlString: (value: unknown) => asserts value is string;
  195. truthy: (value: unknown) => asserts value is unknown;
  196. falsy: (value: unknown) => asserts value is unknown;
  197. nan: (value: unknown) => asserts value is unknown;
  198. primitive: (value: unknown) => asserts value is Primitive;
  199. integer: (value: unknown) => asserts value is number;
  200. safeInteger: (value: unknown) => asserts value is number;
  201. plainObject: <Value = unknown>(value: unknown) => asserts value is Record<PropertyKey, Value>;
  202. typedArray: (value: unknown) => asserts value is TypedArray;
  203. arrayLike: <T = unknown>(value: unknown) => asserts value is ArrayLike<T>;
  204. domElement: (value: unknown) => asserts value is HTMLElement;
  205. observable: (value: unknown) => asserts value is ObservableLike;
  206. nodeStream: (value: unknown) => asserts value is NodeStream;
  207. infinite: (value: unknown) => asserts value is number;
  208. emptyArray: (value: unknown) => asserts value is never[];
  209. nonEmptyArray: (value: unknown) => asserts value is unknown[];
  210. emptyString: (value: unknown) => asserts value is '';
  211. emptyStringOrWhitespace: (value: unknown) => asserts value is string;
  212. nonEmptyString: (value: unknown) => asserts value is string;
  213. nonEmptyStringAndNotWhitespace: (value: unknown) => asserts value is string;
  214. emptyObject: <Key extends keyof any = string>(value: unknown) => asserts value is Record<Key, never>;
  215. nonEmptyObject: <Key extends keyof any = string, Value = unknown>(value: unknown) => asserts value is Record<Key, Value>;
  216. emptySet: (value: unknown) => asserts value is Set<never>;
  217. nonEmptySet: <T = unknown>(value: unknown) => asserts value is Set<T>;
  218. emptyMap: (value: unknown) => asserts value is Map<never, never>;
  219. nonEmptyMap: <Key = unknown, Value = unknown>(value: unknown) => asserts value is Map<Key, Value>;
  220. propertyKey: (value: unknown) => asserts value is PropertyKey;
  221. formData: (value: unknown) => asserts value is FormData;
  222. urlSearchParams: (value: unknown) => asserts value is URLSearchParams;
  223. evenInteger: (value: number) => asserts value is number;
  224. oddInteger: (value: number) => asserts value is number;
  225. directInstanceOf: <T>(instance: unknown, class_: Class<T>) => asserts instance is T;
  226. inRange: (value: number, range: number | number[]) => asserts value is number;
  227. any: (predicate: Predicate | Predicate[], ...values: unknown[]) => void | never;
  228. all: (predicate: Predicate, ...values: unknown[]) => void | never;
  229. }
  230. export declare const assert: Assert;
  231. export default is;
  232. export { Class, TypedArray, ObservableLike, Primitive } from './types';