@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.
- package/README.md +1 -0
- package/dist/adt/index.d.mts +2 -0
- package/dist/adt/index.mjs +3 -0
- package/dist/adt-DraJkmij.mjs +318 -0
- package/dist/adt-DraJkmij.mjs.map +1 -0
- package/dist/apply-fn.types-CXDoeA7D.d.mts +8 -0
- package/dist/apply-fn.types-CXDoeA7D.d.mts.map +1 -0
- package/dist/brand/index.d.mts +2 -0
- package/dist/brand/index.mjs +3 -0
- package/dist/brand-CTaxGuU9.mjs +165 -0
- package/dist/brand-CTaxGuU9.mjs.map +1 -0
- package/dist/data/index.d.mts +2 -0
- package/dist/data/index.mjs +3 -0
- package/dist/data-DgzWI4R_.mjs +244 -0
- package/dist/data-DgzWI4R_.mjs.map +1 -0
- package/dist/discriminator.types-DCkkrCj4.d.mts +7 -0
- package/dist/discriminator.types-DCkkrCj4.d.mts.map +1 -0
- package/dist/either/index.d.mts +2 -0
- package/dist/either/index.mjs +3 -0
- package/dist/either-CnOBUH7a.mjs +598 -0
- package/dist/either-CnOBUH7a.mjs.map +1 -0
- package/dist/equality/index.d.mts +86 -0
- package/dist/equality/index.d.mts.map +1 -0
- package/dist/equality/index.mjs +3 -0
- package/dist/equality-YMebYwm1.mjs +201 -0
- package/dist/equality-YMebYwm1.mjs.map +1 -0
- package/dist/err/index.d.mts +2 -0
- package/dist/err/index.mjs +3 -0
- package/dist/err-BqQApH9r.mjs +169 -0
- package/dist/err-BqQApH9r.mjs.map +1 -0
- package/dist/flow/index.d.mts +2 -0
- package/dist/flow/index.mjs +3 -0
- package/dist/flow-pRdnqmMY.mjs +21 -0
- package/dist/flow-pRdnqmMY.mjs.map +1 -0
- package/dist/gen/index.d.mts +3 -0
- package/dist/gen/index.mjs +3 -0
- package/dist/gen-YfMC9sDT.mjs +42 -0
- package/dist/gen-YfMC9sDT.mjs.map +1 -0
- package/dist/index-BCrD3pEs.d.mts +222 -0
- package/dist/index-BCrD3pEs.d.mts.map +1 -0
- package/dist/index-BR7takNf.d.mts +186 -0
- package/dist/index-BR7takNf.d.mts.map +1 -0
- package/dist/index-CcPnhWje.d.mts +72 -0
- package/dist/index-CcPnhWje.d.mts.map +1 -0
- package/dist/index-CtJ8Ks9X.d.mts +105 -0
- package/dist/index-CtJ8Ks9X.d.mts.map +1 -0
- package/dist/index-CvGTIg9L.d.mts +211 -0
- package/dist/index-CvGTIg9L.d.mts.map +1 -0
- package/dist/index-DPVT0yK4.d.mts +50 -0
- package/dist/index-DPVT0yK4.d.mts.map +1 -0
- package/dist/index-DgOAEEpu.d.mts +79 -0
- package/dist/index-DgOAEEpu.d.mts.map +1 -0
- package/dist/index-Dtq3kmln.d.mts +394 -0
- package/dist/index-Dtq3kmln.d.mts.map +1 -0
- package/dist/index-bLRqTe5I.d.mts +80 -0
- package/dist/index-bLRqTe5I.d.mts.map +1 -0
- package/dist/index-tkgTLCoq.d.mts +80 -0
- package/dist/index-tkgTLCoq.d.mts.map +1 -0
- package/dist/index-wTrnFgYg.d.mts +57 -0
- package/dist/index-wTrnFgYg.d.mts.map +1 -0
- package/dist/index-yyBTq8Ys.d.mts +79 -0
- package/dist/index-yyBTq8Ys.d.mts.map +1 -0
- package/dist/index.d.mts +135 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +41 -0
- package/dist/index.mjs.map +1 -0
- package/dist/is-promise-BEl3eGZg.mjs +11 -0
- package/dist/is-promise-BEl3eGZg.mjs.map +1 -0
- package/dist/option/index.d.mts +3 -0
- package/dist/option/index.mjs +3 -0
- package/dist/option-CKHDOVea.mjs +410 -0
- package/dist/option-CKHDOVea.mjs.map +1 -0
- package/dist/option.types-D6TYG_i3.d.mts +89 -0
- package/dist/option.types-D6TYG_i3.d.mts.map +1 -0
- package/dist/pipe/index.d.mts +2 -0
- package/dist/pipe/index.mjs +3 -0
- package/dist/pipe-GYxZNkPB.mjs +10 -0
- package/dist/pipe-GYxZNkPB.mjs.map +1 -0
- package/dist/predicate/index.d.mts +2 -0
- package/dist/predicate/index.mjs +3 -0
- package/dist/predicate-B6-EdVgW.mjs +293 -0
- package/dist/predicate-B6-EdVgW.mjs.map +1 -0
- package/dist/result/index.d.mts +3 -0
- package/dist/result/index.mjs +3 -0
- package/dist/result-C5tPWR60.mjs +422 -0
- package/dist/result-C5tPWR60.mjs.map +1 -0
- package/dist/result-D7XJ96pv.mjs +1 -0
- package/dist/result.types-Ce7AEOzj.d.mts +156 -0
- package/dist/result.types-Ce7AEOzj.d.mts.map +1 -0
- package/dist/run/index.d.mts +2 -0
- package/dist/run/index.mjs +3 -0
- package/dist/run-DpXkImo9.mjs +10 -0
- package/dist/run-DpXkImo9.mjs.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { i as Result } from "./result.types-Ce7AEOzj.mjs";
|
|
2
|
+
import { t as Discriminator } from "./discriminator.types-DCkkrCj4.mjs";
|
|
3
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
|
+
|
|
5
|
+
//#region src/adt/adt.types.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Utility type that forces TypeScript to expand an intersection type
|
|
9
|
+
* into a more readable object type in hover/intellisense.
|
|
10
|
+
*/
|
|
11
|
+
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
12
|
+
/**
|
|
13
|
+
* Validation error containing issues from schema validation.
|
|
14
|
+
* Mirrors the Standard Schema issue format.
|
|
15
|
+
*/
|
|
16
|
+
type ValidationError = {
|
|
17
|
+
readonly issues: ReadonlyArray<{
|
|
18
|
+
readonly message: string;
|
|
19
|
+
readonly path?: ReadonlyArray<PropertyKey> | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A codec definition for encoding and decoding a record type.
|
|
24
|
+
* @template T - The record output type (after validation)
|
|
25
|
+
* @template TInput - The encoded input type (e.g., string for JSON/graphic formats)
|
|
26
|
+
* @template TDecoded - The type returned by decode (before validation, defaults to unknown)
|
|
27
|
+
*/
|
|
28
|
+
type CodecDef<T, TInput, TDecoded = unknown> = {
|
|
29
|
+
/**
|
|
30
|
+
* Encode a validated record value to the target format.
|
|
31
|
+
* This function receives the fully validated record (with __typename).
|
|
32
|
+
* @throws May throw if encoding fails
|
|
33
|
+
*/
|
|
34
|
+
to: (value: T) => TInput;
|
|
35
|
+
/**
|
|
36
|
+
* Decode from the target format to a plain object.
|
|
37
|
+
* Returns null if decoding fails (e.g., invalid format).
|
|
38
|
+
* The result will be validated through the schema before being returned to the user.
|
|
39
|
+
*/
|
|
40
|
+
from: (input: TInput) => TDecoded | null;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Constraint for custom codec definitions.
|
|
44
|
+
* Ensures codecs have properly typed `to` and `from` methods.
|
|
45
|
+
* Used to constrain the Codecs generic parameter throughout the codebase.
|
|
46
|
+
*/
|
|
47
|
+
type CodecConstraint<Typename$1 extends string, S$1 extends StandardSchemaV1> = Record<string, {
|
|
48
|
+
to: (value: InferOutput<S$1> & Discriminator<Typename$1>) => any;
|
|
49
|
+
from: (input: any) => any;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Error type for codec operations.
|
|
53
|
+
* Used when encoding fails or when decoded data fails validation.
|
|
54
|
+
*/
|
|
55
|
+
type CodecError = {
|
|
56
|
+
readonly kind: "EncodingError" | "DecodingError" | "ValidationError";
|
|
57
|
+
readonly message: string;
|
|
58
|
+
readonly cause?: unknown;
|
|
59
|
+
readonly validationIssues?: ValidationError["issues"];
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Infer the input type from a Standard Schema.
|
|
63
|
+
* This is what the user provides to create().
|
|
64
|
+
*/
|
|
65
|
+
type InferInput<S$1 extends StandardSchemaV1> = NonNullable<S$1["~standard"]["types"]>["input"];
|
|
66
|
+
/**
|
|
67
|
+
* Infer the output type from a Standard Schema.
|
|
68
|
+
* This is what validation returns (after transforms/defaults).
|
|
69
|
+
*/
|
|
70
|
+
type InferOutput<S$1 extends StandardSchemaV1> = NonNullable<S$1["~standard"]["types"]>["output"];
|
|
71
|
+
/**
|
|
72
|
+
* Extract the return type from a codec's `to` method.
|
|
73
|
+
* This is what the encoding function returns (e.g., string, Uint8Array).
|
|
74
|
+
*/
|
|
75
|
+
type ExtractToReturn<C> = C extends {
|
|
76
|
+
to: (value: any) => infer R;
|
|
77
|
+
} ? R : never;
|
|
78
|
+
/**
|
|
79
|
+
* Extract the input type from a codec's `from` method.
|
|
80
|
+
* This is what the decoding function accepts (e.g., string, Uint8Array).
|
|
81
|
+
*/
|
|
82
|
+
type ExtractFromInput<C> = C extends {
|
|
83
|
+
from: (input: infer I) => any;
|
|
84
|
+
} ? I : never;
|
|
85
|
+
/**
|
|
86
|
+
* Build the "to" object containing encoding methods.
|
|
87
|
+
* Always includes 'json' plus any custom codec names.
|
|
88
|
+
* Uses type extraction to infer return types from codec definitions.
|
|
89
|
+
* All methods return Result<T, CodecError> for consistent error handling.
|
|
90
|
+
*/
|
|
91
|
+
type ToMethods<S$1 extends StandardSchemaV1, Codecs> = {
|
|
92
|
+
json: (value: InferInput<S$1>) => Result<string, CodecError>;
|
|
93
|
+
} & (Codecs extends Record<string, any> ? { [K in keyof Codecs]: (value: InferInput<S$1>) => Result<ExtractToReturn<Codecs[K]>, CodecError> } : object);
|
|
94
|
+
/**
|
|
95
|
+
* Build the "from" object containing decoding methods.
|
|
96
|
+
* Always includes 'json' plus any custom codec names.
|
|
97
|
+
* All methods return Result<T, CodecError> for consistent error handling.
|
|
98
|
+
* Uses type extraction to infer input types from codec definitions.
|
|
99
|
+
*/
|
|
100
|
+
type FromMethods<Typename$1 extends string, S$1 extends StandardSchemaV1, Codecs> = {
|
|
101
|
+
json: (input: string) => Result<InferOutput<S$1> & Discriminator<Typename$1>, CodecError>;
|
|
102
|
+
} & (Codecs extends Record<string, any> ? { [K in keyof Codecs]: (input: ExtractFromInput<Codecs[K]>) => Result<InferOutput<S$1> & Discriminator<Typename$1>, CodecError> } : object);
|
|
103
|
+
/**
|
|
104
|
+
* A tagged record created by the record() function.
|
|
105
|
+
* Can be used standalone or composed into an ADT via data().
|
|
106
|
+
* Callable as a function to create instances.
|
|
107
|
+
*/
|
|
108
|
+
type RecordObject<Typename$1 extends string = string, S$1 extends StandardSchemaV1 = StandardSchemaV1, Codecs extends CodecConstraint<Typename$1, S$1> | undefined = undefined> = {
|
|
109
|
+
/** Marker to identify this as a RecordObject */
|
|
110
|
+
readonly _record: true;
|
|
111
|
+
/** The __typename discriminator value */
|
|
112
|
+
readonly __typename: Typename$1;
|
|
113
|
+
/** The underlying Standard Schema */
|
|
114
|
+
readonly schema: S$1;
|
|
115
|
+
/** Codec definitions (if provided) */
|
|
116
|
+
readonly codecs?: Codecs;
|
|
117
|
+
/**
|
|
118
|
+
* Create an instance of this record.
|
|
119
|
+
* @param input - The input data (schema defaults apply)
|
|
120
|
+
* @returns Result with tagged output or validation error
|
|
121
|
+
*/
|
|
122
|
+
(input: InferInput<S$1>): Result<InferOutput<S$1> & Discriminator<Typename$1>, ValidationError>;
|
|
123
|
+
/**
|
|
124
|
+
* Type guard to check if a value is this record type.
|
|
125
|
+
* @param value - The value to check
|
|
126
|
+
*/
|
|
127
|
+
is(value: unknown): value is InferOutput<S$1> & Discriminator<Typename$1>;
|
|
128
|
+
/**
|
|
129
|
+
* Encoding methods for serializing record values.
|
|
130
|
+
* Always includes 'json' plus any custom codecs.
|
|
131
|
+
*/
|
|
132
|
+
readonly to: ToMethods<S$1, Codecs>;
|
|
133
|
+
/**
|
|
134
|
+
* Decoding methods for deserializing to record values.
|
|
135
|
+
* Always includes 'json' plus any custom codecs.
|
|
136
|
+
* All methods validate through the schema before returning.
|
|
137
|
+
*/
|
|
138
|
+
readonly from: FromMethods<Typename$1, S$1, Codecs>;
|
|
139
|
+
/**
|
|
140
|
+
* Compare two instances of this record for value equality.
|
|
141
|
+
* Performs deep comparison of all fields.
|
|
142
|
+
*/
|
|
143
|
+
equals(a: InferOutput<S$1> & Discriminator<Typename$1>, b: InferOutput<S$1> & Discriminator<Typename$1>): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Compute a hash code for a record instance.
|
|
146
|
+
* Equal values always produce the same hash.
|
|
147
|
+
* Useful for Map/Set keys.
|
|
148
|
+
*/
|
|
149
|
+
hash(value: InferOutput<S$1> & Discriminator<Typename$1>): number;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* A record definition can be either:
|
|
153
|
+
* - A raw Standard Schema (will be wrapped internally)
|
|
154
|
+
* - A pre-built RecordObject from record()
|
|
155
|
+
*/
|
|
156
|
+
type RecordDef = StandardSchemaV1 | RecordObject<string, any, any>;
|
|
157
|
+
/**
|
|
158
|
+
* Extract the schema from a RecordDef (handles both raw schema and RecordObject)
|
|
159
|
+
*/
|
|
160
|
+
type ExtractSchema<T extends RecordDef> = T extends RecordObject<string, infer S, any> ? S : T extends StandardSchemaV1 ? T : never;
|
|
161
|
+
/**
|
|
162
|
+
* Extract the codecs from a RecordDef (if it's a RecordObject with codecs)
|
|
163
|
+
*/
|
|
164
|
+
type ExtractCodecs<T extends RecordDef> = T extends RecordObject<string, any, infer Codecs> ? Codecs : undefined;
|
|
165
|
+
/**
|
|
166
|
+
* The ADT object returned by data().
|
|
167
|
+
* Contains all record accessors plus a root type guard.
|
|
168
|
+
* Codecs from records are preserved in ADT variants.
|
|
169
|
+
*/
|
|
170
|
+
type ADT<R$1 extends Record<string, RecordDef>> = {
|
|
171
|
+
/** The name of this ADT */
|
|
172
|
+
readonly _name: string;
|
|
173
|
+
/**
|
|
174
|
+
* Type guard to check if a value is any variant of this ADT.
|
|
175
|
+
*/
|
|
176
|
+
is(value: unknown): value is InferADTUnion<R$1>;
|
|
177
|
+
/**
|
|
178
|
+
* Compare two ADT values for equality.
|
|
179
|
+
* First checks __typename matches, then compares fields.
|
|
180
|
+
*/
|
|
181
|
+
equals(a: InferADTUnion<R$1>, b: InferADTUnion<R$1>): boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Compute a hash code for any ADT variant.
|
|
184
|
+
*/
|
|
185
|
+
hash(value: InferADTUnion<R$1>): number;
|
|
186
|
+
} & { [K in keyof R$1]: RecordObject<K & string, ExtractSchema<R$1[K]>, ExtractCodecs<R$1[K]>> };
|
|
187
|
+
/**
|
|
188
|
+
* Infer the output type for a single record within an ADT
|
|
189
|
+
*/
|
|
190
|
+
type InferRecordOutput<Typename$1 extends string, R$1 extends RecordDef> = InferOutput<ExtractSchema<R$1>> & {
|
|
191
|
+
readonly __typename: Typename$1;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Infer the union of all record output types in an ADT
|
|
195
|
+
*/
|
|
196
|
+
type InferADTUnion<R$1 extends Record<string, RecordDef>> = { [K in keyof R$1]: InferRecordOutput<K & string, R$1[K]> }[keyof R$1];
|
|
197
|
+
/**
|
|
198
|
+
* Infer types from an ADT or RecordObject, following Zod's `z.infer` pattern.
|
|
199
|
+
*
|
|
200
|
+
* - For ADTs: Returns the union of all variant types
|
|
201
|
+
* - For RecordObjects: Returns the individual record type
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```ts
|
|
205
|
+
* // Infer union type from ADT
|
|
206
|
+
* const Shape = data('Shape', { Circle, Square })
|
|
207
|
+
* type Shape = Infer<typeof Shape>
|
|
208
|
+
* // => { __typename: 'Circle', radius: number } | { __typename: 'Square', size: number }
|
|
209
|
+
*
|
|
210
|
+
* // Infer individual record type
|
|
211
|
+
* type Circle = Infer<typeof Shape.Circle>
|
|
212
|
+
* // => { __typename: 'Circle', radius: number }
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
type Infer<T> = T extends ADT<infer R> ? Prettify<InferADTUnion<R>> : T extends RecordObject<infer Typename, infer S> ? Prettify<InferOutput<S> & Discriminator<Typename>> : never;
|
|
216
|
+
/**
|
|
217
|
+
* Extract the union of all variant names from an ADT.
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```ts
|
|
221
|
+
* const Shape = data('Shape', { Circle, Square })
|
|
222
|
+
* type Names = VariantNames<typeof Shape> // "Circle" | "Square"
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
type VariantNames<T> = T extends ADT<infer R> ? keyof R & string : never;
|
|
226
|
+
/**
|
|
227
|
+
* Extract the type of a specific variant from an ADT.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* const Shape = data('Shape', { Circle, Square })
|
|
232
|
+
* type CircleType = VariantOf<typeof Shape, "Circle">
|
|
233
|
+
* // => { __typename: "Circle", radius: number }
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
type VariantOf<T, K$1 extends string> = T extends ADT<infer R> ? K$1 extends keyof R ? Prettify<InferOutput<ExtractSchema<R[K$1]>> & Discriminator<K$1>> : never : never;
|
|
237
|
+
//#endregion
|
|
238
|
+
//#region src/adt/adt.record.d.ts
|
|
239
|
+
/**
|
|
240
|
+
* Create a standalone tagged record from a Standard Schema with optional codecs.
|
|
241
|
+
*
|
|
242
|
+
* Records can be used independently or composed into an ADT via data().
|
|
243
|
+
* All defaults should be defined at the schema level (e.g., Zod's .default()).
|
|
244
|
+
*
|
|
245
|
+
* @template Typename - The string literal type for the __typename discriminator
|
|
246
|
+
* @template S - The Standard Schema type for validation
|
|
247
|
+
* @template Codecs - Optional codec definitions for custom serialization formats
|
|
248
|
+
* @param __typename - The __typename discriminator value
|
|
249
|
+
* @param schema - A Standard Schema compliant validator
|
|
250
|
+
* @param codecs - Optional codec definitions for custom serialization formats
|
|
251
|
+
* @returns A callable RecordObject with is(), to, and from methods
|
|
252
|
+
*
|
|
253
|
+
* @see {@link data} for composing records into discriminated unions
|
|
254
|
+
* @see {@link tagged} for unvalidated tagged value constructors
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* ```ts
|
|
258
|
+
* const CircleSchema = z.object({
|
|
259
|
+
* radius: z.number().positive(),
|
|
260
|
+
* color: z.string().default('blue')
|
|
261
|
+
* })
|
|
262
|
+
*
|
|
263
|
+
* // Basic record with JSON codec (always included)
|
|
264
|
+
* const Circle = record('Circle', CircleSchema)
|
|
265
|
+
*
|
|
266
|
+
* const result = Circle({ radius: 10 })
|
|
267
|
+
* // { ok: true, value: { __typename: 'Circle', radius: 10, color: 'blue' } }
|
|
268
|
+
*
|
|
269
|
+
* Circle.is(someValue) // type guard
|
|
270
|
+
*
|
|
271
|
+
* const json = Circle.to.json({ radius: 10 }) // JSON string
|
|
272
|
+
* const result2 = Circle.from.json(json) // Result<Circle, CodecError>
|
|
273
|
+
*
|
|
274
|
+
* // Record with custom codec
|
|
275
|
+
* const Circle2 = record('Circle', CircleSchema, {
|
|
276
|
+
* graphic: {
|
|
277
|
+
* to: (circle) => `(${circle.radius})`,
|
|
278
|
+
* from: (input: string) => {
|
|
279
|
+
* const match = input.match(/^\((\d+)\)$/)
|
|
280
|
+
* return match ? { radius: parseInt(match[1]!) } : null
|
|
281
|
+
* }
|
|
282
|
+
* }
|
|
283
|
+
* })
|
|
284
|
+
*
|
|
285
|
+
* const graphic = Circle2.to.graphic({ radius: 10 }) // "(10)"
|
|
286
|
+
* const result3 = Circle2.from.graphic("(10)") // Result<Circle, CodecError>
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
declare function record<Typename$1 extends string, S$1 extends StandardSchemaV1, Codecs extends CodecConstraint<Typename$1, S$1>>(__typename: Typename$1, schema: S$1, codecs: Codecs): RecordObject<Typename$1, S$1, Codecs>;
|
|
290
|
+
declare function record<Typename$1 extends string, S$1 extends StandardSchemaV1>(__typename: Typename$1, schema: S$1): RecordObject<Typename$1, S$1>;
|
|
291
|
+
//#endregion
|
|
292
|
+
//#region src/adt/adt.data.d.ts
|
|
293
|
+
/**
|
|
294
|
+
* Compose records or schemas into a discriminated union (ADT).
|
|
295
|
+
*
|
|
296
|
+
* Accepts either:
|
|
297
|
+
* - Pre-built RecordObjects from record() (codecs are preserved)
|
|
298
|
+
* - Raw Standard Schema validators (will be wrapped internally)
|
|
299
|
+
*
|
|
300
|
+
* When using pre-built records, the object key overrides the original __typename.
|
|
301
|
+
*
|
|
302
|
+
* @template R - Record of variant names to RecordObjects or StandardSchema validators
|
|
303
|
+
* @param name - The name of this ADT (for identification)
|
|
304
|
+
* @param records - An object mapping __typename names to RecordObjects or schemas
|
|
305
|
+
* @returns An ADT object with accessors for each variant
|
|
306
|
+
*
|
|
307
|
+
* @see {@link record} for creating individual record types
|
|
308
|
+
* @see {@link match} for exhaustive pattern matching on ADT values
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```ts
|
|
312
|
+
* // From pre-built records
|
|
313
|
+
* const Circle = record('Circle', CircleSchema)
|
|
314
|
+
* const Square = record('Square', SquareSchema)
|
|
315
|
+
* const Shape = data('Shape', { Circle, Square })
|
|
316
|
+
*
|
|
317
|
+
* // From raw schemas (JSON codec is automatically included)
|
|
318
|
+
* const Shape = data('Shape', {
|
|
319
|
+
* Circle: CircleSchema,
|
|
320
|
+
* Square: SquareSchema
|
|
321
|
+
* })
|
|
322
|
+
*
|
|
323
|
+
* // JSON codec works on all variants
|
|
324
|
+
* Shape.Circle.to.json({ radius: 10 })
|
|
325
|
+
* Shape.Circle.from.json(jsonString)
|
|
326
|
+
*
|
|
327
|
+
* // Mixed
|
|
328
|
+
* const Shape = data('Shape', {
|
|
329
|
+
* Circle, // Pre-built record
|
|
330
|
+
* Square: SquareSchema // Raw schema
|
|
331
|
+
* })
|
|
332
|
+
*
|
|
333
|
+
* // Usage
|
|
334
|
+
* Shape.Circle({ radius: 10 })
|
|
335
|
+
* Shape.is(someValue) // type guard for any variant
|
|
336
|
+
* Shape.Circle.is(someValue) // type guard for Circle
|
|
337
|
+
* ```
|
|
338
|
+
*/
|
|
339
|
+
declare function data<R$1 extends Record<string, RecordDef>>(name: string, records: R$1): ADT<R$1>;
|
|
340
|
+
//#endregion
|
|
341
|
+
//#region src/adt/adt.match.d.ts
|
|
342
|
+
/**
|
|
343
|
+
* Handler functions for each variant in a discriminated union.
|
|
344
|
+
* Each key maps to a function that receives the variant value and returns TResult.
|
|
345
|
+
*
|
|
346
|
+
* @template T - The discriminated union type (must have readonly __typename)
|
|
347
|
+
* @template TResult - The return type of all handlers
|
|
348
|
+
*/
|
|
349
|
+
type MatchHandlers<T extends {
|
|
350
|
+
readonly __typename: string;
|
|
351
|
+
}, TResult> = { [K in T["__typename"]]: (value: Extract<T, {
|
|
352
|
+
readonly __typename: K;
|
|
353
|
+
}>) => TResult };
|
|
354
|
+
/**
|
|
355
|
+
* Exhaustive pattern matching for discriminated unions.
|
|
356
|
+
*
|
|
357
|
+
* TypeScript will error if any variant is missing from handlers,
|
|
358
|
+
* ensuring exhaustive handling of all cases.
|
|
359
|
+
*
|
|
360
|
+
* @template T - The discriminated union type (must have readonly __typename)
|
|
361
|
+
* @template TResult - The return type of all handlers
|
|
362
|
+
* @template Handlers - The handler object type (inferred)
|
|
363
|
+
* @param value - A discriminated union value with __typename
|
|
364
|
+
* @param handlers - An object with a handler function for each variant
|
|
365
|
+
* @returns The result of calling the matching handler
|
|
366
|
+
*
|
|
367
|
+
* @see {@link data} for creating discriminated unions
|
|
368
|
+
* @see {@link record} for creating individual record types
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* ```ts
|
|
372
|
+
* const Shape = data('Shape', { Circle, Square })
|
|
373
|
+
* type Shape = Infer<typeof Shape>
|
|
374
|
+
*
|
|
375
|
+
* function describeShape(shape: Shape): string {
|
|
376
|
+
* return match(shape, {
|
|
377
|
+
* Circle: (c) => `Circle with radius ${c.radius}`,
|
|
378
|
+
* Square: (s) => `Square with size ${s.size}`,
|
|
379
|
+
* })
|
|
380
|
+
* }
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
declare function match<T extends {
|
|
384
|
+
readonly __typename: string;
|
|
385
|
+
}, TResult, Handlers extends MatchHandlers<T, TResult> = MatchHandlers<T, TResult>>(value: T, handlers: Handlers): TResult;
|
|
386
|
+
//#endregion
|
|
387
|
+
//#region src/adt/adt.codec.d.ts
|
|
388
|
+
/**
|
|
389
|
+
* Create a CodecError with consistent structure.
|
|
390
|
+
*/
|
|
391
|
+
declare function createCodecError(kind: CodecError["kind"], message: string, cause?: unknown, validationIssues?: ValidationError["issues"]): CodecError;
|
|
392
|
+
//#endregion
|
|
393
|
+
export { VariantNames as _, record as a, CodecDef as c, Infer as d, InferInput as f, ValidationError as g, RecordObject as h, data as i, CodecError as l, RecordDef as m, MatchHandlers as n, ADT as o, InferOutput as p, match as r, CodecConstraint as s, createCodecError as t, ExtractSchema as u, VariantOf as v };
|
|
394
|
+
//# sourceMappingURL=index-Dtq3kmln.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Dtq3kmln.d.mts","names":[],"sources":["../src/adt/adt.types.ts","../src/adt/adt.record.ts","../src/adt/adt.data.ts","../src/adt/adt.match.ts","../src/adt/adt.codec.ts"],"sourcesContent":[],"mappings":"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OoB,SDmOV,GCnOU,CAAA,KAAA,EAAA,CAAA,GDoOhB,QCpOgB,CDoOP,aCpOO,CDoOO,CCpOP,CAAA,CAAA,GDqOhB,CCrOgB,SDqON,YCrOM,CAAA,KAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GDsOd,QCtOc,CDsOL,WCtOK,CDsOO,CCtOP,CAAA,GDsOY,aCtOZ,CDsO0B,QCtO1B,CAAA,CAAA,GAAA,KAAA;;;;;;;;;;KDsPV,kBAAkB,UAAU,qBAAqB;AErQ7D;;;;;;;;;;AC7CY,KH8TA,SG9Ta,CAAA,CAAA,EAAA,YAAA,MAAA,CAAA,GH+TvB,CG/TuB,SH+Tb,GG/Ta,CAAA,KAAA,EAAA,CAAA,GHgUnB,GGhUmB,SAAA,MHgUH,CGhUG,GHiUjB,QGjUiB,CHiUR,WGjUQ,CHiUI,aGjUJ,CHiUkB,CGjUlB,CHiUoB,GGjUpB,CAAA,CAAA,CAAA,GHiU2B,aGjU3B,CHiUyC,GGjUzC,CAAA,CAAA,GAAA,KAAA,GAAA,KAAA;;;;;;AHLoC;;;;;AAkB7D;;;;;AAiBA;;;;;;AAqBA;;;;;;;;AAcA;AAeA;;;;;AAMA;;;;;AAAoG;AAWzE;AAe3B;;;;;;;;;;AAKmC,iBChEnB,MDgEmB,CAAA,mBAAA,MAAA,EAAA,YC9DvB,gBD8DuB,EAAA,eC7DlB,eD6DkB,CC7DF,UD6DE,EC7DQ,GD6DR,CAAA,CAAA,CAAA,UAAA,EC5DrB,UD4DqB,EAAA,MAAA,EC5DH,GD4DG,EAAA,MAAA,EC5DQ,MD4DR,CAAA,EC5DiB,YD4DjB,CC5D8B,UD4D9B,EC5DwC,GD4DxC,EC5D2C,MD4D3C,CAAA;AAAyC,iBCzD5D,MDyD4D,CAAA,mBAAA,MAAA,EAAA,YCzDlB,gBDyDkB,CAAA,CAAA,UAAA,ECxD9D,UDwD8D,EAAA,MAAA,ECvDlE,GDuDkE,CAAA,ECtDzE,YDsDyE,CCtD5D,UDsD4D,ECtDlD,GDsDkD,CAAA;;;;;;;AA1Hf;;;;;AAkB7D;;;;;AAiBA;;;;;;AAqBA;;;;;;;;AAcA;AAeA;;;;;AAMA;;;;;AAAoG;AAWzE;AAe3B;;;;;AACkC,iBEpElB,IFoEkB,CAAA,YEpEH,MFoEG,CAAA,MAAA,EEpEY,SFoEZ,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EEpE+C,GFoE/C,CAAA,EEpEmD,GFoEnD,CEpEuD,GFoEvD,CAAA;;;;;;;;AAtH2B;;AAO3C,KGFN,aHEM,CAAA,UAAA;EAAE,SAAA,UAAA,EAAA,MAAA;CAAC,EAAA,OAAA,CAAA,GAAA,QGDb,CHYI,CAAA,YAAe,CAAA,GAAA,CAAA,KAAA,EGZO,OHYP,CGZe,CHYf,EAAA;EAGO,SAAA,UAAA,EGfkC,CHelC;AAAd,CAAA,CAAA,EAAA,GGfyD,OHezD,EAFD;;AAgBnB;;;;;;AAqBA;;;;;;;;AAcA;AAeA;;;;;AAMA;;;;;AAAoG;AAWzE;AAe3B;AAAgC,iBG/EhB,KH+EgB,CAAA,UAAA;EACL,SAAA,UAAA,EAAA,MAAA;CAAX,EAAA,OAAA,EAAA,iBG7EG,aH6EH,CG7EiB,CH6EjB,EG7EoB,OH6EpB,CAAA,GG7E+B,aH6E/B,CG7E6C,CH6E7C,EG7EgD,OH6EhD,CAAA,CAAA,CAAA,KAAA,EG5EP,CH4EO,EAAA,QAAA,EG5EM,QH4EN,CAAA,EG5EiB,OH4EjB;;;;;AAtH6C;AAO/C,iBIUE,gBAAA,CJVF,IAAA,EIWN,UJXM,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,gBAAA,CAAA,EIcO,eJdP,CAAA,QAAA,CAAA,CAAA,EIeX,UJfW"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { a as Option$1, c as OptionMap, l as OptionOrElse, n as AllObjectReturn, o as OptionFilter, r as FromTryReturn, s as OptionFlatMap, t as AllArrayReturn, u as OptionTap } from "./option.types-D6TYG_i3.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/option/option.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Combine multiple Options into a single Option.
|
|
7
|
+
* Supports both array and object inputs.
|
|
8
|
+
*
|
|
9
|
+
* - If all Options are some, returns some with all values
|
|
10
|
+
* - If any Option is none, returns none (short-circuits)
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* // Array form (use `as const` for tuple types) - returns Option<[number, string]>
|
|
15
|
+
* const [num, str] = pipe(
|
|
16
|
+
* Option.all([parseNumber(input), parseString(other)] as const),
|
|
17
|
+
* Option.unwrapOr([0, ''])
|
|
18
|
+
* )
|
|
19
|
+
*
|
|
20
|
+
* // Object form - returns Option<{ user: User, config: Config }>
|
|
21
|
+
* pipe(
|
|
22
|
+
* Option.all({ user: findUser(id), config: loadConfig() }),
|
|
23
|
+
* Option.tap(({ user, config }) => console.log(user.name, config.theme))
|
|
24
|
+
* )
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
declare function all<T extends readonly Option$1<unknown>[]>(options: T): AllArrayReturn<T>;
|
|
28
|
+
declare function all<T extends Record<string, Option$1<unknown>>>(options: T): AllObjectReturn<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Option namespace containing all utility functions for working with Option types.
|
|
31
|
+
*
|
|
32
|
+
* Option represents either the presence (some) or absence (none) of a value.
|
|
33
|
+
* Use this for optional values without needing to track why the value is missing.
|
|
34
|
+
*
|
|
35
|
+
* @see {@link Result} for success/failure with error information
|
|
36
|
+
* @see {@link Either} for two valid outcomes
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { Option, pipe } from '@repo/std'
|
|
41
|
+
* import type { Option as OptionType } from '@repo/std'
|
|
42
|
+
*
|
|
43
|
+
* const findUser = (id: number): OptionType<User> =>
|
|
44
|
+
* id > 0 ? Option.some({ id, name: 'Alice' }) : Option.none()
|
|
45
|
+
*
|
|
46
|
+
* const result = pipe(
|
|
47
|
+
* Option.some(10),
|
|
48
|
+
* Option.flatMap(findUser),
|
|
49
|
+
* Option.map(user => user.name),
|
|
50
|
+
* Option.unwrapOr('Unknown')
|
|
51
|
+
* )
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
declare const Option: {
|
|
55
|
+
readonly some: <T>(value: T) => Option$1<T>;
|
|
56
|
+
readonly none: <T>() => Option$1<T>;
|
|
57
|
+
readonly isSome: <T>(option: Option$1<T>) => option is Extract<Option$1<T>, {
|
|
58
|
+
some: true;
|
|
59
|
+
}>;
|
|
60
|
+
readonly isNone: <T>(option: Option$1<T>) => option is Extract<Option$1<T>, {
|
|
61
|
+
some: false;
|
|
62
|
+
}>;
|
|
63
|
+
readonly map: OptionMap;
|
|
64
|
+
readonly flatMap: OptionFlatMap;
|
|
65
|
+
readonly tap: OptionTap;
|
|
66
|
+
readonly orElse: OptionOrElse;
|
|
67
|
+
readonly filter: OptionFilter;
|
|
68
|
+
readonly all: typeof all;
|
|
69
|
+
readonly unwrapOr: <T>(defaultValue: T) => (option: Option$1<T>) => T;
|
|
70
|
+
readonly unwrapOrElse: <T>(fn: () => T) => (option: Option$1<T>) => T;
|
|
71
|
+
readonly match: <T, U>(handlers: {
|
|
72
|
+
some: (value: T) => U;
|
|
73
|
+
none: () => U;
|
|
74
|
+
}) => (option: Option$1<T>) => U;
|
|
75
|
+
readonly fromNullable: <T>(value: T | null | undefined) => Option$1<T>;
|
|
76
|
+
readonly fromTry: <T>(fn: () => T) => FromTryReturn<T>;
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
export { all as n, Option as t };
|
|
80
|
+
//# sourceMappingURL=index-bLRqTe5I.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-bLRqTe5I.d.mts","names":[],"sources":["../src/option/option.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;iBA6SgB,uBAAuB,8BAAgC,IAAI,eAAe;iBAC1E,cAAc,eAAe,6BAA+B,IAAI,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;cA0LnF;4BA1ckB,MAAI,SAAW;0BAmBnB,SAAW;+BA0BJ,SAAW,iBAAe,QAAQ,SAAW;;;+BAgB7C,SAAW,iBAAe,QAAQ,SAAW;;;;;;;;;uCA0P3D,eACT,SAAW,OAAK;uCAkBX,eACL,SAAW,OAAK;;kBAqBQ,MAAM;gBAAe;iBAC7C,SAAW,OAAK;oCAqBY,yBAAuB,SAAW;kCA2CpC,MAAI,cAAc"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { n as λ, t as ApplyFn } from "./apply-fn.types-CXDoeA7D.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/flow/flow.types.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The return type of a flow composition - a function with the first function's
|
|
7
|
+
* parameters that returns the final computed type.
|
|
8
|
+
*/
|
|
9
|
+
type FlowdFun<Fns extends λ[]> = Fns extends [infer First extends λ, ...any[]] ? (...args: Parameters<First>) => FlowReturn<Fns, ReturnType<First>> : never;
|
|
10
|
+
/**
|
|
11
|
+
* Recursively compute the return type of a flow chain.
|
|
12
|
+
* Threads the actual types through each function for better generic inference.
|
|
13
|
+
*/
|
|
14
|
+
type FlowReturn<Fns extends λ[], Input> = Fns extends [any, infer Second extends λ, ...infer Rest extends λ[]] ? Input extends Promise<infer Awaited> ? Promise<FlowReturnAsync<[Second, ...Rest], Awaited>> : FlowReturn<[Second, ...Rest], ApplyFn<Second, Input>> : Input extends Promise<infer Awaited> ? Promise<Awaited> : Input;
|
|
15
|
+
/**
|
|
16
|
+
* Continue flow computation after encountering a Promise.
|
|
17
|
+
*/
|
|
18
|
+
type FlowReturnAsync<Fns extends λ[], Input> = Fns extends [infer First extends λ, ...infer Rest extends λ[]] ? Rest extends [] ? ApplyFn<First, Input> extends Promise<infer Awaited> ? Awaited : ApplyFn<First, Input> : ApplyFn<First, Input> extends Promise<infer Awaited> ? FlowReturnAsync<Rest, Awaited> : FlowReturnAsync<Rest, ApplyFn<First, Input>> : Input;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/flow/flow.d.ts
|
|
21
|
+
/**
|
|
22
|
+
* Given a list of functions returns a function that will execute the given
|
|
23
|
+
* functions one after another, always passing the result of the previous
|
|
24
|
+
* function as an argument to the next function.
|
|
25
|
+
*
|
|
26
|
+
* If one of the given functions returns a promise, the promise will be resolved
|
|
27
|
+
* before being passed to the next function.
|
|
28
|
+
*
|
|
29
|
+
* Type inference: This function provides automatic type inference for chains of
|
|
30
|
+
* 1-15 functions. Each function's parameter type is automatically inferred from
|
|
31
|
+
* the previous function's return type. For chains longer than 15 functions,
|
|
32
|
+
* types must be explicitly specified.
|
|
33
|
+
*
|
|
34
|
+
* Async support: Functions can return Promises. The runtime automatically awaits
|
|
35
|
+
* Promises before passing values to subsequent functions, and parameter types
|
|
36
|
+
* use `Awaited<T>` to reflect this behavior. The final return type will be
|
|
37
|
+
* Promise<T> if any function returns a Promise.
|
|
38
|
+
*
|
|
39
|
+
* @see {@link pipe} for immediate execution with an initial value
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const join = (...chars: string[]) => chars.join('')
|
|
44
|
+
* flow(join, parseInt)('1', '2', '3') // -> 123
|
|
45
|
+
*
|
|
46
|
+
* const square = (n: number) => n ** 2
|
|
47
|
+
*
|
|
48
|
+
* // this is equivalent to: square(square(square(2)))
|
|
49
|
+
* flow(square, square, square)(2) // -> 256
|
|
50
|
+
*
|
|
51
|
+
* // Type inference in action
|
|
52
|
+
* const fn = flow(
|
|
53
|
+
* (n: number) => n * 2, // First function must be typed
|
|
54
|
+
* (n) => n + 1, // n: number (inferred!)
|
|
55
|
+
* (n) => n.toString() // n: number (inferred!)
|
|
56
|
+
* )
|
|
57
|
+
*
|
|
58
|
+
* // also works with promises:
|
|
59
|
+
* // fetchNumber :: async () => Promise<number>
|
|
60
|
+
* flow(fetchNumber, n => n.toString()) // async () => Promise<string>
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
declare function flow<A extends unknown[], B>(f1: (...args: A) => B): FlowdFun<[typeof f1]>;
|
|
64
|
+
declare function flow<A extends unknown[], B, C>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C): FlowdFun<[typeof f1, typeof f2]>;
|
|
65
|
+
declare function flow<A extends unknown[], B, C, D>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D): FlowdFun<[typeof f1, typeof f2, typeof f3]>;
|
|
66
|
+
declare function flow<A extends unknown[], B, C, D, E>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4]>;
|
|
67
|
+
declare function flow<A extends unknown[], B, C, D, E, F>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5]>;
|
|
68
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6]>;
|
|
69
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7]>;
|
|
70
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8]>;
|
|
71
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9]>;
|
|
72
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J, f10: (arg: Awaited<J>) => K): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9, typeof f10]>;
|
|
73
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J, f10: (arg: Awaited<J>) => K, f11: (arg: Awaited<K>) => L): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9, typeof f10, typeof f11]>;
|
|
74
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L, M>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J, f10: (arg: Awaited<J>) => K, f11: (arg: Awaited<K>) => L, f12: (arg: Awaited<L>) => M): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9, typeof f10, typeof f11, typeof f12]>;
|
|
75
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L, M, N>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J, f10: (arg: Awaited<J>) => K, f11: (arg: Awaited<K>) => L, f12: (arg: Awaited<L>) => M, f13: (arg: Awaited<M>) => N): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9, typeof f10, typeof f11, typeof f12, typeof f13]>;
|
|
76
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L, M, N, O>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J, f10: (arg: Awaited<J>) => K, f11: (arg: Awaited<K>) => L, f12: (arg: Awaited<L>) => M, f13: (arg: Awaited<M>) => N, f14: (arg: Awaited<N>) => O): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9, typeof f10, typeof f11, typeof f12, typeof f13, typeof f14]>;
|
|
77
|
+
declare function flow<A extends unknown[], B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(f1: (...args: A) => B, f2: (arg: Awaited<B>) => C, f3: (arg: Awaited<C>) => D, f4: (arg: Awaited<D>) => E, f5: (arg: Awaited<E>) => F, f6: (arg: Awaited<F>) => G, f7: (arg: Awaited<G>) => H, f8: (arg: Awaited<H>) => I, f9: (arg: Awaited<I>) => J, f10: (arg: Awaited<J>) => K, f11: (arg: Awaited<K>) => L, f12: (arg: Awaited<L>) => M, f13: (arg: Awaited<M>) => N, f14: (arg: Awaited<N>) => O, f15: (arg: Awaited<O>) => P): FlowdFun<[typeof f1, typeof f2, typeof f3, typeof f4, typeof f5, typeof f6, typeof f7, typeof f8, typeof f9, typeof f10, typeof f11, typeof f12, typeof f13, typeof f14, typeof f15]>;
|
|
78
|
+
//#endregion
|
|
79
|
+
export { flow as t };
|
|
80
|
+
//# sourceMappingURL=index-tkgTLCoq.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-tkgTLCoq.d.mts","names":[],"sources":["../src/flow/flow.types.ts","../src/flow/flow.ts"],"sourcesContent":[],"mappings":"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hB,ED9BgB,EAAA,OC8BL,ED9BK,EAAA,OC8BM,ED9BN,EAAA,OC8BiB,ED9BjB,CAAA,CAAA;AAEpB,iBC8BA,ID9BA,CAAA,UAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,IAAA,EC+BA,CD/BA,EAAA,GC+BM,CD/BN,EAAA,EAAA,EAAA,CAAA,GAAA,ECgCJ,ODhCI,CCgCI,CDhCJ,CAAA,EAAA,GCgCW,CDhCX,EAAA,EAAA,EAAA,CAAA,GAAA,ECiCJ,ODjCI,CCiCI,CDjCJ,CAAA,EAAA,GCiCW,CDjCX,EAAA,EAAA,EAAA,CAAA,GAAA,ECkCJ,ODlCI,CCkCI,CDlCJ,CAAA,EAAA,GCkCW,CDlCX,EAAA,EAAA,EAAA,CAAA,GAAA,ECmCJ,ODnCI,CCmCI,CDnCJ,CAAA,EAAA,GCmCW,CDnCX,CAAA,ECoCb,QDpCa,CAAA,CAAA,OCoCI,EDpCJ,EAAA,OCoCe,EDpCf,EAAA,OCoC0B,EDpC1B,EAAA,OCoCqC,EDpCrC,EAAA,OCoCgD,EDpChD,CAAA,CAAA;AAAO,iBCsCP,IDtCO,CAAA,UAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,IAAA,ECuCP,CDvCO,EAAA,GCuCD,CDvCC,EAAA,EAAA,EAAA,CAAA,GAAA,ECwCX,ODxCW,CCwCH,CDxCG,CAAA,EAAA,GCwCI,CDxCJ,EAAA,EAAA,EAAA,CAAA,GAAA,ECyCX,ODzCW,CCyCH,CDzCG,CAAA,EAAA,GCyCI,CDzCJ,EAAA,EAAA,EAAA,CAAA,GAAA,EC0CX,OD1CW,CC0CH,CD1CG,CAAA,EAAA,GC0CI,CD1CJ,EAAA,EAAA,EAAA,CAAA,GAAA,EC2CX,OD3CW,CC2CH,CD3CG,CAAA,EAAA,GC2CI,CD3CJ,EAAA,EAAA,EAAA,CAAA,GAAA,EC4CX,OD5CW,CC4CH,CD5CG,CAAA,EAAA,GC4CI,CD5CJ,CAAA,EC6CpB,QD7CoB,CAAA,CAAA,OC6CH,ED7CG,EAAA,OC6CQ,ED7CR,EAAA,OC6CmB,ED7CnB,EAAA,OC6C8B,ED7C9B,EAAA,OC6CyC,ED7CzC,EAAA,OC6CoD,ED7CpD,CAAA,CAAA;AAAf,iBC+CQ,ID/CR,CAAA,UAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,IAAA,ECgDQ,CDhDR,EAAA,GCgDc,CDhDd,EAAA,EAAA,EAAA,CAAA,GAAA,ECiDI,ODjDJ,CCiDY,CDjDZ,CAAA,EAAA,GCiDmB,CDjDnB,EAAA,EAAA,EAAA,CAAA,GAAA,ECkDI,ODlDJ,CCkDY,CDlDZ,CAAA,EAAA,GCkDmB,CDlDnB,EAAA,EAAA,EAAA,CAAA,GAAA,ECmDI,ODnDJ,CCmDY,CDnDZ,CAAA,EAAA,GCmDmB,CDnDnB,EAAA,EAAA,EAAA,CAAA,GAAA,ECoDI,ODpDJ,CCoDY,CDpDZ,CAAA,EAAA,GCoDmB,CDpDnB,EAAA,EAAA,EAAA,CAAA,GAAA,ECqDI,ODrDJ,CCqDY,CDrDZ,CAAA,EAAA,GCqDmB,CDrDnB,EAAA,EAAA,EAAA,CAAA,GAAA,ECsDI,ODtDJ,CCsDY,CDtDZ,CAAA,EAAA,GCsDmB,CDtDnB,CAAA,ECuDL,QDvDK,CAAA,CAAA,OCuDY,EDvDZ,EAAA,OCuDuB,EDvDvB,EAAA,OCuDkC,EDvDlC,EAAA,OCuD6C,EDvD7C,EAAA,OCuDwD,EDvDxD,EAAA,OCuDmE,EDvDnE,EAAA,OCuD8E,EDvD9E,CAAA,CAAA;AACM,iBCwDE,IDxDF,CAAA,UAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,IAAA,ECyDE,CDzDF,EAAA,GCyDQ,CDzDR,EAAA,EAAA,EAAA,CAAA,GAAA,EC0DF,OD1DE,CC0DM,CD1DN,CAAA,EAAA,GC0Da,CD1Db,EAAA,EAAA,EAAA,CAAA,GAAA,EC2DF,OD3DE,CC2DM,CD3DN,CAAA,EAAA,GC2Da,CD3Db,EAAA,EAAA,EAAA,CAAA,GAAA,EC4DF,OD5DE,CC4DM,CD5DN,CAAA,EAAA,GC4Da,CD5Db,EAAA,EAAA,EAAA,CAAA,GAAA,EC6DF,OD7DE,CC6DM,CD7DN,CAAA,EAAA,GC6Da,CD7Db,EAAA,EAAA,EAAA,CAAA,GAAA,EC8DF,OD9DE,CC8DM,CD9DN,CAAA,EAAA,GC8Da,CD9Db,EAAA,EAAA,EAAA,CAAA,GAAA,EC+DF,OD/DE,CC+DM,CD/DN,CAAA,EAAA,GC+Da,CD/Db,EAAA,EAAA,EAAA,CAAA,GAAA,ECgEF,ODhEE,CCgEM,CDhEN,CAAA,EAAA,GCgEa,CDhEb,CAAA,ECiEX,QDjEW,CAAA,CAAA,OCiEM,EDjEN,EAAA,OCiEiB,EDjEjB,EAAA,OCiE4B,EDjE5B,EAAA,OCiEuC,EDjEvC,EAAA,OCiEkD,EDjElD,EAAA,OCiE6D,EDjE7D,EAAA,OCiEwE,EDjExE,EAAA,OCiEmF,EDjEnF,CAAA,CAAA;AAAO,iBCmEL,IDnEK,CAAA,UAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,IAAA,ECoEL,CDpEK,EAAA,GCoEC,CDpED,EAAA,EAAA,EAAA,CAAA,GAAA,ECqET,ODrES,CCqED,CDrEC,CAAA,EAAA,GCqEM,CDrEN,EAAA,EAAA,EAAA,CAAA,GAAA,ECsET,ODtES,CCsED,CDtEC,CAAA,EAAA,GCsEM,CDtEN,EAAA,EAAA,EAAA,CAAA,GAAA,ECuET,ODvES,CCuED,CDvEC,CAAA,EAAA,GCuEM,CDvEN,EAAA,EAAA,EAAA,CAAA,GAAA,ECwET,ODxES,CCwED,CDxEC,CAAA,EAAA,GCwEM,CDxEN,EAAA,EAAA,EAAA,CAAA,GAAA,ECyET,ODzES,CCyED,CDzEC,CAAA,EAAA,GCyEM,CDzEN,EAAA,EAAA,EAAA,CAAA,GAAA,EC0ET,OD1ES,CC0ED,CD1EC,CAAA,EAAA,GC0EM,CD1EN,EAAA,EAAA,EAAA,CAAA,GAAA,EC2ET,OD3ES,CC2ED,CD3EC,CAAA,EAAA,GC2EM,CD3EN,EAAA,EAAA,EAAA,CAAA,GAAA,EC4ET,OD5ES,CC4ED,CD5EC,CAAA,EAAA,GC4EM,CD5EN,CAAA,EC6ElB,QD7EkB,CAAA,CAAA,OC6ED,ED7EC,EAAA,OC6EU,ED7EV,EAAA,OC6EqB,ED7ErB,EAAA,OC6EgC,ED7EhC,EAAA,OC6E2C,ED7E3C,EAAA,OC6EsD,ED7EtD,EAAA,OC6EiE,ED7EjE,EAAA,OC6E4E,ED7E5E,EAAA,OC6EuF,ED7EvF,CAAA,CAAA;AAAf,iBC+EU,ID/EV,CAAA,UAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,GAAA,IAAA,ECgFU,CDhFV,EAAA,GCgFgB,CDhFhB,EAAA,EAAA,EAAA,CAAA,GAAA,ECiFM,ODjFN,CCiFc,CDjFd,CAAA,EAAA,GCiFqB,CDjFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECkFM,ODlFN,CCkFc,CDlFd,CAAA,EAAA,GCkFqB,CDlFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECmFM,ODnFN,CCmFc,CDnFd,CAAA,EAAA,GCmFqB,CDnFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECoFM,ODpFN,CCoFc,CDpFd,CAAA,EAAA,GCoFqB,CDpFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECqFM,ODrFN,CCqFc,CDrFd,CAAA,EAAA,GCqFqB,CDrFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECsFM,ODtFN,CCsFc,CDtFd,CAAA,EAAA,GCsFqB,CDtFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECuFM,ODvFN,CCuFc,CDvFd,CAAA,EAAA,GCuFqB,CDvFrB,EAAA,EAAA,EAAA,CAAA,GAAA,ECwFM,ODxFN,CCwFc,CDxFd,CAAA,EAAA,GCwFqB,CDxFrB,EAAA,GAAA,EAAA,CAAA,GAAA,ECyFO,ODzFP,CCyFe,CDzFf,CAAA,EAAA,GCyFsB,CDzFtB,CAAA,EC0FH,QD1FG,CAAA,CAA8B,OC2F1B,ED3F0B,EACZ,OC0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"}
|