@effect-app/infra 2.71.0 → 2.72.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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 2.72.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 96c51df: replace execute with executeContextual
8
+
9
+ ### Patch Changes
10
+
11
+ - 96c51df: add support for error
12
+
3
13
  ## 2.71.0
4
14
 
5
15
  ### Minor Changes
@@ -5,7 +5,7 @@ import { type LayersUtils } from "../routing.js";
5
5
  export declare const MiddlewareMaker: Context.Tag<"MiddlewareMaker", any>;
6
6
  export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR> = <T extends {
7
7
  config?: Partial<Record<keyof RequestContextMap, any>>;
8
- }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, handler: (request: Req, headers: any) => Effect.Effect<EffectRequest.Request.Success<Req>, EffectRequest.Request.Error<Req>, HandlerR>, moduleName?: string) => (req: Req, headers: any) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req>, MiddlewareR | Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>>;
8
+ }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, handler: (request: Req, headers: any) => Effect.Effect<EffectRequest.Request.Success<Req>, EffectRequest.Request.Error<Req>, HandlerR>, moduleName?: string) => (req: Req, headers: any) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>, MiddlewareR | Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>>;
9
9
  export declare const makeMiddlewareLayer: <RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR, MakeMiddlewareR, MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, ContextProviderId, ContextProviderKey extends string, ContextProviderA, MakeContextProviderE, MakeContextProviderR>(middleware: Middleware<MiddlewareR, RequestContextMap, MakeMiddlewareR, MiddlewareDependencies, ContextProviderId, ContextProviderKey, ContextProviderA, MakeContextProviderE, MakeContextProviderR>) => Layer.Layer<"MiddlewareMaker", never, Exclude<MiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>>;
10
10
  export type ContextProviderShape<ContextProviderA> = Effect<Context.Context<ContextProviderA>, never, Scope>;
11
11
  export interface Middleware<MiddlewareR, // what the middlware requires to execute
@@ -23,13 +23,13 @@ MakeContextProviderR> {
23
23
  }> & {
24
24
  Default: Layer.Layer<ContextProviderId, MakeContextProviderE, MakeContextProviderR>;
25
25
  };
26
- execute?: Effect<RPCHandlerFactory<RequestContextMap, MiddlewareR>, never, MakeMiddlewareR>;
27
- executeContextual?: (maker: (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => RPCHandlerFactory<RequestContextMap, MiddlewareR>) => Effect<RPCHandlerFactory<RequestContextMap, MiddlewareR>, never, MakeMiddlewareR>;
26
+ execute: (maker: (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => RPCHandlerFactory<RequestContextMap, MiddlewareR>) => Effect<RPCHandlerFactory<RequestContextMap, MiddlewareR>, never, MakeMiddlewareR>;
28
27
  }
28
+ export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<RequestContextMap[keyof RequestContextMap]["error"]>;
29
29
  export declare const makeMiddleware: <RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() => <M extends Middleware<MiddlewareR, RequestContextMap, any, NonEmptyArray<Layer.Layer.Any>, any, any, any, any, any>>(content: M) => M;
30
30
  export declare const makeRpc: <MiddlewareR, RequestContextMap extends Record<string, RPCContextMap.Any>, MakeMiddlewareR, MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>, ContextProviderId, ContextProviderKey extends string, ContextProviderA, MakeContextProviderE, MakeContextProviderR>(middleware: Middleware<MiddlewareR, RequestContextMap, MakeMiddlewareR, MiddlewareDependencies, ContextProviderId, ContextProviderKey, ContextProviderA, MakeContextProviderE, MakeContextProviderR>) => Effect.Effect<{
31
31
  effect: <T extends {
32
32
  config?: Partial<Record<keyof RequestContextMap, any>>;
33
- }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, handler: (request: Req, headers: any) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req>, HandlerR>, moduleName?: string) => (req: Req, headers: any) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req>, Scope.Scope | Exclude<MiddlewareR, ContextProviderA> | Exclude<Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>, ContextProviderA>>;
33
+ }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, handler: (request: Req, headers: any) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req>, HandlerR>, moduleName?: string) => (req: Req, headers: any) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req> | S.Schema.Type<RequestContextMap[keyof RequestContextMap]["error"]>, Scope.Scope | Exclude<MiddlewareR, ContextProviderA> | Exclude<Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>, ContextProviderA>>;
34
34
  }, never, "MiddlewareMaker" | ContextProviderId>;
35
35
  //# sourceMappingURL=DynamicMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing/DynamicMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing/DynamicMiddleware.ts"],"names":[],"mappings":"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"}
@@ -7,19 +7,14 @@ function makeRpcHandler() {
7
7
  return (cb) => cb;
8
8
  }
