@effect-app/infra 2.94.0 → 3.0.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/Emailer/service.d.ts +1 -1
  3. package/dist/MainFiberSet.d.ts +1 -1
  4. package/dist/Operations.d.ts +1 -1
  5. package/dist/RequestFiberSet.d.ts +1 -1
  6. package/dist/Store/service.d.ts +2 -2
  7. package/dist/adapters/SQL/Model.d.ts +6 -6
  8. package/dist/adapters/ServiceBus.d.ts +2 -2
  9. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  10. package/dist/adapters/ServiceBus.js +13 -10
  11. package/dist/adapters/memQueue.d.ts +1 -1
  12. package/dist/api/routing/middleware/RouterMiddleware.d.ts +6 -6
  13. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  14. package/dist/api/routing/middleware/RpcMiddleware.d.ts +4 -15
  15. package/dist/api/routing/middleware/RpcMiddleware.d.ts.map +1 -1
  16. package/dist/api/routing/middleware/RpcMiddleware.js +3 -4
  17. package/dist/api/routing/middleware/RpcMiddlewareX.d.ts +18 -0
  18. package/dist/api/routing/middleware/RpcMiddlewareX.d.ts.map +1 -0
  19. package/dist/api/routing/middleware/RpcMiddlewareX.js +16 -0
  20. package/dist/api/routing/middleware/generic-middleware.d.ts +22 -8
  21. package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
  22. package/dist/api/routing/middleware/generic-middleware.js +59 -62
  23. package/dist/api/routing/middleware/middleware-api.d.ts +51 -32
  24. package/dist/api/routing/middleware/middleware-api.d.ts.map +1 -1
  25. package/dist/api/routing/middleware/middleware-api.js +54 -24
  26. package/dist/api/routing/middleware/middleware-native.d.ts +23 -0
  27. package/dist/api/routing/middleware/middleware-native.d.ts.map +1 -0
  28. package/dist/api/routing/middleware/middleware-native.js +19 -0
  29. package/dist/api/routing/middleware/middleware.d.ts +7 -27
  30. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  31. package/dist/api/routing/middleware/middleware.js +73 -88
  32. package/dist/api/routing/middleware.d.ts +1 -0
  33. package/dist/api/routing/middleware.d.ts.map +1 -1
  34. package/dist/api/routing/middleware.js +2 -1
  35. package/package.json +11 -3
  36. package/src/adapters/ServiceBus.ts +7 -5
  37. package/src/api/routing/middleware/RouterMiddleware.ts +9 -8
  38. package/src/api/routing/middleware/RpcMiddleware.ts +4 -51
  39. package/src/api/routing/middleware/RpcMiddlewareX.ts +70 -0
  40. package/src/api/routing/middleware/generic-middleware.ts +142 -107
  41. package/src/api/routing/middleware/middleware-api.ts +239 -61
  42. package/src/api/routing/middleware/middleware-native.ts +23 -0
  43. package/src/api/routing/middleware/middleware.ts +37 -40
  44. package/src/api/routing/middleware.ts +1 -0
  45. package/test/controller.test.ts +39 -14
  46. package/test/dist/controller.test.d.ts.map +1 -1
  47. package/test/dist/fixtures.d.ts +48 -32
  48. package/test/dist/fixtures.d.ts.map +1 -1
  49. package/test/dist/fixtures.js +76 -47
  50. package/test/dist/requires.test.d.ts.map +1 -1
  51. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -0
  52. package/test/fixtures.ts +70 -16
  53. package/test/requires.test.ts +15 -50
  54. package/test/rpc-multi-middleware.test.ts +134 -0
@@ -0,0 +1,23 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { RpcMiddleware } from "@effect/rpc"
3
+ import { Context } from "effect-app"
4
+
5
+ export class DevMode extends Context.Reference<DevMode>()("DevMode", { defaultValue: () => false }) {}
6
+
7
+ export class RequestCacheMiddleware
8
+ extends RpcMiddleware.Tag<RequestCacheMiddleware>()("RequestCacheMiddleware", { wrap: true })
9
+ {}
10
+
11
+ export class ConfigureInterruptibilityMiddleware
12
+ extends RpcMiddleware.Tag<ConfigureInterruptibilityMiddleware>()("ConfigureInterruptibilityMiddleware", {
13
+ wrap: true
14
+ })
15
+ {}
16
+
17
+ export class LoggerMiddleware extends RpcMiddleware.Tag<LoggerMiddleware>()("LoggerMiddleware", { wrap: true }) {}
18
+
19
+ export const DefaultGenericMiddlewares = [
20
+ RequestCacheMiddleware,
21
+ ConfigureInterruptibilityMiddleware,
22
+ LoggerMiddleware
23
+ ] as const
@@ -1,14 +1,15 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Cause, Context, Duration, Effect, Layer, ParseResult, Request, Schedule, type Schema } from "effect-app"
1
+ import { Cause, Duration, Effect, Layer, ParseResult, Request, Schedule, type Schema } from "effect"
3
2
  import { pretty } from "effect-app/utils"
4
3
  import { logError, reportError } from "../../../errorReporter.js"
5
4
  import { InfraLogger } from "../../../logger.js"
6
5
  import { determineMethod, isCommand } from "../utils.js"
