@nicolastoulemont/std 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 (94) hide show
  1. package/README.md +1 -0
  2. package/dist/adt/index.d.mts +2 -0
  3. package/dist/adt/index.mjs +3 -0
  4. package/dist/adt-DraJkmij.mjs +318 -0
  5. package/dist/adt-DraJkmij.mjs.map +1 -0
  6. package/dist/apply-fn.types-CXDoeA7D.d.mts +8 -0
  7. package/dist/apply-fn.types-CXDoeA7D.d.mts.map +1 -0
  8. package/dist/brand/index.d.mts +2 -0
  9. package/dist/brand/index.mjs +3 -0
  10. package/dist/brand-CTaxGuU9.mjs +165 -0
  11. package/dist/brand-CTaxGuU9.mjs.map +1 -0
  12. package/dist/data/index.d.mts +2 -0
  13. package/dist/data/index.mjs +3 -0
  14. package/dist/data-DgzWI4R_.mjs +244 -0
  15. package/dist/data-DgzWI4R_.mjs.map +1 -0
  16. package/dist/discriminator.types-DCkkrCj4.d.mts +7 -0
  17. package/dist/discriminator.types-DCkkrCj4.d.mts.map +1 -0
  18. package/dist/either/index.d.mts +2 -0
  19. package/dist/either/index.mjs +3 -0
  20. package/dist/either-CnOBUH7a.mjs +598 -0
  21. package/dist/either-CnOBUH7a.mjs.map +1 -0
  22. package/dist/equality/index.d.mts +86 -0
  23. package/dist/equality/index.d.mts.map +1 -0
  24. package/dist/equality/index.mjs +3 -0
  25. package/dist/equality-YMebYwm1.mjs +201 -0
  26. package/dist/equality-YMebYwm1.mjs.map +1 -0
  27. package/dist/err/index.d.mts +2 -0
  28. package/dist/err/index.mjs +3 -0
  29. package/dist/err-BqQApH9r.mjs +169 -0
  30. package/dist/err-BqQApH9r.mjs.map +1 -0
  31. package/dist/flow/index.d.mts +2 -0
  32. package/dist/flow/index.mjs +3 -0
  33. package/dist/flow-pRdnqmMY.mjs +21 -0
  34. package/dist/flow-pRdnqmMY.mjs.map +1 -0
  35. package/dist/gen/index.d.mts +3 -0
  36. package/dist/gen/index.mjs +3 -0
  37. package/dist/gen-YfMC9sDT.mjs +42 -0
  38. package/dist/gen-YfMC9sDT.mjs.map +1 -0
  39. package/dist/index-BCrD3pEs.d.mts +222 -0
  40. package/dist/index-BCrD3pEs.d.mts.map +1 -0
  41. package/dist/index-BR7takNf.d.mts +186 -0
  42. package/dist/index-BR7takNf.d.mts.map +1 -0
  43. package/dist/index-CcPnhWje.d.mts +72 -0
  44. package/dist/index-CcPnhWje.d.mts.map +1 -0
  45. package/dist/index-CtJ8Ks9X.d.mts +105 -0
  46. package/dist/index-CtJ8Ks9X.d.mts.map +1 -0
  47. package/dist/index-CvGTIg9L.d.mts +211 -0
  48. package/dist/index-CvGTIg9L.d.mts.map +1 -0
  49. package/dist/index-DPVT0yK4.d.mts +50 -0
  50. package/dist/index-DPVT0yK4.d.mts.map +1 -0
  51. package/dist/index-DgOAEEpu.d.mts +79 -0
  52. package/dist/index-DgOAEEpu.d.mts.map +1 -0
  53. package/dist/index-Dtq3kmln.d.mts +394 -0
  54. package/dist/index-Dtq3kmln.d.mts.map +1 -0
  55. package/dist/index-bLRqTe5I.d.mts +80 -0
  56. package/dist/index-bLRqTe5I.d.mts.map +1 -0
  57. package/dist/index-tkgTLCoq.d.mts +80 -0
  58. package/dist/index-tkgTLCoq.d.mts.map +1 -0
  59. package/dist/index-wTrnFgYg.d.mts +57 -0
  60. package/dist/index-wTrnFgYg.d.mts.map +1 -0
  61. package/dist/index-yyBTq8Ys.d.mts +79 -0
  62. package/dist/index-yyBTq8Ys.d.mts.map +1 -0
  63. package/dist/index.d.mts +135 -0
  64. package/dist/index.d.mts.map +1 -0
  65. package/dist/index.mjs +41 -0
  66. package/dist/index.mjs.map +1 -0
  67. package/dist/is-promise-BEl3eGZg.mjs +11 -0
  68. package/dist/is-promise-BEl3eGZg.mjs.map +1 -0
  69. package/dist/option/index.d.mts +3 -0
  70. package/dist/option/index.mjs +3 -0
  71. package/dist/option-CKHDOVea.mjs +410 -0
  72. package/dist/option-CKHDOVea.mjs.map +1 -0
  73. package/dist/option.types-D6TYG_i3.d.mts +89 -0
  74. package/dist/option.types-D6TYG_i3.d.mts.map +1 -0
  75. package/dist/pipe/index.d.mts +2 -0
  76. package/dist/pipe/index.mjs +3 -0
  77. package/dist/pipe-GYxZNkPB.mjs +10 -0
  78. package/dist/pipe-GYxZNkPB.mjs.map +1 -0
  79. package/dist/predicate/index.d.mts +2 -0
  80. package/dist/predicate/index.mjs +3 -0
  81. package/dist/predicate-B6-EdVgW.mjs +293 -0
  82. package/dist/predicate-B6-EdVgW.mjs.map +1 -0
  83. package/dist/result/index.d.mts +3 -0
  84. package/dist/result/index.mjs +3 -0
  85. package/dist/result-C5tPWR60.mjs +422 -0
  86. package/dist/result-C5tPWR60.mjs.map +1 -0
  87. package/dist/result-D7XJ96pv.mjs +1 -0
  88. package/dist/result.types-Ce7AEOzj.d.mts +156 -0
  89. package/dist/result.types-Ce7AEOzj.d.mts.map +1 -0
  90. package/dist/run/index.d.mts +2 -0
  91. package/dist/run/index.mjs +3 -0
  92. package/dist/run-DpXkImo9.mjs +10 -0
  93. package/dist/run-DpXkImo9.mjs.map +1 -0
  94. package/package.json +89 -0
