@ts-fns/stdlib 0.1.0 → 0.2.1

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.
Files changed (135) hide show
  1. package/dist/array/index.cjs +239 -37
  2. package/dist/array/index.cjs.map +1 -1
  3. package/dist/array/index.d.cts +437 -36
  4. package/dist/array/index.d.cts.map +1 -1
  5. package/dist/array/index.d.mts +437 -36
  6. package/dist/array/index.d.mts.map +1 -1
  7. package/dist/array/index.mjs +225 -22
  8. package/dist/array/index.mjs.map +1 -1
  9. package/dist/function/index.cjs +4 -2
  10. package/dist/function/index.d.cts +128 -13
  11. package/dist/function/index.d.cts.map +1 -1
  12. package/dist/function/index.d.mts +128 -13
  13. package/dist/function/index.d.mts.map +1 -1
  14. package/dist/function/index.mjs +3 -3
  15. package/dist/{function-DnI2v0p3.mjs → function-CYHPhQCQ.mjs} +84 -6
  16. package/dist/function-CYHPhQCQ.mjs.map +1 -0
  17. package/dist/{function-CB82a2GS.cjs → function-DYPifnmg.cjs} +95 -5
  18. package/dist/function-DYPifnmg.cjs.map +1 -0
  19. package/dist/{get-yrs1Kqho.cjs → get-1kqkxPFX.cjs} +20 -8
  20. package/dist/get-1kqkxPFX.cjs.map +1 -0
  21. package/dist/{get-CWL_cu6G.mjs → get-Dv6ejLZg.mjs} +21 -3
  22. package/dist/get-Dv6ejLZg.mjs.map +1 -0
  23. package/dist/guard/index.cjs +5 -12
  24. package/dist/guard/index.cjs.map +1 -1
  25. package/dist/guard/index.d.cts +18 -17
  26. package/dist/guard/index.d.cts.map +1 -1
  27. package/dist/guard/index.d.mts +18 -17
  28. package/dist/guard/index.d.mts.map +1 -1
  29. package/dist/guard/index.mjs +4 -12
  30. package/dist/guard/index.mjs.map +1 -1
  31. package/dist/index-MbdqaUt1.d.cts +54 -0
  32. package/dist/index-MbdqaUt1.d.cts.map +1 -0
  33. package/dist/index-k-paNOu4.d.mts +54 -0
  34. package/dist/index-k-paNOu4.d.mts.map +1 -0
  35. package/dist/iterator/index.cjs +72 -26
  36. package/dist/iterator/index.cjs.map +1 -1
  37. package/dist/iterator/index.d.cts +157 -5
  38. package/dist/iterator/index.d.cts.map +1 -1
  39. package/dist/iterator/index.d.mts +157 -5
  40. package/dist/iterator/index.d.mts.map +1 -1
  41. package/dist/iterator/index.mjs +66 -24
  42. package/dist/iterator/index.mjs.map +1 -1
  43. package/dist/lens/index.cjs +3 -3
  44. package/dist/lens/index.cjs.map +1 -1
  45. package/dist/lens/index.mjs +3 -3
  46. package/dist/lens/index.mjs.map +1 -1
  47. package/dist/map/index.cjs +88 -1
  48. package/dist/map/index.cjs.map +1 -1
  49. package/dist/map/index.d.cts +130 -2
  50. package/dist/map/index.d.cts.map +1 -1
  51. package/dist/map/index.d.mts +130 -2
  52. package/dist/map/index.d.mts.map +1 -1
  53. package/dist/map/index.mjs +86 -2
  54. package/dist/map/index.mjs.map +1 -1
  55. package/dist/number/index.cjs +91 -18
  56. package/dist/number/index.cjs.map +1 -1
  57. package/dist/number/index.d.cts +134 -19
  58. package/dist/number/index.d.cts.map +1 -1
  59. package/dist/number/index.d.mts +134 -19
  60. package/dist/number/index.d.mts.map +1 -1
  61. package/dist/number/index.mjs +91 -18
  62. package/dist/number/index.mjs.map +1 -1
  63. package/dist/object/index.cjs +111 -7
  64. package/dist/object/index.cjs.map +1 -1
  65. package/dist/object/index.d.cts +186 -26
  66. package/dist/object/index.d.cts.map +1 -1
  67. package/dist/object/index.d.mts +186 -26
  68. package/dist/object/index.d.mts.map +1 -1
  69. package/dist/object/index.mjs +111 -7
  70. package/dist/object/index.mjs.map +1 -1
  71. package/dist/orNull-CJNrTjhQ.cjs +45 -0
  72. package/dist/orNull-CJNrTjhQ.cjs.map +1 -0
  73. package/dist/orNull-EeXiCxD4.mjs +34 -0
  74. package/dist/orNull-EeXiCxD4.mjs.map +1 -0
  75. package/dist/order/index.cjs +22 -1
  76. package/dist/order/index.cjs.map +1 -1
  77. package/dist/order/index.d.cts +2 -2
  78. package/dist/order/index.d.mts +2 -2
  79. package/dist/order/index.mjs +22 -1
  80. package/dist/order/index.mjs.map +1 -1
  81. package/dist/{order.constants-BWSCg3C7.d.cts → order.constants-DpGY-EDp.d.cts} +4 -1
  82. package/dist/order.constants-DpGY-EDp.d.cts.map +1 -0
  83. package/dist/{order.constants-BWSCg3C7.d.mts → order.constants-DpGY-EDp.d.mts} +4 -1
  84. package/dist/order.constants-DpGY-EDp.d.mts.map +1 -0
  85. package/dist/purry-DXnhXie9.mjs +22 -0
  86. package/dist/purry-DXnhXie9.mjs.map +1 -0
  87. package/dist/purry-Dqp_F64t.cjs +27 -0
  88. package/dist/purry-Dqp_F64t.cjs.map +1 -0
  89. package/dist/set/index.cjs +59 -1
  90. package/dist/set/index.cjs.map +1 -1
  91. package/dist/set/index.d.cts +151 -2
  92. package/dist/set/index.d.cts.map +1 -1
  93. package/dist/set/index.d.mts +151 -2
  94. package/dist/set/index.d.mts.map +1 -1
  95. package/dist/set/index.mjs +59 -2
  96. package/dist/set/index.mjs.map +1 -1
  97. package/dist/string/index.cjs +289 -15
  98. package/dist/string/index.cjs.map +1 -1
  99. package/dist/string/index.d.cts +406 -1
  100. package/dist/string/index.d.cts.map +1 -1
  101. package/dist/string/index.d.mts +406 -1
  102. package/dist/string/index.d.mts.map +1 -1
  103. package/dist/string/index.mjs +271 -4
  104. package/dist/string/index.mjs.map +1 -1
  105. package/dist/tuple/index.cjs +20 -21
  106. package/dist/tuple/index.cjs.map +1 -1
  107. package/dist/tuple/index.d.cts +27 -58
  108. package/dist/tuple/index.d.cts.map +1 -1
  109. package/dist/tuple/index.d.mts +27 -58
  110. package/dist/tuple/index.d.mts.map +1 -1
  111. package/dist/tuple/index.mjs +20 -22
  112. package/dist/tuple/index.mjs.map +1 -1
  113. package/package.json +55 -127
  114. package/dist/function-CB82a2GS.cjs.map +0 -1
  115. package/dist/function-DnI2v0p3.mjs.map +0 -1
  116. package/dist/get-CWL_cu6G.mjs.map +0 -1
  117. package/dist/get-yrs1Kqho.cjs.map +0 -1
  118. package/dist/index-BJlKyBJH.d.cts +0 -18
  119. package/dist/index-BJlKyBJH.d.cts.map +0 -1
  120. package/dist/index-DGrnGMDt.d.mts +0 -18
  121. package/dist/index-DGrnGMDt.d.mts.map +0 -1
  122. package/dist/isNotNil-DrF-ohem.cjs +0 -28
  123. package/dist/isNotNil-DrF-ohem.cjs.map +0 -1
  124. package/dist/isNotNil-R5f1hC53.mjs +0 -23
  125. package/dist/isNotNil-R5f1hC53.mjs.map +0 -1
  126. package/dist/orThrow-V91Jw2lF.mjs +0 -15
  127. package/dist/orThrow-V91Jw2lF.mjs.map +0 -1
  128. package/dist/orThrow-ejzcQYAI.cjs +0 -20
  129. package/dist/orThrow-ejzcQYAI.cjs.map +0 -1
  130. package/dist/order.constants-BWSCg3C7.d.cts.map +0 -1
  131. package/dist/order.constants-BWSCg3C7.d.mts.map +0 -1
  132. package/dist/purry-B2_0DGLV.cjs +0 -28
  133. package/dist/purry-B2_0DGLV.cjs.map +0 -1
  134. package/dist/purry-BOWmqwDB.mjs +0 -23
  135. package/dist/purry-BOWmqwDB.mjs.map +0 -1
@@ -1,7 +1,11 @@
1
- import { t as purry } from "../purry-BOWmqwDB.mjs";
2
- import { t as isNotNil } from "../isNotNil-R5f1hC53.mjs";
1
+ import { t as purry } from "../purry-DXnhXie9.mjs";
2
+ import { n as isNotNil, t as orNull } from "../orNull-EeXiCxD4.mjs";
3
3
  //#region src/iterator/_globalAliases.ts
4
- const { from } = Iterator;
4
+ /**
5
+ * Creates an iterator from an iterable or iterator object.
6
+ * @function
7
+ */
8
+ const from = Iterator.from;
5
9
  //#endregion
6
10
  //#region src/iterator/drop.ts
