@effect-app/infra 2.72.0 → 2.73.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.
@@ -6,10 +6,9 @@ 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, Context, Duration, Effect, Layer, ParseResult, Predicate, Request, S, Schedule, Schema } from "effect-app";
9
+ import { Array, Cause, Duration, Effect, Layer, ParseResult, Predicate, Request, S, Schedule, Schema } from "effect-app";
10
10
  import { HttpRouter } from "effect-app/http";
11
11
  import { pretty, typedKeysOf, typedValuesOf } from "effect-app/utils";
12
- import { makeMiddlewareLayer, makeRpc } from "./routing/DynamicMiddleware.js";
13
12
  export * from "./routing/DynamicMiddleware.js";
14
13
  const logRequestError = logError("Request");
15
14
  const reportRequestError = reportError("Request");
@@ -27,7 +26,6 @@ export const RouterSymbol = Symbol();
27
26
  export class Router extends HttpRouter.Tag("@effect-app/Rpc")() {
28
27
  }
29
28
  export const makeRouter = (middleware, devMode) => {
30
- const middlewareLayer = makeMiddlewareLayer(middleware);
31
29
  function matchFor(rsc) {
32
30
  const { meta } = rsc;
33
31
  const requestModules = typedKeysOf(rsc).reduce((acc, cur) => {
@@ -106,7 +104,7 @@ export const makeRouter = (middleware, devMode) => {
106
104
  ? Effect.fnUntraced(make)(router3)
107
105
  : make;
108
106
  const controllers = yield* make;
109
- const rpc = yield* makeRpc(middleware);
107
+ const rpc = yield* middleware;
110
108
  // return make.pipe(Effect.map((c) => controllers(c, dependencies)))
111
109
  const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
112
110
  const handler = controllers[cur];
@@ -201,8 +199,7 @@ export const makeRouter = (middleware, devMode) => {
201
199
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
202
200
  const routes = (layer.pipe(Layer.provide([
203
201
  ...dependencies ?? [],
204
- middleware.contextProvider.Default,
205
- middlewareLayer
202
+ middleware.Default
206
203
  ])));
207
204
  // Effect.Effect<HttpRouter.HttpRouter<unknown, HttpRouter.HttpRouter.DefaultServices>, never, UserRouter>
208
205
  return {
@@ -224,16 +221,4 @@ export const makeRouter = (middleware, devMode) => {
224
221
  };
225
222
  };
226
223
  export const RequestCacheLayers = Layer.mergeAll(Layer.setRequestCache(Request.makeCache({ capacity: 500, timeToLive: Duration.hours(8) })), Layer.setRequestCaching(true), Layer.setRequestBatching(true));
227
- export const contextMaker = (...deps) => ({
228
- dependencies: deps.map((_) => _.Default),
229
- effect: Effect.gen(function* () {
230
- const services = yield* Effect.all(deps);
231
- // services are effects which return some Context.Context<...>
232
- return Effect.all(services).pipe(Effect.map((_) => Context.mergeAll(..._)));
233
- })
234
- });
235
- export class EmptyContextMaker extends Effect.Service()("EmptyContextMaker", {
236
- succeed: Effect.succeed(Context.empty())
237
- }) {
238
- }
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFrRCxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVqTCxPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR3JFLE9BQU8sRUFBNkIsbUJBQW1CLEVBQUUsT0FBTyxFQUFtQixNQUFNLGdDQUFnQyxDQUFBO0FBRXpILGNBQWMsZ0NBQWdDLENBQUE7QUFzQjlDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUMzQyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUVqRCx1REFBdUQ7QUFDdkQsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdEQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENB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
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDREQUE0RDtBQUM1RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtELFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhLLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFLckUsY0FBYyxnQ0FBZ0MsQ0FBQTtBQXNCOUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRWpELHVEQUF1RDtBQUN2RCxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN0RCxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssZ0NBQWdDLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "2.72.0",
3
+ "version": "2.73.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,14 +1,16 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-return */
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
- import { Context, Effect, Layer, type NonEmptyArray, type Request, type S, type Scope } from "effect-app"
4
+ import { type Array, Context, Effect, Layer, type NonEmptyArray, type Request, type S } from "effect-app"
5
5
  import type { GetEffectContext, RPCContextMap } from "effect-app/client/req"
6
+ import { type HttpRouter } from "effect-app/http"
6
7
  import type * as EffectRequest from "effect/Request"
7
8
  import { type LayersUtils } from "../routing.js"
8
9
 
9
- export const MiddlewareMaker = Context.GenericTag<"MiddlewareMaker", any>("MiddlewareMaker")
10
-
11
- export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR> = <
10
+ export type MakeRPCHandlerFactory<
11
+ RequestContextMap extends Record<string, RPCContextMap.Any>,
12
+ MiddlewareR
13
+ > = <
12
14
  T extends {
13
15
  config?: Partial<Record<keyof RequestContextMap, any>>
14
16
  },
@@ -37,58 +39,63 @@ export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContex
37
39
  | Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>
38
40
  >
39
41
 
40
- function makeRpcHandler<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() {
41
- return (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => cb
42
- }
43
-
44
- export const makeMiddlewareLayer = <
42
+ export type RPCHandlerFactory<
45
43
  RequestContextMap extends Record<string, RPCContextMap.Any>,
46
44
  MiddlewareR,
47
- MakeMiddlewareR,
48
- MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>,
49
- ContextProviderId,
50
- ContextProviderKey extends string,
51
- ContextProviderA,
52
- MakeContextProviderE,
53
- MakeContextProviderR
45
+ ContextProviderA
46
+ > = <
47
+ T extends {
48
+ config?: Partial<Record<keyof RequestContextMap, any>>
49
+ },
50
+ Req extends S.TaggedRequest.All,
51
+ HandlerR
54
52
  >(
55
- middleware: Middleware<
56
- MiddlewareR,
57
- RequestContextMap,
58
- MakeMiddlewareR,
59
- MiddlewareDependencies,
60
- ContextProviderId,
61
- ContextProviderKey,
62
- ContextProviderA,
63
- MakeContextProviderE,
64
- MakeContextProviderR
53
+ schema: T & S.Schema<Req, any, never>,
54
+ handler: (
55
+ request: Req,
56
+ headers: any
57
+ ) => Effect.Effect<
58
+ EffectRequest.Request.Success<Req>,
59
+ EffectRequest.Request.Error<Req>,
60
+ HandlerR
61
+ >,
62
+ moduleName?: string
63
+ ) => (
64
+ req: Req,
65
+ headers: any
66
+ ) => Effect.Effect<
67
+ Request.Request.Success<Req>,
68
+ Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
69
+ | HttpRouter.HttpRouter.Provided
70
+ // the middleware will remove from HandlerR the dynamic context, but will also add the MiddlewareR
71
+ | Exclude<
72
+ | MiddlewareR
73
+ // & S.Schema<Req, any, never> is useless here but useful when creating the middleware
74
+ | Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
75
+ ContextProviderA
65
76
  >
66
- ) => {
67
- const middlewareLayer = Layer
68
- .effect(
69
- MiddlewareMaker,
70
- middleware.execute!(makeRpcHandler<RequestContextMap, MiddlewareR>())
71
- )
72
- .pipe(middleware.dependencies ? Layer.provide(middleware.dependencies) as any : (_) => _)
77
+ >
73
78
 
74
- return middlewareLayer as Layer.Layer<
75
- "MiddlewareMaker",
76
- never,
77
- Exclude<MiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
78
- >
79
+ function makeRpcHandler<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() {
80
+ return (cb: MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>) => cb
79
81
  }
80
- export type ContextProviderShape<ContextProviderA> = Effect<Context.Context<ContextProviderA>, never, Scope>
81
82
 
82
- export interface Middleware<
83
+ export type ContextProviderShape<ContextProviderA, ContextProviderR extends HttpRouter.HttpRouter.Provided> = Effect<
84
+ Context.Context<ContextProviderA>,
85
+ never,
86
+ ContextProviderR
87
+ >
88
+
89
+ export interface MiddlewareMake<
83
90
  MiddlewareR, // what the middlware requires to execute
84
91
  RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the handler, or raise errors.
92
+ MakeMiddlewareE, // what the middleware construction can fail with
85
93
  MakeMiddlewareR, // what the middlware requires to be constructed
86
94
  MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
87
95
  //
88
96
  // ContextProvider is a service that builds additional context for each request.
89
- ContextProviderId, // it is the context provider itself
90
- ContextProviderKey extends string, // tag for the context provider
91
97
  ContextProviderA, // what the context provider provides
98
+ ContextProviderR extends HttpRouter.HttpRouter.Provided, // what the context provider requires
92
99
  MakeContextProviderE, // what the context provider construction can fail with
93
100
  MakeContextProviderR // what the context provider construction requires
94
101
  > {
@@ -96,20 +103,129 @@ export interface Middleware<
96
103
  contextProvider:
97
104
  & Context.Tag<
98
105
  ContextProviderId,
99
- ContextProviderId & ContextProviderShape<ContextProviderA> & { _tag: ContextProviderKey }
106
+ ContextProviderShape<ContextProviderA, ContextProviderR>
100
107
  >
101
108
  & {
102
109
  Default: Layer.Layer<ContextProviderId, MakeContextProviderE, MakeContextProviderR>
103
110
  }
104
111
  execute: (
105
- maker: (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => RPCHandlerFactory<RequestContextMap, MiddlewareR>
112
+ maker: (
113
+ cb: MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>
114
+ ) => MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>
106
115
  ) => Effect<
107
- RPCHandlerFactory<RequestContextMap, MiddlewareR>,
108
- never,
116
+ MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>,
117
+ MakeMiddlewareE,
109
118
  MakeMiddlewareR
110
119
  >
111
120
  }
112
121
 
122
+ export interface MiddlewareMakerId {
123
+ _tag: "MiddlewareMaker"
124
+ }
125
+
126
+ export interface ContextProviderId {
127
+ _tag: "ContextProvider"
128
+ }
129
+
130
+ type GetContext<T> = T extends Context.Context<infer Y> ? Y : never
131
+
132
+ export const mergeContextProviders = <
133
+ // TDeps is an array of services whit Default implementation
134
+ // each service is an effect which builds some context for each request
135
+ TDeps extends Array.NonEmptyReadonlyArray<
136
+ & (
137
+ | Context.Tag<any, Effect<Context.Context<any>, never, any> & { _tag: any }>
138
+ | Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
139
+ )
140
+ & {
141
+ new(...args: any[]): any
142
+ Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
143
+ }
144
+ >
145
+ >(...deps: TDeps): {
146
+ dependencies: { [K in keyof TDeps]: TDeps[K]["Default"] }
147
+ effect: Effect.Effect<
148
+ Effect.Effect<
149
+ Context.Context<GetContext<Effect.Success<InstanceType<TDeps[number]>>>>,
150
+ Effect.Error<InstanceType<TDeps[number]>>,
151
+ Effect.Context<InstanceType<TDeps[number]>>
152
+ >,
153
+ never,
154
+ InstanceType<TDeps[number]>
155
+ >
156
+ } => ({
157
+ dependencies: deps.map((_) => _.Default) as any,
158
+ effect: Effect.gen(function*() {
159
+ const services = yield* Effect.all(deps)
160
+ // services are effects which return some Context.Context<...>
161
+ return Effect.all(services as any[]).pipe(
162
+ Effect.map((_) => Context.mergeAll(..._ as any))
163
+ )
164
+ }) as any
165
+ })
166
+
167
+ // TODO: andrea; how?
168
+ // export const MergedContextProvider = <
169
+ // // TDeps is an array of services whit Default implementation
170
+ // // each service is an effect which builds some context for each request
171
+ // TDeps extends Array.NonEmptyReadonlyArray<
172
+ // & (
173
+ // | Context.Tag<any, Effect<Context.Context<any>, never, any> & { _tag: any }>
174
+ // | Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
175
+ // )
176
+ // & {
177
+ // new(...args: any[]): any
178
+ // Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
179
+ // }
180
+ // >
181
+ // >(...deps: TDeps) => ContextProvider(mergeContextProviders(...deps))
182
+
183
+ export const ContextProvider = <A, E, R, ContextE, ContextR, Dependencies extends NonEmptyArray<Layer.Layer.Any>>(
184
+ input: { effect: Effect<Effect<A, ContextE, ContextR>, E, R>; dependencies?: Dependencies }
185
+ ) => {
186
+ const ctx = Context.GenericTag<
187
+ ContextProviderId,
188
+ Effect<A, ContextE, ContextR>
189
+ >(
190
+ "ContextProvider"
191
+ )
192
+ const l = Layer.effect(ctx, input.effect)
193
+ return Object.assign(ctx, {
194
+ Default: l.pipe(
195
+ input.dependencies ? Layer.provide(input.dependencies) as any : (_) => _
196
+ ) as Layer.Layer<
197
+ ContextProviderId,
198
+ E | LayersUtils.GetLayersError<Dependencies>,
199
+ Exclude<R, LayersUtils.GetLayersSuccess<Dependencies>> | LayersUtils.GetLayersContext<Dependencies>
200
+ >
201
+ })
202
+ }
203
+
204
+ export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) })
205
+
206
+ export type Middleware<
207
+ MiddlewareR, // what the middlware requires to execute
208
+ RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the handler, or raise errors.
209
+ MakeMiddlewareE, // what the middleware construction can fail with
210
+ MakeMiddlewareR, // what the middlware requires to be constructed
211
+ ContextProviderA // what the context provider provides
212
+ > =
213
+ & Context.Tag<
214
+ MiddlewareMakerId,
215
+ MiddlewareMakerId & {
216
+ effect: RPCHandlerFactory<RequestContextMap, MiddlewareR, ContextProviderA>
217
+ } & {
218
+ _tag: "MiddlewareMaker"
219
+ }
220
+ >
221
+ & {
222
+ Default: Layer.Layer<
223
+ MiddlewareMakerId,
224
+ MakeMiddlewareE,
225
+ MakeMiddlewareR
226
+ >
227
+ }
228
+
113
229
  export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<
114
230
  RequestContextMap[keyof RequestContextMap]["error"]
115
231
  >
@@ -118,12 +234,92 @@ export type RequestContextMapErrors<RequestContextMap extends Record<string, RPC
118
234
  export const makeMiddleware =
119
235
  // by setting MiddlewareR and RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
120
236
  <RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() =>
121
- <M extends Middleware<MiddlewareR, RequestContextMap, any, NonEmptyArray<Layer.Layer.Any>, any, any, any, any, any>>(
122
- content: M
123
- ): M => content
237
+ <
238
+ MakeMiddlewareE, // what the middleware construction can fail with
239
+ MakeMiddlewareR, // what the middlware requires to be constructed
240
+ MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
241
+ //
242
+ // ContextProvider is a service that builds additional context for each request.
243
+ ContextProviderA, // what the context provider provides
244
+ ContextProviderR extends HttpRouter.HttpRouter.Provided, // what the context provider requires
245
+ MakeContextProviderE, // what the context provider construction can fail with
246
+ MakeContextProviderR // what the context provider construction requires
247
+ >(
248
+ make: MiddlewareMake<
249
+ MiddlewareR,
250
+ RequestContextMap,
251
+ MakeMiddlewareE,
252
+ MakeMiddlewareR,
253
+ MiddlewareDependencies,
254
+ ContextProviderA,
255
+ ContextProviderR,
256
+ MakeContextProviderE,
257
+ MakeContextProviderR
258
+ >
259
+ ) => {
260
+ // type Id = MiddlewareMakerId &
261
+ const MiddlewareMaker = Context.GenericTag<
262
+ MiddlewareMakerId,
263
+ {
264
+ effect: RPCHandlerFactory<RequestContextMap, MiddlewareR, ContextProviderA>
265
+ _tag: "MiddlewareMaker"
266
+ }
267
+ >(
268
+ "MiddlewareMaker"
269
+ )
270
+
271
+ const l = Layer.effect(
272
+ MiddlewareMaker,
273
+ Effect
274
+ .all({
275
+ middleware: make.execute(makeRpcHandler<RequestContextMap, MiddlewareR>()),
276
+ contextProvider: make.contextProvider // uses the middleware.contextProvider tag to get the context provider service
277
+ })
278
+ .pipe(
279
+ Effect.map(({ contextProvider, middleware }) => ({
280
+ _tag: "MiddlewareMaker" as const,
281
+ effect: makeRpcEffect<RequestContextMap, MiddlewareR, ContextProviderA>()(
282
+ (schema, handler, moduleName) => {
283
+ const h = middleware(schema, handler, moduleName)
284
+ return (req, headers) =>
285
+ // the contextProvider is an Effect that builds the context for the request
286
+ contextProvider.pipe(
287
+ Effect.flatMap((ctx) =>
288
+ h(req, headers)
289
+ .pipe(
290
+ Effect.provide(ctx),
291
+ // TODO: make this depend on query/command, and consider if middleware also should be affected or not.
292
+ Effect.uninterruptible
293
+ )
294
+ )
295
+ )
296
+ }
297
+ )
298
+ }))
299
+ )
300
+ )
301
+ const middlewareLayer = l
302
+ .pipe(
303
+ make.dependencies ? Layer.provide(make.dependencies) as any : (_) => _,
304
+ Layer.provide(make.contextProvider.Default)
305
+ ) as Layer.Layer<
306
+ MiddlewareMakerId,
307
+ | MakeMiddlewareE
308
+ | Layer.Error<typeof make.contextProvider.Default>,
309
+ | LayersUtils.GetLayersContext<MiddlewareDependencies>
310
+ | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
311
+ | Layer.Context<typeof make.contextProvider.Default>
312
+ >
313
+
314
+ return Object.assign(MiddlewareMaker, { Default: middlewareLayer })
315
+ }
124
316
 
125
317
  // it just provides the right types without cluttering the implementation with them
126
- function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR, ContextProviderA>() {
318
+ function makeRpcEffect<
319
+ RequestContextMap extends Record<string, RPCContextMap.Any>,
320
+ MiddlewareR,
321
+ ContextProviderA
322
+ >() {
127
323
  return (
128
324
  cb: <
129
325
  T extends {
@@ -148,8 +344,8 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
148
344
  ) => Effect.Effect<
149
345
  Request.Request.Success<Req>,
150
346
  Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
151
- | Scope.Scope // the context provider may require a Scope to run
152
- | Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR
347
+ | HttpRouter.HttpRouter.Provided // the context provider may require HttpRouter.Provided to run
348
+ | Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR\
153
349
  | Exclude<
154
350
  Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
155
351
  ContextProviderA
@@ -157,52 +353,3 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
157
353
  >
158
354
  ) => cb
159
355
  }
160
-
161
- export const makeRpc = <
162
- MiddlewareR,
163
- RequestContextMap extends Record<string, RPCContextMap.Any>,
164
- MakeMiddlewareR,
165
- MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>,
166
- ContextProviderId,
167
- ContextProviderKey extends string,
168
- ContextProviderA,
169
- MakeContextProviderE,
170
- MakeContextProviderR
171
- >(
172
- middleware: Middleware<
173
- MiddlewareR,
174
- RequestContextMap,
175
- MakeMiddlewareR,
176
- MiddlewareDependencies,
177
- ContextProviderId,
178
- ContextProviderKey,
179
- ContextProviderA,
180
- MakeContextProviderE,
181
- MakeContextProviderR
182
- >
183
- ) =>
184
- Effect
185
- .all({
186
- middleware: MiddlewareMaker as Context.Tag<
187
- "MiddlewareMaker",
188
- RPCHandlerFactory<RequestContextMap, MiddlewareR>
189
- >,
190
- contextProvider: middleware.contextProvider // uses the middleware.contextProvider tag to get the context provider service
191
- })
192
- .pipe(Effect.map(({ contextProvider, middleware }) => ({
193
- effect: makeRpcEffect<RequestContextMap, MiddlewareR, ContextProviderA>()((schema, handler, moduleName) => {
194
- const h = middleware(schema, handler, moduleName)
195
- return (req, headers) =>
196
- // the contextProvider is an Effect that builds the context for the request
197
- contextProvider.pipe(
198
- Effect.flatMap((ctx) =>
199
- h(req, headers)
200
- .pipe(
201
- Effect.provide(ctx),
202
- // TODO: make this depend on query/command, and consider if middleware also should be affected or not.
203
- Effect.uninterruptible
204
- )
205
- )
206
- )
207
- })
208
- })))