@effect-app/infra 2.71.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.
@@ -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.71.0",
3
+ "version": "2.73.0",
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
  },
@@ -30,69 +32,68 @@ export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContex
30
32
  headers: any
31
33
  ) => Effect.Effect<
32
34
  Request.Request.Success<Req>,
33
- Request.Request.Error<Req>,
35
+ Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
34
36
  // the middleware will remove from HandlerR the dynamic context, but will also add the MiddlewareR
35
37
  | MiddlewareR
36
38
  // & S.Schema<Req, any, never> is useless here but useful when creating the middleware
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
- if (!middleware.execute && !middleware.executeContextual) {
68
- throw new Error("No execute or executeContextual provided in middleware")
69
- }
70
- const middlewareLayer = Layer
71
- .effect(
72
- MiddlewareMaker,
73
- middleware.execute
74
- ? middleware.execute
75
- : middleware.executeContextual!(makeRpcHandler<RequestContextMap, MiddlewareR>())
76
- )
77
- .pipe(middleware.dependencies ? Layer.provide(middleware.dependencies) as any : (_) => _)
77
+ >
78
78
 
79
- return middlewareLayer as Layer.Layer<
80
- "MiddlewareMaker",
81
- never,
82
- Exclude<MiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
83
- >
79
+ function makeRpcHandler<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() {
80
+ return (cb: MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>) => cb
84
81
  }
85
- export type ContextProviderShape<ContextProviderA> = Effect<Context.Context<ContextProviderA>, never, Scope>
86
82
 
87
- export interface Middleware<
83
+ export type ContextProviderShape<ContextProviderA> = Effect<
84
+ Context.Context<ContextProviderA>,
85
+ never,
86
+ HttpRouter.HttpRouter.Provided
87
+ >
88
+
89
+ export interface MiddlewareMake<
88
90
  MiddlewareR, // what the middlware requires to execute
89
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
90
93
  MakeMiddlewareR, // what the middlware requires to be constructed
91
94
  MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
92
95
  //
93
96
  // ContextProvider is a service that builds additional context for each request.
94
- ContextProviderId, // it is the context provider itself
95
- ContextProviderKey extends string, // tag for the context provider
96
97
  ContextProviderA, // what the context provider provides
97
98
  MakeContextProviderE, // what the context provider construction can fail with
98
99
  MakeContextProviderR // what the context provider construction requires
@@ -101,36 +102,221 @@ export interface Middleware<
101
102
  contextProvider:
102
103
  & Context.Tag<
103
104
  ContextProviderId,
104
- ContextProviderId & ContextProviderShape<ContextProviderA> & { _tag: ContextProviderKey }
105
+ ContextProviderShape<ContextProviderA>
105
106
  >
106
107
  & {
107
108
  Default: Layer.Layer<ContextProviderId, MakeContextProviderE, MakeContextProviderR>
108
109
  }
109
- execute?: Effect<
110
- RPCHandlerFactory<RequestContextMap, MiddlewareR>,
111
- never,
110
+ execute: (
111
+ maker: (
112
+ cb: MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>
113
+ ) => MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>
114
+ ) => Effect<
115
+ MakeRPCHandlerFactory<RequestContextMap, MiddlewareR>,
116
+ MakeMiddlewareE,
112
117
  MakeMiddlewareR
113
118
  >
