@ts-fns/stdlib 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array/index.cjs +230 -33
- package/dist/array/index.cjs.map +1 -1
- package/dist/array/index.d.cts +434 -32
- package/dist/array/index.d.cts.map +1 -1
- package/dist/array/index.d.mts +434 -32
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +216 -18
- package/dist/array/index.mjs.map +1 -1
- package/dist/function/index.cjs +4 -2
- package/dist/function/index.d.cts +128 -13
- package/dist/function/index.d.cts.map +1 -1
- package/dist/function/index.d.mts +128 -13
- package/dist/function/index.d.mts.map +1 -1
- package/dist/function/index.mjs +3 -3
- package/dist/{function-DnI2v0p3.mjs → function-CYHPhQCQ.mjs} +84 -6
- package/dist/function-CYHPhQCQ.mjs.map +1 -0
- package/dist/{function-CB82a2GS.cjs → function-DYPifnmg.cjs} +95 -5
- package/dist/function-DYPifnmg.cjs.map +1 -0
- package/dist/{get-yrs1Kqho.cjs → get-1kqkxPFX.cjs} +20 -8
- package/dist/get-1kqkxPFX.cjs.map +1 -0
- package/dist/{get-CWL_cu6G.mjs → get-Dv6ejLZg.mjs} +21 -3
- package/dist/get-Dv6ejLZg.mjs.map +1 -0
- package/dist/guard/index.cjs +5 -12
- package/dist/guard/index.cjs.map +1 -1
- package/dist/guard/index.d.cts +18 -17
- package/dist/guard/index.d.cts.map +1 -1
- package/dist/guard/index.d.mts +18 -17
- package/dist/guard/index.d.mts.map +1 -1
- package/dist/guard/index.mjs +4 -12
- package/dist/guard/index.mjs.map +1 -1
- package/dist/index-MbdqaUt1.d.cts +54 -0
- package/dist/index-MbdqaUt1.d.cts.map +1 -0
- package/dist/index-k-paNOu4.d.mts +54 -0
- package/dist/index-k-paNOu4.d.mts.map +1 -0
- package/dist/iterator/index.cjs +72 -26
- package/dist/iterator/index.cjs.map +1 -1
- package/dist/iterator/index.d.cts +157 -5
- package/dist/iterator/index.d.cts.map +1 -1
- package/dist/iterator/index.d.mts +157 -5
- package/dist/iterator/index.d.mts.map +1 -1
- package/dist/iterator/index.mjs +66 -24
- package/dist/iterator/index.mjs.map +1 -1
- package/dist/lens/index.cjs +3 -3
- package/dist/lens/index.cjs.map +1 -1
- package/dist/lens/index.mjs +3 -3
- package/dist/lens/index.mjs.map +1 -1
- package/dist/map/index.cjs +88 -1
- package/dist/map/index.cjs.map +1 -1
- package/dist/map/index.d.cts +130 -2
- package/dist/map/index.d.cts.map +1 -1
- package/dist/map/index.d.mts +130 -2
- package/dist/map/index.d.mts.map +1 -1
- package/dist/map/index.mjs +86 -2
- package/dist/map/index.mjs.map +1 -1
- package/dist/number/index.cjs +91 -18
- package/dist/number/index.cjs.map +1 -1
- package/dist/number/index.d.cts +134 -19
- package/dist/number/index.d.cts.map +1 -1
- package/dist/number/index.d.mts +134 -19
- package/dist/number/index.d.mts.map +1 -1
- package/dist/number/index.mjs +91 -18
- package/dist/number/index.mjs.map +1 -1
- package/dist/object/index.cjs +111 -7
- package/dist/object/index.cjs.map +1 -1
- package/dist/object/index.d.cts +186 -26
- package/dist/object/index.d.cts.map +1 -1
- package/dist/object/index.d.mts +186 -26
- package/dist/object/index.d.mts.map +1 -1
- package/dist/object/index.mjs +111 -7
- package/dist/object/index.mjs.map +1 -1
- package/dist/orNull-CJNrTjhQ.cjs +45 -0
- package/dist/orNull-CJNrTjhQ.cjs.map +1 -0
- package/dist/orNull-EeXiCxD4.mjs +34 -0
- package/dist/orNull-EeXiCxD4.mjs.map +1 -0
- package/dist/order/index.cjs +22 -1
- package/dist/order/index.cjs.map +1 -1
- package/dist/order/index.d.cts +2 -2
- package/dist/order/index.d.mts +2 -2
- package/dist/order/index.mjs +22 -1
- package/dist/order/index.mjs.map +1 -1
- package/dist/{order.constants-BWSCg3C7.d.cts → order.constants-DpGY-EDp.d.cts} +4 -1
- package/dist/order.constants-DpGY-EDp.d.cts.map +1 -0
- package/dist/{order.constants-BWSCg3C7.d.mts → order.constants-DpGY-EDp.d.mts} +4 -1
- package/dist/order.constants-DpGY-EDp.d.mts.map +1 -0
- package/dist/purry-DXnhXie9.mjs +22 -0
- package/dist/purry-DXnhXie9.mjs.map +1 -0
- package/dist/purry-Dqp_F64t.cjs +27 -0
- package/dist/purry-Dqp_F64t.cjs.map +1 -0
- package/dist/set/index.cjs +59 -1
- package/dist/set/index.cjs.map +1 -1
- package/dist/set/index.d.cts +151 -2
- package/dist/set/index.d.cts.map +1 -1
- package/dist/set/index.d.mts +151 -2
- package/dist/set/index.d.mts.map +1 -1
- package/dist/set/index.mjs +59 -2
- package/dist/set/index.mjs.map +1 -1
- package/dist/string/index.cjs +289 -15
- package/dist/string/index.cjs.map +1 -1
- package/dist/string/index.d.cts +406 -1
- package/dist/string/index.d.cts.map +1 -1
- package/dist/string/index.d.mts +406 -1
- package/dist/string/index.d.mts.map +1 -1
- package/dist/string/index.mjs +271 -4
- package/dist/string/index.mjs.map +1 -1
- package/dist/tuple/index.cjs +20 -21
- package/dist/tuple/index.cjs.map +1 -1
- package/dist/tuple/index.d.cts +27 -58
- package/dist/tuple/index.d.cts.map +1 -1
- package/dist/tuple/index.d.mts +27 -58
- package/dist/tuple/index.d.mts.map +1 -1
- package/dist/tuple/index.mjs +20 -22
- package/dist/tuple/index.mjs.map +1 -1
- package/package.json +5 -6
- package/dist/function-CB82a2GS.cjs.map +0 -1
- package/dist/function-DnI2v0p3.mjs.map +0 -1
- package/dist/get-CWL_cu6G.mjs.map +0 -1
- package/dist/get-yrs1Kqho.cjs.map +0 -1
- package/dist/index-BJlKyBJH.d.cts +0 -18
- package/dist/index-BJlKyBJH.d.cts.map +0 -1
- package/dist/index-DGrnGMDt.d.mts +0 -18
- package/dist/index-DGrnGMDt.d.mts.map +0 -1
- package/dist/isNotNil-DrF-ohem.cjs +0 -28
- package/dist/isNotNil-DrF-ohem.cjs.map +0 -1
- package/dist/isNotNil-R5f1hC53.mjs +0 -23
- package/dist/isNotNil-R5f1hC53.mjs.map +0 -1
- package/dist/orThrow-V91Jw2lF.mjs +0 -15
- package/dist/orThrow-V91Jw2lF.mjs.map +0 -1
- package/dist/orThrow-ejzcQYAI.cjs +0 -20
- package/dist/orThrow-ejzcQYAI.cjs.map +0 -1
- package/dist/order.constants-BWSCg3C7.d.cts.map +0 -1
- package/dist/order.constants-BWSCg3C7.d.mts.map +0 -1
- package/dist/purry-B2_0DGLV.cjs +0 -28
- package/dist/purry-B2_0DGLV.cjs.map +0 -1
- package/dist/purry-BOWmqwDB.mjs +0 -23
- package/dist/purry-BOWmqwDB.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["purry","purry","purry","purry","purry","purry","purry","purry","purry","purry"],"sources":["../../src/object/_globalAliases.ts","../../src/object/clone.ts","../../src/object/evolve.ts","../../src/object/forEach.ts","../../src/object/groupBy.ts","../../src/object/indexBy.ts","../../src/object/map.ts","../../src/object/merge.ts","../../src/object/omit.ts","../../src/object/pick.ts","../../src/object/set.ts","../../src/object/upsert.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-destructuring */\nexport const { fromEntries, hasOwn, is, keys, values } = Object;\n\n/**\n * @category Object\n * @function\n * @example\n * ```ts\n * entries({ a: 1, b: 2 }); // [['a', 1], ['b', 2]]\n * ```\n */\nexport const entries = Object.entries;\n","/**\n * Alias of structuredClone without the optional second argument\n */\nexport function clone<T>(data: T): T {\n return globalThis.structuredClone(data);\n}\n","import type { Simplify } from 'type-fest';\n\nimport { purry } from '../function';\n\ntype Evolved<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }> = {\n [K in keyof Obj]: Obj extends Record<K, infer T>\n ? Evolver extends Record<K, (value: Obj[K]) => infer R>\n ? R extends T\n ? T\n : unknown\n : never\n : never;\n};\n\nfunction evolveImplementation<\n Obj extends object,\n Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown },\n>(obj: Obj, evolver: Evolver): Simplify<Evolved<Obj, Evolver>> {\n const evolved = (Object.entries(evolver) as [keyof Obj, (value: unknown) => unknown][]).reduce<\n Partial<Record<keyof Obj, any>>\n >((acc, [k, fn]) => {\n // key must exist on obj, otherwise no value\n if (Object.hasOwn(obj, k)) {\n acc[k] = fn(obj[k]);\n }\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return { ...obj, ...evolved } as any;\n}\n\nexport function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(\n evolver: Evolver,\n): (obj: Obj) => Simplify<Evolved<Obj, Evolver>>;\nexport function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(\n obj: Obj,\n evolver: Evolver,\n): Simplify<Evolved<Obj, Evolver>>;\nexport function evolve(...args: unknown[]): unknown {\n return purry(evolveImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction forEachImplementation<T>(\n data: Record<string, T>,\n callbackfn: (value: T, key: string) => void,\n): Record<string, T> {\n for (const [k, v] of Object.entries(data)) {\n callbackfn(v, k);\n }\n return data;\n}\n\nexport function forEach<T>(callbackfn: (value: T, key: string) => void): (data: Record<string, T>) => Record<string, T>;\nexport function forEach<T>(data: Record<string, T>, callbackfn: (value: T, key: string) => void): Record<string, T>;\nexport function forEach(...args: readonly unknown[]): unknown {\n return purry(forEachImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction groupByImplementation<T>(\n items: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Partial<Record<string, T[]>> {\n return Object.groupBy(items, keySelector);\n}\n\nexport function groupBy<T>(\n keySelector: (item: T, index: number) => string,\n): (items: Iterable<T>) => Partial<Record<string, T[]>>;\nexport function groupBy<T>(\n items: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Partial<Record<string, T[]>>;\nexport function groupBy(...args: readonly unknown[]): unknown {\n return purry(groupByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction indexByImplementation<T>(\n data: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Record<string, T> {\n const asArray = [...data];\n const len = asArray.length;\n const rtnObj: Record<string, T> = {};\n for (let i = 0; i < len; i += 1) {\n const value = asArray[i]!;\n rtnObj[keySelector(value, i)] = value;\n }\n return rtnObj;\n}\n\nexport function indexBy<T>(keySelector: (item: T, index: number) => string): (data: Iterable<T>) => Record<string, T>;\nexport function indexBy<T>(data: Iterable<T>, keySelector: (item: T, index: number) => string): Record<string, T>;\nexport function indexBy(...args: readonly unknown[]): unknown {\n return purry(indexByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapImplementation<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U> {\n const entries = Object.entries(data);\n const len = entries.length;\n const newObj: Record<string, U> = {};\n for (let i = 0; i < len; i += 1) {\n const [k, v] = entries[i]!;\n newObj[k] = callbackfn(v, k);\n }\n return newObj;\n}\n\nexport function map<T, U>(callbackfn: (value: T, key: string) => U): (data: Record<string, T>) => Record<string, U>;\nexport function map<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U>;\nexport function map(...args: readonly unknown[]): unknown {\n return purry(mapImplementation, args);\n}\n","import type { Merge } from 'type-fest';\n\nimport { purry } from '../function';\n\nfunction mergeImplementation<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other> {\n return { ...left, ...right } as unknown as Merge<Obj, Other>;\n}\n\nexport function merge<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Obj, Other>;\nexport function merge<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other>;\nexport function merge(...args: unknown[]): unknown {\n return purry(mergeImplementation, args);\n}\n\nfunction mergeLeftImplementation<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj> {\n return { ...right, ...left } as unknown as Merge<Other, Obj>;\n}\n\nexport function mergeLeft<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Other, Obj>;\nexport function mergeLeft<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj>;\nexport function mergeLeft(...args: unknown[]): unknown {\n return purry(mergeLeftImplementation, args);\n}\n\nmerge.left = mergeLeft;\n","import { purry } from '../function/purry';\n\nfunction omitImplementation(data: Record<string, unknown>, keys: Iterable<string>): Record<string, unknown> {\n const keysSet = new Set(keys);\n\n const newObj: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (!keysSet.has(key)) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n}\n\nexport function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n keys: Iterable<Key>,\n): (data: Obj) => Omit<Obj, Key>;\nexport function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n data: Obj,\n keys: Iterable<Key>,\n): Omit<Obj, Key>;\nexport function omit(...args: readonly unknown[]): unknown {\n return purry(omitImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction pickImplementation(data: Record<string, unknown>, keys: Iterable<string>): Record<string, unknown> {\n const keysSet = new Set(keys);\n\n const newObj: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (keysSet.has(key)) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n}\n\nexport function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n keys: Iterable<Key>,\n): (data: Obj) => Pick<Obj, Key>;\nexport function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n data: Obj,\n keys: Iterable<Key>,\n): Pick<Obj, Key>;\nexport function pick(...args: readonly unknown[]): unknown {\n return purry(pickImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nexport function setImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj {\n return { ...obj, [key]: value };\n}\n\nexport function set<Obj extends object, Key extends keyof Obj>(key: Key, value: Obj[Key]): (obj: Obj) => Obj;\nexport function set<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj;\nexport function set(...args: readonly unknown[]): unknown {\n return purry(setImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction upsertImplementation<T>(\n data: Record<string, T>,\n key: string,\n fn: (value: T | null | undefined) => T,\n): Record<string, T> {\n if (!(key in data)) {\n const updatedValue = fn(undefined);\n return { ...data, [key]: updatedValue };\n }\n\n const value = data[key];\n\n // this checks for both `undefined` and `null`\n if (value == null) {\n const updatedValue = fn(null);\n return { ...data, [key]: updatedValue };\n }\n\n const updatedValue = fn(value);\n return { ...data, [key]: updatedValue };\n}\n\n/**\n * Upsert is meant to be used on `Record<K, V>` types that have unknown keys that may or may not exists\n * The callback function is unique in that it will return `V | null | undefined`\n * * `V` is returned if the key is present and a value exists\n * * `null` is returned if the key is present, but is set to `null` or `undefined`\n * * `undefined` is returned if the key is not present\n */\nexport function upsert<T>(\n key: string,\n fn: (value: T | null | undefined) => T,\n): (data: Record<string, T>) => Record<string, T>;\nexport function upsert<T>(\n data: Record<string, T>,\n key: string,\n fn: (value: T | null | undefined) => T,\n): Record<string, T>;\nexport function upsert(...args: readonly unknown[]): unknown {\n return purry(upsertImplementation, args);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["purry","purry","purry","purry","purry","purry","purry","purry","purry","purry","purry"],"sources":["../../src/object/_globalAliases.ts","../../src/object/clone.ts","../../src/object/evolve.ts","../../src/object/forEach.ts","../../src/object/groupBy.ts","../../src/object/indexBy.ts","../../src/object/map.ts","../../src/object/merge.ts","../../src/object/mergeDeep.ts","../../src/object/omit.ts","../../src/object/pick.ts","../../src/object/set.ts","../../src/object/upsert.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-destructuring */\n\n/**\n * Creates an object from an iterable of key-value pairs.\n * @function\n *\n * @example\n * ```ts\n * fromEntries([['a', 1], ['b', 2]]); // { a: 1, b: 2 }\n * ```\n */\nexport const fromEntries = Object.fromEntries;\n\n/**\n * Checks whether an object has the specified property as its own property.\n * @function\n *\n * @example\n * ```ts\n * hasOwn({ a: 1 }, 'a'); // true\n * hasOwn({ a: 1 }, 'toString'); // false\n * ```\n */\nexport const hasOwn = Object.hasOwn;\n\n/**\n * Determines whether two values are the same value.\n * @function\n *\n * @example\n * ```ts\n * is(NaN, NaN); // true\n * is(0, -0); // false\n * ```\n */\nexport const is = Object.is;\n\n/**\n * Returns an array of an object's own enumerable string-keyed property names.\n * @function\n *\n * @example\n * ```ts\n * keys({ a: 1, b: 2 }); // ['a', 'b']\n * ```\n */\nexport const keys = Object.keys;\n\n/**\n * Returns an array of an object's own enumerable property values.\n * @function\n *\n * @example\n * ```ts\n * values({ a: 1, b: 2 }); // [1, 2]\n * ```\n */\nexport const values = Object.values;\n\n/**\n * Returns an array of an object's own enumerable string-keyed property key-value pairs.\n * @function\n *\n * @example\n * ```ts\n * entries({ a: 1, b: 2 }); // [['a', 1], ['b', 2]]\n * ```\n */\nexport const entries = Object.entries;\n","/**\n * Creates a deep clone of a value using `structuredClone`.\n *\n * @example\n * ```ts\n * clone({ a: 1, b: { c: 2 } }); // { a: 1, b: { c: 2 } }\n * ```\n */\nexport function clone<T>(data: T): T {\n return globalThis.structuredClone(data);\n}\n","import type { Simplify } from 'type-fest';\n\nimport { purry } from '../function';\n\ntype Evolved<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }> = {\n [K in keyof Obj]: Obj extends Record<K, infer T>\n ? Evolver extends Record<K, (value: Obj[K]) => infer R>\n ? R extends T\n ? T\n : unknown\n : never\n : never;\n};\n\nfunction evolveImplementation<\n Obj extends object,\n Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown },\n>(obj: Obj, evolver: Evolver): Simplify<Evolved<Obj, Evolver>> {\n const evolved = (Object.entries(evolver) as [keyof Obj, (value: unknown) => unknown][]).reduce<\n Partial<Record<keyof Obj, any>>\n >((acc, [k, fn]) => {\n // key must exist on obj, otherwise no value\n if (Object.hasOwn(obj, k)) {\n acc[k] = fn(obj[k]);\n }\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return { ...obj, ...evolved } as any;\n}\n\n/**\n * Transforms selected properties of an object using per-key functions.\n * Only keys present on the object are evolved.\n *\n * @example\n * ```ts\n * evolve({ count: n => n + 1 })({ count: 1, name: 'Ada' }); // { count: 2, name: 'Ada' }\n * evolve({ count: 1, name: 'Ada' }, { count: n => n + 1 }); // { count: 2, name: 'Ada' }\n * ```\n */\nexport function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(\n evolver: Evolver,\n): (obj: Obj) => Simplify<Evolved<Obj, Evolver>>;\nexport function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(\n obj: Obj,\n evolver: Evolver,\n): Simplify<Evolved<Obj, Evolver>>;\nexport function evolve(...args: unknown[]): unknown {\n return purry(evolveImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction forEachImplementation<T>(\n data: Record<string, T>,\n callbackfn: (value: T, key: string) => void,\n): Record<string, T> {\n for (const [k, v] of Object.entries(data)) {\n callbackfn(v, k);\n }\n return data;\n}\n\n/**\n * Iterates over an object's own enumerable properties, invoking a callback for each entry.\n * Returns the original object.\n *\n * @example\n * ```ts\n * forEach((v, k) => console.log(k, v))({ a: 1, b: 2 });\n * forEach({ a: 1, b: 2 }, (v, k) => console.log(k, v));\n * ```\n */\nexport function forEach<T>(callbackfn: (value: T, key: string) => void): (data: Record<string, T>) => Record<string, T>;\nexport function forEach<T>(data: Record<string, T>, callbackfn: (value: T, key: string) => void): Record<string, T>;\nexport function forEach(...args: readonly unknown[]): unknown {\n return purry(forEachImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction groupByImplementation<T>(\n items: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Partial<Record<string, T[]>> {\n return Object.groupBy(items, keySelector);\n}\n\n/**\n * Groups iterable items into arrays keyed by a selector function.\n *\n * @example\n * ```ts\n * groupBy(x => String(x.length), ['a', 'bb', 'ccc']); // { '1': ['a'], '2': ['bb'], '3': ['ccc'] }\n * groupBy(x => String(x.length))(['a', 'bb', 'ccc']); // { '1': ['a'], '2': ['bb'], '3': ['ccc'] }\n * ```\n */\nexport function groupBy<T>(\n keySelector: (item: T, index: number) => string,\n): (items: Iterable<T>) => Partial<Record<string, T[]>>;\nexport function groupBy<T>(\n items: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Partial<Record<string, T[]>>;\nexport function groupBy(...args: readonly unknown[]): unknown {\n return purry(groupByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction indexByImplementation<T>(\n data: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Record<string, T> {\n const asArray = [...data];\n const len = asArray.length;\n const rtnObj: Record<string, T> = {};\n for (let i = 0; i < len; i += 1) {\n const value = asArray[i]!;\n rtnObj[keySelector(value, i)] = value;\n }\n return rtnObj;\n}\n\n/**\n * Indexes iterable items into an object keyed by a selector function.\n * Later items overwrite earlier ones that share the same key.\n *\n * @example\n * ```ts\n * indexBy(x => x.id, [{ id: 'a', v: 1 }, { id: 'b', v: 2 }]); // { a: { id: 'a', v: 1 }, b: { id: 'b', v: 2 } }\n * indexBy(x => x.id)([{ id: 'a', v: 1 }]); // { a: { id: 'a', v: 1 } }\n * ```\n */\nexport function indexBy<T>(keySelector: (item: T, index: number) => string): (data: Iterable<T>) => Record<string, T>;\nexport function indexBy<T>(data: Iterable<T>, keySelector: (item: T, index: number) => string): Record<string, T>;\nexport function indexBy(...args: readonly unknown[]): unknown {\n return purry(indexByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapImplementation<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U> {\n const entries = Object.entries(data);\n const len = entries.length;\n const newObj: Record<string, U> = {};\n for (let i = 0; i < len; i += 1) {\n const [k, v] = entries[i]!;\n newObj[k] = callbackfn(v, k);\n }\n return newObj;\n}\n\n/**\n * Maps over an object's own enumerable properties, transforming each value.\n *\n * @example\n * ```ts\n * map((v, k) => v * 2, { a: 1, b: 2 }); // { a: 2, b: 4 }\n * map(v => v * 2)({ a: 1, b: 2 }); // { a: 2, b: 4 }\n * ```\n */\nexport function map<T, U>(callbackfn: (value: T, key: string) => U): (data: Record<string, T>) => Record<string, U>;\nexport function map<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U>;\nexport function map(...args: readonly unknown[]): unknown {\n return purry(mapImplementation, args);\n}\n","import type { Merge } from 'type-fest';\n\nimport { purry } from '../function';\n\nfunction mergeImplementation<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other> {\n return { ...left, ...right } as unknown as Merge<Obj, Other>;\n}\n\n/**\n * Merges two objects, with properties from the right object taking precedence.\n *\n * @example\n * ```ts\n * merge({ a: 1 }, { b: 2 }); // { a: 1, b: 2 }\n * merge({ b: 3 })({ a: 1, b: 2 }); // { a: 1, b: 3 }\n * ```\n */\nexport function merge<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Obj, Other>;\nexport function merge<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other>;\nexport function merge(...args: unknown[]): unknown {\n return purry(mergeImplementation, args);\n}\n\nfunction mergeLeftImplementation<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj> {\n return { ...right, ...left } as unknown as Merge<Other, Obj>;\n}\n\nexport function mergeLeft<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Other, Obj>;\nexport function mergeLeft<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj>;\nexport function mergeLeft(...args: unknown[]): unknown {\n return purry(mergeLeftImplementation, args);\n}\n\n/**\n * Like `merge`, but gives precedence to properties from the left object.\n *\n * @example\n * ```ts\n * merge.left({ a: 1 }, { b: 2 }); // { a: 1, b: 2 }\n * merge.left({ b: 3 })({ a: 1, b: 2 }); // { a: 1, b: 3 }\n * ```\n */\nmerge.left = mergeLeft;\n","import type { MergeDeep } from 'type-fest';\n\nimport { purry } from '../function';\n\n// TODO: move this somewhere common\nfunction isObjectType(data: unknown): data is object {\n return typeof data === 'object' && data !== null;\n}\n\nfunction mergeDeepImplementation<Left extends object, Right extends object>(\n left: Left,\n right: Right,\n): MergeDeep<Left, Right> {\n // start in the reverse direction so the keys in other that don't exist on obj are there to start with\n const nextObj = { ...right, ...left } as Record<string, unknown>;\n\n // then go through all the keys in obj\n for (const key of Object.keys(left)) {\n // skipping in no present on other\n // eslint-disable-next-line no-continue\n if (!Object.hasOwn(right, key)) continue;\n\n // apply recursively if both objects\n // @ts-expect-error\n const leftVal: unknown = left[key];\n // @ts-expect-error\n const rightVal: unknown = right[key];\n\n // but not if either is an array\n if (isObjectType(leftVal) && isObjectType(rightVal) && !Array.isArray(leftVal) && !Array.isArray(rightVal)) {\n nextObj[key] = mergeDeepImplementation(leftVal, rightVal);\n } else {\n // @ts-expect-error\n nextObj[key] = right[key];\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return nextObj as any;\n}\n\n/**\n * Recursively merges two objects, with properties from the right object taking precedence.\n *\n * @example\n * ```ts\n * mergeDeep({ a: { x: 1 } }, { a: { y: 2 }, b: 3 }); // { a: { x: 1, y: 2 }, b: 3 }\n * mergeDeep({ b: 3 })({ a: { x: 1 }, b: { y: 2 } }); // { a: { x: 1 }, b: 3 }\n * ```\n */\nexport function mergeDeep<Left extends object, Right extends object>(\n right: Right,\n): (left: Left) => MergeDeep<Left, Right>;\nexport function mergeDeep<Left extends object, Right extends object>(left: Left, right: Right): MergeDeep<Left, Right>;\nexport function mergeDeep(...args: unknown[]): unknown {\n return purry(mergeDeepImplementation, args);\n}\n\nfunction mergeDeepLeftImplementation<Left extends object, Right extends object>(\n left: Left,\n right: Right,\n): MergeDeep<Right, Left> {\n return mergeDeepImplementation(right, left);\n}\n\nfunction mergeDeepLeft<Left extends object, Right extends object>(right: Right): (left: Left) => MergeDeep<Right, Left>;\nfunction mergeDeepLeft<Left extends object, Right extends object>(left: Left, right: Right): MergeDeep<Right, Left>;\nfunction mergeDeepLeft(...args: unknown[]): unknown {\n return purry(mergeDeepLeftImplementation, args);\n}\n\n/**\n * Like `mergeDeep`, but gives precedence to properties from the left object.\n *\n * @example\n * ```ts\n * mergeDeep.left({ a: { x: 1 } }, { a: { y: 2 }, b: 3 }); // { a: { x: 1, y: 2 }, b: 3 }\n * mergeDeep.left({ b: 3 })({ a: { x: 1 }, b: { y: 2 } }); // { a: { x: 1 }, b: 3 }\n * ```\n */\nmergeDeep.left = mergeDeepLeft;\n","import { purry } from '../function/purry';\n\nfunction omitImplementation(data: Record<string, unknown>, keys: Iterable<string>): Record<string, unknown> {\n const keysSet = new Set(keys);\n\n const newObj: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (!keysSet.has(key)) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n}\n\n/**\n * Creates a new object without the specified keys.\n *\n * @example\n * ```ts\n * omit(['b'], { a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }\n * omit(['b'])({ a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }\n * ```\n */\nexport function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n keys: Iterable<Key>,\n): (data: Obj) => Omit<Obj, Key>;\nexport function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n data: Obj,\n keys: Iterable<Key>,\n): Omit<Obj, Key>;\nexport function omit(...args: readonly unknown[]): unknown {\n return purry(omitImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction pickImplementation(data: Record<string, unknown>, keys: Iterable<string>): Record<string, unknown> {\n const keysSet = new Set(keys);\n\n const newObj: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (keysSet.has(key)) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n}\n\n/**\n * Creates a new object containing only the specified keys.\n *\n * @example\n * ```ts\n * pick(['a', 'c'], { a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }\n * pick(['a', 'c'])({ a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }\n * ```\n */\nexport function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n keys: Iterable<Key>,\n): (data: Obj) => Pick<Obj, Key>;\nexport function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n data: Obj,\n keys: Iterable<Key>,\n): Pick<Obj, Key>;\nexport function pick(...args: readonly unknown[]): unknown {\n return purry(pickImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nexport function setImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj {\n return { ...obj, [key]: value };\n}\n\n/**\n * Returns a new object with a single property updated.\n *\n * @example\n * ```ts\n * set('b', 2, { a: 1 }); // { a: 1, b: 2 }\n * set('b', 2)({ a: 1 }); // { a: 1, b: 2 }\n * ```\n */\nexport function set<Obj extends object, Key extends keyof Obj>(key: Key, value: Obj[Key]): (obj: Obj) => Obj;\nexport function set<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj;\nexport function set(...args: readonly unknown[]): unknown {\n return purry(setImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction upsertImplementation<T>(\n data: Record<string, T>,\n key: string,\n fn: (value: T | null | undefined) => T,\n): Record<string, T> {\n if (!(key in data)) {\n const updatedValue = fn(undefined);\n return { ...data, [key]: updatedValue };\n }\n\n const value = data[key];\n\n // this checks for both `undefined` and `null`\n if (value == null) {\n const updatedValue = fn(null);\n return { ...data, [key]: updatedValue };\n }\n\n const updatedValue = fn(value);\n return { ...data, [key]: updatedValue };\n}\n\n/**\n * Updates or inserts a value in a record.\n * The callback receives the current value, `null` when the key exists but is nullish, or `undefined` when the key is absent.\n *\n * @example\n * ```ts\n * upsert('a', v => (v ?? 0) + 1, { a: 1 }); // { a: 2 }\n * upsert('b', () => 0)({ a: 1 }); // { a: 1, b: 0 }\n * ```\n */\nexport function upsert<T>(\n key: string,\n fn: (value: T | null | undefined) => T,\n): (data: Record<string, T>) => Record<string, T>;\nexport function upsert<T>(\n data: Record<string, T>,\n key: string,\n fn: (value: T | null | undefined) => T,\n): Record<string, T>;\nexport function upsert(...args: readonly unknown[]): unknown {\n return purry(upsertImplementation, args);\n}\n"],"mappings":"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"}
|
package/dist/object/index.d.cts
CHANGED
|
@@ -1,24 +1,76 @@
|
|
|
1
1
|
import { r as NotFoundError } from "../errors-CJsLpYo9.cjs";
|
|
2
|
-
import { Merge, Simplify } from "type-fest";
|
|
2
|
+
import { Merge, MergeDeep, Simplify } from "type-fest";
|
|
3
3
|
|
|
4
4
|
//#region src/object/_globalAliases.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Creates an object from an iterable of key-value pairs.
|
|
7
|
+
* @function
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* fromEntries([['a', 1], ['b', 2]]); // { a: 1, b: 2 }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
5
14
|
declare const fromEntries: {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
(entries: Iterable<readonly any[]>): any;
|
|
10
|
-
}, hasOwn: (o: object, v: PropertyKey) => boolean, is: (value1: any, value2: any) => boolean, keys: {
|
|
11
|
-
(o: object): string[];
|
|
12
|
-
(o: {}): string[];
|
|
13
|
-
}, values: {
|
|
14
|
-
<T>(o: {
|
|
15
|
-
[s: string]: T;
|
|
16
|
-
} | ArrayLike<T>): T[];
|
|
17
|
-
(o: {}): any[];
|
|
15
|
+
<T = any>(entries: Iterable<readonly [PropertyKey, T]>): {
|
|
16
|
+
[k: string]: T;
|
|
18
17
|
};
|
|
18
|
+
(entries: Iterable<readonly any[]>): any;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether an object has the specified property as its own property.
|
|
22
|
+
* @function
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* hasOwn({ a: 1 }, 'a'); // true
|
|
27
|
+
* hasOwn({ a: 1 }, 'toString'); // false
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare const hasOwn: (o: object, v: PropertyKey) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Determines whether two values are the same value.
|
|
33
|
+
* @function
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* is(NaN, NaN); // true
|
|
38
|
+
* is(0, -0); // false
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
declare const is: (value1: any, value2: any) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Returns an array of an object's own enumerable string-keyed property names.
|
|
44
|
+
* @function
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* keys({ a: 1, b: 2 }); // ['a', 'b']
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare const keys: {
|
|
52
|
+
(o: object): string[];
|
|
53
|
+
(o: {}): string[];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Returns an array of an object's own enumerable property values.
|
|
57
|
+
* @function
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* values({ a: 1, b: 2 }); // [1, 2]
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
declare const values: {
|
|
65
|
+
<T>(o: {
|
|
66
|
+
[s: string]: T;
|
|
67
|
+
} | ArrayLike<T>): T[];
|
|
68
|
+
(o: {}): any[];
|
|
69
|
+
};
|
|
19
70
|
/**
|
|
20
|
-
*
|
|
71
|
+
* Returns an array of an object's own enumerable string-keyed property key-value pairs.
|
|
21
72
|
* @function
|
|
73
|
+
*
|
|
22
74
|
* @example
|
|
23
75
|
* ```ts
|
|
24
76
|
* entries({ a: 1, b: 2 }); // [['a', 1], ['b', 2]]
|
|
@@ -33,30 +85,53 @@ declare const entries: {
|
|
|
33
85
|
//#endregion
|
|
34
86
|
//#region src/object/clone.d.ts
|
|
35
87
|
/**
|
|
36
|
-
*
|
|
88
|
+
* Creates a deep clone of a value using `structuredClone`.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```ts
|
|
92
|
+
* clone({ a: 1, b: { c: 2 } }); // { a: 1, b: { c: 2 } }
|
|
93
|
+
* ```
|
|
37
94
|
*/
|
|
38
95
|
declare function clone<T>(data: T): T;
|
|
39
96
|
//#endregion
|
|
40
97
|
//#region src/object/evolve.d.ts
|
|
41
98
|
type Evolved<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }> = { [K in keyof Obj]: Obj extends Record<K, infer T> ? Evolver extends Record<K, (value: Obj[K]) => infer R> ? R extends T ? T : unknown : never : never };
|
|
99
|
+
/**
|
|
100
|
+
* Transforms selected properties of an object using per-key functions.
|
|
101
|
+
* Only keys present on the object are evolved.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* evolve({ count: n => n + 1 })({ count: 1, name: 'Ada' }); // { count: 2, name: 'Ada' }
|
|
106
|
+
* evolve({ count: 1, name: 'Ada' }, { count: n => n + 1 }); // { count: 2, name: 'Ada' }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
42
109
|
declare function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(evolver: Evolver): (obj: Obj) => Simplify<Evolved<Obj, Evolver>>;
|
|
43
110
|
declare function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(obj: Obj, evolver: Evolver): Simplify<Evolved<Obj, Evolver>>;
|
|
44
111
|
//#endregion
|
|
45
112
|
//#region src/object/forEach.d.ts
|
|
113
|
+
/**
|
|
114
|
+
* Iterates over an object's own enumerable properties, invoking a callback for each entry.
|
|
115
|
+
* Returns the original object.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* forEach((v, k) => console.log(k, v))({ a: 1, b: 2 });
|
|
120
|
+
* forEach({ a: 1, b: 2 }, (v, k) => console.log(k, v));
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
46
123
|
declare function forEach<T>(callbackfn: (value: T, key: string) => void): (data: Record<string, T>) => Record<string, T>;
|
|
47
124
|
declare function forEach<T>(data: Record<string, T>, callbackfn: (value: T, key: string) => void): Record<string, T>;
|
|
48
125
|
//#endregion
|
|
49
126
|
//#region src/object/get.d.ts
|
|
50
127
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* @category Object
|
|
54
|
-
* @param key - The key to get the property from.
|
|
55
|
-
* @param obj - The object to get the property from.
|
|
128
|
+
* Gets a property from an object by key.
|
|
129
|
+
* Returns a not-found error when the property is missing or nullish.
|
|
56
130
|
*
|
|
57
131
|
* @example
|
|
58
132
|
* ```ts
|
|
59
133
|
* get('name', { name: 'John' }); // 'John'
|
|
134
|
+
* get('age')({ name: 'John' }); // NotFoundError
|
|
60
135
|
* ```
|
|
61
136
|
*/
|
|
62
137
|
declare function get<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;
|
|
@@ -70,18 +145,55 @@ declare function getAssert<Obj extends object, Key extends keyof Obj>(key: Key):
|
|
|
70
145
|
declare function getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;
|
|
71
146
|
//#endregion
|
|
72
147
|
//#region src/object/groupBy.d.ts
|
|
148
|
+
/**
|
|
149
|
+
* Groups iterable items into arrays keyed by a selector function.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* groupBy(x => String(x.length), ['a', 'bb', 'ccc']); // { '1': ['a'], '2': ['bb'], '3': ['ccc'] }
|
|
154
|
+
* groupBy(x => String(x.length))(['a', 'bb', 'ccc']); // { '1': ['a'], '2': ['bb'], '3': ['ccc'] }
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
73
157
|
declare function groupBy<T>(keySelector: (item: T, index: number) => string): (items: Iterable<T>) => Partial<Record<string, T[]>>;
|
|
74
158
|
declare function groupBy<T>(items: Iterable<T>, keySelector: (item: T, index: number) => string): Partial<Record<string, T[]>>;
|
|
75
159
|
//#endregion
|
|
76
160
|
//#region src/object/indexBy.d.ts
|
|
161
|
+
/**
|
|
162
|
+
* Indexes iterable items into an object keyed by a selector function.
|
|
163
|
+
* Later items overwrite earlier ones that share the same key.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* indexBy(x => x.id, [{ id: 'a', v: 1 }, { id: 'b', v: 2 }]); // { a: { id: 'a', v: 1 }, b: { id: 'b', v: 2 } }
|
|
168
|
+
* indexBy(x => x.id)([{ id: 'a', v: 1 }]); // { a: { id: 'a', v: 1 } }
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
77
171
|
declare function indexBy<T>(keySelector: (item: T, index: number) => string): (data: Iterable<T>) => Record<string, T>;
|
|
78
172
|
declare function indexBy<T>(data: Iterable<T>, keySelector: (item: T, index: number) => string): Record<string, T>;
|
|
79
173
|
//#endregion
|
|
80
174
|
//#region src/object/map.d.ts
|
|
175
|
+
/**
|
|
176
|
+
* Maps over an object's own enumerable properties, transforming each value.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts
|
|
180
|
+
* map((v, k) => v * 2, { a: 1, b: 2 }); // { a: 2, b: 4 }
|
|
181
|
+
* map(v => v * 2)({ a: 1, b: 2 }); // { a: 2, b: 4 }
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
81
184
|
declare function map<T, U>(callbackfn: (value: T, key: string) => U): (data: Record<string, T>) => Record<string, U>;
|
|
82
185
|
declare function map<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U>;
|
|
83
186
|
//#endregion
|
|
84
187
|
//#region src/object/merge.d.ts
|
|
188
|
+
/**
|
|
189
|
+
* Merges two objects, with properties from the right object taking precedence.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```ts
|
|
193
|
+
* merge({ a: 1 }, { b: 2 }); // { a: 1, b: 2 }
|
|
194
|
+
* merge({ b: 3 })({ a: 1, b: 2 }); // { a: 1, b: 3 }
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
85
197
|
declare function merge<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Obj, Other>;
|
|
86
198
|
declare function merge<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other>;
|
|
87
199
|
declare namespace merge {
|
|
@@ -90,29 +202,77 @@ declare namespace merge {
|
|
|
90
202
|
declare function mergeLeft<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Other, Obj>;
|
|
91
203
|
declare function mergeLeft<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj>;
|
|
92
204
|
//#endregion
|
|
205
|
+
//#region src/object/mergeDeep.d.ts
|
|
206
|
+
/**
|
|
207
|
+
* Recursively merges two objects, with properties from the right object taking precedence.
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```ts
|
|
211
|
+
* mergeDeep({ a: { x: 1 } }, { a: { y: 2 }, b: 3 }); // { a: { x: 1, y: 2 }, b: 3 }
|
|
212
|
+
* mergeDeep({ b: 3 })({ a: { x: 1 }, b: { y: 2 } }); // { a: { x: 1 }, b: 3 }
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
declare function mergeDeep<Left extends object, Right extends object>(right: Right): (left: Left) => MergeDeep<Left, Right>;
|
|
216
|
+
declare function mergeDeep<Left extends object, Right extends object>(left: Left, right: Right): MergeDeep<Left, Right>;
|
|
217
|
+
declare namespace mergeDeep {
|
|
218
|
+
var left: typeof mergeDeepLeft;
|
|
219
|
+
}
|
|
220
|
+
declare function mergeDeepLeft<Left extends object, Right extends object>(right: Right): (left: Left) => MergeDeep<Right, Left>;
|
|
221
|
+
declare function mergeDeepLeft<Left extends object, Right extends object>(left: Left, right: Right): MergeDeep<Right, Left>;
|
|
222
|
+
//#endregion
|
|
93
223
|
//#region src/object/omit.d.ts
|
|
224
|
+
/**
|
|
225
|
+
* Creates a new object without the specified keys.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* omit(['b'], { a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }
|
|
230
|
+
* omit(['b'])({ a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
94
233
|
declare function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(keys: Iterable<Key>): (data: Obj) => Omit<Obj, Key>;
|
|
95
234
|
declare function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(data: Obj, keys: Iterable<Key>): Omit<Obj, Key>;
|
|
96
235
|
//#endregion
|
|
97
236
|
//#region src/object/pick.d.ts
|
|
237
|
+
/**
|
|
238
|
+
* Creates a new object containing only the specified keys.
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```ts
|
|
242
|
+
* pick(['a', 'c'], { a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }
|
|
243
|
+
* pick(['a', 'c'])({ a: 1, b: 2, c: 3 }); // { a: 1, c: 3 }
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
98
246
|
declare function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(keys: Iterable<Key>): (data: Obj) => Pick<Obj, Key>;
|
|
99
247
|
declare function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(data: Obj, keys: Iterable<Key>): Pick<Obj, Key>;
|
|
100
248
|
//#endregion
|
|
101
249
|
//#region src/object/set.d.ts
|
|
102
250
|
declare function setImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj;
|
|
251
|
+
/**
|
|
252
|
+
* Returns a new object with a single property updated.
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```ts
|
|
256
|
+
* set('b', 2, { a: 1 }); // { a: 1, b: 2 }
|
|
257
|
+
* set('b', 2)({ a: 1 }); // { a: 1, b: 2 }
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
103
260
|
declare function set<Obj extends object, Key extends keyof Obj>(key: Key, value: Obj[Key]): (obj: Obj) => Obj;
|
|
104
261
|
declare function set<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj;
|
|
105
262
|
//#endregion
|
|
106
263
|
//#region src/object/upsert.d.ts
|
|
107
264
|
/**
|
|
108
|
-
*
|
|
109
|
-
* The callback
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
265
|
+
* Updates or inserts a value in a record.
|
|
266
|
+
* The callback receives the current value, `null` when the key exists but is nullish, or `undefined` when the key is absent.
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```ts
|
|
270
|
+
* upsert('a', v => (v ?? 0) + 1, { a: 1 }); // { a: 2 }
|
|
271
|
+
* upsert('b', () => 0)({ a: 1 }); // { a: 1, b: 0 }
|
|
272
|
+
* ```
|
|
113
273
|
*/
|
|
114
274
|
declare function upsert<T>(key: string, fn: (value: T | null | undefined) => T): (data: Record<string, T>) => Record<string, T>;
|
|
115
275
|
declare function upsert<T>(data: Record<string, T>, key: string, fn: (value: T | null | undefined) => T): Record<string, T>;
|
|
116
276
|
//#endregion
|
|
117
|
-
export { clone, entries, evolve, forEach, fromEntries, get,
|
|
277
|
+
export { clone, entries, evolve, forEach, fromEntries, get, groupBy, hasOwn, indexBy, is, keys, map, merge, mergeDeep, mergeLeft, omit, pick, set, setImplementation, upsert, values };
|
|
118
278
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/object/_globalAliases.ts","../../src/object/clone.ts","../../src/object/evolve.ts","../../src/object/forEach.ts","../../src/object/get.ts","../../src/object/groupBy.ts","../../src/object/indexBy.ts","../../src/object/map.ts","../../src/object/merge.ts","../../src/object/omit.ts","../../src/object/pick.ts","../../src/object/set.ts","../../src/object/upsert.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/object/_globalAliases.ts","../../src/object/clone.ts","../../src/object/evolve.ts","../../src/object/forEach.ts","../../src/object/get.ts","../../src/object/groupBy.ts","../../src/object/indexBy.ts","../../src/object/map.ts","../../src/object/merge.ts","../../src/object/mergeDeep.ts","../../src/object/omit.ts","../../src/object/pick.ts","../../src/object/set.ts","../../src/object/upsert.ts"],"mappings":"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"}
|