@ts-fns/stdlib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +132 -0
  3. package/dist/array/index.cjs +551 -0
  4. package/dist/array/index.cjs.map +1 -0
  5. package/dist/array/index.d.cts +334 -0
  6. package/dist/array/index.d.cts.map +1 -0
  7. package/dist/array/index.d.mts +334 -0
  8. package/dist/array/index.d.mts.map +1 -0
  9. package/dist/array/index.mjs +498 -0
  10. package/dist/array/index.mjs.map +1 -0
  11. package/dist/errors-CJsLpYo9.d.cts +25 -0
  12. package/dist/errors-CJsLpYo9.d.cts.map +1 -0
  13. package/dist/errors-CJsLpYo9.d.mts +25 -0
  14. package/dist/errors-CJsLpYo9.d.mts.map +1 -0
  15. package/dist/errors-Dw1kitu_.mjs +39 -0
  16. package/dist/errors-Dw1kitu_.mjs.map +1 -0
  17. package/dist/errors-O-d_Vemi.cjs +74 -0
  18. package/dist/errors-O-d_Vemi.cjs.map +1 -0
  19. package/dist/function/index.cjs +15 -0
  20. package/dist/function/index.d.cts +107 -0
  21. package/dist/function/index.d.cts.map +1 -0
  22. package/dist/function/index.d.mts +107 -0
  23. package/dist/function/index.d.mts.map +1 -0
  24. package/dist/function/index.mjs +3 -0
  25. package/dist/function-CB82a2GS.cjs +186 -0
  26. package/dist/function-CB82a2GS.cjs.map +1 -0
  27. package/dist/function-DnI2v0p3.mjs +121 -0
  28. package/dist/function-DnI2v0p3.mjs.map +1 -0
  29. package/dist/get-CWL_cu6G.mjs +27 -0
  30. package/dist/get-CWL_cu6G.mjs.map +1 -0
  31. package/dist/get-yrs1Kqho.cjs +38 -0
  32. package/dist/get-yrs1Kqho.cjs.map +1 -0
  33. package/dist/guard/index.cjs +43 -0
  34. package/dist/guard/index.cjs.map +1 -0
  35. package/dist/guard/index.d.cts +52 -0
  36. package/dist/guard/index.d.cts.map +1 -0
  37. package/dist/guard/index.d.mts +52 -0
  38. package/dist/guard/index.d.mts.map +1 -0
  39. package/dist/guard/index.mjs +40 -0
  40. package/dist/guard/index.mjs.map +1 -0
  41. package/dist/index-BJlKyBJH.d.cts +18 -0
  42. package/dist/index-BJlKyBJH.d.cts.map +1 -0
  43. package/dist/index-DGrnGMDt.d.mts +18 -0
  44. package/dist/index-DGrnGMDt.d.mts.map +1 -0
  45. package/dist/isNotNil-DrF-ohem.cjs +28 -0
  46. package/dist/isNotNil-DrF-ohem.cjs.map +1 -0
  47. package/dist/isNotNil-R5f1hC53.mjs +23 -0
  48. package/dist/isNotNil-R5f1hC53.mjs.map +1 -0
  49. package/dist/iterator/index.cjs +160 -0
  50. package/dist/iterator/index.cjs.map +1 -0
  51. package/dist/iterator/index.d.cts +71 -0
  52. package/dist/iterator/index.d.cts.map +1 -0
  53. package/dist/iterator/index.d.mts +71 -0
  54. package/dist/iterator/index.d.mts.map +1 -0
  55. package/dist/iterator/index.mjs +148 -0
  56. package/dist/iterator/index.mjs.map +1 -0
  57. package/dist/lens/index.cjs +199 -0
  58. package/dist/lens/index.cjs.map +1 -0
  59. package/dist/lens/index.d.cts +109 -0
  60. package/dist/lens/index.d.cts.map +1 -0
  61. package/dist/lens/index.d.mts +109 -0
  62. package/dist/lens/index.d.mts.map +1 -0
  63. package/dist/lens/index.mjs +187 -0
  64. package/dist/lens/index.mjs.map +1 -0
  65. package/dist/map/index.cjs +86 -0
  66. package/dist/map/index.cjs.map +1 -0
  67. package/dist/map/index.d.cts +41 -0
  68. package/dist/map/index.d.cts.map +1 -0
  69. package/dist/map/index.d.mts +41 -0
  70. package/dist/map/index.d.mts.map +1 -0
  71. package/dist/map/index.mjs +75 -0
  72. package/dist/map/index.mjs.map +1 -0
  73. package/dist/number/index.cjs +179 -0
  74. package/dist/number/index.cjs.map +1 -0
  75. package/dist/number/index.d.cts +112 -0
  76. package/dist/number/index.d.cts.map +1 -0
  77. package/dist/number/index.d.mts +112 -0
  78. package/dist/number/index.d.mts.map +1 -0
  79. package/dist/number/index.mjs +159 -0
  80. package/dist/number/index.mjs.map +1 -0
  81. package/dist/object/index.cjs +190 -0
  82. package/dist/object/index.cjs.map +1 -0
  83. package/dist/object/index.d.cts +118 -0
  84. package/dist/object/index.d.cts.map +1 -0
  85. package/dist/object/index.d.mts +118 -0
  86. package/dist/object/index.d.mts.map +1 -0
  87. package/dist/object/index.mjs +169 -0
  88. package/dist/object/index.mjs.map +1 -0
  89. package/dist/orThrow-V91Jw2lF.mjs +15 -0
  90. package/dist/orThrow-V91Jw2lF.mjs.map +1 -0
  91. package/dist/orThrow-ejzcQYAI.cjs +20 -0
  92. package/dist/orThrow-ejzcQYAI.cjs.map +1 -0
  93. package/dist/order/index.cjs +50 -0
  94. package/dist/order/index.cjs.map +1 -0
  95. package/dist/order/index.d.cts +3 -0
  96. package/dist/order/index.d.mts +3 -0
  97. package/dist/order/index.mjs +42 -0
  98. package/dist/order/index.mjs.map +1 -0
  99. package/dist/order.constants-BWSCg3C7.d.cts +11 -0
  100. package/dist/order.constants-BWSCg3C7.d.cts.map +1 -0
  101. package/dist/order.constants-BWSCg3C7.d.mts +11 -0
  102. package/dist/order.constants-BWSCg3C7.d.mts.map +1 -0
  103. package/dist/purry-B2_0DGLV.cjs +28 -0
  104. package/dist/purry-B2_0DGLV.cjs.map +1 -0
  105. package/dist/purry-BOWmqwDB.mjs +23 -0
  106. package/dist/purry-BOWmqwDB.mjs.map +1 -0
  107. package/dist/set/index.cjs +131 -0
  108. package/dist/set/index.cjs.map +1 -0
  109. package/dist/set/index.d.cts +61 -0
  110. package/dist/set/index.d.cts.map +1 -0
  111. package/dist/set/index.d.mts +61 -0
  112. package/dist/set/index.d.mts.map +1 -0
  113. package/dist/set/index.mjs +115 -0
  114. package/dist/set/index.mjs.map +1 -0
  115. package/dist/string/index.cjs +288 -0
  116. package/dist/string/index.cjs.map +1 -0
  117. package/dist/string/index.d.cts +144 -0
  118. package/dist/string/index.d.cts.map +1 -0
  119. package/dist/string/index.d.mts +144 -0
  120. package/dist/string/index.d.mts.map +1 -0
  121. package/dist/string/index.mjs +254 -0
  122. package/dist/string/index.mjs.map +1 -0
  123. package/dist/tuple/index.cjs +135 -0
  124. package/dist/tuple/index.cjs.map +1 -0
  125. package/dist/tuple/index.d.cts +207 -0
  126. package/dist/tuple/index.d.cts.map +1 -0
  127. package/dist/tuple/index.d.mts +207 -0
  128. package/dist/tuple/index.d.mts.map +1 -0
  129. package/dist/tuple/index.mjs +122 -0
  130. package/dist/tuple/index.mjs.map +1 -0
  131. package/dist/types-D8f67ZCe.d.cts +54 -0
  132. package/dist/types-D8f67ZCe.d.cts.map +1 -0
  133. package/dist/types-D8f67ZCe.d.mts +54 -0
  134. package/dist/types-D8f67ZCe.d.mts.map +1 -0
  135. package/package.json +177 -0