9
9
  export const makeMiddlewareLayer = (middleware) => {
10
- if (!middleware.execute && !middleware.executeContextual) {
11
- throw new Error("No execute or executeContextual provided in middleware");
12
- }
13
10
  const middlewareLayer = Layer
14
- .effect(MiddlewareMaker, middleware.execute
15
- ? middleware.execute
16
- : middleware.executeContextual(makeRpcHandler()))
11
+ .effect(MiddlewareMaker, middleware.execute(makeRpcHandler()))
17
12
  .pipe(middleware.dependencies ? Layer.provide(middleware.dependencies) : (_) => _);
18
13
  return middlewareLayer;
19
14
  };
20
15
  // identity factory for Middleware
21
16
  export const makeMiddleware =
22
- // by setting MiddlewareR and RequestContextMap beforehand, executeContextual contextual typing does not fuck up itself to anys
17
+ // by setting MiddlewareR and RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
23
18
  () => (content) => content;
24
19
  // it just provides the right types without cluttering the implementation with them
25
20
  function makeRpcEffect() {
@@ -41,4 +36,4 @@ export const makeRpc = (middleware) => Effect
41
36
  Effect.uninterruptible)));
42
37
  })
43
38
  })));
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvRHluYW1pY01pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUF3RCxNQUFNLFlBQVksQ0FBQTtBQUt6RyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBeUIsaUJBQWlCLENBQUMsQ0FBQTtBQStCNUYsU0FBUyxjQUFjO0lBQ3JCLE9BQU8sQ0FBQyxFQUFxRCxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFDdEUsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBV2pDLFVBVUMsRUFDRCxFQUFFO0lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFHLEtBQUs7U0FDMUIsTUFBTSxDQUNMLGVBQWUsRUFDZixVQUFVLENBQUMsT0FBTztRQUNoQixDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87UUFDcEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQkFBa0IsQ0FBQyxjQUFjLEVBQWtDLENBQUMsQ0FDcEY7U0FDQSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUzRixPQUFPLGVBSU4sQ0FBQTtBQUNILENBQUMsQ0FBQTtBQXdDRCxrQ0FBa0M7QUFDbEMsTUFBTSxDQUFDLE1BQU0sY0FBYztBQUN6QiwrSEFBK0g7QUFDL0gsR0FBNkUsRUFBRSxDQUMvRSxDQUNFLE9BQVUsRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFBO0FBRWpCLG1GQUFtRjtBQUNuRixTQUFTLGFBQWE7SUFDcEIsT0FBTyxDQUNMLEVBNkJDLEVBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNULENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FXckIsVUFVQyxFQUNELEVBQUUsQ0FDRixNQUFNO0tBQ0gsR0FBRyxDQUFDO0lBQ0gsVUFBVSxFQUFFLGVBR1g7SUFDRCxlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyw4RUFBOEU7Q0FDM0gsQ0FBQztLQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsTUFBTSxFQUFFLGFBQWEsRUFBb0QsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDeEcsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDakQsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN0QiwyRUFBMkU7UUFDM0UsZUFBZSxDQUFDLElBQUksQ0FDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ3JCLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO2FBQ1osSUFBSSxDQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ25CLHNHQUFzRztRQUN0RyxNQUFNLENBQUMsZUFBZSxDQUN2QixDQUNKLENBQ0YsQ0FBQTtJQUNMLENBQUMsQ0FBQztDQUNILENBQUMsQ0FBQyxDQUFDLENBQUEifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvRHluYW1pY01pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUF3RCxNQUFNLFlBQVksQ0FBQTtBQUt6RyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBeUIsaUJBQWlCLENBQUMsQ0FBQTtBQStCNUYsU0FBUyxjQUFjO0lBQ3JCLE9BQU8sQ0FBQyxFQUFxRCxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFDdEUsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBV2pDLFVBVUMsRUFDRCxFQUFFO0lBQ0YsTUFBTSxlQUFlLEdBQUcsS0FBSztTQUMxQixNQUFNLENBQ0wsZUFBZSxFQUNmLFVBQVUsQ0FBQyxPQUFRLENBQUMsY0FBYyxFQUFrQyxDQUFDLENBQ3RFO1NBQ0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0YsT0FBTyxlQUlOLENBQUE7QUFDSCxDQUFDLENBQUE7QUFzQ0Qsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGNBQWM7QUFDekIscUhBQXFIO0FBQ3JILEdBQTZFLEVBQUUsQ0FDL0UsQ0FDRSxPQUFVLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQTtBQUVqQixtRkFBbUY7QUFDbkYsU0FBUyxhQUFhO0lBQ3BCLE9BQU8sQ0FDTCxFQTZCQyxFQUNELEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFDVCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBV3JCLFVBVUMsRUFDRCxFQUFFLENBQ0YsTUFBTTtLQUNILEdBQUcsQ0FBQztJQUNILFVBQVUsRUFBRSxlQUdYO0lBQ0QsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlLENBQUMsOEVBQThFO0NBQzNILENBQUM7S0FDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sRUFBRSxhQUFhLEVBQW9ELENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFO1FBQ3hHLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDdEIsMkVBQTJFO1FBQzNFLGVBQWUsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNyQixDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQzthQUNaLElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNuQixzR0FBc0c7UUFDdEcsTUFBTSxDQUFDLGVBQWUsQ0FDdkIsQ0FDSixDQUNGLENBQUE7SUFDTCxDQUFDLENBQUM7Q0FDSCxDQUFDLENBQUMsQ0FBQyxDQUFBIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "2.71.0",
3
+ "version": "2.72.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -30,7 +30,7 @@ export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContex
30
30
  headers: any
