is-kit 1.7.0 → 1.7.2
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.
- package/dist/index.d.mts +154 -153
- package/dist/index.d.ts +154 -153
- package/dist/index.js +176 -168
- package/dist/index.mjs +176 -168
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -97,19 +97,140 @@ __export(index_exports, {
|
|
|
97
97
|
});
|
|
98
98
|
module.exports = __toCommonJS(index_exports);
|
|
99
99
|
|
|
100
|
+
// src/core/assert.ts
|
|
101
|
+
var DEFAULT_ASSERT_MESSAGE = "Assertion failed";
|
|
102
|
+
function assert(fn, value, message) {
|
|
103
|
+
if (fn(value)) return;
|
|
104
|
+
throw new Error(message ?? DEFAULT_ASSERT_MESSAGE);
|
|
105
|
+
}
|
|
106
|
+
|
|
100
107
|
// src/core/define.ts
|
|
101
108
|
function define(fn) {
|
|
102
109
|
return (value) => !!fn(value);
|
|
103
110
|
}
|
|
104
111
|
|
|
105
|
-
// src/
|
|
106
|
-
var
|
|
112
|
+
// src/utils/object-tags.ts
|
|
113
|
+
var objectToString = Object.prototype.toString;
|
|
114
|
+
var OBJECT_TAG_DATE = "[object Date]";
|
|
115
|
+
var OBJECT_TAG_REGEXP = "[object RegExp]";
|
|
116
|
+
var OBJECT_TAG_MAP = "[object Map]";
|
|
117
|
+
var OBJECT_TAG_SET = "[object Set]";
|
|
118
|
+
var OBJECT_TAG_WEAK_MAP = "[object WeakMap]";
|
|
119
|
+
var OBJECT_TAG_WEAK_SET = "[object WeakSet]";
|
|
120
|
+
var OBJECT_TAG_ARRAY_BUFFER = "[object ArrayBuffer]";
|
|
121
|
+
var OBJECT_TAG_DATA_VIEW = "[object DataView]";
|
|
122
|
+
var OBJECT_TAG_ERROR = "[object Error]";
|
|
123
|
+
var getTag = (value) => objectToString.call(value);
|
|
107
124
|
|
|
108
|
-
// src/core/
|
|
109
|
-
var
|
|
110
|
-
function
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
// src/core/object.ts
|
|
126
|
+
var defineOptionalInstanceGuard = (constructor) => constructor === void 0 ? define(() => false) : define(
|
|
127
|
+
(value) => typeof constructor === "function" && value instanceof constructor
|
|
128
|
+
);
|
|
129
|
+
var isFunction = define(
|
|
130
|
+
(value) => typeof value === "function"
|
|
131
|
+
);
|
|
132
|
+
var isObject = define(
|
|
133
|
+
(value) => typeof value === "object" && value !== null
|
|
134
|
+
);
|
|
135
|
+
var readObjectProperty = (value, key) => {
|
|
136
|
+
if (!isObject(value) && !isFunction(value)) return void 0;
|
|
137
|
+
return value[key];
|
|
138
|
+
};
|
|
139
|
+
var isPlainObject = define((value) => {
|
|
140
|
+
if (!isObject(value)) return false;
|
|
141
|
+
const proto = Object.getPrototypeOf(value);
|
|
142
|
+
return proto === null || Object.getPrototypeOf(proto) === null;
|
|
143
|
+
});
|
|
144
|
+
var isArray = define(Array.isArray);
|
|
145
|
+
var isDate = define(
|
|
146
|
+
(value) => getTag(value) === OBJECT_TAG_DATE && !Number.isNaN(value.getTime())
|
|
147
|
+
);
|
|
148
|
+
var isRegExp = define(
|
|
149
|
+
(value) => getTag(value) === OBJECT_TAG_REGEXP
|
|
150
|
+
);
|
|
151
|
+
var isMap = define(
|
|
152
|
+
(value) => getTag(value) === OBJECT_TAG_MAP
|
|
153
|
+
);
|
|
154
|
+
var isSet = define(
|
|
155
|
+
(value) => getTag(value) === OBJECT_TAG_SET
|
|
156
|
+
);
|
|
157
|
+
var isWeakMap = define(
|
|
158
|
+
(value) => getTag(value) === OBJECT_TAG_WEAK_MAP
|
|
159
|
+
);
|
|
160
|
+
var isWeakSet = define(
|
|
161
|
+
(value) => getTag(value) === OBJECT_TAG_WEAK_SET
|
|
162
|
+
);
|
|
163
|
+
var isPromiseLike = define(
|
|
164
|
+
(value) => isFunction(readObjectProperty(value, "then"))
|
|
165
|
+
);
|
|
166
|
+
var isIterable = define(
|
|
167
|
+
(value) => isFunction(readObjectProperty(value, Symbol.iterator))
|
|
168
|
+
);
|
|
169
|
+
var isAsyncIterable = define(
|
|
170
|
+
(value) => isFunction(readObjectProperty(value, Symbol.asyncIterator))
|
|
171
|
+
);
|
|
172
|
+
var isArrayBuffer = define(
|
|
173
|
+
(value) => getTag(value) === OBJECT_TAG_ARRAY_BUFFER
|
|
174
|
+
);
|
|
175
|
+
var isDataView = define(
|
|
176
|
+
(value) => getTag(value) === OBJECT_TAG_DATA_VIEW
|
|
177
|
+
);
|
|
178
|
+
var isTypedArray = define(
|
|
179
|
+
(value) => ArrayBuffer.isView(value) && getTag(value) !== OBJECT_TAG_DATA_VIEW
|
|
180
|
+
);
|
|
181
|
+
var isError = define(
|
|
182
|
+
(value) => value instanceof Error || getTag(value) === OBJECT_TAG_ERROR
|
|
183
|
+
);
|
|
184
|
+
var isURL = defineOptionalInstanceGuard(
|
|
185
|
+
typeof URL === "undefined" ? void 0 : URL
|
|
186
|
+
);
|
|
187
|
+
var isBlob = defineOptionalInstanceGuard(
|
|
188
|
+
typeof Blob === "undefined" ? void 0 : Blob
|
|
189
|
+
);
|
|
190
|
+
var isInstanceOf = (constructor) => define((value) => value instanceof constructor);
|
|
191
|
+
|
|
192
|
+
// src/core/equals.ts
|
|
193
|
+
var guardedBy = (guard) => define((input) => guard(input));
|
|
194
|
+
function equals(target) {
|
|
195
|
+
return define((input) => Object.is(input, target));
|
|
196
|
+
}
|
|
197
|
+
function equalsBy(guard, selector) {
|
|
198
|
+
const matchesGuard = guardedBy(guard);
|
|
199
|
+
const createComparator = (selectorFn) => (target) => define((input) => {
|
|
200
|
+
if (!matchesGuard(input)) return false;
|
|
201
|
+
return Object.is(selectorFn(input), target);
|
|
202
|
+
});
|
|
203
|
+
if (selector) {
|
|
204
|
+
return createComparator(selector);
|
|
205
|
+
}
|
|
206
|
+
return (selectorFn) => createComparator(selectorFn);
|
|
207
|
+
}
|
|
208
|
+
function equalsKey(key, target) {
|
|
209
|
+
const hasMatchingKey = define((input) => {
|
|
210
|
+
return isObject(input) && Object.hasOwn(input, key) && Object.is(input[key], target);
|
|
211
|
+
});
|
|
212
|
+
return (input) => hasMatchingKey(input);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// src/core/key.ts
|
|
216
|
+
var hasKey = (key) => define(
|
|
217
|
+
(input) => isObject(input) && Object.hasOwn(input, key)
|
|
218
|
+
);
|
|
219
|
+
var hasKeys = (...keys) => {
|
|
220
|
+
if (keys.length === 0) {
|
|
221
|
+
return define(() => false);
|
|
222
|
+
}
|
|
223
|
+
return define(
|
|
224
|
+
(input) => isObject(input) && keys.every((key) => Object.hasOwn(input, key))
|
|
225
|
+
);
|
|
226
|
+
};
|
|
227
|
+
function narrowKeyTo(guard, key) {
|
|
228
|
+
return (target) => {
|
|
229
|
+
const keyEquals = equalsKey(key, target);
|
|
230
|
+
return define(
|
|
231
|
+
(input) => guard(input) && keyEquals(input)
|
|
232
|
+
);
|
|
233
|
+
};
|
|
113
234
|
}
|
|
114
235
|
|
|
115
236
|
// src/utils/guard-collections.ts
|
|
@@ -202,101 +323,6 @@ function required(fn) {
|
|
|
202
323
|
return requireWhen((value) => value === void 0, fn);
|
|
203
324
|
}
|
|
204
325
|
|
|
205
|
-
// src/utils/object-tags.ts
|
|
206
|
-
var objectToString = Object.prototype.toString;
|
|
207
|
-
var OBJECT_TAG_DATE = "[object Date]";
|
|
208
|
-
var OBJECT_TAG_REGEXP = "[object RegExp]";
|
|
209
|
-
var OBJECT_TAG_MAP = "[object Map]";
|
|
210
|
-
var OBJECT_TAG_SET = "[object Set]";
|
|
211
|
-
var OBJECT_TAG_WEAK_MAP = "[object WeakMap]";
|
|
212
|
-
var OBJECT_TAG_WEAK_SET = "[object WeakSet]";
|
|
213
|
-
var OBJECT_TAG_ARRAY_BUFFER = "[object ArrayBuffer]";
|
|
214
|
-
var OBJECT_TAG_DATA_VIEW = "[object DataView]";
|
|
215
|
-
var OBJECT_TAG_ERROR = "[object Error]";
|
|
216
|
-
var getTag = (value) => objectToString.call(value);
|
|
217
|
-
|
|
218
|
-
// src/core/object.ts
|
|
219
|
-
var isFunction = define(
|
|
220
|
-
(value) => typeof value === "function"
|
|
221
|
-
);
|
|
222
|
-
var isObject = define(
|
|
223
|
-
(value) => typeof value === "object" && value !== null
|
|
224
|
-
);
|
|
225
|
-
var isPlainObject = define((value) => {
|
|
226
|
-
if (!isObject(value)) return false;
|
|
227
|
-
const proto = Object.getPrototypeOf(value);
|
|
228
|
-
return proto === null || Object.getPrototypeOf(proto) === null;
|
|
229
|
-
});
|
|
230
|
-
var isArray = define(Array.isArray);
|
|
231
|
-
var isDate = define(
|
|
232
|
-
(value) => getTag(value) === OBJECT_TAG_DATE && !Number.isNaN(value.getTime())
|
|
233
|
-
);
|
|
234
|
-
var isRegExp = define(
|
|
235
|
-
(value) => getTag(value) === OBJECT_TAG_REGEXP
|
|
236
|
-
);
|
|
237
|
-
var isMap = define(
|
|
238
|
-
(value) => getTag(value) === OBJECT_TAG_MAP
|
|
239
|
-
);
|
|
240
|
-
var isSet = define(
|
|
241
|
-
(value) => getTag(value) === OBJECT_TAG_SET
|
|
242
|
-
);
|
|
243
|
-
var isWeakMap = define(
|
|
244
|
-
(value) => getTag(value) === OBJECT_TAG_WEAK_MAP
|
|
245
|
-
);
|
|
246
|
-
var isWeakSet = define(
|
|
247
|
-
(value) => getTag(value) === OBJECT_TAG_WEAK_SET
|
|
248
|
-
);
|
|
249
|
-
var isPromiseLike = define((value) => {
|
|
250
|
-
if (!isObject(value) && !isFunction(value)) return false;
|
|
251
|
-
return isFunction(value.then);
|
|
252
|
-
});
|
|
253
|
-
var isIterable = define((value) => {
|
|
254
|
-
if (!isObject(value) && !isFunction(value)) return false;
|
|
255
|
-
return isFunction(value[Symbol.iterator]);
|
|
256
|
-
});
|
|
257
|
-
var isAsyncIterable = define((value) => {
|
|
258
|
-
if (!isObject(value) && !isFunction(value)) return false;
|
|
259
|
-
return isFunction(value[Symbol.asyncIterator]);
|
|
260
|
-
});
|
|
261
|
-
var isArrayBuffer = define(
|
|
262
|
-
(value) => getTag(value) === OBJECT_TAG_ARRAY_BUFFER
|
|
263
|
-
);
|
|
264
|
-
var isDataView = define(
|
|
265
|
-
(value) => getTag(value) === OBJECT_TAG_DATA_VIEW
|
|
266
|
-
);
|
|
267
|
-
var isTypedArray = define(
|
|
268
|
-
(value) => ArrayBuffer.isView(value) && getTag(value) !== OBJECT_TAG_DATA_VIEW
|
|
269
|
-
);
|
|
270
|
-
var isError = define(
|
|
271
|
-
(value) => value instanceof Error || getTag(value) === OBJECT_TAG_ERROR
|
|
272
|
-
);
|
|
273
|
-
var isURL = typeof URL !== "undefined" ? define((value) => value instanceof URL) : define(() => false);
|
|
274
|
-
var isBlob = typeof Blob !== "undefined" ? define((value) => value instanceof Blob) : define(() => false);
|
|
275
|
-
var isInstanceOf = (constructor) => define((value) => value instanceof constructor);
|
|
276
|
-
|
|
277
|
-
// src/core/equals.ts
|
|
278
|
-
var guardedBy = (guard) => define((input) => guard(input));
|
|
279
|
-
function equals(target) {
|
|
280
|
-
return define((input) => Object.is(input, target));
|
|
281
|
-
}
|
|
282
|
-
function equalsBy(guard, selector) {
|
|
283
|
-
const matchesGuard = guardedBy(guard);
|
|
284
|
-
const createComparator = (selectorFn) => (target) => define((input) => {
|
|
285
|
-
if (!matchesGuard(input)) return false;
|
|
286
|
-
return Object.is(selectorFn(input), target);
|
|
287
|
-
});
|
|
288
|
-
if (selector) {
|
|
289
|
-
return createComparator(selector);
|
|
290
|
-
}
|
|
291
|
-
return (selectorFn) => createComparator(selectorFn);
|
|
292
|
-
}
|
|
293
|
-
function equalsKey(key, target) {
|
|
294
|
-
const hasMatchingKey = define((input) => {
|
|
295
|
-
return isObject(input) && Object.hasOwn(input, key) && Object.is(input[key], target);
|
|
296
|
-
});
|
|
297
|
-
return (input) => hasMatchingKey(input);
|
|
298
|
-
}
|
|
299
|
-
|
|
300
326
|
// src/core/parse.ts
|
|
301
327
|
function safeParse(fn, value) {
|
|
302
328
|
const valid = fn(value);
|
|
@@ -306,6 +332,9 @@ function safeParseWith(fn) {
|
|
|
306
332
|
return (value) => safeParse(fn, value);
|
|
307
333
|
}
|
|
308
334
|
|
|
335
|
+
// src/core/predicate.ts
|
|
336
|
+
var predicateToRefine = (fn) => (value) => fn(value);
|
|
337
|
+
|
|
309
338
|
// src/core/primitive.ts
|
|
310
339
|
var isString = define((value) => typeof value === "string");
|
|
311
340
|
var isNumberPrimitive = define(
|
|
@@ -359,13 +388,6 @@ function nonEmptyArrayOf(elementGuard) {
|
|
|
359
388
|
);
|
|
360
389
|
}
|
|
361
390
|
|
|
362
|
-
// src/core/combinators/set.ts
|
|
363
|
-
function setOf(valueGuard) {
|
|
364
|
-
return define(
|
|
365
|
-
(input) => isSet(input) && everySetValue(input, valueGuard)
|
|
366
|
-
);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
391
|
// src/core/combinators/map.ts
|
|
370
392
|
function mapOf(keyGuard, valueGuard) {
|
|
371
393
|
return define(
|
|
@@ -373,18 +395,46 @@ function mapOf(keyGuard, valueGuard) {
|
|
|
373
395
|
);
|
|
374
396
|
}
|
|
375
397
|
|
|
376
|
-
// src/core/combinators/tuple.ts
|
|
377
|
-
function tupleOf(...guards) {
|
|
378
|
-
return define(
|
|
379
|
-
(input) => Array.isArray(input) && everyTupleValue(input, guards)
|
|
380
|
-
);
|
|
381
|
-
}
|
|
382
|
-
|
|
383
398
|
// src/core/combinators/one-of.ts
|
|
384
399
|
function oneOf(...guards) {
|
|
385
400
|
return or(...guards);
|
|
386
401
|
}
|
|
387
402
|
|
|
403
|
+
// src/core/combinators/one-of-values.ts
|
|
404
|
+
var ONE_OF_VALUES_LINEAR_SCAN_MAX = 8;
|
|
405
|
+
var isSingleArrayArg = define(
|
|
406
|
+
(value) => Array.isArray(value) && value.length === 1 && Array.isArray(value[0])
|
|
407
|
+
);
|
|
408
|
+
var normalizeValues = (args) => isSingleArrayArg(args) ? args[0] : args;
|
|
409
|
+
var createLinearPredicate = (items) => {
|
|
410
|
+
return define((input) => {
|
|
411
|
+
return items.some((value) => Object.is(value, input));
|
|
412
|
+
});
|
|
413
|
+
};
|
|
414
|
+
var createSetPredicate = (items) => {
|
|
415
|
+
let hasPositiveZero = false;
|
|
416
|
+
let hasNegativeZero = false;
|
|
417
|
+
const valueSet = /* @__PURE__ */ new Set();
|
|
418
|
+
for (const literalValue of items) {
|
|
419
|
+
if (isZero(literalValue)) {
|
|
420
|
+
if (Object.is(literalValue, -0)) hasNegativeZero = true;
|
|
421
|
+
else hasPositiveZero = true;
|
|
422
|
+
} else {
|
|
423
|
+
valueSet.add(literalValue);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return define((input) => {
|
|
427
|
+
if (isZero(input)) {
|
|
428
|
+
return Object.is(input, -0) ? hasNegativeZero : hasPositiveZero;
|
|
429
|
+
}
|
|
430
|
+
return valueSet.has(input);
|
|
431
|
+
});
|
|
432
|
+
};
|
|
433
|
+
function oneOfValues(...args) {
|
|
434
|
+
const items = normalizeValues(args);
|
|
435
|
+
return items.length <= ONE_OF_VALUES_LINEAR_SCAN_MAX ? createLinearPredicate(items) : createSetPredicate(items);
|
|
436
|
+
}
|
|
437
|
+
|
|
388
438
|
// src/core/combinators/record.ts
|
|
389
439
|
function recordOf(keyFunction, valueFunction) {
|
|
390
440
|
return define(
|
|
@@ -392,6 +442,13 @@ function recordOf(keyFunction, valueFunction) {
|
|
|
392
442
|
);
|
|
393
443
|
}
|
|
394
444
|
|
|
445
|
+
// src/core/combinators/set.ts
|
|
446
|
+
function setOf(valueGuard) {
|
|
447
|
+
return define(
|
|
448
|
+
(input) => isSet(input) && everySetValue(input, valueGuard)
|
|
449
|
+
);
|
|
450
|
+
}
|
|
451
|
+
|
|
395
452
|
// src/core/combinators/struct.ts
|
|
396
453
|
var isOptionalSchemaField = define(
|
|
397
454
|
// WHY: Optional fields are represented as a small tagged object so `struct`
|
|
@@ -435,60 +492,11 @@ function struct(schema, options) {
|
|
|
435
492
|
});
|
|
436
493
|
}
|
|
437
494
|
|
|
438
|
-
// src/core/combinators/
|
|
439
|
-
|
|
440
|
-
var isSingleArrayArg = define(
|
|
441
|
-
(value) => Array.isArray(value) && value.length === 1 && Array.isArray(value[0])
|
|
442
|
-
);
|
|
443
|
-
var normalizeValues = (args) => isSingleArrayArg(args) ? args[0] : args;
|
|
444
|
-
var createLinearPredicate = (items) => {
|
|
445
|
-
return define((input) => {
|
|
446
|
-
return items.some((value) => Object.is(value, input));
|
|
447
|
-
});
|
|
448
|
-
};
|
|
449
|
-
var createSetPredicate = (items) => {
|
|
450
|
-
let hasPositiveZero = false;
|
|
451
|
-
let hasNegativeZero = false;
|
|
452
|
-
const valueSet = /* @__PURE__ */ new Set();
|
|
453
|
-
for (const literalValue of items) {
|
|
454
|
-
if (isZero(literalValue)) {
|
|
455
|
-
if (Object.is(literalValue, -0)) hasNegativeZero = true;
|
|
456
|
-
else hasPositiveZero = true;
|
|
457
|
-
} else {
|
|
458
|
-
valueSet.add(literalValue);
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
return define((input) => {
|
|
462
|
-
if (isZero(input)) {
|
|
463
|
-
return Object.is(input, -0) ? hasNegativeZero : hasPositiveZero;
|
|
464
|
-
}
|
|
465
|
-
return valueSet.has(input);
|
|
466
|
-
});
|
|
467
|
-
};
|
|
468
|
-
function oneOfValues(...args) {
|
|
469
|
-
const items = normalizeValues(args);
|
|
470
|
-
return items.length <= ONE_OF_VALUES_LINEAR_SCAN_MAX ? createLinearPredicate(items) : createSetPredicate(items);
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
// src/core/key.ts
|
|
474
|
-
var hasKey = (key) => define(
|
|
475
|
-
(input) => isObject(input) && Object.hasOwn(input, key)
|
|
476
|
-
);
|
|
477
|
-
var hasKeys = (...keys) => {
|
|
478
|
-
if (keys.length === 0) {
|
|
479
|
-
return define(() => false);
|
|
480
|
-
}
|
|
495
|
+
// src/core/combinators/tuple.ts
|
|
496
|
+
function tupleOf(...guards) {
|
|
481
497
|
return define(
|
|
482
|
-
(input) =>
|
|
498
|
+
(input) => Array.isArray(input) && everyTupleValue(input, guards)
|
|
483
499
|
);
|
|
484
|
-
};
|
|
485
|
-
function narrowKeyTo(guard, key) {
|
|
486
|
-
return (target) => {
|
|
487
|
-
const keyEquals = equalsKey(key, target);
|
|
488
|
-
return define(
|
|
489
|
-
(input) => guard(input) && keyEquals(input)
|
|
490
|
-
);
|
|
491
|
-
};
|
|
492
500
|
}
|
|
493
501
|
// Annotate the CommonJS export names for ESM import in node:
|
|
494
502
|
0 && (module.exports = {
|