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.mjs CHANGED
@@ -1,16 +1,137 @@
1
+ // src/core/assert.ts
2
+ var DEFAULT_ASSERT_MESSAGE = "Assertion failed";
3
+ function assert(fn, value, message) {
4
+ if (fn(value)) return;
5
+ throw new Error(message ?? DEFAULT_ASSERT_MESSAGE);
6
+ }
7
+
1
8
  // src/core/define.ts
2
9
  function define(fn) {
3
10
  return (value) => !!fn(value);
4
11
  }
5
12
 
6
- // src/core/predicate.ts
7
- var predicateToRefine = (fn) => (value) => fn(value);
13
+ // src/utils/object-tags.ts
14
+ var objectToString = Object.prototype.toString;
15
+ var OBJECT_TAG_DATE = "[object Date]";
16
+ var OBJECT_TAG_REGEXP = "[object RegExp]";
17
+ var OBJECT_TAG_MAP = "[object Map]";
18
+ var OBJECT_TAG_SET = "[object Set]";
19
+ var OBJECT_TAG_WEAK_MAP = "[object WeakMap]";
20
+ var OBJECT_TAG_WEAK_SET = "[object WeakSet]";
21
+ var OBJECT_TAG_ARRAY_BUFFER = "[object ArrayBuffer]";
22
+ var OBJECT_TAG_DATA_VIEW = "[object DataView]";
23
+ var OBJECT_TAG_ERROR = "[object Error]";
24
+ var getTag = (value) => objectToString.call(value);
8
25
 