31
31
  ) => Effect.Effect<
32
32
  Request.Request.Success<Req>,
33
- Request.Request.Error<Req>,
33
+ Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
34
34
  // the middleware will remove from HandlerR the dynamic context, but will also add the MiddlewareR
35
35
  | MiddlewareR
36
36
  // & S.Schema<Req, any, never> is useless here but useful when creating the middleware
@@ -64,15 +64,10 @@ export const makeMiddlewareLayer = <
64
64
  MakeContextProviderR
65
65
  >
66
66
  ) => {
67
- if (!middleware.execute && !middleware.executeContextual) {
68
- throw new Error("No execute or executeContextual provided in middleware")
69
- }
70
67
  const middlewareLayer = Layer
71
68
  .effect(
72
69
  MiddlewareMaker,
73
- middleware.execute
74
- ? middleware.execute
75
- : middleware.executeContextual!(makeRpcHandler<RequestContextMap, MiddlewareR>())
70
+ middleware.execute!(makeRpcHandler<RequestContextMap, MiddlewareR>())
76
71
  )
77
72
  .pipe(middleware.dependencies ? Layer.provide(middleware.dependencies) as any : (_) => _)
78
73
 
@@ -106,13 +101,7 @@ export interface Middleware<
106
101
  & {
107
102
  Default: Layer.Layer<ContextProviderId, MakeContextProviderE, MakeContextProviderR>
108
103
  }
109
- execute?: Effect<
110
- RPCHandlerFactory<RequestContextMap, MiddlewareR>,
111
- never,
112
- MakeMiddlewareR
113
- >
114
- // better DX because types are contextually provided
115
- executeContextual?: (
104
+ execute: (
116
105
  maker: (cb: RPCHandlerFactory<RequestContextMap, MiddlewareR>) => RPCHandlerFactory<RequestContextMap, MiddlewareR>
117
106
  ) => Effect<
118
107
  RPCHandlerFactory<RequestContextMap, MiddlewareR>,
@@ -121,9 +110,13 @@ export interface Middleware<
121
110
  >
122
111
  }
123
112
 
113
+ export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<
114
+ RequestContextMap[keyof RequestContextMap]["error"]
115
+ >
116
+
124
117
  // identity factory for Middleware
125
118
  export const makeMiddleware =
126
- // by setting MiddlewareR and RequestContextMap beforehand, executeContextual contextual typing does not fuck up itself to anys
119
+ // by setting MiddlewareR and RequestContextMap beforehand, execute contextual typing does not fuck up itself to anys
127
120
  <RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR>() =>
128
121
  <M extends Middleware<MiddlewareR, RequestContextMap, any, NonEmptyArray<Layer.Layer.Any>, any, any, any, any, any>>(
129
122
  content: M
@@ -154,7 +147,7 @@ function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.An
154
147
  headers: any
155
148
  ) => Effect.Effect<
156
149
  Request.Request.Success<Req>,
157
- Request.Request.Error<Req>,
150
+ Request.Request.Error<Req> | RequestContextMapErrors<RequestContextMap>,
158
151
  | Scope.Scope // the context provider may require a Scope to run
159
152
  | Exclude<MiddlewareR, ContextProviderA> // for sure ContextProviderA is provided, so it can be removed from the MiddlewareR
160
153
  | Exclude<
@@ -47,7 +47,7 @@ const Str2 = Context.GenericTag<"str2", "str">("str2")
47
47
  const middleware = makeMiddleware<RequestContextMap, HttpServerRequest.HttpServerRequest>()({
48
48
  dependencies: [Layer.effect(Str2, Str)],
49
49
  contextProvider: ContextMaker,
50
- executeContextual: (maker) =>
50
+ execute: (maker) =>
51
51
  Effect.gen(function*() {
52
52
  return maker((_schema, handler, moduleName) => (req, headers) => {
53
53
  return Effect