yummies 7.10.0 → 7.12.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.
Files changed (154) hide show
  1. package/async.cjs +162 -48
  2. package/async.cjs.map +1 -1
  3. package/async.d.ts +112 -13
  4. package/async.js +163 -54
  5. package/async.js.map +1 -1
  6. package/chunk-CVq3Gv4J.cjs +50 -0
  7. package/chunk-YKewjYmz.js +37 -0
  8. package/common.cjs +48 -8
  9. package/common.cjs.map +1 -1
  10. package/common.d.ts +35 -2
  11. package/common.js +49 -11
  12. package/common.js.map +1 -1
  13. package/complex.cjs +275 -104
  14. package/complex.cjs.map +1 -1
  15. package/complex.d.ts +133 -13
  16. package/complex.js +275 -109
  17. package/complex.js.map +1 -1
  18. package/cookie.cjs +17 -7
  19. package/cookie.cjs.map +1 -1
  20. package/cookie.d.ts +8 -0
  21. package/cookie.js +18 -9
  22. package/cookie.js.map +1 -1
  23. package/css.cjs +147 -39
  24. package/css.cjs.map +1 -1
  25. package/css.d.ts +98 -6
  26. package/css.js +143 -41
  27. package/css.js.map +1 -1
  28. package/data.cjs +90 -55
  29. package/data.cjs.map +1 -1
  30. package/data.d.ts +32 -0
  31. package/data.js +91 -61
  32. package/data.js.map +1 -1
  33. package/date-time.cjs +578 -412
  34. package/date-time.cjs.map +1 -1
  35. package/date-time.d.ts +88 -0
  36. package/date-time.js +575 -421
  37. package/date-time.js.map +1 -1
  38. package/device.cjs +48 -23
  39. package/device.cjs.map +1 -1
  40. package/device.d.ts +32 -0
  41. package/device.js +49 -31
  42. package/device.js.map +1 -1
  43. package/encodings.cjs +275 -266
  44. package/encodings.cjs.map +1 -1
  45. package/encodings.d.ts +8 -0
  46. package/encodings.js +276 -268
  47. package/encodings.js.map +1 -1
  48. package/errors.cjs +20 -18
  49. package/errors.cjs.map +1 -1
  50. package/errors.js +19 -19
  51. package/errors.js.map +1 -1
  52. package/file.cjs +42 -24
  53. package/file.cjs.map +1 -1
  54. package/file.d.ts +16 -0
  55. package/file.js +43 -27
  56. package/file.js.map +1 -1
  57. package/format.cjs +125 -83
  58. package/format.cjs.map +1 -1
  59. package/format.d.ts +89 -4
  60. package/format.js +118 -82
  61. package/format.js.map +1 -1
  62. package/html.cjs +226 -137
  63. package/html.cjs.map +1 -1
  64. package/html.d.ts +67 -3
  65. package/html.js +223 -150
  66. package/html.js.map +1 -1
  67. package/id.cjs +74 -17
  68. package/id.cjs.map +1 -1
  69. package/id.d.ts +10 -10
  70. package/id.js +73 -24
  71. package/id.js.map +1 -1
  72. package/imports.cjs +41 -29
  73. package/imports.cjs.map +1 -1
  74. package/imports.d.ts +13 -4
  75. package/imports.js +40 -31
  76. package/imports.js.map +1 -1
  77. package/math.cjs +32 -6
  78. package/math.cjs.map +1 -1
  79. package/math.d.ts +17 -1
  80. package/math.js +33 -10
  81. package/math.js.map +1 -1
  82. package/media.cjs +275 -84
  83. package/media.cjs.map +1 -1
  84. package/media.d.ts +188 -2
  85. package/media.js +274 -93
  86. package/media.js.map +1 -1
  87. package/mobx.cjs +353 -193
  88. package/mobx.cjs.map +1 -1
  89. package/mobx.d.ts +172 -6
  90. package/mobx.js +351 -200
  91. package/mobx.js.map +1 -1
  92. package/ms.cjs +21 -10
  93. package/ms.cjs.map +1 -1
  94. package/ms.d.ts +1 -1
  95. package/ms.js +22 -13
  96. package/ms.js.map +1 -1
  97. package/number.cjs +13 -7
  98. package/number.cjs.map +1 -1
  99. package/number.js +14 -9
  100. package/number.js.map +1 -1
  101. package/package.json +13 -5
  102. package/parser.cjs +117 -64
  103. package/parser.cjs.map +1 -1
  104. package/parser.d.ts +63 -0
  105. package/parser.js +111 -64
  106. package/parser.js.map +1 -1
  107. package/price.cjs +24 -18
  108. package/price.cjs.map +1 -1
  109. package/price.d.ts +8 -0
  110. package/price.js +25 -20
  111. package/price.js.map +1 -1
  112. package/random.cjs +79 -13
  113. package/random.cjs.map +1 -1
  114. package/random.d.ts +64 -0
  115. package/random.js +80 -22
  116. package/random.js.map +1 -1
  117. package/react.cjs +673 -214
  118. package/react.cjs.map +1 -1
  119. package/react.d.ts +428 -9
  120. package/react.js +674 -239
  121. package/react.js.map +1 -1
  122. package/sound.cjs +14 -9
  123. package/sound.cjs.map +1 -1
  124. package/sound.d.ts +1 -1
  125. package/sound.js +15 -11
  126. package/sound.js.map +1 -1
  127. package/storage.cjs +49 -50
  128. package/storage.cjs.map +1 -1
  129. package/storage.d.ts +15 -6
  130. package/storage.js +50 -53
  131. package/storage.js.map +1 -1
  132. package/text.cjs +51 -34
  133. package/text.cjs.map +1 -1
  134. package/text.d.ts +5 -5
  135. package/text.js +52 -37
  136. package/text.js.map +1 -1
  137. package/type-guard.cjs +292 -72
  138. package/type-guard.cjs.map +1 -1
  139. package/type-guard.d.ts +199 -42
  140. package/type-guard.js +288 -73
  141. package/type-guard.js.map +1 -1
  142. package/types.cjs +0 -2
  143. package/types.global.cjs +0 -2
  144. package/types.global.js +0 -2
  145. package/types.js +0 -2
  146. package/vibrate.cjs +31 -6
  147. package/vibrate.cjs.map +1 -1
  148. package/vibrate.d.ts +23 -1
  149. package/vibrate.js +32 -8
  150. package/vibrate.js.map +1 -1
  151. package/types.cjs.map +0 -1
  152. package/types.global.cjs.map +0 -1
  153. package/types.global.js.map +0 -1
  154. package/types.js.map +0 -1