9
- // src/core/assert.ts
10
- var DEFAULT_ASSERT_MESSAGE = "Assertion failed";
11
- function assert(fn, value, message) {
12
- if (fn(value)) return;
13
- throw new Error(message ?? DEFAULT_ASSERT_MESSAGE);
26
+ // src/core/object.ts
27
+ var defineOptionalInstanceGuard = (constructor) => constructor === void 0 ? define(() => false) : define(
28
+ (value) => typeof constructor === "function" && value instanceof constructor
29
+ );
30
+ var isFunction = define(
31
+ (value) => typeof value === "function"
32
+ );
33
+ var isObject = define(
34
+ (value) => typeof value === "object" && value !== null
35
+ );
36
+ var readObjectProperty = (value, key) => {
37
+ if (!isObject(value) && !isFunction(value)) return void 0;
38
+ return value[key];
39
+ };
40
+ var isPlainObject = define((value) => {
41
+ if (!isObject(value)) return false;
42
+ const proto = Object.getPrototypeOf(value);
43
+ return proto === null || Object.getPrototypeOf(proto) === null;
44
+ });
45
+ var isArray = define(Array.isArray);
46
+ var isDate = define(
47
+ (value) => getTag(value) === OBJECT_TAG_DATE && !Number.isNaN(value.getTime())
48
+ );
49
+ var isRegExp = define(
50
+ (value) => getTag(value) === OBJECT_TAG_REGEXP
51
+ );
52
+ var isMap = define(
53
+ (value) => getTag(value) === OBJECT_TAG_MAP
54
+ );
55
+ var isSet = define(
56
+ (value) => getTag(value) === OBJECT_TAG_SET
57
+ );
58
+ var isWeakMap = define(
59
+ (value) => getTag(value) === OBJECT_TAG_WEAK_MAP
60
+ );
61
+ var isWeakSet = define(
62
+ (value) => getTag(value) === OBJECT_TAG_WEAK_SET
63
+ );
64
+ var isPromiseLike = define(
65
+ (value) => isFunction(readObjectProperty(value, "then"))
66
+ );
67
+ var isIterable = define(
68
+ (value) => isFunction(readObjectProperty(value, Symbol.iterator))
69
+ );
70
+ var isAsyncIterable = define(
71
+ (value) => isFunction(readObjectProperty(value, Symbol.asyncIterator))
72
+ );
73
+ var isArrayBuffer = define(
74
+ (value) => getTag(value) === OBJECT_TAG_ARRAY_BUFFER
75
+ );
76
+ var isDataView = define(
77
+ (value) => getTag(value) === OBJECT_TAG_DATA_VIEW
78
+ );
79
+ var isTypedArray = define(
80
+ (value) => ArrayBuffer.isView(value) && getTag(value) !== OBJECT_TAG_DATA_VIEW
81
+ );
82
+ var isError = define(
83
+ (value) => value instanceof Error || getTag(value) === OBJECT_TAG_ERROR
84
+ );
85
+ var isURL = defineOptionalInstanceGuard(
86
+ typeof URL === "undefined" ? void 0 : URL
87
+ );
88
+ var isBlob = defineOptionalInstanceGuard(
89
+ typeof Blob === "undefined" ? void 0 : Blob
90
+ );
91
+ var isInstanceOf = (constructor) => define((value) => value instanceof constructor);
92
+
93
+ // src/core/equals.ts
94
+ var guardedBy = (guard) => define((input) => guard(input));
95
+ function equals(target) {
96
+ return define((input) => Object.is(input, target));
97
+ }
98
+ function equalsBy(guard, selector) {
99
+ const matchesGuard = guardedBy(guard);
100
+ const createComparator = (selectorFn) => (target) => define((input) => {
101
+ if (!matchesGuard(input)) return false;
102
+ return Object.is(selectorFn(input), target);
103
+ });
104
+ if (selector) {
105
+ return createComparator(selector);
106
+ }
107
+ return (selectorFn) => createComparator(selectorFn);
108
+ }
109
+ function equalsKey(key, target) {
110
+ const hasMatchingKey = define((input) => {
111
+ return isObject(input) && Object.hasOwn(input, key) && Object.is(input[key], target);
112
+ });
113
+ return (input) => hasMatchingKey(input);
114
+ }
115
+
116
+ // src/core/key.ts
117
+ var hasKey = (key) => define(
118
+ (input) => isObject(input) && Object.hasOwn(input, key)
119
+ );
120
+ var hasKeys = (...keys) => {
121
+ if (keys.length === 0) {
122
+ return define(() => false);
123
+ }
124
+ return define(
125
+ (input) => isObject(input) && keys.every((key) => Object.hasOwn(input, key))
126
+ );
127
+ };
128
+ function narrowKeyTo(guard, key) {
129
+ return (target) => {
130
+ const keyEquals = equalsKey(key, target);
131
+ return define(
132
+ (input) => guard(input) && keyEquals(input)
133
+ );
134
+ };
14
135
  }
15
136
 
16
137
  // src/utils/guard-collections.ts
@@ -103,101 +224,6 @@ function required(fn) {
103
224
  return requireWhen((value) => value === void 0, fn);
104
225
  }
105
226
 
106
- // src/utils/object-tags.ts
107
- var objectToString = Object.prototype.toString;
108
- var OBJECT_TAG_DATE = "[object Date]";
109
- var OBJECT_TAG_REGEXP = "[object RegExp]";
110
- var OBJECT_TAG_MAP = "[object Map]";
111
- var OBJECT_TAG_SET = "[object Set]";
112
- var OBJECT_TAG_WEAK_MAP = "[object WeakMap]";
113
- var OBJECT_TAG_WEAK_SET = "[object WeakSet]";
114
- var OBJECT_TAG_ARRAY_BUFFER = "[object ArrayBuffer]";
115
- var OBJECT_TAG_DATA_VIEW = "[object DataView]";
116
- var OBJECT_TAG_ERROR = "[object Error]";
117
- var getTag = (value) => objectToString.call(value);
118
-
119
- // src/core/object.ts
120
- var isFunction = define(
121
- (value) => typeof value === "function"
122
- );
123
- var isObject = define(
124
- (value) => typeof value === "object" && value !== null
125
- );
126
- var isPlainObject = define((value) => {
127
- if (!isObject(value)) return false;
128
- const proto = Object.getPrototypeOf(value);
129
- return proto === null || Object.getPrototypeOf(proto) === null;
130
- });
131
- var isArray = define(Array.isArray);
132
- var isDate = define(
133
- (value) => getTag(value) === OBJECT_TAG_DATE && !Number.isNaN(value.getTime())
134
- );
135
- var isRegExp = define(
136
- (value) => getTag(value) === OBJECT_TAG_REGEXP
137
- );
138
- var isMap = define(
139
- (value) => getTag(value) === OBJECT_TAG_MAP
140
- );
141
- var isSet = define(
142
- (value) => getTag(value) === OBJECT_TAG_SET
143
- );
144
- var isWeakMap = define(
145
- (value) => getTag(value) === OBJECT_TAG_WEAK_MAP
146
- );
147
- var isWeakSet = define(
148
- (value) => getTag(value) === OBJECT_TAG_WEAK_SET
149
- );
150
- var isPromiseLike = define((value) => {
151
- if (!isObject(value) && !isFunction(value)) return false;
152
- return isFunction(value.then);
153
- });
154
- var isIterable = define((value) => {
155
- if (!isObject(value) && !isFunction(value)) return false;
156
- return isFunction(value[Symbol.iterator]);
157
- });
158
- var isAsyncIterable = define((value) => {
159
- if (!isObject(value) && !isFunction(value)) return false;
160
- return isFunction(value[Symbol.asyncIterator]);
161
- });
162
- var isArrayBuffer = define(
163
- (value) => getTag(value) === OBJECT_TAG_ARRAY_BUFFER
164
- );
165
- var isDataView = define(
166
- (value) => getTag(value) === OBJECT_TAG_DATA_VIEW
167
- );
168
- var isTypedArray = define(
169
- (value) => ArrayBuffer.isView(value) && getTag(value) !== OBJECT_TAG_DATA_VIEW
170
- );
171
- var isError = define(
172
- (value) => value instanceof Error || getTag(value) === OBJECT_TAG_ERROR
173
- );
174
- var isURL = typeof URL !== "undefined" ? define((value) => value instanceof URL) : define(() => false);
175
- var isBlob = typeof Blob !== "undefined" ? define((value) => value instanceof Blob) : define(() => false);
176
- var isInstanceOf = (constructor) => define((value) => value instanceof constructor);
177
-
178
- // src/core/equals.ts
179
- var guardedBy = (guard) => define((input) => guard(input));
180
- function equals(target) {
181
- return define((input) => Object.is(input, target));
182
- }
183
- function equalsBy(guard, selector) {
184
- const matchesGuard = guardedBy(guard);
185
- const createComparator = (selectorFn) => (target) => define((input) => {
186
- if (!matchesGuard(input)) return false;
187
- return Object.is(selectorFn(input), target);
188
- });
189
- if (selector) {
190
- return createComparator(selector);
191
- }
192
- return (selectorFn) => createComparator(selectorFn);
193
- }
194
- function equalsKey(key, target) {
195
- const hasMatchingKey = define((input) => {
196
- return isObject(input) && Object.hasOwn(input, key) && Object.is(input[key], target);
197
- });
198
- return (input) => hasMatchingKey(input);
199
- }
200
-
201
227
  // src/core/parse.ts
202
228
  function safeParse(fn, value) {
203
229
  const valid = fn(value);
@@ -207,6 +233,9 @@ function safeParseWith(fn) {
207
233
  return (value) => safeParse(fn, value);
208
234
  }
209
235
 
236
+ // src/core/predicate.ts
237
+ var predicateToRefine = (fn) => (value) => fn(value);
238
+
210
239
  // src/core/primitive.ts
211
240
  var isString = define((value) => typeof value === "string");
212
241
  var isNumberPrimitive = define(
@@ -260,13 +289,6 @@ function nonEmptyArrayOf(elementGuard) {
260
289
  );
261
290
  }
262
291
 
263
- // src/core/combinators/set.ts
264
- function setOf(valueGuard) {
265
- return define(
266
- (input) => isSet(input) && everySetValue(input, valueGuard)
267
- );
268
- }
269
-
270
292
  // src/core/combinators/map.ts
271
293
  function mapOf(keyGuard, valueGuard) {
272
294
  return define(
@@ -274,18 +296,46 @@ function mapOf(keyGuard, valueGuard) {
274
296
  );
275
297
  }
276
298
 
277
- // src/core/combinators/tuple.ts
278
- function tupleOf(...guards) {
279
- return define(
280
- (input) => Array.isArray(input) && everyTupleValue(input, guards)
281
- );
282
- }
283
-
284
299
  // src/core/combinators/one-of.ts
285
300
  function oneOf(...guards) {
286
301
  return or(...guards);
287
302
  }
288
303
 
304
+ // src/core/combinators/one-of-values.ts
305
+ var ONE_OF_VALUES_LINEAR_SCAN_MAX = 8;
306
+ var isSingleArrayArg = define(
307
+ (value) => Array.isArray(value) && value.length === 1 && Array.isArray(value[0])
308
+ );
309
+ var normalizeValues = (args) => isSingleArrayArg(args) ? args[0] : args;
310
+ var createLinearPredicate = (items) => {
311
+ return define((input) => {
312
+ return items.some((value) => Object.is(value, input));
313
+ });
314
+ };
315
+ var createSetPredicate = (items) => {
316
+ let hasPositiveZero = false;
317
+ let hasNegativeZero = false;
318
+ const valueSet = /* @__PURE__ */ new Set();
319
+ for (const literalValue of items) {
320
+ if (isZero(literalValue)) {
321
+ if (Object.is(literalValue, -0)) hasNegativeZero = true;
322
+ else hasPositiveZero = true;
323
+ } else {
324
+ valueSet.add(literalValue);
325
+ }
326
+ }
327
+ return define((input) => {
328
+ if (isZero(input)) {
329
+ return Object.is(input, -0) ? hasNegativeZero : hasPositiveZero;
330
+ }
331
+ return valueSet.has(input);
332
+ });
333
+ };
334
+ function oneOfValues(...args) {
335
+ const items = normalizeValues(args);
336
+ return items.length <= ONE_OF_VALUES_LINEAR_SCAN_MAX ? createLinearPredicate(items) : createSetPredicate(items);
337
+ }
338
+
289
339
  // src/core/combinators/record.ts
290
340
  function recordOf(keyFunction, valueFunction) {
291
341
  return define(
@@ -293,6 +343,13 @@ function recordOf(keyFunction, valueFunction) {
293
343
  );
294
344
  }
295
345
 
346
+ // src/core/combinators/set.ts
347
+ function setOf(valueGuard) {
348
+ return define(
349
+ (input) => isSet(input) && everySetValue(input, valueGuard)
350
+ );
351
+ }
352
+
296
353
  // src/core/combinators/struct.ts
297
354
  var isOptionalSchemaField = define(
298
355
  // WHY: Optional fields are represented as a small tagged object so `struct`
@@ -336,60 +393,11 @@ function struct(schema, options) {
336
393
  });
337
394
  }
338
395
 
339
- // src/core/combinators/one-of-values.ts
340
- var ONE_OF_VALUES_LINEAR_SCAN_MAX = 8;
341
- var isSingleArrayArg = define(
342
- (value) => Array.isArray(value) && value.length === 1 && Array.isArray(value[0])
343
- );
344
- var normalizeValues = (args) => isSingleArrayArg(args) ? args[0] : args;
345
- var createLinearPredicate = (items) => {
346
- return define((input) => {
347
- return items.some((value) => Object.is(value, input));
348
- });
349
- };
350
- var createSetPredicate = (items) => {
351
- let hasPositiveZero = false;
352
- let hasNegativeZero = false;
353
- const valueSet = /* @__PURE__ */ new Set();
354
- for (const literalValue of items) {
355
- if (isZero(literalValue)) {
356
- if (Object.is(literalValue, -0)) hasNegativeZero = true;
357
- else hasPositiveZero = true;
358
- } else {
359
- valueSet.add(literalValue);
360
- }
361
- }
362
- return define((input) => {
363
- if (isZero(input)) {
364
- return Object.is(input, -0) ? hasNegativeZero : hasPositiveZero;
365
- }
366
- return valueSet.has(input);
367
- });
368
- };
369
- function oneOfValues(...args) {
370
- const items = normalizeValues(args);
371
- return items.length <= ONE_OF_VALUES_LINEAR_SCAN_MAX ? createLinearPredicate(items) : createSetPredicate(items);
372
- }
373
-
374
- // src/core/key.ts
375
- var hasKey = (key) => define(
376
- (input) => isObject(input) && Object.hasOwn(input, key)
377
- );
378
- var hasKeys = (...keys) => {
379
- if (keys.length === 0) {
380
- return define(() => false);
381
- }
396
+ // src/core/combinators/tuple.ts
397
+ function tupleOf(...guards) {
382
398
  return define(
383
- (input) => isObject(input) && keys.every((key) => Object.hasOwn(input, key))
399
+ (input) => Array.isArray(input) && everyTupleValue(input, guards)
384
400
  );
385
- };
386
- function narrowKeyTo(guard, key) {
387
- return (target) => {
388
- const keyEquals = equalsKey(key, target);
389
- return define(
390
- (input) => guard(input) && keyEquals(input)
391
- );
392
- };
393
401
  }
394
402
  export {
395
403
  and,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "is-kit",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Make 'isXXX' easier. Let's make your code type safe and more readable!",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",