payload-is
Version:
A comprehensive TypeScript/JavaScript type checking library providing functions to check data types, collections, primitives, and built-in objects
101 lines (97 loc) • 1.97 kB
JavaScript
;
var type = require('./type.cjs');
const FunctionTag = [
"Function",
"AsyncFunction",
"GeneratorFunction",
"AsyncGeneratorFunction"
];
function toFunctionTag(data) {
const tag = type.getTag(data);
return FunctionTag.includes(tag) ? tag : "Function";
}
const ObjectTag = [
// iterator
"Segmenter String Iterator",
"RegExp String Iterator",
"String Iterator",
"Array Iterator",
"Map Iterator",
"Set Iterator",
"Generator",
"Iterator",
"AsyncGenerator",
"AsyncIterator",
// buffer
"ArrayBuffer",
"SharedArrayBuffer",
"DataView",
"Int8Array",
"Uint8Array",
"Int16Array",
"Uint16Array",
"Int32Array",
"Uint32Array",
"Float32Array",
"Float64Array",
"BigInt64Array",
"BigUint64Array",
// object
"String",
"Number",
"BigInt",
"Boolean",
"Symbol",
"Error",
"Array",
"Set",
"Map",
"WeakSet",
"WeakMap",
"WeakRef",
"Promise",
"Date",
"RegExp",
"URL",
"URLSearchParams",
"File",
"Blob",
"FormData",
"Headers",
"Request",
"Response",
"Arguments",
"Atomics",
"JSON",
"Reflect",
"Object"
];
function toObjectTag(data) {
const tag = type.getTag(data);
return ObjectTag.includes(tag) ? tag : "Object";
}
function getDataType(data) {
switch (typeof data) {
case "undefined":
return { type: "undefined", data };
case "number":
return { type: "number", data };
case "bigint":
return { type: "bigint", data };
case "boolean":
return { type: "boolean", data };
case "string":
return { type: "string", data };
case "symbol":
return { type: "symbol", data };
case "function":
return { type: "function", subtype: toFunctionTag(data), data };
case "object":
if (data === null) {
return { type: "null", data };
}
return { type: "object", subtype: toObjectTag(data), data };
}
}
exports.getDataType = getDataType;
//# sourceMappingURL=dataType.cjs.map