is-what 4.1.10 → 4.1.11

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.js CHANGED
@@ -1,344 +1,118 @@
1
- /**
2
- * Returns the object type of the given payload
3
- *
4
- * @param {*} payload
5
- * @returns {string}
6
- */
7
1
  function getType(payload) {
8
- return Object.prototype.toString.call(payload).slice(8, -1);
9
- }
10
- /**
11
- * Returns whether the payload is undefined
12
- *
13
- * @param {*} payload
14
- * @returns {payload is undefined}
15
- */
2
+ return Object.prototype.toString.call(payload).slice(8, -1);
3
+ }
16
4
  function isUndefined(payload) {
17
- return getType(payload) === 'Undefined';
18
- }
19
- /**
20
- * Returns whether the payload is null
21
- *
22
- * @param {*} payload
23
- * @returns {payload is null}
24
- */
5
+ return getType(payload) === "Undefined";
6
+ }
25
7
  function isNull(payload) {
26
- return getType(payload) === 'Null';
27
- }
28
- /**
29
- * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
30
- *
31
- * @param {*} payload
32
- * @returns {payload is PlainObject}
33
- */
8
+ return getType(payload) === "Null";
9
+ }
34
10
  function isPlainObject(payload) {
35
- if (getType(payload) !== 'Object')
36
- return false;
37
- const prototype = Object.getPrototypeOf(payload);
38
- return prototype.constructor === Object && prototype === Object.prototype;
39
- }
40
- /**
41
- * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
42
- *
43
- * @param {*} payload
44
- * @returns {payload is PlainObject}
45
- */
11
+ if (getType(payload) !== "Object")
12
+ return false;
13
+ const prototype = Object.getPrototypeOf(payload);
14
+ return prototype.constructor === Object && prototype === Object.prototype;
15
+ }
46
16
  function isObject(payload) {
47
- return isPlainObject(payload);
48
- }
49
- /**
50
- * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)
51
- *
52
- * @param {*} payload
53
- * @returns {payload is { [K in any]: never }}
54
- */
17
+ return isPlainObject(payload);
18
+ }
55
19
  function isEmptyObject(payload) {
56
- return isPlainObject(payload) && Object.keys(payload).length === 0;
57
- }
58
- /**
59
- * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)
60
- *
61
- * @param {*} payload
62
- * @returns {payload is PlainObject}
63
- */
20
+ return isPlainObject(payload) && Object.keys(payload).length === 0;
21
+ }
64
22
  function isFullObject(payload) {
65
- return isPlainObject(payload) && Object.keys(payload).length > 0;
66
- }
67
- /**
68
- * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)
69
- *
70
- * @param {*} payload
71
- * @returns {payload is PlainObject}
72
- */
23
+ return isPlainObject(payload) && Object.keys(payload).length > 0;
24
+ }
73
25
  function isAnyObject(payload) {
74
- return getType(payload) === 'Object';
75
- }
76
- /**
77
- * Returns whether the payload is an object like a type passed in < >
78
- *
79
- * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.
80
- *
81
- * @template T this must be passed in < >
82
- * @param {*} payload
83
- * @returns {payload is T}
84
- */
26
+ return getType(payload) === "Object";
27
+ }
85
28
  function isObjectLike(payload) {
86
- return isAnyObject(payload);
87
- }
88
- /**
89
- * Returns whether the payload is a function (regular or async)
90
- *
91
- * @param {*} payload
92
- * @returns {payload is AnyFunction}
93
- */
29
+ return isAnyObject(payload);
30
+ }
94
31
  function isFunction(payload) {
95
- return typeof payload === 'function';
96
- }
97
- /**
98
- * Returns whether the payload is an array
99
- *
100
- * @param {any} payload
101
- * @returns {payload is any[]}
102
- */
32
+ return typeof payload === "function";
33
+ }
103
34
  function isArray(payload) {
104
- return getType(payload) === 'Array';
105
- }
106
- /**
107
- * Returns whether the payload is a an array with at least 1 item
108
- *
109
- * @param {*} payload
110
- * @returns {payload is any[]}
111
- */
35
+ return getType(payload) === "Array";
36
+ }
112
37
  function isFullArray(payload) {
113
- return isArray(payload) && payload.length > 0;
114
- }
115
- /**
116
- * Returns whether the payload is a an empty array
117
- *
118
- * @param {*} payload
119
- * @returns {payload is []}
120
- */
38
+ return isArray(payload) && payload.length > 0;
39
+ }
121
40
  function isEmptyArray(payload) {
122
- return isArray(payload) && payload.length === 0;
123
- }
124
- /**
125
- * Returns whether the payload is a string
126
- *
127
- * @param {*} payload
128
- * @returns {payload is string}
129
- */
41
+ return isArray(payload) && payload.length === 0;
42
+ }
130
43
  function isString(payload) {
131
- return getType(payload) === 'String';
132
- }
133
- /**
134
- * Returns whether the payload is a string, BUT returns false for ''
135
- *
136
- * @param {*} payload
137
- * @returns {payload is string}
138
- */
44
+ return getType(payload) === "String";
45
+ }
139
46
  function isFullString(payload) {
140
- return isString(payload) && payload !== '';
141
- }
142
- /**
143
- * Returns whether the payload is ''
144
- *
145
- * @param {*} payload
146
- * @returns {payload is string}
147
- */
47
+ return isString(payload) && payload !== "";
48
+ }
148
49
  function isEmptyString(payload) {
149
- return payload === '';
150
- }
151
- /**
152
- * Returns whether the payload is a number (but not NaN)
153
- *
154
- * This will return `false` for `NaN`!!
155
- *
156
- * @param {*} payload
157
- * @returns {payload is number}
158
- */
50
+ return payload === "";
51
+ }
159
52
  function isNumber(payload) {
160
- return getType(payload) === 'Number' && !isNaN(payload);
161
- }
162
- /**
163
- * Returns whether the payload is a positive number (but not 0)
164
- *
165
- * @param {*} payload
166
- * @returns {payload is number}
167
- */
53
+ return getType(payload) === "Number" && !isNaN(payload);
54
+ }
168
55
  function isPositiveNumber(payload) {
169
- return isNumber(payload) && payload > 0;
170
- }
171
- /**
172
- * Returns whether the payload is a negative number (but not 0)
173
- *
174
- * @param {*} payload
175
- * @returns {payload is number}
176
- */
56
+ return isNumber(payload) && payload > 0;
57
+ }
177
58
  function isNegativeNumber(payload) {
178
- return isNumber(payload) && payload < 0;
179
- }
180
- /**
181
- * Returns whether the payload is a boolean
182
- *
183
- * @param {*} payload
184
- * @returns {payload is boolean}
185
- */
59
+ return isNumber(payload) && payload < 0;
60
+ }
186
61
  function isBoolean(payload) {
187
- return getType(payload) === 'Boolean';
188
- }
189
- /**
190
- * Returns whether the payload is a regular expression (RegExp)
191
- *
192
- * @param {*} payload
193
- * @returns {payload is RegExp}
194
- */
62
+ return getType(payload) === "Boolean";
63
+ }
195
64
  function isRegExp(payload) {
196
- return getType(payload) === 'RegExp';
197
- }
198
- /**
199
- * Returns whether the payload is a Map
200
- *
201
- * @param {*} payload
202
- * @returns {payload is Map<any, any>}
203
- */
65
+ return getType(payload) === "RegExp";
66
+ }
204
67
  function isMap(payload) {
205
- return getType(payload) === 'Map';
206
- }
207
- /**
208
- * Returns whether the payload is a WeakMap
209
- *
210
- * @param {*} payload
211
- * @returns {payload is WeakMap<any, any>}
212
- */
68
+ return getType(payload) === "Map";
69
+ }
213
70
  function isWeakMap(payload) {
214
- return getType(payload) === 'WeakMap';
215
- }
216
- /**
217
- * Returns whether the payload is a Set
218
- *
219
- * @param {*} payload
220
- * @returns {payload is Set<any>}
221
- */
71
+ return getType(payload) === "WeakMap";
72
+ }
222
73
  function isSet(payload) {
223
- return getType(payload) === 'Set';
224
- }
225
- /**
226
- * Returns whether the payload is a WeakSet
227
- *
228
- * @param {*} payload
229
- * @returns {payload is WeakSet<any>}
230
- */
74
+ return getType(payload) === "Set";
75
+ }
231
76
  function isWeakSet(payload) {
232
- return getType(payload) === 'WeakSet';
233
- }
234
- /**
235
- * Returns whether the payload is a Symbol
236
- *
237
- * @param {*} payload
238
- * @returns {payload is symbol}
239
- */
77
+ return getType(payload) === "WeakSet";
78
+ }
240
79
  function isSymbol(payload) {
241
- return getType(payload) === 'Symbol';
242
- }
243
- /**
244
- * Returns whether the payload is a Date, and that the date is valid
245
- *
246
- * @param {*} payload
247
- * @returns {payload is Date}
248
- */
80
+ return getType(payload) === "Symbol";
81
+ }
249
82
  function isDate(payload) {
250
- return getType(payload) === 'Date' && !isNaN(payload);
251
- }
252
- /**
253
- * Returns whether the payload is a Blob
254
- *
255
- * @param {*} payload
256
- * @returns {payload is Blob}
257
- */
83
+ return getType(payload) === "Date" && !isNaN(payload);
84
+ }
258
85
  function isBlob(payload) {
259
- return getType(payload) === 'Blob';
260
- }
261
- /**
262
- * Returns whether the payload is a File
263
- *
264
- * @param {*} payload
265
- * @returns {payload is File}
266
- */
86
+ return getType(payload) === "Blob";
87
+ }
267
88
  function isFile(payload) {
268
- return getType(payload) === 'File';
269
- }
270
- /**
271
- * Returns whether the payload is a Promise
272
- *
273
- * @param {*} payload
274
- * @returns {payload is Promise<any>}
275
- */
89
+ return getType(payload) === "File";
90
+ }
276
91
  function isPromise(payload) {
277
- return getType(payload) === 'Promise';
278
- }
279
- /**
280
- * Returns whether the payload is an Error
281
- *
282
- * @param {*} payload
283
- * @returns {payload is Error}
284
- */
92
+ return getType(payload) === "Promise";
93
+ }
285
94
  function isError(payload) {
286
- return getType(payload) === 'Error';
287
- }
288
- /**
289
- * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)
290
- *
291
- * @param {*} payload
292
- * @returns {payload is typeof NaN}
293
- */
95
+ return getType(payload) === "Error";
96
+ }
294
97
  function isNaNValue(payload) {
295
- return getType(payload) === 'Number' && isNaN(payload);
296
- }
297
- /**
298
- * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
299
- *
300
- * @param {*} payload
301
- * @returns {(payload is boolean | null | undefined | number | string | symbol)}
302
- */
98
+ return getType(payload) === "Number" && isNaN(payload);
99
+ }
303
100
  function isPrimitive(payload) {
304
- return (isBoolean(payload) ||
305
- isNull(payload) ||
306
- isUndefined(payload) ||
307
- isNumber(payload) ||
308
- isString(payload) ||
309
- isSymbol(payload));
310
- }
311
- /**
312
- * Returns true whether the payload is null or undefined
313
- *
314
- * @param {*} payload
315
- * @returns {(payload is null | undefined)}
316
- */
101
+ return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);
102
+ }
317
103
  const isNullOrUndefined = isOneOf(isNull, isUndefined);
