@effect-app/infra 2.72.0 → 2.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/api/routing/DynamicMiddleware.d.ts +63 -18
- package/dist/api/routing/DynamicMiddleware.d.ts.map +1 -1
- package/dist/api/routing/DynamicMiddleware.js +55 -24
- package/dist/api/routing.d.ts +13 -32
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +4 -19
- package/package.json +1 -1
- package/src/api/routing/DynamicMiddleware.ts +245 -101
- package/src/api/routing.ts +29 -106
- package/test/controller.test.ts +23 -4
- package/test/dist/controller.test.d.ts.map +1 -1
package/src/api/routing.ts
CHANGED
|
@@ -6,13 +6,13 @@ import { determineMethod, isCommand } from "@effect-app/infra/api/routing/utils"
|
|
|
6
6
|
import { logError, reportError } from "@effect-app/infra/errorReporter"
|
|
7
7
|
import { InfraLogger } from "@effect-app/infra/logger"
|
|
8
8
|
import { Rpc, RpcGroup, RpcServer } from "@effect/rpc"
|
|
9
|
-
import { Array, Cause,
|
|
9
|
+
import { Array, Cause, Duration, Effect, Layer, type NonEmptyArray, type NonEmptyReadonlyArray, ParseResult, Predicate, Request, S, Schedule, Schema } from "effect-app"
|
|
10
10
|
import type { GetEffectContext, GetEffectError, RPCContextMap } from "effect-app/client/req"
|
|
11
11
|
import { type HttpHeaders, HttpRouter } from "effect-app/http"
|
|
12
12
|
import { pretty, typedKeysOf, typedValuesOf } from "effect-app/utils"
|
|
13
13
|
import type { Contravariant } from "effect/Types"
|
|
14
14
|
import { type YieldWrap } from "effect/Utils"
|
|
15
|
-
import { type
|
|
15
|
+
import { type Middleware } from "./routing/DynamicMiddleware.js"
|
|
16
16
|
|
|
17
17
|
export * from "./routing/DynamicMiddleware.js"
|
|
18
18
|
|
|
@@ -191,28 +191,19 @@ export class Router extends HttpRouter.Tag("@effect-app/Rpc")<Router>() {}
|
|
|
191
191
|
export const makeRouter = <
|
|
192
192
|
MiddlewareR,
|
|
193
193
|
RequestContextMap extends Record<string, RPCContextMap.Any>,
|
|
194
|
+
MakeMiddlewareE,
|
|
194
195
|
MakeMiddlewareR,
|
|
195
|
-
|
|
196
|
-
ContextProviderId,
|
|
197
|
-
ContextProviderKey extends string,
|
|
198
|
-
ContextProviderA,
|
|
199
|
-
MakeContextProviderE,
|
|
200
|
-
MakeContextProviderR
|
|
196
|
+
ContextProviderA
|
|
201
197
|
>(
|
|
202
198
|
middleware: Middleware<
|
|
203
199
|
MiddlewareR,
|
|
204
200
|
RequestContextMap,
|
|
201
|
+
MakeMiddlewareE,
|
|
205
202
|
MakeMiddlewareR,
|
|
206
|
-
|
|
207
|
-
ContextProviderId,
|
|
208
|
-
ContextProviderKey,
|
|
209
|
-
ContextProviderA,
|
|
210
|
-
MakeContextProviderE,
|
|
211
|
-
MakeContextProviderR
|
|
203
|
+
ContextProviderA
|
|
212
204
|
>,
|
|
213
205
|
devMode: boolean
|
|
214
206
|
) => {
|
|
215
|
-
const middlewareLayer = makeMiddlewareLayer(middleware)
|
|
216
207
|
function matchFor<
|
|
217
208
|
const ModuleName extends string,
|
|
218
209
|
const Resource extends Record<string, any>
|
|
@@ -375,7 +366,8 @@ export const makeRouter = <
|
|
|
375
366
|
any
|
|
376
367
|
> ? R
|
|
377
368
|
: never,
|
|
378
|
-
GetEffectContext<RequestContextMap, Resource[K]["config"]>
|
|
369
|
+
| GetEffectContext<RequestContextMap, Resource[K]["config"]>
|
|
370
|
+
| ContextProviderA
|
|
379
371
|
>,
|
|
380
372
|
HttpRouter.HttpRouter.Provided
|
|
381
373
|
>
|
|
@@ -406,7 +398,7 @@ export const makeRouter = <
|
|
|
406
398
|
: make
|
|
407
399
|
|
|
408
400
|
const controllers = yield* make
|
|
409
|
-
const rpc = yield*
|
|
401
|
+
const rpc = yield* middleware
|
|
410
402
|
|
|
411
403
|
// return make.pipe(Effect.map((c) => controllers(c, dependencies)))
|
|
412
404
|
const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
|
|
@@ -507,7 +499,7 @@ export const makeRouter = <
|
|
|
507
499
|
Effect.Success<ReturnType<THandlers[K]["handler"]>>,
|
|
508
500
|
| Effect.Error<ReturnType<THandlers[K]["handler"]>>
|
|
509
501
|
| GetEffectError<RequestContextMap, Resource[K]["config"]>,
|
|
510
|
-
| MiddlewareR
|
|
502
|
+
| Exclude<MiddlewareR, ContextProviderA>
|
|
511
503
|
| Exclude<
|
|
512
504
|
Effect.Context<ReturnType<THandlers[K]["handler"]>>,
|
|
513
505
|
ContextProviderA | GetEffectContext<RequestContextMap, Resource[K]["config"]>
|
|
@@ -528,13 +520,10 @@ export const makeRouter = <
|
|
|
528
520
|
}, {} as Record<string, any>)
|
|
529
521
|
})) as unknown as Layer<
|
|
530
522
|
{ [K in keyof RequestModules]: Rpc.Handler<K> },
|
|
531
|
-
|
|
|
532
|
-
| LayersUtils.GetLayersError<MiddlewareDependencies>
|
|
523
|
+
| Layer.Error<typeof middleware.Default>
|
|
533
524
|
| LayersUtils.GetLayersError<MakeDependencies>,
|
|
534
525
|
| RPCRouteR<typeof mapped[keyof typeof mapped]>
|
|
535
|
-
|
|
|
536
|
-
| Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
|
|
537
|
-
| LayersUtils.GetLayersSuccess<MiddlewareDependencies>
|
|
526
|
+
| Layer.Context<typeof middleware.Default>
|
|
538
527
|
| LayersUtils.GetLayersContext<MakeDependencies>
|
|
539
528
|
>
|
|
540
529
|
|
|
@@ -556,20 +545,16 @@ export const makeRouter = <
|
|
|
556
545
|
layer.pipe(
|
|
557
546
|
Layer.provide([
|
|
558
547
|
...dependencies ?? [],
|
|
559
|
-
middleware.
|
|
560
|
-
middlewareLayer
|
|
548
|
+
middleware.Default
|
|
561
549
|
] as any) as any
|
|
562
550
|
)
|
|
563
551
|
) as (Layer.Layer<
|
|
564
552
|
Router,
|
|
565
553
|
| LayersUtils.GetLayersError<MakeDependencies>
|
|
566
554
|
| MakeE
|
|
567
|
-
|
|
|
568
|
-
| LayersUtils.GetLayersError<MiddlewareDependencies>,
|
|
555
|
+
| Layer.Error<typeof middleware.Default>,
|
|
569
556
|
| LayersUtils.GetLayersContext<MakeDependencies>
|
|
570
|
-
|
|
|
571
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
572
|
-
| MakeContextProviderR
|
|
557
|
+
| Layer.Context<typeof middleware.Default>
|
|
573
558
|
| Exclude<MakeR, LayersUtils.GetLayersSuccess<MakeDependencies>>
|
|
574
559
|
>)
|
|
575
560
|
|
|
@@ -607,12 +592,9 @@ export const makeRouter = <
|
|
|
607
592
|
RouterShape<Resource>,
|
|
608
593
|
| MakeErrors<Make>
|
|
609
594
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
610
|
-
|
|
|
611
|
-
| MakeContextProviderE,
|
|
595
|
+
| Layer.Error<typeof middleware.Default>,
|
|
612
596
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
613
|
-
|
|
|
614
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
615
|
-
| MakeContextProviderR
|
|
597
|
+
| Layer.Context<typeof middleware.Default>
|
|
616
598
|
| Exclude<
|
|
617
599
|
MakeContext<Make>,
|
|
618
600
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -643,12 +625,9 @@ export const makeRouter = <
|
|
|
643
625
|
RouterShape<Resource>,
|
|
644
626
|
| MakeErrors<Make>
|
|
645
627
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
646
|
-
|
|
|
647
|
-
| MakeContextProviderE,
|
|
628
|
+
| Layer.Error<typeof middleware.Default>,
|
|
648
629
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
649
|
-
|
|
|
650
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
651
|
-
| MakeContextProviderR
|
|
630
|
+
| Layer.Context<typeof middleware.Default>
|
|
652
631
|
| Exclude<
|
|
653
632
|
MakeContext<Make>,
|
|
654
633
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -679,12 +658,9 @@ export const makeRouter = <
|
|
|
679
658
|
RouterShape<Resource>,
|
|
680
659
|
| MakeErrors<Make>
|
|
681
660
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
682
|
-
|
|
|
683
|
-
| MakeContextProviderE,
|
|
661
|
+
| Layer.Error<typeof middleware.Default>,
|
|
684
662
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
685
|
-
|
|
|
686
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
687
|
-
| MakeContextProviderR
|
|
663
|
+
| Layer.Context<typeof middleware.Default>
|
|
688
664
|
| Exclude<
|
|
689
665
|
MakeContext<Make>,
|
|
690
666
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -715,12 +691,9 @@ export const makeRouter = <
|
|
|
715
691
|
RouterShape<Resource>,
|
|
716
692
|
| MakeErrors<Make>
|
|
717
693
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
718
|
-
|
|
|
719
|
-
| MakeContextProviderE,
|
|
694
|
+
| Layer.Error<typeof middleware.Default>,
|
|
720
695
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
721
|
-
|
|
|
722
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
723
|
-
| MakeContextProviderR
|
|
696
|
+
| Layer.Context<typeof middleware.Default>
|
|
724
697
|
| Exclude<
|
|
725
698
|
MakeContext<Make>,
|
|
726
699
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -751,12 +724,9 @@ export const makeRouter = <
|
|
|
751
724
|
RouterShape<Resource>,
|
|
752
725
|
| MakeErrors<Make>
|
|
753
726
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
754
|
-
|
|
|
755
|
-
| MakeContextProviderE,
|
|
727
|
+
| Layer.Error<typeof middleware.Default>,
|
|
756
728
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
757
|
-
|
|
|
758
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
759
|
-
| MakeContextProviderR
|
|
729
|
+
| Layer.Context<typeof middleware.Default>
|
|
760
730
|
| Exclude<
|
|
761
731
|
MakeContext<Make>,
|
|
762
732
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -785,12 +755,9 @@ export const makeRouter = <
|
|
|
785
755
|
RouterShape<Resource>,
|
|
786
756
|
| MakeErrors<Make>
|
|
787
757
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
788
|
-
|
|
|
789
|
-
| MakeContextProviderE,
|
|
758
|
+
| Layer.Error<typeof middleware.Default>,
|
|
790
759
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
791
|
-
|
|
|
792
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
793
|
-
| MakeContextProviderR
|
|
760
|
+
| Layer.Context<typeof middleware.Default>
|
|
794
761
|
| Exclude<
|
|
795
762
|
MakeContext<Make>,
|
|
796
763
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -822,12 +789,9 @@ export const makeRouter = <
|
|
|
822
789
|
RouterShape<Resource>,
|
|
823
790
|
| MakeErrors<Make>
|
|
824
791
|
| LayersUtils.GetLayersError<Make["dependencies"]>
|
|
825
|
-
|
|
|
826
|
-
| MakeContextProviderE,
|
|
792
|
+
| Layer.Error<typeof middleware.Default>,
|
|
827
793
|
| LayersUtils.GetLayersContext<Make["dependencies"]>
|
|
828
|
-
|
|
|
829
|
-
| LayersUtils.GetLayersContext<MiddlewareDependencies>
|
|
830
|
-
| MakeContextProviderR
|
|
794
|
+
| Layer.Context<typeof middleware.Default>
|
|
831
795
|
| Exclude<
|
|
832
796
|
MakeContext<Make>,
|
|
833
797
|
LayersUtils.GetLayersSuccess<Make["dependencies"]>
|
|
@@ -940,44 +904,3 @@ export const RequestCacheLayers = Layer.mergeAll(
|
|
|
940
904
|
Layer.setRequestCaching(true),
|
|
941
905
|
Layer.setRequestBatching(true)
|
|
942
906
|
)
|
|
943
|
-
|
|
944
|
-
type GetContext<T> = T extends Context.Context<infer Y> ? Y : never
|
|
945
|
-
|
|
946
|
-
export const contextMaker = <
|
|
947
|
-
// TDeps is an array of services whit Default implementation
|
|
948
|
-
// each service is an effect which builds some context for each request
|
|
949
|
-
TDeps extends Array.NonEmptyReadonlyArray<
|
|
950
|
-
& (
|
|
951
|
-
| Context.Tag<any, Effect<Context.Context<any>, any, any> & { _tag: any }>
|
|
952
|
-
| Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
|
|
953
|
-
)
|
|
954
|
-
& {
|
|
955
|
-
new(...args: any[]): any
|
|
956
|
-
Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
|
|
957
|
-
}
|
|
958
|
-
>
|
|
959
|
-
>(...deps: TDeps): {
|
|
960
|
-
dependencies: { [K in keyof TDeps]: TDeps[K]["Default"] }
|
|
961
|
-
effect: Effect.Effect<
|
|
962
|
-
Effect.Effect<
|
|
963
|
-
Context.Context<GetContext<Effect.Success<InstanceType<TDeps[number]>>>>,
|
|
964
|
-
Effect.Error<InstanceType<TDeps[number]>>,
|
|
965
|
-
Effect.Context<InstanceType<TDeps[number]>>
|
|
966
|
-
>,
|
|
967
|
-
never,
|
|
968
|
-
InstanceType<TDeps[number]>
|
|
969
|
-
>
|
|
970
|
-
} => ({
|
|
971
|
-
dependencies: deps.map((_) => _.Default) as any,
|
|
972
|
-
effect: Effect.gen(function*() {
|
|
973
|
-
const services = yield* Effect.all(deps)
|
|
974
|
-
// services are effects which return some Context.Context<...>
|
|
975
|
-
return Effect.all(services as any[]).pipe(
|
|
976
|
-
Effect.map((_) => Context.mergeAll(..._ as any))
|
|
977
|
-
)
|
|
978
|
-
}) as any
|
|
979
|
-
})
|
|
980
|
-
|
|
981
|
-
export class EmptyContextMaker extends Effect.Service<EmptyContextMaker>()("EmptyContextMaker", {
|
|
982
|
-
succeed: Effect.succeed(Context.empty()) satisfies ContextProviderShape<never>
|
|
983
|
-
}) {}
|
package/test/controller.test.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Console, Context, Effect, Layer, S } from "effect-app"
|
|
|
7
7
|
import { type GetEffectContext, InvalidStateError, makeRpcClient, type RPCContextMap, UnauthorizedError } from "effect-app/client"
|
|
8
8
|
import { HttpServerRequest } from "effect-app/http"
|
|
9
9
|
import { Class, TaggedError } from "effect-app/Schema"
|
|
10
|
-
import { makeMiddleware } from "../src/api/routing/DynamicMiddleware.js"
|
|
10
|
+
import { ContextProvider, makeMiddleware, mergeContextProviders } from "../src/api/routing/DynamicMiddleware.js"
|
|
11
11
|
import { SomeService } from "./query.test.js"
|
|
12
12
|
|
|
13
13
|
class UserProfile extends Context.assignTag<UserProfile, UserProfile>("UserProfile")(
|
|
@@ -28,13 +28,32 @@ export interface CTX {
|
|
|
28
28
|
export class Some extends Context.TagMakeId("Some", Effect.succeed({ a: 1 }))<Some>() {}
|
|
29
29
|
|
|
30
30
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
31
|
-
|
|
31
|
+
const contextProvider = ContextProvider({
|
|
32
32
|
effect: Effect.gen(function*() {
|
|
33
33
|
yield* SomeService
|
|
34
|
-
return Effect.
|
|
34
|
+
return Effect.gen(function*() {
|
|
35
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
36
|
+
// yield* Str2 // not allowed
|
|
37
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
43
|
+
class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextProvider", {
|
|
44
|
+
effect: Effect.gen(function*() {
|
|
45
|
+
yield* SomeService
|
|
46
|
+
return Effect.gen(function*() {
|
|
47
|
+
yield* HttpServerRequest.HttpServerRequest
|
|
48
|
+
// yield* Str2 // not allowed
|
|
49
|
+
return Context.make(Some, new Some({ a: 1 }))
|
|
50
|
+
})
|
|
35
51
|
})
|
|
36
52
|
}) {}
|
|
37
53
|
|
|
54
|
+
const merged = mergeContextProviders(MyContextProvider)
|
|
55
|
+
export const contextProvider2 = ContextProvider(merged)
|
|
56
|
+
|
|
38
57
|
export type RequestContextMap = {
|
|
39
58
|
allowAnonymous: RPCContextMap.Inverted<"userProfile", UserProfile, typeof NotLoggedInError>
|
|
40
59
|
// TODO: not boolean but `string[]`
|
|
@@ -46,7 +65,7 @@ const Str2 = Context.GenericTag<"str2", "str">("str2")
|
|
|
46
65
|
|
|
47
66
|
const middleware = makeMiddleware<RequestContextMap, HttpServerRequest.HttpServerRequest>()({
|
|
48
67
|
dependencies: [Layer.effect(Str2, Str)],
|
|
49
|
-
contextProvider
|
|
68
|
+
contextProvider,
|
|
50
69
|
execute: (maker) =>
|
|
51
70
|
Effect.gen(function*() {
|
|
52
71
|
return maker((_schema, handler, moduleName) => (req, headers) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAW,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,KAAK,gBAAgB,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;AAE7C,cAAM,WAAY,SAAQ,gBAIzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;AAEL,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG
|
|
1
|
+
{"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAW,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,KAAK,gBAAgB,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;AAE7C,cAAM,WAAY,SAAQ,gBAIzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;AAEL,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;AA2BxF,eAAO,MAAM,gBAAgB;;CAA0B,CAAA;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,gBAAgB,CAAC,CAAA;IAE3F,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AA+CD,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAA;;;;;;;;;;AAEF,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;AAgB1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;;;;2HAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qFAAiC,CAAA"}
|