UNPKG

6.57 kBJavaScriptView Raw
1"use strict";
2// Javascript Standard Object
3Object.defineProperty(exports, "__esModule", { value: true });
4exports.isPromiseLike = exports.isPromise = exports.isGenerator = exports.isError = exports.isDate = exports.isRegExp = exports.isClass = exports.isObject = exports.isAsyncGeneratorFunction = exports.isAsyncFunction = exports.isGeneratorFunction = exports.isFunction = exports.isArray = void 0;
5const node_util_1 = require("node:util");
6const util_1 = require("./util");
7const debug = (0, node_util_1.debuglog)('is-type-of:std');
8// Array
9/**
10 * returns true if val is array, it won't check items of array
11 */
12function isArray(val) {
13 return Array.isArray(val);
14}
15exports.isArray = isArray;
16// Function
17/**
18 * returns true if val is function
19 */
20function isFunction(val) {
21 return typeof val === 'function';
22}
23exports.isFunction = isFunction;
24/**
25 * returns true if val is generator function
26 */
27function isGeneratorFunction(val) {
28 return node_util_1.types.isGeneratorFunction(val);
29}
30exports.isGeneratorFunction = isGeneratorFunction;
31/**
32 * returns true if val is async function
33 */
34function isAsyncFunction(val) {
35 return node_util_1.types.isAsyncFunction(val);
36}
37exports.isAsyncFunction = isAsyncFunction;
38/**
39 * returns true if val is async generator function
40 */
41function isAsyncGeneratorFunction(val) {
42 if (!isFunction(val))
43 return false;
44 return val.constructor && val.constructor.name === 'AsyncGeneratorFunction';
45}
46exports.isAsyncGeneratorFunction = isAsyncGeneratorFunction;
47// Object
48/**
49 * returns true if val is object
50 */
51function isObject(val) {
52 return typeof val === 'object' && val !== null;
53}
54exports.isObject = isObject;
55/**
56 * returns true if val is class
57 * *Note:* "class" is supported in ECMAScript 6, and if the code is using some compiler or transpiler, the checking might fail
58 */
59function isClass(val) {
60 if (!isFunction(val))
61 return false;
62 const fnStr = Function.prototype.toString.call(val);
63 if (/^class[\s{]/.test(fnStr))
64 return true;
65 debug('[isClass] fnStr: %s', fnStr);
66 const fnBody = fnStr.replace(/^[^{]*{\s*/, '').replace(/\s*}[^}]*$/, '');
67 debug('[isClass] fnBody: %s', fnBody);
68 return (/classCallCheck\(/.test(fnBody) || /TypeError\("Cannot call a class as a function"\)/.test(fnBody));
69}
70exports.isClass = isClass;
71/**
72 * returns true if val is regular expression
73 */
74function isRegExp(val) {
75 return (0, util_1.isInstanceOf)(val, RegExp);
76}
77exports.isRegExp = isRegExp;
78/**
79 * returns true if val is instance of Date
80 */
81function isDate(val) {
82 return (0, util_1.isInstanceOf)(val, Date);
83}
84exports.isDate = isDate;
85/**
86 * returns true if val is instance of Error
87 */
88function isError(val) {
89 return (0, util_1.isInstanceOf)(val, Error);
90}
91exports.isError = isError;
92/**
93 * returns true if val is generator
94 */
95function isGenerator(val) {
96 return node_util_1.types.isGeneratorObject(val);
97}
98exports.isGenerator = isGenerator;
99/**
100 * returns true if val is promise
101 */
102function isPromise(val) {
103 return node_util_1.types.isPromise(val);
104}
105exports.isPromise = isPromise;
106/**
107 * returns true if val is like promise, if the object has `then` property, the checking will pass.
108 */
109function isPromiseLike(val) {
110 if (isPromise(val))
111 return true;
112 if (!isObject(val))
113 return false;
114 return (0, util_1.hasOwnProperty)(val, 'then') && typeof val.then === 'function';
115}
116exports.isPromiseLike = isPromiseLike;
117//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3N0ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkJBQTZCOzs7QUFFN0IseUNBQTRDO0FBQzVDLGlDQUFzRDtBQUd0RCxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUV6QyxRQUFRO0FBRVI7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQVUsR0FBYTtJQUM1QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUZELDBCQUVDO0FBRUQsV0FBVztBQUVYOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFxQixHQUFhO0lBQzFELE9BQU8sT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDO0FBQ25DLENBQUM7QUFGRCxnQ0FFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsR0FBYTtJQUMvQyxPQUFPLGlCQUFLLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUZELGtEQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsR0FBYTtJQUMzQyxPQUFPLGlCQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFGRCwwQ0FFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsR0FBYTtJQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQztBQUM5RSxDQUFDO0FBSEQsNERBR0M7QUFFRCxTQUFTO0FBRVQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsR0FBYTtJQUNwQyxPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQ2pELENBQUM7QUFGRCw0QkFFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLE9BQU8sQ0FBa0IsR0FBYTtJQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0MsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksa0RBQWtELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUcsQ0FBQztBQVJELDBCQVFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsR0FBYTtJQUNwQyxPQUFPLElBQUEsbUJBQVksRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUZELDRCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixNQUFNLENBQUMsR0FBYTtJQUNsQyxPQUFPLElBQUEsbUJBQVksRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUZELHdCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUMsR0FBYTtJQUNuQyxPQUFPLElBQUEsbUJBQVksRUFBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUZELDBCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixXQUFXLENBQUMsR0FBYTtJQUN2QyxPQUFPLGlCQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUZELGtDQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQVUsR0FBYTtJQUM5QyxPQUFPLGlCQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFGRCw4QkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFVLEdBQWE7SUFDbEQsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNqQyxPQUFPLElBQUEscUJBQWMsRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQUN2RSxDQUFDO0FBSkQsc0NBSUMifQ==
\No newline at end of file