{"version":3,"file":"is.mjs","names":[],"sources":["../../../src/common/data/is.ts"],"sourcesContent":["// https://github.com/sindresorhus/is/ MIT\n// https://github.com/sindresorhus/ts-extras\n// https://github.com/sindresorhus/type-fest\n// https://github.com/antfu/utils\n\nimport { size } from './utils'\n\n// https://developer.mozilla.org/en-US/docs/Glossary/Primitive\nexport type Primitive =\n  | null\n  | undefined\n  | string\n  | number\n  | boolean\n  | symbol\n  | bigint\n\nexport function isObject(obj: unknown): obj is object {\n  return obj != null && typeof obj === 'object'\n}\n\n// eslint-disable-next-line ts/no-unsafe-function-type\nexport function isFunction(obj: unknown): obj is Function {\n  return obj != null && typeof obj === 'function'\n}\n\nexport function isBinaryArray<T>(obj: unknown): obj is T {\n  return (typeof Uint8Array !== 'undefined' &&  obj instanceof Uint8Array)\n    || (typeof Uint8ClampedArray !== 'undefined' &&  obj instanceof Uint8ClampedArray)\n    || (typeof Uint16Array !== 'undefined' &&  obj instanceof Uint16Array)\n    || (typeof Uint32Array !== 'undefined' &&  obj instanceof Uint32Array)\n    || (typeof Int8Array !== 'undefined' &&  obj instanceof Int8Array)\n    || (typeof Int16Array !== 'undefined' &&  obj instanceof Int16Array)\n    || (typeof Int32Array !== 'undefined' &&  obj instanceof Int32Array)\n    || (typeof Float32Array !== 'undefined' &&  obj instanceof Float32Array)\n    || (typeof Float64Array !== 'undefined' &&  obj instanceof Float64Array)\n    || (typeof BigInt64Array !== 'undefined' &&  obj instanceof BigInt64Array)\n    || (typeof BigUint64Array !== 'undefined' &&  obj instanceof BigUint64Array)\n}\n\n/** Something like number, string, boolean */\nexport function isPrimitive(obj: unknown): obj is Primitive {\n  return Object(obj) !== obj\n}\n\nexport function isArray(obj: unknown): obj is Array<any> {\n  return Array.isArray(obj)\n}\n\n/** Object that is not an array. But could also be an object defined by a class. */\nexport function isRecord(obj: unknown): obj is Record<string, any> {\n  return isObject(obj) && !isArray(obj)\n}\n\n/** Just data, like constructed via `{...}`. */\nexport function isRecordPlain(obj: unknown): obj is Record<string, any> {\n  return obj?.constructor === Object\n}\n\nexport function isString(obj: unknown): obj is string {\n  return typeof obj === 'string'\n}\n\nexport function isNumber(obj: unknown): obj is number {\n  return typeof obj === 'number' && !Number.isNaN(obj) // wtf! Nan === type number\n}\n\nexport function isInteger(obj: unknown): obj is number {\n  return isNumber(obj) && Number.isInteger(obj)\n}\n\n/** Integer with full precision i.e. its value is in the signed 53 bit range.  */\nexport function isSafeInteger(obj: unknown): obj is number {\n  return isNumber(obj) && Number.isSafeInteger(obj)\n}\n\nexport function isBoolean(obj: unknown): obj is boolean {\n  return typeof obj === 'boolean'\n}\n\nexport function isSymbol(obj: unknown): obj is symbol {\n  return typeof obj === 'symbol'\n}\n\n/** @deprecated use `isNull` */\nexport function isNullOrUndefined(obj: unknown): obj is null | undefined {\n  return obj == null\n}\n\nexport function isNull(obj: unknown): obj is null | undefined {\n  return obj == null\n}\nexport function isUint8Array(obj: unknown): obj is Uint8Array {\n  return isObject(obj) && obj.constructor.name === 'Uint8Array'\n}\n\n// https://stackoverflow.com/a/46700791/140927\n\n/** Not `null` or `undefined`, use like `.filter(isNotNull)` */\nexport function isNotNull<T>(value: T | null | undefined): value is T {\n  return value != null\n}\n\n/** Empty means `null` or `undefined` or object, array or string without items, use like `.filter(isEmpty)` */\nexport function isEmpty<T>(value: T | null | undefined): value is T {\n  return value == null || value === '' || (isObject(value) && size(value) <= 0)\n}\n\n/** Not `null` or `undefined` or object or array without items, use like `.filter(isNotEmpty)` */\nexport function isNotEmpty<T>(value: T | null | undefined): value is T {\n  return !isEmpty(value)\n}\n\n/**\n * Not `null` or `undefined` or `false`, use like `.filter(isValue)`.\n * Usefull e.g. on conditional list: `[x && 'value', ...]`\n */\nexport function isValue<T>(value: T | null | undefined | boolean): value is T {\n  return value != null && value !== false && value !== true // todo limit on false?\n}\n\n/**\n * Not `null` or `undefined` or `false` or empty string, use like `.filter(isValue)`.\n * Usefull e.g. on conditional list: `[x && 'value', ...]`\n */\nexport function isTruthy<T>(value: T | null | undefined | boolean): value is T {\n  return value != null && value !== false && value !== 0 && value !== ''\n}\n"],"mappings":";;;AAiBA,SAAgB,SAAS,KAA6B;AACpD,QAAO,OAAO,QAAQ,OAAO,QAAQ;;AAIvC,SAAgB,WAAW,KAA+B;AACxD,QAAO,OAAO,QAAQ,OAAO,QAAQ;;AAGvC,SAAgB,cAAiB,KAAwB;AACvD,QAAQ,OAAO,eAAe,eAAgB,eAAe,cACvD,OAAO,sBAAsB,eAAgB,eAAe,qBAC5D,OAAO,gBAAgB,eAAgB,eAAe,eACtD,OAAO,gBAAgB,eAAgB,eAAe,eACtD,OAAO,cAAc,eAAgB,eAAe,aACpD,OAAO,eAAe,eAAgB,eAAe,cACrD,OAAO,eAAe,eAAgB,eAAe,cACrD,OAAO,iBAAiB,eAAgB,eAAe,gBACvD,OAAO,iBAAiB,eAAgB,eAAe,gBACvD,OAAO,kBAAkB,eAAgB,eAAe,iBACxD,OAAO,mBAAmB,eAAgB,eAAe;;;AAIjE,SAAgB,YAAY,KAAgC;AAC1D,QAAO,OAAO,IAAI,KAAK;;AAGzB,SAAgB,QAAQ,KAAiC;AACvD,QAAO,MAAM,QAAQ,IAAI;;;AAI3B,SAAgB,SAAS,KAA0C;AACjE,QAAO,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI;;;AAIvC,SAAgB,cAAc,KAA0C;AACtE,QAAO,KAAK,gBAAgB;;AAG9B,SAAgB,SAAS,KAA6B;AACpD,QAAO,OAAO,QAAQ;;AAGxB,SAAgB,SAAS,KAA6B;AACpD,QAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,MAAM,IAAI;;AAGtD,SAAgB,UAAU,KAA6B;AACrD,QAAO,SAAS,IAAI,IAAI,OAAO,UAAU,IAAI;;;AAI/C,SAAgB,cAAc,KAA6B;AACzD,QAAO,SAAS,IAAI,IAAI,OAAO,cAAc,IAAI;;AAGnD,SAAgB,UAAU,KAA8B;AACtD,QAAO,OAAO,QAAQ;;AAGxB,SAAgB,SAAS,KAA6B;AACpD,QAAO,OAAO,QAAQ;;;AAIxB,SAAgB,kBAAkB,KAAuC;AACvE,QAAO,OAAO;;AAGhB,SAAgB,OAAO,KAAuC;AAC5D,QAAO,OAAO;;AAEhB,SAAgB,aAAa,KAAiC;AAC5D,QAAO,SAAS,IAAI,IAAI,IAAI,YAAY,SAAS;;;AAMnD,SAAgB,UAAa,OAAyC;AACpE,QAAO,SAAS;;;AAIlB,SAAgB,QAAW,OAAyC;AAClE,QAAO,SAAS,QAAQ,UAAU,MAAO,SAAS,MAAM,IAAI,KAAK,MAAM,IAAI;;;AAI7E,SAAgB,WAAc,OAAyC;AACrE,QAAO,CAAC,QAAQ,MAAM;;;;;;AAOxB,SAAgB,QAAW,OAAmD;AAC5E,QAAO,SAAS,QAAQ,UAAU,SAAS,UAAU;;;;;;AAOvD,SAAgB,SAAY,OAAmD;AAC7E,QAAO,SAAS,QAAQ,UAAU,SAAS,UAAU,KAAK,UAAU"}