@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,186 @@
1
+ const require_purry = require("./purry-B2_0DGLV.cjs");
2
+ //#region src/function/always.ts
3
+ function always(value) {
4
+ return () => value;
5
+ }
6
+ //#endregion
7
+ //#region src/function/internal/_compose.ts
8
+ function composeImplementation(input, ...pipeline) {
9
+ const len = pipeline.length;
10
+ let output = input;
11
+ for (let i = len - 1; i >= 0; i -= 1) {
12
+ output = pipeline[i](output);
13
+ if (Error.isError(output)) return output;
14
+ }
15
+ return output;
16
+ }
17
+ //#endregion
18
+ //#region src/function/compose.ts
19
+ function compose(input, ...pipeline) {
20
+ return composeImplementation(input, ...pipeline);
21
+ }
22
+ //#endregion
23
+ //#region src/function/composed.ts
24
+ function composed(...pipeline) {
25
+ return (input) => composeImplementation(input, ...pipeline);
26
+ }
27
+ //#endregion
28
+ //#region src/function/memoizeOne.ts
29
+ function equalsByRef(first, second) {
30
+ if (first === second) return true;
31
+ if (Number.isNaN(first) && Number.isNaN(second)) return true;
32
+ return false;
33
+ }
34
+ function areInputsEqual(newInputs, lastInputs) {
35
+ if (newInputs.length !== lastInputs.length) return false;
36
+ for (let i = 0; i < newInputs.length; i += 1) if (!equalsByRef(newInputs[i], lastInputs[i])) return false;
37
+ return true;
38
+ }
39
+ function memoizeOneImplementation(fn, argumentCompareFn) {
40
+ let cache = null;
41
+ function memoized(...newArgs) {
42
+ if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) return cache.lastResult;
43
+ const lastResult = fn.apply(this, newArgs);
44
+ cache = {
45
+ lastArgs: newArgs,
46
+ lastResult,
47
+ lastThis: this
48
+ };
49
+ return lastResult;
50
+ }
51
+ memoized.clear = () => {
52
+ cache = null;
53
+ };
54
+ return memoized;
55
+ }
56
+ function memoizeOne(fn) {
57
+ return memoizeOneImplementation(fn, areInputsEqual);
58
+ }
59
+ memoizeOne.with = memoizeOneImplementation;
60
+ //#endregion
61
+ //#region src/function/noop.ts
62
+ /**
63
+ * No operation function.
64
+ *
65
+ * @param args - The arguments to pass to the function.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * noop(); // void
70
+ * ```
71
+ */
72
+ function noop(...args) {}
73
+ //#endregion
74
+ //#region src/function/internal/_pipe.ts
75
+ function pipeImplementation(input, ...pipeline) {
76
+ const len = pipeline.length;
77
+ let output = input;
78
+ for (let i = 0; i < len; i += 1) {
79
+ output = pipeline[i](output);
80
+ if (Error.isError(output)) return output;
81
+ }
82
+ return output;
83
+ }
84
+ //#endregion
85
+ //#region src/function/pipe.ts
86
+ function pipe(input, ...pipeline) {
87
+ return pipeImplementation(input, ...pipeline);
88
+ }
89
+ //#endregion
90
+ //#region src/function/piped.ts
91
+ function piped(...pipeline) {
92
+ return (value) => pipeImplementation(value, ...pipeline);
93
+ }
94
+ //#endregion
95
+ //#region src/function/tap.ts
96
+ function tap(callbackFn) {
97
+ return (data) => {
98
+ callbackFn(data);
99
+ return data;
100
+ };
101
+ }
102
+ //#endregion
103
+ //#region src/function/unless.ts
104
+ function unlessImplementation(data, predicate, fn) {
105
+ return predicate(data) ? data : fn(data);
106
+ }
107
+ function unless(...args) {
108
+ return require_purry.purry(unlessImplementation, args);
109
+ }
110
+ //#endregion
111
+ //#region src/function/when.ts
112
+ function whenImplementation(data, predicate, fn) {
113
+ return predicate(data) ? fn(data) : data;
114
+ }
115
+ function when(...args) {
116
+ return require_purry.purry(whenImplementation, args);
117
+ }
118
+ //#endregion
119
+ Object.defineProperty(exports, "always", {
120
+ enumerable: true,
121
+ get: function() {
122
+ return always;
123
+ }
124
+ });
125
+ Object.defineProperty(exports, "compose", {
126
+ enumerable: true,
127
+ get: function() {
128
+ return compose;
129
+ }
130
+ });
131
+ Object.defineProperty(exports, "composed", {
132
+ enumerable: true,
133
+ get: function() {
134
+ return composed;
135
+ }
136
+ });
137
+ Object.defineProperty(exports, "memoizeOne", {
138
+ enumerable: true,
139
+ get: function() {
140
+ return memoizeOne;
141
+ }
142
+ });
143
+ Object.defineProperty(exports, "memoizeOneImplementation", {
144
+ enumerable: true,
145
+ get: function() {
146
+ return memoizeOneImplementation;
147
+ }
148
+ });
149
+ Object.defineProperty(exports, "noop", {
150
+ enumerable: true,
151
+ get: function() {
152
+ return noop;
153
+ }
154
+ });
155
+ Object.defineProperty(exports, "pipe", {
156
+ enumerable: true,
157
+ get: function() {
158
+ return pipe;
159
+ }
160
+ });
161
+ Object.defineProperty(exports, "piped", {
162
+ enumerable: true,
163
+ get: function() {
164
+ return piped;
165
+ }
166
+ });
167
+ Object.defineProperty(exports, "tap", {
168
+ enumerable: true,
169
+ get: function() {
170
+ return tap;
171
+ }
172
+ });
173
+ Object.defineProperty(exports, "unless", {
174
+ enumerable: true,
175
+ get: function() {
176
+ return unless;
177
+ }
178
+ });
179
+ Object.defineProperty(exports, "when", {
180
+ enumerable: true,
181
+ get: function() {
182
+ return when;
183
+ }
184
+ });
185
+
186
+ //# sourceMappingURL=function-CB82a2GS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-CB82a2GS.cjs","names":["purry","purry"],"sources":["../src/function/always.ts","../src/function/internal/_compose.ts","../src/function/compose.ts","../src/function/composed.ts","../src/function/memoizeOne.ts","../src/function/noop.ts","../src/function/internal/_pipe.ts","../src/function/pipe.ts","../src/function/piped.ts","../src/function/tap.ts","../src/function/unless.ts","../src/function/when.ts"],"sourcesContent":["export function always<T>(value: T): (...args: unknown[]) => T {\n return () => value;\n}\n","export function composeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = len - 1; i >= 0; i -= 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function compose<A, B>(input: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function compose<A, B, C>(input: A, fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): C | Err<A> | Err<B>;\nexport function compose<A, B, C, D>(\n input: A,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function compose<A, B, C, D, E>(\n input: A,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function compose<A, B, C, D, E, F>(\n input: A,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function compose<A, B, C, D, E, F, G>(\n input: A,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function compose<A, B, C, D, E, F, G, H>(\n input: A,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function compose<A, B, C, D, E, F, G, H, I>(\n input: A,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function compose<A, B, C, D, E, F, G, H, I, J>(\n input: A,\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function compose(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return composeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function composed<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function composed<A, B, C>(fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): (input: A) => C | Err<A> | Err<B>;\nexport function composed<A, B, C, D>(\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function composed<A, B, C, D, E>(\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function composed<A, B, C, D, E, F>(\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function composed<A, B, C, D, E, F, G>(\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function composed<A, B, C, D, E, F, G, H>(\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function composed<A, B, C, D, E, F, G, H, I>(\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function composed<A, B, C, D, E, F, G, H, I, J>(\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function composed(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (input: unknown) => composeImplementation(input, ...pipeline);\n}\n","function equalsByRef(first: unknown, second: unknown): boolean {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs: readonly unknown[], lastInputs: readonly unknown[]): boolean {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (let i = 0; i < newInputs.length; i += 1) {\n if (!equalsByRef(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport type ArgumentCompareFn<TFunc extends (...args: unknown[]) => unknown> = (\n newArgs: Parameters<TFunc>,\n lastArgs: Parameters<TFunc>,\n) => boolean;\n\nexport type MemoizedFn<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n clear: () => void;\n (this: ThisParameterType<TFunc>, ...args: Parameters<TFunc>): ReturnType<TFunc>;\n};\n\ntype Cache<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n lastArgs: Parameters<TFunc>;\n lastResult: ReturnType<TFunc>;\n lastThis: ThisParameterType<TFunc>;\n};\n\nexport function memoizeOneImplementation<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(\n fn: TFunc,\n argumentCompareFn: ArgumentCompareFn<TFunc>,\n): MemoizedFn<TFunc> {\n let cache: Cache<TFunc> | null = null;\n\n function memoized(this: ThisParameterType<TFunc>, ...newArgs: Parameters<TFunc>): ReturnType<TFunc> {\n if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n\n const lastResult = fn.apply(this, newArgs) as ReturnType<TFunc>;\n cache = {\n lastArgs: newArgs,\n lastResult,\n lastThis: this,\n };\n\n return lastResult;\n }\n\n memoized.clear = () => {\n cache = null;\n };\n\n return memoized;\n}\n\nexport function memoizeOne<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(fn: TFunc): MemoizedFn<TFunc> {\n return memoizeOneImplementation(fn, areInputsEqual);\n}\n\nmemoizeOne.with = memoizeOneImplementation;\n","/**\n * No operation function.\n *\n * @param args - The arguments to pass to the function.\n *\n * @example\n * ```ts\n * noop(); // void\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function noop(...args: unknown[]): void {\n // noop\n}\n","export function pipeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = 0; i < len; i += 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\n// TODO: add up to 9 arguments\nexport function pipe<A, B>(value: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function pipe<A, B, C>(value: A, fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): C | Err<A> | Err<B>;\nexport function pipe<A, B, C, D>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function pipe<A, B, C, D, E>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function pipe<A, B, C, D, E, F>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function pipe<A, B, C, D, E, F, G>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function pipe<A, B, C, D, E, F, G, H>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function pipe(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return pipeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\nexport function piped<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function piped<A, B, C>(fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): (input: A) => C | Err<A> | Err<B>;\nexport function piped<A, B, C, D>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function piped<A, B, C, D, E>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function piped<A, B, C, D, E, F>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function piped<A, B, C, D, E, F, G>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function piped<A, B, C, D, E, F, G, H>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function piped<A, B, C, D, E, F, G, H, I>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function piped<A, B, C, D, E, F, G, H, I, J>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function piped(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n return (value: unknown): unknown => pipeImplementation(value, ...pipeline);\n}\n","export function tap<T>(callbackFn: (data: T) => void): (data: T) => T {\n return (data: T) => {\n callbackFn(data);\n return data;\n };\n}\n","import { purry } from './purry';\n\nfunction unlessImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? data : fn(data);\n}\n\nexport function unless<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function unless<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function unless<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function unless<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function unless(...args: unknown[]): unknown {\n return purry(unlessImplementation, args);\n}\n","import { purry } from './purry';\n\nfunction whenImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? fn(data) : data;\n}\n\nexport function when<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function when<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function when<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function when<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function when(...args: unknown[]): unknown {\n return purry(whenImplementation, args);\n}\n"],"mappings":";;AAAA,SAAgB,OAAU,OAAqC;CAC7D,aAAa;AACf;;;ACFA,SAAgB,sBAAsB,OAAgB,GAAG,UAAqD;CAC5G,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG;EACpC,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC2DA,SAAgB,QAAQ,OAAgB,GAAG,UAAqD;CAE9F,OAAO,sBAAsB,OAAO,GAAG,QAAQ;AACjD;;;ACVA,SAAgB,SAAS,GAAG,UAA6E;CAEvG,QAAQ,UAAmB,sBAAsB,OAAO,GAAG,QAAQ;AACrE;;;ACjEA,SAAS,YAAY,OAAgB,QAA0B;CAC7D,IAAI,UAAU,QACZ,OAAO;CAET,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,MAAM,GAC5C,OAAO;CAGT,OAAO;AACT;AAEA,SAAS,eAAe,WAA+B,YAAyC;CAC9F,IAAI,UAAU,WAAW,WAAW,QAClC,OAAO;CAGT,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GACzC,IAAI,CAAC,YAAY,UAAU,IAAI,WAAW,EAAE,GAC1C,OAAO;CAGX,OAAO;AACT;AAkBA,SAAgB,yBACd,IACA,mBACmB;CACnB,IAAI,QAA6B;CAEjC,SAAS,SAAyC,GAAG,SAA+C;EAClG,IAAI,OAAO,aAAa,QAAQ,kBAAkB,SAAS,MAAM,QAAQ,GACvE,OAAO,MAAM;EAGf,MAAM,aAAa,GAAG,MAAM,MAAM,OAAO;EACzC,QAAQ;GACN,UAAU;GACV;GACA,UAAU;EACZ;EAEA,OAAO;CACT;CAEA,SAAS,cAAc;EACrB,QAAQ;CACV;CAEA,OAAO;AACT;AAEA,SAAgB,WAAyE,IAA8B;CACrH,OAAO,yBAAyB,IAAI,cAAc;AACpD;AAEA,WAAW,OAAO;;;;;;;;;;;;;AC7DlB,SAAgB,KAAK,GAAG,MAAuB,CAE/C;;;ACbA,SAAgB,mBAAmB,OAAgB,GAAG,UAAqD;CACzG,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;EAC/B,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC4DA,SAAgB,KAAK,OAAgB,GAAG,UAAqD;CAE3F,OAAO,mBAAmB,OAAO,GAAG,QAAQ;AAC9C;;;ACXA,SAAgB,MAAM,GAAG,UAA6E;CACpG,QAAQ,UAA4B,mBAAmB,OAAO,GAAG,QAAQ;AAC3E;;;AChEA,SAAgB,IAAO,YAA+C;CACpE,QAAQ,SAAY;EAClB,WAAW,IAAI;EACf,OAAO;CACT;AACF;;;ACHA,SAAS,qBAAwB,MAAS,WAAiC,IAAuB;CAChG,OAAO,UAAU,IAAI,IAAI,OAAO,GAAG,IAAI;AACzC;AAMA,SAAgB,OAAO,GAAG,MAA0B;CAClD,OAAOA,cAAAA,MAAM,sBAAsB,IAAI;AACzC;;;ACVA,SAAS,mBAAsB,MAAS,WAAiC,IAAuB;CAC9F,OAAO,UAAU,IAAI,IAAI,GAAG,IAAI,IAAI;AACtC;AAMA,SAAgB,KAAK,GAAG,MAA0B;CAChD,OAAOC,cAAAA,MAAM,oBAAoB,IAAI;AACvC"}
@@ -0,0 +1,121 @@
1
+ import { t as purry } from "./purry-BOWmqwDB.mjs";
2
+ //#region src/function/always.ts
3
+ function always(value) {
4
+ return () => value;
5
+ }
6
+ //#endregion
7
+ //#region src/function/internal/_compose.ts
8
+ function composeImplementation(input, ...pipeline) {
9
+ const len = pipeline.length;
10
+ let output = input;
11
+ for (let i = len - 1; i >= 0; i -= 1) {
12
+ output = pipeline[i](output);
13
+ if (Error.isError(output)) return output;
14
+ }
15
+ return output;
16
+ }
17
+ //#endregion
18
+ //#region src/function/compose.ts
19
+ function compose(input, ...pipeline) {
20
+ return composeImplementation(input, ...pipeline);
21
+ }
22
+ //#endregion
23
+ //#region src/function/composed.ts
24
+ function composed(...pipeline) {
25
+ return (input) => composeImplementation(input, ...pipeline);
26
+ }
27
+ //#endregion
28
+ //#region src/function/memoizeOne.ts
29
+ function equalsByRef(first, second) {
30
+ if (first === second) return true;
31
+ if (Number.isNaN(first) && Number.isNaN(second)) return true;
32
+ return false;
33
+ }
34
+ function areInputsEqual(newInputs, lastInputs) {
35
+ if (newInputs.length !== lastInputs.length) return false;
36
+ for (let i = 0; i < newInputs.length; i += 1) if (!equalsByRef(newInputs[i], lastInputs[i])) return false;
37
+ return true;
38
+ }
39
+ function memoizeOneImplementation(fn, argumentCompareFn) {
40
+ let cache = null;
41
+ function memoized(...newArgs) {
42
+ if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) return cache.lastResult;
43
+ const lastResult = fn.apply(this, newArgs);
44
+ cache = {
45
+ lastArgs: newArgs,
46
+ lastResult,
47
+ lastThis: this
48
+ };
49
+ return lastResult;
50
+ }
51
+ memoized.clear = () => {
52
+ cache = null;
53
+ };
54
+ return memoized;
55
+ }
56
+ function memoizeOne(fn) {
57
+ return memoizeOneImplementation(fn, areInputsEqual);
58
+ }
59
+ memoizeOne.with = memoizeOneImplementation;
60
+ //#endregion
61
+ //#region src/function/noop.ts
62
+ /**
63
+ * No operation function.
64
+ *
65
+ * @param args - The arguments to pass to the function.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * noop(); // void
70
+ * ```
71
+ */
72
+ function noop(...args) {}
73
+ //#endregion
74
+ //#region src/function/internal/_pipe.ts
75
+ function pipeImplementation(input, ...pipeline) {
76
+ const len = pipeline.length;
77
+ let output = input;
78
+ for (let i = 0; i < len; i += 1) {
79
+ output = pipeline[i](output);
80
+ if (Error.isError(output)) return output;
81
+ }
82
+ return output;
83
+ }
84
+ //#endregion
85
+ //#region src/function/pipe.ts
86
+ function pipe(input, ...pipeline) {
87
+ return pipeImplementation(input, ...pipeline);
88
+ }
89
+ //#endregion
90
+ //#region src/function/piped.ts
91
+ function piped(...pipeline) {
92
+ return (value) => pipeImplementation(value, ...pipeline);
93
+ }
94
+ //#endregion
95
+ //#region src/function/tap.ts
96
+ function tap(callbackFn) {
97
+ return (data) => {
98
+ callbackFn(data);
99
+ return data;
100
+ };
101
+ }
102
+ //#endregion
103
+ //#region src/function/unless.ts
104
+ function unlessImplementation(data, predicate, fn) {
105
+ return predicate(data) ? data : fn(data);
106
+ }
107
+ function unless(...args) {
108
+ return purry(unlessImplementation, args);
109
+ }
110
+ //#endregion
111
+ //#region src/function/when.ts
112
+ function whenImplementation(data, predicate, fn) {
113
+ return predicate(data) ? fn(data) : data;
114
+ }
115
+ function when(...args) {
116
+ return purry(whenImplementation, args);
117
+ }
118
+ //#endregion
119
+ export { pipe as a, memoizeOneImplementation as c, always as d, piped as i, composed as l, unless as n, noop as o, tap as r, memoizeOne as s, when as t, compose as u };
120
+
121
+ //# sourceMappingURL=function-DnI2v0p3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-DnI2v0p3.mjs","names":[],"sources":["../src/function/always.ts","../src/function/internal/_compose.ts","../src/function/compose.ts","../src/function/composed.ts","../src/function/memoizeOne.ts","../src/function/noop.ts","../src/function/internal/_pipe.ts","../src/function/pipe.ts","../src/function/piped.ts","../src/function/tap.ts","../src/function/unless.ts","../src/function/when.ts"],"sourcesContent":["export function always<T>(value: T): (...args: unknown[]) => T {\n return () => value;\n}\n","export function composeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = len - 1; i >= 0; i -= 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function compose<A, B>(input: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function compose<A, B, C>(input: A, fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): C | Err<A> | Err<B>;\nexport function compose<A, B, C, D>(\n input: A,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function compose<A, B, C, D, E>(\n input: A,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function compose<A, B, C, D, E, F>(\n input: A,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function compose<A, B, C, D, E, F, G>(\n input: A,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function compose<A, B, C, D, E, F, G, H>(\n input: A,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function compose<A, B, C, D, E, F, G, H, I>(\n input: A,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function compose<A, B, C, D, E, F, G, H, I, J>(\n input: A,\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function compose(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return composeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\nexport function composed<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function composed<A, B, C>(fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): (input: A) => C | Err<A> | Err<B>;\nexport function composed<A, B, C, D>(\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function composed<A, B, C, D, E>(\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function composed<A, B, C, D, E, F>(\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function composed<A, B, C, D, E, F, G>(\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function composed<A, B, C, D, E, F, G, H>(\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function composed<A, B, C, D, E, F, G, H, I>(\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function composed<A, B, C, D, E, F, G, H, I, J>(\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function composed(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (input: unknown) => composeImplementation(input, ...pipeline);\n}\n","function equalsByRef(first: unknown, second: unknown): boolean {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs: readonly unknown[], lastInputs: readonly unknown[]): boolean {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (let i = 0; i < newInputs.length; i += 1) {\n if (!equalsByRef(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport type ArgumentCompareFn<TFunc extends (...args: unknown[]) => unknown> = (\n newArgs: Parameters<TFunc>,\n lastArgs: Parameters<TFunc>,\n) => boolean;\n\nexport type MemoizedFn<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n clear: () => void;\n (this: ThisParameterType<TFunc>, ...args: Parameters<TFunc>): ReturnType<TFunc>;\n};\n\ntype Cache<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n lastArgs: Parameters<TFunc>;\n lastResult: ReturnType<TFunc>;\n lastThis: ThisParameterType<TFunc>;\n};\n\nexport function memoizeOneImplementation<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(\n fn: TFunc,\n argumentCompareFn: ArgumentCompareFn<TFunc>,\n): MemoizedFn<TFunc> {\n let cache: Cache<TFunc> | null = null;\n\n function memoized(this: ThisParameterType<TFunc>, ...newArgs: Parameters<TFunc>): ReturnType<TFunc> {\n if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n\n const lastResult = fn.apply(this, newArgs) as ReturnType<TFunc>;\n cache = {\n lastArgs: newArgs,\n lastResult,\n lastThis: this,\n };\n\n return lastResult;\n }\n\n memoized.clear = () => {\n cache = null;\n };\n\n return memoized;\n}\n\nexport function memoizeOne<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(fn: TFunc): MemoizedFn<TFunc> {\n return memoizeOneImplementation(fn, areInputsEqual);\n}\n\nmemoizeOne.with = memoizeOneImplementation;\n","/**\n * No operation function.\n *\n * @param args - The arguments to pass to the function.\n *\n * @example\n * ```ts\n * noop(); // void\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function noop(...args: unknown[]): void {\n // noop\n}\n","export function pipeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = 0; i < len; i += 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\n// TODO: add up to 9 arguments\nexport function pipe<A, B>(value: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function pipe<A, B, C>(value: A, fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): C | Err<A> | Err<B>;\nexport function pipe<A, B, C, D>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function pipe<A, B, C, D, E>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function pipe<A, B, C, D, E, F>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function pipe<A, B, C, D, E, F, G>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function pipe<A, B, C, D, E, F, G, H>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function pipe(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return pipeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\nexport function piped<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function piped<A, B, C>(fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): (input: A) => C | Err<A> | Err<B>;\nexport function piped<A, B, C, D>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function piped<A, B, C, D, E>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function piped<A, B, C, D, E, F>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function piped<A, B, C, D, E, F, G>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function piped<A, B, C, D, E, F, G, H>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function piped<A, B, C, D, E, F, G, H, I>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function piped<A, B, C, D, E, F, G, H, I, J>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function piped(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n return (value: unknown): unknown => pipeImplementation(value, ...pipeline);\n}\n","export function tap<T>(callbackFn: (data: T) => void): (data: T) => T {\n return (data: T) => {\n callbackFn(data);\n return data;\n };\n}\n","import { purry } from './purry';\n\nfunction unlessImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? data : fn(data);\n}\n\nexport function unless<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function unless<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function unless<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function unless<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function unless(...args: unknown[]): unknown {\n return purry(unlessImplementation, args);\n}\n","import { purry } from './purry';\n\nfunction whenImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? fn(data) : data;\n}\n\nexport function when<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function when<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function when<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function when<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function when(...args: unknown[]): unknown {\n return purry(whenImplementation, args);\n}\n"],"mappings":";;AAAA,SAAgB,OAAU,OAAqC;CAC7D,aAAa;AACf;;;ACFA,SAAgB,sBAAsB,OAAgB,GAAG,UAAqD;CAC5G,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG;EACpC,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC2DA,SAAgB,QAAQ,OAAgB,GAAG,UAAqD;CAE9F,OAAO,sBAAsB,OAAO,GAAG,QAAQ;AACjD;;;ACVA,SAAgB,SAAS,GAAG,UAA6E;CAEvG,QAAQ,UAAmB,sBAAsB,OAAO,GAAG,QAAQ;AACrE;;;ACjEA,SAAS,YAAY,OAAgB,QAA0B;CAC7D,IAAI,UAAU,QACZ,OAAO;CAET,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,MAAM,GAC5C,OAAO;CAGT,OAAO;AACT;AAEA,SAAS,eAAe,WAA+B,YAAyC;CAC9F,IAAI,UAAU,WAAW,WAAW,QAClC,OAAO;CAGT,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GACzC,IAAI,CAAC,YAAY,UAAU,IAAI,WAAW,EAAE,GAC1C,OAAO;CAGX,OAAO;AACT;AAkBA,SAAgB,yBACd,IACA,mBACmB;CACnB,IAAI,QAA6B;CAEjC,SAAS,SAAyC,GAAG,SAA+C;EAClG,IAAI,OAAO,aAAa,QAAQ,kBAAkB,SAAS,MAAM,QAAQ,GACvE,OAAO,MAAM;EAGf,MAAM,aAAa,GAAG,MAAM,MAAM,OAAO;EACzC,QAAQ;GACN,UAAU;GACV;GACA,UAAU;EACZ;EAEA,OAAO;CACT;CAEA,SAAS,cAAc;EACrB,QAAQ;CACV;CAEA,OAAO;AACT;AAEA,SAAgB,WAAyE,IAA8B;CACrH,OAAO,yBAAyB,IAAI,cAAc;AACpD;AAEA,WAAW,OAAO;;;;;;;;;;;;;AC7DlB,SAAgB,KAAK,GAAG,MAAuB,CAE/C;;;ACbA,SAAgB,mBAAmB,OAAgB,GAAG,UAAqD;CACzG,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;EAC/B,SAAS,SAAS,GAAI,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;AC4DA,SAAgB,KAAK,OAAgB,GAAG,UAAqD;CAE3F,OAAO,mBAAmB,OAAO,GAAG,QAAQ;AAC9C;;;ACXA,SAAgB,MAAM,GAAG,UAA6E;CACpG,QAAQ,UAA4B,mBAAmB,OAAO,GAAG,QAAQ;AAC3E;;;AChEA,SAAgB,IAAO,YAA+C;CACpE,QAAQ,SAAY;EAClB,WAAW,IAAI;EACf,OAAO;CACT;AACF;;;ACHA,SAAS,qBAAwB,MAAS,WAAiC,IAAuB;CAChG,OAAO,UAAU,IAAI,IAAI,OAAO,GAAG,IAAI;AACzC;AAMA,SAAgB,OAAO,GAAG,MAA0B;CAClD,OAAO,MAAM,sBAAsB,IAAI;AACzC;;;ACVA,SAAS,mBAAsB,MAAS,WAAiC,IAAuB;CAC9F,OAAO,UAAU,IAAI,IAAI,GAAG,IAAI,IAAI;AACtC;AAMA,SAAgB,KAAK,GAAG,MAA0B;CAChD,OAAO,MAAM,oBAAoB,IAAI;AACvC"}
@@ -0,0 +1,27 @@
1
+ import { t as purry } from "./purry-BOWmqwDB.mjs";
2
+ import { i as NotFoundError } from "./errors-Dw1kitu_.mjs";
3
+ //#region src/object/get.ts
4
+ function getImplementation(obj, key) {
5
+ return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);
6
+ }
7
+ function get(...args) {
8
+ return purry(getImplementation, args);
9
+ }
10
+ function getOrImplementation(obj, key, defaultValue) {
11
+ return obj[key] ?? defaultValue;
12
+ }
13
+ function getOr(...args) {
14
+ return purry(getOrImplementation, args);
15
+ }
16
+ get.or = getOr;
17
+ function getAssertImplementation(obj, key) {
18
+ return obj[key];
19
+ }
20
+ function getAssert(...args) {
21
+ return purry(getAssertImplementation, args);
22
+ }
23
+ get.assert = getAssert;
24
+ //#endregion
25
+ export { getAssert as n, get as t };
26
+
27
+ //# sourceMappingURL=get-CWL_cu6G.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-CWL_cu6G.mjs","names":[],"sources":["../src/object/get.ts"],"sourcesContent":["import { NotFoundError } from '../errors';\nimport { purry } from '../function/purry';\n\nfunction getImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError {\n return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);\n}\n\n/**\n * Get a property from an object by key.\n *\n * @category Object\n * @param key - The key to get the property from.\n * @param obj - The object to get the property from.\n *\n * @example\n * ```ts\n * get('name', { name: 'John' }); // 'John'\n * ```\n */\nexport function get<Obj extends object, Key extends keyof Obj>(\n key: Key,\n): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;\nexport function get<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError;\nexport function get(...args: unknown[]): unknown {\n return purry(getImplementation, args);\n}\n\nfunction getOrImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key] {\n return obj[key] ?? defaultValue;\n}\n\nfunction getOr<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key];\nfunction getOr(...args: unknown[]): unknown {\n return purry(getOrImplementation, args);\n}\n\nget.or = getOr;\n\nfunction getAssertImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): Obj[Key] {\n return obj[key];\n}\n\nexport function getAssert<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]>;\nexport function getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;\nexport function getAssert(...args: unknown[]): unknown {\n return purry(getAssertImplementation, args);\n}\n\nget.assert = getAssert;\n"],"mappings":";;;AAGA,SAAS,kBACP,KACA,KACuC;CACvC,OAAO,IAAI,QAAQ,IAAI,cAAc,yBAAyB,OAAO,GAAG,EAAE,qBAAqB;AACjG;AAqBA,SAAgB,IAAI,GAAG,MAA0B;CAC/C,OAAO,MAAM,mBAAmB,IAAI;AACtC;AAEA,SAAS,oBACP,KACA,KACA,cACU;CACV,OAAO,IAAI,QAAQ;AACrB;AAOA,SAAS,MAAM,GAAG,MAA0B;CAC1C,OAAO,MAAM,qBAAqB,IAAI;AACxC;AAEA,IAAI,KAAK;AAET,SAAS,wBAAmE,KAAU,KAAoB;CACxG,OAAO,IAAI;AACb;AAIA,SAAgB,UAAU,GAAG,MAA0B;CACrD,OAAO,MAAM,yBAAyB,IAAI;AAC5C;AAEA,IAAI,SAAS"}
@@ -0,0 +1,38 @@
1
+ const require_purry = require("./purry-B2_0DGLV.cjs");
2
+ const require_errors = require("./errors-O-d_Vemi.cjs");
3
+ //#region src/object/get.ts
4
+ function getImplementation(obj, key) {
5
+ return obj[key] ?? new require_errors.NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);
6
+ }
7
+ function get(...args) {
8
+ return require_purry.purry(getImplementation, args);
9
+ }
10
+ function getOrImplementation(obj, key, defaultValue) {
11
+ return obj[key] ?? defaultValue;
12
+ }
13
+ function getOr(...args) {
14
+ return require_purry.purry(getOrImplementation, args);
15
+ }
16
+ get.or = getOr;
17
+ function getAssertImplementation(obj, key) {
18
+ return obj[key];
19
+ }
20
+ function getAssert(...args) {
21
+ return require_purry.purry(getAssertImplementation, args);
22
+ }
23
+ get.assert = getAssert;
24
+ //#endregion
25
+ Object.defineProperty(exports, "get", {
26
+ enumerable: true,
27
+ get: function() {
28
+ return get;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "getAssert", {
32
+ enumerable: true,
33
+ get: function() {
34
+ return getAssert;
35
+ }
36
+ });
37
+
38
+ //# sourceMappingURL=get-yrs1Kqho.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-yrs1Kqho.cjs","names":["NotFoundError","purry"],"sources":["../src/object/get.ts"],"sourcesContent":["import { NotFoundError } from '../errors';\nimport { purry } from '../function/purry';\n\nfunction getImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError {\n return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);\n}\n\n/**\n * Get a property from an object by key.\n *\n * @category Object\n * @param key - The key to get the property from.\n * @param obj - The object to get the property from.\n *\n * @example\n * ```ts\n * get('name', { name: 'John' }); // 'John'\n * ```\n */\nexport function get<Obj extends object, Key extends keyof Obj>(\n key: Key,\n): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;\nexport function get<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError;\nexport function get(...args: unknown[]): unknown {\n return purry(getImplementation, args);\n}\n\nfunction getOrImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key] {\n return obj[key] ?? defaultValue;\n}\n\nfunction getOr<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key];\nfunction getOr(...args: unknown[]): unknown {\n return purry(getOrImplementation, args);\n}\n\nget.or = getOr;\n\nfunction getAssertImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): Obj[Key] {\n return obj[key];\n}\n\nexport function getAssert<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]>;\nexport function getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;\nexport function getAssert(...args: unknown[]): unknown {\n return purry(getAssertImplementation, args);\n}\n\nget.assert = getAssert;\n"],"mappings":";;;AAGA,SAAS,kBACP,KACA,KACuC;CACvC,OAAO,IAAI,QAAQ,IAAIA,eAAAA,cAAc,yBAAyB,OAAO,GAAG,EAAE,qBAAqB;AACjG;AAqBA,SAAgB,IAAI,GAAG,MAA0B;CAC/C,OAAOC,cAAAA,MAAM,mBAAmB,IAAI;AACtC;AAEA,SAAS,oBACP,KACA,KACA,cACU;CACV,OAAO,IAAI,QAAQ;AACrB;AAOA,SAAS,MAAM,GAAG,MAA0B;CAC1C,OAAOA,cAAAA,MAAM,qBAAqB,IAAI;AACxC;AAEA,IAAI,KAAK;AAET,SAAS,wBAAmE,KAAU,KAAoB;CACxG,OAAO,IAAI;AACb;AAIA,SAAgB,UAAU,GAAG,MAA0B;CACrD,OAAOA,cAAAA,MAAM,yBAAyB,IAAI;AAC5C;AAEA,IAAI,SAAS"}
@@ -0,0 +1,43 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_isNotNil = require("../isNotNil-DrF-ohem.cjs");
3
+ //#region src/guard/isNull.ts
4
+ /**
5
+ * Check whether a value is strictly `null`.
6
+ *
7
+ * @category Guard
8
+ * @param value - The value to check.
9
+ * @returns `true` if `value` is `null`; otherwise `false`.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * isNull(null); // true
14
+ * isNull(undefined); // false
15
+ * ```
16
+ */
17
+ function isNull(value) {
18
+ return value === null;
19
+ }
20
+ //#endregion
21
+ //#region src/guard/isUndefined.ts
22
+ /**
23
+ * Check whether a value is strictly `undefined`.
24
+ *
25
+ * @category Guard
26
+ * @param value - The value to check.
27
+ * @returns `true` if `value` is `undefined`; otherwise `false`.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * isUndefined(undefined); // true
32
+ * isUndefined(null); // false
33
+ * ```
34
+ */
35
+ function isUndefined(value) {
36
+ return value === void 0;
37
+ }
38
+ //#endregion
39
+ exports.isNotNil = require_isNotNil.isNotNil;
40
+ exports.isNull = isNull;
41
+ exports.isUndefined = isUndefined;
42
+
43
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n * Check whether a value is strictly `null`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `null`; otherwise `false`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * isNull(undefined); // false\n * ```\n */\nexport function isNull<T>(value: T): value is T & null {\n return value === null;\n}\n","/**\n * Check whether a value is strictly `undefined`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `undefined`; otherwise `false`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * isUndefined(null); // false\n * ```\n */\nexport function isUndefined<T>(value: T): value is T & undefined {\n return value === undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAaA,SAAgB,OAAU,OAA6B;CACrD,OAAO,UAAU;AACnB;;;;;;;;;;;;;;;;ACFA,SAAgB,YAAe,OAAkC;CAC/D,OAAO,UAAU,KAAA;AACnB"}
@@ -0,0 +1,52 @@
1
+ //#region src/guard/isNotNil.d.ts
2
+ /**
3
+ * Check whether a value is not nullish (`null` nor `undefined`), using loose inequality (`!= null`).
4
+ * Narrows the type to {@link NonNullable}.
5
+ *
6
+ * @category Guard
7
+ * @param value - The value to check.
8
+ * @returns `true` if `value` is neither `null` nor `undefined`; otherwise `false`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * isNotNil(0); // true
13
+ * isNotNil(null); // false
14
+ * isNotNil(undefined); // false
15
+ * ```
16
+ */
17
+ declare function isNotNil<T>(value: T): value is NonNullable<T>;
18
+ //#endregion
19
+ //#region src/guard/isNull.d.ts
20
+ /**
21
+ * Check whether a value is strictly `null`.
22
+ *
23
+ * @category Guard
24
+ * @param value - The value to check.
25
+ * @returns `true` if `value` is `null`; otherwise `false`.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * isNull(null); // true
30
+ * isNull(undefined); // false
31
+ * ```
32
+ */
33
+ declare function isNull<T>(value: T): value is T & null;
34
+ //#endregion
35
+ //#region src/guard/isUndefined.d.ts
36
+ /**
37
+ * Check whether a value is strictly `undefined`.
38
+ *
39
+ * @category Guard
40
+ * @param value - The value to check.
41
+ * @returns `true` if `value` is `undefined`; otherwise `false`.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * isUndefined(undefined); // true
46
+ * isUndefined(null); // false
47
+ * ```
48
+ */
49
+ declare function isUndefined<T>(value: T): value is T & undefined;
50
+ //#endregion
51
+ export { isNotNil, isNull, isUndefined };
52
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAeA;;;;;;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;;;;;iBCFgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADE/C;;;;;;;;;;;;iBEFgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
@@ -0,0 +1,52 @@
1
+ //#region src/guard/isNotNil.d.ts
2
+ /**
3
+ * Check whether a value is not nullish (`null` nor `undefined`), using loose inequality (`!= null`).
4
+ * Narrows the type to {@link NonNullable}.
5
+ *
6
+ * @category Guard
7
+ * @param value - The value to check.
8
+ * @returns `true` if `value` is neither `null` nor `undefined`; otherwise `false`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * isNotNil(0); // true
13
+ * isNotNil(null); // false
14
+ * isNotNil(undefined); // false
15
+ * ```
16
+ */
17
+ declare function isNotNil<T>(value: T): value is NonNullable<T>;
18
+ //#endregion
19
+ //#region src/guard/isNull.d.ts
20
+ /**
21
+ * Check whether a value is strictly `null`.
22
+ *
23
+ * @category Guard
24
+ * @param value - The value to check.
25
+ * @returns `true` if `value` is `null`; otherwise `false`.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * isNull(null); // true
30
+ * isNull(undefined); // false
31
+ * ```
32
+ */
33
+ declare function isNull<T>(value: T): value is T & null;
34
+ //#endregion
35
+ //#region src/guard/isUndefined.d.ts
36
+ /**
37
+ * Check whether a value is strictly `undefined`.
38
+ *
39
+ * @category Guard
40
+ * @param value - The value to check.
41
+ * @returns `true` if `value` is `undefined`; otherwise `false`.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * isUndefined(undefined); // true
46
+ * isUndefined(null); // false
47
+ * ```
48
+ */
49
+ declare function isUndefined<T>(value: T): value is T & undefined;
50
+ //#endregion
51
+ export { isNotNil, isNull, isUndefined };
52
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAeA;;;;;;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;;;;;iBCFgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADE/C;;;;;;;;;;;;iBEFgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}