7
- import { Tag } from "./RpcMiddleware.js"
6
+ import * as MiddlewareNative from "./middleware-native.js"
8
7
 
9
8
  const logRequestError = logError("Request")
10
9
  const reportRequestError = reportError("Request")
11
10
 
11
+ export { DevMode } from "./middleware-native.js"
12
+
12
13
  export const RequestCacheLayers = Layer.mergeAll(
13
14
  Layer.setRequestCache(
14
15
  Request.makeCache({ capacity: 500, timeToLive: Duration.hours(8) })
@@ -17,46 +18,43 @@ export const RequestCacheLayers = Layer.mergeAll(
17
18
  Layer.setRequestBatching(true)
18
19
  )
19
20
 
20
- export class DevMode extends Context.Reference<DevMode>()("DevMode", { defaultValue: () => false }) {}
21
-
22
- export class RequestCacheMiddleware extends Tag<RequestCacheMiddleware>()("RequestCacheMiddleware", { wrap: true })({
23
- effect: Effect.succeed(({ next }) => next.pipe(Effect.provide(RequestCacheLayers)))
24
- }) {
25
- }
21
+ export const RequestCacheMiddlewareLive = Layer.succeed(
22
+ MiddlewareNative.RequestCacheMiddleware,
23
+ ({ next }) => next.pipe(Effect.provide(RequestCacheLayers))
24
+ )
26
25
 
27
26
  // retry just once on optimistic concurrency exceptions
28
27
  const optimisticConcurrencySchedule = Schedule.once.pipe(
29
28
  Schedule.intersect(Schedule.recurWhile<any>((a) => a?._tag === "OptimisticConcurrencyException"))
30
29
  )
31
30
 
32
- export class ConfigureInterruptibilityMiddleware
33
- extends Tag<ConfigureInterruptibilityMiddleware>()("ConfigureInterruptibilityMiddleware", { wrap: true })({
34
- effect: Effect.gen(function*() {
35
- const cache = new Map()
36
- const getCached = (key: string, schema: Schema.Schema.Any) => {
37
- const existing = cache.get(key)
38
- if (existing) return existing
39
- const n = determineMethod(key, schema)
40
- cache.set(key, n)
41
- return n
42
- }
43
- return ({ next, rpc }) => {
44
- const method = getCached(rpc._tag, rpc.payloadSchema)
31
+ export const ConfigureInterruptibilityMiddlewareLive = Layer.effect(
32
+ MiddlewareNative.ConfigureInterruptibilityMiddleware,
33
+ Effect.gen(function*() {
34
+ const cache = new Map()
35
+ const getCached = (key: string, schema: Schema.Schema.Any) => {
36
+ const existing = cache.get(key)
37
+ if (existing) return existing
38
+ const n = determineMethod(key, schema)
39
+ cache.set(key, n)
40
+ return n
41
+ }
42
+ return ({ next, rpc }) => {
43
+ const method = getCached(rpc._tag, rpc.payloadSchema)
45
44
 
46
- next = isCommand(method)
47
- ? Effect.retry(Effect.uninterruptible(next), optimisticConcurrencySchedule)
48
- : Effect.interruptible(next)
45
+ next = isCommand(method)
46
+ ? Effect.retry(Effect.uninterruptible(next), optimisticConcurrencySchedule)
47
+ : Effect.interruptible(next)
49
48
 
50
- return next
51
- }
52
- })
49
+ return next
50
+ }
53
51
  })
54
- {
55
- }
52
+ )
56
53
 
57
- export class LoggerMiddleware extends Tag<LoggerMiddleware>()("LoggerMiddleware", { wrap: true })({
58
- effect: Effect.gen(function*() {
59
- const devMode = yield* DevMode
54
+ export const LoggerMiddlewareLive = Layer.effect(
55
+ MiddlewareNative.LoggerMiddleware,
56
+ Effect.gen(function*() {
57
+ const devMode = yield* MiddlewareNative.DevMode
60
58
  return ({ headers, next, payload, rpc }) =>
61
59
  Effect
62
60
  .annotateCurrentSpan({
@@ -112,11 +110,10 @@ export class LoggerMiddleware extends Tag<LoggerMiddleware>()("LoggerMiddleware"
112
110
  devMode ? (_) => _ : Effect.catchAllDefect(() => Effect.die("Internal Server Error"))
113
111
  )
114
112
  })
115
- }) {
116
- }
113
+ )
117
114
 
118
- export const DefaultGenericMiddlewares = [
119
- RequestCacheMiddleware,
120
- ConfigureInterruptibilityMiddleware,
121
- LoggerMiddleware
122
- ] as const
115
+ export const DefaultGenericMiddlewaresLive = Layer.mergeAll(
116
+ RequestCacheMiddlewareLive,
117
+ ConfigureInterruptibilityMiddlewareLive,
118
+ LoggerMiddlewareLive
119
+ )
@@ -4,6 +4,7 @@ export * from "./middleware/middleware-api.js"
4
4
  export * from "./middleware/middleware.js"
5
5
  export * from "./middleware/RouterMiddleware.js"
6
6
  export * from "./middleware/RpcMiddleware.js"
7
+ export * from "./middleware/RpcMiddlewareX.js"
7
8
  // codegen:end
8
9
 
9
10
  export * as Middleware from "./middleware.js"
@@ -5,12 +5,13 @@ import { type RpcSerialization } from "@effect/rpc"
5
5
  import { expect, expectTypeOf, it } from "@effect/vitest"
6
6
  import { Context, Effect, Layer, S, Scope } from "effect-app"
7
7
  import { InvalidStateError, makeRpcClient, NotLoggedInError, UnauthorizedError } from "effect-app/client"
8
- import { DefaultGenericMiddlewares, makeMiddleware, Middleware, Tag } from "../src/api/routing/middleware.js"
8
+ import { DefaultGenericMiddlewaresLive, makeMiddleware, Middleware, TagService } from "../src/api/routing/middleware.js"
9
+ import { DefaultGenericMiddlewares } from "../src/api/routing/middleware/middleware-native.js"
9
10
  import { sort } from "../src/api/routing/tsort.js"
10
- import { AllowAnonymous, CustomError1, RequestContextMap, RequireRoles, Some, SomeElse, SomeService, Test } from "./fixtures.js"
11
+ import { AllowAnonymous, AllowAnonymousLive, CustomError1, RequestContextMap, RequireRoles, RequireRolesLive, Some, SomeElse, SomeService, Test, TestLive } from "./fixtures.js"
11
12
 
12
13
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
13
- class MyContextProvider extends Middleware.Tag<MyContextProvider>()("MyContextProvider", {
14
+ class MyContextProvider extends Middleware.TagService<MyContextProvider>()("MyContextProvider", {
14
15
  provides: [Some],
15
16
  requires: [SomeElse]
16
17
  })({
@@ -39,7 +40,7 @@ class MyContextProvider extends Middleware.Tag<MyContextProvider>()("MyContextPr
39
40
  }) {}
40
41
 
41
42
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
42
- class MyContextProvider3 extends Middleware.Tag<MyContextProvider3>()("MyContextProvider3", {
43
+ class MyContextProvider3 extends Middleware.TagService<MyContextProvider3>()("MyContextProvider3", {
43
44
  provides: [Some],
44
45
  requires: [SomeElse]
45
46
  })({
@@ -71,23 +72,25 @@ class MyContextProvider3 extends Middleware.Tag<MyContextProvider3>()("MyContext
71
72
  expectTypeOf(MyContextProvider3.Default).toEqualTypeOf<Layer.Layer<MyContextProvider3, CustomError1, never>>()
72
73
 
73
74
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
74
- class MyContextProvider2 extends Middleware.Tag<MyContextProvider2>()("MyContextProvider2", { provides: SomeElse })({
75
- effect: Effect.gen(function*() {
76
- if (Math.random() > 0.5) return yield* new CustomError1()
75
+ class MyContextProvider2
76
+ extends Middleware.TagService<MyContextProvider2>()("MyContextProvider2", { provides: SomeElse })({
77
+ effect: Effect.gen(function*() {
78
+ if (Math.random() > 0.5) return yield* new CustomError1()
77
79
 
78
- return Effect.fnUntraced(function*() {
79
- // we test without dependencies, so that we end up with an R of never.
80
+ return Effect.fnUntraced(function*() {
81
+ // we test without dependencies, so that we end up with an R of never.
80
82
 
81
- return new SomeElse({ b: 2 })
83
+ return new SomeElse({ b: 2 })
84
+ })
82
85
  })
83
86
  })
84
- }) {}
87
+ {}
85
88
 
86
89
  //
87
90
 
88
91
  const Str = Context.GenericTag<"str", "str">("str")
89
92
 
90
- export class BogusMiddleware extends Tag<BogusMiddleware>()("BogusMiddleware", {
93
+ export class BogusMiddleware extends TagService<BogusMiddleware>()("BogusMiddleware", {
91
94
  wrap: true
92
95
  })({
93
96
  effect: Effect.gen(function*() {
@@ -108,6 +111,12 @@ const genericMiddlewares = [
108
111
  MyContextProvider2
109
112
  ] as const
110
113
 
114
+ const genericMiddlewaresLive = [
115
+ DefaultGenericMiddlewaresLive,
116
+ BogusMiddleware.Default,
117
+ MyContextProvider2.Default
118
+ ] as const
119
+
111
120
  const middleware = makeMiddleware<RequestContextMap>(RequestContextMap)
112
121
  .middleware(
113
122
  RequireRoles,
@@ -237,9 +246,25 @@ export class SomethingService2 extends Effect.Service<SomethingService2>()("Some
237
246
  })
238
247
  }) {}
239
248
 
240
- export const { Router, matchAll } = makeRouter(middleware, true)
249
+ const MiddlewaresLive = [
250
+ RequireRolesLive,
251
+ TestLive,
252
+ AllowAnonymousLive,
253
+ MyContextProvider.Default,
254
+ ...genericMiddlewaresLive
255
+ ] as const
241
256
 
242
- export const r2 = makeRouter(middleware2, true)
257
+ export const { Router, matchAll } = makeRouter(
258
+ Object.assign(middleware, {
259
+ Default: middleware.layer.pipe(Layer.provide(MiddlewaresLive))
260
+ }),
261
+ true
262
+ )
263
+
264
+ export const r2 = makeRouter(
265
+ Object.assign(middleware, { Default: middleware2.layer.pipe(Layer.provide(MiddlewaresLive)) }),
266
+ true
267
+ )
243
268
 
244
269
  const router = Router(Something)({
245
270
  dependencies: [
@@ -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,EAA0B,MAAM,+BAA+B,CAAA;AACzG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAW,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAE7D,OAAO,EAA6C,UAAU,EAAO,MAAM,kCAAkC,CAAA;AAE7G,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;;;;;;AAgEhI,cAAM,kBAAmB,SAAQ,uBAU/B;CAAG;;;;;;AAML,qBAAa,eAAgB,SAAQ,oBAYnC;CACD;AA0DD,eAAO,MAAM,WAAW;;;;;;YAIM,CAAA;AAE9B,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI/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;;;;;yHAAiC,CAAA;AAEhE,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgC,CAAA"}
1
+ {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAA0B,MAAM,+BAA+B,CAAA;AACzG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAW,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAE7D,OAAO,EAAiD,UAAU,EAAc,MAAM,kCAAkC,CAAA;AAGxH,OAAO,EAAE,cAAc,EAAsB,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAoB,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAY,MAAM,eAAe,CAAA;;;;;;AAgEhL,cAAM,kBACJ,SAAQ,uBAUN;CACF;;;;;;AAMF,qBAAa,eAAgB,SAAQ,oBAYnC;CACD;AAgED,eAAO,MAAM,WAAW;;;;;;YAIM,CAAA;AAE9B,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI/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;AAUL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;;;;yHAK9B,CAAA;AAED,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGd,CAAA"}
@@ -1,6 +1,5 @@
1
- import { Context, Effect, S, Scope } from "effect-app";
1
+ import { Context, Effect, Layer, S, Scope } from "effect-app";
2
2
  import { NotLoggedInError, RPCContextMap, UnauthorizedError } from "effect-app/client";
3
- import { Middleware } from "../src/api/routing.js";
4
3
  declare const UserProfile_base: S.EnhancedClass<UserProfile, {
5
4
  id: typeof S.String;
6
5
  roles: S.Array$<typeof S.String> & {
@@ -23,12 +22,12 @@ declare const Some_base: (abstract new (service: {
23
22
  a: number;
24
23
  }>) & {
25
24
  toLayer: {
26
- (): import("effect/Layer").Layer<Some, never, never>;
27
- <E_1, R_1>(eff: Effect.Effect<Omit<Some, keyof Context.TagClassShape<any, any>>, E_1, R_1>): import("effect/Layer").Layer<Some, E_1, R_1>;
25
+ (): Layer.Layer<Some, never, never>;
26
+ <E_1, R_1>(eff: Effect.Effect<Omit<Some, keyof Context.TagClassShape<any, any>>, E_1, R_1>): Layer.Layer<Some, E_1, R_1>;
28
27
  };
29
28
  toLayerScoped: {
30
- (): import("effect/Layer").Layer<Some, never, never>;
31
- <E_1, R_2>(eff: Effect.Effect<Omit<Some, keyof Context.TagClassShape<any, any>>, E_1, R_2>): import("effect/Layer").Layer<Some, E_1, Exclude<R_2, Scope.Scope>>;
29
+ (): Layer.Layer<Some, never, never>;
30
+ <E_1, R_2>(eff: Effect.Effect<Omit<Some, keyof Context.TagClassShape<any, any>>, E_1, R_2>): Layer.Layer<Some, E_1, Exclude<R_2, Scope.Scope>>;
32
31
  };
33
32
  of: (service: Context.TagClassShape<any, any>) => Some;
34
33
  make: Effect.Effect<Some, never, never>;
@@ -37,7 +36,7 @@ declare const Some_base: (abstract new (service: {
37
36
  } & {
38
37
  use: <X>(body: (_: {
39
38
  a: number;
40
- }) => X) => X extends Effect.Effect<infer A, infer E_1, infer R_3> ? Effect.Effect<A, E_1, Some | R_3> : Effect.Effect<X, never, Some>;
39
+ }) => X) => X extends Effect.Effect<infer A_1, infer E_2, infer R_4> ? Effect.Effect<A_1, E_2, Some | R_4> : Effect.Effect<X, never, Some>;
41
40
  };
42
41
  export declare class Some extends Some_base {
43
42
  }
@@ -49,12 +48,12 @@ declare const SomeElse_base: (abstract new (service: {
49
48
  b: number;
50
49
  }>) & {
51
50
  toLayer: {
52
- (): import("effect/Layer").Layer<SomeElse, never, never>;
53
- <E_1, R_1>(eff: Effect.Effect<Omit<SomeElse, keyof Context.TagClassShape<any, any>>, E_1, R_1>): import("effect/Layer").Layer<SomeElse, E_1, R_1>;
51
+ (): Layer.Layer<SomeElse, never, never>;
52
+ <E_1, R_1>(eff: Effect.Effect<Omit<SomeElse, keyof Context.TagClassShape<any, any>>, E_1, R_1>): Layer.Layer<SomeElse, E_1, R_1>;
54
53
  };
55
54
  toLayerScoped: {
56
- (): import("effect/Layer").Layer<SomeElse, never, never>;
57
- <E_1, R_2>(eff: Effect.Effect<Omit<SomeElse, keyof Context.TagClassShape<any, any>>, E_1, R_2>): import("effect/Layer").Layer<SomeElse, E_1, Exclude<R_2, Scope.Scope>>;
55
+ (): Layer.Layer<SomeElse, never, never>;
56
+ <E_1, R_2>(eff: Effect.Effect<Omit<SomeElse, keyof Context.TagClassShape<any, any>>, E_1, R_2>): Layer.Layer<SomeElse, E_1, Exclude<R_2, Scope.Scope>>;
58
57
  };
59
58
  of: (service: Context.TagClassShape<any, any>) => SomeElse;
60
59
  make: Effect.Effect<SomeElse, never, never>;
@@ -63,7 +62,7 @@ declare const SomeElse_base: (abstract new (service: {
63
62
  } & {
64
63
  use: <X>(body: (_: {
65
64
  b: number;
66
- }) => X) => X extends Effect.Effect<infer A, infer E_1, infer R_3> ? Effect.Effect<A, E_1, R_3 | SomeElse> : Effect.Effect<X, never, SomeElse>;
65
+ }) => X) => X extends Effect.Effect<infer A_1, infer E_2, infer R_4> ? Effect.Effect<A_1, E_2, R_4 | SomeElse> : Effect.Effect<X, never, SomeElse>;
67
66
  };
68
67
  export declare class SomeElse extends SomeElse_base {
69
68
  }
@@ -75,12 +74,12 @@ declare const SomeService_base: (abstract new (service: {
75
74
  a: number;
76
75
  }>) & {
77
76
  toLayer: {
78
- (): import("effect/Layer").Layer<SomeService, never, never>;
79
- <E_1, R_1>(eff: Effect.Effect<Omit<SomeService, keyof Context.TagClassShape<any, any>>, E_1, R_1>): import("effect/Layer").Layer<SomeService, E_1, R_1>;
77
+ (): Layer.Layer<SomeService, never, never>;
78
+ <E_1, R_1>(eff: Effect.Effect<Omit<SomeService, keyof Context.TagClassShape<any, any>>, E_1, R_1>): Layer.Layer<SomeService, E_1, R_1>;
80
79
  };
81
80
  toLayerScoped: {
82
- (): import("effect/Layer").Layer<SomeService, never, never>;
83
- <E_1, R_2>(eff: Effect.Effect<Omit<SomeService, keyof Context.TagClassShape<any, any>>, E_1, R_2>): import("effect/Layer").Layer<SomeService, E_1, Exclude<R_2, Scope.Scope>>;
81
+ (): Layer.Layer<SomeService, never, never>;
82
+ <E_1, R_2>(eff: Effect.Effect<Omit<SomeService, keyof Context.TagClassShape<any, any>>, E_1, R_2>): Layer.Layer<SomeService, E_1, Exclude<R_2, Scope.Scope>>;
84
83
  };
85
84
  of: (service: Context.TagClassShape<any, any>) => SomeService;
86
85
  make: Effect.Effect<SomeService, never, never>;
@@ -89,10 +88,30 @@ declare const SomeService_base: (abstract new (service: {
89
88
  } & {
90
89
  use: <X>(body: (_: {
91
90
  a: number;
92
- }) => X) => X extends Effect.Effect<infer A, infer E_1, infer R_3> ? Effect.Effect<A, E_1, R_3 | SomeService> : Effect.Effect<X, never, SomeService>;
91
+ }) => X) => X extends Effect.Effect<infer A_1, infer E_2, infer R_4> ? Effect.Effect<A_1, E_2, R_4 | SomeService> : Effect.Effect<X, never, SomeService>;
93
92
  };
94
93
  export declare class SomeService extends SomeService_base {
95
94
  }
95
+ declare const SomeMiddleware_base: import("../src/api/routing.js").TagClass<SomeMiddleware, "SomeMiddleware", {
96
+ readonly provides: typeof Some;
97
+ }>;
98
+ export declare class SomeMiddleware extends SomeMiddleware_base {
99
+ }
100
+ export declare const SomeMiddlewareLive: Layer.Layer<SomeMiddleware, never, never>;
101
+ declare const SomeMiddlewareWrap_base: import("../src/api/routing.js").TagClass<SomeMiddlewareWrap, "SomeMiddlewareWrap", {
102
+ readonly provides: typeof Some;
103
+ readonly wrap: true;
104
+ }>;
105
+ export declare class SomeMiddlewareWrap extends SomeMiddlewareWrap_base {
106
+ }
107
+ export declare const SomeMiddlewareWrapLive: Layer.Layer<SomeMiddlewareWrap, never, never>;
108
+ declare const SomeElseMiddleware_base: import("../src/api/routing.js").TagClass<SomeElseMiddleware, "SomeElseMiddleware", {
109
+ readonly provides: typeof SomeElse;
110
+ readonly wrap: true;
111
+ }>;
112
+ export declare class SomeElseMiddleware extends SomeElseMiddleware_base {
113
+ }
114
+ export declare const SomeElseMiddlewareLive: Layer.Layer<SomeElseMiddleware, never, never>;
96
115
  export declare const RequestContextMap: {
97
116
  readonly allowAnonymous: RPCContextMap.Inverted<[typeof UserProfile], typeof NotLoggedInError>;
98
117
  readonly requireRoles: RPCContextMap.Custom<never, typeof UnauthorizedError, string[]>;
@@ -101,31 +120,28 @@ export declare const RequestContextMap: {
101
120
  type _RequestContextMap = typeof RequestContextMap;
102
121
  export interface RequestContextMap extends _RequestContextMap {
103
122
  }
104
- declare const AllowAnonymous_base: Middleware.TagClass<AllowAnonymous, "AllowAnonymous", {
105
- readonly dynamic: Middleware.RpcDynamic<"allowAnonymous", RPCContextMap.Inverted<[typeof UserProfile], typeof NotLoggedInError>>;
123
+ declare const AllowAnonymous_base: import("../src/api/routing.js").TagClass<AllowAnonymous, "AllowAnonymous", {
124
+ readonly dynamic: import("../src/api/routing.js").RpcDynamic<"allowAnonymous", RPCContextMap.Inverted<[typeof UserProfile], typeof NotLoggedInError>>;
106
125
  readonly requires: typeof SomeElse;
107
- }> & {
108
- Default: import("effect/Layer").Layer<AllowAnonymous, never, never>;
109
- };
126
+ }>;
110
127
  export declare class AllowAnonymous extends AllowAnonymous_base {
111
128
  }
112
- declare const RequireRoles_base: Middleware.TagClass<RequireRoles, "RequireRoles", {
113
- readonly dynamic: Middleware.RpcDynamic<"requireRoles", RPCContextMap.Custom<never, typeof UnauthorizedError, string[]>>;
129
+ export declare const AllowAnonymousLive: Layer.Layer<AllowAnonymous, never, never>;
130
+ declare const RequireRoles_base: import("../src/api/routing.js").TagClass<RequireRoles, "RequireRoles", {
131
+ readonly dynamic: import("../src/api/routing.js").RpcDynamic<"requireRoles", RPCContextMap.Custom<never, typeof UnauthorizedError, string[]>>;
114
132
  readonly wrap: true;
115
133
  readonly dependsOn: readonly [typeof AllowAnonymous];
116
- }> & {
117
- Default: import("effect/Layer").Layer<RequireRoles, never, SomeService>;
118
- };
134
+ }>;
119
135
  export declare class RequireRoles extends RequireRoles_base {
120
136
  }
121
- declare const Test_base: Middleware.TagClass<Test, "Test", {
137
+ export declare const RequireRolesLive: Layer.Layer<RequireRoles, never, SomeService>;
138
+ declare const Test_base: import("../src/api/routing.js").TagClass<Test, "Test", {
122
139
  readonly wrap: true;
123
- readonly dynamic: Middleware.RpcDynamic<"test", RPCContextMap.RPCContextMap<never, typeof S.Never>>;
124
- }> & {
125
- Default: import("effect/Layer").Layer<Test, never, never>;
126
- };
140
+ readonly dynamic: import("../src/api/routing.js").RpcDynamic<"test", RPCContextMap.RPCContextMap<never, typeof S.Never>>;
141
+ }>;
127
142
  export declare class Test extends Test_base {
128
143
  }
144
+ export declare const TestLive: Layer.Layer<Test, never, never>;
129
145
  declare const CustomError1_base: S.TaggedErrorClass<NotLoggedInError, "CustomError1", {
130
146
  readonly _tag: S.tag<"CustomError1">;
131
147
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAU,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEtF,OAAO,EAAyB,UAAU,EAAE,MAAM,uBAAuB,CAAA;;;;;;;;;;;;;AAEzE,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AAEpG,qBAAa,WAAY,SAAQ,gBAAgE;CAAG;AASpG,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAA;AAEV,KAAK,kBAAkB,GAAG,OAAO,iBAAiB,CAAA;AAClD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;CAAG;;;;;;;AAEhE,qBAAa,cAAe,SAAQ,mBA4BlC;CACD;;;;;;;;AAID,qBAAa,YAAa,SAAQ,iBA6BhC;CACD;;;;;;;AAGD,qBAAa,IAAK,SAAQ,SASxB;CAAG;;;;AAEL,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;;;;AACxF,qBAAa,YAAa,SAAQ,iBAAmD;CAAG"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,CAAC,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;;;;;;;;;;;;;AAItF,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AACxF,qBAAa,QAAS,SAAQ,aAAmE;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AAEpG,qBAAa,WAAY,SAAQ,gBAAgE;CAAG;;;;AAEpG,qBAAa,cAAe,SAAQ,mBAElC;CAAG;AAEL,eAAO,MAAM,kBAAkB,2CAS9B,CAAA;;;;;AAGD,qBAAa,kBAAmB,SAAQ,uBAGtC;CACD;AAED,eAAO,MAAM,sBAAsB,+CAMlC,CAAA;;;;;AAED,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG;AAEL,eAAO,MAAM,sBAAsB,+CAUlC,CAAA;AASD,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAA;AAEV,KAAK,kBAAkB,GAAG,OAAO,iBAAiB,CAAA;AAClD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;CAAG;;;;;AAEhE,qBAAa,cAAe,SAAQ,mBAGlC;CAAG;AAEL,eAAO,MAAM,kBAAkB,2CA0B9B,CAAA;;;;;;AAID,qBAAa,YAAa,SAAQ,iBAOhC;CAAG;AAEL,eAAO,MAAM,gBAAgB,+CAuB5B,CAAA;;;;;AAGD,qBAAa,IAAK,SAAQ,SAGxB;CAAG;AAEL,eAAO,MAAM,QAAQ,iCAOpB,CAAA;;;;AAED,qBAAa,YAAa,SAAQ,iBAAmD;CAAG;;;;AACxF,qBAAa,YAAa,SAAQ,iBAAmD;CAAG"}
@@ -1,7 +1,7 @@
1
- import { Context, Effect, Option, S, Scope } from "effect-app";
1
+ import { Context, Effect, Layer, Option, S, Scope } from "effect-app";
2
2
  import { NotLoggedInError, RPCContextMap, UnauthorizedError } from "effect-app/client";
3
3
  import { TaggedError } from "effect-app/Schema";
4
- import { contextMap, getConfig, Middleware } from "../src/api/routing.js";
4
+ import { contextMap, getConfig, Tag } from "../src/api/routing.js";
5
5
  export class UserProfile extends Context.assignTag("UserProfile")(S.Class("UserProfile")({
6
6
  id: S.String,
7
7
  roles: S.Array(S.String)
@@ -14,6 +14,38 @@ export class SomeElse extends Context.TagMakeId("SomeElse", Effect.succeed({ b:
14
14
  const MakeSomeService = Effect.succeed({ a: 1 });
15
15
  export class SomeService extends Context.TagMakeId("SomeService", MakeSomeService)() {
16
16
  }
17
+ export class SomeMiddleware extends Tag()("SomeMiddleware", {
18
+ provides: Some
19
+ }) {
20
+ }
21
+ export const SomeMiddlewareLive = Layer.effect(SomeMiddleware, Effect.gen(function* () {
22
+ // yield* Effect.context<"test-dep">()
23
+ return () => Effect.gen(function* () {
24
+ return new Some({ a: 1 });
25
+ });
26
+ }));
27
+ // functionally equivalent to the one above
28
+ export class SomeMiddlewareWrap extends Tag()("SomeMiddlewareWrap", {
29
+ provides: Some,
30
+ wrap: true
31
+ }) {
32
+ }
33
+ export const SomeMiddlewareWrapLive = Layer.effect(SomeMiddlewareWrap, Effect.gen(function* () {
34
+ // yield* Effect.context<"test-dep">()
35
+ return ({ next }) => next.pipe(Effect.provideService(Some, new Some({ a: 1 })));
36
+ }));
37
+ export class SomeElseMiddleware extends Tag()("SomeElseMiddleware", {
38
+ provides: SomeElse,
39
+ wrap: true
40
+ }) {
41
+ }
42
+ export const SomeElseMiddlewareLive = Layer.effect(SomeElseMiddleware, Effect.gen(function* () {
43
+ // yield* Effect.context<"test-dep">()
44
+ return ({ next }) => Effect.gen(function* () {
45
+ // yield* Effect.context<"test-dep2">()
46
+ return yield* next.pipe(Effect.provideService(SomeElse, new SomeElse({ b: 2 })));
47
+ });
48
+ }));
17
49
  const requestConfig = getConfig();
18
50
  // TODO: null as never sucks
19
51
  // why [UserProfile] is needed? AllowAnonymous triggers an error if just UserProfile without []
@@ -25,71 +57,68 @@ export const RequestContextMap = {
25
57
  requireRoles: RPCContextMap.makeCustom(null, UnauthorizedError, Array()),
26
58
  test: RPCContextMap.make(null, S.Never)
27
59
  };
28
- export class AllowAnonymous extends Middleware.Tag()("AllowAnonymous", {
60
+ export class AllowAnonymous extends Tag()("AllowAnonymous", {
29
61
  dynamic: contextMap(RequestContextMap, "allowAnonymous"),
30
62
  requires: SomeElse
31
- })({
32
- effect: Effect.gen(function* () {
33
- return Effect.fnUntraced(function* ({ headers, rpc }) {
34
- yield* SomeElse;
35
- yield* Scope.Scope; // provided by HttpLayerRouter.Provided
36
- const isLoggedIn = !!headers["x-user"];
37
- if (!isLoggedIn) {
38
- if (!requestConfig(rpc).allowAnonymous) {
39
- return yield* new NotLoggedInError({ message: "Not logged in" });
40
- }
41
- return Option.none();
42
- }
43
- return Option.some(Context.make(UserProfile, new UserProfile({
44
- id: "whatever",
45
- roles: ["user", ...headers["x-is-manager"] === "true" ? ["manager"] : []]
46
- })));
47
- });
48
- })
49
63
  }) {
50
64
  }
65
+ export const AllowAnonymousLive = Layer.effect(AllowAnonymous, Effect.gen(function* () {
66
+ return Effect.fnUntraced(function* ({ headers, rpc }) {
67
+ yield* SomeElse;
68
+ yield* Scope.Scope; // provided by HttpLayerRouter.Provided
69
+ const isLoggedIn = !!headers["x-user"];
70
+ if (!isLoggedIn) {
71
+ if (!requestConfig(rpc).allowAnonymous) {
72
+ return yield* new NotLoggedInError({ message: "Not logged in" });
73
+ }
74
+ return Option.none();
75
+ }
76
+ return Option.some(Context.make(UserProfile, new UserProfile({
77
+ id: "whatever",
78
+ roles: ["user", ...headers["x-is-manager"] === "true" ? ["manager"] : []]
79
+ })));
80
+ });
81
+ }));
51
82
  // TODO: don't expect service when it's wrap
52
83
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
53
- export class RequireRoles extends Middleware.Tag()("RequireRoles", {
84
+ export class RequireRoles extends Tag()("RequireRoles", {
54
85
  dynamic: contextMap(RequestContextMap, "requireRoles"),
55
86
  wrap: true,
56
87
  // wrap: true,
57
88
  // had to move this in here, because once you put it manually as a readonly static property on the class,
58
89
  // there's a weird issue where the fluent api stops behaving properly after adding this middleware via `addDynamicMiddleware`
59
90
  dependsOn: [AllowAnonymous]
60
- })({
61
- effect: Effect.gen(function* () {
62
- yield* SomeService;
63
- return Effect.fnUntraced(function* ({ next, rpc }) {
64
- // we don't know if the service will be provided or not, so we use option..
65
- const userProfile = yield* Effect.serviceOption(UserProfile);
66
- const { requireRoles } = requestConfig(rpc);
67
- console.dir({
68
- userProfile,
69
- requireRoles
70
- }, { depth: 5 });
71
- if (requireRoles && !userProfile.value?.roles?.some((role) => requireRoles.includes(role))) {
72
- return yield* new UnauthorizedError({ message: "don't have the right roles" });
73
- }
74
- return yield* next;
75
- });
76
- })
77
91
  }) {
78
92
  }
93
+ export const RequireRolesLive = Layer.effect(RequireRoles, Effect.gen(function* () {
94
+ yield* SomeService;
95
+ return Effect.fnUntraced(function* ({ next, rpc }) {
96
+ // we don't know if the service will be provided or not, so we use option..
97
+ const userProfile = yield* Effect.serviceOption(UserProfile);
98
+ const { requireRoles } = requestConfig(rpc);
99
+ console.dir({
100
+ userProfile,
101
+ requireRoles
102
+ }, { depth: 5 });
103
+ if (requireRoles && !userProfile.value?.roles?.some((role) => requireRoles.includes(role))) {
104
+ return yield* new UnauthorizedError({ message: "don't have the right roles" });
105
+ }
106
+ return yield* next;
107
+ });
108
+ }));
79
109
  // TODO: don't expect service when it's wrap
80
- export class Test extends Middleware.Tag()("Test", {
110
+ export class Test extends Tag()("Test", {
81
111
  wrap: true,
82
112
  dynamic: contextMap(RequestContextMap, "test")
83
- })({
84
- effect: Effect.gen(function* () {
85
- return Effect.fn(function* ({ next }) {
86
- return yield* next;
87
- });
88
- })
89
113
  }) {
90
114
  }
115
+ export const TestLive = Layer.effect(Test, Effect.gen(function* () {
116
+ return Effect.fn(function* ({ next }) {
117
+ return yield* next;
118
+ });
119
+ }));
91
120
  export class CustomError1 extends TaggedError()("CustomError1", {}) {
92
121
  }
93
122
  export class CustomError2 extends TaggedError()("CustomError1", {}) {
94
123
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRXpFLE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBMkIsYUFBYSxDQUFDLENBQ3pGLENBQUMsQ0FBQyxLQUFLLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDLENBQ0g7Q0FDQTtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQVE7Q0FBRztBQUN4RixNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFZO0NBQUc7QUFDcEcsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sT0FBTyxXQUFZLFNB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
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRSxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQTJCLGFBQWEsQ0FBQyxDQUN6RixDQUFDLENBQUMsS0FBSyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0lBQ2xDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDekIsQ0FBQyxDQUNIO0NBQ0E7QUFFRCxNQUFNLE9BQU8sSUFBSyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFRO0NBQUc7QUFDeEYsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBWTtDQUFHO0FBQ3BHLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNoRCxNQUFNLE9B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
@@ -1 +1 @@
1
- {"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,EAAK,MAAM,YAAY,CAAA;AAG9D,OAAO,EAAkB,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAmD,IAAI,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAA;;;;;;AAElH,qBAAa,cAAe,SAAQ,mBAUlC;CACD;;;;;;;AAGD,qBAAa,kBAAmB,SAAQ,uBAQtC;CACD;;;;;;;AAED,qBAAa,kBAAmB,SAAQ,uBAYtC;CACD;;;;;;;AAED,qBAAa,sBAAuB,SAAQ,2BAa1C;CACD"}
1
+ {"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAkB,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,cAAc,EAAyC,YAAY,EAAoB,IAAI,EAAE,kBAAkB,EAA8D,kBAAkB,EAAe,IAAI,EAAY,MAAM,eAAe,CAAA;;;;;;;AAE5P,qBAAa,sBAAuB,SAAQ,2BAa1C;CACD;AAkBD,eAAO,MAAM,eAAe;;;;;;;;;;SAKK,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkD,MAAM,aAAa,CAAA;AAEvF,OAAO,EAA2B,KAAK,EAAE,MAAM,QAAQ,CAAA;AAOvD,OAAO,EAAoN,WAAW,EAAE,MAAM,eAAe,CAAA;AA8C7P,eAAO,MAAM,OAAO,uFAWO,CAAA;AAiB3B,eAAO,MAAM,YAAY,gLAItB,CAAA;AAEH,eAAO,MAAM,YAAY,+FAgByB,CAAA"}