@moyal/js-type
Version:
Minimal, robust type detection and value classification utility for JavaScript.
7 lines (6 loc) • 3.43 kB
JavaScript
/*!
* @moyal/js-type v1.0.3
* (c) 2000–present Ilan Moyal
* Released under the MIT License
*/
class n{static version="1.0.3"}const t=["string","number","bigint","boolean","symbol"],r=Object.prototype.toString;function e(){return n.version}function o(n){if(null===n)return"null";let e=typeof n;if("function"===e)(function(n){const t=Function.prototype.toString.call(n);return/^class\s/.test(t)})(n)&&(e="class");else if("object"===e&&(e=r.call(n).slice(8,-1).toLowerCase(),!t.includes(e))){const t=n.constructor;t&&"string"==typeof t.name&&(e=t.name,"Object"!==e&&"Array"!==e||(e=e.toLowerCase()))}return e}function u(n,t){return o(n)===t}function i(n){return"string"===o(n)}function c(n){return"symbol"===o(n)}function l(n,{allowNaN:t=!0,allowInfinity:r=!0}={}){if("number"!==o(n))return!1;const e=Number(n);return!(!t&&Number.isNaN(e))&&!(!r&&!Number.isFinite(e))}function f(n){return"bigint"===o(n)}function s(n){return l(n)||f(n)}function a(n){return"boolean"===o(n)}function b(n){return void 0===n}function y(n){return null===n}function j(n){return"function"===o(n)}function g(n){return"class"===o(n)}function p(n){if("[object Object]"!==r.call(n))return!1;const t=Object.getPrototypeOf(n);return t===Object.prototype||null===t}function m(n){if(null===n||"object"!=typeof n||Array.isArray(n))return!1;const t=r.call(n);return!["[object String]","[object Number]","[object Boolean]","[object BigInt]","[object Symbol]","[object Function]"].includes(t)}function N(n){return"Date"===o(n)}function w(n){return Array.isArray(n)}function S(n){return null!=n&&"[object Error]"===r.call(n)}function A(n){return null!=n&&t.includes(o(n))}function F(n,t=null){return(f(n)||l(n)&&Math.floor(n)===n)&&(null==t||!0===t(n))}function O(n){return h(n?.[Symbol.iterator])}function h(n){const t=typeof n,e=r.call(n);return!("object"!==t&&"function"!==t||"[object Function]"!==e&&"[object GeneratorFunction]"!==e)}function d(n){return"[object GeneratorFunction]"===r.call(n)}function k(n){return"[object AsyncFunction]"===r.call(n)}function v(n){const t=o(n);if("string"!==t)return new L(n,n,t);const r=n.trim();if("true"===r||"false"===r)return new L(n,"true"===r,"boolean");const e=parseFloat(r);if(!isNaN(e)){if(e.toString()===Number(r).toString())return new L(n,e,"number")}return new L(n,n,"string")}function C(n){if(a(n))return n;if(i(n)){const t=n.trim().toLowerCase();if("true"===t)return!0;if("false"===t)return!1}}class L{constructor(n,t,r){this.originalValue=n,this.parsedValue=t,this.type=r}}function M(n){return"RegExp"===o(n)}function x(n){return"Map"===o(n)}function B(n){return"Set"===o(n)}function E(n){return"WeakMap"===o(n)}function G(n){return"WeakSet"===o(n)}function I(n){return"Promise"===o(n)}function P(n){return null==n||(i(n)||Array.isArray(n)?0===n.length:x(n)||B(n)?0===n.size:!!p(n)&&0===Object.keys(n).length)}function V(n){return!P(n)}export{L as InferDataTypeResult,o as getTypeName,v as inferDataType,w as isArray,k as isAsyncFunction,f as isBigInt,a as isBoolean,N as isDate,P as isEmpty,S as isError,j as isFunction,h as isFunctionOrGeneratorFunction,d as isGeneratorFunction,F as isIntegral,O as isIterable,x as isMap,V as isNotEmpty,y as isNull,l as isNumber,s as isNumeric,m as isObject,p as isPlainObject,A as isPrimitive,I as isPromise,M as isRegExp,B as isSet,i as isString,c as isSymbol,u as isType,b as isUndefined,g as isUserDefinedClass,E as isWeakMap,G as isWeakSet,C as parseBool,e as version};