@nicolastoulemont/std 0.3.0 → 0.5.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 (148) hide show
  1. package/dist/adt/index.d.mts +1 -1
  2. package/dist/adt/index.mjs +1 -3
  3. package/dist/adt-DZmVJG4P.mjs +2 -0
  4. package/dist/adt-DZmVJG4P.mjs.map +1 -0
  5. package/dist/{apply-fn.types-CXDoeA7D.d.mts → apply-fn.types-CMgY6WQe.d.mts} +1 -1
  6. package/dist/{apply-fn.types-CXDoeA7D.d.mts.map → apply-fn.types-CMgY6WQe.d.mts.map} +1 -1
  7. package/dist/brand/index.d.mts +2 -2
  8. package/dist/brand/index.mjs +1 -3
  9. package/dist/brand-BUqMmkzC.mjs +2 -0
  10. package/dist/{brand-CTaxGuU9.mjs.map → brand-BUqMmkzC.mjs.map} +1 -1
  11. package/dist/data/index.d.mts +1 -1
  12. package/dist/data/index.mjs +1 -3
  13. package/dist/data-DzqKBCQg.mjs +2 -0
  14. package/dist/data-DzqKBCQg.mjs.map +1 -0
  15. package/dist/discriminator.types-DkThfvNE.d.mts +7 -0
  16. package/dist/discriminator.types-DkThfvNE.d.mts.map +1 -0
  17. package/dist/either/index.d.mts +2 -2
  18. package/dist/either/index.mjs +1 -3
  19. package/dist/either-BDY9T5oz.mjs +2 -0
  20. package/dist/either-BDY9T5oz.mjs.map +1 -0
  21. package/dist/equality-D2EJvZm4.mjs +2 -0
  22. package/dist/equality-D2EJvZm4.mjs.map +1 -0
  23. package/dist/err/index.d.mts +2 -2
  24. package/dist/err/index.mjs +1 -3
  25. package/dist/err-CYs4b1RV.mjs +2 -0
  26. package/dist/err-CYs4b1RV.mjs.map +1 -0
  27. package/dist/flow/index.d.mts +1 -1
  28. package/dist/flow/index.mjs +1 -3
  29. package/dist/flow-CxKQ5yac.mjs +2 -0
  30. package/dist/flow-CxKQ5yac.mjs.map +1 -0
  31. package/dist/fx/index.d.mts +3 -0
  32. package/dist/fx/index.mjs +1 -0
  33. package/dist/fx-C4UuWCqP.mjs +2 -0
  34. package/dist/fx-C4UuWCqP.mjs.map +1 -0
  35. package/dist/fx.types-CXTwEa1G.mjs +2 -0
  36. package/dist/fx.types-CXTwEa1G.mjs.map +1 -0
  37. package/dist/fx.types-DO-8yG4c.d.mts +133 -0
  38. package/dist/fx.types-DO-8yG4c.d.mts.map +1 -0
  39. package/dist/index-78LWwTds.d.mts +288 -0
  40. package/dist/index-78LWwTds.d.mts.map +1 -0
  41. package/dist/index-BQ5wVDSP.d.mts +441 -0
  42. package/dist/index-BQ5wVDSP.d.mts.map +1 -0
  43. package/dist/{index-tkgTLCoq.d.mts → index-BahMvQpA.d.mts} +2 -2
  44. package/dist/{index-tkgTLCoq.d.mts.map → index-BahMvQpA.d.mts.map} +1 -1
  45. package/dist/index-Bs5TTFlK.d.mts +882 -0
  46. package/dist/index-Bs5TTFlK.d.mts.map +1 -0
  47. package/dist/index-BuLJRX1e.d.mts +476 -0
  48. package/dist/index-BuLJRX1e.d.mts.map +1 -0
  49. package/dist/{index-BR7takNf.d.mts → index-CDio8mJY.d.mts} +65 -26
  50. package/dist/index-CDio8mJY.d.mts.map +1 -0
  51. package/dist/{index-Cp_4sFun.d.mts → index-DLlx9jiG.d.mts} +38 -43
  52. package/dist/index-DLlx9jiG.d.mts.map +1 -0
  53. package/dist/index-DQoTXLSm.d.mts +846 -0
  54. package/dist/index-DQoTXLSm.d.mts.map +1 -0
  55. package/dist/index-DjjJIDaA.d.mts +221 -0
  56. package/dist/index-DjjJIDaA.d.mts.map +1 -0
  57. package/dist/{index-BCrD3pEs.d.mts → index-DtAPrec7.d.mts} +18 -18
  58. package/dist/index-DtAPrec7.d.mts.map +1 -0
  59. package/dist/{index-zC2zAtZY.d.mts → index-IdejL485.d.mts} +2 -2
  60. package/dist/{index-zC2zAtZY.d.mts.map → index-IdejL485.d.mts.map} +1 -1
  61. package/dist/index.d.mts +16 -802
  62. package/dist/index.mjs +1 -1393
  63. package/dist/option/index.d.mts +3 -3
  64. package/dist/option/index.mjs +1 -3
  65. package/dist/option-Qiv7Ls7L.mjs +2 -0
  66. package/dist/option-Qiv7Ls7L.mjs.map +1 -0
  67. package/dist/option.types-By5UOfC2.mjs +2 -0
  68. package/dist/option.types-By5UOfC2.mjs.map +1 -0
  69. package/dist/option.types-Cluybn30.d.mts +167 -0
  70. package/dist/option.types-Cluybn30.d.mts.map +1 -0
  71. package/dist/pipe/index.d.mts +1 -1
  72. package/dist/pipe/index.mjs +1 -3
  73. package/dist/pipe-BROILDeC.mjs +2 -0
  74. package/dist/{pipe-GYxZNkPB.mjs.map → pipe-BROILDeC.mjs.map} +1 -1
  75. package/dist/pipeable-KHu4D8ol.d.mts +27 -0
  76. package/dist/pipeable-KHu4D8ol.d.mts.map +1 -0
  77. package/dist/pipeable-rQvolRqh.mjs +2 -0
  78. package/dist/pipeable-rQvolRqh.mjs.map +1 -0
  79. package/dist/predicate/index.d.mts +2 -2
  80. package/dist/predicate/index.mjs +1 -3
  81. package/dist/predicate-DvXnfmeJ.mjs +2 -0
  82. package/dist/{predicate-BZkZmo-W.mjs.map → predicate-DvXnfmeJ.mjs.map} +1 -1
  83. package/dist/result/index.d.mts +3 -3
  84. package/dist/result/index.mjs +1 -3
  85. package/dist/result-B68pxC7l.mjs +2 -0
  86. package/dist/result-B68pxC7l.mjs.map +1 -0
  87. package/dist/result-uRORQlAQ.mjs +1 -0
  88. package/dist/result.types-fIbuBwVQ.d.mts +259 -0
  89. package/dist/result.types-fIbuBwVQ.d.mts.map +1 -0
  90. package/package.json +1 -9
  91. package/dist/adt-DraJkmij.mjs +0 -318
  92. package/dist/adt-DraJkmij.mjs.map +0 -1
  93. package/dist/brand-CTaxGuU9.mjs +0 -165
  94. package/dist/data-DgzWI4R_.mjs +0 -244
  95. package/dist/data-DgzWI4R_.mjs.map +0 -1
  96. package/dist/discriminator.types-DCkkrCj4.d.mts +0 -7
  97. package/dist/discriminator.types-DCkkrCj4.d.mts.map +0 -1
  98. package/dist/either-CnOBUH7a.mjs +0 -598
  99. package/dist/either-CnOBUH7a.mjs.map +0 -1
  100. package/dist/equality/index.d.mts +0 -86
  101. package/dist/equality/index.d.mts.map +0 -1
  102. package/dist/equality/index.mjs +0 -3
  103. package/dist/equality-YMebYwm1.mjs +0 -201
  104. package/dist/equality-YMebYwm1.mjs.map +0 -1
  105. package/dist/err-BqQApH9r.mjs +0 -169
  106. package/dist/err-BqQApH9r.mjs.map +0 -1
  107. package/dist/flow-pRdnqmMY.mjs +0 -21
  108. package/dist/flow-pRdnqmMY.mjs.map +0 -1
  109. package/dist/fn/index.d.mts +0 -2
  110. package/dist/fn/index.mjs +0 -3
  111. package/dist/fn-DFHj-EVA.mjs +0 -10
  112. package/dist/fn-DFHj-EVA.mjs.map +0 -1
  113. package/dist/gen/index.d.mts +0 -3
  114. package/dist/gen/index.mjs +0 -3
  115. package/dist/gen-DF-FXNdy.mjs +0 -99
  116. package/dist/gen-DF-FXNdy.mjs.map +0 -1
  117. package/dist/index-B3z7T6Dz.d.mts +0 -57
  118. package/dist/index-B3z7T6Dz.d.mts.map +0 -1
  119. package/dist/index-BCrD3pEs.d.mts.map +0 -1
  120. package/dist/index-BFhV56qy.d.mts +0 -105
  121. package/dist/index-BFhV56qy.d.mts.map +0 -1
  122. package/dist/index-BLG9B4bn.d.mts +0 -116
  123. package/dist/index-BLG9B4bn.d.mts.map +0 -1
  124. package/dist/index-BR7takNf.d.mts.map +0 -1
  125. package/dist/index-BiFc2xWF.d.mts +0 -211
  126. package/dist/index-BiFc2xWF.d.mts.map +0 -1
  127. package/dist/index-BwVaI5d0.d.mts +0 -79
  128. package/dist/index-BwVaI5d0.d.mts.map +0 -1
  129. package/dist/index-CckxkaUd.d.mts +0 -80
  130. package/dist/index-CckxkaUd.d.mts.map +0 -1
  131. package/dist/index-Cp_4sFun.d.mts.map +0 -1
  132. package/dist/index-DbfMra4p.d.mts +0 -72
  133. package/dist/index-DbfMra4p.d.mts.map +0 -1
  134. package/dist/index.d.mts.map +0 -1
  135. package/dist/index.mjs.map +0 -1
  136. package/dist/is-promise-BEl3eGZg.mjs +0 -11
  137. package/dist/is-promise-BEl3eGZg.mjs.map +0 -1
  138. package/dist/option-CKHDOVea.mjs +0 -410
  139. package/dist/option-CKHDOVea.mjs.map +0 -1
  140. package/dist/option.types-eqVODMIy.d.mts +0 -89
  141. package/dist/option.types-eqVODMIy.d.mts.map +0 -1
  142. package/dist/pipe-GYxZNkPB.mjs +0 -10
  143. package/dist/predicate-BZkZmo-W.mjs +0 -293
  144. package/dist/result-C5tPWR60.mjs +0 -422
  145. package/dist/result-C5tPWR60.mjs.map +0 -1
  146. package/dist/result-D7XJ96pv.mjs +0 -1
  147. package/dist/result.types-Bd8a43Fg.d.mts +0 -174
  148. package/dist/result.types-Bd8a43Fg.d.mts.map +0 -1