package/type-guard.d.ts CHANGED
@@ -1,87 +1,244 @@
1
1
  import { AnyFunction, AnyObject } from 'yummies/types';
2
2
 
3
3
  /**
4
- * Check if a value is not null or undefined
5
- * @param value the value to check
6
- * @returns boolean
4
+ * Checks that a value is neither `null` nor `undefined`.
5
+ *
6
+ * @template T Value type without nullish branches.
7
+ * @param value Value to test.
8
+ * @returns `true` when the value is defined.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * isDefined(0); // true
13
+ * ```
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * isDefined(null); // false
18
+ * ```
7
19
  */
8
20
  declare const isDefined: <T>(value: T | undefined | null) => value is T;
9
21
  /**
10
- * Check if a value is null
11
- * @param value the value to check
12
- * @returns boolean
22
+ * Checks whether a value is exactly `null`.
23
+ *
24
+ * @param value Value to test.
25
+ * @returns `true` when the value is `null`.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * isNull(null); // true
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * isNull(undefined); // false
35
+ * ```
13
36
  */
14
37
  declare const isNull: (value: unknown) => value is null;
15
38
  /**
16
- * Check if a value is undefined
17
- * @param value the value to check
18
- * @returns boolean
39
+ * Checks whether a value is exactly `undefined`.
40
+ *
41
+ * @param value Value to test.
42
+ * @returns `true` when the value is `undefined`.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * isUndefined(undefined); // true
47
+ * ```
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * isUndefined('value'); // false
52
+ * ```
19
53
  */
20
54
  declare const isUndefined: (value: unknown) => value is undefined;
21
55
  /**
22
- * Check if a value is an object
23
- * @param value the value to check
24
- * @returns boolean
56
+ * Checks whether a value is a plain object.
57
+ *
58
+ * @param value Value to test.
59
+ * @returns `true` when the value matches `[object Object]`.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * isObject({ id: 1 }); // true
64
+ * ```
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * isObject([]); // false
69
+ * ```
25
70
  */
26
71
  declare const isObject: (value: unknown) => value is AnyObject;
27
72
  /**
28
- * Check if a value is an array
29
- * @param value the value to check
30
- * @returns boolean
73
+ * Checks whether a value is an array.
74
+ *
75
+ * @param value Value to test.
76
+ * @returns `true` when the value is an array.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * isArray([1, 2, 3]); // true
81
+ * ```
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * isArray({ length: 1 }); // false
86
+ * ```
31
87
  */
32
88
  declare const isArray: (value: unknown) => value is unknown[];
33
89
  /**
34
- * Check if a value is a string
35
- * @param value the value to check
36
- * @returns boolean
90
+ * Checks whether a value is a string object or primitive string.
91
+ *
92
+ * @param value Value to test.
93
+ * @returns `true` when the value is a string.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * isString('hello'); // true
98
+ * ```
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * isString(123); // false
103
+ * ```
37
104
  */
38
105
  declare const isString: (value: unknown) => value is string;
39
106
  /**
40
- * Check if a value is a number
41
- * @param value the value to check
42
- * @returns boolean
107
+ * Checks whether a value is a finite number.
108
+ *
109
+ * Unlike `isNaN` and `isInfinite`, this guard only matches regular numeric values.
110
+ *
111
+ * @param value Value to test.
112
+ * @returns `true` when the value is a non-NaN finite number.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * isNumber(123); // true
117
+ * ```
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * isNumber(Number.NaN); // false
122
+ * ```
43
123
  */
44
124
  declare const isNumber: (value: unknown) => value is number;
45
125
  /**
46
- * Check if a value is a boolean
47
- * @param value the value to check
48
- * @returns boolean
126
+ * Checks whether a value is a boolean.
127
+ *
128
+ * @param value Value to test.
129
+ * @returns `true` when the value is a boolean.
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * isBoolean(true); // true
134
+ * ```
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * isBoolean('true'); // false
139
+ * ```
49
140
  */
