@effect-app/vue 2.94.0 → 4.0.0-beta.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/errorReporter.d.ts +2 -2
  3. package/dist/errorReporter.d.ts.map +1 -1
  4. package/dist/errorReporter.js +9 -9
  5. package/dist/experimental/commander.d.ts +49 -69
  6. package/dist/experimental/commander.d.ts.map +1 -1
  7. package/dist/experimental/commander.js +27 -29
  8. package/dist/experimental/confirm.d.ts +11 -5
  9. package/dist/experimental/confirm.d.ts.map +1 -1
  10. package/dist/experimental/confirm.js +19 -6
  11. package/dist/experimental/intl.d.ts +2 -21
  12. package/dist/experimental/intl.d.ts.map +1 -1
  13. package/dist/experimental/intl.js +4 -4
  14. package/dist/experimental/makeUseCommand.js +2 -2
  15. package/dist/experimental/toast.d.ts +3 -35
  16. package/dist/experimental/toast.d.ts.map +1 -1
  17. package/dist/experimental/toast.js +19 -5
  18. package/dist/experimental/withToast.d.ts +6 -4
  19. package/dist/experimental/withToast.d.ts.map +1 -1
  20. package/dist/experimental/withToast.js +10 -8
  21. package/dist/form.d.ts +2 -2
  22. package/dist/form.d.ts.map +1 -1
  23. package/dist/form.js +47 -47
  24. package/dist/lib.d.ts +1 -1
  25. package/dist/lib.d.ts.map +1 -1
  26. package/dist/lib.js +12 -10
  27. package/dist/makeClient.d.ts +31 -28
  28. package/dist/makeClient.d.ts.map +1 -1
  29. package/dist/makeClient.js +31 -32
  30. package/dist/mutate.d.ts +5 -5
  31. package/dist/mutate.d.ts.map +1 -1
  32. package/dist/mutate.js +14 -14
  33. package/dist/query.d.ts +16 -14
  34. package/dist/query.d.ts.map +1 -1
  35. package/dist/query.js +37 -28
  36. package/dist/routeParams.d.ts +2 -4
  37. package/dist/routeParams.d.ts.map +1 -1
  38. package/dist/routeParams.js +3 -15
  39. package/dist/runtime.d.ts +1 -1
  40. package/dist/runtime.d.ts.map +1 -1
  41. package/dist/runtime.js +4 -4
  42. package/package.json +19 -20
  43. package/src/errorReporter.ts +11 -11
  44. package/src/experimental/commander.ts +83 -86
  45. package/src/experimental/confirm.ts +21 -6
  46. package/src/experimental/intl.ts +3 -3
  47. package/src/experimental/makeUseCommand.ts +1 -1
  48. package/src/experimental/toast.ts +23 -4
  49. package/src/experimental/withToast.ts +10 -7
  50. package/src/form.ts +56 -64
  51. package/src/lib.ts +11 -9
  52. package/src/makeClient.ts +70 -63
  53. package/src/mutate.ts +18 -19
  54. package/src/query.ts +56 -49
  55. package/src/routeParams.ts +9 -23
  56. package/src/runtime.ts +6 -6
  57. package/test/Mutation.test.ts +52 -53
  58. package/test/dist/form.test.d.ts.map +1 -1
  59. package/test/dist/stubs.d.ts +103 -45
  60. package/test/dist/stubs.d.ts.map +1 -1
  61. package/test/dist/stubs.js +8 -8
  62. package/test/form.test.ts +7 -6
  63. package/test/stubs.ts +43 -41
  64. package/tsconfig.json +1 -27
@@ -1,12 +1,11 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { it } from "@effect/vitest"
3
3
  import { Cause, Effect, Exit, Fiber, Option } from "effect-app"
4
- import { type RuntimeFiber } from "effect/Fiber"
5
4
  import { CommandContext, DefaultIntl } from "../src/experimental/commander.js"
6
- import { Result } from "../src/lib.js"
5
+ import { AsyncResult } from "../src/lib.js"
7
6
  import { useExperimental } from "./stubs.js"
8
7
 
9
- const unwrap = <A, E>(r: RuntimeFiber<Exit.Exit<A, E>, never>) => Fiber.join(r).pipe(Effect.flatten)
8
+ const unwrap = <A, E>(r: Fiber.Fiber<Exit.Exit<A, E>, never>) => Fiber.join(r).pipe(Effect.flatten)
10
9
 
11
10
  // declare const mutation: {
12
11
  // name: "myMutation"
@@ -72,9 +71,9 @@ describe("alt2", () => {
72
71
  expect(yield* Effect.currentSpan.pipe(Effect.map((_) => _.name))).toBe("Test Action")
73
72
  })),
74
73
  Effect.tap(() =>
75
- Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => expect(_).toBe("Test Action")))
74
+ Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => Effect.sync(() => expect(_).toBe("Test Action"))))
76
75
  ),
77
- Effect.tap(() => executed = true)
76
+ Effect.tap(() => Effect.sync(() => executed = true))
78
77
  )
79
78
  )
80
79
 
@@ -89,7 +88,7 @@ describe("alt2", () => {
89
88
  expect(r).toBe("test-value") // to confirm that the initial function has ran.
90
89
  expect(executed).toBe(true) // to confirm that the combinators have ran.
91
90
 
92
- expect(command.result.pipe(Result.value)).toEqual(Option.some("test-value"))
91
+ expect(command.result.pipe(AsyncResult.value)).toEqual(Option.some("test-value"))
93
92
 
94
93
  expect(toasts.length).toBe(0)
95
94
 
@@ -126,9 +125,9 @@ it.live("works", () =>
126
125
  expect(yield* Effect.currentSpan.pipe(Effect.map((_) => _.name))).toBe("Test Action")
127
126
  })),