114
- // better DX because types are contextually provided
115
- executeContextual?: (
116
- maker: (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => RPCHandlerFactory<RequestContextMap, MiddlewareR>
117
- ) => Effect<
118
- RPCHandlerFactory<RequestContextMap, MiddlewareR>,
119
+ }
120
+
121
+ export interface MiddlewareMakerId {
122
+ _tag: "MiddlewareMaker"
123
+ }
124
+
125
+ export interface ContextProviderId {
126
+ _tag: "ContextProvider"
127
+ }
128
+
129
+ type GetContext<T> = T extends Context.Context<infer Y> ? Y : never
130
+
131
+ export const mergeContextProviders = <
132
+ // TDeps is an array of services whit Default implementation
133
+ // each service is an effect which builds some context for each request
134
+ TDeps extends Array.NonEmptyReadonlyArray<
135
+ & (
136
+ | Context.Tag<any, Effect<Context.Context<any>, never, any> & { _tag: any }>
137
+ | Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
138
+ )
139
+ & {
140
+ new(...args: any[]): any
141
+ Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
142
+ }
143
+ >
144
+ >(...deps: TDeps): {
145
+ dependencies: { [K in keyof TDeps]: TDeps[K]["Default"] }
146
+ effect: Effect.Effect<
147
+ Effect.Effect<
148
+ Context.Context<GetContext<Effect.Success<InstanceType<TDeps[number]>>>>,
149
+ Effect.Error<InstanceType<TDeps[number]>>,
150
+ Effect.Context<InstanceType<TDeps[number]>>
151
+ >,
119
152
  never,
120
- MakeMiddlewareR
153
+ InstanceType<TDeps[number]>
121
154
  >
155
+ } => ({
156
+ dependencies: deps.map((_) => _.Default) as any,
157
+ effect: Effect.gen(function*() {
158
+ const services = yield* Effect.all(deps)
159
+ // services are effects which return some Context.Context<...>
160
+ return Effect.all(services as any[]).pipe(
161
+ Effect.map((_) => Context.mergeAll(..._ as any))
162
+ )
163
+ }) as any
164
+ })
165
+
166
+ // TODO: andrea; how?
167
+ // export const MergedContextProvider = <
168
+ // // TDeps is an array of services whit Default implementation
169
+ // // each service is an effect which builds some context for each request
170
+ // TDeps extends Array.NonEmptyReadonlyArray<
171
+ // & (
172
+ // | Context.Tag<any, Effect<Context.Context<any>, never, any> & { _tag: any }>
173
+ // | Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
174
+ // )
175
+ // & {
176
+ // new(...args: any[]): any
177
+ // Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
178
+ // }
179
+ // >
180
+ // >(...deps: TDeps) => ContextProvider(mergeContextProviders(...deps))
181
+
182
+ export const ContextProvider = <A, E, R, EContext, Dependencies extends NonEmptyArray<Layer.Layer.Any>>(
183
+ input: { effect: Effect<Effect<A, EContext, HttpRouter.HttpRouter.Provided>, E, R>; dependencies?: Dependencies }
184
+ ) => {
185
+ const ctx = Context.GenericTag<
186
+ ContextProviderId,
187
+ Effect<A, EContext, HttpRouter.HttpRouter.Provided>
188
+ >(
189
+ "ContextProvider"
190
+ )
191
+ const l = Layer.effect(ctx, input.effect)
192
+ return Object.assign(ctx, {
193
+ Default: l.pipe(
194
+ input.dependencies ? Layer.provide(input.dependencies) as any : (_) => _
195
+ ) as Layer.Layer<
196
+ ContextProviderId,
197
+ E | LayersUtils.GetLayersError<Dependencies>,
198
+ Exclude<R, LayersUtils.GetLayersSuccess<Dependencies>> | LayersUtils.GetLayersContext<Dependencies>
199
+ >
200
+ })
122
201
  }
123
202
 
203
+ export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) })
204
+
205
+ export type Middleware<
206
+ MiddlewareR, // what the middlware requires to execute
207
+ RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the handler, or raise errors.
208
+ MakeMiddlewareE, // what the middleware construction can fail with
209
+ MakeMiddlewareR, // what the middlware requires to be constructed
210
+ ContextProviderA // what the context provider provides
211
+ > =
212
+ & Context.Tag<
213
+ MiddlewareMakerId,
214
+ MiddlewareMakerId & {
215
+ effect: RPCHandlerFactory<RequestContextMap, MiddlewareR, ContextProviderA>
216
+ } & {
217
+ _tag: "MiddlewareMaker"
218
+ }
219
+ >
220
+ & {
221
+ Default: Layer.Layer<
222
+ MiddlewareMakerId,
223
+ MakeMiddlewareE,
224
+ MakeMiddlewareR
225
+ >
226
+ }
227
+
228
+ export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<
229
+ RequestContextMap[keyof RequestContextMap]["error"]
230
+ >
231
+
124
232
  // identity factory for Middleware
125
233
  export const makeMiddleware =
126
- // by setting MiddlewareR and RequestContextMap beforehand, executeContextual contextual typing does not fuck up itself to anys
234
+ // by setting MiddlewareR and RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
127
235
  <RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() =>