50
141
  declare const isBoolean: (value: unknown) => value is boolean;
51
142
  /**
52
- * Check if a value is a function
53
- * @param value the value to check
54
- * @returns boolean
143
+ * Checks whether a value is a synchronous or asynchronous function.
144
+ *
145
+ * @param value Value to test.
146
+ * @returns `true` when the value is a function.
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * isFunction(() => {}); // true
151
+ * ```
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * isFunction(async () => {}); // true
156
+ * ```
55
157
  */
56
158
  declare const isFunction: (value: unknown) => value is AnyFunction;
57
159
  /**
58
- * Check if a value is a regular expression
59
- * @param value the value to check
60
- * @returns boolean
160
+ * Checks whether a value is a regular expression.
161
+ *
162
+ * @param value Value to test.
163
+ * @returns `true` when the value is a `RegExp`.
164
+ *
165
+ * @example
166
+ * ```ts
167
+ * isRegExp(/foo/); // true
168
+ * ```
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * isRegExp('foo'); // false
173
+ * ```
61
174
  */
62
175
  declare const isRegExp: (value: unknown) => value is RegExp;
63
176
  /**
64
- * Check if a value is a DOM element
65
- * @param value the value to check
66
- * @returns boolean
177
+ * Checks whether a value looks like a DOM element or document node.
178
+ *
179
+ * @param value Value to test.
180
+ * @returns `true` when the value has an element-like node type.
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * isElement(document.body); // true
185
+ * ```
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * isElement({ nodeType: 3 }); // false
190
+ * ```
67
191
  */
68
192
  declare const isElement: (value: unknown) => value is HTMLElement;
69
193
  /**
70
- * Check if a value is NaN
71
- * @param value the value to check
72
- * @returns boolean
194
+ * Checks whether a value is `NaN`.
195
+ *
196
+ * @param value Value to test.
197
+ * @returns `true` when the value is `NaN`.
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * isNaN(Number.NaN); // true
202
+ * ```
203
+ *
204
+ * @example
205
+ * ```ts
206
+ * isNaN(5); // false
207
+ * ```
73
208
  */
74
209
  declare const isNaN: (value: unknown) => boolean;
75
210
  /**
76
- * Check if a value is infinity
77
- * @param value the value to check
78
- * @returns boolean
211
+ * Checks whether a value is positive or negative infinity.
212
+ *
213
+ * @param value Value to test.
214
+ * @returns `true` when the value is not finite.
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * isInfinite(Infinity); // true
219
+ * ```
220
+ *
221
+ * @example
222
+ * ```ts
223
+ * isInfinite(10); // false
224
+ * ```
79
225
  */
80
226
  declare const isInfinite: (value: unknown) => boolean;
81
227
  /**
82
- * Check if a value is a symbol
83
- * @param value the value to check
84
- * @returns boolean
228
+ * Checks whether a value is a symbol.
229
+ *
230
+ * @param value Value to test.
231
+ * @returns `true` when the value is a symbol.
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * isSymbol(Symbol('id')); // true
236
+ * ```
237
+ *
238
+ * @example
239
+ * ```ts
240
+ * isSymbol('id'); // false
241
+ * ```
85
242
  */
86
243
  declare const isSymbol: (value: unknown) => value is symbol;
87
244
 
