functype 0.8.69 → 0.8.80

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 CHANGED
@@ -15,6 +15,7 @@ Functype is a lightweight functional programming library for TypeScript, drawing
15
15
  - **Type Safety**: Leverages TypeScript's type system to ensure compile-time safety
16
16
  - **Composability**: Provides abstractions for building complex programs from simple components
17
17
  - **Functional Paradigms**: Embraces concepts like monads, functors, and type classes
18
+ - **Unified Interface**: All data structures implement a common hierarchy of interfaces for consistency
18
19
 
19
20
  ## Key Features
20
21
 
@@ -23,11 +24,13 @@ Functype is a lightweight functional programming library for TypeScript, drawing
23
24
  - **List, Set, Map**: Immutable collection types with functional operators
24
25
  - **Try Type**: Safely execute operations that might throw exceptions
25
26
  - **Task**: Handle synchronous and asynchronous operations with error handling
27
+ - **Lazy**: Deferred computation with memoization
26
28
  - **Tuple**: Type-safe fixed-length arrays
27
29
  - **Typeable**: Runtime type identification with compile-time safety
28
30
  - **Branded Types**: Nominal typing in TypeScript's structural type system
29
31
  - **FPromise**: Enhanced Promise functionality with built-in error handling
30
32
  - **Error Formatting**: Utilities for improved error visualization and logging
33
+ - **Unified Type Classes**: Consistent interfaces across all data structures
31
34
 
32
35
  ## Installation
33
36
 
@@ -128,6 +131,11 @@ const sum = numbers.foldLeft(0)((acc, x) => acc + x) // 10
128
131
  // Add/remove elements (immutably)
129
132
  const withFive = numbers.add(5) // List([1, 2, 3, 4, 5])
130
133
  const without3 = numbers.remove(3) // List([1, 2, 4])
134
+
135
+ // Universal container operations
136
+ const hasEven = numbers.exists(x => x % 2 === 0) // true
137
+ const firstEven = numbers.find(x => x % 2 === 0) // Some(2)
138
+ const evenCount = numbers.count(x => x % 2 === 0) // 2
131
139
  ```
132
140
 
133
141
  ### Try
@@ -155,6 +163,32 @@ const name = result.map((obj) => obj.name)
155
163
  const either = result.toEither()
156
164
  ```
157
165
 
166
+ ### Lazy
167
+
168
+ ```typescript
169
+ import { Lazy } from "functype"
170
+
171
+ // Create lazy computations
172
+ const expensive = Lazy(() => {
173
+ console.log("Computing...")
174
+ return Math.random() * 1000
175
+ })
176
+
177
+ // Value is computed on first access and memoized
178
+ const value1 = expensive.get() // Logs "Computing...", returns number
179
+ const value2 = expensive.get() // Returns same number, no log
180
+
181
+ // Transform lazy values
182
+ const doubled = expensive.map(x => x * 2)
183
+ const formatted = doubled.map(x => `Value: ${x}`)
184
+
185
+ // Chain computations
186
+ const result = Lazy(() => 10)
187
+ .flatMap(x => Lazy(() => x + 5))
188
+ .map(x => x * 2)
189
+ .get() // 30
190
+ ```
191
+
158
192
  ### Task
159
193
 
160
194
  ```typescript
@@ -230,9 +264,76 @@ getUserByEmail("invalid") // Type error: Argument of type 'string' is not assign
230
264
  getUserByEmail(userId) // Type error: Argument of type 'UserId' is not assignable to parameter of type 'Email'
231
265
  ```
232
266
 
267
+ ## Conditional Programming
268
+
269
+ Functype provides `Cond` and `Match` for functional conditional logic without early returns:
270
+
271
+ ### Cond
272
+
273
+ ```typescript
274
+ import { Cond } from "functype"
275
+
276
+ // Replace if-else chains with Cond
277
+ const grade = Cond<number, string>()
278
+ .case(score => score >= 90, "A")
279
+ .case(score => score >= 80, "B")
280
+ .case(score => score >= 70, "C")
281
+ .case(score => score >= 60, "D")
282
+ .default("F")
283
+
284
+ console.log(grade(85)) // "B"
285
+ console.log(grade(55)) // "F"
286
+
287
+ // With transformation
288
+ const discount = Cond<number, number>()
289
+ .case(
290
+ qty => qty >= 100,
291
+ qty => qty * 0.20 // 20% off for 100+
292
+ )
293
+ .case(
294
+ qty => qty >= 50,
295
+ qty => qty * 0.10 // 10% off for 50+
296
+ )
297
+ .case(
298
+ qty => qty >= 10,
299
+ qty => qty * 0.05 // 5% off for 10+
300
+ )
301
+ .default(0)
302
+
303
+ console.log(discount(150)) // 30 (20% of 150)
304
+ ```
305
+
306
+ ### Match
307
+
308
+ ```typescript
309
+ import { Match } from "functype"
310
+
311
+ // Pattern matching with Match
312
+ type Status = "pending" | "approved" | "rejected" | "cancelled"
313
+
314
+ const statusMessage = Match<Status, string>()
315
+ .case("pending", "Your request is being processed")
316
+ .case("approved", "Your request has been approved!")
317
+ .case("rejected", "Sorry, your request was rejected")
318
+ .case("cancelled", "Your request was cancelled")
319
+ .exhaustive()
320
+
321
+ console.log(statusMessage("approved")) // "Your request has been approved!"
322
+
323
+ // Match with predicates
324
+ const numberType = Match<number, string>()
325
+ .case(0, "zero")
326
+ .case(n => n > 0, "positive")
327
+ .case(n => n < 0, "negative")
328
+ .exhaustive()
329
+
330
+ console.log(numberType(42)) // "positive"
331
+ console.log(numberType(-5)) // "negative"
332
+ ```
333
+
233
334
  ## Fold
234
335
 
235
- New in v0.8.66, Functype now includes a powerful `fold` operation for its monadic structures:
336
+ Functype includes a powerful `fold` operation for pattern matching and extracting values:
236
337
 
237
338
  ```typescript
238
339
  import { Option, Either, Try, List } from "functype"
@@ -265,7 +366,7 @@ const listResult = list.foldLeft(0)((acc, num) => acc + num) // 6
265
366
 
266
367
  ## Foldable
267
368
 
268
- New in v0.8.67, Functype includes a proper `Foldable` type class that data structures can implement:
369
+ Functype includes a `Foldable` type class that all data structures implement:
269
370
 
270
371
  ```typescript
271
372
  import { FoldableUtils, Option, List, Try } from "functype"
@@ -296,7 +397,7 @@ const convertedToEither = FoldableUtils.toEither(tryVal, "Error") // Right(10)
296
397
 
297
398
  ## Matchable
298
399
 
299
- New in v0.8.68, Functype now includes a `Matchable` type class for enhanced pattern matching:
400
+ Functype includes a `Matchable` type class for enhanced pattern matching:
300
401
 
301
402
  ```typescript
302
403
  import { Option, Either, Try, List, MatchableUtils } from "functype"
@@ -342,6 +443,83 @@ const num = 42
342
443
  const result = isPositive(num) ?? defaultCase(num) // "Positive: 42"
343
444
  ```
344
445
 
446
+ ## Interface Hierarchy
447
+
448
+ All data structures in Functype implement a unified hierarchy of interfaces, providing consistent behavior across the library:
449
+
450
+ ### Type Classes
451
+
452
+ Functype leverages type classes to provide common operations:
453
+
454
+ - **Functor**: Supports `map` operation for transforming wrapped values
455
+ - **Applicative**: Extends Functor with `ap` for applying wrapped functions
456
+ - **Monad**: Extends Applicative with `flatMap` for chaining operations
457
+ - **AsyncMonad**: Extends Monad with `flatMapAsync` for async operations
458
+ - **ContainerOps**: Universal operations for all containers (single-value and collections)
459
+ - **CollectionOps**: Operations specific to collections like List and Set
460
+
461
+ ### Unified Interfaces
462
+
463
+ All data structures implement the `Functype` hierarchy:
464
+
465
+ ```typescript
466
+ // Base interface for all data structures
467
+ interface FunctypeBase<A, Tag> extends
468
+ AsyncMonad<A>,
469
+ Traversable<A>,
470
+ Serializable<A>,
471
+ Foldable<A>,
472
+ Typeable<Tag>,
473
+ ContainerOps<A> {
474
+ readonly _tag: Tag
475
+ }
476
+
477
+ // For single-value containers (Option, Either, Try)
478
+ interface Functype<A, Tag> extends
479
+ FunctypeBase<A, Tag>,
480
+ Extractable<A>,
481
+ Pipe<A>,
482
+ Matchable<A, Tag> {
483
+ toValue(): { _tag: Tag; value: A }
484
+ }
485
+
486
+ // For collections (List, Set, Map)
487
+ interface FunctypeCollection<A, Tag> extends
488
+ FunctypeBase<A, Tag>,
489
+ Iterable<A>,
490
+ Pipe<A[]>,
491
+ Collection<A>,
492
+ CollectionOps<A, FunctypeCollection<A, Tag>> {
493
+ toValue(): { _tag: Tag; value: A[] }
494
+ // Collections work with Iterable instead of Monad
495
+ flatMap<B>(f: (value: A) => Iterable<B>): FunctypeCollection<B, Tag>
496
+ }
497
+ ```
498
+
499
+ ### Container Operations
500
+
501
+ All containers (Option, Either, Try, List, Set) support these universal operations:
502
+
503
+ ```typescript
504
+ import { Option, List } from "functype"
505
+
506
+ const opt = Option(42)
507
+ const list = List([1, 2, 3, 4, 5])
508
+
509
+ // Universal operations work on both single-value and collections
510
+ opt.count(x => x > 40) // 1
511
+ list.count(x => x > 3) // 2
512
+
513
+ opt.find(x => x > 40) // Some(42)
514
+ list.find(x => x > 3) // Some(4)
515
+
516
+ opt.exists(x => x === 42) // true
517
+ list.exists(x => x === 3) // true
518
+
519
+ opt.forEach(console.log) // Logs: 42
520
+ list.forEach(console.log) // Logs: 1, 2, 3, 4, 5
521
+ ```
522
+
345
523
  ## Type Safety
