UNPKG

5.05 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.es.mjs","sources":["../src/lib/constants.ts","../src/lib/object.ts","../src/lib/general.ts","../src/lib/other/debounce.ts","../src/lib/other/deepClone.ts","../src/lib/types.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 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","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 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"],"names":["primitiveTypes","objectEntries","obj","Object","entries","objectValues","values","objectKeys","keys","notEmpty","value","sleep","ms","Promise","resolve","setTimeout","noOp","debounce","fn","waitFor","timeout","args","clearTimeout","deepClone","source","input","includes","Array","isArray","output","push","constructor","isObject","key","Map","set","Set","add"],"mappings":"MAUaA,EAAiB,CAAC,SAAU,SAAU,SAAU,oBCV7CC,EAAsDC,GACrE,OAAOC,OAAOC,QAAQF,YAGPG,EAAqDH,GACpE,OAAOC,OAAOG,OAAOJ,YAGNK,EAAmDL,GAClE,OAAOC,OAAOK,KAAKN,YCTJO,EAAiBC,GAChC,OAAOA,MAAAA,WAGQC,EAAMC,GACrB,OAAO,IAAIC,QAASC,GAAYC,WAAWD,EAASF,aAIrCI,WCTHC,EAAW,CAAoCC,EAAOC,KAClE,IAAIC,EAAgD,KAUpD,MARkB,IAAIC,KACL,OAAZD,IACHE,aAAaF,GACbA,EAAU,MAEXA,EAAUL,WAAW,IAAMG,KAAMG,GAAOF,cCF1BI,EAAaC,GAE5B,GAAe,OAAXA,ICOuBC,EDPQD,ECQ5BxB,EAAe0B,gBAAgBD,IDRM,OAAOD,MCOxBC,EDN3B,GAAIE,MAAMC,QAAQJ,GAAS,CAC1B,MAAMK,EAAU,GAChB,IAAK,MAAMnB,KAASc,EAAQK,EAAOC,KAAKP,EAAUb,IAClD,OAAQmB,EAET,YCPwBJ,GACxB,QAAwB,iBAAVA,IAAsBA,IAAQA,EAAMM,cAAgB5B,ODM9D6B,CAASR,GAAS,CACrB,MAAMK,EAAS,GACf,IAAK,MAAOI,EAAKvB,KAAUP,OAAOC,QAAQoB,GAASK,EAAOI,GAAOV,EAAUb,GAC3E,OAAQmB,EAET,GAAIL,aAAkBU,IAAK,CAC1B,MAAML,EAAU,IAAKL,EAAOO,YAC5B,IAAK,MAAOE,EAAKvB,KAAUc,EAAOpB,UAAWyB,EAAOM,IAAIF,EAAKV,EAAUb,IACvE,OAAQmB,EAET,GAAIL,aAAkBY,IAAK,CAC1B,MAAMP,EAAU,IAAKL,EAAOO,YAC5B,IAAK,MAAMrB,KAASc,EAAOlB,SAAUuB,EAAOQ,IAAId,EAAUb,IAC1D,OAAQmB,EAET,OAAOL"}
\No newline at end of file