@@ -0,0 +1,259 @@
1
+ import { i as Fx } from "./fx.types-DO-8yG4c.mjs";
2
+ import { t as Pipeable } from "./pipeable-KHu4D8ol.mjs";
3
+
4
+ //#region src/shared/type-utils.types.d.ts
5
+ /**
6
+ * Check if T is exactly `never`
7
+ */
8
+ type IsNever<T> = [T] extends [never] ? true : false;
9
+ /**
10
+ * Check if T is `any`
11
+ */
12
+ type IsAny<T> = 0 extends 1 & T ? true : false;
13
+ /**
14
+ * Check if T is `unknown`
15
+ */
16
+ type IsUnknown<T> = unknown extends T ? (IsAny<T> extends true ? false : true) : false;
17
+ /**
18
+ * Check if two types are exactly equal
19
+ */
20
+ type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false;
21
+ /**
22
+ * Convert a union to an intersection
23
+ * UnionToIntersection<A | B> => A & B
24
+ */
25
+ type UnionToIntersection<U$1> = (U$1 extends unknown ? (k: U$1) => void : never) extends ((k: infer I) => void) ? I : never;
26
+ /**
27
+ * Prettify a type for better IDE display
28
+ * Utility type that forces TypeScript to expand an intersection type
29
+ * into a more readable object type in hover/intellisense.
30
+ */
31
+ type Prettify<T> = { [K in keyof T]: T[K] } & {};
32
+ /**
33
+ * Deep prettify - recursively simplifies nested objects
34
+ */
35
+ type DeepPrettify<T> = T extends object ? T extends infer O ? { [K in keyof O]: DeepPrettify<O[K]> } : never : T;
36
+ /**
37
+ * Make all properties deeply optional
38
+ */
39
+ type DeepPartial<T> = T extends object ? { [K in keyof T]?: DeepPartial<T[K]> } : T;
40
+ /**
41
+ * Make all properties deeply required
42
+ */
43
+ type DeepRequired<T> = T extends object ? { [K in keyof T]-?: DeepRequired<T[K]> } : T;
44
+ /**
45
+ * Make all properties deeply readonly
46
+ */
47
+ type DeepReadonly<T> = T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]> } : T;
48
+ /**
49
+ * Make all properties deeply mutable (remove readonly)
50
+ */
51
+ type DeepMutable<T> = T extends object ? { -readonly [K in keyof T]: DeepMutable<T[K]> } : T;
52
+ /**
53
+ * Get keys of T where the value is assignable to V
54
+ */
55
+ type KeysOfType<T, V> = { [K in keyof T]: T[K] extends V ? K : never }[keyof T];
56
+ /**
57
+ * Pick properties from T where value is assignable to V
58
+ */
59
+ type PickByType<T, V> = Pick<T, KeysOfType<T, V>>;
60
+ /**
61
+ * Omit properties from T where value is assignable to V
62
+ */
63
+ type OmitByType<T, V> = Omit<T, KeysOfType<T, V>>;
64
+ /**
65
+ * Merge two objects, B overwrites A
66
+ */
67
+ type Merge<A, B> = Prettify<Omit<A, keyof B> & B>;
68
+ /**
69
+ * Make specific keys optional
70
+ */
71
+ type PartialKeys<T, K$1 extends keyof T> = Prettify<Omit<T, K$1> & Partial<Pick<T, K$1>>>;
72
+ /**
73
+ * Make specific keys required
74
+ */
75
+ type RequiredKeys<T, K$1 extends keyof T> = Prettify<Omit<T, K$1> & Required<Pick<T, K$1>>>;
76
+ /**
77
+ * Get the return type of an async function (unwraps Promise)
78
+ */
79
+ type AsyncReturnType<T extends (...args: any[]) => Promise<unknown>> = T extends ((...args: any[]) => Promise<infer R>) ? R : never;
80
+ /**
81
+ * Ensure T is not a union type (useful for strict function params)
82
+ */
83
+ type NoUnion<T, ErrorMsg = "Union types not allowed"> = [T] extends [UnionToIntersection<T>] ? T : ErrorMsg;
84
+ /**
85
+ * Get the first element of a tuple
86
+ */
87
+ type Head<T extends readonly unknown[]> = T extends readonly [infer H, ...unknown[]] ? H : never;
88
+ /**
89
+ * Get all but the first element of a tuple
90
+ */
91
+ type Tail<T extends readonly unknown[]> = T extends readonly [unknown, ...infer R] ? R : never;
92
+ /**
93
+ * Get the last element of a tuple
94
+ */
95
+ type Last<T extends readonly unknown[]> = T extends readonly [...unknown[], infer L] ? L : never;
96
+ /**
97
+ * Get all but the last element of a tuple
98
+ */
99
+ type Init<T extends readonly unknown[]> = T extends readonly [...infer I, unknown] ? I : never;
100
+ /**
101
+ * Get the length of a tuple
102
+ */
103
+ type Length<T extends readonly unknown[]> = T["length"];
104
+ /**
105
+ * Represents a successful result with a value.
106
+ */
107
+ type Ok<T> = {
108
+ readonly _tag: "Ok";
109
+ readonly value: T;
110
+ };
111
+ /**
112
+ * Represents a failed result with an error.
113
+ */
114
+ type Err<E> = {
115
+ readonly _tag: "Err";
116
+ readonly error: E;
117
+ };
118
+ //#endregion
119
+ //#region src/result/result.types.d.ts
120
+ /**
121
+ * A discriminated union representing either a successful result or an error.
122
+ * Uses _tag discriminator for unified API compatibility.
123
+ * Compatible with ts-pattern for exhaustive matching.
124
+ * Implements Fx protocol with R = never (no service requirements).
125
+ * When yielded in a generator, yields itself as an Fx type for proper inference.
126
+ */
127
+ type Result<T, E> = (Ok<T> | Err<E>) & Fx<T, E> & Pipeable & {
128
+ [Symbol.iterator](): Generator<Result<T, E>, T, unknown>;
129
+ };
130
+ /**
131
+ * Compute the return type of `fromTry` based on whether fn returns a Promise.
132
+ * - If fn returns Promise<T>, result is Promise<Result<T, Error>>
133
+ * - If fn returns T, result is Result<T, Error>
134
+ */
135
+ type FromTryReturn<T> = T extends Promise<infer U> ? Promise<Result<U, Error>> : Result<T, Error>;
136
+ /**
137
+ * Extract the success type from a Result.
138
+ * Uses structural matching to extract the value type from the Ok branch.
139
+ */
140
+ type ResultValue<R> = R extends {
141
+ readonly _tag: "Ok";
142
+ readonly value: infer T;
143
+ } ? T : never;
144
+ /**
145
+ * Extract the error type from a Result.
146
+ * Uses structural matching to extract the error type from the Err branch.
147
+ */
148
+ type ResultError<R> = R extends {
149
+ readonly _tag: "Err";
150
+ readonly error: infer E;
151
+ } ? E : never;
152
+ /**
153
+ * Overloaded all() type with explicit tuple arities for better inference.
154
+ * Provides tuple overloads for 1-6 elements so `as const` is not required.
155
+ */
156
+ type ResultAll = {
157
+ <A, E1>(results: readonly [Result<A, E1>]): Result<[A], E1>;
158
+ <A, B, E1, E2>(results: readonly [Result<A, E1>, Result<B, E2>]): Result<[A, B], E1 | E2>;
159
+ <A, B, C, E1, E2, E3>(results: readonly [Result<A, E1>, Result<B, E2>, Result<C, E3>]): Result<[A, B, C], E1 | E2 | E3>;
160
+ <A, B, C, D, E1, E2, E3, E4>(results: readonly [Result<A, E1>, Result<B, E2>, Result<C, E3>, Result<D, E4>]): Result<[A, B, C, D], E1 | E2 | E3 | E4>;
161
+ <A, B, C, D, E, E1, E2, E3, E4, E5>(results: readonly [Result<A, E1>, Result<B, E2>, Result<C, E3>, Result<D, E4>, Result<E, E5>]): Result<[A, B, C, D, E], E1 | E2 | E3 | E4 | E5>;
162
+ <A, B, C, D, E, F, E1, E2, E3, E4, E5, E6>(results: readonly [Result<A, E1>, Result<B, E2>, Result<C, E3>, Result<D, E4>, Result<E, E5>, Result<F, E6>]): Result<[A, B, C, D, E, F], E1 | E2 | E3 | E4 | E5 | E6>;
163
+ <T extends readonly Result<unknown, unknown>[]>(results: T): Result<{ -readonly [K in keyof T]: ResultValue<T[K]> }, ResultError<T[number]>>;
164
+ <T extends Record<string, Result<unknown, unknown>>>(results: T): Result<{ -readonly [K in keyof T]: ResultValue<T[K]> }, ResultError<T[keyof T]>>;
165
+ };
166
+ /**
167
+ * Interface for flatMap - using method syntax improves generic inference in pipe chains.
168
+ * Supports both data-first and data-last (curried) calling styles via dual().
169
+ * Note: Async overload must come first for proper overload resolution.
170
+ */
171
+ type ResultFlatMap = {
172
+ <A, E, B, E2>(result: Result<A, E>, fn: (value: A) => Promise<Result<B, E2>>): Promise<Result<B, E | E2>>;
173
+ <A, E, B, E2>(result: Result<A, E>, fn: (value: A) => Result<B, E2>): Result<B, E | E2>;
174
+ <A, B, E2>(fn: (value: A) => Promise<Result<B, E2>>): <E>(result: Result<A, E>) => Promise<Result<B, E | E2>>;
175
+ <A, B, E2>(fn: (value: A) => Result<B, E2>): <E>(result: Result<A, E>) => Result<B, E | E2>;
176
+ };
177
+ /**
178
+ * Interface for map function.
179
+ * Supports both data-first and data-last (curried) calling styles via dual().
180
+ * Note: Async overload must come first for proper overload resolution.
181
+ */
182
+ type ResultMap = {
183
+ <A, E, B>(result: Result<A, E>, fn: (value: A) => Promise<B>): Promise<Result<B, E>>;
184
+ <A, E, B>(result: Result<A, E>, fn: (value: A) => B): Result<B, E>;
185
+ <A, B>(fn: (value: A) => Promise<B>): <E>(result: Result<A, E>) => Promise<Result<B, E>>;
186
+ <A, B>(fn: (value: A) => B): <E>(result: Result<A, E>) => Result<B, E>;
187
+ };
188
+ /**
189
+ * Interface for mapErr function.
190
+ * Supports both data-first and data-last (curried) calling styles via dual().
191
+ * Note: Async overload must come first for proper overload resolution.
192
+ */
193
+ type ResultMapErr = {
194
+ <A, E1, E2>(result: Result<A, E1>, fn: (error: E1) => Promise<E2>): Promise<Result<A, E2>>;
195
+ <A, E1, E2>(result: Result<A, E1>, fn: (error: E1) => E2): Result<A, E2>;
196
+ <E1, E2>(fn: (error: E1) => Promise<E2>): <A>(result: Result<A, E1>) => Promise<Result<A, E2>>;
197
+ <E1, E2>(fn: (error: E1) => E2): <A>(result: Result<A, E1>) => Result<A, E2>;
198
+ };
199
+ /**
200
+ * Interface for tap function.
201
+ * Supports both data-first and data-last (curried) calling styles via dual().
202
+ */
203
+ type ResultTap = {
204
+ <A, E, R>(result: Result<A, E>, fn: (value: A) => R): R extends Promise<unknown> ? Promise<Result<A, E>> : Result<A, E>;
205
+ <A, R>(fn: (value: A) => R): <E>(result: Result<A, E>) => R extends Promise<unknown> ? Promise<Result<A, E>> : Result<A, E>;
206
+ };
207
+ /**
208
+ * Interface for orElse function.
209
+ * Supports both data-first and data-last (curried) calling styles via dual().
210
+ * Note: Async overload must come first for proper overload resolution.
211
+ */
212
+ type ResultOrElse = {
213
+ <A, E1, A2, E2>(result: Result<A, E1>, fn: (error: E1) => Promise<Result<A2, E2>>): Promise<Result<A | A2, E2>>;
214
+ <A, E1, A2, E2>(result: Result<A, E1>, fn: (error: E1) => Result<A2, E2>): Result<A | A2, E2>;
215
+ <E1, A2, E2>(fn: (error: E1) => Promise<Result<A2, E2>>): <A>(result: Result<A, E1>) => Promise<Result<A | A2, E2>>;
216
+ <E1, A2, E2>(fn: (error: E1) => Result<A2, E2>): <A>(result: Result<A, E1>) => Result<A | A2, E2>;
217
+ };
218
+ /**
219
+ * Interface for filter function.
220
+ * Supports both data-first and data-last (curried) calling styles via dual().
221
+ */
222
+ type ResultFilter = {
223
+ <A, E, E2>(result: Result<A, E>, predicate: (value: A) => boolean, onFail: (value: A) => E2): Result<A, E | E2>;
224
+ <A, E2>(predicate: (value: A) => boolean, onFail: (value: A) => E2): <E>(result: Result<A, E>) => Result<A, E | E2>;
225
+ };
226
+ /**
227
+ * Interface for unwrapOr function.
228
+ * Supports both data-first and data-last (curried) calling styles via dual().
229
+ * Uses NoInfer to prevent type inference from the default value.
230
+ */
231
+ type ResultUnwrapOr = {
232
+ <T, E>(result: Result<T, E>, defaultValue: NoInfer<T>): T;
233
+ <T>(defaultValue: NoInfer<T>): <E>(result: Result<T, E>) => T;
234
+ };
235
+ /**
236
+ * Interface for unwrapOrElse function.
237
+ * Supports both data-first and data-last (curried) calling styles via dual().
238
+ */
239
+ type ResultUnwrapOrElse = {
240
+ <T, E>(result: Result<T, E>, fn: (error: E) => T): T;
241
+ <E, T>(fn: (error: E) => T): (result: Result<T, E>) => T;
242
+ };
243
+ /**
244
+ * Interface for match function.
245
+ * Supports both data-first and data-last (curried) calling styles via dual().
246
+ */
247
+ type ResultMatch = {
248
+ <T, E, U$1>(result: Result<T, E>, handlers: {
249
+ Ok: (value: T) => U$1;
250
+ Err: (error: E) => U$1;
251
+ }): U$1;
252
+ <T, E, U$1>(handlers: {
253
+ Ok: (value: T) => U$1;
254
+ Err: (error: E) => U$1;
255
+ }): (result: Result<T, E>) => U$1;
256
+ };
257
+ //#endregion
258
+ export { NoUnion as A, IsAny as C, Last as D, KeysOfType as E, Prettify as F, RequiredKeys as I, Tail as L, OmitByType as M, PartialKeys as N, Length as O, PickByType as P, UnionToIntersection as R, Init as S, IsUnknown as T, DeepReadonly as _, ResultFlatMap as a, Err as b, ResultMatch as c, ResultUnwrapOr as d, ResultUnwrapOrElse as f, DeepPrettify as g, DeepPartial as h, ResultFilter as i, Ok as j, Merge as k, ResultOrElse as l, DeepMutable as m, Result as n, ResultMap as o, AsyncReturnType as p, ResultAll as r, ResultMapErr as s, FromTryReturn as t, ResultTap as u, DeepRequired as v, IsNever as w, Head as x, Equals as y };
259
+ //# sourceMappingURL=result.types-fIbuBwVQ.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.types-fIbuBwVQ.d.mts","names":[],"sources":["../src/shared/type-utils.types.ts","../src/result/result.types.ts"],"sourcesContent":[],"mappings":";;;;;;;KAOY,cAAc;AAA1B;AAKA;AAKA;AAA2C,KAL/B,KAK+B,CAAA,CAAA,CAAA,GAAA,CAAA,SAAA,CAAA,GALN,CAKM,GAAA,IAAA,GAAA,KAAA;;;;AAK/B,KALA,SAKM,CAAA,CAAA,CAAA,GAAA,OAAA,SALyB,CAKzB,GAAA,CAL8B,KAK9B,CALoC,CAKpC,CAAA,SAAA,IAAA,GAAA,KAAA,GAAA,IAAA,CAAA,GAAA,KAAA;;;;AAAmE,KAAzE,MAAyE,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,GAAhD,CAAgD,SAAtC,CAAsC,GAAA,CAAA,GAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,GAAA,GAAV,CAAU,SAAA,CAAA,GAAA,CAAA,GAAA,CAAA,IAAA,IAAA,GAAA,KAAA;;AAUrF;AAUA;;AAA4C,KAVhC,mBAUgC,CAAA,GAAA,CAAA,GAAA,CAVN,GAUM,SAAA,OAAA,GAAA,CAAA,CAAA,EAVkB,GAUlB,EAAA,GAAA,IAAA,GAAA,KAAA,CAAA,UAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,GAAA,IAAA,IAAA,CAAA,GAAA,KAAA;;;AAK5C;;;AAEoB,KAPR,QAOQ,CAAA,CAAA,CAAA,GAAA,QAAiB,MAPG,CAOH,GAPO,CAOP,CAPS,CAOT,CAAA,EAAE,GAAA,CAAA,CAAA;;;;AAW3B,KAbA,YAaW,CAAA,CAAA,CAAA,GAbO,CAaP,SAAA,MAAA,GAZnB,CAYmB,SAAA,KAAA,EAAA,GAAA,QAAM,MAXT,CAWS,GAXL,YAWK,CAXQ,CAWR,CAXU,CAWV,CAAA,CAAA,EAAiC,GAAA,KAAA,GAT1D,CAS0D;;;;AAA2B,KAA7E,WAA6E,CAAA,CAAA,CAAA,GAA5D,CAA4D,SAAA,MAAA,GAAA,QAAC,MAA5B,CAA4B,IAAvB,WAAuB,CAAX,CAAW,CAAT,CAAS,CAAA,CAAA,EAK1F,GALyF,CAK7E;;;;AAAwE,KAAxE,YAAwE,CAAA,CAAA,CAAA,GAAtD,CAAsD,SAAA,MAAA,GAAA,QAAf,MAAN,CAAM,KAAA,YAAA,CAAa,CAAb,CAAe,CAAf,CAAA,CAAA,EAAuB,GAAA,CAAA;;AAK5F;;AAAwE,KAA5D,YAA4D,CAAA,CAAA,CAAA,GAA1C,CAA0C,SAAA,MAAA,GAAA,iBAAiB,MAAjB,CAAiB,GAAb,YAAa,CAAA,CAAA,CAAE,CAAF,CAAA,CAAA,EAAE,GAAQ,CAAR;;;;AAK/E,KAAA,WAAW,CAAA,CAAA,CAAA,GAAM,CAAN,SAAA,MAAA,GAAA,kBAAM,MAA2C,CAA3C,GAA+C,WAA/C,CAA2D,CAA3D,CAA6D,CAA7D,CAAA,CAAA,EAA2C,GAA0B,CAA1B;;;;AAA0B,KAKtF,UALsF,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,QAAC,MAMrF,CANqF,GAMjF,CANiF,CAM/E,CAN+E,CAAA,SAMpE,CANoE,GAMhE,CANgE,GAAA,KAAA,EAKnG,CAAA,MAEQ,CAFI,CAAA;;;;AACmB,KAMnB,UANmB,CAAA,CAAA,EAAA,CAAA,CAAA,GAMA,IANA,CAMK,CANL,EAMQ,UANR,CAMmB,CANnB,EAMsB,CANtB,CAAA,CAAA;;;;AAMnB,KAKA,UALU,CAAA,CAAA,EAAA,CAAA,CAAA,GAKS,IALT,CAKc,CALd,EAKiB,UALjB,CAK4B,CAL5B,EAK+B,CAL/B,CAAA,CAAA;;;;AAAiB,KAU3B,KAV2B,CAAA,CAAA,EAAA,CAAA,CAAA,GAUb,QAVa,CAUJ,IAVI,CAUC,CAVD,EAAA,MAUU,CAVV,CAAA,GAUe,CAVf,CAAA;;;AAKvC;AAAoC,KAUxB,WAVwB,CAAA,CAAA,EAAA,YAAA,MAUO,CAVP,CAAA,GAUY,QAVZ,CAUqB,IAVrB,CAU0B,CAV1B,EAU6B,GAV7B,CAAA,GAUkC,OAVlC,CAU0C,IAV1C,CAU+C,CAV/C,EAUkD,GAVlD,CAAA,CAAA,CAAA;;;;AAAL,KAenB,YAfmB,CAAA,CAAA,EAAA,YAAA,MAea,CAfb,CAAA,GAekB,QAflB,CAe2B,IAf3B,CAegC,CAfhC,EAemC,GAfnC,CAAA,GAewC,QAfxC,CAeiD,IAfjD,CAesD,CAftD,EAeyD,GAfzD,CAAA,CAAA,CAAA;;AAK/B;;AAAiD,KAoBrC,eApBqC,CAAA,UAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GAoBS,OApBT,CAAA,OAAA,CAAA,CAAA,GAsB/C,CAtB+C,UAAA,CAAA,GAAA,IAAA,EAAA,GAAA,EAAA,EAAA,GAsBjB,OAtBiB,CAAA,KAAA,EAAA,CAAA,IAAA,CAAA,GAAA,KAAA;;;;AAAf,KA2BtB,OA3BsB,CAAA,CAAA,EAAA,WAAA,yBAAA,CAAA,GAAA,CA2B8B,CA3B9B,CAAA,SAAA,CA2B0C,mBA3B1C,CA2B8D,CA3B9D,CAAA,CAAA,GA2BoE,CA3BpE,GA2BwE,QA3BxE;AAKlC;;;AAAiE,KA+BrD,IA/BqD,CAAA,UAAA,SAAA,OAAA,EAAA,CAAA,GA+BhB,CA/BgB,SAAA,SAAA,CAAA,KAAA,EAAA,EAAA,GAAA,OAAA,EAAA,CAAA,GAAA,CAAA,GAAA,KAAA;;;;AAAa,KAoClE,IApCkE,CAAA,UAAA,SAAA,OAAA,EAAA,CAAA,GAoC7B,CApC6B,SAAA,SAAA,CAAA,OAAA,EAAA,GAAA,KAAA,EAAA,CAAA,GAAA,CAAA,GAAA,KAAA;;;;AAKlE,KAoCA,IApCA,CAAA,UAAY,SAAA,OAAA,EAAA,CAAA,GAoCyB,CApCzB,SAAA,SAAA,CAAA,GAAA,OAAA,EAAA,EAAA,KAAA,EAAA,CAAA,GAAA,CAAA,GAAA,KAAA;;;;AAAkC,KAyC9C,IAzC8C,CAAA,UAAA,SAAA,OAAA,EAAA,CAAA,GAyCT,CAzCS,SAAA,SAAA,CAAA,GAAA,KAAA,EAAA,EAAA,OAAA,CAAA,GAAA,CAAA,GAAA,KAAA;;;;AAAa,KA8C3D,MA9C2D,CAAA,UAAA,SAAA,OAAA,EAAA,CAAA,GA8CpB,CA9CoB,CAAA,QAAA,CAAA;;;AAUvE;AAA0D,KA6C9C,EA7C8C,CAAA,CAAA,CAAA,GAAA;EAExD,SAAA,IAAA,EAAA,IAAA;EAA8B,SAAA,KAAA,EA6Cd,CA7Cc;CAAO;AAKvC;;;AAA4E,KA8ChE,GA9CgE,CAAA,CAAA,CAAA,GAAA;EAA0B,SAAA,IAAA,EAAA,KAAA;EAAI,SAAA,KAAA,EAgDxF,CAhDwF;CAAQ;;;;AArHlH;AAKA;AAKA;;;;AAAqD,KCFzC,MDEyC,CAAA,CAAA,EAAA,CAAA,CAAA,GAAA,CCFzB,EDEyB,CCFtB,CDEsB,CAAA,GCFjB,GDEiB,CCFb,CDEa,CAAA,CAAA,GCDnD,EDCmD,CCDhD,CDCgD,ECD7C,CDC6C,CAAA,GCAnD,QDAmD,GAAA;EAKzC,CAAA,MAAA,CAAA,QAAM,GAAA,ECJO,SDIP,CCJiB,MDIjB,CCJwB,CDIxB,ECJ2B,CDI3B,CAAA,ECJ+B,CDI/B,EAAA,OAAA,CAAA;CAAmB;;;;;AAUrC;AAUY,KChBA,aDgBQ,CAAA,CAAA,CAAA,GChBW,CDgBX,SChBqB,ODgBrB,CAAA,KAAA,EAAA,CAAA,GChBwC,ODgBxC,CChBgD,MDgBhD,CChBuD,CDgBvD,EChB0D,KDgB1D,CAAA,CAAA,GChBoE,MDgBpE,CChB2E,CDgB3E,EChB8E,KDgB9E,CAAA;;;;;AAKpB,KCXK,WDWO,CAAA,CAAA,CAAY,GCXF,CDWE,SAAA;EAAM,SAAA,IAAA,EAAA,IAAA;EAC1B,SAAA,KAAA,EAAA,KAAA,EAAA;CACgB,GAAA,CAAA,GAAA,KAAA;;;;;KCPf,WDSA,CAAA,CAAA,CAAA,GCTiB,CDSjB,SAAA;EASO,SAAA,IAAA,EAAW,KAAA;EAAM,SAAA,KAAA,EAAA,KAAA,EAAA;CAAiC,GAAA,CAAA,GAAA,KAAA;;;;;AAA4B,KCZ9E,SAAA,GDY8E;EAK9E,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,OAAY,EAAA,SAAA,CCfK,MDeL,CCfY,CDeZ,ECfe,EDef,CAAA,CAAA,CAAA,ECfsB,MDetB,CAAA,CCf8B,CDe9B,CAAA,ECfkC,EDelC,CAAA;EAAM,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CCdM,MDcN,CCda,CDcb,ECdgB,EDchB,CAAA,ECdqB,MDcrB,CCd4B,CDc5B,ECd+B,EDc/B,CAAA,CAAA,CAAA,ECdsC,MDctC,CAAA,CCd8C,CDc9C,ECdiD,CDcjD,CAAA,ECdqD,EDcrD,GCd0D,EDc1D,CAAA;EAAiC,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CCZxC,MDYwC,CCZjC,CDYiC,ECZ9B,EDY8B,CAAA,ECZzB,MDYyB,CCZlB,CDYkB,ECZf,EDYe,CAAA,ECZV,MDYU,CCZH,CDYG,ECZA,EDYA,CAAA,CAAA,CAAA,ECX1D,MDW0D,CAAA,CCXlD,CDWkD,ECX/C,CDW+C,ECX5C,CDW4C,CAAA,ECXxC,EDWwC,GCXnC,EDWmC,GCX9B,EDW8B,CAAA;EAAmB,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CCT3D,MDS2D,CCTpD,CDSoD,ECTjD,EDSiD,CAAA,ECT5C,MDS4C,CCTrC,CDSqC,ECTlC,EDSkC,CAAA,ECT7B,MDS6B,CCTtB,CDSsB,ECTnB,EDSmB,CAAA,ECTd,MDSc,CCTP,CDSO,ECTJ,EDSI,CAAA,CAAA,CAAA,ECR7E,MDQ6E,CAAA,CCRrE,CDQqE,ECRlE,CDQkE,ECR/D,CDQ+D,ECR5D,CDQ4D,CAAA,ECRxD,EDQwD,GCRnD,EDQmD,GCR9C,EDQ8C,GCRzC,EDQyC,CAAA;EAAE,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CCN7D,MDM6D,CCNtD,CDMsD,ECNnD,EDMmD,CAAA,ECN9C,MDM8C,CCNvC,CDMuC,ECNpC,EDMoC,CAAA,ECN/B,MDM+B,CCNxB,CDMwB,ECNrB,EDMqB,CAAA,ECNhB,MDMgB,CCNT,CDMS,ECNN,EDMM,CAAA,ECND,MDMC,CCNM,CDMN,ECNS,EDMT,CAAA,CAAA,CAAA,ECL/E,MDK+E,CAAA,CCLvE,CDKuE,ECLpE,CDKoE,ECLjE,CDKiE,ECL9D,CDK8D,ECL3D,CDK2D,CAAA,ECLvD,EDKuD,GCLlD,EDKkD,GCL7C,EDK6C,GCLxC,EDKwC,GCLnC,EDKmC,CAAA;EAAf,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CCH9C,MDG8C,CCHvC,CDGuC,ECHpC,EDGoC,CAAA,ECH/B,MDG+B,CCHxB,CDGwB,ECHrB,EDGqB,CAAA,ECHhB,MDGgB,CCHT,CDGS,ECHN,EDGM,CAAA,ECHD,MDGC,CCHM,CDGN,ECHS,EDGT,CAAA,ECHc,MDGd,CCHqB,CDGrB,ECHwB,EDGxB,CAAA,ECH6B,MDG7B,CCHoC,CDGpC,ECHuC,EDGvC,CAAA,CAAA,CAAA,ECFhE,MDEgE,CAAA,CCFxD,CDEwD,ECFrD,CDEqD,ECFlD,CDEkD,ECF/C,CDE+C,ECF5C,CDE4C,ECFzC,CDEyC,CAAA,ECFrC,EDEqC,GCFhC,EDEgC,GCF3B,EDE2B,GCFtB,EDEsB,GCFjB,EDEiB,GCFZ,EDEY,CAAA;EAAuB,CAAA,UAAA,SCCtE,MDDsE,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,OAAA,ECE/E,CDF+E,CAAA,ECGvF,MDHuF,CAAA,kBAAC,MCGzD,CDHyD,GCGrD,WDHqD,CCGzC,CDHyC,CCGvC,CDHuC,CAAA,CAAA,EAKjF,ECFiD,WDEjD,CCF6D,CDEjD,CAAA,MAAA,CAAA,CAAA,CAAA;EAAM,CAAA,UCCjB,MDDiB,CAAA,MAAA,ECCF,MDDE,CAAA,OAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,OAAA,ECEjB,CDFiB,CAAA,ECGzB,MDHyB,CAAA,kBAA0C,MCGpC,CDHoC,GCGhC,WDHgC,CCGpB,CDHoB,CCGlB,CDHkB,CAAA,CAAA,EAAiB,ECG5B,WDH4B,CCGhB,CDHgB,CAAA,MCGR,CDHQ,CAAA,CAAA,CAAA;CAAE;;;;AAK3F;;AAAwE,KCU5D,aAAA,GDV4D;EAAgB,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,MAAA,ECYhE,MDZgE,CCYzD,CDZyD,ECYtD,CDZsD,CAAA,EAAA,EAAA,EAAA,CAAA,KAAA,ECYtC,CDZsC,EAAA,GCYhC,ODZgC,CCYxB,MDZwB,CCYjB,CDZiB,ECYd,EDZc,CAAA,CAAA,CAAA,ECYP,ODZO,CCYC,MDZD,CCYQ,CDZR,ECY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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nicolastoulemont/std",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Collection of utilty function for this monorepo",
5
5
  "license": "ISC",