318
104
  function isOneOf(a, b, c, d, e) {
319
- return (value) => a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));
320
- }
321
- /**
322
- * Does a generic check to check that the given payload is of a given type.
323
- * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);
324
- * It will, however, differentiate between object and null
325
- *
326
- * @template T
327
- * @param {*} payload
328
- * @param {T} type
329
- * @throws {TypeError} Will throw type error if type is an invalid type
330
- * @returns {payload is T}
331
- */
105
+ return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);
106
+ }
332
107
  function isType(payload, type) {
333
- if (!(type instanceof Function)) {
334
- throw new TypeError('Type must be a function');
335
- }
336
- if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
337
- throw new TypeError('Type is not a class');
338
- }
339
- // Classes usually have names (as functions usually have names)
340
- const name = type.name;
341
- return getType(payload) === name || Boolean(payload && payload.constructor === type);
108
+ if (!(type instanceof Function)) {
109
+ throw new TypeError("Type must be a function");
110
+ }
111
+ if (!Object.prototype.hasOwnProperty.call(type, "prototype")) {
112
+ throw new TypeError("Type is not a class");
113
+ }
114
+ const name = type.name;
115
+ return getType(payload) === name || Boolean(payload && payload.constructor === type);
342
116
  }
343
117
 
344
118
  export { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNegativeNumber, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPositiveNumber, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "is-what",
3
- "sideEffects": false,
4
- "type": "module",
5
- "version": "4.1.10",
3
+ "version": "4.1.11",
6
4
  "description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
7
  "types": "./dist/index.d.ts",
8
8
  "module": "./dist/index.js",
9
9
  "main": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "scripts": {
29
29
  "test": "vitest run",
30
30
  "lint": "tsc --noEmit && eslint ./src --ext .ts",
31
- "build": "rollup -c ./scripts/rollup.config.js",
31
+ "build": "rollup -c ./rollup.config.js",
32
32
  "release": "npm run lint && del dist && npm run build && np"
33
33
  },
34
34
  "repository": {
@@ -73,7 +73,8 @@
73
73
  "np": "^7.7.0",
74
74
  "prettier": "^2.8.8",
75
75
  "rollup": "^3.22.0",
76
- "rollup-plugin-typescript2": "^0.34.1",
76
+ "rollup-plugin-dts": "^5.3.0",
77
+ "rollup-plugin-esbuild": "^5.0.0",
77
78
  "typescript": "^5.0.4",
78
79
  "vitest": "^0.31.1"
79
80
  },