346
524
 
347
525
  Functype leverages TypeScript's advanced type system to provide compile-time safety for functional patterns, ensuring that your code is both robust and maintainable.
@@ -1,4 +1,4 @@
1
- import { a as Type, F as Functor, T as Typeable, V as Valuable, b as AsyncFunctor, E as ExtractTag } from './Valuable-CtuVEKTZ.js';
1
+ import { T as Type, F as Functor, a as Typeable, V as Valuable, A as AsyncFunctor, E as ExtractTag } from './Valuable-BI2O7E9Q.js';
2
2
 
3
3
  /**
4
4
  * Foldable type class represents data structures that can be folded to a summary value.
@@ -331,6 +331,25 @@ type IterableType<A extends Type> = {
331
331
  toArray<B = A>(): readonly B[];
332
332
  } & Iterable<A> & Functor<A> & AsyncFunctor<A> & Traversable<A>;
333
333
 
334
+ /**
335
+ * Defines conversion methods for collection types
336
+ * @interface
337
+ * @module Collections
338
+ * @category Core
339
+ */
340
+ type Converters<A> = {
341
+ toList(): List<A>;
342
+ toSet(): Set<A>;
343
+ toString(): string;
344
+ };
345
+ /**
346
+ * Represents a collection with conversion capabilities
347
+ * @interface
348
+ * @module Collections
349
+ * @category Core
350
+ */
351
+ type Collection<A> = Converters<A>;
352
+
334
353
  type Set<A> = {
335
354
  add: (value: A) => Set<A>;
336
355
  remove: (value: A) => Set<A>;
@@ -433,25 +452,6 @@ declare const List: (<A>(values?: Iterable<A>) => List<A>) & {
433
452
  fromBinary: <A>(binary: string) => List<A>;
434
453
  };
435
454
 
436
- /**
437
- * Defines conversion methods for collection types
438
- * @interface
439
- * @module Collections
440
- * @category Core
441
- */
442
- type Converters<A> = {
443
- toList(): List<A>;
444
- toSet(): Set<A>;
445
- toString(): string;
446
- };
447
- /**
448
- * Represents a collection with conversion capabilities
449
- * @interface
450
- * @module Collections
451
- * @category Core
452
- */
453
- type Collection<A> = Converters<A>;
454
-
455
455
  type TestEither<L extends Type, R extends Type> = Either<L, R> & Functor<R> & AsyncFunctor<R>;
456
456
  declare const Right: <L extends Type, R extends Type>(value: R) => Either<L, R>;
457
457
  declare const Left: <L extends Type, R extends Type>(value: L) => Either<L, R>;
@@ -1,5 +1,5 @@
1
- import { T as Traversable, I as IterableType, O as Option, a as Collection, S as Serializable, P as Pipe, F as Foldable, M as Matchable } from './Either-BfXNbTHo.js';
2
- import { a as Type, T as Typeable, V as Valuable } from './Valuable-CtuVEKTZ.js';
1
+ import { T as Traversable, I as IterableType, O as Option, a as Collection, S as Serializable, P as Pipe, F as Foldable, M as Matchable } from './Either-CfG7OVB-.js';
2
+ import { T as Type, a as Typeable, V as Valuable } from './Valuable-BI2O7E9Q.js';
3
3
  import { Tuple } from './tuple/index.js';
4
4
 
5
5
  /**
@@ -56,4 +56,4 @@ declare function Valuable<Tag extends string, V, T = object>(params: ValuablePar
56
56
  */
57
57
  type Valuable<Tag extends string, V, T = object> = ReturnType<typeof Valuable<Tag, V, T>>;
58
58
 
59
- export { type AbstractFunctor as A, type ExtractTag as E, type Functor as F, Typeable as T, Valuable as V, type Type as a, type AsyncFunctor as b, type ArrayFunctor as c, type TypeableParams as d, type ValuableParams as e, isTypeable as i };
59
+ export { type AsyncFunctor as A, type ExtractTag as E, type Functor as F, type Type as T, Valuable as V, Typeable as a, type AbstractFunctor as b, type ArrayFunctor as c, type TypeableParams as d, type ValuableParams as e, isTypeable as i };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typeable/Typeable.ts","../src/valuable/Valuable.ts","../src/tuple/Tuple.ts"],"names":["Typeable","_tag","impl","isTypeable","value","tag","Valuable","params","Tuple","values","f","mapValue","index"],"mappings":"AAWO,SAASA,CAAgC,CAAA,CAAE,IAAAC,CAAAA,CAAAA,CAAM,IAAAC,CAAAA,CAAK,CAA6C,CAAA,CACxG,OAAO,CACL,GAAGA,CAAAA,CACH,KAAMD,CACR,CACF,CAGO,SAASE,CAAcC,CAAAA,CAAAA,CAAgBC,CAAyB,CAAA,CACrE,OAAI,CAACD,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAY,EAAA,EAAE,MAAUA,GAAAA,CAAAA,CAAAA,CAC9C,MAGFC,CAAMD,CAAAA,CAAAA,CAAM,IAASC,GAAAA,CAAAA,CAAM,IACpC,CCZO,SAASC,CAAAA,CAA4CC,EAAmC,CAC7F,IAAM,CAAIP,CAAAA,CAAAA,CAAiB,CAAE,IAAA,CAAMO,CAAO,CAAA,IAAA,CAAM,KAAMA,CAAO,CAAA,IAAK,CAAC,CAAA,CACnE,OAAO,CACL,GAAG,CAAA,CACH,QAAS,KAAO,CAAE,IAAM,CAAA,CAAA,CAAE,IAAM,CAAA,KAAA,CAAOA,CAAO,CAAA,KAAM,EACtD,CACF,CCAaC,IAAAA,CAAAA,CAA2BC,CAC/B,GAAA,CACL,IAAM,CAAA,OAAA,CACN,IAAwBC,CAAiC,EAAA,CACvD,IAAMC,CAAAA,CAAWD,CAAED,CAAAA,CAAM,CACzB,CAAA,OAAOD,EAAMG,CAAQ,CACvB,CAEA,CAAA,OAAA,CAA4BD,CACnBA,EAAAA,CAAAA,CAAED,CAAM,CAAA,CAGjB,IAAwBG,CACfH,EAAAA,CAAAA,CAAOG,CAAK,CAAA,CAGrB,OAAS,CAAA,IACAH,CAET,CAAA,CAAC,OAAO,QAAQ,CAAA,EAAyB,CACvC,IAAIG,CAAQ,CAAA,CAAA,CACZ,OAAO,CACL,KAAM,IACAA,CAAAA,CAAQH,CAAO,CAAA,MAAA,CACV,CACL,KAAA,CAAOA,CAAOG,CAAAA,CAAAA,EAAO,EACrB,IAAM,CAAA,KACR,CAEO,CAAA,CACL,KAAO,CAAA,MAAA,CACP,IAAM,CAAA,IACR,CAGN,CACF,CAAA,CACA,OAAS,CAAA,KAAO,CAAE,IAAA,CAAM,OAAS,CAAA,KAAA,CAAOH,CAAO,CACjD,CAAA,CAAA","file":"chunk-7PQA3W7W.mjs","sourcesContent":["// Core type for Typeable objects\nexport type Typeable<Tag extends string, T = object> = T & {\n readonly _tag: Tag\n}\n\nexport type TypeableParams<Tag extends string, T> = { _tag: Tag; impl: T }\n\n// Utility type to extract the Tag from a Typeable type\nexport type ExtractTag<T> = T extends Typeable<infer Tag, unknown> ? Tag : never\n\n// Create a tagged object with type inference\nexport function Typeable<Tag extends string, T>({ _tag, impl }: TypeableParams<Tag, T>): Typeable<Tag, T> {\n return {\n ...impl,\n _tag: _tag,\n }\n}\n\n// Type guard with automatic type inference using the full type\nexport function isTypeable<T>(value: unknown, tag: string): value is T {\n if (!value || typeof value !== \"object\" || !(\"_tag\" in value)) {\n return false\n }\n\n return tag ? value._tag === tag : true\n}\n\n// // Usage\n// type User = Typeable<\n// \"User\",\n// {\n// id: string\n// name: string\n// email: string\n// }\n// >\n//\n// const user = Typeable(\"User\", {\n// id: \"123\",\n// name: \"John\",\n// email: \"john@example.com\",\n// })\n//\n// const maybeUser: unknown = user\n//\n// // Now we only need to specify User type\n// if (isTypeable<User>(maybeUser, \"User\")) {\n// console.log(maybeUser.name) // typed\n// console.log(maybeUser.email) // typed\n// console.log(maybeUser._tag) // typed as \"User\"\n// }\n//\n// // Can still check just for Typeable without specific tag\n// if (isTypeable<User>(maybeUser)) {\n// console.log(maybeUser.name) // typed\n// console.log(maybeUser.email) // typed\n// console.log(maybeUser._tag) // typed as \"User\"\n// }\n","import { Typeable } from \"@/typeable/Typeable\"\n\n/**\n * Parameters for creating a Valuable instance\n */\nexport type ValuableParams<Tag extends string, T, V> = { _tag: Tag; impl: T; value: V }\n\n/**\n * Creates a Valuable wrapper that adds value extraction capabilities\n * @param params - Configuration parameters\n * @module Valuable\n * @category Utilities\n */\nexport function Valuable<Tag extends string, V, T = object>(params: ValuableParams<Tag, T, V>) {\n const t = Typeable<Tag, T>({ _tag: params._tag, impl: params.impl })\n return {\n ...t,\n toValue: () => ({ _tag: t._tag, value: params.value }),\n }\n}\n\n/**\n * Represents a type that can extract its inner value\n * @interface\n * @module Valuable\n * @category Utilities\n */\nexport type Valuable<Tag extends string, V, T = object> = ReturnType<typeof Valuable<Tag, V, T>>\n","import type { ArrayFunctor } from \"@/functor/Functor\"\nimport { Typeable } from \"@/typeable/Typeable\"\nimport type { Type } from \"@/types\"\nimport { Valuable } from \"@/valuable/Valuable\"\n\nexport type Tuple<T extends Type[]> = {\n get<K extends number>(index: K): T[K]\n\n map<U extends Type[]>(f: (value: T) => U): Tuple<U>\n\n flatMap<U extends Type[]>(f: (value: T) => Tuple<U>): Tuple<U>\n\n toArray(): T\n\n [Symbol.iterator](): Iterator<T[number]>\n} & ArrayFunctor<T> &\n Typeable<\"Tuple\"> &\n Valuable<\"Tuple\", T>\n\nexport const Tuple = <T extends Type[]>(values: T): Tuple<T> => {\n return {\n _tag: \"Tuple\",\n map: <U extends Type[]>(f: (value: T) => U): Tuple<U> => {\n const mapValue = f(values)\n return Tuple(mapValue)\n },\n\n flatMap: <U extends Type[]>(f: (value: T) => Tuple<U>): Tuple<U> => {\n return f(values)\n },\n\n get: <K extends number>(index: K): T[K] => {\n return values[index]\n },\n\n toArray: (): T => {\n return values\n },\n [Symbol.iterator](): Iterator<T[number]> {\n let index = 0\n return {\n next: (): IteratorResult<T[number]> => {\n if (index < values.length) {\n return {\n value: values[index++],\n done: false,\n }\n } else {\n return {\n value: undefined,\n done: true,\n }\n }\n },\n }\n },\n toValue: () => ({ _tag: \"Tuple\", value: values }),\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/typeable/Typeable.ts","../src/valuable/Valuable.ts","../src/tuple/Tuple.ts"],"names":["Typeable","_tag","impl","isTypeable","value","tag","Valuable","params","Tuple","values","f","mapValue","index"],"mappings":"AAWO,SAASA,CAAAA,CAAgC,CAAE,IAAA,CAAAC,CAAAA,CAAM,IAAA,CAAAC,CAAK,CAAA,CAA6C,CACxG,OAAO,CACL,GAAGA,CAAAA,CACH,KAAMD,CACR,CACF,CAGO,SAASE,CAAAA,CAAcC,CAAAA,CAAgBC,CAAAA,CAAyB,CACrE,OAAI,CAACD,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAA,EAAY,EAAE,MAAA,GAAUA,CAAAA,CAAAA,CAC9C,MAGFC,CAAAA,CAAMD,CAAAA,CAAM,IAAA,GAASC,CAAAA,CAAM,IACpC,CCZO,SAASC,CAAAA,CAA4CC,EAAmC,CAC7F,IAAM,CAAA,CAAIP,CAAAA,CAAiB,CAAE,IAAA,CAAMO,CAAAA,CAAO,IAAA,CAAM,KAAMA,CAAAA,CAAO,IAAK,CAAC,CAAA,CACnE,OAAO,CACL,GAAG,CAAA,CACH,QAAS,KAAO,CAAE,IAAA,CAAM,CAAA,CAAE,IAAA,CAAM,KAAA,CAAOA,CAAAA,CAAO,KAAM,EACtD,CACF,CCAO,IAAMC,CAAAA,CAA2BC,CAAAA,GAC/B,CACL,IAAA,CAAM,OAAA,CACN,IAAwBC,CAAAA,EAAiC,CACvD,IAAMC,CAAAA,CAAWD,CAAAA,CAAED,CAAM,CAAA,CACzB,OAAOD,EAAMG,CAAQ,CACvB,CAAA,CAEA,OAAA,CAA4BD,CAAAA,EACnBA,CAAAA,CAAED,CAAM,CAAA,CAGjB,IAAwBG,CAAAA,EACfH,CAAAA,CAAOG,CAAK,CAAA,CAGrB,OAAA,CAAS,IACAH,CAAAA,CAET,CAAC,OAAO,QAAQ,CAAA,EAAyB,CACvC,IAAIG,CAAAA,CAAQ,CAAA,CACZ,OAAO,CACL,KAAM,IACAA,CAAAA,CAAQH,CAAAA,CAAO,MAAA,CACV,CACL,KAAA,CAAOA,CAAAA,CAAOG,CAAAA,EAAO,EACrB,IAAA,CAAM,KACR,CAAA,CAEO,CACL,KAAA,CAAO,MAAA,CACP,IAAA,CAAM,IACR,CAGN,CACF,CAAA,CACA,OAAA,CAAS,KAAO,CAAE,IAAA,CAAM,OAAA,CAAS,KAAA,CAAOH,CAAO,CAAA,CACjD,CAAA","file":"chunk-7PQA3W7W.mjs","sourcesContent":["// Core type for Typeable objects\nexport type Typeable<Tag extends string, T = object> = T & {\n readonly _tag: Tag\n}\n\nexport type TypeableParams<Tag extends string, T> = { _tag: Tag; impl: T }\n\n// Utility type to extract the Tag from a Typeable type\nexport type ExtractTag<T> = T extends Typeable<infer Tag, unknown> ? Tag : never\n\n// Create a tagged object with type inference\nexport function Typeable<Tag extends string, T>({ _tag, impl }: TypeableParams<Tag, T>): Typeable<Tag, T> {\n return {\n ...impl,\n _tag: _tag,\n }\n}\n\n// Type guard with automatic type inference using the full type\nexport function isTypeable<T>(value: unknown, tag: string): value is T {\n if (!value || typeof value !== \"object\" || !(\"_tag\" in value)) {\n return false\n }\n\n return tag ? value._tag === tag : true\n}\n\n// // Usage\n// type User = Typeable<\n// \"User\",\n// {\n// id: string\n// name: string\n// email: string\n// }\n// >\n//\n// const user = Typeable(\"User\", {\n// id: \"123\",\n// name: \"John\",\n// email: \"john@example.com\",\n// })\n//\n// const maybeUser: unknown = user\n//\n// // Now we only need to specify User type\n// if (isTypeable<User>(maybeUser, \"User\")) {\n// console.log(maybeUser.name) // typed\n// console.log(maybeUser.email) // typed\n// console.log(maybeUser._tag) // typed as \"User\"\n// }\n//\n// // Can still check just for Typeable without specific tag\n// if (isTypeable<User>(maybeUser)) {\n// console.log(maybeUser.name) // typed\n// console.log(maybeUser.email) // typed\n// console.log(maybeUser._tag) // typed as \"User\"\n// }\n","import { Typeable } from \"@/typeable/Typeable\"\n\n/**\n * Parameters for creating a Valuable instance\n */\nexport type ValuableParams<Tag extends string, T, V> = { _tag: Tag; impl: T; value: V }\n\n/**\n * Creates a Valuable wrapper that adds value extraction capabilities\n * @param params - Configuration parameters\n * @module Valuable\n * @category Utilities\n */\nexport function Valuable<Tag extends string, V, T = object>(params: ValuableParams<Tag, T, V>) {\n const t = Typeable<Tag, T>({ _tag: params._tag, impl: params.impl })\n return {\n ...t,\n toValue: () => ({ _tag: t._tag, value: params.value }),\n }\n}\n\n/**\n * Represents a type that can extract its inner value\n * @interface\n * @module Valuable\n * @category Utilities\n */\nexport type Valuable<Tag extends string, V, T = object> = ReturnType<typeof Valuable<Tag, V, T>>\n","import type { ArrayFunctor } from \"@/functor/Functor\"\nimport { Typeable } from \"@/typeable/Typeable\"\nimport type { Type } from \"@/types\"\nimport { Valuable } from \"@/valuable/Valuable\"\n\nexport type Tuple<T extends Type[]> = {\n get<K extends number>(index: K): T[K]\n\n map<U extends Type[]>(f: (value: T) => U): Tuple<U>\n\n flatMap<U extends Type[]>(f: (value: T) => Tuple<U>): Tuple<U>\n\n toArray(): T\n\n [Symbol.iterator](): Iterator<T[number]>\n} & ArrayFunctor<T> &\n Typeable<\"Tuple\"> &\n Valuable<\"Tuple\", T>\n\nexport const Tuple = <T extends Type[]>(values: T): Tuple<T> => {\n return {\n _tag: \"Tuple\",\n map: <U extends Type[]>(f: (value: T) => U): Tuple<U> => {\n const mapValue = f(values)\n return Tuple(mapValue)\n },\n\n flatMap: <U extends Type[]>(f: (value: T) => Tuple<U>): Tuple<U> => {\n return f(values)\n },\n\n get: <K extends number>(index: K): T[K] => {\n return values[index]\n },\n\n toArray: (): T => {\n return values\n },\n [Symbol.iterator](): Iterator<T[number]> {\n let index = 0\n return {\n next: (): IteratorResult<T[number]> => {\n if (index < values.length) {\n return {\n value: values[index++],\n done: false,\n }\n } else {\n return {\n value: undefined,\n done: true,\n }\n }\n },\n }\n },\n toValue: () => ({ _tag: \"Tuple\", value: values }),\n }\n}\n"]}
@@ -0,0 +1,42 @@
1
+ import {b as b$1,a as a$1,d}from'./chunk-7PQA3W7W.mjs';import {a}from'./chunk-TQJDL6YW.mjs';import X from'safe-stable-stringify';function h(e,t){return Object.assign(e,t)}var se=Set;var H=e=>{let t=new se(e),r=y(t),n={...r,_tag:"Set",add:o=>H([...t,o]),remove:o=>{let s=new se(t);return s.delete(o),H(s)},contains:o=>t.has(o),has:o=>t.has(o),map:o=>H(r.map(o)),flatMap:o=>H(r.flatMap(o)),fold:(o,s)=>{if(t.size===0)return o();let a=Array.from(t);if(a.length===0)return o();let i=a[0];return i===void 0?o():s(i)},foldLeft:o=>s=>r.foldLeft(o)(s),foldRight:o=>s=>r.foldRight(o)(s),toList:()=>y(t),toSet:()=>n,toString:()=>`Set(${Array.from(t).toString()})`,toValue:()=>({_tag:"Set",value:Array.from(t)}),pipe:o=>o(Array.from(t)),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Set",value:Array.from(t)}),toYAML:()=>`_tag: Set
2
+ value: ${JSON.stringify(Array.from(t))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Set",value:Array.from(t)})).toString("base64")})};return n},Ne=e=>H(e),he={fromJSON:e=>{let t=JSON.parse(e);return I(t.value)},fromYAML:e=>{let r=e.split(`
3
+ `)[1]?.split(": ")[1];if(!r)return I([]);let n=JSON.parse(r);return I(n)},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return he.fromJSON(t)}},I=h(Ne,he);var v=e=>{let t=Array.from(e||[]),r={_tag:"List",[Symbol.iterator]:()=>t[Symbol.iterator](),get size(){return t.length},get length(){return t.length},map:n=>v(t.map(n)),flatMap:n=>v(t.flatMap(o=>Array.from(n(o)))),flatMapAsync:async n=>{let o=await Promise.all(t.map(async s=>await n(s)));return v(o.flatMap(s=>Array.from(s)))},forEach:n=>t.forEach(n),contains:n=>t.includes(n),count:n=>t.filter(n).length,exists:n=>t.some(n),filter:n=>v(t.filter(n)),filterNot:n=>v(t.filter(o=>!n(o))),filterType:n=>v(t.filter(o=>b$1(o,n))),find:(n,o)=>{let s=t.find(a=>n(a)&&(o?b$1(a,o):true));return f(s)},get head(){return t[0]},get headOption(){return t.length>0?f(t[0]):S()},get isEmpty(){return t.length===0},toArray:()=>[...t],reduce:n=>t.reduce(n),reduceRight:n=>t.reduceRight(n),fold:(n,o)=>{if(t.length===0)return n();let s=t[0];return o(s)},foldLeft:n=>o=>t.reduce(o,n),foldRight:n=>o=>t.reduceRight((s,a)=>o(a,s),n),match:n=>t.length===0?n.Empty():n.NonEmpty([...t]),remove:n=>v(t.filter(o=>o!==n)),removeAt:n=>n<0||n>=t.length?r:v([...t.slice(0,n),...t.slice(n+1)]),add:n=>v([...t,n]),get:n=>f(t[n]),concat:n=>v([...t,...n.toArray()]),drop:n=>v(t.slice(n)),dropRight:n=>v(t.slice(0,-n)),dropWhile:n=>v(t.slice(t.findIndex(o=>!n(o)))),flatten:()=>v(t.flatMap(n=>Array.isArray(n)?n:[n])),toList:()=>r,toSet:()=>I(t),toString:()=>`List(${X(t)})`,toValue:()=>({_tag:"List",value:t}),pipe:n=>n([...t]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"List",value:t}),toYAML:()=>`_tag: List
4
+ value: ${X(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"List",value:t})).toString("base64")})};return r},Ve=e=>v(e),Le={fromJSON:e=>{let t=JSON.parse(e);return y(t.value)},fromYAML:e=>{let r=e.split(`
5
+ `)[1]?.split(": ")[1];if(!r)return y([]);let n=JSON.parse(r);return y(n)},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return Le.fromJSON(t)}},y=h(Ve,Le);var be=e=>({_tag:"Right",value:e,isLeft:()=>false,isRight:()=>true,getOrElse:t=>e,getOrThrow:()=>e,map:t=>T(t(e)),mapAsync:t=>t(e).then(r=>T(r)).catch(r=>Promise.resolve(p(r))),merge:t=>t.isLeft()?p(t.value):T([e,t.value]),flatMap:t=>t(e),flatMapAsync:t=>t(e).catch(r=>p(r)),toOption:()=>w(e),toList:()=>y([e]),toString:()=>`Right(${X(e)})`,[Symbol.iterator]:function*(){yield e;},yield:function*(){yield e;},traverse:t=>{let r=t(e);return r.isLeft()?p(r.value):T([r.value])},lazyMap:function*(t){yield T(t(e));},tap:t=>(t(e),T(e)),tapLeft:t=>T(e),mapLeft:t=>T(e),bimap:(t,r)=>T(r(e)),fold:(t,r)=>r(e),foldLeft:t=>r=>r(t,e),foldRight:t=>r=>r(e,t),match:t=>t.Right(e),swap:()=>p(e),then:(t,r)=>Promise.resolve(e).then(t,r),toValue:()=>({_tag:"Right",value:e}),pipeEither:(t,r)=>r(e),pipe:t=>t(e),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Right",value:e}),toYAML:()=>`_tag: Right
6
+ value: ${X(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Right",value:e})).toString("base64")})}),Re=e=>({_tag:"Left",value:e,isLeft:()=>true,isRight:()=>false,getOrElse:t=>t,getOrThrow:()=>{throw e},map:t=>p(e),mapAsync:t=>Promise.resolve(p(e)),merge:t=>p(e),flatMap:t=>p(e),flatMapAsync:t=>Promise.resolve(p(e)),toOption:()=>S(),toList:()=>y(),toString:()=>`Left(${X(e)})`,[Symbol.iterator]:function*(){},yield:function*(){},traverse:t=>p(e),lazyMap:function*(t){yield p(e);},tap:t=>p(e),tapLeft:t=>(t(e),p(e)),mapLeft:t=>p(t(e)),bimap:(t,r)=>p(t(e)),fold:(t,r)=>t(e),foldLeft:t=>r=>t,foldRight:t=>r=>t,match:t=>t.Left(e),swap:()=>T(e),then:(t,r)=>Promise.reject(e).then(null,r),toValue:()=>({_tag:"Left",value:e}),pipeEither:(t,r)=>t(e),pipe:t=>t(e),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Left",value:e}),toYAML:()=>`_tag: Left
7
+ value: ${X(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Left",value:e})).toString("base64")})}),T=e=>be(e),p=e=>Re(e),ht=e=>e.isRight(),At=e=>e.isLeft(),Lt=(e,t)=>{try{return T(e())}catch(r){return p(t(r))}},_e=e=>be(e);console.assert(_e);var Ce=e=>Re(e);console.assert(Ce);var Et=async(e,t)=>{try{let r=await e();return T(r)}catch(r){return p(t(r))}},Ee={sequence:e=>{let t=[];for(let r of e){if(r.isLeft())return p(r.value);t.push(r.value);}return T(t)},traverse:(e,t)=>Ee.sequence(e.map(t)),fromNullable:(e,t)=>e==null?p(t):T(e),fromPredicate:(e,t,r)=>t(e)?T(e):p(r),ap:(e,t)=>e.flatMap(r=>t.map(r)),fromPromise:async(e,t)=>{try{let r=await e;return T(r)}catch(r){return p(t(r))}},fromJSON:e=>{let t=JSON.parse(e);return t._tag==="Right"?T(t.value):p(t.value)},fromYAML:e=>{let t=e.split(`
8
+ `),r=t[0]?.split(": ")[1],n=t[1]?.split(": ")[1];if(!r||!n)throw new Error("Invalid YAML format for Either");let o=JSON.parse(n);return r==="Right"?T(o):p(o)},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return Ee.fromJSON(t)}};function U(e,t){return {brand:e,validate:t,of:r=>t(r)?f(a(e,r)):f.none(),from:r=>t(r)?T(a(e,r)):p(`Invalid ${e}: validation failed`),unsafeOf:r=>{if(!t(r))throw new Error(`Invalid ${e}: validation failed`);return a(e,r)},is:r=>{try{return t(r)}catch{return false}},refine:(r,n)=>U(r,o=>t(o)&&n(o))}}var Ke=U("PositiveNumber",e=>e>0),St=U("NonNegativeNumber",e=>e>=0),wt=U("IntegerNumber",e=>Number.isInteger(e)),Ut=Ke.refine("PositiveInteger",e=>Number.isInteger(e)),Bt=U("NonEmptyString",e=>e.length>0),Pt=U("EmailAddress",e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)),Ot=U("UrlString",e=>{try{return new URL(e),!0}catch{return !1}}),zt=U("UUID",e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)),Ft=U("ISO8601Date",e=>!isNaN(Date.parse(e))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e));function Mt(e,t,r){return U(e,n=>n>=t&&n<=r)}function Nt(e,t,r){return U(e,n=>n.length>=t&&n.length<=r)}function Vt(e,t){return U(e,r=>t.test(r))}var ie=e=>{let t=n=>typeof n=="function"?n():n,r={when:(n,o)=>e.resolved?r:n?ie({resolved:true,value:t(o)}):r,elseWhen:(n,o)=>e.resolved?r:n?ie({resolved:true,value:t(o)}):r,else:n=>e.resolved?e.value:t(n),getOrThrow:()=>{if(!e.resolved)throw new Error("Conditional expression has no matching condition");return e.value}};return r},ke=()=>ie({resolved:false}),Ie={of:()=>ke(),match:e=>t=>{let r=t[e];if(r===void 0)throw new Error(`No case defined for value: ${String(e)}`);return typeof r=="function"?r():r},lazy:()=>{let e={resolved:false},t={when:(r,n)=>(e.resolved||r()&&(e.resolved=true,e.value=n()),t),elseWhen:(r,n)=>(e.resolved||r()&&(e.resolved=true,e.value=n()),t),else:r=>e.resolved?e.value:r()};return t}},Kt=h(ke,Ie);var Z=e=>{let t=(n,o)=>typeof n=="function"?n(o):n,r={case:(n,o)=>e.resolved?r:n(e.value)?Z({...e,resolved:true,result:t(o,e.value)}):r,caseValue:(n,o)=>{if(e.resolved)return r;if(e.value===n){let s=typeof o=="function"?o():o;return Z({...e,resolved:true,result:s})}return r},caseValues:(n,o)=>{if(e.resolved)return r;if(n.includes(e.value)){let s=typeof o=="function"?o():o;return Z({...e,resolved:true,result:s})}return r},default:n=>e.resolved?e.result:t(n,e.value),getOrThrow:()=>{if(!e.resolved)throw new Error(`No matching case for value: ${String(e.value)}`);return e.result}};return r},$e=e=>Z({value:e,resolved:false}),Je={exhaustive:e=>t=>{let r=e[t];if(r===void 0)throw new Error(`No case defined for value: ${String(t)}`);return r},partial:e=>({withDefault:t=>r=>{let n=e[r];return n!==void 0?typeof n=="function"?n(r):n:typeof t=="function"?t(r):t}}),withGuards:e=>({withDefault:t=>r=>{for(let[n,o]of e)if(n(r))return typeof o=="function"?o(r):o;return typeof t=="function"?t(r):t}})},Jt=h($e,Je);function j(e,t){return {...a$1({_tag:e,impl:t}),toString(){return `${e}()`}}}var ee="Throwable",b=class e extends Error{constructor(r,n){super(r,{cause:n?.cause});this._tag=ee;this.name=n?.taskInfo?.name||ee,Object.defineProperties(this,{_tag:{value:ee,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||ee,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 l=new e(r.message,{data:n,cause:r.cause||void 0,stack:r.stack||void 0,taskInfo:o});for(let u of Object.keys(r))u in l||(l[u]=r[u]);return l}if(r&&typeof r=="object"){let l=r,u=typeof l.message=="string"?l.message:typeof l.error=="string"?l.error:`Object error: ${JSON.stringify(l,Object.getOwnPropertyNames(l).filter(d=>l[d]!==void 0))}`,g=new e(u,{data:n||l,taskInfo:o});for(let d of Object.keys(l))d in g||(g[d]=l[d]);return g}if(typeof r=="function"){let l=r.name||"anonymous function",u=r.toString().substring(0,100)+(r.toString().length>100?"...":"");return new e(`Function error: ${l}`,{data:n||{functionType:typeof r,functionName:l,functionString:u},taskInfo:o})}let s=typeof r,a=r===null?"null":r===void 0?"undefined":String(r);if(s==="number"){let l=r,u=Number.isNaN(l)?"Number error: NaN":Number.isFinite(l)?`Number error: ${l}`:`Number error: ${l>0?"Infinity":"-Infinity"}`;return new e(u,{data:n||{errorType:s,errorValue:l,originalError:r},taskInfo:o})}if(s==="bigint")return new e(`BigInt error: ${r}n`,{data:n||{errorType:s,errorValue:String(r),originalError:r},taskInfo:o});if(s==="boolean")return new e(`Boolean error: ${r}`,{data:n||{errorType:s,errorValue:r,originalError:r},taskInfo:o});if(s==="symbol"){let l=r.description||"unnamed symbol";return new e(`Symbol error: Symbol(${l})`,{data:n||{errorType:s,symbolDescription:l,originalError:r},taskInfo:o})}let i=typeof r=="string"?r:`${s.charAt(0).toUpperCase()+s.slice(1)} error: ${a}`;return new e(i,{data:n||{errorType:s,errorValue:a,originalError:r},taskInfo:o})}};var E=e=>{let t=new Promise((r,n)=>{try{e(r,n);}catch(o){n(o);}});return {_tag:"FPromise",map:r=>E((n,o)=>{t.then(s=>{try{n(r(s));}catch(a){o(a);}}).catch(o);}),flatMap:r=>E((n,o)=>{t.then(s=>{try{let a=r(s);"_tag"in a&&a._tag==="FPromise"?a.then(n,o):Promise.resolve(a).then(n,o);}catch(a){o(a);}}).catch(o);}),flatMapAsync:async r=>{let n=await t,o=r(n);return o instanceof Promise?o:new Promise((s,a)=>{o.then(s,a);})},tap:r=>E((n,o)=>{t.then(s=>{try{r(s),n(s);}catch(a){o(a);}}).catch(o);}),mapError:r=>E((n,o)=>{t.then(n).catch(s=>{try{let a={originalError:s,stack:s instanceof Error?s.stack:void 0,timestamp:Date.now()};o(r(s,a));}catch(a){o(a);}});}),tapError:r=>E((n,o)=>{t.then(n).catch(s=>{try{r(s),o(s);}catch(a){o(a);}});}),recover:r=>E(n=>{t.then(n).catch(()=>n(r));}),recoverWith:r=>E(n=>{t.then(n).catch(o=>{try{n(r(o));}catch{n(null);}});}),recoverWithF:r=>E((n,o)=>{t.then(n).catch(s=>{try{r(s).then(n,o);}catch(a){o(a);}});}),filterError:(r,n)=>E((o,s)=>{t.then(o).catch(a=>{if(r(a))try{n(a).then(o,s);}catch(i){s(i);}else s(a);});}),logError:r=>E((n,o)=>{t.then(n).catch(s=>{try{let a={originalError:s,stack:s instanceof Error?s.stack:void 0,timestamp:Date.now()};r(s,a);}catch{}finally{o(s);}});}),then:(r,n)=>t.then(r,n),toPromise:()=>t,toEither:()=>t,fold:(r,n)=>E((o,s)=>{t.then(a=>{try{o(n(a));}catch(i){s(i);}}).catch(a=>{try{o(r(a));}catch(i){s(i);}});})}},We={resolve:e=>E(t=>t(e)),reject:e=>E((t,r)=>r(e)),from:e=>E((t,r)=>{e.then(t).catch(r);}),fromEither:e=>e.isRight()?E(t=>t(e.value)):E((t,r)=>r(e.value)),all:e=>E((t,r)=>{Promise.all(e.map(n=>n instanceof Promise?n:Promise.resolve(n))).then(t).catch(r);}),allSettled:e=>E(t=>{let r=[],n=0;if(e.length===0){t([]);return}e.forEach((o,s)=>{Promise.resolve(o).then(a=>{r[s]=T(a),n++,n===e.length&&t(r);}).catch(a=>{r[s]=p(a),n++,n===e.length&&t(r);});});}),race:e=>E((t,r)=>{Promise.race(e).then(t,r);}),any:e=>E((t,r)=>{if(typeof Promise.any=="function")Promise.any(e).then(t,r);else {let n=0,o=[];if(e.length===0){r(new AggregateError([],"All promises were rejected"));return}e.forEach((s,a)=>{Promise.resolve(s).then(t).catch(i=>{o[a]=i,n++,n===e.length&&r(new AggregateError(o,"All promises were rejected"));});});}}),retryWithBackoff:(e,t)=>{let{maxRetries:r,baseDelay:n=100,shouldRetry:o=()=>true}=t;return E((s,a)=>{let i=0,l=()=>{e().toPromise().then(s).catch(u=>{if(i++,i<=r&&o(u,i)){let g=n*Math.pow(2,i-1);setTimeout(l,g);}else a(u);});};l();})}},le=h(E,We);function je(e){return e instanceof Error&&typeof e=="object"&&true&&e._tag==="Throwable"}var xe=(e,t,r)=>{let n=r?.name||"TaskException",o=r?.description||"Unspecified TaskException",s={name:n,description:o},a=b.apply(e,t,s);return {...j("TaskException",p(a)),_task:s}},ve=(e,t)=>{let r=t?.name||"TaskResult",n=t?.description||"Unspecified TaskResult";return {...j("TaskResult",T(e)),_task:{name:r,description:n}}},ue=()=>{let e=new AbortController,t=[];return {token:{get isCancelled(){return e.signal.aborted},get signal(){return e.signal},onCancel(n){e.signal.aborted?n():t.push(n);}},cancel(){e.signal.aborted||(e.abort(),t.forEach(n=>{try{n();}catch(o){console.error("Error in cancellation callback:",o);}}));}}},Ye=e=>{let t=e?.name||"Task",r=e?.description||"",n={Async:(o,s=l=>l,a=()=>{},i)=>le(async(l,u)=>{let g=false,d=null,B=()=>{};if(i){if(i.isCancelled){try{await a();}catch(L){u(b.apply(L,void 0,{name:t,description:r}));return}u(b.apply(new Error("Task was cancelled before execution started"),void 0,{name:t,description:r}));return}let x=()=>{g=true,d=new Error("Task was cancelled during execution");};i.onCancel(x),B=()=>{};}try{let x=await o();if(g){try{await a();}catch(L){u(b.apply(L,void 0,{name:t,description:r}));return}u(d?b.apply(d,void 0,{name:t,description:r}):b.apply(new Error("Task was cancelled during execution"),void 0,{name:t,description:r}));return}try{await a();}catch(L){u(b.apply(L,void 0,{name:t,description:r}));return}l(x);}catch(x){if(g){try{await a();}catch(L){u(b.apply(L,void 0,{name:t,description:r}));return}u(d?b.apply(d,void 0,{name:t,description:r}):b.apply(new Error("Task was cancelled during execution"),void 0,{name:t,description:r}));return}try{await a();}catch(L){u(b.apply(L,void 0,{name:t,description:r}));return}try{if(x instanceof Error&&je(x)){let L=new Error(`${t}: ${x.message}`),J=b.apply(L,void 0,{name:t,description:r});Object.defineProperty(J,"cause",{value:x,writable:!1,configurable:!1}),Promise.resolve().then(()=>{try{s(x);}catch(O){console.error("Error in error handler:",O);}}),u(J);}else {let L=await s(x);u(b.apply(L,void 0,{name:t,description:r}));}}catch(L){u(b.apply(L,void 0,{name:t,description:r}));}}finally{B();}}),Sync:(o,s=i=>i,a=()=>{})=>{try{return ve(o(),{name:t,description:r})}catch(i){return xe(s(i),void 0,{name:t,description:r})}finally{a();}},AsyncWithProgress:(o,s,a=u=>u,i=()=>{},l)=>{let u=g=>{let d=Math.max(0,Math.min(100,g));d<=100&&s(d);};return n.Async(()=>o(u),a,i,l)}};return {...j("Task",n),_type:"Task"}},Se={success:(e,t)=>ve(e,t),fail:(e,t,r)=>xe(e,t,r),getErrorChain:e=>{if(!e)return [];let t=[e],r=e;for(;r&&r.cause;){let n=r.cause;if(n)t.push(n),r=n;else break;if(t.length>100)break}return t},formatErrorChain:(e,t)=>{let r=Se.getErrorChain(e),n=t?.separator||`
9
+ `;return r.map((o,s)=>{if(!o)return `${s>0?"\u21B3 ":""}Unknown error`;let a=o.taskInfo,i=t?.includeTasks&&a?.name?`[${a.name}] `:"",l=o.message||"No message",u=`${s>0?"\u21B3 ":""}${i}${l}`;return t?.includeStackTrace&&o.stack&&(u+=`
10
+ ${o.stack.split(`
11
+ `).slice(1).join(`
12
+ `)}`),u}).join(n)},fromPromise:(e,t)=>(...r)=>P(t||{name:"PromiseTask",description:"Task from Promise"}).Async(()=>e(...r),o=>o),toPromise:e=>new Promise((t,r)=>{e.isRight()?t(e.value):r(e.value);}),race:(e,t,r)=>{let n=r?.name||"TaskRace",o=r?.description||"Race between multiple tasks";return P({name:n,description:o}).Async(async()=>{let a=[...e],i;if(typeof t=="number"&&t>0){let l=le((u,g)=>{i=setTimeout(()=>{g(new Error(`Task race timed out after ${t}ms`));},t);});a.push(l);}try{return await new Promise((l,u)=>{a.forEach(g=>{g.then(d=>l(d),d=>u(d));});})}finally{i&&clearTimeout(i);}},a=>a)},fromNodeCallback:(e,t)=>{let r=t?.name||"NodeCallbackTask",n=t?.description||"Task from Node.js callback function",o={name:r,description:n};return (...s)=>P(o).Async(()=>new Promise((a,i)=>{try{e(...s,(l,u)=>{l?i(l):a(u);});}catch(l){i(l);}}),a=>a)},createCancellationTokenSource:ue,cancellable:(e,t)=>{let r=ue();return {task:P(t).Async(()=>e(r.token),o=>o,()=>{},r.token),cancel:()=>r.cancel()}},withProgress:(e,t=()=>{},r)=>{let n=ue(),o=0,s=i=>{o=Math.max(0,Math.min(100,i)),t(o);};return {task:P(r).Async(()=>e(s,n.token),i=>i,()=>{},n.token),cancel:()=>n.cancel(),currentProgress:()=>o}}},P=h(Ye,Se);var we={includeTasks:true,includeStackTrace:false,separator:`
13
+ `,includeData:false,maxStackFrames:3,title:"Error",colors:false};function Ue(e){let t=new WeakSet;return JSON.stringify(e,(r,n)=>{if(typeof n=="bigint")return n.toString()+"n";if(typeof n=="object"&&n!==null){if(t.has(n))return "[Circular Reference]";t.add(n);}return r==="stack"&&typeof n=="string"?te(n):n},2)}function te(e){if(!e)return "";if(!e)return e;let t=e.split(`
14
+ `),r=t[0],n=t.slice(1).map(o=>o.trim());return [r,...n].join(`
15
+ `)}function ir(e,t){let r={...we,...t},n=e instanceof Error?e:b.apply(e),o=P?.getErrorChain?P.getErrorChain(n):[n],s=r.colors?`\x1B[31m${r.title}:\x1B[0m ${n.message}`:`${r.title}: ${n.message}`,a=o.map((l,u)=>{let g=" ".repeat(u),d=u>0?"\u21B3 ":"",B=l.taskInfo,x=r.includeTasks&&B?.name?r.colors?`\x1B[36m[${B.name}]\x1B[0m `:`[${B.name}] `:"",L=`${g}${d}${x}${l.message}`;if(r.includeStackTrace&&l.stack){let O=te(l.stack).split(`
16
+ `).slice(1),G=r.maxStackFrames??we.maxStackFrames??3,oe=O.slice(0,G).map(m=>`${g} ${r.colors?"\x1B[90m":""}${m}${r.colors?"\x1B[0m":""}`).join(`
17
+ `);L+=`
18
+ ${oe}`,O.length>G&&(L+=`
19
+ ${g} ${r.colors?"\x1B[90m":""}...${O.length-G} more stack frames${r.colors?"\x1B[0m":""}`);}return L}).join(r.separator),i=`${s}
20
+
21
+ ${a}`;if(r.includeData){let l=n.data;if(l){let u=r.colors?`
22
+
23
+ \x1B[33mContext:\x1B[0m
24
+ ${Ue(l)}`:`
25
+
26
+ Context:
27
+ ${Ue(l)}`;i+=u;}}return i}function lr(){return function(t){if(!t)return t;let r=t instanceof Error?t:new Error(String(t)),n={message:r.message,name:r.name||"Error",stack:r.stack?te(r.stack):void 0};if(r.taskInfo&&(n.taskInfo=r.taskInfo),r.data&&(n.data=r.data),typeof P?.getErrorChain=="function")try{let o=P.getErrorChain(r);o.length>1&&(n.errorChain=P.formatErrorChain(r,{includeTasks:!0}),n.structuredErrorChain=o.map(s=>({message:s.message,name:s.name,taskInfo:s.taskInfo,stack:s.stack?te(s.stack):void 0})));}catch{}return Object.getOwnPropertyNames(r).forEach(o=>{if(!n[o]){let s=r[o];n[o]=s;}}),n}}var pr=e=>{let t=new Error(e);return t.name="ParseError",t};var gr={toOption:e=>e.fold(()=>S(),t=>w(t)),toList:e=>e.fold(()=>y([]),t=>y([t])),toEither:(e,t)=>e.fold(()=>p(t),r=>T(r)),isEmpty:e=>e.fold(()=>true,()=>false),size:e=>e.fold(()=>0,()=>1)};var re=e=>({_tag:"Success",error:void 0,isSuccess:()=>true,isFailure:()=>false,get:()=>e,getOrElse:t=>e,orElse:t=>re(e),orThrow:t=>e,toEither:()=>T(e),map:t=>ce(()=>t(e)),flatMap:t=>t(e),fold:(t,r)=>r(e),match:t=>t.Success(e),foldLeft:t=>r=>r(t,e),foldRight:t=>r=>r(e,t),toString:()=>`Success(${X(e)})`,toValue:()=>({_tag:"Success",value:e}),pipe:t=>t(e),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Success",value:e}),toYAML:()=>`_tag: Success
28
+ value: ${X(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Success",value:e})).toString("base64")})}),V=e=>({_tag:"Failure",error:e,isSuccess:()=>false,isFailure:()=>true,get:()=>{throw e},getOrElse:t=>t,orElse:t=>t,orThrow:t=>{throw t},toEither:()=>p(e),map:t=>V(e),flatMap:t=>V(e),fold:(t,r)=>t(e),match:t=>t.Failure(e),foldLeft:t=>r=>t,foldRight:t=>r=>t,toString:()=>`Failure(${X(e)}))`,toValue:()=>({_tag:"Failure",value:e}),pipe:t=>{throw e},serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Failure",error:e.message,stack:e.stack}),toYAML:()=>`_tag: Failure
29
+ error: ${e.message}
30
+ stack: ${e.stack}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Failure",error:e.message,stack:e.stack})).toString("base64")})}),De=e=>{try{return re(e())}catch(t){return V(t instanceof Error?t:new Error(String(t)))}},Be={fromJSON:e=>{let t=JSON.parse(e);if(t._tag==="Success")return re(t.value);{let r=new Error(t.error);return t.stack&&(r.stack=t.stack),V(r)}},fromYAML:e=>{let t=e.split(`
31
+ `),r=t[0]?.split(": ")[1];if(!r)return V(new Error("Invalid YAML format for Try"));if(r==="Success"){let n=t[1]?.split(": ")[1];if(!n)return V(new Error("Invalid YAML format for Try Success"));let o=JSON.parse(n);return re(o)}else {let n=t[1]?.split(": ")[1];if(!n)return V(new Error("Invalid YAML format for Try Failure"));let o=t[2]?.split(": "),s=o&&o.length>1?o.slice(1).join(": "):void 0,a=new Error(n);return s&&(a.stack=s),V(a)}},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return Be.fromJSON(t)}},ce=h(De,Be);var _=e=>e!==null&&typeof e=="object"&&(e._tag==="Some"||e._tag==="None"),F=e=>e!==null&&typeof e=="object"&&e._tag==="List",Y=e=>e!==null&&typeof e=="object"&&(e._tag==="Left"||e._tag==="Right"),D=e=>e!==null&&typeof e=="object"&&(e._tag==="Success"||e._tag==="Failure"),k=()=>{let e=(a,i)=>{if(_(a))return a.map(l=>i(l));if(F(a))return a.map(l=>i(l));if(Y(a))return a.map(l=>i(l));if(D(a))return a.map(l=>i(l));throw new Error(`Unsupported functor type: ${JSON.stringify(a)}`)},t=a=>{if(_(a))return a.get();if(F(a)){let i=a.toArray();if(i.length>0&&F(i[0])){let l=[];for(let u of i)F(u)&&l.push(...u.toArray());return y(l)}return a.flatten()}if(Y(a))return a.isRight()?a.fold(()=>null,i=>i):a;if(D(a))return a.isSuccess()?a.get():a;throw new Error(`Unsupported functor type for flatten: ${JSON.stringify(a)}`)},r=(a,i)=>{if(_(a))return a.flatMap(l=>i(l));if(F(a))return a.flatMap(l=>i(l));if(Y(a))return a.flatMap(l=>i(l));if(D(a))return a.flatMap(l=>i(l));throw new Error(`Unsupported functor type for flatMap: ${JSON.stringify(a)}`)},n=(a,i)=>{if(_(a)&&_(i))return a.flatMap(l=>i.map(u=>l(u)));if(F(a)&&F(i))return a.flatMap(l=>i.map(u=>l(u)));if(Y(a)&&Y(i))return a.flatMap(l=>i.map(u=>l(u)));if(D(a)&&D(i))return a.flatMap(l=>i.map(u=>l(u)));throw new Error(`Unsupported functor type for ap: ${JSON.stringify(a)}`)},o=a=>{if(_(a)){let i=a;if(i.isEmpty)return y([f.none()]);let l=i.get();if(F(l))return l.map(u=>f(u));throw new Error("Unsupported inner container type for sequence")}if(F(a)){let l=a.toArray();if(l.length===0)return f.none();let u=l[0];if(_(u)){for(let d of l)if(d.isEmpty)return f.none();let g=l.map(d=>d.get());return f(y(g))}throw new Error("Unsupported inner container type for sequence")}throw new Error(`Unsupported outer container type for sequence: ${JSON.stringify(a)}`)};return {...j("HKT",{map:e,flatten:t,flatMap:r,ap:n,sequence:o,traverse:(a,i)=>o(e(a,l=>i(l)))}),_type:"HKT"}};k.map=(e,t)=>k().map(e,t);k.flatten=e=>k().flatten(e);k.flatMap=(e,t)=>k().flatMap(e,t);k.ap=(e,t)=>k().ap(e,t);k.sequence=e=>k().sequence(e);k.traverse=(e,t)=>k().traverse(e,t);k.isOption=_;k.isList=F;k.isEither=Y;k.isTry=D;function wr(e){return {id:e,isSame:r=>r.id===e}}var C=e=>{let t=false,r,n,o=false,s=()=>{if(!t)try{r=e(),t=!0;}catch(i){throw n=i,o=true,t=true,i}if(o)throw n;return r};return {_tag:"Lazy",get isEvaluated(){return t},get:s,getOrElse:i=>{try{return s()}catch{return i}},getOrNull:()=>{try{return s()}catch{return null}},getOrThrow:i=>{try{return s()}catch{throw i}},map:i=>M(()=>i(s())),mapAsync:async i=>{let l=s(),u=await i(l);return M(()=>u)},flatMap:i=>M(()=>i(s()).get()),flatMapAsync:async i=>{let l=s(),u=await i(l);return M(()=>u.get())},filter:i=>M(()=>{let l=s();return i(l)?w(l):S}),recover:i=>M(()=>{try{return s()}catch(l){return i(l)}}),recoverWith:i=>M(()=>{try{return s()}catch(l){return i(l).get()}}),toOption:()=>{try{return w(s())}catch{return S}},toEither:()=>{try{return T(s())}catch(i){return p(i)}},toEitherWith:i=>{try{return T(s())}catch(l){return p(i(l))}},toTry:()=>ce(()=>s()),tap:i=>M(()=>{let l=s();return i(l),l}),tapError:i=>M(()=>{try{return s()}catch(l){throw i(l),l}}),fold:i=>i(s()),foldWith:(i,l)=>{try{return l(s())}catch(u){return i(u)}},foldLeft:i=>l=>l(i,s()),foldRight:i=>l=>l(s(),i),match:i=>i.Lazy(s()),toString:()=>t&&!o?`Lazy(${X(r)})`:t&&o?`Lazy(<error: ${n instanceof Error?n.message:String(n)}>)`:"Lazy(<not evaluated>)",toValue:()=>t&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false},pipe:i=>i(s()),serialize:()=>({toJSON:()=>JSON.stringify(t&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false}),toYAML:()=>t&&!o?`_tag: Lazy
32
+ evaluated: true
33
+ value: ${X(r)}`:`_tag: Lazy
34
+ evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(t&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false})).toString("base64")}),typeable:"Lazy"}},qe={of:e=>C(e),fromValue:e=>C(()=>e),fromOption:(e,t)=>C(()=>e._tag==="Some"?e.value:t()),fromTry:e=>C(()=>e.get()),fromEither:e=>C(()=>e.fold(t=>{throw t},t=>t)),fromPromise:e=>C(()=>{throw new Error("Promise not yet resolved. Use await on the promise before creating Lazy.")}),fail:e=>C(()=>{throw e})},M=h(C,qe);var R=e=>({[Symbol.iterator]:()=>e[Symbol.iterator](),map:r=>R(function*(){for(let n of e)yield r(n);}()),flatMap:r=>R(function*(){for(let n of e)yield*r(n);}()),filter:r=>R(function*(){for(let n of e)r(n)&&(yield n);}()),take:r=>R(function*(){let n=0;for(let o of e){if(n>=r)break;yield o,n++;}}()),drop:r=>R(function*(){let n=0;for(let o of e)n>=r&&(yield o),n++;}()),takeWhile:r=>R(function*(){for(let n of e){if(!r(n))break;yield n;}}()),dropWhile:r=>R(function*(){let n=true;for(let o of e)n&&r(o)||(n=false,yield o);}()),concat:r=>R(function*(){yield*e,yield*r;}()),zip:r=>R(function*(){let n=e[Symbol.iterator](),o=r[Symbol.iterator]();for(;;){let s=n.next(),a=o.next();if(s.done||a.done)break;yield [s.value,a.value];}}()),toList:()=>y(Array.from(e)),toArray:()=>Array.from(e),forEach:r=>{for(let n of e)r(n);},reduce:(r,n)=>{let o=n;for(let s of e)o=r(o,s);return o},find:r=>{for(let n of e)if(r(n))return f(n);return f.none()},some:r=>{for(let n of e)if(r(n))return true;return false},every:r=>{for(let n of e)if(!r(n))return false;return true},count:()=>{let r=0;for(let n of e)r++;return r},first:()=>{let n=e[Symbol.iterator]().next();return n.done?f.none():f(n.value)},last:()=>{let r,n=false;for(let o of e)r=o,n=true;return n?f(r):f.none()}}),Ge=e=>R(e),He={empty:()=>R([]),of:e=>R([e]),from:(...e)=>R(e),iterate:(e,t)=>R(function*(){let r=e;for(;;)yield r,r=t(r);}()),generate:e=>R(function*(){for(;;)yield e();}()),range:(e,t,r=1)=>R(function*(){if(r===0)throw new Error("Step cannot be zero");if(r>0)for(let n=e;n<t;n+=r)yield n;else for(let n=e;n>t;n+=r)yield n;}()),repeat:(e,t)=>R(function*(){if(t===void 0)for(;;)yield e;else for(let r=0;r<t;r++)yield e;}()),cycle:e=>R(function*(){let t=Array.from(e);if(t.length!==0)for(;;)yield*t;}())},Jr=h(Ge,He);var ne=Map;var $=e=>{let t="Map",r={values:new ne(e)},n=()=>Array.from(r.values.entries()).map(([c,A])=>d([c,A])),o=c=>$(new ne(r.values).set(c.toArray()[0],c.toArray()[1]).entries()),s=c=>{let A=new ne(r.values);return A.delete(c)?$(A.entries()):$(r.values.entries())},a=c=>{let A=c.toArray();return r.values.get(A[0])===A[1]},i=()=>r.values.size,l=c=>$(Array.from(r.values.entries()).map(([A,W])=>[A,c(W)])),u=c=>{let A=$(r.values.entries()).toList();return $(A.flatMap(c).toArray())},g=c=>y(n()).reduce(c),d$1=c=>y(n()).reduceRight(c),B=c=>A=>y(n()).foldLeft(c)(A),x=c=>A=>y(n()).foldRight(c)(A),L=c=>f(r.values.get(c)),J=(c,A)=>f(r.values.get(c)).getOrElse(A),O=()=>r.values.size===0;return {_tag:t,add:o,remove:s,contains:a,get size(){return i()},map:l,flatMap:u,reduce:g,reduceRight:d$1,foldLeft:B,foldRight:x,fold:(c,A)=>{if(O())return c();let W=n();if(W.length===0)return c();let ye=W[0];return ye===void 0?c():A(ye)},match:c=>O()?c.Empty():c.NonEmpty(n()),get:L,getOrElse:J,get isEmpty(){return O()},orElse:(c,A)=>f(r.values.get(c)).orElse(A),toList:()=>y(n()),toSet:()=>I(n()),toString:()=>`Map(${n().toString()})`,toValue:()=>({_tag:"Map",value:r.values}),pipe:c=>c(Array.from(r.values.entries())),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())}),toYAML:()=>`_tag: Map
35
+ value: ${JSON.stringify(Array.from(r.values.entries()))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())})).toString("base64")})}},Qe=e=>$(e),Oe={fromJSON:e=>{let t=JSON.parse(e);return Te(t.value)},fromYAML:e=>{let r=e.split(`
36
+ `)[1]?.split(": ")[1];if(!r)return Te([]);let n=JSON.parse(r);return Te(n)},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return Oe.fromJSON(t)}},Te=h(Qe,Oe);var Xe={default:e=>t=>e(t),when:(e,t)=>r=>e(r)?t(r):void 0};var N=(e=[])=>{let t="Stack",r=[...e],n=()=>r.length,o=()=>r.length===0;return {_tag:t,get size(){return n()},get isEmpty(){return o()},contains:m=>r.includes(m),reduce:m=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduce(m)},reduceRight:m=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduceRight(m)},push:m=>N([...r,m]),pop:()=>{if(o())return [N([]),f(null)];let m=[...r],z=m.pop();return [N(m),f(z)]},peek:()=>o()?f(null):f(r[r.length-1]),map:m=>N(r.map(m)),flatMap:m=>o()?N([]):r.reduce((z,K)=>m(K).toArray().reduce((A,W)=>A.push(W),z),N([])),toList:()=>y(r),toArray:()=>[...r],toString:()=>`Stack(${r.join(", ")})`,fold:(m,z)=>{if(o())return m();let K=r[r.length-1];return K!==void 0?z(K):m()},foldLeft:m=>z=>r.reduce(z,m),foldRight:m=>z=>r.reduceRight((K,c)=>z(c,K),m),match:m=>o()?m.Empty():m.NonEmpty([...r]),toValue:()=>({_tag:"Stack",value:r}),pipe:m=>m([...r]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Stack",value:r}),toYAML:()=>`_tag: Stack
37
+ value: ${JSON.stringify(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Stack",value:r})).toString("base64")})}},Ze=(e=[])=>N(e),ze={empty:()=>N([]),of:e=>N([e]),fromJSON:e=>{let t=JSON.parse(e);return fe(t.value)},fromYAML:e=>{let r=e.split(`
38
+ `)[1]?.split(": ")[1];if(!r)return fe([]);let n=JSON.parse(r);return fe(n)},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return ze.fromJSON(t)}},fe=h(Ze,ze);var w=e=>({_tag:"Some",value:e,isEmpty:false,get:()=>e,getOrElse:()=>e,getOrThrow:()=>e,orElse:()=>w(e),orNull:()=>e,orUndefined:()=>e,map:t=>w(t(e)),filter(t){return t(e)?w(e):q},fold:(t,r)=>r(e),match:t=>t.Some(e),flatMap:t=>t(e),flatMapAsync:async t=>await t(e),reduce:t=>t(void 0,e),reduceRight:t=>t(void 0,e),foldLeft:t=>r=>r(t,e),foldRight:t=>r=>r(e,t),toList:()=>y([e]),contains:t=>t===e,size:1,toEither:t=>T(e),toString:()=>`Some(${X(e)})`,toValue:()=>({_tag:"Some",value:e}),pipe:t=>t(e),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Some",value:e}),toYAML:()=>`_tag: Some
39
+ value: ${X(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Some",value:e})).toString("base64")})}),q={_tag:"None",value:void 0,isEmpty:true,get:()=>{throw new Error("Cannot call get() on None")},getOrElse:e=>e,getOrThrow(e){throw e},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},map:e=>q,filter(e){return q},flatMap:e=>q,flatMapAsync:async e=>q,reduce:()=>{},reduceRight:()=>{},fold:(e,t)=>e(),match:e=>e.None(),foldLeft:e=>()=>e,foldRight:e=>()=>e,toList:()=>y([]),contains:()=>false,size:0,toEither:e=>p(e),toString:()=>"None",toValue:()=>({_tag:"None",value:void 0}),pipe:e=>e(void 0),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"None",value:null}),toYAML:()=>`_tag: None
40
+ value: null`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"None",value:null})).toString("base64")})},S=()=>q,et=e=>e!=null?w(e):S(),Me={from:e=>f(e),none:()=>S(),fromJSON:e=>{let t=JSON.parse(e);return t._tag==="Some"?w(t.value):S()},fromYAML:e=>{let t=e.split(`
41
+ `),r=t[0]?.split(": ")[1],n=t[1]?.split(": ")[1];if(!r||!n)return S();let o=n==="null"?null:JSON.parse(n);return r==="Some"?w(o):S()},fromBinary:e=>{let t=Buffer.from(e,"base64").toString();return Me.fromJSON(t)}},f=h(et,Me);export{Te as $,Mt as A,Nt as B,Vt as C,Kt as D,Jt as E,j as F,ee as G,b as H,We as I,le as J,je as K,xe as L,ve as M,ue as N,P as O,Ue as P,te as Q,ir as R,lr as S,pr as T,gr as U,ce as V,k as W,wr as X,M as Y,Jr as Z,ne as _,h as a,Xe as aa,w as b,fe as ba,S as c,et as d,f as e,I as f,y as g,T as h,p as i,ht as j,At as k,Lt as l,_e as m,Ce as n,Et as o,Ee as p,U as q,Ke as r,St as s,wt as t,Ut as u,Bt as v,Pt as w,Ot as x,zt as y,Ft as z};//# sourceMappingURL=chunk-JIVKCD74.mjs.map
42
+ //# sourceMappingURL=chunk-JIVKCD74.mjs.map