128
127
  Effect.tap(() =>
129
- Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => expect(_).toBe("Test Action")))
128
+ Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => Effect.sync(() => expect(_).toBe("Test Action"))))
130
129
  ),
131
- Effect.tap(() => executed = true)
130
+ Effect.tap(() => Effect.sync(() => executed = true))
132
131
  )
133
132
  expect(command.action).toBe("Test Action")
134
133
  expect(command.id).toBe("Test Action")
@@ -141,7 +140,7 @@ it.live("works", () =>
141
140
  expect(r).toBe("test-value") // to confirm that the initial function has ran.
142
141
  expect(executed).toBe(true) // to confirm that the combinators have ran.
143
142
 
144
- expect(command.result.pipe(Result.value)).toEqual(Option.some("test-value"))
143
+ expect(command.result.pipe(AsyncResult.value)).toEqual(Option.some("test-value"))
145
144
 
146
145
  expect(toasts.length).toBe(0)
147
146
 
@@ -176,9 +175,9 @@ it.live("works non-gen", () =>
176
175
  expect(yield* Effect.currentSpan.pipe(Effect.map((_) => _.name))).toBe("Test Action")
177
176
  })),
178
177
  Effect.tap(() =>
179
- Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => expect(_).toBe("Test Action")))
178
+ Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => Effect.sync(() => expect(_).toBe("Test Action"))))
180
179
  ),
181
- Effect.tap(() => executed = true)
180
+ Effect.tap(() => Effect.sync(() => executed = true))
182
181
  )
183
182
  expect(command.action).toBe("Test Action")
184
183
 
@@ -188,7 +187,7 @@ it.live("works non-gen", () =>
188
187
  expect(r).toBe("test-value") // to confirm that the initial function has ran.
189
188
  expect(executed).toBe(true) // to confirm that the combinators have ran.
190
189
 
191
- expect(command.result.pipe(Result.value)).toEqual(Option.some("test-value"))
190
+ expect(command.result.pipe(AsyncResult.value)).toEqual(Option.some("test-value"))
192
191
 
193
192
  expect(toasts.length).toBe(0)
194
193
  }))
@@ -211,7 +210,7 @@ it.live("has custom action name", () =>
211
210
  expect(yield* CommandContext).toMatchObject({ action: "Test Action Translated", id: "Test Action" })
212
211
  return "test-value"
213
212
  },
214
- Effect.tap(() => executed = true)
213
+ Effect.tap(() => Effect.sync(() => executed = true))
215
214
  )
216
215
  expect(command.action).toBe("Test Action Translated")
217
216
  const r = yield* unwrap(command.handle())
@@ -235,7 +234,7 @@ it.live("can map the result", () =>
235
234
  return "test-value"
236
235
  },
237
236
  Effect.map((_) => _ + _),
238
- Effect.tap(() => executed = true)
237
+ Effect.tap(() => Effect.sync(() => executed = true))
239
238
  )
240
239
  const r = yield* unwrap(command.handle())
241
240
 
@@ -257,7 +256,7 @@ it.live("can receive and use input", () =>
257
256
 
258
257
  return { input1, input2 }
259
258
  },
260
- Effect.tap(() => executed = true)
259
+ Effect.tap(() => Effect.sync(() => executed = true))
261
260
  )
262
261
  const r = yield* unwrap(command.handle(1))
263
262
 
@@ -285,8 +284,8 @@ it.live("can replace the result", () =>
285
284
 
286
285
  return "test-value"
287
286
  },
288
- Effect.zipRight(Effect.succeed(42)),
289
- Effect.tap(() => executed = true)
287
+ Effect.andThen(Effect.succeed(42)),
288
+ Effect.tap(() => Effect.sync(() => executed = true))
290
289
  )
291
290
  const r = yield* unwrap(command.handle())
292
291
 
@@ -318,7 +317,7 @@ it.live("with toasts", () =>
318
317
  expect(yield* Effect.currentSpan.pipe(Effect.map((_) => _.name))).toBe("Test Action")
319
318
  })),
320
319
  Effect.tap(() =>
321
- Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => expect(_).toBe("Test Action")))
320
+ Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => Effect.sync(() => expect(_).toBe("Test Action"))))
322
321
  ),
323
322
  // WithToast.handle({
324
323
  // onFailure: "failed",
@@ -326,7 +325,7 @@ it.live("with toasts", () =>
326
325
  // onWaiting: null
327
326
  // }),
328
327
  Command.withDefaultToast(),
329
- Effect.tap(() => executed = true)
328
+ Effect.tap(() => Effect.sync(() => executed = true))
330
329
  )
331
330
 
332
331
  const r = yield* unwrap(command.handle())
@@ -352,16 +351,16 @@ it.live("interrupted", () =>
352
351
  return "test-value"
353
352
  },
354
353
  Command.withDefaultToast(),
355
- Effect.tap(() => executed = true)
354
+ Effect.tap(() => Effect.sync(() => executed = true))
356
355
  )
357
356
 
358
357
  const r = yield* Fiber.join(command.handle())
359
358
 
360
359
  expect(executed).toBe(false) // we were interrupted after all :)
361
- expect(Exit.isInterrupted(r)).toBe(true) // to confirm that the initial function has interrupted
360
+ expect(Exit.hasInterrupts(r)).toBe(true) // to confirm that the initial function has interrupted
362
361
 
