@tstdl/base 0.88.0-alpha5 → 0.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,253 +1,329 @@
1
- /* eslint-disable @typescript-eslint/ban-types, @typescript-eslint/restrict-template-expressions, max-statements-per-line */
1
+ /* eslint-disable @typescript-eslint/ban-types, @typescript-eslint/restrict-template-expressions, max-statements-per-line, no-eq-null */
2
2
  import { supportsBlob, supportsReadableStream } from '../supports.js';
3
3
  import { AssertionError } from '../error/assertion.error.js';
4
4
  export function assert(condition, message = 'assertion failed') {
5
5
  if (!condition) {
6
- throw new AssertionError(isFunction(message) ? message() : message);
6
+ throw new AssertionError((typeof message == 'function') ? message() : message);
7
7
  }
8
8
  }
9
9
  export function assertNot(condition, message = 'assertion failed') {
10
10
  if (condition) {
11
- throw new AssertionError(isFunction(message) ? message() : message);
11
+ throw new AssertionError((typeof message == 'function') ? message() : message);
12
12
  }
13
13
  }
14
- export function isType(type, value) { return (value instanceof type); }
15
- export function isNotType(type, value) { return !isType(type, value); }
16
- export function assertType(type, value, message = () => `Expected value to be of type ${type.name}.`) { assert(isType(type, value), message); }
17
- export function assertNotType(type, value, message = () => `Expected value to be not of type ${type.name}.`) { assert(isNotType(type, value), message); }
18
- export function assertTypePass(type, value, message) { assertType(type, value, message); return value; }
19
- export function assertNotTypePass(type, value, message) { assertNotType(type, value, message); return value; }
20
- export function isUndefined(value) { return value === undefined; }
21
- export function isDefined(value) { return value !== undefined; }
22
- export function assertUndefined(value, message = 'Expected value to be undefined.') { assert(isUndefined(value), message); }
23
- export function assertDefined(value, message = 'Expected value to not be undefined.') { assert(isDefined(value), message); }
24
- export function assertUndefinedPass(value, message) { assertUndefined(value, message); return value; }
25
- export function assertDefinedPass(value, message) { assertDefined(value, message); return value; }
26
- export function isNull(value) { return value === null; }
27
- export function isNotNull(value) { return value !== null; }
28
- export function assertNull(value, message = 'Expected value to be null.') { assert(isNull(value), message); }
29
- export function assertNotNull(value, message = 'Expected value to not be null.') { assert(isNotNull(value), message); }
30
- export function assertNullPass(value, message) { assertNull(value, message); return value; }
31
- export function assertNotNullPass(value, message) { assertNotNull(value, message); return value; }
32
- export function isNullOrUndefined(value) { return (value === null) || (value === undefined); }
33
- export function isNotNullOrUndefined(value) { return !isNullOrUndefined(value); }
34
- export function assertNullOrUndefined(value, message = 'Expected value to be null or undefined.') { assert(isNullOrUndefined(value), message); }
35
- export function assertNotNullOrUndefined(value, message = 'Expected value to not be null or undefined.') { assert(isNotNullOrUndefined(value), message); }
36
- export function assertNullOrUndefinedPass(value, message) { assertNullOrUndefined(value, message); return value; }
37
- export function assertNotNullOrUndefinedPass(value, message) { assertNotNullOrUndefined(value, message); return value; }
38
- export function isNumber(value) { return (typeof value == 'number'); }
39
- export function isNotNumber(value) { return !isNumber(value); }
40
- export function assertNumber(value, message = 'Expected value to be number.') { assert(isNumber(value), message); }
41
- export function assertNotNumber(value, message = 'Expected value to not be number.') { assert(isNotNumber(value), message); }
42
- export function assertNumberPass(value, message) { assertNumber(value, message); return value; }
43
- export function assertNotNumberPass(value, message) { assertNotNumber(value, message); return value; }
44
- export function isString(value) { return (typeof value == 'string'); }
45
- export function isNotString(value) { return !isString(value); }
46
- export function assertString(value, message = 'Expected value to be string.') { assert(isString(value), message); }
47
- export function assertNotString(value, message = 'Expected value to not be string.') { assert(isNotString(value), message); }
48
- export function assertStringPass(value, message) { assertString(value, message); return value; }
49
- export function assertNotStringPass(value, message) { assertNotString(value, message); return value; }
50
- export function isBoolean(value) { return (typeof value == 'boolean'); }
51
- export function isNotBoolean(value) { return !isBoolean(value); }
52
- export function assertBoolean(value, message = 'Expected value to be boolean.') { assert(isBoolean(value), message); }
53
- export function assertNotBoolean(value, message = 'Expected value to not be boolean.') { assert(isNotBoolean(value), message); }
54
- export function assertBooleanPass(value, message) { assertBoolean(value, message); return value; }
55
- export function assertNotBooleanPass(value, message) { assertNotBoolean(value, message); return value; }
56
- export function isBigInt(value) { return (typeof value == 'bigint'); }
57
- export function isNotBigInt(value) { return !isBigInt(value); }
58
- export function assertBigInt(value, message = 'Expected value to be bigint.') { assert(isBigInt(value), message); }
59
- export function assertNotBigInt(value, message = 'Expected value to not be bigint.') { assert(isNotBigInt(value), message); }
60
- export function assertBigIntPass(value, message) { assertBigInt(value, message); return value; }
61
- export function assertNotBigIntPass(value, message) { assertNotBigInt(value, message); return value; }
62
- export function isFunction(value) { return (typeof value == 'function'); }
63
- export function isNotFunction(value) { return !isFunction(value); }
64
- export function assertFunction(value, message = 'Expected value to be function.') { assert(isFunction(value), message); }
65
- export function assertNotFunction(value, message = 'Expected value to not be function.') { assert(isNotFunction(value), message); }
66
- export function assertFunctionPass(value, message) { assertFunction(value, message); return value; }
67
- export function assertNotFunctionPass(value, message) { assertNotFunction(value, message); return value; }
68
- export function isSymbol(value) { return (typeof value == 'symbol'); }
69
- export function isNotSymbol(value) { return !isSymbol(value); }
70
- export function assertSymbol(value, message = 'Expected value to be symbol.') { assert(isSymbol(value), message); }
71
- export function assertNotSymbol(value, message = 'Expected value to not be symbol.') { assert(isNotSymbol(value), message); }
72
- export function assertSymbolPass(value, message) { assertSymbol(value, message); return value; }
73
- export function assertNotSymbolPass(value, message) { assertNotSymbol(value, message); return value; }
74
- export function isObject(value) { return value?.constructor == Object; }
75
- export function isNotObject(value) { return !isObject(value); }
76
- export function assertObject(value, message = 'Expected value to be object.') { assert(isObject(value), message); }
77
- export function assertNotObject(value, message = 'Expected value to not be object.') { assert(isNotObject(value), message); }
78
- export function assertObjectPass(value, message) { assertObject(value, message); return value; }
79
- export function assertNotObjectPass(value, message) { assertNotObject(value, message); return value; }
80
- export function isPrimitive(value) { const type = typeof value; return type == 'string' || type == 'number' || type == 'boolean' || type == 'bigint' || type == 'symbol' || value === null || value === undefined; }
81
- export function isNotPrimitive(value) { return !isPrimitive(value); }
82
- export function assertPrimitive(value, message = 'Expected value to be primitive.') { assert(isPrimitive(value), message); }
83
- export function assertNotPrimitive(value, message = 'Expected value to not be primitive.') { assert(isNotPrimitive(value), message); }
84
- export function assertPrimitivePass(value, message) { assertPrimitive(value, message); return value; }
85
- export function assertNotPrimitivePass(value, message) { assertNotPrimitive(value, message); return value; }
86
- export function isJsonPrimitive(value) { const type = typeof value; return type == 'string' || type == 'number' || type == 'boolean' || value === null; }
87
- export function isNotJsonPrimitive(value) { return !isJsonPrimitive(value); }
88
- export function assertJsonPrimitive(value, message = 'Expected value to be json-primitive.') { assert(isJsonPrimitive(value), message); }
89
- export function assertNotJsonPrimitive(value, message = 'Expected value to not be json-primitive.') { assert(isNotJsonPrimitive(value), message); }
90
- export function assertJsonPrimitivePass(value, message) { assertJsonPrimitive(value, message); return value; }
91
- export function assertNotJsonPrimitivePass(value, message) { assertNotJsonPrimitive(value, message); return value; }
92
- export function isDate(value) { return (value instanceof Date); }
93
- export function isNotDate(value) { return !isDate(value); }
94
- export function assertDate(value, message = 'Expected value to be Date.') { assert(isDate(value), message); }
95
- export function assertNotDate(value, message = 'Expected value to not be Date.') { assert(isNotDate(value), message); }
96
- export function assertDatePass(value, message) { assertDate(value, message); return value; }
97
- export function assertNotDatePass(value, message) { assertNotDate(value, message); return value; }
98
- export function isValidDate(value) { return isDate(value) && !Number.isNaN(value.getTime()); }
99
- export function isNotValidDate(value) { return !isValidDate(value); }
100
- export function assertValidDate(value, message = 'Expected value to be a valid Date.') { assert(isValidDate(value), message); }
101
- export function assertNotValidDate(value, message = 'Expected value to not be a valid Date.') { assert(isNotValidDate(value), message); }
102
- export function assertValidDatePass(value, message) { assertValidDate(value, message); return value; }
103
- export function assertNotValidDatePass(value, message) { assertNotValidDate(value, message); return value; }
104
- export function isRegExp(value) { return (value instanceof RegExp); }
105
- export function isNotRegExp(value) { return !isRegExp(value); }
106
- export function assertRegExp(value, message = 'Expected value to be RegExp.') { assert(isRegExp(value), message); }
107
- export function assertNotRegExp(value, message = 'Expected value to not be RegExp.') { assert(isNotRegExp(value), message); }
108
- export function assertRegExpPass(value, message) { assertRegExp(value, message); return value; }
109
- export function assertNotRegExpPass(value, message) { assertNotRegExp(value, message); return value; }
110
- export function isArray(value) { return Array.isArray(value); }
111
- export function isNotArray(value) { return !isArray(value); }
112
- export function assertArray(value, message = 'Expected value to be Array.') { assert(isArray(value), message); }
113
- export function assertNotArray(value, message = 'Expected value to not be Array.') { assert(isNotArray(value), message); }
114
- export function assertArrayPass(value, message) { assertArray(value, message); return value; }
115
- export function assertNotArrayPass(value, message) { assertNotArray(value, message); return value; }
116
- export function isWritableArray(value) { return isArray(value); }
117
- export function isNotWritableArray(value) { return isNotArray(value); }
118
- export function assertWritableArray(value, message = 'Expected value to be Array.') { assertArray(value, message); }
119
- export function assertNotWritableArray(value, message = 'Expected value to not be Array.') { assertNotArray(value, message); }
120
- export function assertWritableArrayPass(value, message) { return assertArrayPass(value, message); }
121
- export function assertNotWritableArrayPass(value, message) { return assertNotArrayPass(value, message); }
122
- export function isBlob(value) { return (supportsBlob && (value instanceof Blob)); }
123
- export function isNotBlob(value) { return !isBlob(value); }
124
- export function assertBlob(value, message = 'Expected value to be Blob.') { assert(isBlob(value), message); }
125
- export function assertNotBlob(value, message = 'Expected value to not be Blob.') { assert(isNotBlob(value), message); }
126
- export function assertBlobPass(value, message) { assertBlob(value, message); return value; }
127
- export function assertNotBlobPass(value, message) { assertNotBlob(value, message); return value; }
128
- export function isBinaryData(value) { return isArrayBuffer(value) || isArrayBufferView(value); }
129
- export function isNotBinaryData(value) { return !isBinaryData(value); }
130
- export function assertBinaryData(value, message = 'Expected value to be BinaryData.') { assert(isBinaryData(value), message); }
131
- export function assertNotBinaryData(value, message = 'Expected value to not be BinaryData.') { assert(isNotBinaryData(value), message); }
132
- export function assertBinaryDataPass(value, message) { assertBinaryData(value, message); return value; }
133
- export function assertNotBinaryDataPass(value, message) { assertNotBinaryData(value, message); return value; }
134
- export function isArrayBuffer(value) { return (value instanceof ArrayBuffer); }
135
- export function isNotArrayBuffer(value) { return !isArrayBuffer(value); }
136
- export function assertArrayBuffer(value, message = 'Expected value to be ArrayBuffer.') { assert(isArrayBuffer(value), message); }
137
- export function assertNotArrayBuffer(value, message = 'Expected value to not be ArrayBuffer.') { assert(isNotArrayBuffer(value), message); }
138
- export function assertArrayBufferPass(value, message) { assertArrayBuffer(value, message); return value; }
139
- export function assertNotArrayBufferPass(value, message) { assertNotArrayBuffer(value, message); return value; }
140
- export function isArrayBufferView(value) { return ArrayBuffer.isView(value); }
141
- export function isNotArrayBufferView(value) { return !isArrayBufferView(value); }
142
- export function assertArrayBufferView(value, message = 'Expected value to be ArrayBufferView.') { assert(isArrayBufferView(value), message); }
143
- export function assertNotArrayBufferView(value, message = 'Expected value to not be ArrayBufferView.') { assert(isNotArrayBufferView(value), message); }
144
- export function assertArrayBufferViewPass(value, message) { assertArrayBufferView(value, message); return value; }
145
- export function assertNotArrayBufferViewPass(value, message) { assertNotArrayBufferView(value, message); return value; }
146
- export function isTypedArray(value) { return ArrayBuffer.isView(value) && isNotDataView(value); }
147
- export function isNotTypedArray(value) { return !isTypedArray(value); }
148
- export function assertTypedArray(value, message = 'Expected value to be TypedArray.') { assert(isTypedArray(value), message); }
149
- export function assertNotTypedArray(value, message = 'Expected value to not be TypedArray.') { assert(isNotTypedArray(value), message); }
150
- export function assertTypedArrayPass(value, message) { assertTypedArray(value, message); return value; }
151
- export function assertNotTypedArrayPass(value, message) { assertNotTypedArray(value, message); return value; }
152
- export function isInt8Array(value) { return (value instanceof Int8Array); }
153
- export function isNotInt8Array(value) { return !isInt8Array(value); }
154
- export function assertInt8Array(value, message = 'Expected value to be Int8Array.') { assert(isInt8Array(value), message); }
155
- export function assertNotInt8Array(value, message = 'Expected value to not be Int8Array.') { assert(isNotInt8Array(value), message); }
156
- export function assertInt8ArrayPass(value, message) { assertInt8Array(value, message); return value; }
157
- export function assertNotInt8ArrayPass(value, message) { assertNotInt8Array(value, message); return value; }
158
- export function isUint8Array(value) { return (value instanceof Uint8Array); }
159
- export function isNotUint8Array(value) { return !isUint8Array(value); }
160
- export function assertUint8Array(value, message = 'Expected value to be Uint8Array.') { assert(isUint8Array(value), message); }
161
- export function assertNotUint8Array(value, message = 'Expected value to not be Uint8Array.') { assert(isNotUint8Array(value), message); }
162
- export function assertUint8ArrayPass(value, message) { assertUint8Array(value, message); return value; }
163
- export function assertNotUint8ArrayPass(value, message) { assertNotUint8Array(value, message); return value; }
164
- export function isUint8ClampedArray(value) { return (value instanceof Uint8ClampedArray); }
165
- export function isNotUint8ClampedArray(value) { return !isUint8ClampedArray(value); }
166
- export function assertUint8ClampedArray(value, message = 'Expected value to be Uint8ClampedArray.') { assert(isUint8ClampedArray(value), message); }
167
- export function assertNotUint8ClampedArray(value, message = 'Expected value to not be Uint8ClampedArray.') { assert(isNotUint8ClampedArray(value), message); }
168
- export function assertUint8ClampedArrayPass(value, message) { assertUint8ClampedArray(value, message); return value; }
169
- export function assertNotUint8ClampedArrayPass(value, message) { assertNotUint8ClampedArray(value, message); return value; }
170
- export function isInt16Array(value) { return (value instanceof Int16Array); }
171
- export function isNotInt16Array(value) { return !isInt16Array(value); }
172
- export function assertInt16Array(value, message = 'Expected value to be Int16Array.') { assert(isInt16Array(value), message); }
173
- export function assertNotInt16Array(value, message = 'Expected value to not be Int16Array.') { assert(isNotInt16Array(value), message); }
174
- export function assertInt16ArrayPass(value, message) { assertInt16Array(value, message); return value; }
175
- export function assertNotInt16ArrayPass(value, message) { assertNotInt16Array(value, message); return value; }
176
- export function isUint16Array(value) { return (value instanceof Uint16Array); }
177
- export function isNotUint16Array(value) { return !isUint16Array(value); }
178
- export function assertUint16Array(value, message = 'Expected value to be Uint16Array.') { assert(isUint16Array(value), message); }
179
- export function assertNotUint16Array(value, message = 'Expected value to not be Uint16Array.') { assert(isNotUint16Array(value), message); }
180
- export function assertUint16ArrayPass(value, message) { assertUint16Array(value, message); return value; }
181
- export function assertNotUint16ArrayPass(value, message) { assertNotUint16Array(value, message); return value; }
182
- export function isInt32Array(value) { return (value instanceof Int32Array); }
183
- export function isNotInt32Array(value) { return !isInt32Array(value); }
184
- export function assertInt32Array(value, message = 'Expected value to be Int32Array.') { assert(isInt32Array(value), message); }
185
- export function assertNotInt32Array(value, message = 'Expected value to not be Int32Array.') { assert(isNotInt32Array(value), message); }
186
- export function assertInt32ArrayPass(value, message) { assertInt32Array(value, message); return value; }
187
- export function assertNotInt32ArrayPass(value, message) { assertNotInt32Array(value, message); return value; }
188
- export function isUint32Array(value) { return (value instanceof Uint32Array); }
189
- export function isNotUint32Array(value) { return !isUint32Array(value); }
190
- export function assertUint32Array(value, message = 'Expected value to be Uint32Array.') { assert(isUint32Array(value), message); }
191
- export function assertNotUint32Array(value, message = 'Expected value to not be Uint32Array.') { assert(isNotUint32Array(value), message); }
192
- export function assertUint32ArrayPass(value, message) { assertUint32Array(value, message); return value; }
193
- export function assertNotUint32ArrayPass(value, message) { assertNotUint32Array(value, message); return value; }
194
- export function isFloat32Array(value) { return (value instanceof Float32Array); }
195
- export function isNotFloat32Array(value) { return !isFloat32Array(value); }
196
- export function assertFloat32Array(value, message = 'Expected value to be Float32Array.') { assert(isFloat32Array(value), message); }
197
- export function assertNotFloat32Array(value, message = 'Expected value to not be Float32Array.') { assert(isNotFloat32Array(value), message); }
198
- export function assertFloat32ArrayPass(value, message) { assertFloat32Array(value, message); return value; }
199
- export function assertNotFloat32ArrayPass(value, message) { assertNotFloat32Array(value, message); return value; }
200
- export function isFloat64Array(value) { return (value instanceof Float64Array); }
201
- export function isNotFloat64Array(value) { return !isFloat64Array(value); }
202
- export function assertFloat64Array(value, message = 'Expected value to be Float64Array.') { assert(isFloat64Array(value), message); }
203
- export function assertNotFloat64Array(value, message = 'Expected value to not be Float64Array.') { assert(isNotFloat64Array(value), message); }
204
- export function assertFloat64ArrayPass(value, message) { assertFloat64Array(value, message); return value; }
205
- export function assertNotFloat64ArrayPass(value, message) { assertNotFloat64Array(value, message); return value; }
206
- export function isBigInt64Array(value) { return (value instanceof BigInt64Array); }
207
- export function isNotBigInt64Array(value) { return !isBigInt64Array(value); }
208
- export function assertBigInt64Array(value, message = 'Expected value to be BigInt64Array.') { assert(isBigInt64Array(value), message); }
209
- export function assertNotBigInt64Array(value, message = 'Expected value to not be BigInt64Array.') { assert(isNotBigInt64Array(value), message); }
210
- export function assertBigInt64ArrayPass(value, message) { assertBigInt64Array(value, message); return value; }
211
- export function assertNotBigInt64ArrayPass(value, message) { assertNotBigInt64Array(value, message); return value; }
212
- export function isBigUint64Array(value) { return (value instanceof BigUint64Array); }
213
- export function isNotBigUint64Array(value) { return !isBigUint64Array(value); }
214
- export function assertBigUint64Array(value, message = 'Expected value to be BigUint64Array.') { assert(isBigUint64Array(value), message); }
215
- export function assertNotBigUint64Array(value, message = 'Expected value to not be BigUint64Array.') { assert(isNotBigUint64Array(value), message); }
216
- export function assertBigUint64ArrayPass(value, message) { assertBigUint64Array(value, message); return value; }
217
- export function assertNotBigUint64ArrayPass(value, message) { assertNotBigUint64Array(value, message); return value; }
218
- export function isDataView(value) { return (value instanceof DataView); }
219
- export function isNotDataView(value) { return !isDataView(value); }
220
- export function assertDataView(value, message = 'Expected value to be DataView.') { assert(isDataView(value), message); }
221
- export function assertNotDataView(value, message = 'Expected value to not be DataView.') { assert(isNotDataView(value), message); }
222
- export function assertDataViewPass(value, message) { assertDataView(value, message); return value; }
223
- export function assertNotDataViewPass(value, message) { assertNotDataView(value, message); return value; }
224
- export function isSet(value) { return (value instanceof Set); }
225
- export function isNotSet(value) { return !isSet(value); }
226
- export function assertSet(value, message = 'Expected value to be Set.') { assert(isSet(value), message); }
227
- export function assertNotSet(value, message = 'Expected value to not be Set.') { assert(isNotSet(value), message); }
228
- export function assertSetPass(value, message) { assertSet(value, message); return value; }
229
- export function assertNotSetPass(value, message) { assertNotSet(value, message); return value; }
230
- export function isMap(value) { return (value instanceof Map); }
231
- export function isNotMap(value) { return !isMap(value); }
232
- export function assertMap(value, message = 'Expected value to be Map.') { assert(isMap(value), message); }
233
- export function assertNotMap(value, message = 'Expected value to not be Map.') { assert(isNotMap(value), message); }
234
- export function assertMapPass(value, message) { assertMap(value, message); return value; }
235
- export function assertNotMapPass(value, message) { assertNotMap(value, message); return value; }
236
- export function isPromise(value) { return (value instanceof Promise); }
237
- export function isNotPromise(value) { return !isPromise(value); }
238
- export function assertPromise(value, message = 'Expected value to be Promise.') { assert(isPromise(value), message); }
239
- export function assertNotPromise(value, message = 'Expected value to not be Promise.') { assert(isNotPromise(value), message); }
240
- export function assertPromisePass(value, message) { assertPromise(value, message); return value; } // eslint-disable-line @typescript-eslint/promise-function-async
241
- export function assertNotPromisePass(value, message) { assertNotPromise(value, message); return value; }
242
- export function isReadableStream(value) { return (supportsReadableStream && (value instanceof ReadableStream)); }
243
- export function isNotReadableStream(value) { return !isReadableStream(value); }
244
- export function assertReadableStream(value, message = 'Expected value to be ReadableStream.') { assert(isReadableStream(value), message); }
245
- export function assertNotReadableStream(value, message = 'Expected value to not be ReadableStream.') { assert(isNotReadableStream(value), message); }
246
- export function assertReadableStreamPass(value, message) { assertReadableStream(value, message); return value; }
247
- export function assertNotReadableStreamPass(value, message) { assertNotReadableStream(value, message); return value; }
248
- export function isError(value) { return (value instanceof Error); }
249
- export function isNotError(value) { return !isError(value); }
250
- export function assertError(value, message = 'Expected value to be Error.') { assert(isError(value), message); }
251
- export function assertNotError(value, message = 'Expected value to not be Error.') { assert(isNotError(value), message); }
252
- export function assertErrorPass(value, message) { assertError(value, message); return value; }
253
- export function assertNotErrorPass(value, message) { assertNotError(value, message); return value; }
14
+ export function createGuards(name, testFn) {
15
+ const normalizedName = name.split(' ').map((slice) => slice[0].toUpperCase() + slice.slice(1)).join('');
16
+ const defaultMessage = `Expected value to be ${name}.`;
17
+ const defaultNotMessage = `Expected value to not be ${name}.`;
18
+ return {
19
+ [`is${normalizedName}`](value) {
20
+ return testFn(value);
21
+ },
22
+ [`isNot${normalizedName}`](value) {
23
+ return !testFn(value);
24
+ },
25
+ [`assert${normalizedName}`](value, message = defaultMessage) {
26
+ assert(testFn(value), message);
27
+ },
28
+ [`assertNot${normalizedName}`](value, message = defaultNotMessage) {
29
+ assertNot(testFn(value), message);
30
+ },
31
+ [`assert${normalizedName}Pass`](value, message = defaultMessage) {
32
+ assert(testFn(value), message);
33
+ return value;
34
+ },
35
+ [`assertNot${normalizedName}Pass`](value, message = defaultNotMessage) {
36
+ assertNot(testFn(value), message);
37
+ return value;
38
+ }
39
+ };
40
+ }
41
+ export function createInstanceGuards(name, type) {
42
+ return createGuards(name, (value) => value instanceof type);
43
+ }
44
+ const undefinedGuards = createGuards('undefined', (value) => (value === undefined));
45
+ export const isUndefined = undefinedGuards.isUndefined;
46
+ export const isDefined = undefinedGuards.isNotUndefined;
47
+ export const assertUndefined = undefinedGuards.assertUndefined;
48
+ export const assertDefined = undefinedGuards.assertNotUndefined;
49
+ export const assertUndefinedPass = undefinedGuards.assertUndefinedPass;
50
+ export const assertDefinedPass = undefinedGuards.assertNotUndefinedPass;
51
+ const nullGuards = createGuards('null', (value) => (value === null));
52
+ export const isNull = nullGuards.isNull;
53
+ export const isNotNull = nullGuards.isNotNull;
54
+ export const assertNull = nullGuards.assertNull;
55
+ export const assertNotNull = nullGuards.assertNotNull;
56
+ export const assertNullPass = nullGuards.assertNullPass;
57
+ export const assertNotNullPass = nullGuards.assertNotNullPass;
58
+ const nullOrUndefinedGuards = createGuards('null or undefined', (value) => (value === null) || (value === undefined));
59
+ export const isNullOrUndefined = nullOrUndefinedGuards.isNullOrUndefined;
60
+ export const isNotNullOrUndefined = nullOrUndefinedGuards.isNotNullOrUndefined;
61
+ export const assertNullOrUndefined = nullOrUndefinedGuards.assertNullOrUndefined;
62
+ export const assertNotNullOrUndefined = nullOrUndefinedGuards.assertNotNullOrUndefined;
63
+ export const assertNullOrUndefinedPass = nullOrUndefinedGuards.assertNullOrUndefinedPass;
64
+ export const assertNotNullOrUndefinedPass = nullOrUndefinedGuards.assertNotNullOrUndefinedPass;
65
+ const numberGuards = createGuards('number', (value) => (typeof value == 'number'));
66
+ export const isNumber = numberGuards.isNumber;
67
+ export const isNotNumber = numberGuards.isNotNumber;
68
+ export const assertNumber = numberGuards.assertNumber;
69
+ export const assertNotNumber = numberGuards.assertNotNumber;
70
+ export const assertNumberPass = numberGuards.assertNumberPass;
71
+ export const assertNotNumberPass = numberGuards.assertNotNumberPass;
72
+ const stringGuards = createGuards('string', (value) => (typeof value == 'string'));
73
+ export const isString = stringGuards.isString;
74
+ export const isNotString = stringGuards.isNotString;
75
+ export const assertString = stringGuards.assertString;
76
+ export const assertNotString = stringGuards.assertNotString;
77
+ export const assertStringPass = stringGuards.assertStringPass;
78
+ export const assertNotStringPass = stringGuards.assertNotStringPass;
79
+ const booleanGuards = createGuards('boolean', (value) => (typeof value == 'boolean'));
80
+ export const isBoolean = booleanGuards.isBoolean;
81
+ export const isNotBoolean = booleanGuards.isNotBoolean;
82
+ export const assertBoolean = booleanGuards.assertBoolean;
83
+ export const assertNotBoolean = booleanGuards.assertNotBoolean;
84
+ export const assertBooleanPass = booleanGuards.assertBooleanPass;
85
+ export const assertNotBooleanPass = booleanGuards.assertNotBooleanPass;
86
+ const bigintGuards = createGuards('bigint', (value) => (typeof value == 'bigint'));
87
+ export const isBigInt = bigintGuards.isBigint;
88
+ export const isNotBigInt = bigintGuards.isNotBigint;
89
+ export const assertBigInt = bigintGuards.assertBigint;
90
+ export const assertNotBigInt = bigintGuards.assertNotBigint;
91
+ export const assertBigIntPass = bigintGuards.assertBigintPass;
92
+ export const assertNotBigIntPass = bigintGuards.assertNotBigintPass;
93
+ const functionGuards = createGuards('function', (value) => (typeof value == 'function'));
94
+ export const isFunction = functionGuards.isFunction;
95
+ export const isNotFunction = functionGuards.isNotFunction;
96
+ export const assertFunction = functionGuards.assertFunction;
97
+ export const assertNotFunction = functionGuards.assertNotFunction;
98
+ export const assertFunctionPass = functionGuards.assertFunctionPass;
99
+ export const assertNotFunctionPass = functionGuards.assertNotFunctionPass;
100
+ const symbolGuards = createGuards('symbol', (value) => (typeof value == 'symbol'));
101
+ export const isSymbol = symbolGuards.isSymbol;
102
+ export const isNotSymbol = symbolGuards.isNotSymbol;
103
+ export const assertSymbol = symbolGuards.assertSymbol;
104
+ export const assertNotSymbol = symbolGuards.assertNotSymbol;
105
+ export const assertSymbolPass = symbolGuards.assertSymbolPass;
106
+ export const assertNotSymbolPass = symbolGuards.assertNotSymbolPass;
107
+ const literalObjectGuards = createGuards('literal object', (value) => (typeof value == 'object') && (value != null) && (Reflect.getPrototypeOf(value) == Object.prototype) && (Reflect.getPrototypeOf(value).constructor == Object));
108
+ export const isLiteralObject = literalObjectGuards.isLiteralObject;
109
+ export const isNotLiteralObject = literalObjectGuards.isNotLiteralObject;
110
+ export const assertLiteralObject = literalObjectGuards.assertLiteralObject;
111
+ export const assertNotLiteralObject = literalObjectGuards.assertNotLiteralObject;
112
+ export const assertLiteralObjectPass = literalObjectGuards.assertLiteralObjectPass;
113
+ export const assertNotLiteralObjectPass = literalObjectGuards.assertNotLiteralObjectPass;
114
+ const objectGuards = createGuards('object', (value) => (typeof value == 'object') && (value != null));
115
+ export const isObject = objectGuards.isObject;
116
+ export const isNotObject = objectGuards.isNotObject;
117
+ export const assertObject = objectGuards.assertObject;
118
+ export const assertNotObject = objectGuards.assertNotObject;
119
+ export const assertObjectPass = objectGuards.assertObjectPass;
120
+ export const assertNotObjectPass = objectGuards.assertNotObjectPass;
121
+ const primitiveGuards = createGuards('primitive', (value) => {
122
+ const type = typeof value;
123
+ return (type == 'string') || (type == 'number') || (type == 'boolean') || (type == 'bigint') || (type == 'symbol') || (value === null) || (value === undefined);
124
+ });
125
+ export const isPrimitive = primitiveGuards.isPrimitive;
126
+ export const isNotPrimitive = primitiveGuards.isNotPrimitive;
127
+ export const assertPrimitive = primitiveGuards.assertPrimitive;
128
+ export const assertNotPrimitive = primitiveGuards.assertNotPrimitive;
129
+ export const assertPrimitivePass = primitiveGuards.assertPrimitivePass;
130
+ export const assertNotPrimitivePass = primitiveGuards.assertNotPrimitivePass;
131
+ const jsonPrimitiveGuards = createGuards('json primitive', (value) => {
132
+ const type = typeof value;
133
+ return (type == 'string') || (type == 'number') || (type == 'boolean') || (value === null);
134
+ });
135
+ export const isJsonPrimitive = jsonPrimitiveGuards.isJsonPrimitive;
136
+ export const isNotJsonPrimitive = jsonPrimitiveGuards.isNotJsonPrimitive;
137
+ export const assertJsonPrimitive = jsonPrimitiveGuards.assertJsonPrimitive;
138
+ export const assertNotJsonPrimitive = jsonPrimitiveGuards.assertNotJsonPrimitive;
139
+ export const assertJsonPrimitivePass = jsonPrimitiveGuards.assertJsonPrimitivePass;
140
+ export const assertNotJsonPrimitivePass = jsonPrimitiveGuards.assertNotJsonPrimitivePass;
141
+ const dateGuards = createInstanceGuards('date', Date);
142
+ export const isDate = dateGuards.isDate;
143
+ export const isNotDate = dateGuards.isNotDate;
144
+ export const assertDate = dateGuards.assertDate;
145
+ export const assertNotDate = dateGuards.assertNotDate;
146
+ export const assertDatePass = dateGuards.assertDatePass;
147
+ export const assertNotDatePass = dateGuards.assertNotDatePass;
148
+ const validDateGuards = createGuards('valid date', (value) => isDate(value) && !Number.isNaN(value.getTime()));
149
+ export const isValidDate = validDateGuards.isValidDate;
150
+ export const isNotValidDate = validDateGuards.isNotValidDate;
151
+ export const assertValidDate = validDateGuards.assertValidDate;
152
+ export const assertNotValidDate = validDateGuards.assertNotValidDate;
153
+ export const assertValidDatePass = validDateGuards.assertValidDatePass;
154
+ export const assertNotValidDatePass = validDateGuards.assertNotValidDatePass;
155
+ const regexpGuards = createInstanceGuards('regexp', RegExp);
156
+ export const isRegExp = regexpGuards.isRegexp;
157
+ export const isNotRegExp = regexpGuards.isNotRegexp;
158
+ export const assertRegExp = regexpGuards.assertRegexp;
159
+ export const assertNotRegExp = regexpGuards.assertNotRegexp;
160
+ export const assertRegExpPass = regexpGuards.assertRegexpPass;
161
+ export const assertNotRegExpPass = regexpGuards.assertNotRegexpPass;
162
+ const arrayGuards = createGuards('array', (value) => Array.isArray(value));
163
+ export const isArray = arrayGuards.isArray;
164
+ export const isNotArray = arrayGuards.isNotArray;
165
+ export const assertArray = arrayGuards.assertArray;
166
+ export const assertNotArray = arrayGuards.assertNotArray;
167
+ export const assertArrayPass = arrayGuards.assertArrayPass;
168
+ export const assertNotArrayPass = arrayGuards.assertNotArrayPass;
169
+ const writableArrayGuards = createGuards('writable array', (value) => Array.isArray(value));
170
+ export const isWritableArray = writableArrayGuards.isWritableArray;
171
+ export const isNotWritableArray = writableArrayGuards.isNotWritableArray;
172
+ export const assertWritableArray = writableArrayGuards.assertWritableArray;
173
+ export const assertNotWritableArray = writableArrayGuards.assertNotWritableArray;
174
+ export const assertWritableArrayPass = writableArrayGuards.assertWritableArrayPass;
175
+ export const assertNotWritableArrayPass = writableArrayGuards.assertNotWritableArrayPass;
176
+ const blobGuards = createGuards('Blob', (value) => (supportsBlob && (value instanceof Blob)));
177
+ export const isBlob = blobGuards.isBlob;
178
+ export const isNotBlob = blobGuards.isNotBlob;
179
+ export const assertBlob = blobGuards.assertBlob;
180
+ export const assertNotBlob = blobGuards.assertNotBlob;
181
+ export const assertBlobPass = blobGuards.assertBlobPass;
182
+ export const assertNotBlobPass = blobGuards.assertNotBlobPass;
183
+ const arrayBufferGuards = createInstanceGuards('ArrayBuffer', ArrayBuffer);
184
+ export const isArrayBuffer = arrayBufferGuards.isArrayBuffer;
185
+ export const isNotArrayBuffer = arrayBufferGuards.isNotArrayBuffer;
186
+ export const assertArrayBuffer = arrayBufferGuards.assertArrayBuffer;
187
+ export const assertNotArrayBuffer = arrayBufferGuards.assertNotArrayBuffer;
188
+ export const assertArrayBufferPass = arrayBufferGuards.assertArrayBufferPass;
189
+ export const assertNotArrayBufferPass = arrayBufferGuards.assertNotArrayBufferPass;
190
+ const arrayBufferViewGuards = createGuards('ArrayBufferView', (value) => ArrayBuffer.isView(value));
191
+ export const isArrayBufferView = arrayBufferViewGuards.isArrayBufferView;
192
+ export const isNotArrayBufferView = arrayBufferViewGuards.isNotArrayBufferView;
193
+ export const assertArrayBufferView = arrayBufferViewGuards.assertArrayBufferView;
194
+ export const assertNotArrayBufferView = arrayBufferViewGuards.assertNotArrayBufferView;
195
+ export const assertArrayBufferViewPass = arrayBufferViewGuards.assertArrayBufferViewPass;
196
+ export const assertNotArrayBufferViewPass = arrayBufferViewGuards.assertNotArrayBufferViewPass;
197
+ const binaryDataGuards = createGuards('BinaryData', (value) => (isArrayBuffer(value) || isArrayBufferView(value)));
198
+ export const isBinaryData = binaryDataGuards.isBinaryData;
199
+ export const isNotBinaryData = binaryDataGuards.isNotBinaryData;
200
+ export const assertBinaryData = binaryDataGuards.assertBinaryData;
201
+ export const assertNotBinaryData = binaryDataGuards.assertNotBinaryData;
202
+ export const assertBinaryDataPass = binaryDataGuards.assertBinaryDataPass;
203
+ export const assertNotBinaryDataPass = binaryDataGuards.assertNotBinaryDataPass;
204
+ const int8ArrayGuards = createInstanceGuards('Int8Array', Int8Array);
205
+ export const isInt8Array = int8ArrayGuards.isInt8Array;
206
+ export const isNotInt8Array = int8ArrayGuards.isNotInt8Array;
207
+ export const assertInt8Array = int8ArrayGuards.assertInt8Array;
208
+ export const assertNotInt8Array = int8ArrayGuards.assertNotInt8Array;
209
+ export const assertInt8ArrayPass = int8ArrayGuards.assertInt8ArrayPass;
210
+ export const assertNotInt8ArrayPass = int8ArrayGuards.assertNotInt8ArrayPass;
211
+ const uint8ArrayGuards = createInstanceGuards('Uint8Array', Uint8Array);
212
+ export const isUint8Array = uint8ArrayGuards.isUint8Array;
213
+ export const isNotUint8Array = uint8ArrayGuards.isNotUint8Array;
214
+ export const assertUint8Array = uint8ArrayGuards.assertUint8Array;
215
+ export const assertNotUint8Array = uint8ArrayGuards.assertNotUint8Array;
216
+ export const assertUint8ArrayPass = uint8ArrayGuards.assertUint8ArrayPass;
217
+ export const assertNotUint8ArrayPass = uint8ArrayGuards.assertNotUint8ArrayPass;
218
+ const uint8ClampedArrayGuards = createInstanceGuards('Uint8ClampedArray', Uint8ClampedArray);
219
+ export const isUint8ClampedArray = uint8ClampedArrayGuards.isUint8ClampedArray;
220
+ export const isNotUint8ClampedArray = uint8ClampedArrayGuards.isNotUint8ClampedArray;
221
+ export const assertUint8ClampedArray = uint8ClampedArrayGuards.assertUint8ClampedArray;
222
+ export const assertNotUint8ClampedArray = uint8ClampedArrayGuards.assertNotUint8ClampedArray;
223
+ export const assertUint8ClampedArrayPass = uint8ClampedArrayGuards.assertUint8ClampedArrayPass;
224
+ export const assertNotUint8ClampedArrayPass = uint8ClampedArrayGuards.assertNotUint8ClampedArrayPass;
225
+ const int16ArrayGuards = createInstanceGuards('Int16Array', Int16Array);
226
+ export const isInt16Array = int16ArrayGuards.isInt16Array;
227
+ export const isNotInt16Array = int16ArrayGuards.isNotInt16Array;
228
+ export const assertInt16Array = int16ArrayGuards.assertInt16Array;
229
+ export const assertNotInt16Array = int16ArrayGuards.assertNotInt16Array;
230
+ export const assertInt16ArrayPass = int16ArrayGuards.assertInt16ArrayPass;
231
+ export const assertNotInt16ArrayPass = int16ArrayGuards.assertNotInt16ArrayPass;
232
+ const uint16ArrayGuards = createInstanceGuards('Uint16Array', Uint16Array);
233
+ export const isUint16Array = uint16ArrayGuards.isUint16Array;
234
+ export const isNotUint16Array = uint16ArrayGuards.isNotUint16Array;
235
+ export const assertUint16Array = uint16ArrayGuards.assertUint16Array;
236
+ export const assertNotUint16Array = uint16ArrayGuards.assertNotUint16Array;
237
+ export const assertUint16ArrayPass = uint16ArrayGuards.assertUint16ArrayPass;
238
+ export const assertNotUint16ArrayPass = uint16ArrayGuards.assertNotUint16ArrayPass;
239
+ const int32ArrayGuards = createInstanceGuards('Int32Array', Int32Array);
240
+ export const isInt32Array = int32ArrayGuards.isInt32Array;
241
+ export const isNotInt32Array = int32ArrayGuards.isNotInt32Array;
242
+ export const assertInt32Array = int32ArrayGuards.assertInt32Array;
243
+ export const assertNotInt32Array = int32ArrayGuards.assertNotInt32Array;
244
+ export const assertInt32ArrayPass = int32ArrayGuards.assertInt32ArrayPass;
245
+ export const assertNotInt32ArrayPass = int32ArrayGuards.assertNotInt32ArrayPass;
246
+ const uint32ArrayGuards = createInstanceGuards('Uint32Array', Uint32Array);
247
+ export const isUint32Array = uint32ArrayGuards.isUint32Array;
248
+ export const isNotUint32Array = uint32ArrayGuards.isNotUint32Array;
249
+ export const assertUint32Array = uint32ArrayGuards.assertUint32Array;
250
+ export const assertNotUint32Array = uint32ArrayGuards.assertNotUint32Array;
251
+ export const assertUint32ArrayPass = uint32ArrayGuards.assertUint32ArrayPass;
252
+ export const assertNotUint32ArrayPass = uint32ArrayGuards.assertNotUint32ArrayPass;
253
+ const float32ArrayGuards = createInstanceGuards('Float32Array', Float32Array);
254
+ export const isFloat32Array = float32ArrayGuards.isFloat32Array;
255
+ export const isNotFloat32Array = float32ArrayGuards.isNotFloat32Array;
256
+ export const assertFloat32Array = float32ArrayGuards.assertFloat32Array;
257
+ export const assertNotFloat32Array = float32ArrayGuards.assertNotFloat32Array;
258
+ export const assertFloat32ArrayPass = float32ArrayGuards.assertFloat32ArrayPass;
259
+ export const assertNotFloat32ArrayPass = float32ArrayGuards.assertNotFloat32ArrayPass;
260
+ const float64ArrayGuards = createInstanceGuards('Float64Array', Float64Array);
261
+ export const isFloat64Array = float64ArrayGuards.isFloat64Array;
262
+ export const isNotFloat64Array = float64ArrayGuards.isNotFloat64Array;
263
+ export const assertFloat64Array = float64ArrayGuards.assertFloat64Array;
264
+ export const assertNotFloat64Array = float64ArrayGuards.assertNotFloat64Array;
265
+ export const assertFloat64ArrayPass = float64ArrayGuards.assertFloat64ArrayPass;
266
+ export const assertNotFloat64ArrayPass = float64ArrayGuards.assertNotFloat64ArrayPass;
267
+ const bigInt64ArrayGuards = createInstanceGuards('BigInt64Array', BigInt64Array);
268
+ export const isBigInt64Array = bigInt64ArrayGuards.isBigInt64Array;
269
+ export const isNotBigInt64Array = bigInt64ArrayGuards.isNotBigInt64Array;
270
+ export const assertBigInt64Array = bigInt64ArrayGuards.assertBigInt64Array;
271
+ export const assertNotBigInt64Array = bigInt64ArrayGuards.assertNotBigInt64Array;
272
+ export const assertBigInt64ArrayPass = bigInt64ArrayGuards.assertBigInt64ArrayPass;
273
+ export const assertNotBigInt64ArrayPass = bigInt64ArrayGuards.assertNotBigInt64ArrayPass;
274
+ const bigUint64ArrayGuards = createInstanceGuards('BigUint64Array', BigUint64Array);
275
+ export const isBigUint64Array = bigUint64ArrayGuards.isBigUint64Array;
276
+ export const isNotBigUint64Array = bigUint64ArrayGuards.isNotBigUint64Array;
277
+ export const assertBigUint64Array = bigUint64ArrayGuards.assertBigUint64Array;
278
+ export const assertNotBigUint64Array = bigUint64ArrayGuards.assertNotBigUint64Array;
279
+ export const assertBigUint64ArrayPass = bigUint64ArrayGuards.assertBigUint64ArrayPass;
280
+ export const assertNotBigUint64ArrayPass = bigUint64ArrayGuards.assertNotBigUint64ArrayPass;
281
+ const dataViewGuards = createInstanceGuards('DataView', DataView);
282
+ export const isDataView = dataViewGuards.isDataView;
283
+ export const isNotDataView = dataViewGuards.isNotDataView;
284
+ export const assertDataView = dataViewGuards.assertDataView;
285
+ export const assertNotDataView = dataViewGuards.assertNotDataView;
286
+ export const assertDataViewPass = dataViewGuards.assertDataViewPass;
287
+ export const assertNotDataViewPass = dataViewGuards.assertNotDataViewPass;
288
+ const typedArrayGuards = createGuards('TypedArray', (value) => (ArrayBuffer.isView(value) && isNotDataView(value)));
289
+ export const isTypedArray = typedArrayGuards.isTypedArray;
290
+ export const isNotTypedArray = typedArrayGuards.isNotTypedArray;
291
+ export const assertTypedArray = typedArrayGuards.assertTypedArray;
292
+ export const assertNotTypedArray = typedArrayGuards.assertNotTypedArray;
293
+ export const assertTypedArrayPass = typedArrayGuards.assertTypedArrayPass;
294
+ export const assertNotTypedArrayPass = typedArrayGuards.assertNotTypedArrayPass;
295
+ const setGuards = createInstanceGuards('Set', Set);
296
+ export const isSet = setGuards.isSet;
297
+ export const isNotSet = setGuards.isNotSet;
298
+ export const assertSet = setGuards.assertSet;
299
+ export const assertNotSet = setGuards.assertNotSet;
300
+ export const assertSetPass = setGuards.assertSetPass;
301
+ export const assertNotSetPass = setGuards.assertNotSetPass;
302
+ const mapGuards = createInstanceGuards('Map', Map);
303
+ export const isMap = mapGuards.isMap;
304
+ export const isNotMap = mapGuards.isNotMap;
305
+ export const assertMap = mapGuards.assertMap;
306
+ export const assertNotMap = mapGuards.assertNotMap;
307
+ export const assertMapPass = mapGuards.assertMapPass;
308
+ export const assertNotMapPass = mapGuards.assertNotMapPass;
309
+ const promiseGuards = createInstanceGuards('Promise', Promise);
310
+ export const isPromise = promiseGuards.isPromise;
311
+ export const isNotPromise = promiseGuards.isNotPromise;
312
+ export const assertPromise = promiseGuards.assertPromise;
313
+ export const assertNotPromise = promiseGuards.assertNotPromise;
314
+ export const assertPromisePass = promiseGuards.assertPromisePass;
315
+ export const assertNotPromisePass = promiseGuards.assertNotPromisePass;
316
+ const errorGuards = createInstanceGuards('error', Error);
317
+ export const isError = errorGuards.isError;
318
+ export const isNotError = errorGuards.isNotError;
319
+ export const assertError = errorGuards.assertError;
320
+ export const assertNotError = errorGuards.assertNotError;
321
+ export const assertErrorPass = errorGuards.assertErrorPass;
322
+ export const assertNotErrorPass = errorGuards.assertNotErrorPass;
323
+ const readableStreamGuards = createGuards('ReadableStream', (value) => (supportsReadableStream && (value instanceof ReadableStream)));
324
+ export const isReadableStream = readableStreamGuards.isReadableStream;
325
+ export const isNotReadableStream = readableStreamGuards.isNotReadableStream;
326
+ export const assertReadableStream = readableStreamGuards.assertReadableStream;
327
+ export const assertNotReadableStream = readableStreamGuards.assertNotReadableStream;
328
+ export const assertReadableStreamPass = readableStreamGuards.assertReadableStreamPass;
329
+ export const assertNotReadableStreamPass = readableStreamGuards.assertNotReadableStreamPass;