{"version":3,"sources":["jsdelivr-header.js","/npm/@dzeio/object-util@1.9.2/src/ObjectUtil.ts"],"names":[],"mappings":"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","file":"/npm/@dzeio/object-util@1.9.2/dist/ObjectUtil.global.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@dzeio/object-util@1.9.2/dist/ObjectUtil.global.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export type BasicObjectKeys = string | number | symbol\nexport type BasicObject<K extends BasicObjectKeys = BasicObjectKeys, V = any> = { [P in K]?: V }\n\n/**\n * Pick a from a text union only elements in Keys\n */\ntype TextPick<T extends BasicObjectKeys, Keys extends BasicObjectKeys> = T extends Keys ? T : never\n\n/**\n * Remap an object to an array through a function\n *\n * (Same as Array.map but for objects)\n *\n * @param obj the object to remap\n * @param fn the function to run for each key: value pairs\n * @returns {Array} a new array filled with the object fn callback\n */\nexport function objectMap<T = any, J = any, K extends BasicObjectKeys = BasicObjectKeys>(\n\tobj: BasicObject<K, T>,\n\tfn: (value: T, key: K, index: number) => J\n): Array<J> {\n\tmustBeObject(obj)\n\tconst list: Array<J> = []\n\tobjectLoop(obj, (item, key, index) => {\n\t\tlist.push(fn(item, key, index))\n\t})\n\treturn list\n}\n\n/**\n * a more advanced map function that transform an object back into another object\n *\n * note: if multiple key are the same only the last value will be set unless options.strict is enabled\n *\n * note2: for an array you will have to add manual typing to the `key` like this: `key: number`\n *\n * warn: the value is not a clone\n *\n * @param obj the object to remap (it will not be changed)\n * @param fn the function to run through\n * @param options optionnal options that change how the function works\n * @param options.strict (default: false) enabling this will throw an error if the same key is set twice\n * @returns a not deeply cloned object with it's key/values set from the [fn] function\n */\nexport function objectRemap<T = any, J extends BasicObject = BasicObject, K extends BasicObjectKeys = BasicObjectKeys>(\n\tobj: BasicObject<K, T>,\n\tfn: (value: T, key: K, index: number) => { key: keyof J, value: J[typeof key] },\n\toptions?: { strict?: boolean }\n): J {\n\tmustBeObject(obj)\n\n\t// create a clone\n\tconst clone: J = {} as any\n\n\t// loop through each keys\n\tobjectLoop(obj, (item, oldKey, index) => {\n\t\tconst { key, value } = fn(item, oldKey, index)\n\t\tif (options?.strict && key in clone) {\n\t\t\tthrow new Error('objectRemap strict mode active, you can\\'t remap the same key twice')\n\t\t}\n\n\t\t// set new key pair into the clone\n\t\tclone[key] = value\n\t})\n\treturn clone\n}\n\n/**\n * Loop through the object\n *\n * @param obj the object to loop through\n * @param fn the function to run for each childs if the function return `false` it will stop\n * @returns {boolean} return if the loop finished or ended early\n */\nexport function objectLoop<T = any, K extends BasicObjectKeys = BasicObjectKeys>(\n\tobj: BasicObject<K, T>,\n\tfn: (value: T, key: K, index: number) => boolean | void\n): boolean {\n\tmustBeObject(obj)\n\n\t// get the object keys\n\tconst keys = objectKeys(obj)\n\n\t// loop trough each keys\n\tfor (let index = 0; index < keys.length; index++) {\n\t\tconst key = keys[index]\n\t\tconst stop = fn(obj[key] as T, key as K, index)\n\t\tif (stop === false) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n/**\n * Transform an object to an array of its values\n *\n * @param obj the object to transform\n * @returns {Array} an array containing the object's values\n */\nexport function objectValues<T = any>(obj: BasicObject<BasicObjectKeys, T>): Array<T> {\n\tmustBeObject(obj)\n\treturn Object.values(obj) as Array<T>\n}\n\n/**\n * @deprecated use `objectValues`\n */\nexport function objectToArray<T = any>(obj: BasicObject<BasicObjectKeys, T>): Array<T> {\n\tmustBeObject(obj)\n\treturn objectValues(obj)\n}\n\n/**\n * return the keys of the object\n *\n * @param obj the object\n * @returns {Array} an array containing the object's keys\n */\nexport function objectKeys<K extends BasicObjectKeys = BasicObjectKeys>(obj: BasicObject<K>): Array<K> {\n\tmustBeObject(obj)\n\n\t// Handle arrays\n\tif (Array.isArray(obj)) {\n\t\treturn Array.from(obj.keys()) as Array<K>\n\t}\n\treturn Object.keys(obj) as Array<K>\n}\n\n/**\n * return the length of an object\n *\n * @param obj the object\n * @returns {number} the object's size\n */\nexport function objectSize(obj: BasicObject): number {\n\treturn objectKeys(obj).length\n}\n\n/**\n * Sort an object by its keys\n *\n * Same as Array.sort but for objects\n *\n * @param obj the object to sort\n * @param fn (Optionnal) the function to run to sort\n * @returns a new object with the keys sorted using the fn\n */\nexport function objectSort<T extends BasicObject>(\n\tobj: T,\n\tfn?: Array<keyof T> | ((a: keyof T, b: keyof T) => number)\n): T {\n\tmustBeObject(obj)\n\tconst ordered: any = {}\n\tlet sortedKeys: Array<keyof T> = []\n\tif (Array.isArray(fn)) {\n\t\tsortedKeys = fn.concat(objectKeys(obj).filter((key) => !fn.includes(key)))\n\t} else {\n\t\tsortedKeys = objectKeys(obj).sort(fn)\n\t}\n\tfor (const key of sortedKeys) {\n\t\tordered[key] = obj[key]\n\t}\n\treturn ordered\n}\n\n/**\n * @deprecated use `objectClone`\n */\nexport function cloneObject<T extends BasicObject>(obj: T): T {\n\treturn objectClone(obj)\n}\n\n/**\n * Deeply clone an object\n *\n * @param obj the object to clone\n * @param options Cloning options\n * @param options.deep (Default: true) deeply clone the object\n * @returns the clone of the object\n */\nexport function objectClone<T extends BasicObject>(obj: T, options?: { deep?: boolean }): T {\n\tmustBeObject(obj)\n\tif (Array.isArray(obj)) {\n\t\tconst arr: Array<any> = []\n\t\tfor (const item of obj) {\n\t\t\tarr.push(\n\t\t\t\tisObject(item) ? objectClone(item) : item\n\t\t\t)\n\t\t}\n\t\treturn arr as unknown as T\n\t}\n\tconst clone: Partial<T> = {}\n\tobjectLoop(obj, (value, key) => {\n\t\tif (\n\t\t\ttypeof value === 'object' // make sure child is an object\n\t\t\t&& value != null // object is not null\n\t\t\t&& (\n\t\t\t\ttypeof options?.deep === 'undefined'\n\t\t\t\t|| options.deep\n\t\t\t) // deep is set to true or undefined\n\t\t\t&& !(value instanceof Date) // object is not a date\n\t\t) {\n\t\t\tclone[key as Extract<keyof T, string>] = objectClone(value)\n\t\t\treturn\n\t\t}\n\t\t// special case for Date\n\t\tif (value instanceof Date) {\n\t\t\t// @ts-expect-error value type is a Date\n\t\t\tclone[key as Extract<keyof T, Date>] = new Date(value.getTime())\n\t\t\treturn\n\t\t}\n\t\tclone[key as Extract<keyof T, string>] = value\n\t})\n\treturn clone as T\n}\n\n/**\n * deeply set the value at the path given\n *\n * (Create sub object/array if not made depending on path type (number = Array, string = Object))\n *\n * _NOTE: it is way quicker to use `obj[path][path]... = value` when possible_\n *\n * @param obj the object to set the value\n * @param path the path\n * @param value the value\n */\nexport function objectSet(obj: BasicObject, path: Array<BasicObjectKeys>, value: any): void {\n\tmustBeObject(obj)\n\tlet pointer = obj\n\tfor (let index = 0; index < path.length; index++) {\n\t\tconst key = path[index]\n\t\tconst nextIndex = index + 1\n\t\tif (!Object.prototype.hasOwnProperty.call(pointer, key) && nextIndex < path.length) {\n\t\t\tconst key1 = path[nextIndex]\n\t\t\tif (typeof key1 === 'number') {\n\t\t\t\tpointer[key] = []\n\t\t\t} else {\n\t\t\t\tpointer[key] = {}\n\t\t\t}\n\t\t}\n\n\t\t// if last index\n\t\tif (nextIndex === path.length) {\n\t\t\tpointer[key] = value\n\t\t\tif (value === undefined) {\n\t\t\t\tdelete pointer[key]\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\t// move pointer to new key\n\t\tpointer = pointer[key]\n\t}\n}\n\n/**\n * deeply compare objects and return if they are equal or not\n *\n * @param first the first object\n * @param second the second object\n * @returns {boolean} a boolean representing the equality of the two objects\n */\nexport function objectEqual(first: BasicObject, second: BasicObject): boolean {\n\tmustBeObject(first)\n\tmustBeObject(second)\n\tif (objectSize(first) !== objectSize(second)) {\n\t\treturn false\n\t}\n\tconst res = objectLoop(first, (item, key) => {\n\t\tif (!(key in second) && key in first) {\n\t\t\treturn false\n\t\t}\n\t\tconst item2 = second[key]\n\t\tif (item === null && item2 === null) {\n\t\t\treturn true\n\t\t}\n\t\tif (typeof item === 'object' && typeof item2 === 'object') {\n\t\t\treturn objectEqual(item, item2)\n\t\t}\n\t\treturn item === item2\n\t})\n\treturn res\n}\n\n/**\n * Deeply clean an object from having `undefined`,`null` and/or flasy values (options to enable)\n *\n * @param obj the object to clean\n * @param options cleanup options\n * @param {boolean?} options.cleanUndefined (default: true) clean undefined from the object\n * @param {boolean?} options.cleanFalsy (default: false) clean falsy values (including undefined and null) from the object see https://developer.mozilla.org/en-US/docs/Glossary/Falsy\n * @param {boolean?} options.cleanNull (default: false) clean null from the object\n * @param {boolean?} options.deep (default: true) deeply clean the object\n */\nexport function objectClean(obj: BasicObject, options?: { cleanUndefined?: boolean, cleanNull?: boolean, cleanFalsy?: boolean, deep?: boolean }): void {\n\tmustBeObject(obj)\n\tobjectLoop(obj, (item, key) => {\n\t\tif ((typeof options?.cleanUndefined === 'undefined' || options.cleanUndefined) && item === undefined) {\n\t\t\tdelete obj[key] // clean undefined values\n\t\t} else if (options?.cleanFalsy && !obj[key]) {\n\t\t\tdelete obj[key] // clean falsy values\n\t\t} else if (options?.cleanNull && item === null) {\n\t\t\tdelete obj[key] // clean null values\n\t\t}\n\n\t\t// deeply clean the object\n\t\tif ((typeof options?.deep === 'undefined' || options.deep) && isObject(item)) {\n\t\t\tobjectClean(item, options)\n\t\t}\n\t})\n}\n\n/**\n * return a new object containing only not the keys defined\n *\n * note: clone is not deep\n *\n * @param obj the object to clone\n * @param keys the keys to emit\n * @returns the cloned object\n */\nexport function objectOmit<T extends BasicObject, Keys extends (keyof T | (string & {}))>(obj: T, ...keys: Array<Keys | keyof T>): Omit<T, Keys> {\n\tconst cloned = objectClone(obj, { deep: false })\n\tfor (const key of keys) {\n\t\tif (key in cloned) {\n\t\t\tdelete cloned[key]\n\t\t}\n\t}\n\treturn cloned\n}\n\n/**\n * find an element in an object\n *\n * @param obj the object to find within\n * @param fn the function that find the object\n * @returns the key, value, index of the element found or undefined\n */\nexport function objectFind<T = any, K extends BasicObjectKeys = BasicObjectKeys>(\n\tobj: BasicObject<K, T>,\n\tfn: (value: T, key: K, index: number) => boolean\n): { key: K, value: T } | undefined {\n\tmustBeObject(obj)\n\tlet res: { key: K, value: T, index: number } | undefined = undefined\n\tobjectLoop(obj, (value, key, index) => {\n\t\tconst tmp = fn(value, key, index)\n\t\tif (tmp) {\n\t\t\tres = {\n\t\t\t\tkey, value, index\n\t\t\t}\n\t\t}\n\t\treturn !tmp\n\t})\n\treturn res\n}\n\n/**\n * go through an object to get a specific value\n *\n * note: it will be slower than getting it directly (ex: `obj['pouet']`)\n *\n * @param obj the object to go through\n * @param {Array<string | number | symbol> | string} path the path to follow (if path is a string it will be splitted with `.` and ints will be parsed)\n *\n * @returns the value if found or undefined if it was not found\n */\nexport function objectGet<T = any>(obj: any, path: Array<string | number | symbol> | string): T | undefined {\n\t// if path is not defined or path is empty return the current object\n\tif (!path || path === '' || Array.isArray(path) && path.length === 0) {\n\t\treturn obj as T\n\t}\n\n\tmustBeObject(obj)\n\n\t// transform path into an Array\n\tif (typeof path === 'string') {\n\t\tpath = path.split('.').map((it) => /^\\d+$/g.test(it) ? Number.parseInt(it) : it)\n\t}\n\n\t// the pointer\n\tlet pointer: object = obj\n\n\t// loop through each keys\n\tfor (let index = 0; index < path.length; index++) {\n\t\tconst key = path[index]\n\t\tconst nextIndex = index + 1;\n\n\t\t// handle key being undefined or pointer not having key and not the last key\n\t\tif (typeof key === 'undefined' || !Object.prototype.hasOwnProperty.call(pointer, key) && nextIndex < path.length) {\n\t\t\treturn undefined\n\t\t}\n\n\t\t// if last index\n\t\tif (nextIndex === path.length) {\n\t\t\treturn (pointer as any)[key] as T\n\t\t}\n\n\t\t// move pointer to new key\n\t\tpointer = (pointer as any)[key]\n\t}\n\n\tthrow new Error(`it should never get there ! (${JSON.stringify(obj)}, ${path}, ${JSON.stringify(pointer)})`)\n}\n\n/**\n * Only return the specified keys from the object\n *\n * @param obj the object to pick from\n * @param keys the keys to keep\n * @returns a new copy of `obj` with only `keys` in it\n */\nexport function objectPick<T extends BasicObject, Keys extends (keyof T | (string & {}))>(obj: T, ...keys: Array<Keys | keyof T>): Pick<T, TextPick<Keys, keyof T>> {\n\tmustBeObject(obj)\n\treturn objectFilter(obj, (_, k) => keys.includes(k)) as Pick<T, Keys>\n}\n\n/**\n * filter elements from the object and return a new copy\n *\n * @param obj the object to filter\n * @param fn the function to pass it through\n * @returns the filtered object\n */\nexport function objectFilter<V, K extends string | number | symbol>(obj: Record<K, V>, fn: (v: V, k: K, idx: number) => boolean): Partial<Record<K, V>> {\n\tmustBeObject(obj)\n\tconst clone: Partial<Record<K, V>> = {}\n\tobjectLoop(obj, (v, k, idx) => {\n\t\tconst res = fn(v, k, idx)\n\t\tif (res) {\n\t\t\tclone[k] = v\n\t\t}\n\t})\n\n\treturn clone\n}\n\n\n/**\n * return if an item is an object\n *\n * @param item the item to check\n * @returns {boolean} the item is an object\n */\nexport function isObject(item: any): item is BasicObject {\n\treturn typeof item === 'object' && item !== null\n}\n\n/**\n * Strict check for an object\n *\n * throw an error is the item is not an item\n *\n * @param item the item to check\n * @returns {boolean} true is the item is an object, else throw an error\n */\nexport function mustBeObject(item: any): item is BasicObject {\n\tif (!isObject(item)) {\n\t\tthrow new Error('Input is not an object!')\n\t}\n\treturn true\n}\n\nexport default {\n\tobjectClean,\n\tobjectClone,\n\tobjectEqual,\n\tobjectFilter,\n\tobjectFind,\n\tobjectGet,\n\tobjectKeys,\n\tobjectLoop,\n\tobjectMap,\n\tobjectOmit,\n\tobjectPick,\n\tobjectRemap,\n\tobjectSet,\n\tobjectSize,\n\tobjectSort,\n\n\t// helpers\n\tisObject,\n\tmustBeObject,\n\n\t// deprecated\n\tobjectToArray,\n\tcloneObject,\n}\n"]}