@@ -0,0 +1,211 @@
1
+ import { g as Yieldable, i as Result } from "./result.types-Ce7AEOzj.mjs";
2
+ import { a as Option } from "./option.types-D6TYG_i3.mjs";
3
+
4
+ //#region src/either/either.types.d.ts
5
+
6
+ /**
7
+ * A discriminated union representing a choice between two alternatives.
8
+ * By convention: Right = correct/preferred, Left = alternative.
9
+ *
10
+ * Unlike Result, neither side has inherent error semantics. Use Either when
11
+ * both outcomes are valid alternatives (e.g., cached vs fresh data).
12
+ *
13
+ * Use Result when modeling success/failure with error semantics.
14
+ *
15
+ * Implements Yieldable protocol for use in Do computations with yield*.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * // Either: Valid alternatives
20
+ * type DataSource = Either<CachedData, FreshData>
21
+ *
22
+ * // Result: Success/failure
23
+ * type ApiResult = Result<User, ApiError>
24
+ * ```
25
+ */
26
+ type Either$1<L, R> = Yieldable<R, L> & ({
27
+ readonly right: true;
28
+ readonly value: R;
29
+ } | {
30
+ readonly right: false;
31
+ readonly value: L;
32
+ });
33
+ /**
34
+ * Extract the left type from an Either
35
+ */
36
+ type LeftValue<E> = E extends {
37
+ readonly right: false;
38
+ readonly value: infer L;
39
+ } ? L : never;
40
+ /**
41
+ * Extract the right type from an Either
42
+ */
43
+ type RightValue<E> = E extends {
44
+ readonly right: true;
45
+ readonly value: infer R;
46
+ } ? R : never;
47
+ /**
48
+ * Return type for all() with array input - preserves tuple structure
49
+ */
50
+ type AllArrayReturn<T extends readonly Either$1<unknown, unknown>[]> = Either$1<LeftValue<T[number]>, { -readonly [K in keyof T]: RightValue<T[K]> }>;
51
+ /**
52
+ * Return type for all() with object input - preserves object structure
53
+ */
54
+ type AllObjectReturn<T extends Record<string, Either$1<unknown, unknown>>> = Either$1<LeftValue<T[keyof T]>, { -readonly [K in keyof T]: RightValue<T[K]> }>;
55
+ /**
56
+ * Type-safe interface for map() with async detection
57
+ * Async overload must come first for proper type inference
58
+ */
59
+ type EitherMap = {
60
+ <A, B>(fn: (value: A) => Promise<B>): <L>(either: Either$1<L, A>) => Promise<Either$1<L, B>>;
61
+ <A, B>(fn: (value: A) => B): <L>(either: Either$1<L, A>) => Either$1<L, B>;
62
+ };
63
+ /**
64
+ * Type-safe interface for mapLeft() with async detection
65
+ */
66
+ type EitherMapLeft = {
67
+ <L1, L2$1>(fn: (value: L1) => Promise<L2$1>): <R>(either: Either$1<L1, R>) => Promise<Either$1<L2$1, R>>;
68
+ <L1, L2$1>(fn: (value: L1) => L2$1): <R>(either: Either$1<L1, R>) => Either$1<L2$1, R>;
69
+ };
70
+ /**
71
+ * Type-safe interface for bimap() with async detection
72
+ */
73
+ type EitherBimap = {
74
+ <L1, L2$1, R1, R2$1>(fnLeft: (left: L1) => Promise<L2$1>, fnRight: (right: R1) => Promise<R2$1>): (either: Either$1<L1, R1>) => Promise<Either$1<L2$1, R2$1>>;
75
+ <L1, L2$1, R1, R2$1>(fnLeft: (left: L1) => Promise<L2$1>, fnRight: (right: R1) => R2$1): (either: Either$1<L1, R1>) => Promise<Either$1<L2$1, R2$1>>;
76
+ <L1, L2$1, R1, R2$1>(fnLeft: (left: L1) => L2$1, fnRight: (right: R1) => Promise<R2$1>): (either: Either$1<L1, R1>) => Promise<Either$1<L2$1, R2$1>>;
77
+ <L1, L2$1, R1, R2$1>(fnLeft: (left: L1) => L2$1, fnRight: (right: R1) => R2$1): (either: Either$1<L1, R1>) => Either$1<L2$1, R2$1>;
78
+ };
79
+ /**
80
+ * Type-safe interface for flatMap() with async detection and left union
81
+ */
82
+ type EitherFlatMap = {
83
+ <A, B, L2$1>(fn: (value: A) => Promise<Either$1<L2$1, B>>): <L>(either: Either$1<L, A>) => Promise<Either$1<L | L2$1, B>>;
84
+ <A, B, L2$1>(fn: (value: A) => Either$1<L2$1, B>): <L>(either: Either$1<L, A>) => Either$1<L | L2$1, B>;
85
+ };
86
+ /**
87
+ * Type-safe interface for tap() with async detection
88
+ */
89
+ type EitherTap = {
90
+ <A>(fn: (value: A) => Promise<void>): <L>(either: Either$1<L, A>) => Promise<Either$1<L, A>>;
91
+ <A>(fn: (value: A) => void): <L>(either: Either$1<L, A>) => Either$1<L, A>;
92
+ };
93
+ /**
94
+ * Type-safe interface for tapLeft() with async detection
95
+ */
96
+ type EitherTapLeft = {
97
+ <L>(fn: (value: L) => Promise<void>): <R>(either: Either$1<L, R>) => Promise<Either$1<L, R>>;
98
+ <L>(fn: (value: L) => void): <R>(either: Either$1<L, R>) => Either$1<L, R>;
99
+ };
100
+ /**
101
+ * Type-safe interface for orElse() with async detection and right union
102
+ */
103
+ type EitherOrElse = {
104
+ <L1, L2$1, R2$1>(fn: (left: L1) => Promise<Either$1<L2$1, R2$1>>): <R>(either: Either$1<L1, R>) => Promise<Either$1<L2$1, R | R2$1>>;
105
+ <L1, L2$1, R2$1>(fn: (left: L1) => Either$1<L2$1, R2$1>): <R>(either: Either$1<L1, R>) => Either$1<L2$1, R | R2$1>;
106
+ };
107
+ /**
108
+ * Type-safe interface for filter()
109
+ */
110
+ type EitherFilter = {
111
+ <R, L2$1>(predicate: (value: R) => boolean, onFail: (value: R) => L2$1): <L>(either: Either$1<L, R>) => Either$1<L | L2$1, R>;
112
+ };
113
+ //#endregion
114
+ //#region src/either/either.d.ts
115
+
116
+ /**
117
+ * Combine multiple Eithers into a single Either.
118
+ * Short-circuits on the first left value.
119
+ *
120
+ * Supports both array and object inputs with full type preservation.
121
+ *
122
+ * @param eithers - Array or object of Eithers to combine
123
+ * @returns Either with all right values or first left
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * // Array form (with const assertion for tuple typing)
128
+ * all([right(1), right("hello")] as const)
129
+ * // => right([1, "hello"])
130
+ *
131
+ * all([right(1), left("error"), right(3)])
132
+ * // => left("error")
133
+ *
134
+ * // Object form
135
+ * all({ a: right(1), b: right("hello") })
136
+ * // => right({ a: 1, b: "hello" })
137
+ * ```
138
+ */
139
+ declare function all<const T extends readonly Either$1<unknown, unknown>[]>(eithers: T): AllArrayReturn<T>;
140
+ declare function all<const T extends Record<string, Either$1<unknown, unknown>>>(eithers: T): AllObjectReturn<T>;
141
+ /**
142
+ * Either namespace containing all utility functions for working with Either types.
143
+ *
144
+ * Either represents a value that can be one of two types: Left<L> or Right<R>.
145
+ * By convention, Right is the "success" or preferred path, while Left represents
146
+ * an alternative outcome (not necessarily an error, unlike Result).
147
+ *
148
+ * Use Either when both outcomes are valid and meaningful, not just success/failure.
149
+ * For error handling, prefer Result instead.
150
+ *
151
+ * @see {@link Result} for success/error semantics
152
+ * @see {@link Option} for presence/absence semantics
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * import { Either, pipe } from '@repo/std'
157
+ * import type { Either as EitherType } from '@repo/std'
158
+ *
159
+ * // Either for branching logic (cache vs fresh data)
160
+ * const fetchOrCache = (id: number): EitherType<CachedData, FreshData> =>
161
+ * cache.has(id) ? Either.left(cache.get(id)) : Either.right(fetch(id))
162
+ *
163
+ * const result = pipe(
164
+ * fetchOrCache(1),
165
+ * Either.map(data => data.value),
166
+ * Either.unwrapOr(defaultValue)
167
+ * )
168
+ *
169
+ * // Async example
170
+ * const processed = await pipe(
171
+ * Either.right(userId),
172
+ * Either.map(async id => await fetchUser(id)),
173
+ * Either.flatMap(async user => Either.right(await enrichUser(user)))
174
+ * )
175
+ * ```
176
+ */
177
+ declare const Either: {
178
+ readonly left: <L>(value: L) => Either$1<L, never>;
179
+ readonly right: <R>(value: R) => Either$1<never, R>;
180
+ readonly isLeft: <L, R>(either: Either$1<L, R>) => either is Extract<Either$1<L, R>, {
181
+ right: false;
182
+ }>;
183
+ readonly isRight: <L, R>(either: Either$1<L, R>) => either is Extract<Either$1<L, R>, {
184
+ right: true;
185
+ }>;
186
+ readonly map: EitherMap;
187
+ readonly mapLeft: EitherMapLeft;
188
+ readonly bimap: EitherBimap;
189
+ readonly flatMap: EitherFlatMap;
190
+ readonly tap: EitherTap;
191
+ readonly tapLeft: EitherTapLeft;
192
+ readonly orElse: EitherOrElse;
193
+ readonly swap: <L, R>() => (either: Either$1<L, R>) => Either$1<R, L>;
194
+ readonly filter: EitherFilter;
195
+ readonly all: typeof all;
196
+ readonly unwrapOr: <R>(defaultValue: R) => <L>(either: Either$1<L, R>) => R;
197
+ readonly unwrapOrElse: <L, R>(fn: (left: L) => R) => (either: Either$1<L, R>) => R;
198
+ readonly match: <L, R, U$1>(handlers: {
199
+ left: (value: L) => U$1;
200
+ right: (value: R) => U$1;
201
+ }) => (either: Either$1<L, R>) => U$1;
202
+ readonly fromResult: <R, E>(result: Result<R, E>) => Either$1<E, R>;
203
+ readonly toResult: <L, R>(either: Either$1<L, R>) => Result<R, L>;
204
+ readonly fromOption: <R, L>(option: Option<R>, onNone: () => L) => Either$1<L, R>;
205
+ readonly toOption: <L, R>(either: Either$1<L, R>) => Option<R>;
206
+ readonly fromNullable: <R, L>(value: R | null | undefined, onNull: () => L) => Either$1<L, R>;
207
+ readonly fromPredicate: <R, L>(value: R, predicate: (value: R) => boolean, onFail: (value: R) => L) => Either$1<L, R>;
208
+ };
209
+ //#endregion
210
+ export { EitherFilter as a, EitherMapLeft as c, EitherTapLeft as d, EitherBimap as i, EitherOrElse as l, all as n, EitherFlatMap as o, Either$1 as r, EitherMap as s, Either as t, EitherTap as u };
211
+ //# sourceMappingURL=index-CvGTIg9L.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CvGTIg9L.d.mts","names":[],"sources":["../src/either/either.types.ts","../src/either/either.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { d as AsyncComputation, f as AsyncGenGenerator, h as SyncComputation, m as GenGenerator } from "./result.types-Ce7AEOzj.mjs";
2
+
3
+ //#region src/gen/gen.d.ts
4
+
5
+ /**
6
+ * Create a computation from a sync generator function.
7
+ * Returns a SyncComputation where run() returns Result directly (no Promise).
8
+ *
9
+ * @template A - The success value type
10
+ * @template E - The error type
11
+ * @param generatorFn - A function that returns a sync generator
12
+ * @returns SyncComputation<A, E>
13
+ *
14
+ * @see {@link run} for immediate execution without storing the computation
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const result = gen(function* () {
19
+ * const a = yield* Result.yield(divide(10, 2))
20
+ * const b = yield* Result.yield(divide(a, 2))
21
+ * return b
22
+ * }).run()
23
+ * // Type: Result<number, "DivisionByZero">
24
+ * ```
25
+ */
26
+ declare function gen<A, E>(generatorFn: () => GenGenerator<A, E>): SyncComputation<A, E>;
27
+ /**
28
+ * Create a computation from an async generator function.
29
+ * Returns an AsyncComputation where run() returns Promise<Result>.
30
+ *
31
+ * @template A - The success value type
32
+ * @template E - The error type
33
+ * @param generatorFn - A function that returns an async generator
34
+ * @returns AsyncComputation<A, E>
35
+ *
36
+ * @see {@link run} for immediate execution without storing the computation
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const result = await gen(async function* () {
41
+ * const data = yield* Result.yield(await fetchData(1))
42
+ * return data
43
+ * }).run()
44
+ * // Type: Promise<Result<string, "NetworkError">>
45
+ * ```
46
+ */
47
+ declare function gen<A, E>(generatorFn: () => AsyncGenGenerator<A, E>): AsyncComputation<A, E>;
48
+ //#endregion
49
+ export { gen as t };
50
+ //# sourceMappingURL=index-DPVT0yK4.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DPVT0yK4.d.mts","names":[],"sources":["../src/gen/gen.ts"],"sourcesContent":[],"mappings":";;;;;;AAyBA;;;;;;;;AAsBA;;;;;;;;;;;iBAtBgB,6BAA6B,aAAa,GAAG,KAAK,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;iBAsBrE,6BAA6B,kBAAkB,GAAG,KAAK,iBAAiB,GAAG"}
@@ -0,0 +1,79 @@
1
+ import { a as ResultFilter, c as ResultMapErr, i as Result$1, l as ResultOrElse, n as AllObjectReturn, o as ResultFlatMap, r as FromTryReturn, s as ResultMap, t as AllArrayReturn, u as ResultTap } from "./result.types-Ce7AEOzj.mjs";
2
+
3
+ //#region src/result/result.d.ts
4
+
5
+ /**
6
+ * Combine multiple Results into a single Result.
7
+ * Supports both array and object inputs.
8
+ *
9
+ * - If all Results are ok, returns ok with all values
10
+ * - If any Result is an error, returns the first error (short-circuits)
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * // Array form (use `as const` for tuple types) - returns Result<[number, string], E>
15
+ * const [num, str] = pipe(
16
+ * Result.all([parseNumber(input), parseString(other)] as const),
17
+ * Result.unwrapOr([0, ''])
18
+ * )
19
+ *
20
+ * // Object form - returns Result<{ user: User, config: Config }, E>
21
+ * pipe(
22
+ * Result.all({ user: fetchUser(id), config: loadConfig() }),
23
+ * Result.tap(({ user, config }) => console.log(user.name, config.theme))
24
+ * )
25
+ * ```
26
+ */
27
+ declare function all<T extends readonly Result$1<unknown, unknown>[]>(results: T): AllArrayReturn<T>;
28
+ declare function all<T extends Record<string, Result$1<unknown, unknown>>>(results: T): AllObjectReturn<T>;
29
+ /**
30
+ * Result namespace containing all utility functions for working with Result types.
31
+ *
32
+ * Result represents either success (ok) or failure (err). Use this for operations
33
+ * that can fail with typed errors.
34
+ *
35
+ * @see {@link Option} for presence/absence semantics (no error information)
36
+ * @see {@link Either} for two valid outcomes (not just success/failure)
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * import { Result, pipe } from '@repo/std'
41
+ * import type { Result as ResultType } from '@repo/std'
42
+ *
43
+ * const divide = (a: number, b: number): ResultType<number, string> =>
44
+ * b === 0 ? Result.err('division by zero') : Result.ok(a / b)
45
+ *
46
+ * const result = pipe(
47
+ * divide(10, 2),
48
+ * Result.map(n => n * 2),
49
+ * Result.unwrapOr(0)
50
+ * )
51
+ * ```
52
+ */
53
+ declare const Result: {
54
+ readonly ok: <T>(value: T) => Result$1<T, never>;
55
+ readonly err: <E>(error: E) => Result$1<never, E>;
56
+ readonly isOk: <T, E>(result: Result$1<T, E>) => result is Extract<Result$1<T, E>, {
57
+ ok: true;
58
+ }>;
59
+ readonly isErr: <T, E>(result: Result$1<T, E>) => result is Extract<Result$1<T, E>, {
60
+ ok: false;
61
+ }>;
62
+ readonly map: ResultMap;
63
+ readonly mapErr: ResultMapErr;
64
+ readonly flatMap: ResultFlatMap;
65
+ readonly tap: ResultTap;
66
+ readonly orElse: ResultOrElse;
67
+ readonly filter: ResultFilter;
68
+ readonly all: typeof all;
69
+ readonly unwrapOr: <T>(defaultValue: T) => <E>(result: Result$1<T, E>) => T;
70
+ readonly unwrapOrElse: <E, T>(fn: (error: E) => T) => (result: Result$1<T, E>) => T;
71
+ readonly match: <T, E, U>(handlers: {
72
+ ok: (value: T) => U;
73
+ err: (error: E) => U;
74
+ }) => (result: Result$1<T, E>) => U;
75
+ readonly fromTry: <T>(fn: () => T) => FromTryReturn<T>;
76
+ };
77
+ //#endregion
78
+ export { all as n, Result as t };
79
+ //# sourceMappingURL=index-DgOAEEpu.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DgOAEEpu.d.mts","names":[],"sources":["../src/result/result.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;iBAqVgB,uBAAuB,uCAAyC,IAAI,eAAe;iBACnF,cAAc,eAAe,sCAAwC,IAAI,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;cA2K5F;0BApegB,MAAI,SAAW;2BAoBd,MAAI,gBAAkB;gCA2BjB,SAAW,GAAG,iBAAe,QAAQ,SAAW,GAAG;;;iCAgBlD,SAAW,GAAG,iBAAe,QAAQ,SAAW,GAAG;;;;;;;;;;uCAiSnE,kBACN,SAAW,GAAG,OAAK;4CAkBZ,MAAM,eAChB,SAAW,GAAG,OAAK;;gBAqBM,MAAM;iBAAgB,MAAM;iBACrD,SAAW,GAAG,OAAK;kCA+CO,MAAI,cAAc"}