7
11
  function dropImplementation(iter, limit) {
@@ -32,26 +36,6 @@ function filter(...args) {
32
36
  return purry(filterImplementation, args);
33
37
  }
34
38
  //#endregion
35
- //#region src/guard/orNull.ts
36
- /**
37
- * Normalize nullish values to `null`, leaving all other values unchanged.
38
- * Equivalent to `value ?? null`.
39
- *
40
- * @category Guard
41
- * @param value - A value that may be `null` or `undefined`.
42
- * @returns `null` when `value` is `null` or `undefined`; otherwise `value` with `null` and `undefined` removed from its type.
43
- *
44
- * @example
45
- * ```ts
46
- * orNull(0); // 0
47
- * orNull(undefined); // null
48
- * orNull(null); // null
49
- * ```
50
- */
51
- function orNull(value) {
52
- return value ?? null;
53
- }
54
- //#endregion
55
39
  //#region src/iterator/find.ts
56
40
  function findImplementation(data, predicate) {
57
41
  return orNull(data.find(predicate));
@@ -68,6 +52,17 @@ function flatMap(...args) {
68
52
  return purry(flatMapImplementation, args);
69
53
  }
70
54
  //#endregion
55
+ //#region src/iterator/forEach.ts
56
+ function forEachImplementation(data, fn) {
57
+ return data.map((value, index) => {
58
+ fn(value, index);
59
+ return value;
60
+ });
61
+ }
62
+ function forEach(...args) {
63
+ return purry(forEachImplementation, args);
64
+ }
65
+ //#endregion
71
66
  //#region src/iterator/map.ts
72
67
  function mapImplementation(data, fn) {
73
68
  return data.map(fn);
@@ -143,6 +138,53 @@ function take(...args) {
143
138
  return purry(takeImplementation, args);
144
139
  }
145
140
  //#endregion
146
- export { drop, every, filter, find, flatMap, from, map, range, rangeWithOpts, reduce, some, take };
141
+ //#region src/iterator/unique.ts
142
+ /**
143
+ * Returns an iterator with duplicate values removed.
144
+ * Keeps the first occurrence of each value.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * unique([1, 2, 2, 3].values()).toArray(); // [1, 2, 3]
149
+ * unique([].values()).toArray(); // []
150
+ * ```
151
+ */
152
+ function unique(data) {
153
+ const set = /* @__PURE__ */ new Set();
154
+ return data.filter((value) => {
155
+ if (set.has(value)) return false;
156
+ set.add(value);
157
+ return true;
158
+ });
159
+ }
160
+ //#endregion
161
+ //#region src/iterator/uniqueBy.ts
162
+ function uniqueByImplementation(data, mapFn) {
163
+ const set = /* @__PURE__ */ new Set();
164
+ return data.filter((value) => {
165
+ const key = mapFn(value);
166
+ if (set.has(key)) return false;
167
+ set.add(key);
168
+ return true;
169
+ });
170
+ }
171
+ function uniqueBy(...args) {
172
+ return purry(uniqueByImplementation, args);
173
+ }
174
+ //#endregion
175
+ //#region src/iterator/uniqueWith.ts
176
+ function uniqueWithImplementation(data, isEqual) {
177
+ let indexCounter = 0;
178
+ const withIndex = data.map((value) => [value, indexCounter++]);
179
+ return withIndex.filter(([value, index]) => {
180
+ const [, foundIndex] = withIndex.find(([otherValue, otherIndex]) => index === otherIndex || isEqual(value, otherValue)) ?? [null, -1];
181
+ return index === foundIndex;
182
+ }).map(([v, _i]) => v);
183
+ }
184
+ function uniqueWith(...args) {
185
+ return purry(uniqueWithImplementation, args);
186
+ }
187
+ //#endregion
188
+ export { drop, every, filter, find, flatMap, forEach, from, map, range, rangeWithOpts, reduce, some, take, unique, uniqueBy, uniqueWith };
147
189
 
148
190
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/iterator/_globalAliases.ts","../../src/iterator/drop.ts","../../src/iterator/every.ts","../../src/iterator/filter.ts","../../src/guard/orNull.ts","../../src/iterator/find.ts","../../src/iterator/flatMap.ts","../../src/iterator/map.ts","../../src/iterator/range.ts","../../src/iterator/reduce.ts","../../src/iterator/some.ts","../../src/iterator/take.ts"],"sourcesContent":["// TODO: look into this eslint error\n// eslint-disable-next-line @typescript-eslint/unbound-method\nexport const { from } = Iterator;\n","import { purry } from '../function/purry';\n\nfunction dropImplementation<T>(iter: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined> {\n try {\n return iter.drop(limit);\n } catch (e) {\n if (e instanceof RangeError) {\n throw new RangeError(`Iter.drop() :: ${e.message}`);\n }\n throw e;\n }\n}\n\n/**\n * @throws {RangeError}\n */\nexport function drop<T>(limit: number): (iter: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function drop<T>(iter: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined>;\nexport function drop(...args: readonly unknown[]): unknown {\n return purry(dropImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction everyImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => unknown,\n): boolean {\n return data.every(predicate);\n}\n\nexport function every<T>(\n predicate: (value: T, index: number) => unknown,\n): (data: IteratorObject<T, any, any>) => boolean;\nexport function every<T>(data: IteratorObject<T, any, any>, predicate: (value: T, index: number) => unknown): boolean;\nexport function every(...args: readonly unknown[]): unknown {\n return purry(everyImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction filterImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => boolean,\n): IteratorObject<T, undefined> {\n return data.filter(predicate);\n}\n\nexport function filter<T, S extends T>(\n predicate: (value: T, index: number) => value is S,\n): (data: IteratorObject<T, any, any>) => IteratorObject<S, undefined>;\nexport function filter<T>(\n predicate: (value: T, index: number) => boolean,\n): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function filter<T, S extends T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => value is S,\n): IteratorObject<S, undefined>;\nexport function filter<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => boolean,\n): IteratorObject<T, undefined>;\nexport function filter(...args: readonly unknown[]): unknown {\n return purry(filterImplementation, args);\n}\n","/**\n * Normalize nullish values to `null`, leaving all other values unchanged.\n * Equivalent to `value ?? null`.\n *\n * @category Guard\n * @param value - A value that may be `null` or `undefined`.\n * @returns `null` when `value` is `null` or `undefined`; otherwise `value` with `null` and `undefined` removed from its type.\n *\n * @example\n * ```ts\n * orNull(0); // 0\n * orNull(undefined); // null\n * orNull(null); // null\n * ```\n */\nexport function orNull<T>(value: T | null | undefined): NonNullable<T> | null {\n return value ?? null;\n}\n","import { purry } from '../function/purry';\nimport { orNull } from '../guard/orNull';\n\nfunction findImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => boolean,\n): T | null {\n return orNull(data.find(predicate));\n}\n\nexport function find<T, S extends T>(\n predicate: (value: T, index: number) => value is S,\n): (data: IteratorObject<T, any, any>) => S | null;\nexport function find<T>(\n predicate: (value: T, index: number) => boolean,\n): (data: IteratorObject<T, any, any>) => T | null;\nexport function find<T, S extends T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => value is S,\n): S | null;\nexport function find<T>(data: IteratorObject<T, any, any>, predicate: (value: T, index: number) => boolean): T | null;\nexport function find(...args: readonly unknown[]): unknown {\n return purry(findImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction flatMapImplementation<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => Iterable<U, unknown, undefined> | Iterator<U, unknown, undefined>,\n): IteratorObject<U, undefined> {\n return data.flatMap(fn);\n}\n\nexport function flatMap<T, U>(\n fn: (value: T, index: number) => Iterable<U, unknown, undefined> | Iterator<U, unknown, undefined>,\n): (data: IteratorObject<T, any, any>) => IteratorObject<U, undefined>;\nexport function flatMap<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => Iterable<U, unknown, undefined> | Iterator<U, unknown, undefined>,\n): IteratorObject<U, undefined>;\nexport function flatMap(...args: readonly unknown[]): unknown {\n return purry(flatMapImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapImplementation<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => U,\n): IteratorObject<U, undefined> {\n return data.map(fn);\n}\n\nexport function map<T, U>(\n fn: (value: T, index: number) => U,\n): (data: IteratorObject<T, any, any>) => IteratorObject<U, undefined>;\nexport function map<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => U,\n): IteratorObject<U, undefined>;\nexport function map(...args: readonly unknown[]): unknown {\n return purry(mapImplementation, args);\n}\n","import { purry } from '../function/purry';\nimport { isNotNil } from '../guard/isNotNil';\n\n// Take from https://github.com/tc39/proposal-iterator.range/blob/main/global.d.ts\ntype Infinity = number;\ninterface NumericRangeOptions<T extends bigint | number> {\n inclusive?: boolean;\n step?: T;\n}\n\nfunction rangeWithOptsImplementation<T extends bigint | number>(\n start: T,\n end: Infinity | T,\n option: NumericRangeOptions<T>,\n): IteratorObject<T, undefined> {\n if (start === Infinity || start === -Infinity) {\n throw new RangeError(`range() start argument cannot be ${start}`);\n }\n if (Number.isNaN(start)) {\n throw new RangeError(`range() start argument cannot be NaN`);\n }\n if (Number.isNaN(end)) {\n throw new RangeError(`range() end argument cannot be NaN`);\n }\n if (typeof start === 'bigint' && isNotNil(option.step) && typeof option.step !== 'bigint') {\n throw new RangeError(`range() option.step argument must be of the same type as start`);\n }\n if (isNotNil(option.step) && option.step <= 0) {\n if (option.step < 1) {\n throw new RangeError(`Arr.range() :: ${option.step} must be a positive integer`);\n }\n }\n\n const { inclusive = false } = option;\n // typescript cannot correctly narrow that step will always be `T`\n const step = option.step ?? ((typeof start === 'bigint' ? 1n : 1) as unknown as T);\n const isIncreasing = start < end;\n\n // @ts-expect-error - not sure what's going on with the type issues\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands, @typescript-eslint/no-unsafe-return\n const changeFunc = start < end ? (value: T): T => value + step : (value: T): T => value - step;\n const endCondition = (() => {\n if (isIncreasing && inclusive) return (value: T) => value <= end;\n if (isIncreasing && !inclusive) return (value: T) => value < end;\n if (!isIncreasing && inclusive) return (value: T) => value >= end;\n // if (!isIncreasing && !inclusive)\n return (value: T) => value > end;\n })();\n\n const gen = function* () {\n let current = start;\n while (endCondition(current)) {\n yield current;\n current = changeFunc(current);\n }\n return undefined;\n };\n\n return gen();\n}\n\nfunction rangeImplementation<T extends bigint | number>(start: T, end: Infinity | T): IteratorObject<T, undefined> {\n return rangeWithOptsImplementation(start, end, {});\n}\n\n/**\n * @throws {RangeError}\n */\nexport function range(end: Infinity | bigint): {\n (start: bigint): IteratorObject<bigint, undefined>;\n (start: number): IteratorObject<number, undefined>;\n};\nexport function range<T extends bigint | number>(start: T, end: Infinity | T): IteratorObject<T, undefined>;\nexport function range(...args: unknown[]): unknown {\n return purry(rangeImplementation, args);\n}\n\n/**\n * @throws {RangeError}\n */\nexport function rangeWithOpts<T extends bigint | number>(\n end: Infinity | bigint,\n option: NumericRangeOptions<T>,\n): (start: T) => IteratorObject<T, undefined>;\nexport function rangeWithOpts<T extends bigint | number>(\n start: T,\n end: Infinity | T,\n option: NumericRangeOptions<T>,\n): IteratorObject<T, undefined>;\nexport function rangeWithOpts(...args: unknown[]): unknown {\n return purry(rangeWithOptsImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction reduceImplementation<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U,\n): U {\n return data.reduce(fn, initialValue);\n}\n\nexport function reduce<T, U>(\n fn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U,\n): (data: IteratorObject<T, any, any>) => U;\nexport function reduce<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U,\n): U;\nexport function reduce(...args: readonly unknown[]): unknown {\n return purry(reduceImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction someImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => unknown,\n): boolean {\n return data.some(predicate);\n}\n\nexport function some<T>(\n predicate: (value: T, index: number) => unknown,\n): (data: IteratorObject<T, any, any>) => boolean;\nexport function some<T>(data: IteratorObject<T, any, any>, predicate: (value: T, index: number) => unknown): boolean;\nexport function some(...args: readonly unknown[]): unknown {\n return purry(someImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction takeImplementation<T>(iter: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined> {\n try {\n return iter.take(limit);\n } catch (e) {\n if (e instanceof RangeError) {\n throw new RangeError(`Iter.take() :: ${e.message}`);\n }\n throw e;\n }\n}\n\n/**\n * @throws {RangerError}\n */\nexport function take<T>(limit: number): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function take<T>(data: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined>;\nexport function take(...args: readonly unknown[]): unknown {\n return purry(takeImplementation, args);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/iterator/_globalAliases.ts","../../src/iterator/drop.ts","../../src/iterator/every.ts","../../src/iterator/filter.ts","../../src/iterator/find.ts","../../src/iterator/flatMap.ts","../../src/iterator/forEach.ts","../../src/iterator/map.ts","../../src/iterator/range.ts","../../src/iterator/reduce.ts","../../src/iterator/some.ts","../../src/iterator/take.ts","../../src/iterator/unique.ts","../../src/iterator/uniqueBy.ts","../../src/iterator/uniqueWith.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-destructuring */\n\n/**\n * Creates an iterator from an iterable or iterator object.\n * @function\n */\n// TODO: look into this eslint error\n// eslint-disable-next-line @typescript-eslint/unbound-method\nexport const from = Iterator.from;\n","import { purry } from '../function/purry';\n\nfunction dropImplementation<T>(iter: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined> {\n try {\n return iter.drop(limit);\n } catch (e) {\n if (e instanceof RangeError) {\n throw new RangeError(`Iter.drop() :: ${e.message}`);\n }\n throw e;\n }\n}\n\n/**\n * Returns an iterator with the first `limit` elements skipped.\n *\n * @example\n * ```ts\n * drop([1, 2, 3, 4].values(), 2).toArray(); // [3, 4]\n * drop(1)([1, 2, 3, 4].values()).toArray(); // [2, 3, 4]\n * ```\n */\nexport function drop<T>(limit: number): (iter: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function drop<T>(iter: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined>;\nexport function drop(...args: readonly unknown[]): unknown {\n return purry(dropImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction everyImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => unknown,\n): boolean {\n return data.every(predicate);\n}\n\n/**\n * Tests whether every element satisfies a predicate.\n *\n * @example\n * ```ts\n * every([2, 4, 6].values(), n => n % 2 === 0); // true\n * every(n => n > 0)([1, 2, 3].values()); // true\n * ```\n */\nexport function every<T>(\n predicate: (value: T, index: number) => unknown,\n): (data: IteratorObject<T, any, any>) => boolean;\nexport function every<T>(data: IteratorObject<T, any, any>, predicate: (value: T, index: number) => unknown): boolean;\nexport function every(...args: readonly unknown[]): unknown {\n return purry(everyImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction filterImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => boolean,\n): IteratorObject<T, undefined> {\n return data.filter(predicate);\n}\n\n/**\n * Keeps the elements that satisfy a predicate.\n *\n * @example\n * ```ts\n * filter([1, 2, 3, 4].values(), n => n % 2 === 0).toArray(); // [2, 4]\n * filter(n => n > 2)([1, 2, 3, 4].values()).toArray(); // [3, 4]\n * ```\n */\nexport function filter<T, S extends T>(\n predicate: (value: T, index: number) => value is S,\n): (data: IteratorObject<T, any, any>) => IteratorObject<S, undefined>;\nexport function filter<T>(\n predicate: (value: T, index: number) => boolean,\n): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function filter<T, S extends T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => value is S,\n): IteratorObject<S, undefined>;\nexport function filter<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => boolean,\n): IteratorObject<T, undefined>;\nexport function filter(...args: readonly unknown[]): unknown {\n return purry(filterImplementation, args);\n}\n","import { purry } from '../function/purry';\nimport { orNull } from '../guard/orNull';\n\nfunction findImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => boolean,\n): T | null {\n return orNull(data.find(predicate));\n}\n\n/**\n * Returns the first element that satisfies a predicate.\n * Returns `null` when no element matches.\n *\n * @example\n * ```ts\n * find([1, 2, 3].values(), n => n > 1); // 2\n * find(n => n > 1)([1, 2, 3].values()); // 2\n * find([1, 2, 3].values(), n => n > 10); // null\n * ```\n */\nexport function find<T, S extends T>(\n predicate: (value: T, index: number) => value is S,\n): (data: IteratorObject<T, any, any>) => S | null;\nexport function find<T>(\n predicate: (value: T, index: number) => boolean,\n): (data: IteratorObject<T, any, any>) => T | null;\nexport function find<T, S extends T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => value is S,\n): S | null;\nexport function find<T>(data: IteratorObject<T, any, any>, predicate: (value: T, index: number) => boolean): T | null;\nexport function find(...args: readonly unknown[]): unknown {\n return purry(findImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction flatMapImplementation<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => Iterable<U, unknown, undefined> | Iterator<U, unknown, undefined>,\n): IteratorObject<U, undefined> {\n return data.flatMap(fn);\n}\n\n/**\n * Maps each element to an iterable and flattens the result by one level.\n *\n * @example\n * ```ts\n * flatMap([1, 2, 3].values(), n => [n, n * 10]).toArray(); // [1, 10, 2, 20, 3, 30]\n * flatMap(n => [n, n * 10])([1, 2, 3].values()).toArray(); // [1, 10, 2, 20, 3, 30]\n * ```\n */\nexport function flatMap<T, U>(\n fn: (value: T, index: number) => Iterable<U, unknown, undefined> | Iterator<U, unknown, undefined>,\n): (data: IteratorObject<T, any, any>) => IteratorObject<U, undefined>;\nexport function flatMap<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => Iterable<U, unknown, undefined> | Iterator<U, unknown, undefined>,\n): IteratorObject<U, undefined>;\nexport function flatMap(...args: readonly unknown[]): unknown {\n return purry(flatMapImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction forEachImplementation<T>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => void,\n): IteratorObject<T, undefined> {\n return data.map((value, index) => {\n fn(value, index);\n return value;\n });\n}\n\n/**\n * Runs a callback for each element and returns an iterator with the same values.\n *\n * @example\n * ```ts\n * forEach([1, 2, 3].values(), n => console.log(n)).toArray(); // [1, 2, 3]\n * forEach(n => console.log(n))([1, 2, 3].values()).toArray(); // [1, 2, 3]\n * ```\n */\nexport function forEach<T>(\n fn: (value: T, index: number) => void,\n): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function forEach<T>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => void,\n): IteratorObject<T, undefined>;\nexport function forEach(...args: readonly unknown[]): unknown {\n return purry(forEachImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapImplementation<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => U,\n): IteratorObject<U, undefined> {\n return data.map(fn);\n}\n\n/**\n * Transforms each element with a callback.\n *\n * @example\n * ```ts\n * map([1, 2, 3].values(), n => n * 2).toArray(); // [2, 4, 6]\n * map(n => n * 2)([1, 2, 3].values()).toArray(); // [2, 4, 6]\n * ```\n */\nexport function map<T, U>(\n fn: (value: T, index: number) => U,\n): (data: IteratorObject<T, any, any>) => IteratorObject<U, undefined>;\nexport function map<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (value: T, index: number) => U,\n): IteratorObject<U, undefined>;\nexport function map(...args: readonly unknown[]): unknown {\n return purry(mapImplementation, args);\n}\n","import { purry } from '../function/purry';\nimport { isNotNil } from '../guard/isNotNil';\n\n// Take from https://github.com/tc39/proposal-iterator.range/blob/main/global.d.ts\ntype Infinity = number;\ninterface NumericRangeOptions<T extends bigint | number> {\n inclusive?: boolean;\n step?: T;\n}\n\nfunction rangeWithOptsImplementation<T extends bigint | number>(\n start: T,\n end: Infinity | T,\n option: NumericRangeOptions<T>,\n): IteratorObject<T, undefined> {\n if (start === Infinity || start === -Infinity) {\n throw new RangeError(`range() start argument cannot be ${start}`);\n }\n if (Number.isNaN(start)) {\n throw new RangeError(`range() start argument cannot be NaN`);\n }\n if (Number.isNaN(end)) {\n throw new RangeError(`range() end argument cannot be NaN`);\n }\n if (typeof start === 'bigint' && isNotNil(option.step) && typeof option.step !== 'bigint') {\n throw new RangeError(`range() option.step argument must be of the same type as start`);\n }\n if (isNotNil(option.step) && option.step <= 0) {\n if (option.step < 1) {\n throw new RangeError(`Arr.range() :: ${option.step} must be a positive integer`);\n }\n }\n\n const { inclusive = false } = option;\n // typescript cannot correctly narrow that step will always be `T`\n const step = option.step ?? ((typeof start === 'bigint' ? 1n : 1) as unknown as T);\n const isIncreasing = start < end;\n\n // @ts-expect-error - not sure what's going on with the type issues\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands, @typescript-eslint/no-unsafe-return\n const changeFunc = start < end ? (value: T): T => value + step : (value: T): T => value - step;\n const endCondition = (() => {\n if (isIncreasing && inclusive) return (value: T) => value <= end;\n if (isIncreasing && !inclusive) return (value: T) => value < end;\n if (!isIncreasing && inclusive) return (value: T) => value >= end;\n // if (!isIncreasing && !inclusive)\n return (value: T) => value > end;\n })();\n\n const gen = function* () {\n let current = start;\n while (endCondition(current)) {\n yield current;\n current = changeFunc(current);\n }\n return undefined;\n };\n\n return gen();\n}\n\nfunction rangeImplementation<T extends bigint | number>(start: T, end: Infinity | T): IteratorObject<T, undefined> {\n return rangeWithOptsImplementation(start, end, {});\n}\n\n/**\n * Creates an iterator over a numeric range from `start` up to, but not including, `end`.\n * When only one argument is given, it is treated as `end` with `start` defaulting to `0`.\n * Throws when `start` or `end` is invalid (for example `Infinity`, `-Infinity`, or `NaN`).\n *\n * @example\n * ```ts\n * range(1, 4).toArray(); // [1, 2, 3]\n * range(4).toArray(); // [0, 1, 2, 3]\n * range(1n, 4n).toArray(); // [1n, 2n, 3n]\n * ```\n */\nexport function range(end: Infinity | bigint): {\n (start: bigint): IteratorObject<bigint, undefined>;\n (start: number): IteratorObject<number, undefined>;\n};\nexport function range<T extends bigint | number>(start: T, end: Infinity | T): IteratorObject<T, undefined>;\nexport function range(...args: unknown[]): unknown {\n return purry(rangeImplementation, args);\n}\n\n/**\n * Like `range`, but accepts options for an inclusive end and a custom step size.\n * Throws when arguments are invalid or when `step` is not a positive value of the same type as `start`.\n *\n * @example\n * ```ts\n * rangeWithOpts(1, 4, { inclusive: true }).toArray(); // [1, 2, 3, 4]\n * rangeWithOpts(0, 4, { step: 2 }).toArray(); // [0, 2]\n * rangeWithOpts(1, 4, { inclusive: true, step: 2n }).toArray(); // [1n, 3n]\n * ```\n */\nexport function rangeWithOpts<T extends bigint | number>(\n end: Infinity | bigint,\n option: NumericRangeOptions<T>,\n): (start: T) => IteratorObject<T, undefined>;\nexport function rangeWithOpts<T extends bigint | number>(\n start: T,\n end: Infinity | T,\n option: NumericRangeOptions<T>,\n): IteratorObject<T, undefined>;\nexport function rangeWithOpts(...args: unknown[]): unknown {\n return purry(rangeWithOptsImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction reduceImplementation<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U,\n): U {\n return data.reduce(fn, initialValue);\n}\n\n/**\n * Reduces an iterator to a single value using an initial accumulator.\n *\n * @example\n * ```ts\n * reduce([1, 2, 3].values(), (acc, n) => acc + n, 0); // 6\n * reduce((acc, n) => acc + n, 0)([1, 2, 3].values()); // 6\n * ```\n */\nexport function reduce<T, U>(\n fn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U,\n): (data: IteratorObject<T, any, any>) => U;\nexport function reduce<T, U>(\n data: IteratorObject<T, any, any>,\n fn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U,\n): U;\nexport function reduce(...args: readonly unknown[]): unknown {\n return purry(reduceImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction someImplementation<T>(\n data: IteratorObject<T, any, any>,\n predicate: (value: T, index: number) => unknown,\n): boolean {\n return data.some(predicate);\n}\n\n/**\n * Tests whether at least one element satisfies a predicate.\n *\n * @example\n * ```ts\n * some([1, 2, 3].values(), n => n > 2); // true\n * some(n => n > 2)([1, 2, 3].values()); // true\n * ```\n */\nexport function some<T>(\n predicate: (value: T, index: number) => unknown,\n): (data: IteratorObject<T, any, any>) => boolean;\nexport function some<T>(data: IteratorObject<T, any, any>, predicate: (value: T, index: number) => unknown): boolean;\nexport function some(...args: readonly unknown[]): unknown {\n return purry(someImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction takeImplementation<T>(iter: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined> {\n try {\n return iter.take(limit);\n } catch (e) {\n if (e instanceof RangeError) {\n throw new RangeError(`Iter.take() :: ${e.message}`);\n }\n throw e;\n }\n}\n\n/**\n * Returns an iterator with at most the first `limit` elements.\n *\n * @example\n * ```ts\n * take([1, 2, 3, 4].values(), 2).toArray(); // [1, 2]\n * take(3)([1, 2, 3, 4].values()).toArray(); // [1, 2, 3]\n * ```\n */\nexport function take<T>(limit: number): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function take<T>(data: IteratorObject<T, any, any>, limit: number): IteratorObject<T, undefined>;\nexport function take(...args: readonly unknown[]): unknown {\n return purry(takeImplementation, args);\n}\n","/**\n * Returns an iterator with duplicate values removed.\n * Keeps the first occurrence of each value.\n *\n * @example\n * ```ts\n * unique([1, 2, 2, 3].values()).toArray(); // [1, 2, 3]\n * unique([].values()).toArray(); // []\n * ```\n */\nexport function unique<T>(data: IteratorObject<T, any, any>): IteratorObject<T, undefined> {\n const set = new Set<T>();\n return data.filter(value => {\n if (set.has(value)) return false;\n set.add(value);\n return true;\n });\n}\n","import { purry } from '../function/purry';\n\nfunction uniqueByImplementation<T>(\n data: IteratorObject<T, any, any>,\n mapFn: (value: T) => unknown,\n): IteratorObject<T, undefined> {\n const set = new Set<unknown>();\n return data.filter(value => {\n const key = mapFn(value);\n if (set.has(key)) return false;\n set.add(key);\n return true;\n });\n}\n\n/**\n * Returns an iterator with duplicates removed by a derived key.\n * Keeps the first occurrence for each key.\n *\n * @example\n * ```ts\n * uniqueBy([{ id: 1 }, { id: 2 }, { id: 1 }].values(), x => x.id).toArray(); // [{ id: 1 }, { id: 2 }]\n * uniqueBy(x => x.id)([{ id: 1 }, { id: 2 }, { id: 1 }].values()).toArray(); // [{ id: 1 }, { id: 2 }]\n * ```\n */\nexport function uniqueBy<T>(\n mapFn: (value: T) => unknown,\n): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function uniqueBy<T>(\n data: IteratorObject<T, any, any>,\n mapFn: (value: T) => unknown,\n): IteratorObject<T, undefined>;\nexport function uniqueBy(...args: unknown[]): unknown {\n return purry(uniqueByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction uniqueWithImplementation<T>(\n data: IteratorObject<T, any, any>,\n isEqual: (left: T, right: T) => boolean,\n): IteratorObject<T, undefined> {\n let indexCounter = 0;\n // eslint-disable-next-line no-plusplus\n const withIndex = data.map(value => [value, indexCounter++] as const);\n\n const filtered = withIndex.filter(([value, index]) => {\n const [, foundIndex] =\n withIndex.find(([otherValue, otherIndex]) => index === otherIndex || isEqual(value, otherValue)) ??\n ([null, -1] as const); // logically this should never happen, but handle it to prevent runtime errors\n\n // only keep if foundIndex is same as current index.\n // Else it means that another entry was found to be isEqual further along in the iteration\n return index === foundIndex;\n });\n\n // remove index\n return filtered.map(([v, _i]) => v);\n}\n\n/**\n * Returns an iterator with duplicates removed using a custom equality function.\n * Keeps the first occurrence of each equivalent value.\n *\n * @example\n * ```ts\n * uniqueWith([1, 1.0, 2].values(), (a, b) => a === b).toArray(); // [1, 2]\n * uniqueWith((a, b) => a === b)([1, 1.0, 2].values()).toArray(); // [1, 2]\n * ```\n */\nexport function uniqueWith<T>(\n isEqual: (left: T, right: T) => boolean,\n): (data: IteratorObject<T, any, any>) => IteratorObject<T, undefined>;\nexport function uniqueWith<T>(\n data: IteratorObject<T, any, any>,\n isEqual: (left: T, right: T) => boolean,\n): IteratorObject<T, undefined>;\nexport function uniqueWith(...args: unknown[]): unknown {\n return purry(uniqueWithImplementation, args);\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_purry = require("../purry-B2_0DGLV.cjs");
2
+ const require_function = require("../function-DYPifnmg.cjs");
3
+ const require_purry = require("../purry-Dqp_F64t.cjs");
3
4
  const require_errors = require("../errors-O-d_Vemi.cjs");
4
- const require_function = require("../function-CB82a2GS.cjs");
5
5
  const require_array_index = require("../array/index.cjs");
6
- const require_get = require("../get-yrs1Kqho.cjs");
6
+ const require_get = require("../get-1kqkxPFX.cjs");
7
7
  //#region src/lens/lens.ts
8
8
  function lens(getter, setter) {
9
9
  return (toFunctorFn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["purry","piped","purry","NilError","at","get","NotFoundError","purry","purry","purry","purry","purry"],"sources":["../../src/lens/lens.ts","../../src/lens/internal/_idx.ts","../../src/lens/idx.ts","../../src/lens/iso.ts","../../src/lens/internal/_lens.ts","../../src/lens/over.ts","../../src/lens/internal/_path.ts","../../src/lens/path.ts","../../src/lens/pathUnsafe.ts","../../src/lens/pathOr.ts","../../src/lens/pathOrUnsafe.ts","../../src/lens/prop.ts","../../src/lens/set.ts","../../src/lens/tuple.ts","../../src/lens/view.ts"],"sourcesContent":["import type { Functor, Lens } from './internal/_lens';\n\nexport function lens<Source, Focus>(\n getter: (source: Source) => Focus,\n setter: (focus: Focus, source: Source) => Source,\n): Lens<Source, Focus> {\n return (toFunctorFn: (focus: Focus) => Functor<Focus>): ((source: Source) => Functor<Source>) => {\n return (source: Source): Functor<Source> => {\n const got = getter(source);\n return toFunctorFn(got).map(focus => {\n return setter(focus, source);\n });\n };\n };\n}\n","import * as Arr from '../../array';\nimport { lens } from '../lens';\n\nimport type { Lens } from './_lens';\n\nexport function idxImplementation<T>(index: number): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return value as T;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n","import * as Arr from '../array';\nimport { purry } from '../function';\nimport type { Accessed } from '../types';\n\nimport { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function idx<T>(index: number): Lens<T[], Accessed<T>> {\n return idxImplementation(index) as Lens<T[], Accessed<T>>;\n}\n\nfunction idxOrImplementation<T>(index: number, defaultValue: T): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return (value as T) ?? defaultValue;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n\nfunction idxOr<T>(index: number, defaultValue: T): Lens<T[], T>;\nfunction idxOr(...args: readonly unknown[]): unknown {\n return purry(idxOrImplementation, args);\n}\n\nidx.or = idxOr;\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function iso<A, B>(to: (a: A) => B, from: (b: B) => A): Lens<A, B> {\n // by ignoring `source` in the setter, we are effectively transforming on _self_\n return lens(to, focus => from(focus));\n}\n","import { piped } from '../../function/piped';\n\nexport interface Functor<A> {\n map<B>(fn: (a: A) => B): Functor<B>;\n get value(): A;\n}\n\nexport type Lens<Source, Focus> = (\n functorFactory: (focus: Focus) => Functor<Focus>,\n) => (source: Source) => Functor<Source>;\n\n/**\n * Function constructor for a Const functor.\n * Const's map func ignores it's given fn, returning itself.\n * In other words, the value contained is constant from initial construction)\n *\n * Typing for this is impossible with Higher-Kinded-Types\n */\nexport function Const(value: unknown): Functor<unknown> {\n const functor: Functor<unknown> = {\n map(this: Functor<unknown>, _fn: (value: unknown) => unknown): Functor<any> {\n return this;\n },\n get value() {\n return value;\n },\n };\n return functor;\n}\n\n/**\n * Function constructor for an Identity Functor\n * This is the most basic functor you can map, simply changing the value contained per the map fn it receives\n */\nexport function Identity<A>(value: A): Functor<A> {\n return {\n map<B>(fn: (value: A) => B): Functor<B> {\n return Identity(fn(value));\n },\n get value() {\n return value;\n },\n };\n}\n\nexport function overImplementation<Source, Focus>(\n lens: Lens<Source, Focus>,\n): (source: Source, updateFn: (value: Focus) => Focus) => Source {\n return function innerOverOntoLens(source, updateFn) {\n const temp = piped(updateFn, Identity);\n // @ts-expect-error - types will never be correct here because of how Identity works\n return lens(temp)(source).value;\n };\n}\n","import { purry } from '../function';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nexport function over<Source, Focus>(\n lens: Lens<Source, Focus>,\n): {\n (updateFn: (value: Focus) => Focus): (source: Source) => Source;\n (source: Source, updateFn: (value: Focus) => Focus): Source;\n};\nexport function over<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function overOntoLens(...args: unknown[]): unknown {\n return purry(overImplementation(lens), args);\n };\n}\n","import { at } from '../../array/at';\nimport { NilError, NotFoundError } from '../../errors';\nimport { get } from '../../object/get';\n\nexport type ValueAtPath<Obj, Tuple extends readonly PropertyKey[]> = Tuple extends readonly [infer Key, ...unknown[]]\n ? Tuple extends readonly [unknown, ...infer Rest]\n ? Key extends keyof Obj\n ? Rest extends []\n ? NonNullable<Obj[Key]>\n : Rest extends readonly PropertyKey[]\n ? ValueAtPath<NonNullable<Required<Obj>[Key]>, Rest>\n : never\n : never\n : never\n : never;\n\nexport function pathImplementation(obj: object | null | undefined, keys: (number | string)[]): unknown {\n const len = keys.length;\n if (len === 0) {\n throw new RangeError('Lens.path does not support passing in an empty keys array');\n }\n\n if (obj == null) {\n throw new NilError('Lens.path does not support passing null or undefined');\n }\n\n let result: unknown = obj;\n\n for (let i = 0; i < len; i += 1) {\n const key = keys[i]!;\n\n if (typeof key === 'number') {\n result = at(result as any[], key);\n } else {\n result = get(result as Record<string, unknown>, key);\n }\n }\n\n return result;\n}\n\nexport function pathOrImplementation(obj: object, pathway: (number | string)[], defaultValue: unknown): unknown {\n const result = pathImplementation(obj, pathway);\n if (result instanceof NotFoundError) {\n return defaultValue;\n }\n return result;\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathImplementation } from './internal/_path';\n\n/**\n *\n * @throws RangeError\n */\nexport function path(path: readonly []): never;\nexport function path<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n): (data: Obj) => ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(path: readonly [K1, K2, K3]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(path: readonly [K1, K2, K3, K4]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(path: readonly [K1, K2, K3, K4, K5]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6, K7]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path<const P extends readonly PropertyKey[]>(\n path: P,\n): <S extends object>(data: S) => never extends ValueAtPath<S, P> ? ValueAtPath<S, P> | null : never;\n\nexport function path(obj: unknown, path: readonly []): never;\nexport function path<Obj, K1 extends keyof Required<Obj>>(obj: Obj, path: readonly [K1]): ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n): ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3]): ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4]): ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5]): ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7, K8]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathImplementation } from './internal/_path';\n\nexport function pathUnsafe<T = unknown>(path: readonly PropertyKey[]): (data: object) => T | null;\nexport function pathUnsafe<T = unknown>(data: object, path: readonly PropertyKey[]): T | null;\nexport function pathUnsafe(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOr(path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): (data: Obj) => ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(\n path: readonly [K1, K2, K3],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr<const Path extends readonly PropertyKey[], Value>(\n pathway: Path,\n defaultValue: Value,\n): <Obj extends object>(obj: Value extends ValueAtPath<Obj, Path> ? Obj : never) => ValueAtPath<Obj, Path>;\n\nexport function pathOr(obj: unknown, path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>>(\n obj: Obj,\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3], defaultValue: ValueAtPath<Obj, [K1, K2, K3]>): ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOrUnsafe<T = unknown>(path: readonly PropertyKey[], defaultValue: T): (data: object) => T;\nexport function pathOrUnsafe<T = unknown>(data: object, path: readonly PropertyKey[], defaultValue: T): T;\nexport function pathOrUnsafe(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function prop<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n key: string extends keyof Obj ? never : Key,\n): Lens<Obj, Obj[Key]>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined> {\n const getter = (data: Obj): Obj[string] | undefined => {\n return data[key] as Obj[string] | undefined;\n };\n\n const setter = (value: Obj[string] | undefined, data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n const theLens = lens(getter, setter);\n return theLens;\n}\n\nprop.or = function propOr<Obj extends object, Key extends keyof Obj>(key: Key, defaultValue: NonNullable<Obj[Key]>) {\n const getter = (data: Obj): NonNullable<Obj[Key]> => {\n return data[key] ?? defaultValue;\n };\n const setter = (value: Obj[Key], data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n return lens(getter, setter);\n};\n","import { purry } from '../function/purry';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nfunction setImplementation<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source {\n return function innerSetOntoLens(source, value) {\n return overImplementation(lens)(source, () => value);\n };\n}\n\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>, source: Source, value: Focus): Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function setOntoLens(...args: unknown[]): unknown {\n return purry(setImplementation(lens), args);\n };\n}\n","import { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\n\nexport function tuple<A, B>(index: 0): Lens<[A, B], A>;\nexport function tuple<A, B>(index: 1): Lens<[A, B], B>;\nexport function tuple(index: number): unknown {\n return idxImplementation(index);\n}\n","import type { Lens } from './internal/_lens';\nimport { Const } from './internal/_lens';\n\nexport function view<Source, Focus>(lens: Lens<Source, Focus>): (source: Source) => Focus {\n return function viewOntoLens(source: Source): Focus {\n // @ts-expect-error - types will never be correct here because of how Const works\n return lens(Const)(source).value;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["purry","piped","purry","NilError","at","get","NotFoundError","purry","purry","purry","purry","purry"],"sources":["../../src/lens/lens.ts","../../src/lens/internal/_idx.ts","../../src/lens/idx.ts","../../src/lens/iso.ts","../../src/lens/internal/_lens.ts","../../src/lens/over.ts","../../src/lens/internal/_path.ts","../../src/lens/path.ts","../../src/lens/pathUnsafe.ts","../../src/lens/pathOr.ts","../../src/lens/pathOrUnsafe.ts","../../src/lens/prop.ts","../../src/lens/set.ts","../../src/lens/tuple.ts","../../src/lens/view.ts"],"sourcesContent":["import type { Functor, Lens } from './internal/_lens';\n\nexport function lens<Source, Focus>(\n getter: (source: Source) => Focus,\n setter: (focus: Focus, source: Source) => Source,\n): Lens<Source, Focus> {\n return (toFunctorFn: (focus: Focus) => Functor<Focus>): ((source: Source) => Functor<Source>) => {\n return (source: Source): Functor<Source> => {\n const got = getter(source);\n return toFunctorFn(got).map(focus => {\n return setter(focus, source);\n });\n };\n };\n}\n","import * as Arr from '../../array';\nimport { lens } from '../lens';\n\nimport type { Lens } from './_lens';\n\nexport function idxImplementation<T>(index: number): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return value as T;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n","import * as Arr from '../array';\nimport { purry } from '../function';\nimport type { Accessed } from '../types';\n\nimport { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function idx<T>(index: number): Lens<T[], Accessed<T>> {\n return idxImplementation(index) as Lens<T[], Accessed<T>>;\n}\n\nfunction idxOrImplementation<T>(index: number, defaultValue: T): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return (value as T) ?? defaultValue;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n\nfunction idxOr<T>(index: number, defaultValue: T): Lens<T[], T>;\nfunction idxOr(...args: readonly unknown[]): unknown {\n return purry(idxOrImplementation, args);\n}\n\nidx.or = idxOr;\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function iso<A, B>(to: (a: A) => B, from: (b: B) => A): Lens<A, B> {\n // by ignoring `source` in the setter, we are effectively transforming on _self_\n return lens(to, focus => from(focus));\n}\n","import { piped } from '../../function/piped';\n\nexport interface Functor<A> {\n map<B>(fn: (a: A) => B): Functor<B>;\n get value(): A;\n}\n\nexport type Lens<Source, Focus> = (\n functorFactory: (focus: Focus) => Functor<Focus>,\n) => (source: Source) => Functor<Source>;\n\n/**\n * Function constructor for a Const functor.\n * Const's map func ignores it's given fn, returning itself.\n * In other words, the value contained is constant from initial construction)\n *\n * Typing for this is impossible with Higher-Kinded-Types\n */\nexport function Const(value: unknown): Functor<unknown> {\n const functor: Functor<unknown> = {\n map(this: Functor<unknown>, _fn: (value: unknown) => unknown): Functor<any> {\n return this;\n },\n get value() {\n return value;\n },\n };\n return functor;\n}\n\n/**\n * Function constructor for an Identity Functor\n * This is the most basic functor you can map, simply changing the value contained per the map fn it receives\n */\nexport function Identity<A>(value: A): Functor<A> {\n return {\n map<B>(fn: (value: A) => B): Functor<B> {\n return Identity(fn(value));\n },\n get value() {\n return value;\n },\n };\n}\n\nexport function overImplementation<Source, Focus>(\n lens: Lens<Source, Focus>,\n): (source: Source, updateFn: (value: Focus) => Focus) => Source {\n return function innerOverOntoLens(source, updateFn) {\n const temp = piped(updateFn, Identity);\n // @ts-expect-error - types will never be correct here because of how Identity works\n return lens(temp)(source).value;\n };\n}\n","import { purry } from '../function';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nexport function over<Source, Focus>(\n lens: Lens<Source, Focus>,\n): {\n (updateFn: (value: Focus) => Focus): (source: Source) => Source;\n (source: Source, updateFn: (value: Focus) => Focus): Source;\n};\nexport function over<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function overOntoLens(...args: unknown[]): unknown {\n return purry(overImplementation(lens), args);\n };\n}\n","import { at } from '../../array/at';\nimport { NilError, NotFoundError } from '../../errors';\nimport { get } from '../../object/get';\n\nexport type ValueAtPath<Obj, Tuple extends readonly PropertyKey[]> = Tuple extends readonly [infer Key, ...unknown[]]\n ? Tuple extends readonly [unknown, ...infer Rest]\n ? Key extends keyof Obj\n ? Rest extends []\n ? NonNullable<Obj[Key]>\n : Rest extends readonly PropertyKey[]\n ? ValueAtPath<NonNullable<Required<Obj>[Key]>, Rest>\n : never\n : never\n : never\n : never;\n\nexport function pathImplementation(obj: object | null | undefined, keys: (number | string)[]): unknown {\n const len = keys.length;\n if (len === 0) {\n throw new RangeError('Lens.path does not support passing in an empty keys array');\n }\n\n if (obj == null) {\n throw new NilError('Lens.path does not support passing null or undefined');\n }\n\n let result: unknown = obj;\n\n for (let i = 0; i < len; i += 1) {\n const key = keys[i]!;\n\n if (typeof key === 'number') {\n result = at(result as any[], key);\n } else {\n result = get(result as Record<string, unknown>, key);\n }\n }\n\n return result;\n}\n\nexport function pathOrImplementation(obj: object, pathway: (number | string)[], defaultValue: unknown): unknown {\n const result = pathImplementation(obj, pathway);\n if (result instanceof NotFoundError) {\n return defaultValue;\n }\n return result;\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathImplementation } from './internal/_path';\n\n/**\n *\n * @throws RangeError\n */\nexport function path(path: readonly []): never;\nexport function path<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n): (data: Obj) => ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(path: readonly [K1, K2, K3]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(path: readonly [K1, K2, K3, K4]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(path: readonly [K1, K2, K3, K4, K5]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6, K7]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path<const P extends readonly PropertyKey[]>(\n path: P,\n): <S extends object>(data: S) => never extends ValueAtPath<S, P> ? ValueAtPath<S, P> | null : never;\n\nexport function path(obj: unknown, path: readonly []): never;\nexport function path<Obj, K1 extends keyof Required<Obj>>(obj: Obj, path: readonly [K1]): ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n): ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3]): ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4]): ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5]): ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7, K8]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathImplementation } from './internal/_path';\n\nexport function pathUnsafe<T = unknown>(path: readonly PropertyKey[]): (data: object) => T | null;\nexport function pathUnsafe<T = unknown>(data: object, path: readonly PropertyKey[]): T | null;\nexport function pathUnsafe(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOr(path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): (data: Obj) => ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(\n path: readonly [K1, K2, K3],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr<const Path extends readonly PropertyKey[], Value>(\n pathway: Path,\n defaultValue: Value,\n): <Obj extends object>(obj: Value extends ValueAtPath<Obj, Path> ? Obj : never) => ValueAtPath<Obj, Path>;\n\nexport function pathOr(obj: unknown, path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>>(\n obj: Obj,\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3], defaultValue: ValueAtPath<Obj, [K1, K2, K3]>): ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOrUnsafe<T = unknown>(path: readonly PropertyKey[], defaultValue: T): (data: object) => T;\nexport function pathOrUnsafe<T = unknown>(data: object, path: readonly PropertyKey[], defaultValue: T): T;\nexport function pathOrUnsafe(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function prop<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n key: string extends keyof Obj ? never : Key,\n): Lens<Obj, Obj[Key]>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined> {\n const getter = (data: Obj): Obj[string] | undefined => {\n return data[key] as Obj[string] | undefined;\n };\n\n const setter = (value: Obj[string] | undefined, data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n const theLens = lens(getter, setter);\n return theLens;\n}\n\nprop.or = function propOr<Obj extends object, Key extends keyof Obj>(key: Key, defaultValue: NonNullable<Obj[Key]>) {\n const getter = (data: Obj): NonNullable<Obj[Key]> => {\n return data[key] ?? defaultValue;\n };\n const setter = (value: Obj[Key], data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n return lens(getter, setter);\n};\n","import { purry } from '../function/purry';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nfunction setImplementation<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source {\n return function innerSetOntoLens(source, value) {\n return overImplementation(lens)(source, () => value);\n };\n}\n\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>, source: Source, value: Focus): Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function setOntoLens(...args: unknown[]): unknown {\n return purry(setImplementation(lens), args);\n };\n}\n","import { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\n\nexport function tuple<A, B>(index: 0): Lens<[A, B], A>;\nexport function tuple<A, B>(index: 1): Lens<[A, B], B>;\nexport function tuple(index: number): unknown {\n return idxImplementation(index);\n}\n","import type { Lens } from './internal/_lens';\nimport { Const } from './internal/_lens';\n\nexport function view<Source, Focus>(lens: Lens<Source, Focus>): (source: Source) => Focus {\n return function viewOntoLens(source: Source): Focus {\n // @ts-expect-error - types will never be correct here because of how Const works\n return lens(Const)(source).value;\n };\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { t as purry } from "../purry-BOWmqwDB.mjs";
1
+ import { i as piped } from "../function-CYHPhQCQ.mjs";
2
+ import { t as purry } from "../purry-DXnhXie9.mjs";
2
3
  import { i as NotFoundError, r as NilError } from "../errors-Dw1kitu_.mjs";
3
- import { i as piped } from "../function-DnI2v0p3.mjs";
4
4
  import { at, insert } from "../array/index.mjs";
5
- import { t as get } from "../get-CWL_cu6G.mjs";
5
+ import { t as get } from "../get-Dv6ejLZg.mjs";
6
6
  //#region src/lens/lens.ts
7
7
  function lens(getter, setter) {
8
8
  return (toFunctorFn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Arr.at","Arr.insert","Arr.at","Arr.insert"],"sources":["../../src/lens/lens.ts","../../src/lens/internal/_idx.ts","../../src/lens/idx.ts","../../src/lens/iso.ts","../../src/lens/internal/_lens.ts","../../src/lens/over.ts","../../src/lens/internal/_path.ts","../../src/lens/path.ts","../../src/lens/pathUnsafe.ts","../../src/lens/pathOr.ts","../../src/lens/pathOrUnsafe.ts","../../src/lens/prop.ts","../../src/lens/set.ts","../../src/lens/tuple.ts","../../src/lens/view.ts"],"sourcesContent":["import type { Functor, Lens } from './internal/_lens';\n\nexport function lens<Source, Focus>(\n getter: (source: Source) => Focus,\n setter: (focus: Focus, source: Source) => Source,\n): Lens<Source, Focus> {\n return (toFunctorFn: (focus: Focus) => Functor<Focus>): ((source: Source) => Functor<Source>) => {\n return (source: Source): Functor<Source> => {\n const got = getter(source);\n return toFunctorFn(got).map(focus => {\n return setter(focus, source);\n });\n };\n };\n}\n","import * as Arr from '../../array';\nimport { lens } from '../lens';\n\nimport type { Lens } from './_lens';\n\nexport function idxImplementation<T>(index: number): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return value as T;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n","import * as Arr from '../array';\nimport { purry } from '../function';\nimport type { Accessed } from '../types';\n\nimport { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function idx<T>(index: number): Lens<T[], Accessed<T>> {\n return idxImplementation(index) as Lens<T[], Accessed<T>>;\n}\n\nfunction idxOrImplementation<T>(index: number, defaultValue: T): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return (value as T) ?? defaultValue;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n\nfunction idxOr<T>(index: number, defaultValue: T): Lens<T[], T>;\nfunction idxOr(...args: readonly unknown[]): unknown {\n return purry(idxOrImplementation, args);\n}\n\nidx.or = idxOr;\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function iso<A, B>(to: (a: A) => B, from: (b: B) => A): Lens<A, B> {\n // by ignoring `source` in the setter, we are effectively transforming on _self_\n return lens(to, focus => from(focus));\n}\n","import { piped } from '../../function/piped';\n\nexport interface Functor<A> {\n map<B>(fn: (a: A) => B): Functor<B>;\n get value(): A;\n}\n\nexport type Lens<Source, Focus> = (\n functorFactory: (focus: Focus) => Functor<Focus>,\n) => (source: Source) => Functor<Source>;\n\n/**\n * Function constructor for a Const functor.\n * Const's map func ignores it's given fn, returning itself.\n * In other words, the value contained is constant from initial construction)\n *\n * Typing for this is impossible with Higher-Kinded-Types\n */\nexport function Const(value: unknown): Functor<unknown> {\n const functor: Functor<unknown> = {\n map(this: Functor<unknown>, _fn: (value: unknown) => unknown): Functor<any> {\n return this;\n },\n get value() {\n return value;\n },\n };\n return functor;\n}\n\n/**\n * Function constructor for an Identity Functor\n * This is the most basic functor you can map, simply changing the value contained per the map fn it receives\n */\nexport function Identity<A>(value: A): Functor<A> {\n return {\n map<B>(fn: (value: A) => B): Functor<B> {\n return Identity(fn(value));\n },\n get value() {\n return value;\n },\n };\n}\n\nexport function overImplementation<Source, Focus>(\n lens: Lens<Source, Focus>,\n): (source: Source, updateFn: (value: Focus) => Focus) => Source {\n return function innerOverOntoLens(source, updateFn) {\n const temp = piped(updateFn, Identity);\n // @ts-expect-error - types will never be correct here because of how Identity works\n return lens(temp)(source).value;\n };\n}\n","import { purry } from '../function';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nexport function over<Source, Focus>(\n lens: Lens<Source, Focus>,\n): {\n (updateFn: (value: Focus) => Focus): (source: Source) => Source;\n (source: Source, updateFn: (value: Focus) => Focus): Source;\n};\nexport function over<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function overOntoLens(...args: unknown[]): unknown {\n return purry(overImplementation(lens), args);\n };\n}\n","import { at } from '../../array/at';\nimport { NilError, NotFoundError } from '../../errors';\nimport { get } from '../../object/get';\n\nexport type ValueAtPath<Obj, Tuple extends readonly PropertyKey[]> = Tuple extends readonly [infer Key, ...unknown[]]\n ? Tuple extends readonly [unknown, ...infer Rest]\n ? Key extends keyof Obj\n ? Rest extends []\n ? NonNullable<Obj[Key]>\n : Rest extends readonly PropertyKey[]\n ? ValueAtPath<NonNullable<Required<Obj>[Key]>, Rest>\n : never\n : never\n : never\n : never;\n\nexport function pathImplementation(obj: object | null | undefined, keys: (number | string)[]): unknown {\n const len = keys.length;\n if (len === 0) {\n throw new RangeError('Lens.path does not support passing in an empty keys array');\n }\n\n if (obj == null) {\n throw new NilError('Lens.path does not support passing null or undefined');\n }\n\n let result: unknown = obj;\n\n for (let i = 0; i < len; i += 1) {\n const key = keys[i]!;\n\n if (typeof key === 'number') {\n result = at(result as any[], key);\n } else {\n result = get(result as Record<string, unknown>, key);\n }\n }\n\n return result;\n}\n\nexport function pathOrImplementation(obj: object, pathway: (number | string)[], defaultValue: unknown): unknown {\n const result = pathImplementation(obj, pathway);\n if (result instanceof NotFoundError) {\n return defaultValue;\n }\n return result;\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathImplementation } from './internal/_path';\n\n/**\n *\n * @throws RangeError\n */\nexport function path(path: readonly []): never;\nexport function path<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n): (data: Obj) => ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(path: readonly [K1, K2, K3]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(path: readonly [K1, K2, K3, K4]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(path: readonly [K1, K2, K3, K4, K5]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6, K7]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path<const P extends readonly PropertyKey[]>(\n path: P,\n): <S extends object>(data: S) => never extends ValueAtPath<S, P> ? ValueAtPath<S, P> | null : never;\n\nexport function path(obj: unknown, path: readonly []): never;\nexport function path<Obj, K1 extends keyof Required<Obj>>(obj: Obj, path: readonly [K1]): ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n): ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3]): ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4]): ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5]): ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7, K8]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathImplementation } from './internal/_path';\n\nexport function pathUnsafe<T = unknown>(path: readonly PropertyKey[]): (data: object) => T | null;\nexport function pathUnsafe<T = unknown>(data: object, path: readonly PropertyKey[]): T | null;\nexport function pathUnsafe(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOr(path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): (data: Obj) => ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(\n path: readonly [K1, K2, K3],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr<const Path extends readonly PropertyKey[], Value>(\n pathway: Path,\n defaultValue: Value,\n): <Obj extends object>(obj: Value extends ValueAtPath<Obj, Path> ? Obj : never) => ValueAtPath<Obj, Path>;\n\nexport function pathOr(obj: unknown, path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>>(\n obj: Obj,\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3], defaultValue: ValueAtPath<Obj, [K1, K2, K3]>): ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOrUnsafe<T = unknown>(path: readonly PropertyKey[], defaultValue: T): (data: object) => T;\nexport function pathOrUnsafe<T = unknown>(data: object, path: readonly PropertyKey[], defaultValue: T): T;\nexport function pathOrUnsafe(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function prop<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n key: string extends keyof Obj ? never : Key,\n): Lens<Obj, Obj[Key]>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined> {\n const getter = (data: Obj): Obj[string] | undefined => {\n return data[key] as Obj[string] | undefined;\n };\n\n const setter = (value: Obj[string] | undefined, data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n const theLens = lens(getter, setter);\n return theLens;\n}\n\nprop.or = function propOr<Obj extends object, Key extends keyof Obj>(key: Key, defaultValue: NonNullable<Obj[Key]>) {\n const getter = (data: Obj): NonNullable<Obj[Key]> => {\n return data[key] ?? defaultValue;\n };\n const setter = (value: Obj[Key], data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n return lens(getter, setter);\n};\n","import { purry } from '../function/purry';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nfunction setImplementation<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source {\n return function innerSetOntoLens(source, value) {\n return overImplementation(lens)(source, () => value);\n };\n}\n\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>, source: Source, value: Focus): Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function setOntoLens(...args: unknown[]): unknown {\n return purry(setImplementation(lens), args);\n };\n}\n","import { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\n\nexport function tuple<A, B>(index: 0): Lens<[A, B], A>;\nexport function tuple<A, B>(index: 1): Lens<[A, B], B>;\nexport function tuple(index: number): unknown {\n return idxImplementation(index);\n}\n","import type { Lens } from './internal/_lens';\nimport { Const } from './internal/_lens';\n\nexport function view<Source, Focus>(lens: Lens<Source, Focus>): (source: Source) => Focus {\n return function viewOntoLens(source: Source): Focus {\n // @ts-expect-error - types will never be correct here because of how Const works\n return lens(Const)(source).value;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["Arr.at","Arr.insert","Arr.at","Arr.insert"],"sources":["../../src/lens/lens.ts","../../src/lens/internal/_idx.ts","../../src/lens/idx.ts","../../src/lens/iso.ts","../../src/lens/internal/_lens.ts","../../src/lens/over.ts","../../src/lens/internal/_path.ts","../../src/lens/path.ts","../../src/lens/pathUnsafe.ts","../../src/lens/pathOr.ts","../../src/lens/pathOrUnsafe.ts","../../src/lens/prop.ts","../../src/lens/set.ts","../../src/lens/tuple.ts","../../src/lens/view.ts"],"sourcesContent":["import type { Functor, Lens } from './internal/_lens';\n\nexport function lens<Source, Focus>(\n getter: (source: Source) => Focus,\n setter: (focus: Focus, source: Source) => Source,\n): Lens<Source, Focus> {\n return (toFunctorFn: (focus: Focus) => Functor<Focus>): ((source: Source) => Functor<Source>) => {\n return (source: Source): Functor<Source> => {\n const got = getter(source);\n return toFunctorFn(got).map(focus => {\n return setter(focus, source);\n });\n };\n };\n}\n","import * as Arr from '../../array';\nimport { lens } from '../lens';\n\nimport type { Lens } from './_lens';\n\nexport function idxImplementation<T>(index: number): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return value as T;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n","import * as Arr from '../array';\nimport { purry } from '../function';\nimport type { Accessed } from '../types';\n\nimport { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function idx<T>(index: number): Lens<T[], Accessed<T>> {\n return idxImplementation(index) as Lens<T[], Accessed<T>>;\n}\n\nfunction idxOrImplementation<T>(index: number, defaultValue: T): Lens<T[], T> {\n const getter = (source: T[]): T => {\n const value = Arr.at(source, index);\n return (value as T) ?? defaultValue;\n };\n\n const setter = (focus: T, source: T[]): T[] => {\n const updatedSource = Arr.insert(source, index, focus);\n return updatedSource;\n };\n\n return lens(getter, setter);\n}\n\nfunction idxOr<T>(index: number, defaultValue: T): Lens<T[], T>;\nfunction idxOr(...args: readonly unknown[]): unknown {\n return purry(idxOrImplementation, args);\n}\n\nidx.or = idxOr;\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function iso<A, B>(to: (a: A) => B, from: (b: B) => A): Lens<A, B> {\n // by ignoring `source` in the setter, we are effectively transforming on _self_\n return lens(to, focus => from(focus));\n}\n","import { piped } from '../../function/piped';\n\nexport interface Functor<A> {\n map<B>(fn: (a: A) => B): Functor<B>;\n get value(): A;\n}\n\nexport type Lens<Source, Focus> = (\n functorFactory: (focus: Focus) => Functor<Focus>,\n) => (source: Source) => Functor<Source>;\n\n/**\n * Function constructor for a Const functor.\n * Const's map func ignores it's given fn, returning itself.\n * In other words, the value contained is constant from initial construction)\n *\n * Typing for this is impossible with Higher-Kinded-Types\n */\nexport function Const(value: unknown): Functor<unknown> {\n const functor: Functor<unknown> = {\n map(this: Functor<unknown>, _fn: (value: unknown) => unknown): Functor<any> {\n return this;\n },\n get value() {\n return value;\n },\n };\n return functor;\n}\n\n/**\n * Function constructor for an Identity Functor\n * This is the most basic functor you can map, simply changing the value contained per the map fn it receives\n */\nexport function Identity<A>(value: A): Functor<A> {\n return {\n map<B>(fn: (value: A) => B): Functor<B> {\n return Identity(fn(value));\n },\n get value() {\n return value;\n },\n };\n}\n\nexport function overImplementation<Source, Focus>(\n lens: Lens<Source, Focus>,\n): (source: Source, updateFn: (value: Focus) => Focus) => Source {\n return function innerOverOntoLens(source, updateFn) {\n const temp = piped(updateFn, Identity);\n // @ts-expect-error - types will never be correct here because of how Identity works\n return lens(temp)(source).value;\n };\n}\n","import { purry } from '../function';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nexport function over<Source, Focus>(\n lens: Lens<Source, Focus>,\n): {\n (updateFn: (value: Focus) => Focus): (source: Source) => Source;\n (source: Source, updateFn: (value: Focus) => Focus): Source;\n};\nexport function over<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function overOntoLens(...args: unknown[]): unknown {\n return purry(overImplementation(lens), args);\n };\n}\n","import { at } from '../../array/at';\nimport { NilError, NotFoundError } from '../../errors';\nimport { get } from '../../object/get';\n\nexport type ValueAtPath<Obj, Tuple extends readonly PropertyKey[]> = Tuple extends readonly [infer Key, ...unknown[]]\n ? Tuple extends readonly [unknown, ...infer Rest]\n ? Key extends keyof Obj\n ? Rest extends []\n ? NonNullable<Obj[Key]>\n : Rest extends readonly PropertyKey[]\n ? ValueAtPath<NonNullable<Required<Obj>[Key]>, Rest>\n : never\n : never\n : never\n : never;\n\nexport function pathImplementation(obj: object | null | undefined, keys: (number | string)[]): unknown {\n const len = keys.length;\n if (len === 0) {\n throw new RangeError('Lens.path does not support passing in an empty keys array');\n }\n\n if (obj == null) {\n throw new NilError('Lens.path does not support passing null or undefined');\n }\n\n let result: unknown = obj;\n\n for (let i = 0; i < len; i += 1) {\n const key = keys[i]!;\n\n if (typeof key === 'number') {\n result = at(result as any[], key);\n } else {\n result = get(result as Record<string, unknown>, key);\n }\n }\n\n return result;\n}\n\nexport function pathOrImplementation(obj: object, pathway: (number | string)[], defaultValue: unknown): unknown {\n const result = pathImplementation(obj, pathway);\n if (result instanceof NotFoundError) {\n return defaultValue;\n }\n return result;\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathImplementation } from './internal/_path';\n\n/**\n *\n * @throws RangeError\n */\nexport function path(path: readonly []): never;\nexport function path<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n): (data: Obj) => ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(path: readonly [K1, K2, K3]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(path: readonly [K1, K2, K3, K4]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(path: readonly [K1, K2, K3, K4, K5]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(path: readonly [K1, K2, K3, K4, K5, K6, K7]): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path<const P extends readonly PropertyKey[]>(\n path: P,\n): <S extends object>(data: S) => never extends ValueAtPath<S, P> ? ValueAtPath<S, P> | null : never;\n\nexport function path(obj: unknown, path: readonly []): never;\nexport function path<Obj, K1 extends keyof Required<Obj>>(obj: Obj, path: readonly [K1]): ValueAtPath<Obj, [K1]> | null;\nexport function path<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n): ValueAtPath<Obj, [K1, K2]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3]): ValueAtPath<Obj, [K1, K2, K3]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4]): ValueAtPath<Obj, [K1, K2, K3, K4]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5]): ValueAtPath<Obj, [K1, K2, K3, K4, K5]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(obj: Obj, path: readonly [K1, K2, K3, K4, K5, K6, K7, K8]): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]> | null;\nexport function path<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]> | null;\nexport function path(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathImplementation } from './internal/_path';\n\nexport function pathUnsafe<T = unknown>(path: readonly PropertyKey[]): (data: object) => T | null;\nexport function pathUnsafe<T = unknown>(data: object, path: readonly PropertyKey[]): T | null;\nexport function pathUnsafe(...args: unknown[]): unknown {\n return purry(pathImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport type { ValueAtPath } from './internal/_path';\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOr(path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj extends object, K1 extends keyof Required<Obj>>(\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): (data: Obj) => ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(\n path: readonly [K1, K2, K3],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): (obj: Obj) => ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr<const Path extends readonly PropertyKey[], Value>(\n pathway: Path,\n defaultValue: Value,\n): <Obj extends object>(obj: Value extends ValueAtPath<Obj, Path> ? Obj : never) => ValueAtPath<Obj, Path>;\n\nexport function pathOr(obj: unknown, path: readonly [], defaultValue: unknown): never;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>>(\n obj: Obj,\n path: readonly [K1],\n defaultValue: ValueAtPath<Obj, [K1]>,\n): ValueAtPath<Obj, [K1]>;\nexport function pathOr<Obj, K1 extends keyof Required<Obj>, K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>>(\n obj: Obj,\n path: readonly [K1, K2],\n defaultValue: ValueAtPath<Obj, [K1, K2]>,\n): ValueAtPath<Obj, [K1, K2]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n>(obj: Obj, path: readonly [K1, K2, K3], defaultValue: ValueAtPath<Obj, [K1, K2, K3]>): ValueAtPath<Obj, [K1, K2, K3]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>;\nexport function pathOr<\n Obj,\n K1 extends keyof Required<Obj>,\n K2 extends keyof NonNullable<ValueAtPath<Obj, [K1]>>,\n K3 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2]>>,\n K4 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3]>>,\n K5 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4]>>,\n K6 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5]>>,\n K7 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6]>>,\n K8 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7]>>,\n K9 extends keyof NonNullable<ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8]>>,\n>(\n obj: Obj,\n path: readonly [K1, K2, K3, K4, K5, K6, K7, K8, K9],\n defaultValue: ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>,\n): ValueAtPath<Obj, [K1, K2, K3, K4, K5, K6, K7, K8, K9]>;\nexport function pathOr(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nimport { pathOrImplementation } from './internal/_path';\n\nexport function pathOrUnsafe<T = unknown>(path: readonly PropertyKey[], defaultValue: T): (data: object) => T;\nexport function pathOrUnsafe<T = unknown>(data: object, path: readonly PropertyKey[], defaultValue: T): T;\nexport function pathOrUnsafe(...args: unknown[]): unknown {\n return purry(pathOrImplementation, args);\n}\n","import type { Lens } from './internal/_lens';\nimport { lens } from './lens';\n\nexport function prop<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n key: string extends keyof Obj ? never : Key,\n): Lens<Obj, Obj[Key]>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined>;\nexport function prop<Obj extends Record<string, unknown>>(key: string): Lens<Obj, Obj[string] | undefined> {\n const getter = (data: Obj): Obj[string] | undefined => {\n return data[key] as Obj[string] | undefined;\n };\n\n const setter = (value: Obj[string] | undefined, data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n const theLens = lens(getter, setter);\n return theLens;\n}\n\nprop.or = function propOr<Obj extends object, Key extends keyof Obj>(key: Key, defaultValue: NonNullable<Obj[Key]>) {\n const getter = (data: Obj): NonNullable<Obj[Key]> => {\n return data[key] ?? defaultValue;\n };\n const setter = (value: Obj[Key], data: Obj): Obj => {\n return { ...data, [key]: value };\n };\n\n return lens(getter, setter);\n};\n","import { purry } from '../function/purry';\n\nimport type { Lens } from './internal/_lens';\nimport { overImplementation } from './internal/_lens';\n\nfunction setImplementation<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source {\n return function innerSetOntoLens(source, value) {\n return overImplementation(lens)(source, () => value);\n };\n}\n\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): (source: Source, value: Focus) => Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>, source: Source, value: Focus): Source;\nexport function set<Source, Focus>(lens: Lens<Source, Focus>): unknown {\n return function setOntoLens(...args: unknown[]): unknown {\n return purry(setImplementation(lens), args);\n };\n}\n","import { idxImplementation } from './internal/_idx';\nimport type { Lens } from './internal/_lens';\n\nexport function tuple<A, B>(index: 0): Lens<[A, B], A>;\nexport function tuple<A, B>(index: 1): Lens<[A, B], B>;\nexport function tuple(index: number): unknown {\n return idxImplementation(index);\n}\n","import type { Lens } from './internal/_lens';\nimport { Const } from './internal/_lens';\n\nexport function view<Source, Focus>(lens: Lens<Source, Focus>): (source: Source) => Focus {\n return function viewOntoLens(source: Source): Focus {\n // @ts-expect-error - types will never be correct here because of how Const works\n return lens(Const)(source).value;\n };\n}\n"],"mappings":"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"}