package/type-guard.js CHANGED
@@ -1,76 +1,291 @@
1
- const TYPE = {
2
- Null: "null",
3
- Undefined: "undefined",
4
- NaN: "nan",
5
- Object: "[object Object]",
6
- Array: "[object Array]",
7
- String: "[object String]",
8
- Number: "[object Number]",
9
- Boolean: "[object Boolean]",
10
- Function: "[object Function]",
11
- AsyncFunction: "[object AsyncFunction]",
12
- RegExp: "[object RegExp]",
13
- Symbol: "[object Symbol]",
14
- Infinite: "infinite",
15
- Element: "element"
1
+ import { n as __exportAll } from "./chunk-YKewjYmz.js";
2
+ //#region src/type-guard/_exports.ts
3
+ var _exports_exports = /* @__PURE__ */ __exportAll({
4
+ isArray: () => isArray,
5
+ isBoolean: () => isBoolean,
6
+ isDefined: () => isDefined,
7
+ isElement: () => isElement,
8
+ isFunction: () => isFunction,
9
+ isInfinite: () => isInfinite,
10
+ isNaN: () => isNaN,
11
+ isNull: () => isNull,
12
+ isNumber: () => isNumber,
13
+ isObject: () => isObject,
14
+ isRegExp: () => isRegExp,
15
+ isString: () => isString,
16
+ isSymbol: () => isSymbol,
17
+ isUndefined: () => isUndefined
18
+ });
19
+ var TYPE = {
20
+ Null: "null",
21
+ Undefined: "undefined",
22
+ NaN: "nan",
23
+ Object: "[object Object]",
24
+ Array: "[object Array]",
25
+ String: "[object String]",
26
+ Number: "[object Number]",
27
+ Boolean: "[object Boolean]",
28
+ Function: "[object Function]",
29
+ AsyncFunction: "[object AsyncFunction]",
30
+ RegExp: "[object RegExp]",
31
+ Symbol: "[object Symbol]",
32
+ Infinite: "infinite",
33
+ Element: "element"
16
34
  };
17
35
  function getType(value) {
18
- if (value === void 0) {
19
- return TYPE.Undefined;
20
- }
21
- if (value === null) {
22
- return TYPE.Null;
23
- }
24
- if (value && (value.nodeType === 1 || value.nodeType === 9)) {
25
- return TYPE.Element;
26
- }
27
- const stringifiedValue = Object.prototype.toString.call(value);
28
- if (stringifiedValue === TYPE.Number) {
29
- if (Number.isNaN(value)) {
30
- return TYPE.NaN;
31
- }
32
- if (!Number.isFinite(value)) {
33
- return TYPE.Infinite;
34
- }
35
- }
36
- return stringifiedValue;
36
+ if (value === void 0) return TYPE.Undefined;
37
+ if (value === null) return TYPE.Null;
38
+ if (value && (value.nodeType === 1 || value.nodeType === 9)) return TYPE.Element;
39
+ const stringifiedValue = Object.prototype.toString.call(value);
40
+ if (stringifiedValue === TYPE.Number) {
41
+ if (Number.isNaN(value)) return TYPE.NaN;
42
+ if (!Number.isFinite(value)) return TYPE.Infinite;
43
+ }
44
+ return stringifiedValue;
37
45
  }
38
- const createTypeGuard = (...types) => (value) => types.includes(getType(value));
39
- const isDefined = (value) => value != null;
40
- const isNull = createTypeGuard(TYPE.Null);
41
- const isUndefined = createTypeGuard(TYPE.Undefined);
42
- const isObject = createTypeGuard(TYPE.Object);
43
- const isArray = createTypeGuard(TYPE.Array);
44
- const isString = createTypeGuard(TYPE.String);
45
- const isNumber = createTypeGuard(TYPE.Number);
46
- const isBoolean = createTypeGuard(TYPE.Boolean);
47
- const isFunction = createTypeGuard(
48
- TYPE.Function,
49
- TYPE.AsyncFunction
50
- );
51
- const isRegExp = createTypeGuard(TYPE.RegExp);
52
- const isElement = createTypeGuard(TYPE.Element);
53
- const isNaN = createTypeGuard(TYPE.NaN);
54
- const isInfinite = createTypeGuard(TYPE.Infinite);
55
- const isSymbol = createTypeGuard(TYPE.Symbol);
56
- const _exports = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
57
- __proto__: null,
58
- isArray,
59
- isBoolean,
60
- isDefined,
61
- isElement,
62
- isFunction,
63
- isInfinite,
64
- isNaN,
65
- isNull,
66
- isNumber,
67
- isObject,
68
- isRegExp,
69
- isString,
70
- isSymbol,
71
- isUndefined
72
- }, Symbol.toStringTag, { value: "Module" }));
73
- export {
74
- _exports as typeGuard
75
- };
76
- //# sourceMappingURL=type-guard.js.map
46
+ var createTypeGuard = (...types) => (value) => types.includes(getType(value));
47
+ /**
48
+ * Checks that a value is neither `null` nor `undefined`.
49
+ *
50
+ * @template T Value type without nullish branches.
51
+ * @param value Value to test.
52
+ * @returns `true` when the value is defined.
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * isDefined(0); // true
57
+ * ```
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * isDefined(null); // false
62
+ * ```
63
+ */
64
+ var isDefined = (value) => value != null;
65
+ /**
66
+ * Checks whether a value is exactly `null`.
67
+ *
68
+ * @param value Value to test.
69
+ * @returns `true` when the value is `null`.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * isNull(null); // true
74
+ * ```
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * isNull(undefined); // false
79
+ * ```
80
+ */
81
+ var isNull = createTypeGuard(TYPE.Null);
82
+ /**
83
+ * Checks whether a value is exactly `undefined`.
84
+ *
85
+ * @param value Value to test.
86
+ * @returns `true` when the value is `undefined`.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * isUndefined(undefined); // true
91
+ * ```
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * isUndefined('value'); // false
96
+ * ```
97
+ */
98
+ var isUndefined = createTypeGuard(TYPE.Undefined);
99
+ /**
100
+ * Checks whether a value is a plain object.
101
+ *
102
+ * @param value Value to test.
103
+ * @returns `true` when the value matches `[object Object]`.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * isObject({ id: 1 }); // true
108
+ * ```
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * isObject([]); // false
113
+ * ```
114
+ */
115
+ var isObject = createTypeGuard(TYPE.Object);
116
+ /**
117
+ * Checks whether a value is an array.
118
+ *
119
+ * @param value Value to test.
120
+ * @returns `true` when the value is an array.
121
+ *
122
+ * @example
123
+ * ```ts
124
+ * isArray([1, 2, 3]); // true
125
+ * ```
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * isArray({ length: 1 }); // false
130
+ * ```
131
+ */
132
+ var isArray = createTypeGuard(TYPE.Array);
133
+ /**
134
+ * Checks whether a value is a string object or primitive string.
135
+ *
136
+ * @param value Value to test.
137
+ * @returns `true` when the value is a string.
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * isString('hello'); // true
142
+ * ```
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * isString(123); // false
147
+ * ```
148
+ */
149
+ var isString = createTypeGuard(TYPE.String);
150
+ /**
151
+ * Checks whether a value is a finite number.
152
+ *
153
+ * Unlike `isNaN` and `isInfinite`, this guard only matches regular numeric values.
154
+ *
155
+ * @param value Value to test.
156
+ * @returns `true` when the value is a non-NaN finite number.
157
+ *
158
+ * @example
159
+ * ```ts
160
+ * isNumber(123); // true
161
+ * ```
162
+ *
163
+ * @example
164
+ * ```ts
165
+ * isNumber(Number.NaN); // false
166
+ * ```
167
+ */
168
+ var isNumber = createTypeGuard(TYPE.Number);
169
+ /**
170
+ * Checks whether a value is a boolean.
171
+ *
172
+ * @param value Value to test.
173
+ * @returns `true` when the value is a boolean.
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * isBoolean(true); // true
178
+ * ```
179
+ *
180
+ * @example
181
+ * ```ts
182
+ * isBoolean('true'); // false
183
+ * ```
184
+ */
185
+ var isBoolean = createTypeGuard(TYPE.Boolean);
186
+ /**
187
+ * Checks whether a value is a synchronous or asynchronous function.
188
+ *
189
+ * @param value Value to test.
190
+ * @returns `true` when the value is a function.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * isFunction(() => {}); // true
195
+ * ```
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * isFunction(async () => {}); // true
200
+ * ```
201
+ */
202
+ var isFunction = createTypeGuard(TYPE.Function, TYPE.AsyncFunction);
203
+ /**
204
+ * Checks whether a value is a regular expression.
205
+ *
206
+ * @param value Value to test.
207
+ * @returns `true` when the value is a `RegExp`.
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * isRegExp(/foo/); // true
212
+ * ```
213
+ *
214
+ * @example
215
+ * ```ts
216
+ * isRegExp('foo'); // false
217
+ * ```
218
+ */
219
+ var isRegExp = createTypeGuard(TYPE.RegExp);
220
+ /**
221
+ * Checks whether a value looks like a DOM element or document node.
222
+ *
223
+ * @param value Value to test.
224
+ * @returns `true` when the value has an element-like node type.
225
+ *
226
+ * @example
227
+ * ```ts
228
+ * isElement(document.body); // true
229
+ * ```
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * isElement({ nodeType: 3 }); // false
234
+ * ```
235
+ */
236
+ var isElement = createTypeGuard(TYPE.Element);
237
+ /**
238
+ * Checks whether a value is `NaN`.
239
+ *
240
+ * @param value Value to test.
241
+ * @returns `true` when the value is `NaN`.
242
+ *
243
+ * @example
244
+ * ```ts
245
+ * isNaN(Number.NaN); // true
246
+ * ```
247
+ *
248
+ * @example
249
+ * ```ts
250
+ * isNaN(5); // false
251
+ * ```
252
+ */
253
+ var isNaN = createTypeGuard(TYPE.NaN);
254
+ /**
255
+ * Checks whether a value is positive or negative infinity.
256
+ *
257
+ * @param value Value to test.
258
+ * @returns `true` when the value is not finite.
259
+ *
260
+ * @example
261
+ * ```ts
262
+ * isInfinite(Infinity); // true
263
+ * ```
264
+ *
265
+ * @example
266
+ * ```ts
267
+ * isInfinite(10); // false
268
+ * ```
269
+ */
270
+ var isInfinite = createTypeGuard(TYPE.Infinite);
271
+ /**
272
+ * Checks whether a value is a symbol.
273
+ *
274
+ * @param value Value to test.
275
+ * @returns `true` when the value is a symbol.
276
+ *
277
+ * @example
278
+ * ```ts
279
+ * isSymbol(Symbol('id')); // true
280
+ * ```
281
+ *
282
+ * @example
283
+ * ```ts
284
+ * isSymbol('id'); // false
285
+ * ```
286
+ */
287
+ var isSymbol = createTypeGuard(TYPE.Symbol);
288
+ //#endregion
289
+ export { _exports_exports as typeGuard };
290
+
291
+ //# sourceMappingURL=type-guard.js.map
package/type-guard.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"type-guard.js","sources":["../src/type-guard/_exports.ts"],"sourcesContent":["import type { AnyFunction, AnyObject, ValueOf } from 'yummies/types';\n\nconst TYPE = {\n Null: 'null',\n Undefined: 'undefined',\n NaN: 'nan',\n Object: '[object Object]',\n Array: '[object Array]',\n String: '[object String]',\n Number: '[object Number]',\n Boolean: '[object Boolean]',\n Function: '[object Function]',\n AsyncFunction: '[object AsyncFunction]',\n RegExp: '[object RegExp]',\n Symbol: '[object Symbol]',\n Infinite: 'infinite',\n Element: 'element',\n};\n\ntype Type = ValueOf<typeof TYPE>;\n\nfunction getType(value: unknown): Type {\n if (value === undefined) {\n return TYPE.Undefined;\n }\n if (value === null) {\n return TYPE.Null;\n }\n\n // handle DOM elements\n // @ts-expect-error\n if (value && (value.nodeType === 1 || value.nodeType === 9)) {\n return TYPE.Element;\n }\n\n const stringifiedValue = Object.prototype.toString.call(value);\n\n // handle NaN and Infinity\n if (stringifiedValue === TYPE.Number) {\n if (Number.isNaN(value as number)) {\n return TYPE.NaN;\n }\n if (!Number.isFinite(value as number)) {\n return TYPE.Infinite;\n }\n }\n\n return stringifiedValue as Type;\n}\n\nconst createTypeGuard =\n <T>(...types: Type[]) =>\n (value: unknown): value is T =>\n types.includes(getType(value));\n\n/**\n * Check if a value is not null or undefined\n * @param value the value to check\n * @returns boolean\n */\nexport const isDefined = <T>(value: T | undefined | null): value is T =>\n value != null;\n\n/**\n * Check if a value is null\n * @param value the value to check\n * @returns boolean\n */\nexport const isNull = createTypeGuard<null>(TYPE.Null);\n\n/**\n * Check if a value is undefined\n * @param value the value to check\n * @returns boolean\n */\nexport const isUndefined = createTypeGuard<undefined>(TYPE.Undefined);\n\n/**\n * Check if a value is an object\n * @param value the value to check\n * @returns boolean\n */\nexport const isObject = createTypeGuard<AnyObject>(TYPE.Object);\n\n/**\n * Check if a value is an array\n * @param value the value to check\n * @returns boolean\n */\nexport const isArray = createTypeGuard<unknown[]>(TYPE.Array);\n\n/**\n * Check if a value is a string\n * @param value the value to check\n * @returns boolean\n */\nexport const isString = createTypeGuard<string>(TYPE.String);\n\n/**\n * Check if a value is a number\n * @param value the value to check\n * @returns boolean\n */\nexport const isNumber = createTypeGuard<number>(TYPE.Number);\n\n/**\n * Check if a value is a boolean\n * @param value the value to check\n * @returns boolean\n */\nexport const isBoolean = createTypeGuard<boolean>(TYPE.Boolean);\n\n/**\n * Check if a value is a function\n * @param value the value to check\n * @returns boolean\n */\nexport const isFunction = createTypeGuard<AnyFunction>(\n TYPE.Function,\n TYPE.AsyncFunction,\n);\n\n/**\n * Check if a value is a regular expression\n * @param value the value to check\n * @returns boolean\n */\nexport const isRegExp = createTypeGuard<RegExp>(TYPE.RegExp);\n\n/**\n * Check if a value is a DOM element\n * @param value the value to check\n * @returns boolean\n */\nexport const isElement = createTypeGuard<HTMLElement>(TYPE.Element);\n\n/**\n * Check if a value is NaN\n * @param value the value to check\n * @returns boolean\n */\nexport const isNaN = createTypeGuard<number>(TYPE.NaN) as (\n value: unknown,\n) => boolean;\n\n/**\n * Check if a value is infinity\n * @param value the value to check\n * @returns boolean\n */\nexport const isInfinite = createTypeGuard<number>(TYPE.Infinite) as (\n value: unknown,\n) => boolean;\n\n/**\n * Check if a value is a symbol\n * @param value the value to check\n * @returns boolean\n */\nexport const isSymbol = createTypeGuard<symbol>(TYPE.Symbol);\n"],"names":[],"mappings":"AAEA,MAAM,OAAO;AAAA,EACX,MAAM;AAAA,EACN,WAAW;AAAA,EACX,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AACX;AAIA,SAAS,QAAQ,OAAsB;AACrC,MAAI,UAAU,QAAW;AACvB,WAAO,KAAK;AAAA,EACd;AACA,MAAI,UAAU,MAAM;AAClB,WAAO,KAAK;AAAA,EACd;AAIA,MAAI,UAAU,MAAM,aAAa,KAAK,MAAM,aAAa,IAAI;AAC3D,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,mBAAmB,OAAO,UAAU,SAAS,KAAK,KAAK;AAG7D,MAAI,qBAAqB,KAAK,QAAQ;AACpC,QAAI,OAAO,MAAM,KAAe,GAAG;AACjC,aAAO,KAAK;AAAA,IACd;AACA,QAAI,CAAC,OAAO,SAAS,KAAe,GAAG;AACrC,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAEA,SAAO;AACT;AAEA,MAAM,kBACJ,IAAO,UACP,CAAC,UACC,MAAM,SAAS,QAAQ,KAAK,CAAC;AAO1B,MAAM,YAAY,CAAI,UAC3B,SAAS;AAOJ,MAAM,SAAS,gBAAsB,KAAK,IAAI;AAO9C,MAAM,cAAc,gBAA2B,KAAK,SAAS;AAO7D,MAAM,WAAW,gBAA2B,KAAK,MAAM;AAOvD,MAAM,UAAU,gBAA2B,KAAK,KAAK;AAOrD,MAAM,WAAW,gBAAwB,KAAK,MAAM;AAOpD,MAAM,WAAW,gBAAwB,KAAK,MAAM;AAOpD,MAAM,YAAY,gBAAyB,KAAK,OAAO;AAOvD,MAAM,aAAa;AAAA,EACxB,KAAK;AAAA,EACL,KAAK;AACP;AAOO,MAAM,WAAW,gBAAwB,KAAK,MAAM;AAOpD,MAAM,YAAY,gBAA6B,KAAK,OAAO;AAO3D,MAAM,QAAQ,gBAAwB,KAAK,GAAG;AAS9C,MAAM,aAAa,gBAAwB,KAAK,QAAQ;AASxD,MAAM,WAAW,gBAAwB,KAAK,MAAM;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"type-guard.js","names":[],"sources":["../src/type-guard/_exports.ts"],"sourcesContent":["import type { AnyFunction, AnyObject, ValueOf } from 'yummies/types';\n\nconst TYPE = {\n Null: 'null',\n Undefined: 'undefined',\n NaN: 'nan',\n Object: '[object Object]',\n Array: '[object Array]',\n String: '[object String]',\n Number: '[object Number]',\n Boolean: '[object Boolean]',\n Function: '[object Function]',\n AsyncFunction: '[object AsyncFunction]',\n RegExp: '[object RegExp]',\n Symbol: '[object Symbol]',\n Infinite: 'infinite',\n Element: 'element',\n};\n\ntype Type = ValueOf<typeof TYPE>;\n\nfunction getType(value: unknown): Type {\n if (value === undefined) {\n return TYPE.Undefined;\n }\n if (value === null) {\n return TYPE.Null;\n }\n\n // handle DOM elements\n // @ts-expect-error\n if (value && (value.nodeType === 1 || value.nodeType === 9)) {\n return TYPE.Element;\n }\n\n const stringifiedValue = Object.prototype.toString.call(value);\n\n // handle NaN and Infinity\n if (stringifiedValue === TYPE.Number) {\n if (Number.isNaN(value as number)) {\n return TYPE.NaN;\n }\n if (!Number.isFinite(value as number)) {\n return TYPE.Infinite;\n }\n }\n\n return stringifiedValue as Type;\n}\n\nconst createTypeGuard =\n <T>(...types: Type[]) =>\n (value: unknown): value is T =>\n types.includes(getType(value));\n\n/**\n * Checks that a value is neither `null` nor `undefined`.\n *\n * @template T Value type without nullish branches.\n * @param value Value to test.\n * @returns `true` when the value is defined.\n *\n * @example\n * ```ts\n * isDefined(0); // true\n * ```\n *\n * @example\n * ```ts\n * isDefined(null); // false\n * ```\n */\nexport const isDefined = <T>(value: T | undefined | null): value is T =>\n value != null;\n\n/**\n * Checks whether a value is exactly `null`.\n *\n * @param value Value to test.\n * @returns `true` when the value is `null`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * ```\n *\n * @example\n * ```ts\n * isNull(undefined); // false\n * ```\n */\nexport const isNull = createTypeGuard<null>(TYPE.Null);\n\n/**\n * Checks whether a value is exactly `undefined`.\n *\n * @param value Value to test.\n * @returns `true` when the value is `undefined`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * ```\n *\n * @example\n * ```ts\n * isUndefined('value'); // false\n * ```\n */\nexport const isUndefined = createTypeGuard<undefined>(TYPE.Undefined);\n\n/**\n * Checks whether a value is a plain object.\n *\n * @param value Value to test.\n * @returns `true` when the value matches `[object Object]`.\n *\n * @example\n * ```ts\n * isObject({ id: 1 }); // true\n * ```\n *\n * @example\n * ```ts\n * isObject([]); // false\n * ```\n */\nexport const isObject = createTypeGuard<AnyObject>(TYPE.Object);\n\n/**\n * Checks whether a value is an array.\n *\n * @param value Value to test.\n * @returns `true` when the value is an array.\n *\n * @example\n * ```ts\n * isArray([1, 2, 3]); // true\n * ```\n *\n * @example\n * ```ts\n * isArray({ length: 1 }); // false\n * ```\n */\nexport const isArray = createTypeGuard<unknown[]>(TYPE.Array);\n\n/**\n * Checks whether a value is a string object or primitive string.\n *\n * @param value Value to test.\n * @returns `true` when the value is a string.\n *\n * @example\n * ```ts\n * isString('hello'); // true\n * ```\n *\n * @example\n * ```ts\n * isString(123); // false\n * ```\n */\nexport const isString = createTypeGuard<string>(TYPE.String);\n\n/**\n * Checks whether a value is a finite number.\n *\n * Unlike `isNaN` and `isInfinite`, this guard only matches regular numeric values.\n *\n * @param value Value to test.\n * @returns `true` when the value is a non-NaN finite number.\n *\n * @example\n * ```ts\n * isNumber(123); // true\n * ```\n *\n * @example\n * ```ts\n * isNumber(Number.NaN); // false\n * ```\n */\nexport const isNumber = createTypeGuard<number>(TYPE.Number);\n\n/**\n * Checks whether a value is a boolean.\n *\n * @param value Value to test.\n * @returns `true` when the value is a boolean.\n *\n * @example\n * ```ts\n * isBoolean(true); // true\n * ```\n *\n * @example\n * ```ts\n * isBoolean('true'); // false\n * ```\n */\nexport const isBoolean = createTypeGuard<boolean>(TYPE.Boolean);\n\n/**\n * Checks whether a value is a synchronous or asynchronous function.\n *\n * @param value Value to test.\n * @returns `true` when the value is a function.\n *\n * @example\n * ```ts\n * isFunction(() => {}); // true\n * ```\n *\n * @example\n * ```ts\n * isFunction(async () => {}); // true\n * ```\n */\nexport const isFunction = createTypeGuard<AnyFunction>(\n TYPE.Function,\n TYPE.AsyncFunction,\n);\n\n/**\n * Checks whether a value is a regular expression.\n *\n * @param value Value to test.\n * @returns `true` when the value is a `RegExp`.\n *\n * @example\n * ```ts\n * isRegExp(/foo/); // true\n * ```\n *\n * @example\n * ```ts\n * isRegExp('foo'); // false\n * ```\n */\nexport const isRegExp = createTypeGuard<RegExp>(TYPE.RegExp);\n\n/**\n * Checks whether a value looks like a DOM element or document node.\n *\n * @param value Value to test.\n * @returns `true` when the value has an element-like node type.\n *\n * @example\n * ```ts\n * isElement(document.body); // true\n * ```\n *\n * @example\n * ```ts\n * isElement({ nodeType: 3 }); // false\n * ```\n */\nexport const isElement = createTypeGuard<HTMLElement>(TYPE.Element);\n\n/**\n * Checks whether a value is `NaN`.\n *\n * @param value Value to test.\n * @returns `true` when the value is `NaN`.\n *\n * @example\n * ```ts\n * isNaN(Number.NaN); // true\n * ```\n *\n * @example\n * ```ts\n * isNaN(5); // false\n * ```\n */\nexport const isNaN = createTypeGuard<number>(TYPE.NaN) as (\n value: unknown,\n) => boolean;\n\n/**\n * Checks whether a value is positive or negative infinity.\n *\n * @param value Value to test.\n * @returns `true` when the value is not finite.\n *\n * @example\n * ```ts\n * isInfinite(Infinity); // true\n * ```\n *\n * @example\n * ```ts\n * isInfinite(10); // false\n * ```\n */\nexport const isInfinite = createTypeGuard<number>(TYPE.Infinite) as (\n value: unknown,\n) => boolean;\n\n/**\n * Checks whether a value is a symbol.\n *\n * @param value Value to test.\n * @returns `true` when the value is a symbol.\n *\n * @example\n * ```ts\n * isSymbol(Symbol('id')); // true\n * ```\n *\n * @example\n * ```ts\n * isSymbol('id'); // false\n * ```\n */\nexport const isSymbol = createTypeGuard<symbol>(TYPE.Symbol);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,IAAM,OAAO;CACX,MAAM;CACN,WAAW;CACX,KAAK;CACL,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,UAAU;CACV,eAAe;CACf,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,SAAS;CACV;AAID,SAAS,QAAQ,OAAsB;AACrC,KAAI,UAAU,KAAA,EACZ,QAAO,KAAK;AAEd,KAAI,UAAU,KACZ,QAAO,KAAK;AAKd,KAAI,UAAU,MAAM,aAAa,KAAK,MAAM,aAAa,GACvD,QAAO,KAAK;CAGd,MAAM,mBAAmB,OAAO,UAAU,SAAS,KAAK,MAAM;AAG9D,KAAI,qBAAqB,KAAK,QAAQ;AACpC,MAAI,OAAO,MAAM,MAAgB,CAC/B,QAAO,KAAK;AAEd,MAAI,CAAC,OAAO,SAAS,MAAgB,CACnC,QAAO,KAAK;;AAIhB,QAAO;;AAGT,IAAM,mBACA,GAAG,WACN,UACC,MAAM,SAAS,QAAQ,MAAM,CAAC;;;;;;;;;;;;;;;;;;AAmBlC,IAAa,aAAgB,UAC3B,SAAS;;;;;;;;;;;;;;;;;AAkBX,IAAa,SAAS,gBAAsB,KAAK,KAAK;;;;;;;;;;;;;;;;;AAkBtD,IAAa,cAAc,gBAA2B,KAAK,UAAU;;;;;;;;;;;;;;;;;AAkBrE,IAAa,WAAW,gBAA2B,KAAK,OAAO;;;;;;;;;;;;;;;;;AAkB/D,IAAa,UAAU,gBAA2B,KAAK,MAAM;;;;;;;;;;;;;;;;;AAkB7D,IAAa,WAAW,gBAAwB,KAAK,OAAO;;;;;;;;;;;;;;;;;;;AAoB5D,IAAa,WAAW,gBAAwB,KAAK,OAAO;;;;;;;;;;;;;;;;;AAkB5D,IAAa,YAAY,gBAAyB,KAAK,QAAQ;;;;;;;;;;;;;;;;;AAkB/D,IAAa,aAAa,gBACxB,KAAK,UACL,KAAK,cACN;;;;;;;;;;;;;;;;;AAkBD,IAAa,WAAW,gBAAwB,KAAK,OAAO;;;;;;;;;;;;;;;;;AAkB5D,IAAa,YAAY,gBAA6B,KAAK,QAAQ;;;;;;;;;;;;;;;;;AAkBnE,IAAa,QAAQ,gBAAwB,KAAK,IAAI;;;;;;;;;;;;;;;;;AAoBtD,IAAa,aAAa,gBAAwB,KAAK,SAAS;;;;;;;;;;;;;;;;;AAoBhE,IAAa,WAAW,gBAAwB,KAAK,OAAO"}