6
6
  "files": [
@@ -39,18 +39,10 @@
39
39
  "types": "./dist/flow/index.d.mts",
40
40
  "default": "./dist/flow/index.mjs"
41
41
  },
42
- "./fn": {
43
- "types": "./dist/fn/index.d.mts",
44
- "default": "./dist/fn/index.mjs"
45
- },
46
42
  "./fx": {
47
43
  "types": "./dist/fx/index.d.mts",
48
44
  "default": "./dist/fx/index.mjs"
49
45
  },
50
- "./gen": {
51
- "types": "./dist/gen/index.d.mts",
52
- "default": "./dist/gen/index.mjs"
53
- },
54
46
  "./option": {
55
47
  "types": "./dist/option/index.d.mts",
56
48
  "default": "./dist/option/index.mjs"
@@ -1,318 +0,0 @@
1
- import { i as createHashMethod, n as createADTHashMethod, r as createEqualsMethod, t as createADTEqualsMethod } from "./equality-YMebYwm1.mjs";
2
- import { t as isPromise } from "./is-promise-BEl3eGZg.mjs";
3
- import { n as err, r as ok } from "./result-C5tPWR60.mjs";
4
-
5
- //#region src/shared/is-plain-object.ts
6
- /**
7
- * Check if a value is a plain object.
8
- * A plain object is an object created with `{}`, `Object.create(null)`, or `new Object()`.
9
- * Arrays, functions, dates, maps, etc. are not considered plain objects.
10
- */
11
- function isPlainObject(value) {
12
- if (value === null || typeof value !== "object") return false;
13
- const proto = Object.getPrototypeOf(value);
14
- return proto === null || proto === Object.prototype;
15
- }
16
-
17
- //#endregion
18
- //#region src/adt/adt.utils.ts
19
- /**
20
- * Check if a value is a RecordObject created by record().
21
- * RecordObjects are callable functions with static properties.
22
- */
23
- function isRecord(value) {
24
- return typeof value === "function" && "_record" in value && value["_record"] === true;
25
- }
26
- /**
27
- * Wrap Standard Schema validation result into our Result type.
28
- */
29
- function wrapValidationResult(result) {
30
- if (result.issues) return err({ issues: result.issues.map((issue) => ({
31
- message: issue.message,
32
- path: issue.path?.map((segment) => typeof segment === "object" && "key" in segment ? segment.key : segment)
33
- })) });
34
- return ok(result.value);
35
- }
36
- /**
37
- * Validate data using a Standard Schema, enforcing sync-only validation.
38
- * Throws if the schema returns a Promise.
39
- */
40
- function validateSync(schema, data$1, __typename) {
41
- const result = schema["~standard"].validate(data$1);
42
- if (isPromise(result)) throw new Error(`Async validation not supported. Schema for "${__typename}" returned a Promise. Use a synchronous schema or handle async validation separately.`);
43
- return wrapValidationResult(result);
44
- }
45
- /**
46
- * Create a type guard function for a specific __typename.
47
- */
48
- function createIsGuard(__typename) {
49
- return (value) => {
50
- return isPlainObject(value) && "__typename" in value && value["__typename"] === __typename;
51
- };
52
- }
53
- /**
54
- * Create a type guard function for multiple __typenames (ADT root guard).
55
- */
56
- function createIsAnyGuard(__typenames) {
57
- const __typenameSet = new Set(__typenames);
58
- return (value) => {
59
- return isPlainObject(value) && "__typename" in value && typeof value["__typename"] === "string" && __typenameSet.has(value["__typename"]);
60
- };
61
- }
62
-
63
- //#endregion
64
- //#region src/adt/adt.codec.ts
65
- /**
66
- * Create a CodecError with consistent structure.
67
- */
68
- function createCodecError(kind, message, cause, validationIssues) {
69
- if (cause !== void 0 && validationIssues !== void 0) return {
70
- kind,
71
- message,
72
- cause,
73
- validationIssues
74
- };
75
- if (cause !== void 0) return {
76
- kind,
77
- message,
78
- cause
79
- };
80
- if (validationIssues !== void 0) return {
81
- kind,
82
- message,
83
- validationIssues
84
- };
85
- return {
86
- kind,
87
- message
88
- };
89
- }
90
- /**
91
- * Built-in JSON codec that works with any schema.
92
- * Encodes to JSON string and decodes with JSON.parse.
93
- */
94
- function createJsonCodec(__typename) {
95
- return {
96
- to: (value) => {
97
- return JSON.stringify(value);
98
- },
99
- from: (input) => {
100
- try {
101
- const parsed = JSON.parse(input);
102
- if (typeof parsed === "object" && parsed !== null && "__typename" in parsed) {
103
- const { __typename: _, ...rest } = parsed;
104
- return rest;
105
- }
106
- return parsed;
107
- } catch {
108
- return null;
109
- }
110
- }
111
- };
112
- }
113
- /**
114
- * Create the "to" methods object with JSON codec and custom codecs.
115
- * All methods return Result<T, CodecError> for consistent error handling.
116
- */
117
- function createToMethods(__typename, schema, customCodecs) {
118
- const jsonCodec = createJsonCodec(__typename);
119
- const to = { json: (value) => {
120
- const result = validateSync(schema, {
121
- ...value,
122
- __typename
123
- }, __typename);
124
- if (!result.ok) return err(createCodecError("ValidationError", `Cannot encode invalid data: ${result.error.issues.map((i) => i.message).join(", ")}`, void 0, result.error.issues));
125
- try {
126
- return ok(jsonCodec.to(result.value));
127
- } catch (e) {
128
- return err(createCodecError("EncodingError", `JSON encoding failed: ${e instanceof Error ? e.message : String(e)}`, e));
129
- }
130
- } };
131
- if (customCodecs) for (const [name, codec] of Object.entries(customCodecs)) to[name] = (value) => {
132
- const result = validateSync(schema, {
133
- ...value,
134
- __typename
135
- }, __typename);
136
- if (!result.ok) return err(createCodecError("ValidationError", `Cannot encode invalid data: ${result.error.issues.map((i) => i.message).join(", ")}`, void 0, result.error.issues));
137
- try {
138
- return ok(codec.to(result.value));
139
- } catch (e) {
140
- return err(createCodecError("EncodingError", `Encoding with codec '${name}' failed: ${e instanceof Error ? e.message : String(e)}`, e));
141
- }
142
- };
143
- return to;
144
- }
145
- /**
146
- * Create the "from" methods object with JSON codec and custom codecs.
147
- * All methods return Result<T, CodecError> for consistent error handling.
148
- */
149
- function createFromMethods(__typename, schema, customCodecs) {
150
- const jsonCodec = createJsonCodec(__typename);
151
- const from = { json: (input) => {
152
- const decoded = jsonCodec.from(input);
153
- if (decoded === null) return err(createCodecError("DecodingError", "Invalid JSON format"));
154
- const result = validateSync(schema, {
155
- ...decoded,
156
- __typename
157
- }, __typename);
158
- if (!result.ok) return err(createCodecError("ValidationError", "Decoded data failed schema validation", void 0, result.error.issues));
159
- return ok({
160
- ...result.value,
161
- __typename
162
- });
163
- } };
164
- if (customCodecs) for (const [name, codec] of Object.entries(customCodecs)) from[name] = (input) => {
165
- let decoded;
166
- try {
167
- decoded = codec.from(input);
168
- } catch (e) {
169
- return err(createCodecError("DecodingError", `Decoding with codec '${name}' threw an error`, e));
170
- }
171
- if (decoded === null) return err(createCodecError("DecodingError", `Codec '${name}' failed to decode input`));
172
- const result = validateSync(schema, {
173
- ...decoded,
174
- __typename
175
- }, __typename);
176
- if (!result.ok) return err(createCodecError("ValidationError", "Decoded data failed schema validation", void 0, result.error.issues));
177
- return ok({
178
- ...result.value,
179
- __typename
180
- });
181
- };
182
- return from;
183
- }
184
-
185
- //#endregion
186
- //#region src/adt/adt.record.ts
187
- function record(__typename, schema, codecs) {
188
- const isGuard = createIsGuard(__typename);
189
- const to = createToMethods(__typename, schema, codecs);
190
- const from = createFromMethods(__typename, schema, codecs);
191
- const equals = createEqualsMethod(__typename);
192
- const hash = createHashMethod(__typename);
193
- const constructor = (input) => {
194
- const result = validateSync(schema, {
195
- ...input,
196
- __typename
197
- }, __typename);
198
- if (!result.ok) return err(result.error);
199
- return ok({
200
- ...result.value,
201
- __typename
202
- });
203
- };
204
- constructor._record = true;
205
- constructor.__typename = __typename;
206
- constructor.schema = schema;
207
- if (codecs) constructor.codecs = codecs;
208
- constructor.is = isGuard;
209
- constructor.to = to;
210
- constructor.from = from;
211
- constructor.equals = equals;
212
- constructor.hash = hash;
213
- return constructor;
214
- }
215
-
216
- //#endregion
217
- //#region src/adt/adt.data.ts
218
- /**
219
- * Compose records or schemas into a discriminated union (ADT).
220
- *
221
- * Accepts either:
222
- * - Pre-built RecordObjects from record() (codecs are preserved)
223
- * - Raw Standard Schema validators (will be wrapped internally)
224
- *
225
- * When using pre-built records, the object key overrides the original __typename.
226
- *
227
- * @template R - Record of variant names to RecordObjects or StandardSchema validators
228
- * @param name - The name of this ADT (for identification)
229
- * @param records - An object mapping __typename names to RecordObjects or schemas
230
- * @returns An ADT object with accessors for each variant
231
- *
232
- * @see {@link record} for creating individual record types
233
- * @see {@link match} for exhaustive pattern matching on ADT values
234
- *
235
- * @example
236
- * ```ts
237
- * // From pre-built records
238
- * const Circle = record('Circle', CircleSchema)
239
- * const Square = record('Square', SquareSchema)
240
- * const Shape = data('Shape', { Circle, Square })
241
- *
242
- * // From raw schemas (JSON codec is automatically included)
243
- * const Shape = data('Shape', {
244
- * Circle: CircleSchema,
245
- * Square: SquareSchema
246
- * })
247
- *
248
- * // JSON codec works on all variants
249
- * Shape.Circle.to.json({ radius: 10 })
250
- * Shape.Circle.from.json(jsonString)
251
- *
252
- * // Mixed
253
- * const Shape = data('Shape', {
254
- * Circle, // Pre-built record
255
- * Square: SquareSchema // Raw schema
256
- * })
257
- *
258
- * // Usage
259
- * Shape.Circle({ radius: 10 })
260
- * Shape.is(someValue) // type guard for any variant
261
- * Shape.Circle.is(someValue) // type guard for Circle
262
- * ```
263
- */
264
- function data(name, records) {
265
- const typenames = Object.keys(records);
266
- const variants = {};
267
- for (const [__typename, def] of Object.entries(records)) if (isRecord(def)) if (def.__typename === __typename) variants[__typename] = def;
268
- else if (def.codecs) variants[__typename] = record(__typename, def.schema, def.codecs);
269
- else variants[__typename] = record(__typename, def.schema);
270
- else variants[__typename] = record(__typename, def);
271
- return {
272
- _name: name,
273
- is: createIsAnyGuard(typenames),
274
- equals: createADTEqualsMethod(typenames),
275
- hash: createADTHashMethod(typenames),
276
- ...variants
277
- };
278
- }
279
-
280
- //#endregion
281
- //#region src/adt/adt.match.ts
282
- /**
283
- * Exhaustive pattern matching for discriminated unions.
284
- *
285
- * TypeScript will error if any variant is missing from handlers,
286
- * ensuring exhaustive handling of all cases.
287
- *
288
- * @template T - The discriminated union type (must have readonly __typename)
289
- * @template TResult - The return type of all handlers
290
- * @template Handlers - The handler object type (inferred)
291
- * @param value - A discriminated union value with __typename
292
- * @param handlers - An object with a handler function for each variant
293
- * @returns The result of calling the matching handler
294
- *
295
- * @see {@link data} for creating discriminated unions
296
- * @see {@link record} for creating individual record types
297
- *
298
- * @example
299
- * ```ts
300
- * const Shape = data('Shape', { Circle, Square })
301
- * type Shape = Infer<typeof Shape>
302
- *
303
- * function describeShape(shape: Shape): string {
304
- * return match(shape, {
305
- * Circle: (c) => `Circle with radius ${c.radius}`,
306
- * Square: (s) => `Square with size ${s.size}`,
307
- * })
308
- * }
309
- * ```
310
- */
311
- function match(value, handlers) {
312
- const handler = handlers[value.__typename];
313
- return handler(value);
314
- }
315
-
316
- //#endregion
317
- export { createCodecError as i, data as n, record as r, match as t };
318
- //# sourceMappingURL=adt-DraJkmij.mjs.map