363
362
  expect(command.waiting).toBe(false)
364
- expect(Exit.isInterrupted(Result.toExit(command.result))).toBe(true)
363
+ expect(Exit.hasInterrupts(AsyncResult.toExit(command.result))).toBe(true)
365
364
  expect(toasts.length).toBe(0) // toast is removed on interruption. TODO: maybe a nicer user experience can be had?
366
365
  }))
367
366
 
@@ -378,16 +377,16 @@ it.live("fail", () =>
378
377
  return yield* Effect.fail({ message: "Boom!" })
379
378
  },
380
379
  Command.withDefaultToast(),
381
- Effect.tap(() => executed = true)
380
+ Effect.tap(() => Effect.sync(() => executed = true))
382
381
  )
383
382
 
384
383
  const r = yield* Fiber.join(command.handle())
385
384
 
386
385
  expect(executed).toBe(false) // we failed after all :)
387
- expect(Exit.isFailure(r) && Cause.isFailure(r.cause)).toBe(true) // to confirm that the initial function has failed
386
+ expect(Exit.isFailure(r) && Cause.hasFails(r.cause)).toBe(true) // to confirm that the initial function has failed
388
387
 
389
388
  expect(command.waiting).toBe(false)
390
- expect(Exit.isFailure(Result.toExit(command.result))).toBe(true)
389
+ expect(Exit.isFailure(AsyncResult.toExit(command.result))).toBe(true)
391
390
  expect(toasts.length).toBe(1) // toast should show error
392
391
  expect(toasts[0].message).toBe("Test Action Failed:\nBoom!")
393
392
  }))
@@ -404,9 +403,9 @@ it.live("fail and recover", () =>
404
403
  expect(toasts.length).toBe(1)
405
404
  return yield* Effect.fail({ message: "Boom!" })
406
405
  },
407
- Effect.catchAll(() => Effect.succeed("recovered")), // we recover from the error here, so the final result is success
406
+ Effect.orElseSucceed(() => "recovered"), // we recover from the error here, so the final result is success
408
407
  Command.withDefaultToast(),
409
- Effect.tap(() => executed = true)
408
+ Effect.tap(() => Effect.sync(() => executed = true))
410
409
  )
411
410
 
412
411
  const r = yield* unwrap(command.handle())
@@ -415,7 +414,7 @@ it.live("fail and recover", () =>
415
414
  expect(r).toBe("recovered") // to confirm that the initial function has failed but we recovered
416
415
 
417
416
  expect(command.waiting).toBe(false)
418
- expect(Result.toExit(command.result)).toEqual(Exit.succeed("recovered"))
417
+ expect(AsyncResult.toExit(command.result)).toEqual(Exit.succeed("recovered"))
419
418
  expect(toasts.length).toBe(1) // toast should show error
420
419
  expect(toasts[0].message).toBe("Test Action Success")
421
420
  }))
@@ -433,17 +432,17 @@ it.live("defect", () =>
433
432
  return yield* Effect.die({ message: "Boom!" })
434
433
  },
435
434
  Command.withDefaultToast(),
436
- Effect.tap(() => executed = true)
435
+ Effect.tap(() => Effect.sync(() => executed = true))
437
436
  )
438
437
 
439
438
  const r = yield* Fiber.join(command.handle())
440
439
  // TODO: confirm we reported error
441
440
 
442
441
  expect(executed).toBe(false) // we died after all :)
443
- expect(Exit.isFailure(r) && Cause.isDie(r.cause)).toBe(true) // to confirm that the initial function has died
442
+ expect(Exit.isFailure(r) && Cause.hasDies(r.cause)).toBe(true) // to confirm that the initial function has died
444
443
 
445
444
  expect(command.waiting).toBe(false)
446
- expect(Exit.isFailure(Result.toExit(command.result))).toBe(true)
445
+ expect(Exit.isFailure(AsyncResult.toExit(command.result))).toBe(true)
447
446
  expect(toasts.length).toBe(1) // toast should show error
448
447
  expect(toasts[0].message).toBe("Test Action unexpected error, please try again shortly.")
449
448
  }))
@@ -472,9 +471,9 @@ it.live("works with alt", () =>
472
471
  expect(yield* Effect.currentSpan.pipe(Effect.map((_) => _.name))).toBe("Test Action")
473
472
  })),
474
473
  Effect.tap(() =>
475
- Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => expect(_).toBe("Test Action")))
474
+ Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => Effect.sync(() => expect(_).toBe("Test Action"))))
476
475
  ),
477
- Effect.tap(() => executed = true)
476
+ Effect.tap(() => Effect.sync(() => executed = true))
478
477
  )
479
478
  )
480
479
  expect(command.action).toBe("Test Action")
@@ -485,7 +484,7 @@ it.live("works with alt", () =>
485
484
  expect(r).toBe("test-value") // to confirm that the initial function has ran.
486
485
  expect(executed).toBe(true) // to confirm that the combinators have ran.
487
486
 
488
- expect(command.result.pipe(Result.value)).toEqual(Option.some("test-value"))
487
+ expect(command.result.pipe(AsyncResult.value)).toEqual(Option.some("test-value"))
489
488
 
490
489
  expect(toasts.length).toBe(0)
491
490
  }))
@@ -509,7 +508,7 @@ it.live("has custom action name with alt", () =>
509
508
  expect(yield* CommandContext).toMatchObject({ action: "Test Action Translated", id: "Test Action" })
510
509
  return "test-value"
511
510
  },
