functype 0.12.0 → 0.14.1
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 +62 -0
- package/dist/{Either-DgkP4DUw.d.ts → Either-BSiHxaKK.d.ts} +248 -54
- package/dist/chunk-RQFW23A2.mjs +43 -0
- package/dist/chunk-RQFW23A2.mjs.map +1 -0
- package/dist/do/index.d.ts +240 -0
- package/dist/do/index.mjs +2 -0
- package/dist/do/index.mjs.map +1 -0
- package/dist/either/index.d.ts +2 -2
- package/dist/either/index.mjs +1 -1
- package/dist/fpromise/index.d.ts +2 -2
- package/dist/fpromise/index.mjs +1 -1
- package/dist/index.d.ts +143 -142
- package/dist/index.mjs +1 -1
- package/dist/list/index.d.ts +2 -2
- package/dist/list/index.mjs +1 -1
- package/dist/map/index.d.ts +2 -2
- package/dist/map/index.mjs +1 -1
- package/dist/option/index.d.ts +2 -2
- package/dist/option/index.mjs +1 -1
- package/dist/set/index.d.ts +2 -2
- package/dist/set/index.mjs +1 -1
- package/dist/try/index.d.ts +2 -74
- package/dist/try/index.mjs +1 -1
- package/dist/tuple/index.d.ts +1 -1
- package/package.json +11 -5
- package/dist/chunk-VXULTLLY.mjs +0 -43
- package/dist/chunk-VXULTLLY.mjs.map +0 -1
- package/dist/{Serializable-CK9upOU0.d.ts → Typeable-CitTP1ay.d.ts} +42 -42
package/README.md
CHANGED
|
@@ -23,6 +23,7 @@ Functype is a lightweight functional programming library for TypeScript, drawing
|
|
|
23
23
|
- **Either Type**: Express computation results with potential failures using `Left` and `Right`
|
|
24
24
|
- **List, Set, Map**: Immutable collection types with functional operators
|
|
25
25
|
- **Try Type**: Safely execute operations that might throw exceptions
|
|
26
|
+
- **Do-notation**: Scala-like for-comprehensions using JavaScript generators for monadic composition
|
|
26
27
|
- **Task**: Handle synchronous and asynchronous operations with error handling
|
|
27
28
|
- **Lazy**: Deferred computation with memoization
|
|
28
29
|
- **Tuple**: Type-safe fixed-length arrays
|
|
@@ -189,6 +190,67 @@ const result = Lazy(() => 10)
|
|
|
189
190
|
.get() // 30
|
|
190
191
|
```
|
|
191
192
|
|
|
193
|
+
### Do-notation (Scala-like For-Comprehensions)
|
|
194
|
+
|
|
195
|
+
Functype provides generator-based Do-notation for monadic composition, similar to Scala's for-comprehensions:
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
import { Do, DoAsync, $ } from "functype"
|
|
199
|
+
import { Option, Right, Left, List, Try } from "functype"
|
|
200
|
+
|
|
201
|
+
// Chain multiple Option operations
|
|
202
|
+
const result = Do(function* () {
|
|
203
|
+
const x = yield* $(Option(5)) // Extract value from Option
|
|
204
|
+
const y = yield* $(Option(10)) // Extract value from another Option
|
|
205
|
+
const z = x + y // Regular computation
|
|
206
|
+
return z * 2 // Return final result
|
|
207
|
+
})
|
|
208
|
+
// result: Option<number> with value 30
|
|
209
|
+
|
|
210
|
+
// Mix different monad types (with Reshapeable)
|
|
211
|
+
const mixed = Do(function* () {
|
|
212
|
+
const a = yield* $(Option(5)) // From Option
|
|
213
|
+
const b = yield* $(Right<string, number>(10)) // From Either
|
|
214
|
+
const c = yield* $(List([15])) // From List
|
|
215
|
+
const d = yield* $(Try(() => 20)) // From Try
|
|
216
|
+
return a + b + c + d
|
|
217
|
+
})
|
|
218
|
+
// Convert result to desired type
|
|
219
|
+
const asOption = mixed.toOption() // Option<number> with value 50
|
|
220
|
+
|
|
221
|
+
// Error propagation - short-circuits on failure
|
|
222
|
+
const validation = Do(function* () {
|
|
223
|
+
const email = yield* $(validateEmail("user@example.com")) // Returns Option
|
|
224
|
+
const user = yield* $(fetchUser(email)) // Returns Either
|
|
225
|
+
const profile = yield* $(loadProfile(user.id)) // Returns Try
|
|
226
|
+
return profile
|
|
227
|
+
})
|
|
228
|
+
// If any step fails, the entire computation short-circuits
|
|
229
|
+
|
|
230
|
+
// List comprehensions (cartesian products)
|
|
231
|
+
const pairs = Do(function* () {
|
|
232
|
+
const x = yield* $(List([1, 2, 3]))
|
|
233
|
+
const y = yield* $(List([10, 20]))
|
|
234
|
+
return { x, y, product: x * y }
|
|
235
|
+
})
|
|
236
|
+
// pairs: List with 6 elements (all combinations)
|
|
237
|
+
|
|
238
|
+
// Async operations with DoAsync
|
|
239
|
+
const asyncResult = await DoAsync(async function* () {
|
|
240
|
+
const user = yield* $(await fetchUserAsync(userId)) // Async Option
|
|
241
|
+
const score = yield* $(await getScoreAsync(user.id)) // Async Either
|
|
242
|
+
const bonus = yield* $(await calculateBonus(score)) // Async Try
|
|
243
|
+
return score + bonus
|
|
244
|
+
})
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Key Differences from Scala:**
|
|
248
|
+
|
|
249
|
+
- Uses `yield* $(monad)` instead of `x <- monad`
|
|
250
|
+
- No native guard syntax (use conditions with early return)
|
|
251
|
+
- Always returns the type of the first yielded monad
|
|
252
|
+
- Mixed types supported via Reshapeable interface
|
|
253
|
+
|
|
192
254
|
### Task
|
|
193
255
|
|
|
194
256
|
Task v2 provides structured error handling with the **Ok/Err pattern**, returning `TaskOutcome<T>` for all operations:
|
|
@@ -1,4 +1,89 @@
|
|
|
1
|
-
import { T as Type, a as Typeable, S as Serializable, F as Foldable
|
|
1
|
+
import { T as Type, P as Pipe, a as Typeable, S as Serializable, F as Foldable } from './Typeable-CitTP1ay.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Protocol definitions for Do-notation
|
|
5
|
+
* Separated from main Do module to avoid circular dependencies
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Protocol symbol for Do-notation unwrapping
|
|
9
|
+
* All monads that support Do-notation should implement this protocol
|
|
10
|
+
*/
|
|
11
|
+
declare const DO_PROTOCOL: unique symbol;
|
|
12
|
+
/**
|
|
13
|
+
* Type for the DO_PROTOCOL symbol
|
|
14
|
+
*/
|
|
15
|
+
type DO_PROTOCOL_TYPE = typeof DO_PROTOCOL;
|
|
16
|
+
/**
|
|
17
|
+
* Result type for Do-notation unwrapping
|
|
18
|
+
* Indicates whether unwrapping succeeded and provides the value or error
|
|
19
|
+
*/
|
|
20
|
+
type DoResult<T> = {
|
|
21
|
+
ok: true;
|
|
22
|
+
value: T;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
empty: true;
|
|
26
|
+
} | {
|
|
27
|
+
ok: false;
|
|
28
|
+
empty: false;
|
|
29
|
+
error: unknown;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Interface for types that support Do-notation
|
|
33
|
+
* Implementing this interface allows a type to be yielded in Do-comprehensions
|
|
34
|
+
*/
|
|
35
|
+
interface DoProtocol<T> {
|
|
36
|
+
[DO_PROTOCOL]: () => DoResult<T>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Extractable type class for data structures that can extract their values
|
|
41
|
+
* with various fallback strategies.
|
|
42
|
+
*
|
|
43
|
+
* This interface is implemented by Option, Either, and other types that
|
|
44
|
+
* wrap values and need safe extraction methods.
|
|
45
|
+
*/
|
|
46
|
+
interface Extractable<T extends Type> {
|
|
47
|
+
/**
|
|
48
|
+
* Extracts the value unsafely
|
|
49
|
+
* @throws Error if the container is empty
|
|
50
|
+
* @returns The contained value
|
|
51
|
+
*/
|
|
52
|
+
get(): T;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the contained value or a default value
|
|
55
|
+
* @param defaultValue - The value to return if extraction fails
|
|
56
|
+
* @returns The contained value or defaultValue
|
|
57
|
+
*/
|
|
58
|
+
getOrElse(defaultValue: T): T;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the contained value or throws an error
|
|
61
|
+
* @param error - Optional error to throw (implementations may have defaults)
|
|
62
|
+
* @returns The contained value
|
|
63
|
+
* @throws The specified error if extraction fails
|
|
64
|
+
*/
|
|
65
|
+
getOrThrow(error?: Error): T;
|
|
66
|
+
/**
|
|
67
|
+
* Returns this container if it has a value, otherwise returns the alternative
|
|
68
|
+
* @param alternative - The alternative container
|
|
69
|
+
* @returns This container or the alternative
|
|
70
|
+
*/
|
|
71
|
+
orElse(alternative: Extractable<T>): Extractable<T>;
|
|
72
|
+
/**
|
|
73
|
+
* Returns the contained value or null
|
|
74
|
+
* @returns The contained value or null
|
|
75
|
+
*/
|
|
76
|
+
orNull(): T | null;
|
|
77
|
+
/**
|
|
78
|
+
* Returns the contained value or undefined
|
|
79
|
+
* @returns The contained value or undefined
|
|
80
|
+
*/
|
|
81
|
+
orUndefined(): T | undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Type guard to check if a value implements ExtractableOption
|
|
85
|
+
*/
|
|
86
|
+
declare function isExtractable<T extends Type>(value: unknown): value is Extractable<T>;
|
|
2
87
|
|
|
3
88
|
/**
|
|
4
89
|
* Universal operations that work on any container (single-value or collection).
|
|
@@ -144,6 +229,164 @@ interface Promisable<A extends Type> {
|
|
|
144
229
|
toPromise(): Promise<A>;
|
|
145
230
|
}
|
|
146
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Possible types of Try instances
|
|
234
|
+
*/
|
|
235
|
+
type TypeNames = "Success" | "Failure";
|
|
236
|
+
interface Try<T> extends FunctypeBase<T, TypeNames>, Extractable<T>, Pipe<T>, Promisable<T>, DoProtocol<T>, Reshapeable<T> {
|
|
237
|
+
readonly _tag: TypeNames;
|
|
238
|
+
readonly error: Error | undefined;
|
|
239
|
+
isSuccess(): this is Try<T> & {
|
|
240
|
+
readonly _tag: "Success";
|
|
241
|
+
error: undefined;
|
|
242
|
+
};
|
|
243
|
+
isFailure(): this is Try<T> & {
|
|
244
|
+
readonly _tag: "Failure";
|
|
245
|
+
error: Error;
|
|
246
|
+
};
|
|
247
|
+
get: () => T;
|
|
248
|
+
getOrElse: (defaultValue: T) => T;
|
|
249
|
+
getOrThrow: (error?: Error) => T;
|
|
250
|
+
orElse: (alternative: Try<T>) => Try<T>;
|
|
251
|
+
orNull: () => T | null;
|
|
252
|
+
orUndefined: () => T | undefined;
|
|
253
|
+
orThrow: (error: Error) => T;
|
|
254
|
+
toOption: () => Option<T>;
|
|
255
|
+
toEither: <E extends Type>(leftValue: E) => Either<E, T>;
|
|
256
|
+
toList: () => List<T>;
|
|
257
|
+
toTry: () => Try<T>;
|
|
258
|
+
map: <U>(f: (value: T) => U) => Try<U>;
|
|
259
|
+
ap: <U>(ff: Try<(value: T) => U>) => Try<U>;
|
|
260
|
+
flatMap: <U>(f: (value: T) => Try<U>) => Try<U>;
|
|
261
|
+
flatMapAsync: <U>(f: (value: T) => Promise<Try<U>>) => Promise<Try<U>>;
|
|
262
|
+
/**
|
|
263
|
+
* Pattern matches over the Try, applying onFailure if Failure and onSuccess if Success
|
|
264
|
+
* @param onFailure - Function to apply if the Try is Failure
|
|
265
|
+
* @param onSuccess - Function to apply if the Try is Success
|
|
266
|
+
* @returns The result of applying the appropriate function
|
|
267
|
+
*/
|
|
268
|
+
fold: <U extends Type>(onFailure: (error: Error) => U, onSuccess: (value: T) => U) => U;
|
|
269
|
+
toString: () => string;
|
|
270
|
+
/**
|
|
271
|
+
* Pattern matches over the Try, applying a handler function based on the variant
|
|
272
|
+
* @param patterns - Object with handler functions for Success and Failure variants
|
|
273
|
+
* @returns The result of applying the matching handler function
|
|
274
|
+
*/
|
|
275
|
+
match<R>(patterns: {
|
|
276
|
+
Success: (value: T) => R;
|
|
277
|
+
Failure: (error: Error) => R;
|
|
278
|
+
}): R;
|
|
279
|
+
toValue(): {
|
|
280
|
+
_tag: TypeNames;
|
|
281
|
+
value: T | Error;
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
declare const Try: (<T>(f: () => T) => Try<T>) & {
|
|
285
|
+
/**
|
|
286
|
+
* Creates a Try from JSON string
|
|
287
|
+
* @param json - The JSON string
|
|
288
|
+
* @returns Try instance
|
|
289
|
+
*/
|
|
290
|
+
fromJSON: <T>(json: string) => Try<T>;
|
|
291
|
+
/**
|
|
292
|
+
* Creates a Try from YAML string
|
|
293
|
+
* @param yaml - The YAML string
|
|
294
|
+
* @returns Try instance
|
|
295
|
+
*/
|
|
296
|
+
fromYAML: <T>(yaml: string) => Try<T>;
|
|
297
|
+
/**
|
|
298
|
+
* Creates a Try from binary string
|
|
299
|
+
* @param binary - The binary string
|
|
300
|
+
* @returns Try instance
|
|
301
|
+
*/
|
|
302
|
+
fromBinary: <T>(binary: string) => Try<T>;
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Interface for types that can be reshaped (converted) between different monadic containers.
|
|
307
|
+
* Provides standard conversion methods to transform between Option, Either, List, and Try types.
|
|
308
|
+
*
|
|
309
|
+
* @typeParam T - The type of the value contained in the monad
|
|
310
|
+
*
|
|
311
|
+
* @example
|
|
312
|
+
* // Convert Option to Either
|
|
313
|
+
* const opt = Option(5)
|
|
314
|
+
* const either = opt.toEither("None value") // Right(5)
|
|
315
|
+
*
|
|
316
|
+
* @example
|
|
317
|
+
* // Convert Either to Option
|
|
318
|
+
* const right = Right(10)
|
|
319
|
+
* const option = right.toOption() // Some(10)
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* // Convert List to Try
|
|
323
|
+
* const list = List([1, 2, 3])
|
|
324
|
+
* const tryVal = list.toTry() // Success(1) - uses first element
|
|
325
|
+
*
|
|
326
|
+
* @example
|
|
327
|
+
* // Use with Do comprehensions
|
|
328
|
+
* const result = Do(function* () {
|
|
329
|
+
* const x = yield* $(Option(5))
|
|
330
|
+
* const y = yield* $(Right<string, number>(10))
|
|
331
|
+
* return x + y
|
|
332
|
+
* })
|
|
333
|
+
*
|
|
334
|
+
* // Convert to desired type for chaining
|
|
335
|
+
* const asOption = result.toOption()
|
|
336
|
+
* asOption.map(x => x * 2).getOrElse(0)
|
|
337
|
+
*/
|
|
338
|
+
interface Reshapeable<T extends Type> {
|
|
339
|
+
/**
|
|
340
|
+
* Converts this monad to an Option.
|
|
341
|
+
*
|
|
342
|
+
* Conversion rules:
|
|
343
|
+
* - Option: returns self
|
|
344
|
+
* - Either: Right → Some, Left → None
|
|
345
|
+
* - List: non-empty → Some(head), empty → None
|
|
346
|
+
* - Try: Success → Some, Failure → None
|
|
347
|
+
*
|
|
348
|
+
* @returns An Option containing the value if present, None otherwise
|
|
349
|
+
*/
|
|
350
|
+
toOption(): Option<T>;
|
|
351
|
+
/**
|
|
352
|
+
* Converts this monad to an Either.
|
|
353
|
+
*
|
|
354
|
+
* Conversion rules:
|
|
355
|
+
* - Option: Some → Right, None → Left(leftValue)
|
|
356
|
+
* - Either: returns self
|
|
357
|
+
* - List: non-empty → Right(head), empty → Left(leftValue)
|
|
358
|
+
* - Try: Success → Right, Failure → Left(error)
|
|
359
|
+
*
|
|
360
|
+
* @param leftValue - The value to use for the Left case when the source is empty/none/failure
|
|
361
|
+
* @returns An Either with the value as Right or the provided leftValue as Left
|
|
362
|
+
*/
|
|
363
|
+
toEither<E extends Type>(leftValue: E): Either<E, T>;
|
|
364
|
+
/**
|
|
365
|
+
* Converts this monad to a List.
|
|
366
|
+
*
|
|
367
|
+
* Conversion rules:
|
|
368
|
+
* - Option: Some → List([value]), None → List([])
|
|
369
|
+
* - Either: Right → List([value]), Left → List([])
|
|
370
|
+
* - List: returns self
|
|
371
|
+
* - Try: Success → List([value]), Failure → List([])
|
|
372
|
+
*
|
|
373
|
+
* @returns A List containing the value(s) if present, empty List otherwise
|
|
374
|
+
*/
|
|
375
|
+
toList(): List<T>;
|
|
376
|
+
/**
|
|
377
|
+
* Converts this monad to a Try.
|
|
378
|
+
*
|
|
379
|
+
* Conversion rules:
|
|
380
|
+
* - Option: Some → Success, None → Failure(Error("None"))
|
|
381
|
+
* - Either: Right → Success, Left → Failure(Error(leftValue))
|
|
382
|
+
* - List: non-empty → Success(head), empty → Failure(Error("Empty list"))
|
|
383
|
+
* - Try: returns self
|
|
384
|
+
*
|
|
385
|
+
* @returns A Try containing Success with the value or Failure with an appropriate error
|
|
386
|
+
*/
|
|
387
|
+
toTry(): Try<T>;
|
|
388
|
+
}
|
|
389
|
+
|
|
147
390
|
/**
|
|
148
391
|
* Creates a Some variant of Option containing a value.
|
|
149
392
|
* @param value - The value to wrap in Some
|
|
@@ -175,7 +418,7 @@ declare const OptionConstructor: <T extends Type>(value: T | null | undefined) =
|
|
|
175
418
|
* It's used to handle potentially null or undefined values in a type-safe way.
|
|
176
419
|
* @typeParam T - The type of the value contained in the Option
|
|
177
420
|
*/
|
|
178
|
-
interface Option<T extends Type> extends Functype<T, "Some" | "None">, Promisable<T> {
|
|
421
|
+
interface Option<T extends Type> extends Functype<T, "Some" | "None">, Promisable<T>, DoProtocol<T>, Reshapeable<T> {
|
|
179
422
|
/** The contained value (undefined for None) */
|
|
180
423
|
readonly value: T | undefined;
|
|
181
424
|
/** Whether this Option contains no value */
|
|
@@ -368,7 +611,7 @@ declare const Option: (<T extends Type>(value: T | null | undefined) => Option<T
|
|
|
368
611
|
fromBinary: <T>(binary: string) => Option<T>;
|
|
369
612
|
};
|
|
370
613
|
|
|
371
|
-
interface List<A> extends FunctypeCollection<A, "List"> {
|
|
614
|
+
interface List<A> extends FunctypeCollection<A, "List">, DoProtocol<A>, Reshapeable<A> {
|
|
372
615
|
readonly length: number;
|
|
373
616
|
readonly [Symbol.iterator]: () => Iterator<A>;
|
|
374
617
|
map: <B>(f: (a: A) => B) => List<B>;
|
|
@@ -464,55 +707,6 @@ interface Collection<A> {
|
|
|
464
707
|
toString(): string;
|
|
465
708
|
}
|
|
466
709
|
|
|
467
|
-
/**
|
|
468
|
-
* Extractable type class for data structures that can extract their values
|
|
469
|
-
* with various fallback strategies.
|
|
470
|
-
*
|
|
471
|
-
* This interface is implemented by Option, Either, and other types that
|
|
472
|
-
* wrap values and need safe extraction methods.
|
|
473
|
-
*/
|
|
474
|
-
interface Extractable<T extends Type> {
|
|
475
|
-
/**
|
|
476
|
-
* Extracts the value unsafely
|
|
477
|
-
* @throws Error if the container is empty
|
|
478
|
-
* @returns The contained value
|
|
479
|
-
*/
|
|
480
|
-
get(): T;
|
|
481
|
-
/**
|
|
482
|
-
* Returns the contained value or a default value
|
|
483
|
-
* @param defaultValue - The value to return if extraction fails
|
|
484
|
-
* @returns The contained value or defaultValue
|
|
485
|
-
*/
|
|
486
|
-
getOrElse(defaultValue: T): T;
|
|
487
|
-
/**
|
|
488
|
-
* Returns the contained value or throws an error
|
|
489
|
-
* @param error - Optional error to throw (implementations may have defaults)
|
|
490
|
-
* @returns The contained value
|
|
491
|
-
* @throws The specified error if extraction fails
|
|
492
|
-
*/
|
|
493
|
-
getOrThrow(error?: Error): T;
|
|
494
|
-
/**
|
|
495
|
-
* Returns this container if it has a value, otherwise returns the alternative
|
|
496
|
-
* @param alternative - The alternative container
|
|
497
|
-
* @returns This container or the alternative
|
|
498
|
-
*/
|
|
499
|
-
orElse(alternative: Extractable<T>): Extractable<T>;
|
|
500
|
-
/**
|
|
501
|
-
* Returns the contained value or null
|
|
502
|
-
* @returns The contained value or null
|
|
503
|
-
*/
|
|
504
|
-
orNull(): T | null;
|
|
505
|
-
/**
|
|
506
|
-
* Returns the contained value or undefined
|
|
507
|
-
* @returns The contained value or undefined
|
|
508
|
-
*/
|
|
509
|
-
orUndefined(): T | undefined;
|
|
510
|
-
}
|
|
511
|
-
/**
|
|
512
|
-
* Type guard to check if a value implements ExtractableOption
|
|
513
|
-
*/
|
|
514
|
-
declare function isExtractable<T extends Type>(value: unknown): value is Extractable<T>;
|
|
515
|
-
|
|
516
710
|
/**
|
|
517
711
|
* Pattern matching interface for functional data types.
|
|
518
712
|
*
|
|
@@ -628,7 +822,7 @@ declare const tryCatchAsync: <L extends Type, R extends Type>(f: () => Promise<R
|
|
|
628
822
|
* @module Either
|
|
629
823
|
* @category Core
|
|
630
824
|
*/
|
|
631
|
-
interface Either<L extends Type, R extends Type> extends FunctypeBase<R, "Left" | "Right">, Promisable<R> {
|
|
825
|
+
interface Either<L extends Type, R extends Type> extends FunctypeBase<R, "Left" | "Right">, Promisable<R>, DoProtocol<R>, Reshapeable<R> {
|
|
632
826
|
readonly _tag: "Left" | "Right";
|
|
633
827
|
value: L | R;
|
|
634
828
|
isLeft(): this is Either<L, R> & {
|
|
@@ -713,4 +907,4 @@ declare const Either: {
|
|
|
713
907
|
fromBinary: <L extends Type, R extends Type>(binary: string) => Either<L, R>;
|
|
714
908
|
};
|
|
715
909
|
|
|
716
|
-
export { type Applicative as A, type Collection as C, Either as E, type FunctypeBase as F, List as L, type Matchable as M, None as N, Option as O, type Promisable as P, Right as R, Some as S,
|
|
910
|
+
export { type Applicative as A, type Collection as C, DO_PROTOCOL as D, Either as E, type FunctypeBase as F, List as L, type Matchable as M, None as N, Option as O, type Promisable as P, Right as R, Some as S, Try as T, type DoResult as a, type Extractable as b, type Traversable as c, type DO_PROTOCOL_TYPE as d, type DoProtocol as e, type TestEither as f, Left as g, isLeft as h, isRight as i, TypeCheckRight as j, TypeCheckLeft as k, tryCatchAsync as l, isExtractable as m, type Functype as n, type FunctypeCollection as o, MatchableUtils as p, OptionConstructor as q, Set as r, type TypeNames as s, tryCatch as t, type CollectionOps as u, type ContainerOps as v, type AsyncMonad as w, type Functor as x, type Monad as y, type Reshapeable as z };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {a,b as b$1}from'./chunk-BQJB6CCW.mjs';import {a as a$1}from'./chunk-YBBRJTHY.mjs';import me from'safe-stable-stringify';var k=Symbol.for("functype.do.unwrap");var q=Set;var M=t=>{let e=new q(t),r={_tag:"Set",[Symbol.iterator]:()=>e[Symbol.iterator](),add:n=>M([...e,n]),remove:n=>{let o=new q(e);return o.delete(n),M(o)},contains:n=>e.has(n),has:n=>e.has(n),map:n=>M(Array.from(e).map(n)),ap:n=>{let o=new q;for(let a of e)for(let s of n)o.add(s(a));return M(o)},flatMap:n=>{let o=new q;for(let a of e)for(let s of n(a))o.add(s);return M(o)},flatMapAsync:async n=>{let o=new q;for(let a of e){let s=await n(a);for(let i of s)o.add(i);}return M(o)},fold:(n,o)=>{if(e.size===0)return n();let a=Array.from(e);if(a.length===0)return n();let s=a[0];return s===void 0?n():o(s)},foldLeft:n=>o=>{let a=n;for(let s of e)a=o(a,s);return a},foldRight:n=>o=>Array.from(e).reduceRight((s,i)=>o(i,s),n),get size(){return e.size},get isEmpty(){return e.size===0},reduce:n=>{let o=Array.from(e);if(o.length===0)throw new Error("Cannot reduce empty Set");return o.reduce(n)},reduceRight:n=>{let o=Array.from(e);if(o.length===0)throw new Error("Cannot reduceRight empty Set");return o.reduceRight(n)},count:n=>{let o=0;for(let a of e)n(a)&&o++;return o},find:n=>{for(let o of e)if(n(o))return f(o);return f(null)},exists:n=>{for(let o of e)if(n(o))return true;return false},forEach:n=>{e.forEach(n);},filter:n=>{let o=new q;for(let a of e)n(a)&&o.add(a);return M(o)},filterNot:n=>{let o=new q;for(let a of e)n(a)||o.add(a);return M(o)},drop:n=>M(Array.from(e).slice(n)),dropRight:n=>M(Array.from(e).slice(0,-n)),dropWhile:n=>{let o=Array.from(e),a=o.findIndex(s=>!n(s));return M(a===-1?[]:o.slice(a))},flatten:()=>{let n=new q;for(let o of e)if(Array.isArray(o))for(let a of o)n.add(a);else if(o&&typeof o=="object"&&Symbol.iterator in o)for(let a of o)n.add(a);else n.add(o);return M(n)},get head(){return Array.from(e)[0]},get headOption(){let n=Array.from(e)[0];return f(n)},toList:()=>m(Array.from(e)),toSet:()=>r,toArray:()=>Array.from(e),toString:()=>`Set(${Array.from(e).toString()})`,toValue:()=>({_tag:"Set",value:Array.from(e)}),pipe:n=>n(Array.from(e)),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Set",value:Array.from(e)}),toYAML:()=>`_tag: Set
|
|
2
|
+
value: ${JSON.stringify(Array.from(e))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Set",value:Array.from(e)})).toString("base64")})};return r},rt=t=>M(t),Me={fromJSON:t=>{let e=JSON.parse(t);return ne(e.value)},fromYAML:t=>{let r=t.split(`
|
|
3
|
+
`)[1]?.split(": ")[1];if(!r)return ne([]);let n=JSON.parse(r);return ne(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Me.fromJSON(e)}},ne=a(rt,Me);function x(t){let e=t;return {get(){return e},set(n){e=n;},update(n){e=n(e);},getAndSet(n){let o=e;return e=n,o},updateAndGet(n){return e=n(e),e},getAndUpdate(n){let o=e;return e=n(e),o},compareAndSet(n,o){return e===n?(e=o,true):false},modify(n){let[o,a]=n(e);return e=o,a}}}x.of=x;var ie=(t=0)=>{let e=x(t),r=t;return {get:()=>e.get(),set:n=>e.set(n),increment:()=>e.updateAndGet(n=>n+1),decrement:()=>e.updateAndGet(n=>n-1),reset:()=>e.set(r),compareAndSet:(n,o)=>e.compareAndSet(n,o)}};var Ae=()=>{let t=x([]);return {add:e=>t.update(r=>[...r,e]),addAll:e=>t.update(r=>[...r,...e]),build:()=>t.get(),clear:()=>t.set([]),size:()=>t.get().length}};var v=t=>{let e={_tag:"LazyList",[Symbol.iterator]:()=>t[Symbol.iterator](),map:r=>v((function*(){for(let n of t)yield r(n);})()),flatMap:r=>v((function*(){for(let n of t)yield*r(n);})()),filter:r=>v((function*(){for(let n of t)r(n)&&(yield n);})()),take:r=>v((function*(){let n=ie(0);for(let o of t){if(n.get()>=r)break;yield o,n.increment();}})()),drop:r=>v((function*(){let n=ie(0);for(let o of t)n.get()>=r&&(yield o),n.increment();})()),takeWhile:r=>v((function*(){for(let n of t){if(!r(n))break;yield n;}})()),dropWhile:r=>v((function*(){let n=x(true);for(let o of t)n.get()&&r(o)||(n.set(false),yield o);})()),concat:r=>v((function*(){yield*t,yield*r;})()),zip:r=>v((function*(){let n=t[Symbol.iterator](),o=r[Symbol.iterator]();for(;;){let a=n.next(),s=o.next();if(a.done||s.done)break;yield [a.value,s.value];}})()),toList:()=>m(Array.from(t)),toArray:()=>Array.from(t),forEach:r=>{for(let n of t)r(n);},reduce:(r,n)=>{let o=x(n);for(let a of t)o.set(r(o.get(),a));return o.get()},find:r=>{for(let n of t)if(r(n))return f(n);return f.none()},some:r=>{for(let n of t)if(r(n))return true;return false},every:r=>{for(let n of t)if(!r(n))return false;return true},count:()=>{let r=ie(0);for(let n of t)r.increment();return r.get()},first:()=>{let n=t[Symbol.iterator]().next();return n.done?f.none():f(n.value)},last:()=>{let r=x(void 0),n=x(false);for(let o of t)r.set(o),n.set(true);return n.get()?f(r.get()):f.none()},fold:(r,n)=>{let a=t[Symbol.iterator]().next();return a.done?r():n(a.value)},foldLeft:r=>n=>{let o=x(r);for(let a of t)o.set(n(o.get(),a));return o.get()},foldRight:r=>n=>Array.from(t).reduceRight((a,s)=>n(s,a),r),pipe:r=>r(e),serialize:()=>{let r=Array.from(t);return {toJSON:()=>JSON.stringify({_tag:"LazyList",value:r}),toYAML:()=>`_tag: LazyList
|
|
4
|
+
value: ${me(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"LazyList",value:r})).toString("base64")}},toString:()=>{let n=[],o=ie(0),a=x(false);for(let i of t)if(o.get()<10)n.push(i),o.increment();else {a.set(true);break}let s=n.map(i=>String(i)).join(", ");return a.get()?`LazyList(${s}, ...)`:`LazyList(${s})`}};return e},ot=t=>v(t),at={empty:()=>v([]),of:t=>v([t]),from:(...t)=>v(t),iterate:(t,e)=>v((function*(){let r=x(t);for(;;)yield r.get(),r.set(e(r.get()));})()),generate:t=>v((function*(){for(;;)yield t();})()),range:(t,e,r=1)=>v((function*(){if(r===0)throw new Error("Step cannot be zero");let n=x(t);if(r>0)for(;n.get()<e;)yield n.get(),n.set(n.get()+r);else for(;n.get()>e;)yield n.get(),n.set(n.get()+r);})()),repeat:(t,e)=>v((function*(){if(e===void 0)for(;;)yield t;else {let r=ie(0);for(;r.get()<e;)yield t,r.increment();}})()),cycle:t=>v((function*(){let e=Array.from(t);if(e.length!==0)for(;;)yield*e;})())},$t=a(ot,at);var de=t=>({_tag:"Success",error:void 0,isSuccess(){return true},isFailure(){return false},get:()=>t,getOrElse:e=>t,getOrThrow:e=>t,orElse:e=>de(t),orNull:()=>t,orUndefined:()=>t,orThrow:e=>t,toEither:e=>c(t),map:e=>P(()=>e(t)),ap:e=>e.map(r=>r(t)),flatMap:e=>e(t),flatMapAsync:async e=>e(t),fold:(e,r)=>r(t),match:e=>e.Success(t),foldLeft:e=>r=>r(e,t),foldRight:e=>r=>r(t,e),toString:()=>`Success(${me(t)})`,toPromise:()=>Promise.resolve(t),toValue:()=>({_tag:"Success",value:t}),toOption:()=>U(t),toList:()=>m([t]),toTry:()=>de(t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Success",value:t}),toYAML:()=>`_tag: Success
|
|
5
|
+
value: ${me(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Success",value:t})).toString("base64")}),get size(){return 1},get isEmpty(){return false},contains:e=>t===e,reduce:e=>t,reduceRight:e=>t,count:e=>e(t)?1:0,find:e=>e(t)?f(t):f(void 0),exists:e=>e(t),forEach:e=>e(t),[k](){return {ok:true,value:t}}}),$=t=>({_tag:"Failure",error:t,isSuccess(){return false},isFailure(){return true},get:()=>{throw t},getOrElse:e=>e,getOrThrow:e=>{throw e??t},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},orThrow:e=>{throw e},toEither:e=>p(t),map:e=>$(t),ap:e=>$(t),flatMap:e=>$(t),flatMapAsync:e=>Promise.resolve($(t)),fold:(e,r)=>e(t),match:e=>e.Failure(t),foldLeft:e=>r=>e,foldRight:e=>r=>e,toString:()=>`Failure(${me(t)}))`,toPromise:()=>Promise.reject(t),toValue:()=>({_tag:"Failure",value:t}),toOption:()=>w(),toList:()=>m([]),toTry:()=>$(t),pipe:e=>{throw t},serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Failure",error:t.message,stack:t.stack}),toYAML:()=>`_tag: Failure
|
|
6
|
+
error: ${t.message}
|
|
7
|
+
stack: ${t.stack}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Failure",error:t.message,stack:t.stack})).toString("base64")}),get size(){return 0},get isEmpty(){return true},contains:e=>false,reduce:e=>{throw new Error("Cannot reduce a Failure")},reduceRight:e=>{throw new Error("Cannot reduceRight a Failure")},count:e=>0,find:e=>f(null),exists:e=>false,forEach:e=>{},[k](){return {ok:false,empty:false,error:t}}}),st=t=>{try{return de(t())}catch(e){return $(e instanceof Error?e:new Error(String(e)))}},Ce={fromJSON:t=>{let e=JSON.parse(t);if(e._tag==="Success")return de(e.value);{let r=new Error(e.error);return e.stack&&(r.stack=e.stack),$(r)}},fromYAML:t=>{let e=t.split(`
|
|
8
|
+
`),r=e[0]?.split(": ")[1];if(!r)return $(new Error("Invalid YAML format for Try"));if(r==="Success"){let n=e[1]?.split(": ")[1];if(!n)return $(new Error("Invalid YAML format for Try Success"));let o=JSON.parse(n);return de(o)}else {let n=e[1]?.split(": ")[1];if(!n)return $(new Error("Invalid YAML format for Try Failure"));let o=e[2]?.split(": "),a=o&&o.length>1?o.slice(1).join(": "):void 0,s=new Error(n);return a&&(s.stack=a),$(s)}},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ce.fromJSON(e)}},P=a(st,Ce);function Le({_tag:t,impl:e}){return {...e,_tag:t}}function we(t,e){return !t||typeof t!="object"||!("_tag"in t)?false:e?t._tag===e:true}var O=t=>{let e=Array.from(t??[]),r={_tag:"List",[Symbol.iterator]:()=>e[Symbol.iterator](),get size(){return e.length},get length(){return e.length},map:n=>O(e.map(n)),ap:n=>O(e.flatMap(o=>Array.from(n).map(a=>a(o)))),flatMap:n=>O(e.flatMap(o=>Array.from(n(o)))),flatMapAsync:async n=>{let o=await Promise.all(e.map(async a=>await n(a)));return O(o.flatMap(a=>Array.from(a)))},forEach:n=>e.forEach(n),contains:n=>e.includes(n),count:n=>e.filter(n).length,exists:n=>e.some(n),filter:n=>O(e.filter(n)),filterNot:n=>O(e.filter(o=>!n(o))),filterType:n=>O(e.filter(o=>we(o,n))),find:(n,o)=>{let a=e.find(s=>n(s)&&(o?we(s,o):true));return f(a)},get head(){return e[0]},get headOption(){return e.length>0?f(e[0]):w()},get isEmpty(){return e.length===0},toArray:()=>[...e],reduce:n=>e.reduce(n),reduceRight:n=>e.reduceRight(n),fold:(n,o)=>{if(e.length===0)return n();let a=e[0];return o(a)},foldLeft:n=>o=>e.reduce(o,n),foldRight:n=>o=>e.reduceRight((a,s)=>o(s,a),n),match:n=>e.length===0?n.Empty():n.NonEmpty([...e]),remove:n=>O(e.filter(o=>o!==n)),removeAt:n=>n<0||n>=e.length?r:O([...e.slice(0,n),...e.slice(n+1)]),add:n=>O([...e,n]),get:n=>f(e[n]),concat:n=>O([...e,...n.toArray()]),drop:n=>O(e.slice(n)),dropRight:n=>O(e.slice(0,-n)),dropWhile:n=>O(e.slice(e.findIndex(o=>!n(o)))),flatten:()=>O(e.flatMap(n=>Array.isArray(n)?n:[n])),toList:()=>r,toSet:()=>ne(e),toOption:()=>e.length>0?f(e[0]):w(),toEither:n=>e.length>0?c(e[0]):p(n),toTry:()=>e.length>0?P(()=>e[0]):P(()=>{throw new Error("Empty list")}),toString:()=>`List(${me(e)})`,toValue:()=>({_tag:"List",value:e}),pipe:n=>n([...e]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"List",value:e}),toYAML:()=>`_tag: List
|
|
9
|
+
value: ${me(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"List",value:e})).toString("base64")}),[k](){return e.length===0?{ok:false,empty:true}:{ok:true,value:e[0]}}};return r},it=t=>O(t),Ve={fromJSON:t=>{let e=JSON.parse(t);return m(e.value)},fromYAML:t=>{let r=t.split(`
|
|
10
|
+
`)[1]?.split(": ")[1];if(!r)return m([]);let n=JSON.parse(r);return m(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ve.fromJSON(e)}},m=a(it,Ve);var ze=t=>({_tag:"Right",value:t,isLeft(){return false},isRight(){return true},get:()=>t,getOrElse:e=>t,getOrThrow:()=>t,orElse:e=>c(t),orNull:()=>t,orUndefined:()=>t,map:e=>c(e(t)),ap:e=>e._tag==="Right"?c(e.value(t)):p(e.value),mapAsync:e=>e(t).then(r=>c(r)).catch(r=>Promise.resolve(p(r))),merge:e=>e.isLeft()?p(e.value):c([t,e.value]),flatMap:e=>e(t),flatMapAsync:e=>e(t).catch(r=>p(r)),toOption:()=>U(t),toList:()=>m([t]),toEither:e=>c(t),toTry:()=>P(()=>t),toJSON(){return {_tag:"Right",value:t}},toString:()=>`Right(${me(t)})`,*[Symbol.iterator](){yield t;},*yield(){yield t;},traverse:e=>{let r=e(t);return r.isLeft()?p(r.value):c([r.value])},*lazyMap(e){yield c(e(t));},tap:e=>(e(t),c(t)),tapLeft:e=>c(t),mapLeft:e=>c(t),bimap:(e,r)=>c(r(t)),fold:(e,r)=>r(t),foldLeft:e=>r=>r(e,t),foldRight:e=>r=>r(t,e),match:e=>e.Right(t),swap:()=>p(t),toPromise:()=>Promise.resolve(t),toValue:()=>({_tag:"Right",value:t}),pipeEither:(e,r)=>r(t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Right",value:t}),toYAML:()=>`_tag: Right
|
|
11
|
+
value: ${me(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Right",value:t})).toString("base64")}),get size(){return 1},get isEmpty(){return false},contains:e=>t===e,reduce:e=>t,reduceRight:e=>t,count:e=>e(t)?1:0,find:e=>e(t)?U(t):w(),exists:e=>e(t),forEach:e=>e(t),[k](){return {ok:true,value:t}}}),De=t=>({_tag:"Left",value:t,isLeft(){return true},isRight(){return false},get:()=>{throw new Error(`Cannot call get() on Left(${me(t)})`)},getOrElse:e=>e,getOrThrow:e=>{throw e??t},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},map:e=>p(t),ap:e=>p(t),mapAsync:e=>Promise.resolve(p(t)),merge:e=>p(t),flatMap:e=>p(t),flatMapAsync:e=>Promise.resolve(p(t)),toOption:()=>w(),toList:()=>m(),toEither:e=>p(e),toTry:()=>P(()=>{throw new Error(String(t))}),toJSON(){return {_tag:"Left",value:t}},toString:()=>`Left(${me(t)})`,*[Symbol.iterator](){},*yield(){},traverse:e=>p(t),*lazyMap(e){yield p(t);},tap:e=>p(t),tapLeft:e=>(e(t),p(t)),mapLeft:e=>p(e(t)),bimap:(e,r)=>p(e(t)),fold:(e,r)=>e(t),foldLeft:e=>r=>e,foldRight:e=>r=>e,match:e=>e.Left(t),swap:()=>c(t),toPromise:()=>Promise.reject(t),toValue:()=>({_tag:"Left",value:t}),pipeEither:(e,r)=>e(t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Left",value:t}),toYAML:()=>`_tag: Left
|
|
12
|
+
value: ${me(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Left",value:t})).toString("base64")}),get size(){return 0},get isEmpty(){return true},contains:e=>false,reduce:e=>{throw new Error("Cannot reduce a Left")},reduceRight:e=>{throw new Error("Cannot reduceRight a Left")},count:e=>0,find:e=>w(),exists:e=>false,forEach:e=>{},[k](){return {ok:false,empty:false,error:t}}}),c=t=>ze(t),p=t=>De(t),fr=t=>t.isRight(),dr=t=>t.isLeft(),mr=(t,e)=>{try{return c(t())}catch(r){return p(e(r))}},ut=t=>ze(t);console.assert(ut);var lt=t=>De(t);console.assert(lt);var yr=async(t,e)=>{try{let r=await t();return c(r)}catch(r){return p(e(r))}},Ie={sequence:t=>t.reduce((e,r)=>e.isLeft()?e:r.isLeft()?p(r.value):e.map(n=>[...n,r.value]),c([])),traverse:(t,e)=>Ie.sequence(t.map(e)),fromNullable:(t,e)=>t==null?p(e):c(t),fromPredicate:(t,e,r)=>e(t)?c(t):p(r),ap:(t,e)=>t.flatMap(r=>e.map(r)),fromPromise:async(t,e)=>{try{let r=await t;return c(r)}catch(r){return p(e(r))}},fromJSON:t=>{let e=JSON.parse(t);return e._tag==="Right"?c(e.value):p(e.value)},fromYAML:t=>{let e=t.split(`
|
|
13
|
+
`),r=e[0]?.split(": ")[1],n=e[1]?.split(": ")[1];if(!r||!n)throw new Error("Invalid YAML format for Either");let o=JSON.parse(n);return r==="Right"?c(o):p(o)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ie.fromJSON(e)}};function I(t,e){return {brand:t,validate:e,of:r=>e(r)?f(a$1(t,r)):f.none(),from:r=>e(r)?c(a$1(t,r)):p(`Invalid ${t}: validation failed`),unsafeOf:r=>{if(!e(r))throw new Error(`Invalid ${t}: validation failed`);return a$1(t,r)},is:r=>{try{return e(r)}catch{return false}},unwrap:r=>r,refine:(r,n)=>I(r,o=>e(o)&&n(o))}}var pt=I("PositiveNumber",t=>t>0),Ar=I("NonNegativeNumber",t=>t>=0),Lr=I("IntegerNumber",t=>Number.isInteger(t)),kr=pt.refine("PositiveInteger",t=>Number.isInteger(t)),xr=I("NonEmptyString",t=>t.length>0),br=I("EmailAddress",t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)),wr=I("UrlString",t=>{try{return new URL(t),!0}catch{return !1}}),Ur=I("UUID",t=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)),Sr=I("ISO8601Date",t=>!isNaN(Date.parse(t))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(t));function vr(t,e,r){return I(t,n=>n>=e&&n<=r)}function Or(t,e,r){return I(t,n=>n.length>=e&&n.length<=r)}function Br(t,e){return I(t,r=>e.test(r))}var Ue=t=>{let e=n=>typeof n=="function"?n():n,r={when:(n,o)=>t.resolved?r:n?Ue({resolved:true,value:e(o)}):r,elseWhen:(n,o)=>t.resolved?r:n?Ue({resolved:true,value:e(o)}):r,else:n=>t.resolved?t.value:e(n),getOrThrow:()=>{if(!t.resolved)throw new Error("Conditional expression has no matching condition");return t.value}};return r},Ke=()=>Ue({resolved:false}),ct={of:()=>Ke(),match:t=>e=>{let r=e[t];if(r===void 0)throw new Error(`No case defined for value: ${String(t)}`);return typeof r=="function"?r():r},lazy:()=>{let t={resolved:false},e={when:(r,n)=>(t.resolved||r()&&(t.resolved=true,t.value=n()),e),elseWhen:(r,n)=>(t.resolved||r()&&(t.resolved=true,t.value=n()),e),else:r=>t.resolved?t.value:r()};return e}},Nr=a(Ke,ct);var ue=(t,e)=>e===t?true:typeof e=="function"?e(t):e&&typeof e=="object"&&"_"in e?e._(t):typeof e=="object"&&e!==null&&typeof t=="object"&&t!==null?Object.entries(e).every(([r,n])=>{let o=t[r];return ue(o,n)}):false,oe=t=>{let e=(o,a)=>typeof o=="function"?o(a):o,r=()=>{for(let{pattern:o,result:a}of t.patterns)if(ue(t.value,o))return {matched:true,result:e(a,t.value)};return {matched:false}},n={case:(o,a)=>{if(t.resolved)return n;let s={...t,patterns:[...t.patterns,{pattern:o,result:a}]};return ue(t.value,o)?oe({...s,resolved:true,result:e(a,t.value)}):oe(s)},caseValue:(o,a)=>{if(t.resolved)return n;if(t.value===o){let s=typeof a=="function"?a():a;return oe({...t,resolved:true,result:s})}return n},caseValues:(o,a)=>{if(t.resolved)return n;if(o.includes(t.value)){let s=typeof a=="function"?a():a;return oe({...t,resolved:true,result:s})}return n},when:(o,a)=>n.case(o,a),caseAny:(o,a)=>{if(t.resolved)return n;for(let s of o)if(ue(t.value,s))return oe({...t,resolved:true,result:e(a,t.value),patterns:[...t.patterns,{pattern:s,result:a}]});return oe({...t,patterns:[...t.patterns,...o.map(s=>({pattern:s,result:a}))]})},default:o=>t.resolved?t.result:e(o,t.value),exhaustive:()=>{let o=r();if(!o.matched)throw new Error(`Non-exhaustive match. No pattern matched value: ${JSON.stringify(t.value)}`);return o.result},getOrThrow:o=>{let a=r();if(!a.matched)throw new Error(o??`No matching pattern for value: ${JSON.stringify(t.value)}`);return a.result},toOption:()=>{let o=r();return o.matched?f(o.result):f.none()}};return n},Tt=t=>oe({value:t,resolved:false,patterns:[]}),ft={exhaustive:t=>e=>{let r=t[e];if(r===void 0)throw new Error(`No case defined for value: ${String(e)}`);return r},partial:t=>({withDefault:e=>r=>{let n=t[r];return n!==void 0?typeof n=="function"?n(r):n:typeof e=="function"?e(r):e}}),withGuards:t=>({withDefault:e=>r=>{for(let[n,o]of t)if(n(r))return typeof o=="function"?o(r):o;return typeof e=="function"?e(r):e}}),struct:()=>{let t=[],e={case:(r,n)=>(t.push({pattern:r,handler:n}),e),build:()=>r=>{for(let{pattern:n,handler:o}of t)if(ue(r,n))return o(r);throw new Error(`No matching pattern for value: ${JSON.stringify(r)}`)}};return e},builder:()=>{let t=[],e,r={case:(n,o)=>(t.push({pattern:n,result:o}),r),when:(n,o)=>(t.push({pattern:n,result:o}),r),default:n=>(e=n,{build:()=>o=>{for(let{pattern:a,result:s}of t)if(ue(o,a))return typeof s=="function"?s(o):s;if(e!==void 0)return typeof e=="function"?e(o):e;throw new Error(`No matching pattern for value: ${JSON.stringify(o)}`)}})};return r}},Vr=a(Tt,ft);function $e(t,e){return {...Le({_tag:t,impl:e}),toString(){return `${t}()`},[k](){if("isSome"in e&&"isNone"in e){if(typeof e.isSome=="function"&&e.isSome()&&"get"in e&&typeof e.get=="function")return {ok:true,value:e.get()};if(typeof e.isNone=="function"&&e.isNone())return {ok:false,empty:true}}if("isLeft"in e&&"isRight"in e){if(typeof e.isRight=="function"&&e.isRight()&&"value"in e)return {ok:true,value:e.value};if(typeof e.isLeft=="function"&&e.isLeft()&&"value"in e)return {ok:false,empty:false,error:e.value}}if("isSuccess"in e&&"isFailure"in e){if(typeof e.isSuccess=="function"&&e.isSuccess()&&"get"in e&&typeof e.get=="function")return {ok:true,value:e.get()};if(typeof e.isFailure=="function"&&e.isFailure()&&"getError"in e&&typeof e.getError=="function")return {ok:false,empty:false,error:e.getError()}}if("isEmpty"in e&&"head"in e){if(typeof e.isEmpty=="function"&&e.isEmpty())return {ok:false,empty:true};if(typeof e.head=="function")return {ok:true,value:e.head()};if("head"in e)return {ok:true,value:e.head}}return {ok:true,value:e}}}}function Je(t){if(!t||typeof t!="object"||!("_tag"in t))return "unknown";switch(t._tag){case "Some":case "None":return "Option";case "Left":case "Right":return "Either";case "List":return "List";case "Success":case "Failure":return "Try";default:return "unknown"}}var ee={Option:{of:t=>f(t),empty:()=>f.none()},Either:{of:t=>c(t),empty:t=>p(t)},List:{of:t=>m([t]),empty:()=>m([])},Try:{of:t=>P(()=>t),empty:t=>P(()=>{throw t??new Error("Try failed")})}};function Yr(t){let e=t(),r=null;function n(o){let a=e.next(o);if(a.done)return r&&r in ee?ee[r]?.of(a.value):m([a.value]);let s=a.value;if(!r&&s&&typeof s=="object"&&"_tag"in s&&(r=Je(s),r==="List"))return dt(t);if(s&&typeof s=="object"&&k in s){let i=s[k]();if(!i.ok){if(!r||!(r in ee))return m([]);let u=ee[r];if("empty"in i&&!i.empty&&"error"in i){if(r==="Either")return u?.empty(i.error);if(r==="Try")return u?.empty(i.error instanceof Error?i.error:new Error(String(i.error)))}return u?.empty()}return n(i.value)}throw new Error("Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.")}return n()}function dt(t){function e(o){if(!o||typeof o!="object"||!(k in o))return [o];let a=o;if("toArray"in a&&typeof a.toArray=="function"){let i=a.toArray();return i.length===0?[]:i}let s=a[k]();return s.ok?[s.value]:[]}function r(o){let a=t(),s=[],i=[],u=0;function l(d){let y=a.next(d);if(y.done){s.push(y.value);return}if(u<o.length){let R=o[u];i.push(R),u++,l(R);return}let A=e(y.value);if(A.length!==0)if(A.length>1){let R=A.flatMap(E=>{let F=[...i,E];return r(F)});s.push(...R);}else i.push(A[0]),u++,l(A[0]);}return l(void 0),s}let n=r([]);return m(n)}async function qr(t){let e=t(),r=null;async function n(o){let a=await e.next(o);if(a.done)return r&&r in ee?ee[r]?.of(a.value):m([a.value]);let s=await Promise.resolve(a.value);if(!r&&s&&typeof s=="object"&&"_tag"in s&&(r=Je(s)),s&&typeof s=="object"&&k in s){let i=s[k]();if(!i.ok){if(!r||!(r in ee))return m([]);let u=ee[r];if("empty"in i&&!i.empty&&"error"in i){if(r==="Either")return u?.empty(i.error);if(r==="Try")return u?.empty(i.error instanceof Error?i.error:new Error(String(i.error)))}return u?.empty()}return n(i.value)}return n(s)}return n()}function Qr(t){return t!==null&&typeof t=="object"&&k in t}function Hr(t){let e=t[k]();if(e.ok)return e.value;throw "error"in e?e.error:new Error("Cannot unwrap empty monad")}function*Zr(t){return yield t}var Xr=(t="Cannot unwrap None in Do-notation")=>{let e=new Error(t),r=Object.create(Error.prototype);return r.message=e.message,r.stack=e.stack,r.name="NoneError",r},en=(t,e="Cannot unwrap Left in Do-notation")=>{let r=new Error(e),n=Object.create(Error.prototype);return n.message=r.message,n.stack=r.stack,n.name="LeftError",n.value=t,n},tn=(t="Cannot unwrap empty List in Do-notation")=>{let e=new Error(t),r=Object.create(Error.prototype);return r.message=e.message,r.stack=e.stack,r.name="EmptyListError",r},rn=(t,e="Cannot unwrap Failure in Do-notation")=>{let r=new Error(e),n=Object.create(Error.prototype);return n.message=r.message,n.stack=r.stack,n.name="FailureError",n.cause=t,n};var ke="Throwable",Q=class t extends Error{constructor(r,n){super(r,{cause:n?.cause});this._tag=ke;this.name=n?.taskInfo?.name??ke,Object.defineProperties(this,{_tag:{value:ke,writable:false,configurable:false},data:{value:n?.data,writable:false,configurable:false},taskInfo:{value:n?.taskInfo,writable:false,configurable:false},name:{value:n?.taskInfo?.name??ke,writable:false,configurable:false}}),n?.cause&&Object.defineProperty(this,"cause",{value:n.cause,writable:false,configurable:false}),n?.stack?this.stack=n.stack:Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}static apply(r,n,o){if(r instanceof Error){let u=new t(r.message,{data:n,cause:r.cause??void 0,stack:r.stack??void 0,taskInfo:o});for(let l of Object.keys(r))if(!(l in u)){let d=u,y=r;d[l]=y[l];}return u}if(r&&typeof r=="object"){let u=r,l=typeof u.message=="string"?u.message:typeof u.error=="string"?u.error:`Object error: ${JSON.stringify(u,Object.getOwnPropertyNames(u).filter(y=>u[y]!==void 0))}`,d=new t(l,{data:n??u,taskInfo:o});for(let y of Object.keys(u))if(!(y in d)){let A=d;A[y]=u[y];}return d}if(typeof r=="function"){let u=r.name??"anonymous function",l=r.toString().substring(0,100)+(r.toString().length>100?"...":"");return new t(`Function error: ${u}`,{data:n??{functionType:typeof r,functionName:u,functionString:l},taskInfo:o})}let a=typeof r,s=r===null?"null":r===void 0?"undefined":String(r);if(a==="number"){let u=r,l=Number.isNaN(u)?"Number error: NaN":Number.isFinite(u)?`Number error: ${u}`:`Number error: ${u>0?"Infinity":"-Infinity"}`;return new t(l,{data:n??{errorType:a,errorValue:u,originalError:r},taskInfo:o})}if(a==="bigint")return new t(`BigInt error: ${r}n`,{data:n??{errorType:a,errorValue:String(r),originalError:r},taskInfo:o});if(a==="boolean")return new t(`Boolean error: ${r}`,{data:n??{errorType:a,errorValue:r,originalError:r},taskInfo:o});if(a==="symbol"){let u=r.description??"unnamed symbol";return new t(`Symbol error: Symbol(${u})`,{data:n??{errorType:a,symbolDescription:u,originalError:r},taskInfo:o})}let i=typeof r=="string"?r:`${a.charAt(0).toUpperCase()+a.slice(1)} error: ${s}`;return new t(i,{data:n??{errorType:a,errorValue:s,originalError:r},taskInfo:o})}};var b=t=>{let e=new Promise((r,n)=>{try{t(r,n);}catch(o){n(o);}});return {_tag:"FPromise",map:r=>b((n,o)=>{e.then(a=>{try{n(r(a));}catch(s){o(s);}}).catch(o);}),flatMap:r=>b((n,o)=>{e.then(a=>{try{let s=r(a);"_tag"in s&&s._tag==="FPromise"?s.then(n,o):Promise.resolve(s).then(n,o);}catch(s){o(s);}}).catch(o);}),flatMapAsync:async r=>{let n=await e,o=r(n);return o instanceof Promise?o:new Promise((a,s)=>{o.then(a,s);})},tap:r=>b((n,o)=>{e.then(a=>{try{r(a),n(a);}catch(s){o(s);}}).catch(o);}),mapError:r=>b((n,o)=>{e.then(n).catch(a=>{try{let s={originalError:a,stack:a instanceof Error?a.stack:void 0,timestamp:Date.now()};o(r(a,s));}catch(s){o(s);}});}),tapError:r=>b((n,o)=>{e.then(n).catch(a=>{try{r(a),o(a);}catch(s){o(s);}});}),recover:r=>b(n=>{e.then(n).catch(()=>n(r));}),recoverWith:r=>b(n=>{e.then(n).catch(o=>{try{n(r(o));}catch{n(null);}});}),recoverWithF:r=>b((n,o)=>{e.then(n).catch(a=>{try{r(a).then(n,o);}catch(s){o(s);}});}),filterError:(r,n)=>b((o,a)=>{e.then(o).catch(s=>{if(r(s))try{n(s).then(o,a);}catch(i){a(i);}else a(s);});}),logError:r=>b((n,o)=>{e.then(n).catch(a=>{try{let s={originalError:a,stack:a instanceof Error?a.stack:void 0,timestamp:Date.now()};r(a,s);}catch{}finally{o(a);}});}),then:(r,n)=>e.then(r,n),toPromise:()=>e,toEither:async()=>{try{let r=await e;return c(r)}catch(r){return p(r)}},fold:(r,n)=>b((o,a)=>{e.then(s=>{try{o(n(s));}catch(i){a(i);}}).catch(s=>{try{o(r(s));}catch(i){a(i);}});})}},mt={resolve:t=>b(e=>e(t)),reject:t=>b((e,r)=>r(t)),from:t=>b((e,r)=>{t.then(e).catch(r);}),fromEither:t=>t.isRight()?b(e=>e(t.value)):b((e,r)=>r(t.value)),all:t=>b((e,r)=>{Promise.all(t.map(n=>n instanceof Promise?n:Promise.resolve(n))).then(e).catch(r);}),allSettled:t=>b(e=>{let r=[],n=0;if(t.length===0){e([]);return}t.forEach((o,a)=>{Promise.resolve(o).then(s=>{r[a]=c(s),n++,n===t.length&&e(r);}).catch(s=>{r[a]=p(s),n++,n===t.length&&e(r);});});}),race:t=>b((e,r)=>{Promise.race(t).then(e,r);}),any:t=>b((e,r)=>{if(typeof Promise.any=="function")Promise.any(t).then(e,r);else {let n=0,o=[];if(t.length===0){r(new AggregateError([],"All promises were rejected"));return}t.forEach((a,s)=>{Promise.resolve(a).then(e).catch(i=>{o[s]=i,n++,n===t.length&&r(new AggregateError(o,"All promises were rejected"));});});}}),retryWithBackoff:(t,e)=>{let{maxRetries:r,baseDelay:n=100,shouldRetry:o=()=>true}=e;return b((a,s)=>{let i=0,u=()=>{t().toPromise().then(a).catch(l=>{if(i++,i<=r&&o(l,i)){let d=n*Math.pow(2,i-1);setTimeout(u,d);}else s(l);});};u();})}},Se=a(b,mt);function yt(t){return t instanceof Error&&typeof t=="object"&&true&&t._tag==="Throwable"}var z=(t,e)=>{if(t.isRight())return H(t.get(),e);if(t.isLeft())return ye(t,void 0,e);throw new Error("Unrecognized task outcome")},ye=(t,e,r)=>{let n={name:r?.name??"Task",description:r?.description??""},o=Q.apply(t,e,n),a=p(o),{isLeft:s,isRight:i,...u}=a;return {...u,_tag:"TaskFailure",_meta:n,error:o,map:l=>{let d=a.map(l);return z(d,r)},flatMap:l=>{let d=a.flatMap(l);return z(d,r)},ap:l=>{let d=a.ap(l);return z(d,r)},merge:l=>{let d=a.merge(l);return z(d,r)},mapAsync:async l=>{let d=await a.mapAsync(l);return z(d,r)},flatMapAsync:async l=>{let d=await a.flatMapAsync(l);return z(d,r)},isSuccess(){return false},isFailure(){return true},mapError:l=>ye(l(o),e,r),recover:l=>H(l,r),recoverWith:l=>H(l(o),r)}},H=(t,e)=>{let r={name:e?.name??"Task",description:e?.description??""},n=c(t),{isLeft:o,isRight:a,...s}=n;return {...s,_tag:"TaskSuccess",_meta:r,map:i=>{let u=n.map(i);return z(u,e)},flatMap:i=>{let u=n.flatMap(i);return z(u,e)},ap:i=>{let u=n.ap(i);return z(u,e)},merge:i=>{let u=n.merge(i);return z(u,e)},mapAsync:async i=>{let u=await n.mapAsync(i);return z(u,e)},flatMapAsync:async i=>{let u=await n.flatMapAsync(i);return z(u,e)},isSuccess(){return true},isFailure(){return false},mapError:i=>H(t,e),recover:i=>H(t,e),recoverWith:i=>H(t,e)}},Oe=(t,e)=>H(t,e),N=(t,e,r)=>ye(t,e,r),ve=()=>{let t=new AbortController,e=Ae();return {token:{get isCancelled(){return t.signal.aborted},get signal(){return t.signal},onCancel(n){t.signal.aborted?n():e.add(n);}},cancel(){t.signal.aborted||(t.abort(),e.build().forEach(n=>{try{n();}catch(o){console.error("Error in cancellation callback:",o);}}));}}},gt=t=>{let e=t?.name??"Task",r=t?.description??"",n={Async:(o,a=u=>u,s=()=>{},i)=>Se((u,l)=>{(async()=>{let d=x(false),y=x(null),A=x(()=>{});if(i){if(i.isCancelled){try{await s();}catch(E){u(N(E,void 0,{name:e,description:r}));return}u(N(new Error("Task was cancelled before execution started"),void 0,{name:e,description:r}));return}let R=()=>{d.set(true),y.set(new Error("Task was cancelled during execution"));};i.onCancel(R),A.set(()=>{});}try{let R=await o();try{await s();}catch(E){u(N(E,void 0,{name:e,description:r}));return}if(d.get()){y.get()?u(N(y.get(),void 0,{name:e,description:r})):u(N(new Error("Task was cancelled during execution"),void 0,{name:e,description:r}));return}if(R&&typeof R=="object"&&"_tag"in R){let E=R;E._tag==="TaskSuccess"||E._tag==="TaskFailure"?u(E):u(Oe(R,{name:e,description:r}));}else u(Oe(R,{name:e,description:r}));}catch(R){try{await s();}catch(E){u(N(E,void 0,{name:e,description:r}));return}if(d.get()){y.get()?u(N(y.get(),void 0,{name:e,description:r})):u(N(new Error("Task was cancelled during execution"),void 0,{name:e,description:r}));return}try{if(R instanceof Error&&yt(R)){let E=new Error(`${e}: ${R.message}`),F=Q.apply(E,void 0,{name:e,description:r});Object.defineProperty(F,"cause",{value:R,writable:!1,configurable:!1}),Promise.resolve().then(()=>{try{a(R);}catch(X){console.error("Error in error handler:",X);}}),u(N(F,void 0,{name:e,description:r}));}else {let E=await a(R);if(E&&typeof E=="object"&&"_tag"in E){let F=E;F._tag==="TaskSuccess"||F._tag==="TaskFailure"?u(F):u(N(E,void 0,{name:e,description:r}));}else u(N(E,void 0,{name:e,description:r}));}}catch(E){u(N(E,void 0,{name:e,description:r}));}}finally{A.get()();}})().catch(d=>u(N(d,void 0,{name:e,description:r})));}),Sync:(o,a=i=>i,s=()=>{})=>{try{return H(o(),{name:e,description:r})}catch(i){return ye(a(i),void 0,{name:e,description:r})}finally{s();}},AsyncWithProgress:(o,a,s=l=>l,i=()=>{},u)=>{let l=d=>{let y=Math.max(0,Math.min(100,d));y<=100&&a(y);};return n.Async(()=>o(l),s,i,u)}};return {...$e("Task",n),_type:"Task"}},je={success:(t,e)=>H(t,e),fail:(t,e,r)=>ye(t,e,r),ok:(t,e)=>Oe(t,e),err:(t,e,r)=>N(t,e,r),getErrorChain:t=>{if(!t)return [];let e=Ae();e.add(t);let r=x(t);for(;r.get()&&r.get().cause;){let{cause:n}=r.get();if(n)e.add(n),r.set(n);else break;if(e.size()>100)break}return e.build()},formatErrorChain:(t,e)=>{let r=je.getErrorChain(t),n=e?.separator??`
|
|
14
|
+
`;return r.map((o,a)=>{if(!o)return `${a>0?"\u21B3 ":""}Unknown error`;let{taskInfo:s}=o,i=e?.includeTasks&&s?.name?`[${s.name}] `:"",u=o.message??"No message",l=x(`${a>0?"\u21B3 ":""}${i}${u}`);return e?.includeStackTrace&&o.stack&&l.set(`${l.get()}
|
|
15
|
+
${o.stack.split(`
|
|
16
|
+
`).slice(1).join(`
|
|
17
|
+
`)}`),l.get()}).join(n)},fromPromise:(t,e)=>(...r)=>J(e??{name:"PromiseTask",description:"Task from Promise"}).Async(()=>t(...r),o=>o),toPromise:t=>new Promise((e,r)=>{t.isSuccess()?e(t.get()):r(t.error);}),race:(t,e,r)=>{let n=r?.name??"TaskRace",o=r?.description??"Race between multiple tasks";return J({name:n,description:o}).Async(async()=>{let s=Ae();t.forEach(u=>s.add(u));let i=x(void 0);if(typeof e=="number"&&e>0){let u=Se((l,d)=>{i.set(setTimeout(()=>{d(new Error(`Task race timed out after ${e}ms`));},e));});s.add(u);}try{return await new Promise((u,l)=>{s.build().forEach(d=>{d.then(y=>{if(y&&typeof y=="object"&&"_tag"in y){let A=y;A._tag==="TaskSuccess"?u(A.get()):A._tag==="TaskFailure"?l(A.error):u(y);}else u(y);},y=>l(y));});})}finally{i.get()&&clearTimeout(i.get());}},s=>s)},fromNodeCallback:(t,e)=>{let r=e?.name??"NodeCallbackTask",n=e?.description??"Task from Node.js callback function",o={name:r,description:n};return (...a)=>J(o).Async(()=>new Promise((s,i)=>{try{t(...a,(u,l)=>{u?i(u):s(l);});}catch(u){i(u);}}),s=>s)},createCancellationTokenSource:ve,cancellable:(t,e)=>{let r=ve();return {task:J(e).Async(()=>t(r.token),o=>o,()=>{},r.token),cancel:()=>r.cancel()}},withProgress:(t,e=()=>{},r)=>{let n=ve(),o=x(0),a=i=>{o.set(Math.max(0,Math.min(100,i))),e(o.get());};return {task:J(r).Async(()=>t(a,n.token),i=>i,()=>{},n.token),cancel:()=>n.cancel(),currentProgress:()=>o.get()}}},J=a(gt,je);var We={includeTasks:true,includeStackTrace:false,separator:`
|
|
18
|
+
`,includeData:false,maxStackFrames:3,title:"Error",colors:false};function Ge(t){let e=new WeakSet;return JSON.stringify(t,(r,n)=>{if(typeof n=="bigint")return `${n.toString()}n`;if(typeof n=="object"&&n!==null){if(e.has(n))return "[Circular Reference]";e.add(n);}return r==="stack"&&typeof n=="string"?xe(n):n},2)}function xe(t){if(t===void 0||t==="")return "";let e=t.split(`
|
|
19
|
+
`),r=e[0],n=e.slice(1).map(o=>o.trim());return [r,...n].join(`
|
|
20
|
+
`)}function An(t,e){let r={...We,...e},n=t instanceof Error?t:Q.apply(t),o=J?.getErrorChain?J.getErrorChain(n):[n],a=r.colors?`\x1B[31m${r.title}:\x1B[0m ${n.message}`:`${r.title}: ${n.message}`,s=o.map((u,l)=>{let d=" ".repeat(l),y=l>0?"\u21B3 ":"",{taskInfo:A}=u,R=r.includeTasks&&A?.name?r.colors?`\x1B[36m[${A.name}]\x1B[0m `:`[${A.name}] `:"",E=`${d}${y}${R}${u.message}`;if(r.includeStackTrace&&u.stack){let X=xe(u.stack).split(`
|
|
21
|
+
`).slice(1),ae=r.maxStackFrames??We.maxStackFrames??3,he=X.slice(0,ae).map(Ee=>`${d} ${r.colors?"\x1B[90m":""}${Ee}${r.colors?"\x1B[0m":""}`).join(`
|
|
22
|
+
`);E+=`
|
|
23
|
+
${he}`,X.length>ae&&(E+=`
|
|
24
|
+
${d} ${r.colors?"\x1B[90m":""}...${X.length-ae} more stack frames${r.colors?"\x1B[0m":""}`);}return E}).join(r.separator),i=`${a}
|
|
25
|
+
|
|
26
|
+
${s}`;if(r.includeData){let{data:u}=n;if(u){let l=r.colors?`
|
|
27
|
+
|
|
28
|
+
\x1B[33mContext:\x1B[0m
|
|
29
|
+
${Ge(u)}`:`
|
|
30
|
+
|
|
31
|
+
Context:
|
|
32
|
+
${Ge(u)}`;i+=l;}}return i}function Ln(){return function(e){if(!e)return e;let r=e instanceof Error?e:new Error(String(e)),n={message:r.message,name:r.name||"Error",stack:r.stack?xe(r.stack):void 0};if(r.taskInfo&&(n.taskInfo=r.taskInfo),r.data&&(n.data=r.data),typeof J?.getErrorChain=="function")try{let o=J.getErrorChain(r);o.length>1&&(n.errorChain=J.formatErrorChain(r,{includeTasks:!0}),n.structuredErrorChain=o.map(a=>({message:a.message,name:a.name,taskInfo:a.taskInfo,stack:a.stack?xe(a.stack):void 0})));}catch{}return Object.getOwnPropertyNames(r).forEach(o=>{if(!n[o]){let a=r[o];n[o]=a;}}),n}}var xn=t=>{let e=new Error(t);return e.name="ParseError",e};var j=(t,e,r,n)=>{let o=Q.apply(e,r,{name:t,description:e});return Object.assign(o,{code:t,message:e,status:ht(t),context:r,timestamp:new Date().toISOString(),traceId:n?.traceId})},ht=t=>({VALIDATION_FAILED:400,BAD_REQUEST:400,AUTH_REQUIRED:401,PERMISSION_DENIED:403,NOT_FOUND:404,TIMEOUT:408,CONFLICT:409,RATE_LIMITED:429,INTERNAL_ERROR:500,NETWORK_ERROR:503})[t],Et={validation:(t,e,r)=>j("VALIDATION_FAILED",`Validation failed: ${t} ${r}`,{field:t,value:e,rule:r}),network:(t,e,r)=>j("NETWORK_ERROR",`Network error: ${e} ${t}${r?` (${r})`:""}`,{url:t,method:e,statusCode:r}),auth:(t,e)=>j("AUTH_REQUIRED",`Authentication required: ${t}${e?` (role: ${e})`:""}`,{resource:t,requiredRole:e}),notFound:(t,e)=>j("NOT_FOUND",`Not found: ${t} with id ${e}`,{resource:t,id:e}),permission:(t,e,r)=>j("PERMISSION_DENIED",`Permission denied: cannot ${t} ${e}`,{action:t,resource:e,userId:r}),rateLimit:(t,e,r)=>j("RATE_LIMITED",`Rate limit exceeded: ${t} requests per ${e}`,{limit:t,window:e,retryAfter:r}),internal:t=>j("INTERNAL_ERROR",`Internal server error: ${t}`,{errorId:t,timestamp:new Date().toISOString()}),badRequest:(t,e)=>j("BAD_REQUEST",`Bad request: ${t}`,{reason:t,expected:e}),conflict:(t,e)=>j("CONFLICT",`Conflict: ${t} already exists with value ${e}`,{resource:t,conflictingValue:e}),timeout:(t,e)=>j("TIMEOUT",`Request timeout: ${e} exceeded ${t}ms`,{duration:t,operation:e}),isTypedError:t=>typeof t=="object"&&t!==null&&"code"in t&&"message"in t&&"status"in t&&"context"in t&&"_tag"in t&&t._tag==="Throwable",hasCode:(t,e)=>t.code===e},S=Object.assign(j,Et);var C={rule:t=>e=>{if(t==="email")return typeof e!="string"||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?p(S.validation("value",e,"must be a valid email")):c(e);if(t==="url")try{return new URL(String(e)),c(e)}catch{return p(S.validation("value",e,"must be a valid URL"))}if(t==="uuid")return typeof e!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)?p(S.validation("value",e,"must be a valid UUID")):c(e);if(t==="required")return e==null||e===""?p(S.validation("value",e,"is required")):c(e);if(t==="numeric")return typeof e!="number"&&!/^\d+$/.test(String(e))?p(S.validation("value",e,"must be numeric")):c(e);if(t==="alpha")return typeof e!="string"||!/^[a-zA-Z]+$/.test(e)?p(S.validation("value",e,"must contain only letters")):c(e);if(t==="alphanumeric")return typeof e!="string"||!/^[a-zA-Z0-9]+$/.test(e)?p(S.validation("value",e,"must be alphanumeric")):c(e);if(t.startsWith("min:")){let r=Number(t.split(":")[1]),n=Number(e);return isNaN(n)||n<r?p(S.validation("value",e,`must be at least ${r}`)):c(e)}if(t.startsWith("max:")){let r=Number(t.split(":")[1]),n=Number(e);return isNaN(n)||n>r?p(S.validation("value",e,`must be at most ${r}`)):c(e)}if(t.startsWith("minLength:")){let r=Number(t.split(":")[1]);return String(e).length<r?p(S.validation("value",e,`must be at least ${r} characters`)):c(e)}if(t.startsWith("maxLength:")){let r=Number(t.split(":")[1]);return String(e).length>r?p(S.validation("value",e,`must be at most ${r} characters`)):c(e)}if(t.startsWith("pattern:")){let r=t.substring(8);return new RegExp(r).test(String(e))?c(e):p(S.validation("value",e,`must match pattern ${r}`))}if(t.startsWith("in:")){let r=t.substring(3).split(",");return r.includes(String(e))?c(e):p(S.validation("value",e,`must be one of: ${r.join(", ")}`))}if(t.startsWith("notIn:")){let r=t.substring(6).split(",");return r.includes(String(e))?p(S.validation("value",e,`must not be one of: ${r.join(", ")}`)):c(e)}if(t==="date"){let r=new Date(String(e));return isNaN(r.getTime())?p(S.validation("value",e,"must be a valid date")):c(e)}if(t==="future"){let r=new Date(String(e));return isNaN(r.getTime())||r<=new Date?p(S.validation("value",e,"must be a future date")):c(e)}if(t==="past"){let r=new Date(String(e));return isNaN(r.getTime())||r>=new Date?p(S.validation("value",e,"must be a past date")):c(e)}return c(e)},combine:(...t)=>e=>{for(let r of t){let n=r(e);if(n.isLeft())return n}return c(e)},custom:(t,e)=>r=>t(r)?c(r):p(S.validation("value",r,e)),form:(t,e)=>{let r=[],n={};for(let[o,a]of Object.entries(t)){let s=e[o],i=a(s);if(i.isLeft()){let u=i.fold(d=>d,()=>{throw new Error("Should not be left")}),l=S.validation(o,s,u.context.rule);r.push(l);}else n[o]=i.get();}return r.length>0?p(m(r)):c(n)}},Rt={...C,validators:{email:C.rule("email"),url:C.rule("url"),uuid:C.rule("uuid"),required:C.rule("required"),numeric:C.rule("numeric"),positiveNumber:C.combine(C.rule("numeric"),C.rule("min:0")),nonEmptyString:C.combine(C.rule("required"),C.custom(t=>typeof t=="string"&&t.trim().length>0,"must not be empty"))}},Bn=Object.assign(C.rule,Rt);function At(t){return t!=null&&typeof t=="object"&&"getOrElse"in t&&typeof t.getOrElse=="function"&&"getOrThrow"in t&&typeof t.getOrThrow=="function"&&"get"in t&&typeof t.get=="function"&&"orElse"in t&&typeof t.orElse=="function"&&"orNull"in t&&typeof t.orNull=="function"&&"orUndefined"in t&&typeof t.orUndefined=="function"}var In={toOption:t=>t.fold(()=>w(),e=>U(e)),toList:t=>t.fold(()=>m([]),e=>m([e])),toEither:(t,e)=>t.fold(()=>p(e),r=>c(r)),isEmpty:t=>t.fold(()=>true,()=>false),size:t=>t.fold(()=>0,()=>1)};var te=t=>t!==null&&typeof t=="object"&&(t._tag==="Some"||t._tag==="None"),Y=t=>t!==null&&typeof t=="object"&&t._tag==="List",le=t=>t!==null&&typeof t=="object"&&(t._tag==="Left"||t._tag==="Right"),pe=t=>t!==null&&typeof t=="object"&&(t._tag==="Success"||t._tag==="Failure"),W=()=>{let t=(s,i)=>{if(te(s))return s.map(u=>i(u));if(Y(s))return s.map(u=>i(u));if(le(s))return s.map(u=>i(u));if(pe(s))return s.map(u=>i(u));throw new Error(`Unsupported functor type: ${JSON.stringify(s)}`)},e=s=>{if(te(s))return s.get();if(Y(s)){let i=s.toArray();if(i.length>0&&Y(i[0])){let u=[];for(let l of i)Y(l)&&u.push(...l.toArray());return m(u)}return s.flatten()}if(le(s))return s.isRight()?s.fold(()=>null,i=>i):s;if(pe(s))return s.isSuccess()?s.get():s;throw new Error(`Unsupported functor type for flatten: ${JSON.stringify(s)}`)},r=(s,i)=>{if(te(s))return s.flatMap(u=>i(u));if(Y(s))return s.flatMap(u=>i(u));if(le(s))return s.flatMap(u=>i(u));if(pe(s))return s.flatMap(u=>i(u));throw new Error(`Unsupported functor type for flatMap: ${JSON.stringify(s)}`)},n=(s,i)=>{if(te(s)&&te(i))return s.flatMap(u=>i.map(l=>u(l)));if(Y(s)&&Y(i))return s.flatMap(u=>i.map(l=>u(l)));if(le(s)&&le(i))return s.flatMap(u=>i.map(l=>u(l)));if(pe(s)&&pe(i))return s.flatMap(u=>i.map(l=>u(l)));throw new Error(`Unsupported functor type for ap: ${JSON.stringify(s)}`)},o=s=>{if(te(s)){let i=s;if(i.isEmpty)return m([f.none()]);let u=i.get();if(Y(u))return u.map(l=>f(l));throw new Error("Unsupported inner container type for sequence")}if(Y(s)){let u=s.toArray();if(u.length===0)return f.none();let l=u[0];if(te(l)){for(let y of u)if(y.isEmpty)return f.none();let d=u.map(y=>y.get());return f(m(d))}throw new Error("Unsupported inner container type for sequence")}throw new Error(`Unsupported outer container type for sequence: ${JSON.stringify(s)}`)};return {_tag:"HKT",map:t,flatten:e,flatMap:r,ap:n,sequence:o,traverse:(s,i)=>o(t(s,u=>i(u))),_type:"HKT"}},ce=W();W.map=(t,e)=>ce.map(t,e);W.flatten=t=>ce.flatten(t);W.flatMap=(t,e)=>ce.flatMap(t,e);W.ap=(t,e)=>ce.ap(t,e);W.sequence=t=>ce.sequence(t);W.traverse=(t,e)=>ce.traverse(t,e);W.isOption=te;W.isList=Y;W.isEither=le;W.isTry=pe;function Jn(t){return {id:t,isSame:r=>r.id===t}}var re=t=>{let e=false,r,n,o=false,a=()=>{if(!e)try{r=t(),e=!0;}catch(i){throw n=i,o=true,e=true,i}if(o)throw n;return r};return {_tag:"Lazy",get isEvaluated(){return e},get:a,getOrElse:i=>{try{return a()}catch{return i}},getOrNull:()=>{try{return a()}catch{return null}},orNull:()=>{try{return a()}catch{return null}},getOrThrow:i=>{try{return a()}catch(u){throw i??u}},orElse:i=>D(()=>{try{return a()}catch{return i.get()}}),orUndefined:()=>{try{return a()}catch{return}},map:i=>D(()=>i(a())),ap:i=>D(()=>i.get()(a())),mapAsync:async i=>{let u=a(),l=await i(u);return D(()=>l)},flatMap:i=>D(()=>i(a()).get()),flatMapAsync:async i=>{let u=a(),l=await i(u);return D(()=>l.get())},filter:i=>D(()=>{let u=a();return i(u)?U(u):w}),recover:i=>D(()=>{try{return a()}catch(u){return i(u)}}),recoverWith:i=>D(()=>{try{return a()}catch(u){return i(u).get()}}),toOption:()=>{try{return U(a())}catch{return w}},toEither:()=>{try{return c(a())}catch(i){return p(i)}},toEitherWith:i=>{try{return c(a())}catch(u){return p(i(u))}},toTry:()=>P(()=>a()),tap:i=>D(()=>{let u=a();return i(u),u}),tapError:i=>D(()=>{try{return a()}catch(u){throw i(u),u}}),fold:i=>i(a()),foldWith:(i,u)=>{try{return u(a())}catch(l){return i(l)}},foldLeft:i=>u=>u(i,a()),foldRight:i=>u=>u(a(),i),match:i=>i.Lazy(a()),toString:()=>e&&!o?`Lazy(${me(r)})`:e&&o?`Lazy(<error: ${n instanceof Error?n.message:String(n)}>)`:"Lazy(<not evaluated>)",toValue:()=>e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false},get size(){try{return a(),1}catch{return 0}},get isEmpty(){try{return a(),!1}catch{return true}},contains:i=>{try{return a()===i}catch{return false}},reduce:i=>a(),reduceRight:i=>a(),count:i=>{try{return i(a())?1:0}catch{return 0}},find:i=>{try{let u=a();return i(u)?U(u):w}catch{return w}},exists:i=>{try{return i(a())}catch{return false}},forEach:i=>{try{i(a());}catch{}},pipe:i=>i(a()),serialize:()=>({toJSON:()=>JSON.stringify(e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false}),toYAML:()=>e&&!o?`_tag: Lazy
|
|
33
|
+
evaluated: true
|
|
34
|
+
value: ${me(r)}`:`_tag: Lazy
|
|
35
|
+
evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false})).toString("base64")}),typeable:"Lazy"}},Lt={of:t=>re(t),fromValue:t=>re(()=>t),fromOption:(t,e)=>re(()=>t._tag==="Some"?t.value:e()),fromTry:t=>re(()=>t.get()),fromEither:t=>re(()=>t.fold(e=>{throw e},e=>e)),fromPromise:t=>re(()=>{throw new Error("Promise not yet resolved. Use await on the promise before creating Lazy.")}),fail:t=>re(()=>{throw t})},D=a(re,Lt);var ge=Map;var Z=t=>{let r={values:new ge(t)},n=()=>Array.from(r.values.entries()).map(([T,h])=>b$1([T,h])),o=T=>Z(new ge(r.values).set(T.toArray()[0],T.toArray()[1]).entries()),a=T=>{let h=new ge(r.values);return h.delete(T)?Z(h.entries()):Z(r.values.entries())},s=T=>{let h=T.toArray();return r.values.get(h[0])===h[1]},i=()=>r.values.size,u=T=>Z(Array.from(r.values.entries()).map(([h,V])=>[h,T(V)])),l=T=>{let h=Z(r.values.entries()).toList();return Z(h.flatMap(T).toArray())},d=T=>{let h=[];for(let[V,se]of r.values.entries()){let fe=T.get(V);fe._tag==="Some"&&fe.value&&h.push([V,fe.value(se)]);}return Z(h)},y=async T=>{let h=new ge;for(let[V,se]of r.values.entries()){let fe=await T(se);for(let Xe of fe.toList()){let[et,tt]=Xe.toArray();h.set(et,tt);}}return Z(h.entries())},A=T=>m(n()).reduce(T),R=T=>m(n()).reduceRight(T),E=T=>h=>m(n()).foldLeft(T)(h),F=T=>h=>m(n()).foldRight(T)(h),X=T=>f(r.values.get(T)),ae=(T,h)=>f(r.values.get(T)).getOrElse(h),Te=()=>r.values.size===0,he=(T,h)=>f(r.values.get(T)).orElse(h),Ee=(T,h)=>{if(Te())return T();let V=n();if(V.length===0)return T();let se=V[0];return se===void 0?T():h(se)},_e=()=>m(n()),g=()=>ne(n()),B=()=>`Map(${n().toString()})`,_=T=>Te()?T.Empty():T.NonEmpty(n());return {_tag:"Map",[Symbol.iterator]:()=>r.values.entries(),add:o,remove:a,contains:s,get size(){return i()},map:u,ap:d,flatMap:l,flatMapAsync:y,reduce:A,reduceRight:R,foldLeft:E,foldRight:F,fold:Ee,match:_,get:X,getOrElse:ae,get isEmpty(){return Te()},orElse:he,toList:_e,toSet:g,toString:B,toValue:()=>({_tag:"Map",value:Array.from(r.values.entries())}),pipe:T=>T(Array.from(r.values.entries())),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())}),toYAML:()=>`_tag: Map
|
|
36
|
+
value: ${JSON.stringify(Array.from(r.values.entries()))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())})).toString("base64")})}},kt=t=>Z(t),qe={fromJSON:t=>{let e=JSON.parse(t);return Be(e.value)},fromYAML:t=>{let r=t.split(`
|
|
37
|
+
`)[1]?.split(": ")[1];if(!r)return Be([]);let n=JSON.parse(r);return Be(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return qe.fromJSON(e)}},Be=a(kt,qe);var xt={default:t=>e=>t(e),when:(t,e)=>r=>t(r)?e(r):void 0};var K=(t=[])=>{let e="Stack",r=[...t],n=()=>r.length,o=()=>r.length===0;return {_tag:e,get size(){return n()},get isEmpty(){return o()},contains:g=>r.includes(g),reduce:g=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduce(g)},reduceRight:g=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduceRight(g)},push:g=>K([...r,g]),pop:()=>{if(o())return [K([]),f(null)];let g=[...r],B=g.pop();return [K(g),f(B)]},peek:()=>o()?f(null):f(r[r.length-1]),map:g=>K(r.map(g)),flatMap:g=>o()?K([]):r.reduce((B,_)=>g(_).toArray().reduce((h,V)=>h.push(V),B),K([])),ap:g=>{let B=[];return r.forEach(_=>{g.toArray().forEach(T=>{B.push(T(_));});}),K(B)},flatMapAsync:async g=>o()?K([]):(await Promise.all(r.map(async _=>await g(_)))).reduce((_,T)=>T.toArray().reduce((h,V)=>h.push(V),_),K([])),toList:()=>m(r),toArray:()=>[...r],toString:()=>`Stack(${r.join(", ")})`,fold:(g,B)=>{if(o())return g();let _=r[r.length-1];return _!==void 0?B(_):g()},foldLeft:g=>B=>r.reduce(B,g),foldRight:g=>B=>r.reduceRight((_,T)=>B(T,_),g),match:g=>o()?g.Empty():g.NonEmpty([...r]),toValue:()=>({_tag:"Stack",value:r}),pipe:g=>g([...r]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Stack",value:r}),toYAML:()=>`_tag: Stack
|
|
38
|
+
value: ${JSON.stringify(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Stack",value:r})).toString("base64")})}},bt=(t=[])=>K(t),Qe={empty:()=>K([]),of:t=>K([t]),fromJSON:t=>{let e=JSON.parse(t);return Pe(e.value)},fromYAML:t=>{let r=t.split(`
|
|
39
|
+
`)[1]?.split(": ")[1];if(!r)return Pe([]);let n=JSON.parse(r);return Pe(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Qe.fromJSON(e)}},Pe=a(bt,Qe);function Eo(t){let e=Le({_tag:t._tag,impl:t.impl});return {...e,toValue:()=>({_tag:e._tag,value:t.value})}}var U=t=>({_tag:"Some",value:t,isEmpty:false,isSome(){return true},isNone(){return false},get:()=>t,getOrElse:()=>t,getOrThrow:()=>t,orElse:e=>U(t),orNull:()=>t,orUndefined:()=>t,map:e=>U(e(t)),ap:e=>e._tag==="Some"&&e.value?U(e.value(t)):G,filter(e){return e(t)?U(t):G},count:e=>e(t)?1:0,find:e=>e(t)?U(t):G,exists:e=>e(t),forEach:e=>e(t),fold:(e,r)=>r(t),match:e=>e.Some(t),flatMap:e=>e(t),flatMapAsync:async e=>await e(t),reduce:e=>e(void 0,t),reduceRight:e=>e(void 0,t),foldLeft:e=>r=>r(e,t),foldRight:e=>r=>r(t,e),toList:()=>m([t]),contains:e=>e===t,size:1,toOption:()=>U(t),toEither:e=>c(t),toTry:()=>P(()=>t),toPromise:()=>Promise.resolve(t),toString:()=>`Some(${me(t)})`,toValue:()=>({_tag:"Some",value:t}),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Some",value:t}),toYAML:()=>`_tag: Some
|
|
40
|
+
value: ${me(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Some",value:t})).toString("base64")}),[k](){return {ok:true,value:t}}}),G={_tag:"None",value:void 0,isEmpty:true,isSome(){return false},isNone(){return true},get:()=>{throw new Error("Cannot call get() on None")},getOrElse:t=>t,getOrThrow(t){throw t},orElse:t=>t,orNull:()=>null,orUndefined:()=>{},map:t=>G,ap:t=>G,filter(t){return G},count:t=>0,find:t=>G,exists:t=>false,forEach:t=>{},flatMap:t=>G,flatMapAsync:t=>Promise.resolve(G),reduce:()=>{},reduceRight:()=>{},fold:(t,e)=>t(),match:t=>t.None(),foldLeft:t=>()=>t,foldRight:t=>()=>t,toList:()=>m([]),contains:()=>false,size:0,toOption:()=>G,toEither:t=>p(t),toTry:()=>P(()=>{throw new Error("None")}),toPromise:()=>Promise.reject(new Error("Cannot convert None to Promise")),toString:()=>"None",toValue:()=>({_tag:"None",value:void 0}),pipe:t=>t(void 0),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"None",value:null}),toYAML:()=>`_tag: None
|
|
41
|
+
value: null`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"None",value:null})).toString("base64")}),[k](){return {ok:false,empty:true}}},w=()=>G,wt=t=>t!=null?U(t):w(),Ze={from:t=>f(t),none:()=>w(),fromJSON:t=>{let e=JSON.parse(t);return e._tag==="Some"?U(e.value):w()},fromYAML:t=>{let e=t.split(`
|
|
42
|
+
`),r=e[0]?.split(": ")[1],n=e[1]?.split(": ")[1];if(!r||!n)return w();let o=n==="null"?null:JSON.parse(n);return r==="Some"?U(o):w()},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ze.fromJSON(e)}},f=a(wt,Ze);export{Oe as $,xr as A,br as B,wr as C,Ur as D,Sr as E,vr as F,Or as G,Br as H,Nr as I,Vr as J,$e as K,Yr as L,qr as M,Qr as N,Hr as O,Zr as P,Xr as Q,en as R,tn as S,rn as T,ke as U,Q as V,mt as W,Se as X,yt as Y,ye as Z,H as _,k as a,N as aa,U as b,ve as ba,w as c,J as ca,wt as d,Ge as da,f as e,xe as ea,ne as f,An as fa,x as g,Ln as ga,$t as h,xn as ha,P as i,S as ia,Le as j,Bn as ja,we as k,At as ka,m as l,In as la,c as m,W as ma,p as n,Jn as na,fr as o,D as oa,dr as p,ge as pa,mr as q,Be as qa,ut as r,xt as ra,lt as s,Pe as sa,yr as t,Eo as ta,Ie as u,I as v,pt as w,Ar as x,Lr as y,kr as z};//# sourceMappingURL=chunk-RQFW23A2.mjs.map
|
|
43
|
+
//# sourceMappingURL=chunk-RQFW23A2.mjs.map
|