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.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/core/predicate.ts
106
- var predicateToRefine = (fn) => (value) => fn(value);
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/assert.ts
109
- var DEFAULT_ASSERT_MESSAGE = "Assertion failed";
110
- function assert(fn, value, message) {
111
- if (fn(value)) return;
112
- throw new Error(message ?? DEFAULT_ASSERT_MESSAGE);
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/one-of-values.ts
439
- var ONE_OF_VALUES_LINEAR_SCAN_MAX = 8;
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) => isObject(input) && keys.every((key) => Object.hasOwn(input, key))
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 = {