@@ -0,0 +1,135 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_purry = require("../purry-B2_0DGLV.cjs");
3
+ //#region src/tuple/at.ts
4
+ function at2Implementation(tuple, index) {
5
+ if (index < 0) throw new RangeError(`Tuple.at() :: ${index} must be a positive integer`);
6
+ if (index >= tuple.length) throw new RangeError(`Tuple.at() :: ${index} is out of bounds`);
7
+ return tuple[index];
8
+ }
9
+ function at(...args) {
10
+ return require_purry.purry(at2Implementation, args);
11
+ }
12
+ //#endregion
13
+ //#region src/tuple/fanOut.ts
14
+ function fanOutImplementation(value, fn1, fn2) {
15
+ return [fn1(value), fn2(value)];
16
+ }
17
+ function fanOut(...args) {
18
+ return require_purry.purry(fanOutImplementation, args);
19
+ }
20
+ //#endregion
21
+ //#region src/tuple/first.ts
22
+ /**
23
+ * Returns the first element of a tuple with at least one element.
24
+ *
25
+ * @param tuple - A non-empty tuple.
26
+ * @returns The element at index `0`.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * first([1, 2]); // 1
31
+ * ```
32
+ *
33
+ * @throws {RangeError} When the tuple has fewer than one element.
34
+ */
35
+ function first(tuple) {
36
+ if (tuple.length < 1) throw new RangeError("Tuple.first() :: received a tuple with less than 1 element");
37
+ return tuple[0];
38
+ }
39
+ //#endregion
40
+ //#region src/tuple/insert.ts
41
+ function updateImplementation(tuple, index, value) {
42
+ return tuple.with(index, value);
43
+ }
44
+ function insert(...args) {
45
+ return require_purry.purry(updateImplementation, args);
46
+ }
47
+ //#endregion
48
+ //#region src/tuple/mapBoth.ts
49
+ /**
50
+ * Maps both elements of a homogeneous pair with the same function.
51
+ */
52
+ function mapBothImplementation(tuple, fn) {
53
+ return [fn(tuple[0]), fn(tuple[1])];
54
+ }
55
+ function mapBoth(...args) {
56
+ return require_purry.purry(mapBothImplementation, args);
57
+ }
58
+ //#endregion
59
+ //#region src/tuple/mapEach.ts
60
+ function mapEachImplementation(tuple, fnA, fnB) {
61
+ return [fnA(tuple[0]), fnB(tuple[1])];
62
+ }
63
+ function mapEach(...args) {
64
+ return require_purry.purry(mapEachImplementation, args);
65
+ }
66
+ //#endregion
67
+ //#region src/tuple/mapFirst.ts
68
+ /**
69
+ * Maps the first element of a pair; leaves the second unchanged.
70
+ */
71
+ function mapFirstImplementation(tuple, fn) {
72
+ return [fn(tuple[0]), tuple[1]];
73
+ }
74
+ function mapFirst(...args) {
75
+ return require_purry.purry(mapFirstImplementation, args);
76
+ }
77
+ //#endregion
78
+ //#region src/tuple/mapSecond.ts
79
+ function mapSecondImplementation(tuple, fn) {
80
+ return [tuple[0], fn(tuple[1])];
81
+ }
82
+ function mapSecond(...args) {
83
+ return require_purry.purry(mapSecondImplementation, args);
84
+ }
85
+ //#endregion
86
+ //#region src/tuple/second.ts
87
+ /**
88
+ * Returns the second element of a tuple with at least two elements.
89
+ *
90
+ * @param tuple - A tuple with at least two elements.
91
+ * @returns The element at index `1`.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * second([1, 2]); // 2
96
+ * ```
97
+ *
98
+ * @throws {RangeError} When the tuple has fewer than two elements.
99
+ */
100
+ function second(tuple) {
101
+ if (tuple.length < 2) throw new RangeError("Tuple.second() :: received a tuple with less than 2 elements");
102
+ return tuple[1];
103
+ }
104
+ //#endregion
105
+ //#region src/tuple/swap.ts
106
+ /**
107
+ * Swaps the two elements of a pair.
108
+ *
109
+ * @param data - A two-element tuple.
110
+ * @returns The tuple with elements reversed.
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * swap([1, 'a']); // ['a', 1]
115
+ * ```
116
+ */
117
+ function swap(data) {
118
+ return [data[1], data[0]];
119
+ }
120
+ //#endregion
121
+ exports.at = at;
122
+ exports.fanOut = fanOut;
123
+ exports.fanOutImplementation = fanOutImplementation;
124
+ exports.first = first;
125
+ exports.insert = insert;
126
+ exports.mapBoth = mapBoth;
127
+ exports.mapBothImplementation = mapBothImplementation;
128
+ exports.mapEach = mapEach;
129
+ exports.mapFirst = mapFirst;
130
+ exports.mapFirstImplementation = mapFirstImplementation;
131
+ exports.mapSecond = mapSecond;
132
+ exports.second = second;
133
+ exports.swap = swap;
134
+
135
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["purry","purry","purry","purry","purry","purry","purry"],"sources":["../../src/tuple/at.ts","../../src/tuple/fanOut.ts","../../src/tuple/first.ts","../../src/tuple/insert.ts","../../src/tuple/mapBoth.ts","../../src/tuple/mapEach.ts","../../src/tuple/mapFirst.ts","../../src/tuple/mapSecond.ts","../../src/tuple/second.ts","../../src/tuple/swap.ts"],"sourcesContent":["import { purry } from '../function/purry';\n\nfunction at2Implementation<T>(tuple: T[], index: number): T {\n if (index < 0) {\n throw new RangeError(`Tuple.at() :: ${index} must be a positive integer`);\n }\n if (index >= tuple.length) {\n throw new RangeError(`Tuple.at() :: ${index} is out of bounds`);\n }\n\n return tuple[index]!;\n}\n\n/**\n * Get an element from a tuple by index.\n *\n * @param tuple - The tuple to get the element from.\n * @param index - The index of the element to get.\n *\n * @example\n * ```ts\n * at(0, [1, 2, 3]) // 1\n * at(1, [1, 2, 3]) // 2\n * at([1, 2, 3], 0) // 1\n * at([1, 2, 3], 1) // 2\n * ```\n *\n * @throws {RangeError}\n */\nexport function at<T>(index: 0): (tuple: [T, ...unknown[]]) => T;\nexport function at<T>(index: 1): (tuple: [unknown, T, ...unknown[]]) => T;\nexport function at<T>(index: 2): (tuple: [unknown, unknown, T, ...unknown[]]) => T;\nexport function at<T>(index: 3): (tuple: [unknown, unknown, unknown, T, ...unknown[]]) => T;\nexport function at<T>(index: 4): (tuple: [unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;\nexport function at<T>(index: 5): (tuple: [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;\nexport function at<T>(index: 6): (tuple: [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;\nexport function at<T>(tuple: [T, ...unknown[]], index: 0): T;\nexport function at<T>(tuple: [unknown, T, ...unknown[]], index: 1): T;\nexport function at<T>(tuple: [unknown, unknown, T, ...unknown[]], index: 2): T;\nexport function at<T>(tuple: [unknown, unknown, unknown, T, ...unknown[]], index: 3): T;\nexport function at<T>(tuple: [unknown, unknown, unknown, unknown, T, ...unknown[]], index: 4): T;\nexport function at<T>(tuple: [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]], index: 5): T;\nexport function at<T>(tuple: [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]], index: 6): T;\nexport function at(...args: readonly unknown[]): unknown {\n return purry(at2Implementation, args);\n}\n","import { purry } from '../function/purry';\n\nexport function fanOutImplementation<A, C, D>(value: A, fn1: (value: A) => C, fn2: (value: A) => D): [C, D] {\n return [fn1(value), fn2(value)];\n}\n\n/**\n * Takes a value and two functions and returns a tuple of the results of the functions.\n *\n * @public\n * @category Tuple\n * @param value - The value to apply the functions to.\n * @param fn1 - The first function to apply to the value.\n * @param fn2 - The second function to apply to the value.\n *\n * @example\n * ```ts\n * fanOut((x) => x * 2, (x) => x + 1, 2); // [4, 3]\n * ```\n */\nexport function fanOut<A, C, D>(fn1: (value: A) => C, fn2: (value: A) => D): (value: A) => [C, D];\nexport function fanOut<A, C, D>(value: A, fn1: (value: A) => C, fn2: (value: A) => D): [C, D];\nexport function fanOut(...args: readonly unknown[]): unknown {\n return purry(fanOutImplementation, args);\n}\n","/**\n * Returns the first element of a tuple with at least one element.\n *\n * @param tuple - A non-empty tuple.\n * @returns The element at index `0`.\n *\n * @example\n * ```ts\n * first([1, 2]); // 1\n * ```\n *\n * @throws {RangeError} When the tuple has fewer than one element.\n */\nexport function first<T>(tuple: [T, ...unknown[]]): T {\n if (tuple.length < 1) {\n throw new RangeError('Tuple.first() :: received a tuple with less than 1 element');\n }\n return tuple[0];\n}\n","/* eslint-disable @typescript-eslint/unified-signatures */\nimport { purry } from '../function/purry';\n\nfunction updateImplementation<T>(tuple: T[], index: number, value: T): T[] {\n return tuple.with(index, value);\n}\n\n/**\n * Returns a new tuple with the element at `index` replaced by `value`.\n *\n * @param index - Zero-based index of the element to replace.\n * @param value - Replacement value.\n * @param tuple - The source tuple.\n *\n * @example\n * ```ts\n * insert([1, 2, 3], 1, 99); // [1, 99, 3]\n * insert(1, 99)([1, 2, 3]); // [1, 99, 3]\n * ```\n *\n * @throws {RangeError} When `index` is negative or out of bounds (from the underlying `with` call).\n */\nexport function insert<T>(index: 0, value: T): <U extends readonly [T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(index: 1, value: T): <U extends readonly [unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(index: 2, value: T): <U extends readonly [unknown, unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(\n index: 3,\n value: T,\n): <U extends readonly [unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(\n index: 4,\n value: T,\n): <U extends readonly [unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(\n index: 5,\n value: T,\n): <U extends readonly [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(\n index: 6,\n value: T,\n): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(\n index: 7,\n value: T,\n): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;\nexport function insert<T>(\n index: 8,\n value: T,\n): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(\n tuple: U,\n) => U;\nexport function insert<T, U extends readonly [T, ...unknown[]]>(tuple: U, index: 0, value: T): U;\nexport function insert<T, U extends readonly [unknown, T, ...unknown[]]>(tuple: U, index: 1, value: T): U;\nexport function insert<T, U extends readonly [unknown, unknown, T, ...unknown[]]>(tuple: U, index: 2, value: T): U;\nexport function insert<T, U extends readonly [unknown, unknown, unknown, T, ...unknown[]]>(\n tuple: U,\n index: 3,\n value: T,\n): U;\nexport function insert<T, U extends readonly [unknown, unknown, unknown, unknown, T, ...unknown[]]>(\n tuple: U,\n index: 4,\n value: T,\n): U;\nexport function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(\n tuple: U,\n index: 5,\n value: T,\n): U;\nexport function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(\n tuple: U,\n index: 6,\n value: T,\n): U;\nexport function insert<\n T,\n U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]],\n>(tuple: U, index: 7, value: T): U;\nexport function insert<\n T,\n U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]],\n>(tuple: U, index: 8, value: T): U;\nexport function insert(...args: readonly unknown[]): unknown {\n return purry(updateImplementation, args);\n}\n","import { purry } from '../function/purry';\n\n/**\n * Maps both elements of a homogeneous pair with the same function.\n */\nexport function mapBothImplementation<T, U>(tuple: [T, T], fn: (value: T) => U): [U, U] {\n return [fn(tuple[0]), fn(tuple[1])];\n}\n\n/**\n * Maps both elements of a homogeneous pair with the same function.\n *\n * @param fn - Function applied to each element\n * @param tuple - A two-element tuple of the same type\n *\n * @example\n * ```ts\n * mapBoth([1, 2], (n) => n * 2); // [2, 4]\n * mapBoth((n) => n * 2)([1, 2]); // [2, 4]\n * ```\n */\nexport function mapBoth<T, U>(fn: (value: T) => U): (tuple: [T, T]) => [U, U];\nexport function mapBoth<T, U>(tuple: [T, T], fn: (value: T) => U): [U, U];\nexport function mapBoth(...args: readonly unknown[]): unknown {\n return purry(mapBothImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapEachImplementation<A, B, X, Y>(tuple: [A, B], fnA: (value: A) => X, fnB: (value: B) => Y): [X, Y] {\n return [fnA(tuple[0]), fnB(tuple[1])];\n}\n\n/**\n * Maps the first and second elements of a pair with two functions.\n *\n * @param fnA - Function applied to the first element\n * @param fnB - Function applied to the second element\n * @param tuple - A two-element tuple\n *\n * @example\n * ```ts\n * mapEach([1, 'a'], String, (s) => s.toUpperCase()); // ['1', 'A']\n * mapEach(String, (s) => s.toUpperCase())([1, 'a']); // ['1', 'A']\n * ```\n */\nexport function mapEach<A, B, X, Y>(fnA: (value: A) => X, fnB: (value: B) => Y): (tuple: [A, B]) => [X, Y];\nexport function mapEach<A, B, X, Y>(tuple: [A, B], fnA: (value: A) => X, fnB: (value: B) => Y): [X, Y];\nexport function mapEach(...args: readonly unknown[]): unknown {\n return purry(mapEachImplementation, args);\n}\n","import { purry } from '../function/purry';\n\n/**\n * Maps the first element of a pair; leaves the second unchanged.\n */\nexport function mapFirstImplementation<A, B, X>(tuple: [A, B], fn: (value: A) => X): [X, B] {\n return [fn(tuple[0]), tuple[1]];\n}\n\n/**\n * Maps the first element of a pair; leaves the second unchanged.\n *\n * @param fn - Function applied to the first element\n * @param tuple - A two-element tuple\n *\n * @example\n * ```ts\n * mapFirst([1, 'a'], (n) => n + 1); // [2, 'a']\n * mapFirst((n) => n + 1)([1, 'a']); // [2, 'a']\n * ```\n */\nexport function mapFirst<A, B, X>(fn: (value: A) => X): (tuple: [A, B]) => [X, B];\nexport function mapFirst<A, B, X>(tuple: [A, B], fn: (value: A) => X): [X, B];\nexport function mapFirst(...args: readonly unknown[]): unknown {\n return purry(mapFirstImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapSecondImplementation<A, B, Y>(tuple: [A, B], fn: (value: B) => Y): [A, Y] {\n return [tuple[0], fn(tuple[1])];\n}\n\n/**\n * Maps the second element of a pair; leaves the first unchanged.\n *\n * @param fn - Function applied to the second element\n * @param tuple - A two-element tuple (data-first overload).\n *\n * @example\n * ```ts\n * mapSecond([1, 'a'], (s) => s.toUpperCase()); // [1, 'A']\n * mapSecond((s) => s.toUpperCase())([1, 'a']); // [1, 'A']\n * ```\n */\nexport function mapSecond<A, B, Y>(fn: (value: B) => Y): (tuple: [A, B]) => [A, Y];\nexport function mapSecond<A, B, Y>(tuple: [A, B], fn: (value: B) => Y): [A, Y];\nexport function mapSecond(...args: readonly unknown[]): unknown {\n return purry(mapSecondImplementation, args);\n}\n","/**\n * Returns the second element of a tuple with at least two elements.\n *\n * @param tuple - A tuple with at least two elements.\n * @returns The element at index `1`.\n *\n * @example\n * ```ts\n * second([1, 2]); // 2\n * ```\n *\n * @throws {RangeError} When the tuple has fewer than two elements.\n */\nexport function second<T>(tuple: [unknown, T, ...unknown[]]): T {\n if (tuple.length < 2) {\n throw new RangeError('Tuple.second() :: received a tuple with less than 2 elements');\n }\n return tuple[1];\n}\n","/**\n * Swaps the two elements of a pair.\n *\n * @param data - A two-element tuple.\n * @returns The tuple with elements reversed.\n *\n * @example\n * ```ts\n * swap([1, 'a']); // ['a', 1]\n * ```\n */\nexport function swap<A, B>(data: [A, B]): [B, A] {\n return [data[1], data[0]];\n}\n"],"mappings":";;;AAEA,SAAS,kBAAqB,OAAY,OAAkB;CAC1D,IAAI,QAAQ,GACV,MAAM,IAAI,WAAW,iBAAiB,MAAM,4BAA4B;CAE1E,IAAI,SAAS,MAAM,QACjB,MAAM,IAAI,WAAW,iBAAiB,MAAM,kBAAkB;CAGhE,OAAO,MAAM;AACf;AAgCA,SAAgB,GAAG,GAAG,MAAmC;CACvD,OAAOA,cAAAA,MAAM,mBAAmB,IAAI;AACtC;;;AC3CA,SAAgB,qBAA8B,OAAU,KAAsB,KAA8B;CAC1G,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC;AAChC;AAkBA,SAAgB,OAAO,GAAG,MAAmC;CAC3D,OAAOC,cAAAA,MAAM,sBAAsB,IAAI;AACzC;;;;;;;;;;;;;;;;ACXA,SAAgB,MAAS,OAA6B;CACpD,IAAI,MAAM,SAAS,GACjB,MAAM,IAAI,WAAW,4DAA4D;CAEnF,OAAO,MAAM;AACf;;;ACfA,SAAS,qBAAwB,OAAY,OAAe,OAAe;CACzE,OAAO,MAAM,KAAK,OAAO,KAAK;AAChC;AA6EA,SAAgB,OAAO,GAAG,MAAmC;CAC3D,OAAOC,cAAAA,MAAM,sBAAsB,IAAI;AACzC;;;;;;AC/EA,SAAgB,sBAA4B,OAAe,IAA6B;CACtF,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC;AACpC;AAgBA,SAAgB,QAAQ,GAAG,MAAmC;CAC5D,OAAOC,cAAAA,MAAM,uBAAuB,IAAI;AAC1C;;;ACvBA,SAAS,sBAAkC,OAAe,KAAsB,KAA8B;CAC5G,OAAO,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC;AACtC;AAiBA,SAAgB,QAAQ,GAAG,MAAmC;CAC5D,OAAOC,cAAAA,MAAM,uBAAuB,IAAI;AAC1C;;;;;;AClBA,SAAgB,uBAAgC,OAAe,IAA6B;CAC1F,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;AAChC;AAgBA,SAAgB,SAAS,GAAG,MAAmC;CAC7D,OAAOC,cAAAA,MAAM,wBAAwB,IAAI;AAC3C;;;ACvBA,SAAS,wBAAiC,OAAe,IAA6B;CACpF,OAAO,CAAC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;AAChC;AAgBA,SAAgB,UAAU,GAAG,MAAmC;CAC9D,OAAOC,cAAAA,MAAM,yBAAyB,IAAI;AAC5C;;;;;;;;;;;;;;;;ACTA,SAAgB,OAAU,OAAsC;CAC9D,IAAI,MAAM,SAAS,GACjB,MAAM,IAAI,WAAW,8DAA8D;CAErF,OAAO,MAAM;AACf;;;;;;;;;;;;;;ACPA,SAAgB,KAAW,MAAsB;CAC/C,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE;AAC1B"}
@@ -0,0 +1,207 @@
1
+ //#region src/tuple/at.d.ts
2
+ /**
3
+ * Get an element from a tuple by index.
4
+ *
5
+ * @param tuple - The tuple to get the element from.
6
+ * @param index - The index of the element to get.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * at(0, [1, 2, 3]) // 1
11
+ * at(1, [1, 2, 3]) // 2
12
+ * at([1, 2, 3], 0) // 1
13
+ * at([1, 2, 3], 1) // 2
14
+ * ```
15
+ *
16
+ * @throws {RangeError}
17
+ */
18
+ declare function at<T>(index: 0): (tuple: [T, ...unknown[]]) => T;
19
+ declare function at<T>(index: 1): (tuple: [unknown, T, ...unknown[]]) => T;
20
+ declare function at<T>(index: 2): (tuple: [unknown, unknown, T, ...unknown[]]) => T;
21
+ declare function at<T>(index: 3): (tuple: [unknown, unknown, unknown, T, ...unknown[]]) => T;
22
+ declare function at<T>(index: 4): (tuple: [unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;
23
+ declare function at<T>(index: 5): (tuple: [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;
24
+ declare function at<T>(index: 6): (tuple: [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;
25
+ declare function at<T>(tuple: [T, ...unknown[]], index: 0): T;
26
+ declare function at<T>(tuple: [unknown, T, ...unknown[]], index: 1): T;
27
+ declare function at<T>(tuple: [unknown, unknown, T, ...unknown[]], index: 2): T;
28
+ declare function at<T>(tuple: [unknown, unknown, unknown, T, ...unknown[]], index: 3): T;
29
+ declare function at<T>(tuple: [unknown, unknown, unknown, unknown, T, ...unknown[]], index: 4): T;
30
+ declare function at<T>(tuple: [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]], index: 5): T;
31
+ declare function at<T>(tuple: [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]], index: 6): T;
32
+ //#endregion
33
+ //#region src/tuple/fanOut.d.ts
34
+ declare function fanOutImplementation<A, C, D>(value: A, fn1: (value: A) => C, fn2: (value: A) => D): [C, D];
35
+ /**
36
+ * Takes a value and two functions and returns a tuple of the results of the functions.
37
+ *
38
+ * @public
39
+ * @category Tuple
40
+ * @param value - The value to apply the functions to.
41
+ * @param fn1 - The first function to apply to the value.
42
+ * @param fn2 - The second function to apply to the value.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * fanOut((x) => x * 2, (x) => x + 1, 2); // [4, 3]
47
+ * ```
48
+ */
49
+ declare function fanOut<A, C, D>(fn1: (value: A) => C, fn2: (value: A) => D): (value: A) => [C, D];
50
+ declare function fanOut<A, C, D>(value: A, fn1: (value: A) => C, fn2: (value: A) => D): [C, D];
51
+ //#endregion
52
+ //#region src/tuple/first.d.ts
53
+ /**
54
+ * Returns the first element of a tuple with at least one element.
55
+ *
56
+ * @param tuple - A non-empty tuple.
57
+ * @returns The element at index `0`.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * first([1, 2]); // 1
62
+ * ```
63
+ *
64
+ * @throws {RangeError} When the tuple has fewer than one element.
65
+ */
66
+ declare function first<T>(tuple: [T, ...unknown[]]): T;
67
+ //#endregion
68
+ //#region src/tuple/insert.d.ts
69
+ /**
70
+ * Returns a new tuple with the element at `index` replaced by `value`.
71
+ *
72
+ * @param index - Zero-based index of the element to replace.
73
+ * @param value - Replacement value.
74
+ * @param tuple - The source tuple.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * insert([1, 2, 3], 1, 99); // [1, 99, 3]
79
+ * insert(1, 99)([1, 2, 3]); // [1, 99, 3]
80
+ * ```
81
+ *
82
+ * @throws {RangeError} When `index` is negative or out of bounds (from the underlying `with` call).
83
+ */
84
+ declare function insert<T>(index: 0, value: T): <U extends readonly [T, ...unknown[]]>(tuple: U) => U;
85
+ declare function insert<T>(index: 1, value: T): <U extends readonly [unknown, T, ...unknown[]]>(tuple: U) => U;
86
+ declare function insert<T>(index: 2, value: T): <U extends readonly [unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
87
+ declare function insert<T>(index: 3, value: T): <U extends readonly [unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
88
+ declare function insert<T>(index: 4, value: T): <U extends readonly [unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
89
+ declare function insert<T>(index: 5, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
90
+ declare function insert<T>(index: 6, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
91
+ declare function insert<T>(index: 7, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
92
+ declare function insert<T>(index: 8, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
93
+ declare function insert<T, U extends readonly [T, ...unknown[]]>(tuple: U, index: 0, value: T): U;
94
+ declare function insert<T, U extends readonly [unknown, T, ...unknown[]]>(tuple: U, index: 1, value: T): U;
95
+ declare function insert<T, U extends readonly [unknown, unknown, T, ...unknown[]]>(tuple: U, index: 2, value: T): U;
96
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 3, value: T): U;
97
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 4, value: T): U;
98
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 5, value: T): U;
99
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 6, value: T): U;
100
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 7, value: T): U;
101
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 8, value: T): U;
102
+ //#endregion
103
+ //#region src/tuple/mapBoth.d.ts
104
+ /**
105
+ * Maps both elements of a homogeneous pair with the same function.
106
+ */
107
+ declare function mapBothImplementation<T, U>(tuple: [T, T], fn: (value: T) => U): [U, U];
108
+ /**
109
+ * Maps both elements of a homogeneous pair with the same function.
110
+ *
111
+ * @param fn - Function applied to each element
112
+ * @param tuple - A two-element tuple of the same type
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * mapBoth([1, 2], (n) => n * 2); // [2, 4]
117
+ * mapBoth((n) => n * 2)([1, 2]); // [2, 4]
118
+ * ```
119
+ */
120
+ declare function mapBoth<T, U>(fn: (value: T) => U): (tuple: [T, T]) => [U, U];
121
+ declare function mapBoth<T, U>(tuple: [T, T], fn: (value: T) => U): [U, U];
122
+ //#endregion
123
+ //#region src/tuple/mapEach.d.ts
124
+ /**
125
+ * Maps the first and second elements of a pair with two functions.
126
+ *
127
+ * @param fnA - Function applied to the first element
128
+ * @param fnB - Function applied to the second element
129
+ * @param tuple - A two-element tuple
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * mapEach([1, 'a'], String, (s) => s.toUpperCase()); // ['1', 'A']
134
+ * mapEach(String, (s) => s.toUpperCase())([1, 'a']); // ['1', 'A']
135
+ * ```
136
+ */
137
+ declare function mapEach<A, B, X, Y>(fnA: (value: A) => X, fnB: (value: B) => Y): (tuple: [A, B]) => [X, Y];
138
+ declare function mapEach<A, B, X, Y>(tuple: [A, B], fnA: (value: A) => X, fnB: (value: B) => Y): [X, Y];
139
+ //#endregion
140
+ //#region src/tuple/mapFirst.d.ts
141
+ /**
142
+ * Maps the first element of a pair; leaves the second unchanged.
143
+ */
144
+ declare function mapFirstImplementation<A, B, X>(tuple: [A, B], fn: (value: A) => X): [X, B];
145
+ /**
146
+ * Maps the first element of a pair; leaves the second unchanged.
147
+ *
148
+ * @param fn - Function applied to the first element
149
+ * @param tuple - A two-element tuple
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * mapFirst([1, 'a'], (n) => n + 1); // [2, 'a']
154
+ * mapFirst((n) => n + 1)([1, 'a']); // [2, 'a']
155
+ * ```
156
+ */
157
+ declare function mapFirst<A, B, X>(fn: (value: A) => X): (tuple: [A, B]) => [X, B];
158
+ declare function mapFirst<A, B, X>(tuple: [A, B], fn: (value: A) => X): [X, B];
159
+ //#endregion
160
+ //#region src/tuple/mapSecond.d.ts
161
+ /**
162
+ * Maps the second element of a pair; leaves the first unchanged.
163
+ *
164
+ * @param fn - Function applied to the second element
165
+ * @param tuple - A two-element tuple (data-first overload).
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * mapSecond([1, 'a'], (s) => s.toUpperCase()); // [1, 'A']
170
+ * mapSecond((s) => s.toUpperCase())([1, 'a']); // [1, 'A']
171
+ * ```
172
+ */
173
+ declare function mapSecond<A, B, Y>(fn: (value: B) => Y): (tuple: [A, B]) => [A, Y];
174
+ declare function mapSecond<A, B, Y>(tuple: [A, B], fn: (value: B) => Y): [A, Y];
175
+ //#endregion
176
+ //#region src/tuple/second.d.ts
177
+ /**
178
+ * Returns the second element of a tuple with at least two elements.
179
+ *
180
+ * @param tuple - A tuple with at least two elements.
181
+ * @returns The element at index `1`.
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * second([1, 2]); // 2
186
+ * ```
187
+ *
188
+ * @throws {RangeError} When the tuple has fewer than two elements.
189
+ */
190
+ declare function second<T>(tuple: [unknown, T, ...unknown[]]): T;
191
+ //#endregion
192
+ //#region src/tuple/swap.d.ts
193
+ /**
194
+ * Swaps the two elements of a pair.
195
+ *
196
+ * @param data - A two-element tuple.
197
+ * @returns The tuple with elements reversed.
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * swap([1, 'a']); // ['a', 1]
202
+ * ```
203
+ */
204
+ declare function swap<A, B>(data: [A, B]): [B, A];
205
+ //#endregion
206
+ export { at, fanOut, fanOutImplementation, first, insert, mapBoth, mapBothImplementation, mapEach, mapFirst, mapFirstImplementation, mapSecond, second, swap };
207
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/tuple/at.ts","../../src/tuple/fanOut.ts","../../src/tuple/first.ts","../../src/tuple/insert.ts","../../src/tuple/mapBoth.ts","../../src/tuple/mapEach.ts","../../src/tuple/mapFirst.ts","../../src/tuple/mapSecond.ts","../../src/tuple/second.ts","../../src/tuple/swap.ts"],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ //#region src/tuple/at.d.ts
2
+ /**
3
+ * Get an element from a tuple by index.
4
+ *
5
+ * @param tuple - The tuple to get the element from.
6
+ * @param index - The index of the element to get.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * at(0, [1, 2, 3]) // 1
11
+ * at(1, [1, 2, 3]) // 2
12
+ * at([1, 2, 3], 0) // 1
13
+ * at([1, 2, 3], 1) // 2
14
+ * ```
15
+ *
16
+ * @throws {RangeError}
17
+ */
18
+ declare function at<T>(index: 0): (tuple: [T, ...unknown[]]) => T;
19
+ declare function at<T>(index: 1): (tuple: [unknown, T, ...unknown[]]) => T;
20
+ declare function at<T>(index: 2): (tuple: [unknown, unknown, T, ...unknown[]]) => T;
21
+ declare function at<T>(index: 3): (tuple: [unknown, unknown, unknown, T, ...unknown[]]) => T;
22
+ declare function at<T>(index: 4): (tuple: [unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;
23
+ declare function at<T>(index: 5): (tuple: [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;
24
+ declare function at<T>(index: 6): (tuple: [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]) => T;
25
+ declare function at<T>(tuple: [T, ...unknown[]], index: 0): T;
26
+ declare function at<T>(tuple: [unknown, T, ...unknown[]], index: 1): T;
27
+ declare function at<T>(tuple: [unknown, unknown, T, ...unknown[]], index: 2): T;
28
+ declare function at<T>(tuple: [unknown, unknown, unknown, T, ...unknown[]], index: 3): T;
29
+ declare function at<T>(tuple: [unknown, unknown, unknown, unknown, T, ...unknown[]], index: 4): T;
30
+ declare function at<T>(tuple: [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]], index: 5): T;
31
+ declare function at<T>(tuple: [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]], index: 6): T;
32
+ //#endregion
33
+ //#region src/tuple/fanOut.d.ts
34
+ declare function fanOutImplementation<A, C, D>(value: A, fn1: (value: A) => C, fn2: (value: A) => D): [C, D];
35
+ /**
36
+ * Takes a value and two functions and returns a tuple of the results of the functions.
37
+ *
38
+ * @public
39
+ * @category Tuple
40
+ * @param value - The value to apply the functions to.
41
+ * @param fn1 - The first function to apply to the value.
42
+ * @param fn2 - The second function to apply to the value.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * fanOut((x) => x * 2, (x) => x + 1, 2); // [4, 3]
47
+ * ```
48
+ */
49
+ declare function fanOut<A, C, D>(fn1: (value: A) => C, fn2: (value: A) => D): (value: A) => [C, D];
50
+ declare function fanOut<A, C, D>(value: A, fn1: (value: A) => C, fn2: (value: A) => D): [C, D];
51
+ //#endregion
52
+ //#region src/tuple/first.d.ts
53
+ /**
54
+ * Returns the first element of a tuple with at least one element.
55
+ *
56
+ * @param tuple - A non-empty tuple.
57
+ * @returns The element at index `0`.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * first([1, 2]); // 1
62
+ * ```
63
+ *
64
+ * @throws {RangeError} When the tuple has fewer than one element.
65
+ */
66
+ declare function first<T>(tuple: [T, ...unknown[]]): T;
67
+ //#endregion
68
+ //#region src/tuple/insert.d.ts
69
+ /**
70
+ * Returns a new tuple with the element at `index` replaced by `value`.
71
+ *
72
+ * @param index - Zero-based index of the element to replace.
73
+ * @param value - Replacement value.
74
+ * @param tuple - The source tuple.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * insert([1, 2, 3], 1, 99); // [1, 99, 3]
79
+ * insert(1, 99)([1, 2, 3]); // [1, 99, 3]
80
+ * ```
81
+ *
82
+ * @throws {RangeError} When `index` is negative or out of bounds (from the underlying `with` call).
83
+ */
84
+ declare function insert<T>(index: 0, value: T): <U extends readonly [T, ...unknown[]]>(tuple: U) => U;
85
+ declare function insert<T>(index: 1, value: T): <U extends readonly [unknown, T, ...unknown[]]>(tuple: U) => U;
86
+ declare function insert<T>(index: 2, value: T): <U extends readonly [unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
87
+ declare function insert<T>(index: 3, value: T): <U extends readonly [unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
88
+ declare function insert<T>(index: 4, value: T): <U extends readonly [unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
89
+ declare function insert<T>(index: 5, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
90
+ declare function insert<T>(index: 6, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
91
+ declare function insert<T>(index: 7, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
92
+ declare function insert<T>(index: 8, value: T): <U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U) => U;
93
+ declare function insert<T, U extends readonly [T, ...unknown[]]>(tuple: U, index: 0, value: T): U;
94
+ declare function insert<T, U extends readonly [unknown, T, ...unknown[]]>(tuple: U, index: 1, value: T): U;
95
+ declare function insert<T, U extends readonly [unknown, unknown, T, ...unknown[]]>(tuple: U, index: 2, value: T): U;
96
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 3, value: T): U;
97
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 4, value: T): U;
98
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 5, value: T): U;
99
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 6, value: T): U;
100
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 7, value: T): U;
101
+ declare function insert<T, U extends readonly [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, T, ...unknown[]]>(tuple: U, index: 8, value: T): U;
102
+ //#endregion
103
+ //#region src/tuple/mapBoth.d.ts
104
+ /**
105
+ * Maps both elements of a homogeneous pair with the same function.
106
+ */
107
+ declare function mapBothImplementation<T, U>(tuple: [T, T], fn: (value: T) => U): [U, U];
108
+ /**
109
+ * Maps both elements of a homogeneous pair with the same function.
110
+ *
111
+ * @param fn - Function applied to each element
112
+ * @param tuple - A two-element tuple of the same type
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * mapBoth([1, 2], (n) => n * 2); // [2, 4]
117
+ * mapBoth((n) => n * 2)([1, 2]); // [2, 4]
118
+ * ```
119
+ */
120
+ declare function mapBoth<T, U>(fn: (value: T) => U): (tuple: [T, T]) => [U, U];
121
+ declare function mapBoth<T, U>(tuple: [T, T], fn: (value: T) => U): [U, U];
122
+ //#endregion
123
+ //#region src/tuple/mapEach.d.ts
124
+ /**
125
+ * Maps the first and second elements of a pair with two functions.
126
+ *
127
+ * @param fnA - Function applied to the first element
128
+ * @param fnB - Function applied to the second element
129
+ * @param tuple - A two-element tuple
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * mapEach([1, 'a'], String, (s) => s.toUpperCase()); // ['1', 'A']
134
+ * mapEach(String, (s) => s.toUpperCase())([1, 'a']); // ['1', 'A']
135
+ * ```
136
+ */
137
+ declare function mapEach<A, B, X, Y>(fnA: (value: A) => X, fnB: (value: B) => Y): (tuple: [A, B]) => [X, Y];
138
+ declare function mapEach<A, B, X, Y>(tuple: [A, B], fnA: (value: A) => X, fnB: (value: B) => Y): [X, Y];
139
+ //#endregion
140
+ //#region src/tuple/mapFirst.d.ts
141
+ /**
142
+ * Maps the first element of a pair; leaves the second unchanged.
143
+ */
144
+ declare function mapFirstImplementation<A, B, X>(tuple: [A, B], fn: (value: A) => X): [X, B];
145
+ /**
146
+ * Maps the first element of a pair; leaves the second unchanged.
147
+ *
148
+ * @param fn - Function applied to the first element
149
+ * @param tuple - A two-element tuple
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * mapFirst([1, 'a'], (n) => n + 1); // [2, 'a']
154
+ * mapFirst((n) => n + 1)([1, 'a']); // [2, 'a']
155
+ * ```
156
+ */
157
+ declare function mapFirst<A, B, X>(fn: (value: A) => X): (tuple: [A, B]) => [X, B];
158
+ declare function mapFirst<A, B, X>(tuple: [A, B], fn: (value: A) => X): [X, B];
159
+ //#endregion
160
+ //#region src/tuple/mapSecond.d.ts
161
+ /**
162
+ * Maps the second element of a pair; leaves the first unchanged.
163
+ *
164
+ * @param fn - Function applied to the second element
165
+ * @param tuple - A two-element tuple (data-first overload).
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * mapSecond([1, 'a'], (s) => s.toUpperCase()); // [1, 'A']
170
+ * mapSecond((s) => s.toUpperCase())([1, 'a']); // [1, 'A']
171
+ * ```
172
+ */
173
+ declare function mapSecond<A, B, Y>(fn: (value: B) => Y): (tuple: [A, B]) => [A, Y];
174
+ declare function mapSecond<A, B, Y>(tuple: [A, B], fn: (value: B) => Y): [A, Y];
175
+ //#endregion
176
+ //#region src/tuple/second.d.ts
177
+ /**
178
+ * Returns the second element of a tuple with at least two elements.
179
+ *
180
+ * @param tuple - A tuple with at least two elements.
181
+ * @returns The element at index `1`.
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * second([1, 2]); // 2
186
+ * ```
187
+ *
188
+ * @throws {RangeError} When the tuple has fewer than two elements.
189
+ */
190
+ declare function second<T>(tuple: [unknown, T, ...unknown[]]): T;
191
+ //#endregion
192
+ //#region src/tuple/swap.d.ts
193
+ /**
194
+ * Swaps the two elements of a pair.
195
+ *
196
+ * @param data - A two-element tuple.
197
+ * @returns The tuple with elements reversed.
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * swap([1, 'a']); // ['a', 1]
202
+ * ```
203
+ */
204
+ declare function swap<A, B>(data: [A, B]): [B, A];
205
+ //#endregion
206
+ export { at, fanOut, fanOutImplementation, first, insert, mapBoth, mapBothImplementation, mapEach, mapFirst, mapFirstImplementation, mapSecond, second, swap };
207
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/tuple/at.ts","../../src/tuple/fanOut.ts","../../src/tuple/first.ts","../../src/tuple/insert.ts","../../src/tuple/mapBoth.ts","../../src/tuple/mapEach.ts","../../src/tuple/mapFirst.ts","../../src/tuple/mapSecond.ts","../../src/tuple/second.ts","../../src/tuple/swap.ts"],"mappings":"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"}