512
- Effect.tap(() => executed = true)
511
+ Effect.tap(() => Effect.sync(() => executed = true))
513
512
  )
514
513
  )
515
514
  expect(command.action).toBe("Test Action Translated")
@@ -534,7 +533,7 @@ it.live("can map the result with alt", () =>
534
533
  return "test-value"
535
534
  },
536
535
  Effect.map((_) => _ + _),
537
- Effect.tap(() => executed = true)
536
+ Effect.tap(() => Effect.sync(() => executed = true))
538
537
  ))
539
538
  const r = yield* unwrap(command.handle())
540
539
 
@@ -560,7 +559,7 @@ it.live("can receive and use input with alt", () =>
560
559
  }
561
560
  )
562
561
  .pipe(
563
- Effect.tap(() => executed = true)
562
+ Effect.tap(() => Effect.sync(() => executed = true))
564
563
  )
565
564
  )
566
565
  const r = yield* unwrap(command.handle(1))
@@ -590,8 +589,8 @@ it.live("can replace the result with alt", () =>
590
589
 
591
590
  return "test-value"
592
591
  },
593
- Effect.zipRight(Effect.succeed(42)),
594
- Effect.tap(() => executed = true)
592
+ Effect.andThen(Effect.succeed(42)),
593
+ Effect.tap(() => Effect.sync(() => executed = true))
595
594
  )
596
595
  )
597
596
  const r = yield* unwrap(command.handle())
@@ -625,10 +624,10 @@ it.live("with toasts with alt", () =>
625
624
  expect(yield* Effect.currentSpan.pipe(Effect.map((_) => _.name))).toBe("Test Action")
626
625
  })),
627
626
  Effect.tap(() =>
628
- Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => expect(_).toBe("Test Action")))
627
+ Effect.currentSpan.pipe(Effect.map((_) => _.name), Effect.tap((_) => Effect.sync(() => expect(_).toBe("Test Action"))))
629
628
  ),
630
629
  Command.withDefaultToast(),
631
- Effect.tap(() => executed = true)
630
+ Effect.tap(() => Effect.sync(() => executed = true))
632
631
  )
633
632
  )
634
633
 
@@ -657,17 +656,17 @@ it.live("interrupted with alt", () =>
657
656
  return "test-value"
658
657
  },
659
658
  Command.withDefaultToast(),
660
- Effect.tap(() => executed = true)
659
+ Effect.tap(() => Effect.sync(() => executed = true))
661
660
  )
662
661
  )
663
662
 
664
663
  const r = yield* Fiber.join(command.handle())
665
664
 
666
665
  expect(executed).toBe(false) // we were interrupted after all :)
667
- expect(Exit.isInterrupted(r)).toBe(true) // to confirm that the initial function has interrupted
666
+ expect(Exit.hasInterrupts(r)).toBe(true) // to confirm that the initial function has interrupted
668
667
 
669
668
  expect(command.waiting).toBe(false)
670
- expect(Exit.isInterrupted(Result.toExit(command.result))).toBe(true)
669
+ expect(Exit.hasInterrupts(AsyncResult.toExit(command.result))).toBe(true)
671
670
  expect(toasts.length).toBe(0) // toast is removed on interruption. TODO: maybe a nicer user experience can be had?
672
671
  }))
673
672
 
@@ -685,17 +684,17 @@ it.live("fail with alt", () =>
685
684
  return yield* Effect.fail({ message: "Boom!" })
686
685
  },
687
686
  Command.withDefaultToast(),
688
- Effect.tap(() => executed = true)
687
+ Effect.tap(() => Effect.sync(() => executed = true))
689
688
  )
690
689
  )
691
690
 
692
691
  const r = yield* Fiber.join(command.handle())
693
692
 
694
693
  expect(executed).toBe(false) // we failed after all :)
695
- expect(Exit.isFailure(r) && Cause.isFailure(r.cause)).toBe(true) // to confirm that the initial function has failed
694
+ expect(Exit.isFailure(r) && Cause.hasFails(r.cause)).toBe(true) // to confirm that the initial function has failed
696
695
 
697
696
  expect(command.waiting).toBe(false)
698
- expect(Exit.isFailure(Result.toExit(command.result))).toBe(true)
697
+ expect(Exit.isFailure(AsyncResult.toExit(command.result))).toBe(true)
699
698
  expect(toasts.length).toBe(1) // toast should show error
700
699
  expect(toasts[0].message).toBe("Test Action Failed:\nBoom!")
701
700
  }))
@@ -713,9 +712,9 @@ it.live("fail and recover with alt", () =>
713
712
  expect(toasts.length).toBe(1)
714
713
  return yield* Effect.fail({ message: "Boom!" })
715
714
  },
716
- Effect.catchAll(() => Effect.succeed("recovered")), // we recover from the error here, so the final result is success
715
+ Effect.orElseSucceed(() => "recovered"), // we recover from the error here, so the final result is success
717
716
  Command.withDefaultToast(),
718
- Effect.tap(() => executed = true)
717
+ Effect.tap(() => Effect.sync(() => executed = true))
719
718
  )
720
719
  )
721
720
 
@@ -725,7 +724,7 @@ it.live("fail and recover with alt", () =>
725
724
  expect(r).toBe("recovered") // to confirm that the initial function has failed but we recovered
726
725
 
727
726
  expect(command.waiting).toBe(false)
728
- expect(Result.toExit(command.result)).toEqual(Exit.succeed("recovered"))
727
+ expect(AsyncResult.toExit(command.result)).toEqual(Exit.succeed("recovered"))
729
728
  expect(toasts.length).toBe(1) // toast should show error
730
729
  expect(toasts[0].message).toBe("Test Action Success")
731
730
  }))