128
- <M extends Middleware<MiddlewareR, RequestContextMap, any, NonEmptyArray<Layer.Layer.Any>, any, any, any, any, any>>(
129
- content: M
130
- ): M => content
236
+ <
237
+ MakeMiddlewareE, // what the middleware construction can fail with
238
+ MakeMiddlewareR, // what the middlware requires to be constructed
239
+ MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
240
+ //
241
+ // ContextProvider is a service that builds additional context for each request.
242
+ ContextProviderA, // what the context provider provides
243
+ MakeContextProviderE, // what the context provider construction can fail with
244
+ MakeContextProviderR // what the context provider construction requires
245
+ >(
246
+ make: MiddlewareMake<
247
+ MiddlewareR,
248
+ RequestContextMap,
249
+ MakeMiddlewareE,
250
+ MakeMiddlewareR,
251
+ MiddlewareDependencies,
252
+ ContextProviderA,
253
+ MakeContextProviderE,
254
+ MakeContextProviderR
255
+ >
256
+ ) => {
257
+ // type Id = MiddlewareMakerId &
258
+ const MiddlewareMaker = Context.GenericTag<
259
+ MiddlewareMakerId,
260
+ {
261
+ effect: RPCHandlerFactory<RequestContextMap, MiddlewareR, ContextProviderA>
262
+ _tag: "MiddlewareMaker"
263
+ }
264
+ >(
265
+ "MiddlewareMaker"
266
+ )
267
+
268
+ const l = Layer.effect(
269
+ MiddlewareMaker,
270
+ Effect
271
+ .all({
272
+ middleware: make.execute(makeRpcHandler<RequestContextMap, MiddlewareR>()),
273
+ contextProvider: make.contextProvider // uses the middleware.contextProvider tag to get the context provider service
274
+ })
275
+ .pipe(
276
+ Effect.map(({ contextProvider, middleware }) => ({
277
+ _tag: "MiddlewareMaker" as const,
278
+ effect: makeRpcEffect<RequestContextMap, MiddlewareR, ContextProviderA>()(
279
+ (schema, handler, moduleName) => {
280
+ const h = middleware(schema, handler, moduleName)
281
+ return (req, headers) =>
282
+ // the contextProvider is an Effect that builds the context for the request
283
+ contextProvider.pipe(
284
+ Effect.flatMap((ctx) =>
285
+ h(req, headers)
286
+ .pipe(
287
+ Effect.provide(ctx),
288
+ // TODO: make this depend on query/command, and consider if middleware also should be affected or not.
289
+ Effect.uninterruptible
290
+ )
291
+ )
292
+ )
293
+ }
294
+ )
295
+ }))
296
+ )
297
+ )
298
+ const middlewareLayer = l
299
+ .pipe(
300
+ make.dependencies ? Layer.provide(make.dependencies) as any : (_) => _,
301
+ Layer.provide(make.contextProvider.Default)
302
+ ) as Layer.Layer<
303
+ MiddlewareMakerId,
304
+ | MakeMiddlewareE
305
+ | Layer.Error<typeof make.contextProvider.Default>,
306
+ | LayersUtils.GetLayersContext<MiddlewareDependencies>
307
+ | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
308
+ | Layer.Context<typeof make.contextProvider.Default>
309
+ >
310
+
311
+ return Object.assign(MiddlewareMaker, { Default: middlewareLayer })
312
+ }
131
313
 
132
314
  // it just provides the right types without cluttering the implementation with them
133
- function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR, ContextProviderA>() {
315
+ function makeRpcEffect<
316
+ RequestContextMap extends Record<string, RPCContextMap.Any>,
317
+ MiddlewareR,
318
+ ContextProviderA
319
+ >() {
134
320
  return (
135
321
  cb: <
136
322
  T extends {
@@ -154,9 +340,9 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
154
340
  headers: any
155
341
  ) => Effect.Effect<
156
342
  Request.Request.Success<Req>,
157
- Request.Request.Error<Req>,
158
- | Scope.Scope // the context provider may require a Scope to run
159
- | Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR
343
+ Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
344
+ | HttpRouter.HttpRouter.Provided // the context provider may require HttpRouter.Provided to run
345
+ | Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR\
160
346
  | Exclude<
161
347
  Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>,
162
348
  ContextProviderA
@@ -164,52 +350,3 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
164
350
  >
165
351
  ) => cb
166
352
  }
167
-
168
- export const makeRpc = <
169
- MiddlewareR,
170
- RequestContextMap extends Record<string, RPCContextMap.Any>,
171
- MakeMiddlewareR,
172
- MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>,
173
- ContextProviderId,
174
- ContextProviderKey extends string,
175
- ContextProviderA,
176
- MakeContextProviderE,
177
- MakeContextProviderR
178
- >(
179
- middleware: Middleware<
180
- MiddlewareR,
181
- RequestContextMap,
182
- MakeMiddlewareR,
183
- MiddlewareDependencies,
184
- ContextProviderId,
185
- ContextProviderKey,
186
- ContextProviderA,
187
- MakeContextProviderE,
188
- MakeContextProviderR
189
- >
190
- ) =>
191
- Effect
192
- .all({
193
- middleware: MiddlewareMaker as Context.Tag<
194
- "MiddlewareMaker",
195
- RPCHandlerFactory<RequestContextMap, MiddlewareR>
196
- >,
197
- contextProvider: middleware.contextProvider // uses the middleware.contextProvider tag to get the context provider service
198
- })
199
- .pipe(Effect.map(({ contextProvider, middleware }) => ({
200
- effect: makeRpcEffect<RequestContextMap, MiddlewareR, ContextProviderA>()((schema, handler, moduleName) => {
201
- const h = middleware(schema, handler, moduleName)
202
- return (req, headers) =>
203
- // the contextProvider is an Effect that builds the context for the request
204
- contextProvider.pipe(
205
- Effect.flatMap((ctx) =>
206
- h(req, headers)
207
- .pipe(
208
- Effect.provide(ctx),
209
- // TODO: make this depend on query/command, and consider if middleware also should be affected or not.
210
- Effect.uninterruptible
211
- )
212
- )
213
- )
214
- })
215
- })))