UNPKG

4.92 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.js","sources":["../src/lib/constants.ts","../src/lib/other/debounce.ts","../src/lib/other/deepClone.ts","../src/lib/types.ts","../src/lib/general.ts","../src/lib/object.ts"],"sourcesContent":["export const enum Time {\n\tMillisecond = 1,\n\tSecond = 1000,\n\tMinute = 1000 * 60,\n\tHour = 1000 * 60 * 60,\n\tDay = 1000 * 60 * 60 * 24,\n\tMonth = 1000 * 60 * 60 * 24 * 30,\n\tYear = 1000 * 60 * 60 * 24 * 365\n}\n\nexport const primitiveTypes = ['string', 'bigint', 'number', 'boolean'];\n","export const debounce = <F extends (...args: any[]) => any>(fn: F, waitFor: number) => {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null;\n\n\tconst debounced = (...args: Parameters<F>) => {\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = null;\n\t\t}\n\t\ttimeout = setTimeout(() => fn(...args), waitFor);\n\t};\n\n\treturn debounced as (...args: Parameters<F>) => ReturnType<F>;\n};\n","import { isObject, isPrimitive } from '../types';\n\n/**\n * Deep clone an object\n * @param source The object to clone\n */\nexport function deepClone<T>(source: T): T {\n\t// Check if it's a primitive (with exception of function and null, which is typeof object)\n\tif (source === null || isPrimitive(source)) return source;\n\tif (Array.isArray(source)) {\n\t\tconst output = ([] as unknown) as T & T extends (infer S)[] ? S[] : never;\n\t\tfor (const value of source) output.push(deepClone(value));\n\t\treturn (output as unknown) as T;\n\t}\n\tif (isObject(source)) {\n\t\tconst output = {} as Record<PropertyKey, unknown>;\n\t\tfor (const [key, value] of Object.entries(source)) output[key] = deepClone(value);\n\t\treturn (output as unknown) as T;\n\t}\n\tif (source instanceof Map) {\n\t\tconst output = (new (source.constructor as MapConstructor)() as unknown) as T & T extends Map<infer K, infer V> ? Map<K, V> : never;\n\t\tfor (const [key, value] of source.entries()) output.set(key, deepClone(value));\n\t\treturn (output as unknown) as T;\n\t}\n\tif (source instanceof Set) {\n\t\tconst output = (new (source.constructor as SetConstructor)() as unknown) as T & T extends Set<infer K> ? Set<K> : never;\n\t\tfor (const value of source.values()) output.add(deepClone(value));\n\t\treturn (output as unknown) as T;\n\t}\n\treturn source;\n}\n","import { primitiveTypes } from './constants';\n\n/**\n * Verify if the input is an object literal (or class).\n * @param input The object to verify\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isObject(input: unknown): input is Record<PropertyKey, unknown> | object {\n\treturn typeof input === 'object' && input ? input.constructor === Object : false;\n}\n\n/**\n * Check whether a value is a primitive\n * @param input The input to check\n */\nexport function isPrimitive(input: unknown): input is string | bigint | number | boolean {\n\treturn primitiveTypes.includes(typeof input);\n}\n","export function notEmpty<TValue>(value: TValue | null | undefined): value is TValue {\n\treturn value !== null && value !== undefined;\n}\n\nexport function sleep(ms: number) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noOp() {}\n","export function objectEntries<T extends Record<PropertyKey, unknown>>(obj: T) {\n\treturn Object.entries(obj) as [keyof T, T[keyof T]][];\n}\n\nexport function objectValues<T extends Record<PropertyKey, unknown>>(obj: T) {\n\treturn Object.values(obj) as T[keyof T][];\n}\n\nexport function objectKeys<T extends Record<PropertyKey, unknown>>(obj: T) {\n\treturn Object.keys(obj) as (keyof T)[];\n}\n"],"names":["primitiveTypes","fn","waitFor","timeout","args","clearTimeout","setTimeout","deepClone","source","input","includes","Array","isArray","output","value","push","constructor","Object","isObject","key","entries","Map","set","Set","values","add","obj","keys","ms","Promise","resolve"],"mappings":"0EAUaA,EAAiB,CAAC,SAAU,SAAU,SAAU,4BCVrC,CAAoCC,EAAOC,KAClE,IAAIC,EAAgD,KAUpD,MARkB,IAAIC,KACL,OAAZD,IACHE,aAAaF,GACbA,EAAU,MAEXA,EAAUG,WAAW,IAAML,KAAMG,GAAOF,gCCF1BK,EAAaC,GAE5B,GAAe,OAAXA,ICOuBC,EDPQD,ECQ5BR,EAAeU,gBAAgBD,IDRM,OAAOD,MCOxBC,EDN3B,GAAIE,MAAMC,QAAQJ,GAAS,CAC1B,MAAMK,EAAU,GAChB,IAAK,MAAMC,KAASN,EAAQK,EAAOE,KAAKR,EAAUO,IAClD,OAAQD,EAET,YCPwBJ,GACxB,QAAwB,iBAAVA,IAAsBA,IAAQA,EAAMO,cAAgBC,ODM9DC,CAASV,GAAS,CACrB,MAAMK,EAAS,GACf,IAAK,MAAOM,EAAKL,KAAUG,OAAOG,QAAQZ,GAASK,EAAOM,GAAOZ,EAAUO,GAC3E,OAAQD,EAET,GAAIL,aAAkBa,IAAK,CAC1B,MAAMR,EAAU,IAAKL,EAAOQ,YAC5B,IAAK,MAAOG,EAAKL,KAAUN,EAAOY,UAAWP,EAAOS,IAAIH,EAAKZ,EAAUO,IACvE,OAAQD,EAET,GAAIL,aAAkBe,IAAK,CAC1B,MAAMV,EAAU,IAAKL,EAAOQ,YAC5B,IAAK,MAAMF,KAASN,EAAOgB,SAAUX,EAAOY,IAAIlB,EAAUO,IAC1D,OAAQD,EAET,OAAOL,uDE7ByBM,GAChC,OAAOA,MAAAA,kCCD8DY,GACrE,OAAOT,OAAOG,QAAQM,gCAO4CA,GAClE,OAAOT,OAAOU,KAAKD,kCALiDA,GACpE,OAAOT,OAAOO,OAAOE,oDDDAE,GACrB,OAAO,IAAIC,QAASC,GAAYxB,WAAWwB,EAASF"}
\No newline at end of file