@@ -744,7 +743,7 @@ it.live("defect with alt", () =>
744
743
  return yield* Effect.die({ message: "Boom!" })
745
744
  },
746
745
  Command.withDefaultToast(),
747
- Effect.tap(() => executed = true)
746
+ Effect.tap(() => Effect.sync(() => executed = true))
748
747
  )
749
748
  )
750
749
 
@@ -752,10 +751,10 @@ it.live("defect with alt", () =>
752
751
  // TODO: confirm we reported error
753
752
 
754
753
  expect(executed).toBe(false) // we died after all :)
755
- expect(Exit.isFailure(r) && Cause.isDie(r.cause)).toBe(true) // to confirm that the initial function has died
754
+ expect(Exit.isFailure(r) && Cause.hasDies(r.cause)).toBe(true) // to confirm that the initial function has died
756
755
 
757
756
  expect(command.waiting).toBe(false)
758
- expect(Exit.isFailure(Result.toExit(command.result))).toBe(true)
757
+ expect(Exit.isFailure(AsyncResult.toExit(command.result))).toBe(true)
759
758
  expect(toasts.length).toBe(1) // toast should show error
760
759
  expect(toasts[0].message).toBe("Test Action unexpected error, please try again shortly.")
761
760
  }))
@@ -1 +1 @@
1
- {"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../form.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,CAAC,EAAE,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGtC,qBAAa,YAAa,SAAQ,iBAShC;CAAG;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAEvC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAK/B;CAAG;;;;;;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;;;;;;;;AAEL,cAAM,QAAS,SAAQ,aAGrB;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBL,qBAAa,cAAe,SAAQ,mBAGlC;CAAG"}
1
+ {"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../form.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,CAAC,EAAE,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;AAGtC,qBAAa,YAAa,SAAQ,iBAShC;CAAG;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAEvC;CAAG;;;;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAK/B;CAAG;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;AAEL,cAAM,QAAS,SAAQ,aAGrB;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBL,qBAAa,cAAe,SAAQ,mBAGlC;CAAG"}
@@ -18,67 +18,125 @@ declare const RequestContextMap_base: (new () => {
18
18
  readonly config: {};
19
19
  }) & {
20
20
  config: {};
21
- getConfig: (rpc: import("@effect/rpc/Rpc").AnyWithProps) => RpcContextMap.GetContextConfig<{}>;
21
+ getConfig: (rpc: import("effect/unstable/rpc/Rpc").AnyWithProps) => RpcContextMap.GetContextConfig<{}>;
22
22
  get: <Key extends never>(key: Key) => import("effect-app/rpc/RpcMiddleware").RpcDynamic<Key, {}[Key]>;
23
23
  };
24
24
  export declare class RequestContextMap extends RequestContextMap_base {
25
25
  }
