is-what 3.5.0 → 3.7.1
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintignore +8 -0
- package/.eslintrc.js +17 -0
- package/dist/index.cjs.js +25 -5
- package/dist/index.esm.js +24 -6
- package/package.json +26 -11
- package/src/index.ts +26 -6
- package/test/ava.ts +195 -0
- package/test/index.test.js +3 -0
- package/types/index.d.ts +18 -4
- package/wallaby.conf.js +0 -23
package/.eslintignore
ADDED
package/.eslintrc.js
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
// npm i -D @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-plugin-tree-shaking
|
2
|
+
module.exports = {
|
3
|
+
root: true,
|
4
|
+
parser: '@typescript-eslint/parser',
|
5
|
+
plugins: ['@typescript-eslint', 'tree-shaking'],
|
6
|
+
extends: [
|
7
|
+
'eslint:recommended',
|
8
|
+
'plugin:@typescript-eslint/eslint-recommended',
|
9
|
+
'plugin:@typescript-eslint/recommended',
|
10
|
+
'prettier/@typescript-eslint',
|
11
|
+
],
|
12
|
+
rules: {
|
13
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
14
|
+
'@typescript-eslint/ban-ts-ignore': 'off',
|
15
|
+
'tree-shaking/no-side-effects-in-initialization': 'error',
|
16
|
+
},
|
17
|
+
}
|
package/dist/index.cjs.js
CHANGED
@@ -136,7 +136,7 @@ function isBoolean(payload) {
|
|
136
136
|
return getType(payload) === 'Boolean';
|
137
137
|
}
|
138
138
|
/**
|
139
|
-
* Returns whether the payload is a regular expression
|
139
|
+
* Returns whether the payload is a regular expression (RegExp)
|
140
140
|
*
|
141
141
|
* @param {*} payload
|
142
142
|
* @returns {payload is RegExp}
|
@@ -154,7 +154,7 @@ function isSymbol(payload) {
|
|
154
154
|
return getType(payload) === 'Symbol';
|
155
155
|
}
|
156
156
|
/**
|
157
|
-
* Returns whether the payload is a
|
157
|
+
* Returns whether the payload is a Date, and that the date is valid
|
158
158
|
*
|
159
159
|
* @param {*} payload
|
160
160
|
* @returns {payload is Date}
|
@@ -163,7 +163,7 @@ function isDate(payload) {
|
|
163
163
|
return getType(payload) === 'Date' && !isNaN(payload);
|
164
164
|
}
|
165
165
|
/**
|
166
|
-
* Returns whether the payload is a
|
166
|
+
* Returns whether the payload is a Blob
|
167
167
|
*
|
168
168
|
* @param {*} payload
|
169
169
|
* @returns {payload is Blob}
|
@@ -172,7 +172,7 @@ function isBlob(payload) {
|
|
172
172
|
return getType(payload) === 'Blob';
|
173
173
|
}
|
174
174
|
/**
|
175
|
-
* Returns whether the payload is a
|
175
|
+
* Returns whether the payload is a File
|
176
176
|
*
|
177
177
|
* @param {*} payload
|
178
178
|
* @returns {payload is File}
|
@@ -180,6 +180,24 @@ function isBlob(payload) {
|
|
180
180
|
function isFile(payload) {
|
181
181
|
return getType(payload) === 'File';
|
182
182
|
}
|
183
|
+
/**
|
184
|
+
* Returns whether the payload is a Promise
|
185
|
+
*
|
186
|
+
* @param {*} payload
|
187
|
+
* @returns {payload is Promise}
|
188
|
+
*/
|
189
|
+
function isPromise(payload) {
|
190
|
+
return getType(payload) === 'Promise';
|
191
|
+
}
|
192
|
+
/**
|
193
|
+
* Returns whether the payload is an Error
|
194
|
+
*
|
195
|
+
* @param {*} payload
|
196
|
+
* @returns {payload is Error}
|
197
|
+
*/
|
198
|
+
function isError(payload) {
|
199
|
+
return getType(payload) === 'Error';
|
200
|
+
}
|
183
201
|
/**
|
184
202
|
* Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
|
185
203
|
*
|
@@ -218,7 +236,7 @@ function isType(payload, type) {
|
|
218
236
|
if (!(type instanceof Function)) {
|
219
237
|
throw new TypeError('Type must be a function');
|
220
238
|
}
|
221
|
-
if (!
|
239
|
+
if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
|
222
240
|
throw new TypeError('Type is not a class');
|
223
241
|
}
|
224
242
|
// Classes usually have names (as functions usually have names)
|
@@ -233,6 +251,7 @@ exports.isBlob = isBlob;
|
|
233
251
|
exports.isBoolean = isBoolean;
|
234
252
|
exports.isDate = isDate;
|
235
253
|
exports.isEmptyString = isEmptyString;
|
254
|
+
exports.isError = isError;
|
236
255
|
exports.isFile = isFile;
|
237
256
|
exports.isFullString = isFullString;
|
238
257
|
exports.isFunction = isFunction;
|
@@ -243,6 +262,7 @@ exports.isObject = isObject;
|
|
243
262
|
exports.isObjectLike = isObjectLike;
|
244
263
|
exports.isPlainObject = isPlainObject;
|
245
264
|
exports.isPrimitive = isPrimitive;
|
265
|
+
exports.isPromise = isPromise;
|
246
266
|
exports.isRegExp = isRegExp;
|
247
267
|
exports.isString = isString;
|
248
268
|
exports.isSymbol = isSymbol;
|
package/dist/index.esm.js
CHANGED
@@ -132,7 +132,7 @@ function isBoolean(payload) {
|
|
132
132
|
return getType(payload) === 'Boolean';
|
133
133
|
}
|
134
134
|
/**
|
135
|
-
* Returns whether the payload is a regular expression
|
135
|
+
* Returns whether the payload is a regular expression (RegExp)
|
136
136
|
*
|
137
137
|
* @param {*} payload
|
138
138
|
* @returns {payload is RegExp}
|
@@ -150,7 +150,7 @@ function isSymbol(payload) {
|
|
150
150
|
return getType(payload) === 'Symbol';
|
151
151
|
}
|
152
152
|
/**
|
153
|
-
* Returns whether the payload is a
|
153
|
+
* Returns whether the payload is a Date, and that the date is valid
|
154
154
|
*
|
155
155
|
* @param {*} payload
|
156
156
|
* @returns {payload is Date}
|
@@ -159,7 +159,7 @@ function isDate(payload) {
|
|
159
159
|
return getType(payload) === 'Date' && !isNaN(payload);
|
160
160
|
}
|
161
161
|
/**
|
162
|
-
* Returns whether the payload is a
|
162
|
+
* Returns whether the payload is a Blob
|
163
163
|
*
|
164
164
|
* @param {*} payload
|
165
165
|
* @returns {payload is Blob}
|
@@ -168,7 +168,7 @@ function isBlob(payload) {
|
|
168
168
|
return getType(payload) === 'Blob';
|
169
169
|
}
|
170
170
|
/**
|
171
|
-
* Returns whether the payload is a
|
171
|
+
* Returns whether the payload is a File
|
172
172
|
*
|
173
173
|
* @param {*} payload
|
174
174
|
* @returns {payload is File}
|
@@ -176,6 +176,24 @@ function isBlob(payload) {
|
|
176
176
|
function isFile(payload) {
|
177
177
|
return getType(payload) === 'File';
|
178
178
|
}
|
179
|
+
/**
|
180
|
+
* Returns whether the payload is a Promise
|
181
|
+
*
|
182
|
+
* @param {*} payload
|
183
|
+
* @returns {payload is Promise}
|
184
|
+
*/
|
185
|
+
function isPromise(payload) {
|
186
|
+
return getType(payload) === 'Promise';
|
187
|
+
}
|
188
|
+
/**
|
189
|
+
* Returns whether the payload is an Error
|
190
|
+
*
|
191
|
+
* @param {*} payload
|
192
|
+
* @returns {payload is Error}
|
193
|
+
*/
|
194
|
+
function isError(payload) {
|
195
|
+
return getType(payload) === 'Error';
|
196
|
+
}
|
179
197
|
/**
|
180
198
|
* Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
|
181
199
|
*
|
@@ -214,7 +232,7 @@ function isType(payload, type) {
|
|
214
232
|
if (!(type instanceof Function)) {
|
215
233
|
throw new TypeError('Type must be a function');
|
216
234
|
}
|
217
|
-
if (!
|
235
|
+
if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
|
218
236
|
throw new TypeError('Type is not a class');
|
219
237
|
}
|
220
238
|
// Classes usually have names (as functions usually have names)
|
@@ -222,4 +240,4 @@ function isType(payload, type) {
|
|
222
240
|
return getType(payload) === name || Boolean(payload && payload.constructor === type);
|
223
241
|
}
|
224
242
|
|
225
|
-
export { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyString, isFile, isFullString, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isRegExp, isString, isSymbol, isType, isUndefined };
|
243
|
+
export { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyString, isError, isFile, isFullString, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isPromise, isRegExp, isString, isSymbol, isType, isUndefined };
|
package/package.json
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
{
|
2
2
|
"name": "is-what",
|
3
|
-
"
|
3
|
+
"sideEffects": false,
|
4
|
+
"version": "3.7.1",
|
4
5
|
"description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.",
|
5
6
|
"main": "dist/index.cjs.js",
|
6
7
|
"module": "dist/index.esm.js",
|
7
8
|
"typings": "types/index.d.ts",
|
8
9
|
"scripts": {
|
10
|
+
"ava": "ava",
|
9
11
|
"test": "jest",
|
10
12
|
"test-w": "jest --watchAll",
|
11
|
-
"
|
13
|
+
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
14
|
+
"rollup": "rollup -c ./build/rollup.js",
|
15
|
+
"build": "npm run lint && npm run rollup && npm run test"
|
12
16
|
},
|
13
17
|
"repository": {
|
14
18
|
"type": "git",
|
@@ -41,18 +45,29 @@
|
|
41
45
|
"url": "https://github.com/mesqueeb/is-what/issues"
|
42
46
|
},
|
43
47
|
"homepage": "https://github.com/mesqueeb/is-what#readme",
|
48
|
+
"dependencies": {},
|
44
49
|
"devDependencies": {
|
45
|
-
"@babel/core": "^7.7
|
50
|
+
"@babel/core": "^7.8.7",
|
46
51
|
"@types/babel-core": "^6.25.6",
|
47
|
-
"@types/jest": "^
|
52
|
+
"@types/jest": "^25.1.4",
|
53
|
+
"@typescript-eslint/eslint-plugin": "^2.23.0",
|
54
|
+
"@typescript-eslint/parser": "^2.23.0",
|
55
|
+
"ava": "^3.5.0",
|
48
56
|
"babel-core": "^7.0.0-bridge.0",
|
49
|
-
"babel-jest": "^
|
57
|
+
"babel-jest": "^25.1.0",
|
50
58
|
"babel-preset-env": "^1.7.0",
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"
|
54
|
-
"
|
55
|
-
"
|
59
|
+
"eslint": "^6.8.0",
|
60
|
+
"eslint-config-prettier": "^6.10.0",
|
61
|
+
"eslint-plugin-tree-shaking": "^1.8.0",
|
62
|
+
"jest": "^25.1.0",
|
63
|
+
"regenerator-runtime": "^0.13.5",
|
64
|
+
"rollup": "^1.32.1",
|
65
|
+
"rollup-plugin-typescript2": "^0.26.0",
|
66
|
+
"ts-node": "^8.6.2",
|
67
|
+
"typescript": "^3.8.3"
|
56
68
|
},
|
57
|
-
"
|
69
|
+
"ava": {
|
70
|
+
"extensions": ["ts"],
|
71
|
+
"require": ["ts-node/register"]
|
72
|
+
}
|
58
73
|
}
|
package/src/index.ts
CHANGED
@@ -145,7 +145,7 @@ export function isBoolean (payload: any): payload is boolean {
|
|
145
145
|
}
|
146
146
|
|
147
147
|
/**
|
148
|
-
* Returns whether the payload is a regular expression
|
148
|
+
* Returns whether the payload is a regular expression (RegExp)
|
149
149
|
*
|
150
150
|
* @param {*} payload
|
151
151
|
* @returns {payload is RegExp}
|
@@ -165,7 +165,7 @@ export function isSymbol (payload: any): payload is symbol {
|
|
165
165
|
}
|
166
166
|
|
167
167
|
/**
|
168
|
-
* Returns whether the payload is a
|
168
|
+
* Returns whether the payload is a Date, and that the date is valid
|
169
169
|
*
|
170
170
|
* @param {*} payload
|
171
171
|
* @returns {payload is Date}
|
@@ -175,7 +175,7 @@ export function isDate (payload: any): payload is Date {
|
|
175
175
|
}
|
176
176
|
|
177
177
|
/**
|
178
|
-
* Returns whether the payload is a
|
178
|
+
* Returns whether the payload is a Blob
|
179
179
|
*
|
180
180
|
* @param {*} payload
|
181
181
|
* @returns {payload is Blob}
|
@@ -185,7 +185,7 @@ export function isBlob (payload: any): payload is Blob {
|
|
185
185
|
}
|
186
186
|
|
187
187
|
/**
|
188
|
-
* Returns whether the payload is a
|
188
|
+
* Returns whether the payload is a File
|
189
189
|
*
|
190
190
|
* @param {*} payload
|
191
191
|
* @returns {payload is File}
|
@@ -194,6 +194,26 @@ export function isFile (payload: any): payload is File {
|
|
194
194
|
return getType(payload) === 'File'
|
195
195
|
}
|
196
196
|
|
197
|
+
/**
|
198
|
+
* Returns whether the payload is a Promise
|
199
|
+
*
|
200
|
+
* @param {*} payload
|
201
|
+
* @returns {payload is Promise}
|
202
|
+
*/
|
203
|
+
export function isPromise (payload: any): payload is Promise<any> {
|
204
|
+
return getType(payload) === 'Promise'
|
205
|
+
}
|
206
|
+
|
207
|
+
/**
|
208
|
+
* Returns whether the payload is an Error
|
209
|
+
*
|
210
|
+
* @param {*} payload
|
211
|
+
* @returns {payload is Error}
|
212
|
+
*/
|
213
|
+
export function isError (payload: any): payload is Error {
|
214
|
+
return getType(payload) === 'Error'
|
215
|
+
}
|
216
|
+
|
197
217
|
/**
|
198
218
|
* Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
|
199
219
|
*
|
@@ -238,10 +258,10 @@ export function isType<T extends Function> (payload: any, type: T): payload is T
|
|
238
258
|
if (!(type instanceof Function)) {
|
239
259
|
throw new TypeError('Type must be a function')
|
240
260
|
}
|
241
|
-
if (!
|
261
|
+
if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
|
242
262
|
throw new TypeError('Type is not a class')
|
243
263
|
}
|
244
264
|
// Classes usually have names (as functions usually have names)
|
245
|
-
const name: string | undefined | null = (
|
265
|
+
const name: string | undefined | null = (type as any).name
|
246
266
|
return getType(payload) === name || Boolean(payload && payload.constructor === type)
|
247
267
|
}
|
package/test/ava.ts
ADDED
@@ -0,0 +1,195 @@
|
|
1
|
+
import test from 'ava'
|
2
|
+
import {
|
3
|
+
isError,
|
4
|
+
isObject,
|
5
|
+
isPlainObject,
|
6
|
+
isAnyObject,
|
7
|
+
isUndefined,
|
8
|
+
isNull,
|
9
|
+
isNullOrUndefined,
|
10
|
+
isFunction,
|
11
|
+
isArray,
|
12
|
+
isString,
|
13
|
+
isEmptyString,
|
14
|
+
isFullString,
|
15
|
+
isBoolean,
|
16
|
+
isRegExp,
|
17
|
+
isNumber,
|
18
|
+
isDate,
|
19
|
+
isSymbol,
|
20
|
+
isPrimitive,
|
21
|
+
isType,
|
22
|
+
// isBlob,
|
23
|
+
// isFile,
|
24
|
+
isPromise,
|
25
|
+
} from '../src/index'
|
26
|
+
|
27
|
+
// const blob = Buffer.from([])
|
28
|
+
|
29
|
+
test('Basic true tests', t => {
|
30
|
+
t.is(isError(new Error('')), true)
|
31
|
+
t.is(isUndefined(undefined), true)
|
32
|
+
t.is(isNull(null), true)
|
33
|
+
t.is(isNullOrUndefined(null), true)
|
34
|
+
t.is(isNullOrUndefined(undefined), true)
|
35
|
+
t.is(isObject({}), true)
|
36
|
+
t.is(isObject(new Object()), true)
|
37
|
+
t.is(
|
38
|
+
isFunction(_ => {}),
|
39
|
+
true
|
40
|
+
)
|
41
|
+
t.is(isArray([]), true)
|
42
|
+
t.is(isArray(new Array()), true)
|
43
|
+
t.is(isString(''), true)
|
44
|
+
t.is(isString('_'), true)
|
45
|
+
t.is(isEmptyString(''), true)
|
46
|
+
t.is(isFullString(' '), true)
|
47
|
+
t.is(isBoolean(true), true)
|
48
|
+
t.is(isBoolean(false), true)
|
49
|
+
t.is(isRegExp(/./), true)
|
50
|
+
t.is(isRegExp(/./gi), true)
|
51
|
+
t.is(isNumber(0), true)
|
52
|
+
t.is(isNumber(1), true)
|
53
|
+
t.is(isDate(new Date()), true)
|
54
|
+
t.is(isSymbol(Symbol()), true)
|
55
|
+
// t.is(isBlob(blob), true)
|
56
|
+
// t.is(isFile(new File([''], '', { type: 'text/html' })), true)
|
57
|
+
t.is(isPromise(new Promise((resolve, reject) => {})), true)
|
58
|
+
})
|
59
|
+
|
60
|
+
test('Basic false tests', t => {
|
61
|
+
t.is(isError({}), false)
|
62
|
+
t.is(isNumber(NaN), false)
|
63
|
+
t.is(isDate(new Date('_')), false)
|
64
|
+
t.is(isDate(NaN), false)
|
65
|
+
t.is(isUndefined(NaN), false)
|
66
|
+
t.is(isNull(NaN), false)
|
67
|
+
t.is(isObject(NaN), false)
|
68
|
+
t.is(isFunction(NaN), false)
|
69
|
+
t.is(isArray(NaN), false)
|
70
|
+
t.is(isString(NaN), false)
|
71
|
+
t.is(isEmptyString(' '), false)
|
72
|
+
t.is(isFullString(''), false)
|
73
|
+
t.is(isBoolean(NaN), false)
|
74
|
+
t.is(isRegExp(NaN), false)
|
75
|
+
t.is(isSymbol(NaN), false)
|
76
|
+
t.is(isNullOrUndefined(NaN), false)
|
77
|
+
})
|
78
|
+
|
79
|
+
test('Primitive tests', t => {
|
80
|
+
// true
|
81
|
+
t.is(isPrimitive(0), true)
|
82
|
+
t.is(isPrimitive(''), true)
|
83
|
+
t.is(isPrimitive('str'), true)
|
84
|
+
t.is(isPrimitive(Symbol()), true)
|
85
|
+
t.is(isPrimitive(true), true)
|
86
|
+
t.is(isPrimitive(false), true)
|
87
|
+
t.is(isPrimitive(null), true)
|
88
|
+
t.is(isPrimitive(undefined), true)
|
89
|
+
// false
|
90
|
+
t.is(isPrimitive(NaN), false)
|
91
|
+
t.is(isPrimitive([]), false)
|
92
|
+
t.is(isPrimitive(new Array()), false)
|
93
|
+
t.is(isPrimitive({}), false)
|
94
|
+
t.is(isPrimitive(new Object()), false)
|
95
|
+
t.is(isPrimitive(new Date()), false)
|
96
|
+
t.is(
|
97
|
+
isPrimitive(_ => {}),
|
98
|
+
false
|
99
|
+
)
|
100
|
+
})
|
101
|
+
|
102
|
+
test('Date exception', t => {
|
103
|
+
t.is(isDate(new Date('_')), false)
|
104
|
+
})
|
105
|
+
|
106
|
+
test('Generic isType', t => {
|
107
|
+
function MyClass () {}
|
108
|
+
// This is correct old fashion syntax for classes, if this is missing
|
109
|
+
MyClass.prototype.constructor = MyClass
|
110
|
+
class MyOtherClass {}
|
111
|
+
const myClass = new MyClass()
|
112
|
+
// this is expected behaviour
|
113
|
+
t.is(isType('', String), true)
|
114
|
+
t.is(isType('_', String), true)
|
115
|
+
t.is(isType('Hello World', String), true)
|
116
|
+
t.is(isType(NaN, Number), true)
|
117
|
+
t.is(isType(0, Number), true)
|
118
|
+
t.is(isType(1, Number), true)
|
119
|
+
t.is(isType({}, Object), true)
|
120
|
+
t.is(isType(new Object(), Object), true)
|
121
|
+
t.is(isType([], Array), true)
|
122
|
+
t.is(isType(new Array(), Array), true)
|
123
|
+
t.is(
|
124
|
+
isType(_ => {}, Function),
|
125
|
+
true
|
126
|
+
)
|
127
|
+
t.is(isType(true, Boolean), true)
|
128
|
+
t.is(isType(false, Boolean), true)
|
129
|
+
t.is(isType(new Date('_'), Date), true)
|
130
|
+
t.is(isType(new Date(), Date), true)
|
131
|
+
t.is(isType(/./, RegExp), true)
|
132
|
+
t.is(isType(/./gi, RegExp), true)
|
133
|
+
t.is(isType(myClass, MyClass), true)
|
134
|
+
t.is(isType(new MyOtherClass(), MyOtherClass), true)
|
135
|
+
t.is(isType(myClass, MyOtherClass), false)
|
136
|
+
t.is(isType(Symbol(), Symbol), true)
|
137
|
+
// t.is(isType(null, Null), true)
|
138
|
+
// t.is(isType(undefined, Undefined), true)
|
139
|
+
// It SHOULD fail
|
140
|
+
t.is(isType(5, String), false)
|
141
|
+
t.is(isType(null, Object), false)
|
142
|
+
// Not sure if this would be the expected behaviour but everything is an object
|
143
|
+
// so I would say so
|
144
|
+
t.is(isType(myClass, Object), true)
|
145
|
+
})
|
146
|
+
|
147
|
+
test('isObject vs isAnyObject', t => {
|
148
|
+
function MyClass () {}
|
149
|
+
// This is correct old fashion syntax for classes, if this is missing
|
150
|
+
MyClass.prototype.constructor = MyClass
|
151
|
+
const myClass = new MyClass()
|
152
|
+
class MyClass2 {}
|
153
|
+
const myClass2 = new MyClass()
|
154
|
+
const mySpecialObject = {}
|
155
|
+
Object.setPrototypeOf(mySpecialObject, {
|
156
|
+
toDate: function () {
|
157
|
+
return new Date()
|
158
|
+
},
|
159
|
+
})
|
160
|
+
// IS OBJECT
|
161
|
+
// plain object
|
162
|
+
t.is(isObject({}), true)
|
163
|
+
t.is(isObject(new Object()), true)
|
164
|
+
t.is(isPlainObject({}), true)
|
165
|
+
t.is(isPlainObject(new Object()), true)
|
166
|
+
// classes & prototypes
|
167
|
+
t.is(isObject(myClass), false)
|
168
|
+
t.is(isObject(myClass2), false)
|
169
|
+
t.is(isObject(mySpecialObject), false)
|
170
|
+
t.is(isPlainObject(myClass), false)
|
171
|
+
t.is(isPlainObject(myClass2), false)
|
172
|
+
t.is(isPlainObject(mySpecialObject), false)
|
173
|
+
// arrays and dates
|
174
|
+
t.is(isObject([]), false)
|
175
|
+
t.is(isObject(new Array()), false)
|
176
|
+
t.is(isObject(new Date('_')), false)
|
177
|
+
t.is(isObject(new Date()), false)
|
178
|
+
t.is(isPlainObject([]), false)
|
179
|
+
t.is(isPlainObject(new Array()), false)
|
180
|
+
t.is(isPlainObject(new Date('_')), false)
|
181
|
+
t.is(isPlainObject(new Date()), false)
|
182
|
+
// IS ANY OBJECT
|
183
|
+
// plain object
|
184
|
+
t.is(isAnyObject({}), true)
|
185
|
+
t.is(isAnyObject(new Object()), true)
|
186
|
+
// classes & prototypes
|
187
|
+
t.is(isAnyObject(myClass), true)
|
188
|
+
t.is(isAnyObject(myClass2), true)
|
189
|
+
t.is(isAnyObject(mySpecialObject), true)
|
190
|
+
// arrays and dates
|
191
|
+
t.is(isAnyObject([]), false)
|
192
|
+
t.is(isAnyObject(new Array()), false)
|
193
|
+
t.is(isAnyObject(new Date('_')), false)
|
194
|
+
t.is(isAnyObject(new Date()), false)
|
195
|
+
})
|
package/test/index.test.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
// @ts-check
|
1
2
|
import {
|
2
3
|
isObject,
|
3
4
|
isPlainObject,
|
@@ -19,6 +20,7 @@ import {
|
|
19
20
|
isType,
|
20
21
|
isBlob,
|
21
22
|
isFile,
|
23
|
+
isPromise,
|
22
24
|
} from '../dist/index.cjs'
|
23
25
|
|
24
26
|
test('Basic true tests', () => {
|
@@ -45,6 +47,7 @@ test('Basic true tests', () => {
|
|
45
47
|
expect(isSymbol(Symbol())).toBe(true)
|
46
48
|
expect(isBlob(new Blob())).toBe(true)
|
47
49
|
expect(isFile(new File([''], '', { type: 'text/html' }))).toBe(true)
|
50
|
+
expect(isPromise(new Promise((resolve, reject) => {}))).toBe(true)
|
48
51
|
})
|
49
52
|
|
50
53
|
test('Basic false tests', () => {
|
package/types/index.d.ts
CHANGED
@@ -108,7 +108,7 @@ export declare function isNumber(payload: any): payload is number;
|
|
108
108
|
*/
|
109
109
|
export declare function isBoolean(payload: any): payload is boolean;
|
110
110
|
/**
|
111
|
-
* Returns whether the payload is a regular expression
|
111
|
+
* Returns whether the payload is a regular expression (RegExp)
|
112
112
|
*
|
113
113
|
* @param {*} payload
|
114
114
|
* @returns {payload is RegExp}
|
@@ -122,26 +122,40 @@ export declare function isRegExp(payload: any): payload is RegExp;
|
|
122
122
|
*/
|
123
123
|
export declare function isSymbol(payload: any): payload is symbol;
|
124
124
|
/**
|
125
|
-
* Returns whether the payload is a
|
125
|
+
* Returns whether the payload is a Date, and that the date is valid
|
126
126
|
*
|
127
127
|
* @param {*} payload
|
128
128
|
* @returns {payload is Date}
|
129
129
|
*/
|
130
130
|
export declare function isDate(payload: any): payload is Date;
|
131
131
|
/**
|
132
|
-
* Returns whether the payload is a
|
132
|
+
* Returns whether the payload is a Blob
|
133
133
|
*
|
134
134
|
* @param {*} payload
|
135
135
|
* @returns {payload is Blob}
|
136
136
|
*/
|
137
137
|
export declare function isBlob(payload: any): payload is Blob;
|
138
138
|
/**
|
139
|
-
* Returns whether the payload is a
|
139
|
+
* Returns whether the payload is a File
|
140
140
|
*
|
141
141
|
* @param {*} payload
|
142
142
|
* @returns {payload is File}
|
143
143
|
*/
|
144
144
|
export declare function isFile(payload: any): payload is File;
|
145
|
+
/**
|
146
|
+
* Returns whether the payload is a Promise
|
147
|
+
*
|
148
|
+
* @param {*} payload
|
149
|
+
* @returns {payload is Promise}
|
150
|
+
*/
|
151
|
+
export declare function isPromise(payload: any): payload is Promise<any>;
|
152
|
+
/**
|
153
|
+
* Returns whether the payload is an Error
|
154
|
+
*
|
155
|
+
* @param {*} payload
|
156
|
+
* @returns {payload is Error}
|
157
|
+
*/
|
158
|
+
export declare function isError(payload: any): payload is Error;
|
145
159
|
/**
|
146
160
|
* Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
|
147
161
|
*
|
package/wallaby.conf.js
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module.exports = function (wallaby) {
|
2
|
-
return {
|
3
|
-
files: [
|
4
|
-
'src/**/*.ts',
|
5
|
-
'dist/**/*.js'
|
6
|
-
],
|
7
|
-
tests: [
|
8
|
-
'test/**/*.js'
|
9
|
-
],
|
10
|
-
env: {
|
11
|
-
type: 'node',
|
12
|
-
runner: 'node'
|
13
|
-
},
|
14
|
-
compilers: {
|
15
|
-
'**/*.+(js|ts)': wallaby.compilers.typeScript({allowJs: true, outDir: './bin'})
|
16
|
-
},
|
17
|
-
preprocessors: {
|
18
|
-
'**/*.jsts': file => file.changeExt('js').content
|
19
|
-
},
|
20
|
-
testFramework: 'jest',
|
21
|
-
debug: true
|
22
|
-
}
|
23
|
-
}
|