26
- export declare const Req: <Self>() => {
26
+ export declare const Req: <_Self>() => {
27
27
  <Tag extends string, Payload extends S.Struct.Fields, C extends {
28
- success: S.Schema.Any | S.Struct.Fields;
29
- failure: S.Schema.Any | S.Struct.Fields;
30
- }>(tag: Tag, fields: Payload, config: RpcContextMap.GetContextConfig<{}> & C): S.TaggedRequestClass<Self, Tag, {
31
- readonly _tag: S.tag<Tag>;
32
- } & Payload, (RpcContextMap.GetContextConfig<{}> & C)["success"] extends infer T ? T extends (RpcContextMap.GetContextConfig<{}> & C)["success"] ? T extends S.Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, S.Union<[(RpcContextMap.GetContextConfig<{}> & C)["failure"] extends infer T_1 ? T_1 extends (RpcContextMap.GetContextConfig<{}> & C)["failure"] ? T_1 extends S.Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never]>> & {
33
- config: Omit<C, "success" | "failure">;
28
+ success: S.Top | S.Struct.Fields;
29
+ error: S.Top | S.Struct.Fields;
30
+ }>(tag: Tag, fields: Payload, config: RpcContextMap.GetContextConfig<{}> & C): S.TaggedStruct<Tag, Payload> & {
31
+ new (...args: any[]): any;
32
+ readonly _tag: Tag;
33
+ readonly fields: {
34
+ readonly _tag: S.tag<Tag>;
35
+ } & Payload;
36
+ readonly success: C["success"] extends infer T ? T extends C["success"] ? T extends S.Top ? T : T extends S.Struct.Fields ? S.Struct<T> : S.Void : never : never;
37
+ readonly error: C extends {
38
+ error: infer E;
39
+ } ? E extends S.Top ? E : E extends S.Struct.Fields ? S.Struct<E> : S.Void : S.Void;
40
+ readonly config: Omit<C, "success" | "error">;
41
+ readonly "~decodingServices": S.Codec.DecodingServices<C["success"] extends infer T_1 ? T_1 extends C["success"] ? T_1 extends S.Top ? T_1 : T_1 extends S.Struct.Fields ? S.Struct<T_1> : S.Void : never : never> | S.Codec.DecodingServices<C extends {
42
+ error: infer E;
43
+ } ? E extends S.Top ? E : E extends S.Struct.Fields ? S.Struct<E> : S.Void : S.Void>;
34
44
  };
35
45
  <Tag extends string, Payload_1 extends S.Struct.Fields, C_1 extends Pick<{
36
- success: S.Schema.Any | S.Struct.Fields;
37
- failure: S.Schema.Any | S.Struct.Fields;
38
- }, "success">>(tag: Tag, fields: Payload_1, config: RpcContextMap.GetContextConfig<{}> & C_1): S.TaggedRequestClass<Self, Tag, {
39
- readonly _tag: S.tag<Tag>;
40
- } & Payload_1, (RpcContextMap.GetContextConfig<{}> & C_1)["success"] extends infer T ? T extends (RpcContextMap.GetContextConfig<{}> & C_1)["success"] ? T extends S.Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, S.Union<[never]>> & {
41
- config: Omit<C_1, "success" | "failure">;
46
+ success: S.Top | S.Struct.Fields;
47
+ error: S.Top | S.Struct.Fields;
48
+ }, "success">>(tag: Tag, fields: Payload_1, config: RpcContextMap.GetContextConfig<{}> & C_1): S.TaggedStruct<Tag, Payload_1> & {
49
+ new (...args: any[]): any;
50
+ readonly _tag: Tag;
51
+ readonly fields: {
52
+ readonly _tag: S.tag<Tag>;
53
+ } & Payload_1;
54
+ readonly success: C_1["success"] extends infer T ? T extends C_1["success"] ? T extends S.Top ? T : T extends S.Struct.Fields ? S.Struct<T> : S.Void : never : never;
55
+ readonly error: C_1 extends {
56
+ error: infer E;
57
+ } ? E extends S.Top ? E : E extends S.Struct.Fields ? S.Struct<E> : S.Void : S.Void;
58
+ readonly config: Omit<C_1, "success" | "error">;
59
+ readonly "~decodingServices": S.Codec.DecodingServices<C_1["success"] extends infer T_1 ? T_1 extends C_1["success"] ? T_1 extends S.Top ? T_1 : T_1 extends S.Struct.Fields ? S.Struct<T_1> : S.Void : never : never> | S.Codec.DecodingServices<C_1 extends {
60
+ error: infer E;
61
+ } ? E extends S.Top ? E : E extends S.Struct.Fields ? S.Struct<E> : S.Void : S.Void>;
42
62
  };
43
63
  <Tag extends string, Payload_2 extends S.Struct.Fields, C_2 extends Pick<{
44
- success: S.Schema.Any | S.Struct.Fields;
45
- failure: S.Schema.Any | S.Struct.Fields;
46
- }, "failure">>(tag: Tag, fields: Payload_2, config: RpcContextMap.GetContextConfig<{}> & C_2): S.TaggedRequestClass<Self, Tag, {
47
- readonly _tag: S.tag<Tag>;
48
- } & Payload_2, typeof S.Void, S.Union<[(RpcContextMap.GetContextConfig<{}> & C_2)["failure"] extends infer T ? T extends (RpcContextMap.GetContextConfig<{}> & C_2)["failure"] ? T extends S.Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never]>> & {
49
- config: Omit<C_2, "success" | "failure">;
64
+ success: S.Top | S.Struct.Fields;
65
+ error: S.Top | S.Struct.Fields;
66
+ }, "error">>(tag: Tag, fields: Payload_2, config: RpcContextMap.GetContextConfig<{}> & C_2): S.TaggedStruct<Tag, Payload_2> & {
67
+ new (...args: any[]): any;
68
+ readonly _tag: Tag;
69
+ readonly fields: {
70
+ readonly _tag: S.tag<Tag>;
71
+ } & Payload_2;
72
+ readonly success: S.Schema<void>;
73
+ readonly error: C_2 extends {
74
+ error: infer E;
75
+ } ? E extends S.Top ? E : E extends S.Struct.Fields ? S.Struct<E> : S.Void : S.Void;
76
+ readonly config: Omit<C_2, "success" | "error">;
77
+ readonly "~decodingServices": unknown;
50
78
  };
51
- <Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 & RpcContextMap.GetContextConfig<{}>): S.TaggedRequestClass<Self, Tag, {
52
- readonly _tag: S.tag<Tag>;
53
- } & Payload_3, typeof S.Void, S.Union<[never]>> & {
54
- config: Omit<C_3, "success" | "failure">;
79
+ <Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 & RpcContextMap.GetContextConfig<{}>): S.TaggedStruct<Tag, Payload_3> & {
80
+ new (...args: any[]): any;
81
+ readonly _tag: Tag;
82
+ readonly fields: {
83
+ readonly _tag: S.tag<Tag>;
84
+ } & Payload_3;
85
+ readonly success: S.Schema<void>;
86
+ readonly error: C_3 extends {
87
+ error: infer E;
88
+ } ? E extends S.Top ? E : E extends S.Struct.Fields ? S.Struct<E> : S.Void : S.Void;
89
+ readonly config: Omit<C_3, "success" | "error">;
90
+ readonly "~decodingServices": unknown;
55
91
  };
56
- <Tag extends string, Payload_4 extends S.Struct.Fields>(tag: Tag, fields: Payload_4): S.TaggedRequestClass<Self, Tag, {
57
- readonly _tag: S.tag<Tag>;
58
- } & Payload_4, typeof S.Void, never> & {
59
- config: {};
92
+ <Tag extends string, Payload_4 extends S.Struct.Fields>(tag: Tag, fields: Payload_4): S.TaggedStruct<Tag, Payload_4> & {
93
+ new (...args: any[]): any;
94
+ readonly _tag: Tag;
95
+ readonly fields: {
96
+ readonly _tag: S.tag<Tag>;
97
+ } & Payload_4;
98
+ readonly success: S.Schema<void>;
99
+ readonly error: never;
100
+ readonly config: Record<string, never>;
101
+ readonly "~decodingServices": unknown;
60
102
  };
61
103
  };
62
- declare const GetSomething2_base: S.TaggedRequestClass<GetSomething2, "GetSomething2", {
63
- readonly _tag: S.tag<"GetSomething2">;
64
- } & {
65
- id: typeof S.String;
66
- }, typeof S.NumberFromString, S.Union<[never]>> & {
67
- config: Omit<{
68
- success: typeof S.NumberFromString;
69
- }, "success" | "failure">;
104
+ declare const GetSomething2_base: S.TaggedStruct<"GetSomething2", {
105
+ id: S.String;
106
+ }> & {
107
+ new (...args: any[]): any;
108
+ readonly _tag: "GetSomething2";
109
+ readonly fields: {
110
+ readonly _tag: S.tag<"GetSomething2">;
111
+ } & {
112
+ id: S.String;
113
+ };
114
+ readonly success: S.NumberFromString;
115
+ readonly error: S.Void;
116
+ readonly config: Omit<{
117
+ success: S.NumberFromString;
118
+ }, "success" | "error">;
119
+ readonly "~decodingServices": never;
70
120
  };
71
121
  export declare class GetSomething2 extends GetSomething2_base {
72
122
  }
73
- declare const GetSomething2WithDependencies_base: S.TaggedRequestClass<GetSomething2WithDependencies, "GetSomething2", {
74
- readonly _tag: S.tag<"GetSomething2">;
75
- } & {
76
- id: typeof S.String;
77
- }, S.Schema<number, string, "dep-a">, S.Union<[S.Schema<string, string, "dep-b">]>> & {
78
- config: Omit<{
79
- success: S.Schema<number, string, "dep-a">;
80
- failure: S.Schema<string, string, "dep-b">;
81
- }, "success" | "failure">;
123
+ declare const GetSomething2WithDependencies_base: S.TaggedStruct<"GetSomething2", {
124
+ id: S.String;
125
+ }> & {
126
+ new (...args: any[]): any;
127
+ readonly _tag: "GetSomething2";
128
+ readonly fields: {
129
+ readonly _tag: S.tag<"GetSomething2">;
130
+ } & {
131
+ id: S.String;
132
+ };
133
+ readonly success: S.Codec<number, string, "dep-a", never>;
134
+ readonly error: S.String;
135
+ readonly config: Omit<{
136
+ success: S.Codec<number, string, "dep-a">;
137
+ error: S.String;
138
+ }, "success" | "error">;
139
+ readonly "~decodingServices": "dep-a";
82
140
  };
83
141
  export declare class GetSomething2WithDependencies extends GetSomething2WithDependencies_base {
84
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,OAAO,EAAU,KAAK,EAA0B,CAAC,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAElD,OAAO,KAAK,KAAK,MAAM,8BAA8B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAc,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA2CxD,eAAO,MAAM,YAAY,GAAI,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAM,KAepG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAM,oCAGzG,CAAA;AAEH,eAAO,MAAM,eAAe,GAC1B,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,6GASxG,CAAA;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAAyB;CAAG;AACnE,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAA;;;;;;;;;;AACtE,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;;;iBAKL,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;iBAC3C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;;;AAJxD,qBAAa,6BAA8B,SAAQ,kCAKjD;CAAG;AAEL,eAAO,MAAM,SAAS;;;;;;CAA+F,CAAA;AAErH,eAAO,MAAM,SAAS,GACpB,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE;;;;;;;;;CAcxG,CAAA"}
1
+ {"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../stubs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,OAAO,EAAU,KAAK,EAA0B,CAAC,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAElD,OAAO,KAAK,KAAK,MAAM,8BAA8B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAc,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA8CxD,eAAO,MAAM,YAAY,GAAI,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAM,KAepG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAClD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,WAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAM,oCACpC,CAAA;AAExE,eAAO,MAAM,eAAe,GAC1B,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,6GASxG,CAAA;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAAyB;CAAG;AACnE,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAA;;;;;;;;;;;;;;;;;;AACtE,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;;;;;;;;;;iBAML,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;;;;;AAJjE,qBAAa,6BAA8B,SAAQ,kCAMjD;CAAG;AAEL,eAAO,MAAM,SAAS;;;;;;CAA+F,CAAA;AAErH,eAAO,MAAM,SAAS,GACpB,UAAU;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE;;;;;;;;;CAcxG,CAAA"}
@@ -1,9 +1,8 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { FetchHttpClient } from "@effect/platform";
3
1
  import * as Intl from "@formatjs/intl";
4
2
  import { Effect, Layer, ManagedRuntime, Option, S } from "effect-app";
5
3
  import { ApiClientFactory, makeRpcClient } from "effect-app/client";
6
4
  import { RpcContextMap } from "effect-app/rpc";
5
+ import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
7
6
  import { ref } from "vue";
8
7
  import { Commander } from "../src/experimental/commander.js";
9
8
  import { I18n } from "../src/experimental/intl.js";
@@ -11,7 +10,7 @@ import { makeUseCommand } from "../src/experimental/makeUseCommand.js";
11
10
  import * as Toast from "../src/experimental/toast.js";
12
11
  import { WithToast } from "../src/experimental/withToast.js";
13
12
  import { LegacyMutation, makeClient } from "../src/makeClient.js";
14
- const fakeToastLayer = (toasts = []) => Toast.Toast.toLayer(Effect.sync(() => {
13
+ const fakeToastLayer = (toasts = []) => Layer.effect(Toast.Toast, Effect.sync(() => {
15
14
  const dismiss = (id) => {
16
15
  const idx = toasts.findIndex((_) => _.id === id);
17
16
  if (idx > -1) {
@@ -42,13 +41,13 @@ const fakeToastLayer = (toasts = []) => Toast.Toast.toLayer(Effect.sync(() => {
42
41
  }
43
42
  return id;
44
43
  };
45
- return Toast.wrap({
44
+ return Toast.Toast.of(Toast.wrap({
46
45
  error: fakeToast,
47
46
  warning: fakeToast,
48
47
  success: fakeToast,
49
48
  info: fakeToast,
50
49
  dismiss
51
- });
50
+ }));
52
51
  }));
53
52
  export const makeFakeIntl = (messages = {}) => {
54
53
  const locale = ref("en");
@@ -66,7 +65,7 @@ export const makeFakeIntl = (messages = {}) => {
66
65
  }
67
66
  };
68
67
  };
69
- export const fakeIntlLayer = (messages = {}) => I18n.toLayer(Effect.sync(() => makeFakeIntl(messages)));
68
+ export const fakeIntlLayer = (messages = {}) => Layer.effect(I18n, Effect.sync(() => I18n.of(makeFakeIntl(messages))));
70
69
  export const useExperimental = (options) => {
71
70
  const FakeIntlLayer = fakeIntlLayer(options?.messages);
72
71
  const FakeToastLayer = fakeToastLayer(options?.toasts);
@@ -85,8 +84,9 @@ export class GetSomething2 extends Req()("GetSomething2", {
85
84
  export class GetSomething2WithDependencies extends Req()("GetSomething2", {
86
85
  id: S.String
87
86
  }, {
87
+ // this is intentilally fake, to simulate a codec that requires a dependency
88
88
  success: S.NumberFromString,
89
- failure: S.String
89
+ error: S.String
90
90
  }) {
91
91
  }
92
92
  export const Something = { GetSomething2, GetSomething2WithDependencies, meta: { moduleName: "Something" } };
@@ -101,4 +101,4 @@ export const useClient = (options) => {
101
101
  const clientFor_ = ApiClientFactory.makeFor(Layer.empty);
102
102
  return makeClient(() => ManagedRuntime.make(layers), clientFor_, Layer.empty);
103
103
  };
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1YnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zdHVicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRWxELE9BQU8sS0FBSyxJQUFJLE1BQU0sZ0JBQWdCLENBQUE7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQ3RFLE9BQU8sS0FBSyxLQUFLLE1BQU0sOEJBQThCLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHakUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFnQixFQUFFLEVBQUUsRUFBRSxDQUM1QyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUNuQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWlCLEVBQUUsRUFBRTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENB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
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R1YnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zdHVicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUMsT0FBTyxLQUFLLGVBQWUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQ3pCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQ3RFLE9BQU8sS0FBSyxLQUFLLE1BQU0sOEJBQThCLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFHakUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFnQixFQUFFLEVBQUUsRUFBRSxDQUM1QyxLQUFLLENBQUMsTUFBTSxDQUNWLEtBQUssQ0FBQyxLQUFLLEVBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDZixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWlCLEVBQUUsRUFBRTtRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDYixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDekIsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN2QixDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBeUIsRUFBRSxFQUFFO1FBQy9ELE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFakQsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUE7UUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3pCLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUMxQyxLQUFLLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFBO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxLQUFLLEdBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFBO1lBQzNDLEtBQUssQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDdkIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUE7WUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDLENBQUE7SUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDL0IsS0FBSyxFQUFFLFNBQVM7UUFDaEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPO0tBQ1IsQ0FBQyxDQUFRLENBQUE7QUFDWixDQUFDLENBQUMsQ0FDSCxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBNEUsRUFBRSxFQUFFLEVBQUU7SUFDN0csTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQWEsQ0FBQyxDQUFBO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFzQjtRQUNoRCxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDcEIsUUFBUTtLQUNULEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFYixPQUFPO1FBQ0wsTUFBTTtRQUNOLElBQUk7UUFDSixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDO1FBQ3pELElBQUksYUFBYTtZQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQTtRQUMzQixDQUFDO0tBQytDLENBQUE7QUFDcEQsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsV0FBNEUsRUFBRSxFQUFFLEVBQUUsQ0FDOUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUV4RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsT0FBdUcsRUFDdkcsRUFBRTtJQUNGLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0RCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3RixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7SUFDNUUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUU1RixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFpQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pILENBQUMsQ0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBQ3RFLE1BQU0sT0FBTyxhQUFjLFNBQVEsR0FBRyxFQUFpQixDQUFDLGVBQWUsRUFBRTtJQUN2RSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDYixFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0NBQUc7QUFFdEMsTUFBTSxPQUFPLDZCQUE4QixTQUFRLEdBQUcsRUFBaUMsQ0FBQyxlQUFlLEVBQUU7SUFDdkcsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ2IsRUFBRTtJQUNELDRFQUE0RTtJQUM1RSxPQUFPLEVBQUUsQ0FBQyxDQUFDLGdCQUFvRDtJQUMvRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDaEIsQ0FBQztDQUFHO0FBRUwsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsYUFBYSxFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFvQixFQUFFLEVBQUUsQ0FBQTtBQUVySCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsT0FBdUcsRUFDdkcsRUFBRTtJQUNGLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0RCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3RixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7SUFDNUUsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUNyQyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEYsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXJHLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQy9FLENBQUMsQ0FBQSJ9