@effect-app/infra 2.78.7 → 2.79.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 (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/api/layerUtils.d.ts +2 -4
  3. package/dist/api/layerUtils.d.ts.map +1 -1
  4. package/dist/api/layerUtils.js +4 -5
  5. package/dist/api/routing/middleware/ContextProvider.d.ts +17 -12
  6. package/dist/api/routing/middleware/ContextProvider.d.ts.map +1 -1
  7. package/dist/api/routing/middleware/ContextProvider.js +15 -5
  8. package/dist/api/routing/middleware/DynamicMiddleware.d.ts +43 -21
  9. package/dist/api/routing/middleware/DynamicMiddleware.d.ts.map +1 -1
  10. package/dist/api/routing/middleware/DynamicMiddleware.js +60 -20
  11. package/dist/api/routing/middleware/generic-middleware.d.ts +17 -10
  12. package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
  13. package/dist/api/routing/middleware/generic-middleware.js +34 -8
  14. package/dist/api/routing/middleware/middleware.d.ts +16 -10
  15. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  16. package/dist/api/routing/middleware/middleware.js +41 -51
  17. package/dist/api/routing/middleware.d.ts +1 -0
  18. package/dist/api/routing/middleware.d.ts.map +1 -1
  19. package/dist/api/routing/middleware.js +2 -1
  20. package/dist/api/routing.d.ts +2 -2
  21. package/dist/api/routing.d.ts.map +1 -1
  22. package/dist/api/routing.js +3 -3
  23. package/package.json +1 -1
  24. package/src/api/layerUtils.ts +6 -9
  25. package/src/api/routing/middleware/ContextProvider.ts +84 -28
  26. package/src/api/routing/middleware/DynamicMiddleware.ts +162 -78
  27. package/src/api/routing/middleware/generic-middleware.ts +56 -20
  28. package/src/api/routing/middleware/middleware.ts +27 -35
  29. package/src/api/routing/middleware.ts +2 -0
  30. package/src/api/routing.ts +5 -5
  31. package/test/controller.test.ts +27 -47
  32. package/test/dist/controller/test2.test.d.ts.map +1 -0
  33. package/test/dist/controller.test copy.js +23 -46
  34. package/test/dist/controller.test.d.ts.map +1 -1
  35. package/test/dist/controller5.test.d.ts.map +1 -0
  36. package/test/dist/controller6.test.d.ts.map +1 -1
  37. package/test/dist/controller7.test.d.ts.map +1 -1
  38. package/test/dist/dynamicContext.test.d.ts.map +1 -0
  39. package/test/dynamicContext.test.ts +153 -0
  40. package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
  41. package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
  42. package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
  43. package/vitest.config.ts.timestamp-1711744615239-dcf257a844e01.mjs +37 -0
  44. package/test/dist/controller.test copy.d.ts +0 -169
  45. package/test/dist/controller.test copy.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 2.79.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f4b6d3d: improve: Align our Middleware with RPC Middleware. combine genericMiddleware with contextProvider.
8
+
9
+ ## 2.78.8
10
+
11
+ ### Patch Changes
12
+
13
+ - 0e0f558: support for generators in context providers
14
+
3
15
  ## 2.78.7
4
16
 
5
17
  ### Patch Changes
@@ -10,13 +10,11 @@ export declare namespace LayerUtils {
10
10
  [k in keyof Layers]: Layer.Layer.Error<Layers[k]>;
11
11
  }[number] : never;
12
12
  }
13
- export type ContextTagWithDefault<Id, A, LayerE, LayerR, Tag = unknown> = (Tag extends string ? Context.Tag<Id, {
14
- _tag: Tag;
15
- } & A> : Context.Tag<Id, A>) & {
13
+ export type ContextTagWithDefault<Id, A, LayerE, LayerR> = Context.Tag<Id, A> & {
16
14
  Default: Layer.Layer<Id, LayerE, LayerR>;
17
15
  };
18
16
  export declare namespace ContextTagWithDefault {
19
- type Base<A> = ContextTagWithDefault<any, A, any, any, any>;
17
+ type Base<A> = ContextTagWithDefault<any, A, any, any>;
20
18
  }
21
19
  export type GetContext<T> = T extends Context.Context<infer Y> ? Y : never;
22
20
  export declare const mergeContexts: <T extends readonly {
@@ -1 +1 @@
1
- {"version":3,"file":"layerUtils.d.ts","sourceRoot":"","sources":["../../src/api/layerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,qBAAqB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAG5F,yBAAiB,UAAU,CAAC;IAC1B,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAClF,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SACtC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpD,CAAC,MAAM,CAAC,GACP,KAAK,CAAA;IAET,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAClF,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SACtC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpD,CAAC,MAAM,CAAC,GACP,KAAK,CAAA;IAET,KAAY,cAAc,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAChF,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SACtC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC,MAAM,CAAC,GACP,KAAK,CAAA;CACV;AAED,MAAM,MAAM,qBAAqB,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,IAClE,CAAC,GAAG,SAAS,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAC9E;IACA,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC,CAAA;AAEH,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,IAAI,CAAC,CAAC,IAAI,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CACnE;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1E,eAAO,MAAM,aAAa,GACd,CAAC,SAAS,SAAS;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,EAAE,wGAc5E,CAAA;AAED,eAAO,MAAM,mBAAmB,GACpB,CAAC,SAAS,SAAS;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,mEAgBpF,CAAA"}
1
+ {"version":3,"file":"layerUtils.d.ts","sourceRoot":"","sources":["../../src/api/layerUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,qBAAqB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAG5F,yBAAiB,UAAU,CAAC;IAC1B,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAClF,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SACtC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpD,CAAC,MAAM,CAAC,GACP,KAAK,CAAA;IAET,KAAY,gBAAgB,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAClF,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SACtC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpD,CAAC,MAAM,CAAC,GACP,KAAK,CAAA;IAET,KAAY,cAAc,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,SAChF,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;SACtC,CAAC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC,MAAM,CAAC,GACP,KAAK,CAAA;CACV;AAED,MAAM,MAAM,qBAAqB,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,IACnD,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAClB;IACA,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC,CAAA;AAEH,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,IAAI,CAAC,CAAC,IAAI,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAC9D;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1E,eAAO,MAAM,aAAa,GACd,CAAC,SAAS,SAAS;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,EAAE,wGAY5E,CAAA;AAED,eAAO,MAAM,mBAAmB,GACpB,CAAC,SAAS,SAAS;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,mEAcpF,CAAA"}
@@ -1,11 +1,11 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import { Context, Effect, Option } from "effect-app";
2
3
  import { InfraLogger } from "../logger.js";
3
4
  export const mergeContexts = Effect.fnUntraced(function* (makers) {
4
5
  let context = Context.empty();
5
6
  for (const mw of makers) {
6
- yield* InfraLogger.logDebug("Building context for middleware", mw.maker.key ?? mw.maker);
7
7
  const moreContext = yield* mw.handle.pipe(Effect.provide(context));
8
- yield* InfraLogger.logDebug("Built context for middleware", mw.maker.key ?? mw.maker, moreContext.toJSON().services);
8
+ yield* InfraLogger.logDebug("Built dynamic context for middleware" + (mw.maker.key ?? mw.maker), moreContext.toJSON().services);
9
9
  context = Context.merge(context, moreContext);
10
10
  }
11
11
  return context;
@@ -13,13 +13,12 @@ export const mergeContexts = Effect.fnUntraced(function* (makers) {
13
13
  export const mergeOptionContexts = Effect.fnUntraced(function* (makers) {
14
14
  let context = Context.empty();
15
15
  for (const mw of makers) {
16
- yield* InfraLogger.logDebug("Building context for middleware", mw.maker.key ?? mw.maker);
17
16
  const moreContext = yield* mw.handle.pipe(Effect.provide(context));
18
- yield* InfraLogger.logDebug("Built context for middleware", mw.maker.key ?? mw.maker, Option.map(moreContext, (c) => c.toJSON().services));
17
+ yield* InfraLogger.logDebug("Built dynamic context for middleware" + (mw.maker.key ?? mw.maker), Option.map(moreContext, (c) => c.toJSON().services));
19
18
  if (moreContext.value) {
20
19
  context = Context.merge(context, moreContext.value);
21
20
  }
22
21
  }
23
22
  return context;
24
23
  });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbGF5ZXJVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBMEMsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFrQzFDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUM1QyxRQUFRLENBQUMsRUFBb0UsTUFBUztJQUNwRixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDbEUsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDekIsOEJBQThCLEVBQzlCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQ3ZCLFdBQW1CLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUN2QyxDQUFBO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFDRCxPQUFPLE9BQStELENBQUE7QUFDeEUsQ0FBQyxDQUNGLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUNsRCxRQUFRLENBQUMsRUFBNEUsTUFBUztJQUM1RixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDbEUsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDekIsOEJBQThCLEVBQzlCLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQ3hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzdELENBQUE7UUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQyxDQUNGLENBQUEifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbGF5ZXJVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQTBDLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBa0MxQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDNUMsUUFBUSxDQUFDLEVBQW9FLE1BQVM7SUFDcEYsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3pCLHNDQUFzQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUNsRSxXQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FDdkMsQ0FBQTtRQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBQ0QsT0FBTyxPQUErRCxDQUFBO0FBQ3hFLENBQUMsQ0FDRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDbEQsUUFBUSxDQUFDLEVBQTRFLE1BQVM7SUFDNUYsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3pCLHNDQUFzQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUNuRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUM3RCxDQUFBO1FBQ0QsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FDRixDQUFBIn0=
@@ -1,7 +1,13 @@
1
- import { type Array, Context, Effect, Layer, type NonEmptyArray, type Scope } from "effect-app";
1
+ import { Context, Effect, Layer, type NonEmptyArray, type Scope } from "effect-app";
2
2
  import { type HttpRouter } from "effect-app/http";
3
3
  import { type Tag } from "effect/Context";
4
+ import { type YieldWrap } from "effect/Utils";
4
5
  import { type ContextTagWithDefault, type GetContext, type LayerUtils } from "../../layerUtils.js";
6
+ export declare namespace EffectGenUtils {
7
+ type Success<EG> = EG extends Effect<infer A, infer _E, infer _R> ? A : EG extends (..._: infer _3) => Generator<never, infer A, infer _2> ? A : EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer _R>>, infer A, infer _2> ? A : never;
8
+ type Error<EG> = EG extends Effect<infer _A, infer E, infer _R> ? E : EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never : EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer E, infer _R>>, infer _A, infer _2> ? E : never;
9
+ type Context<EG> = EG extends Effect<infer _A, infer _E, infer R> ? R : EG extends (..._: infer _3) => Generator<never, infer _A, infer _2> ? never : EG extends (..._: infer _3) => Generator<YieldWrap<Effect<infer _, infer _E, infer R>>, infer _A, infer _2> ? R : never;
10
+ }
5
11
  export type ContextProviderShape<ContextProviderA, ContextProviderR extends HttpRouter.HttpRouter.Provided> = Effect<Context.Context<ContextProviderA>, never, // no errors are allowed
6
12
  ContextProviderR>;
7
13
  export interface ContextProviderId {
@@ -11,25 +17,24 @@ export interface ContextProviderId {
11
17
  * TDeps is an array of services with Default implementation
12
18
  * each service is an effect which builds some context for each request
13
19
  */
14
- type TDepsArr = Array.NonEmptyReadonlyArray<ContextTagWithDefault.Base<Effect<Context.Context<any>, never, any> & {
15
- _tag: any;
16
- }> | ContextTagWithDefault.Base<Effect<Context.Context<any>, never, never> & {
17
- _tag: any;
18
- }>>;
19
- type ConstrainDeps<TDeps extends TDepsArr> = {
20
- [K in keyof TDeps]: TDeps[K]["Service"] extends Effect<Context.Context<any>, never, HttpRouter.HttpRouter.Provided> ? TDeps[K] : `HttpRouter.HttpRouter.Provided are the only requirements ${TDeps[K]["Service"]["_tag"]}'s returned effect can have`;
20
+ type TDepsArr<TDeps extends ReadonlyArray<any>> = {
21
+ [K in keyof TDeps]: TDeps[K] extends (ContextTagWithDefault.Base<Effect<Context.Context<infer _1>, never, infer _R> & {
22
+ _tag: infer _2;
23
+ }>) ? [_R] extends [HttpRouter.HttpRouter.Provided] ? TDeps[K] : `HttpRouter.HttpRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : TDeps[K] extends (ContextTagWithDefault.Base<(() => Generator<infer _YW, infer _1, infer _2>) & {
24
+ _tag: infer _3;
25
+ }>) ? [_YW] extends [never] ? TDeps[K] : [_YW] extends [YieldWrap<Effect<infer _2, never, infer _R>>] ? [_R] extends [HttpRouter.HttpRouter.Provided] ? TDeps[K] : `HttpRouter.HttpRouter.Provided is the only requirement ${TDeps[K]["Service"]["_tag"]}'s returned effect can have` : "WTF are you yielding man?" : `You cannot throw errors from providers`;
21
26
  };
22
- export declare const mergeContextProviders: <TDeps extends TDepsArr>(...deps: ConstrainDeps<TDeps>) => {
27
+ export declare const mergeContextProviders: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => {
23
28
  dependencies: { [K in keyof TDeps]: TDeps[K]["Default"]; };
24
- effect: Effect.Effect<Effect.Effect<Context.Context<GetContext<Effect.Success<Tag.Service<TDeps[number]>>>>, never, Effect.Context<Tag.Service<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
29
+ effect: Effect.Effect<Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Tag.Service<TDeps[number]>>>>, never, EffectGenUtils.Context<Tag.Service<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
25
30
  };
26
31
  export declare const ContextProvider: <ContextProviderA, MakeContextProviderE, MakeContextProviderR, ContextProviderR extends HttpRouter.HttpRouter.Provided, Dependencies extends NonEmptyArray<Layer.Layer.Any>>(input: {
27
- effect: Effect<Effect<ContextProviderA, never, ContextProviderR>, MakeContextProviderE, MakeContextProviderR | Scope>;
32
+ effect: Effect<Effect<ContextProviderA, never, ContextProviderR> | (() => Generator<YieldWrap<Effect<any, never, ContextProviderR>>, ContextProviderA, any>), MakeContextProviderE, MakeContextProviderR | Scope>;
28
33
  dependencies?: Dependencies;
29
34
  }) => Context.Tag<ContextProviderId, Effect<ContextProviderA, never, ContextProviderR>> & {
30
35
  Default: Layer.Layer<ContextProviderId, MakeContextProviderE | LayerUtils.GetLayersError<Dependencies>, Exclude<MakeContextProviderR, LayerUtils.GetLayersSuccess<Dependencies>> | LayerUtils.GetLayersContext<Dependencies>>;
31
36
  };
32
- export declare const MergedContextProvider: <TDeps extends TDepsArr>(...deps: ConstrainDeps<TDeps>) => ContextTagWithDefault<ContextProviderId, Effect.Effect<Context.Context<GetContext<Effect.Success<Tag.Service<TDeps[number]>>>>, never, Effect.Context<Tag.Service<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, Exclude<Tag.Service<TDeps[number]>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>> | LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
37
+ export declare const MergedContextProvider: <TDeps extends ReadonlyArray<any>>(...deps: TDepsArr<TDeps>) => ContextTagWithDefault<ContextProviderId, Effect.Effect<Context.Context<GetContext<EffectGenUtils.Success<Tag.Service<TDeps[number]>>>>, never, EffectGenUtils.Context<Tag.Service<TDeps[number]>>>, LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>, Exclude<Tag.Service<TDeps[number]>, LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>> | LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"]; }>>;
33
38
  export declare const EmptyContextProvider: Context.Tag<ContextProviderId, Effect<Context.Context<never>, never, never>> & {
34
39
  Default: Layer.Layer<ContextProviderId, never, never>;
35
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/ContextProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContextProvider.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/ContextProvider.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,20 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import { Context, Effect, Layer, pipe } from "effect-app";
2
3
  import { mergeContexts } from "../../layerUtils.js";
3
4
  // Note: the type here must be aligned with MergedContextProvider
4
- export const mergeContextProviders = (...deps) => ({
5
+ export const mergeContextProviders = (
6
+ // long life to reverse mapped types
7
+ ...deps) => ({
5
8
  dependencies: deps.map((_) => _.Default),
6
9
  effect: Effect.gen(function* () {
10
+ // uses the tags to request the context providers
7
11
  const makers = yield* Effect.all(deps);
8
12
  return Effect
9
13
  .gen(function* () {
10
- const services = makers.map((handle, i) => ({ maker: deps[i], handle }));
14
+ const services = makers.map((handle, i) => ({
15
+ maker: deps[i],
16
+ handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
17
+ }));
11
18
  // services are effects which return some Context.Context<...>
12
19
  const context = yield* mergeContexts(services);
13
20
  return context;
@@ -17,12 +24,15 @@ export const mergeContextProviders = (...deps) => ({
17
24
  // Effect Rpc Middleware: for single tag providing, we could use Provides, for providing Context or Layer (bad boy) we could use Wrap..
18
25
  export const ContextProvider = (input) => {
19
26
  const ctx = Context.GenericTag("ContextProvider");
20
- const l = Layer.scoped(ctx, input.effect);
27
+ const e = input.effect.pipe(Effect.map((eg) => eg[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(eg)() : eg));
28
+ const l = Layer.scoped(ctx, e);
21
29
  return Object.assign(ctx, {
22
30
  Default: l.pipe(input.dependencies ? Layer.provide(input.dependencies) : (_) => _)
23
31
  });
24
32
  };
25
33
  // Note: the type here must be aligned with mergeContextProviders
26
- export const MergedContextProvider = (...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
34
+ export const MergedContextProvider = (
35
+ // long life to reverse mapped types
36
+ ...deps) => pipe(deps, (_) => mergeContextProviders(..._), (_) => ContextProvider(_));
27
37
  export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvQ29udGV4dFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBc0IsSUFBSSxFQUFjLE1BQU0sWUFBWSxDQUFBO0FBR3JHLE9BQU8sRUFBZ0UsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFrQ2pILGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUduQyxHQUFHLElBQTBCLEVBYTdCLEVBQUUsQ0FBQyxDQUFDO0lBQ0osWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQVE7SUFDL0MsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsT0FBTyxNQUFNO2FBQ1YsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sUUFBUSxHQUFJLE1BQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ25GLDhEQUE4RDtZQUM5RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBZSxDQUFDLENBQUE7WUFDckQsT0FBTyxPQUFPLENBQUE7UUFDaEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQVE7Q0FDVixDQUFDLENBQUE7QUFFRix1SUFBdUk7QUFDdkksTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBTzdCLEtBT0MsRUFDRCxFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FJNUIsaUJBQWlCLENBQ2xCLENBQUE7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDekMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDYixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FPekU7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FHbkMsR0FBRyxJQUEwQixFQUM3QixFQUFFLENBQ0YsSUFBSSxDQUNGLElBQXFELEVBQ3JELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNsQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQVEsQ0FBQyxDQWVqQyxDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvQ29udGV4dFByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXNCLElBQUksRUFBYyxNQUFNLFlBQVksQ0FBQTtBQUt6RixPQUFPLEVBQWdFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBdUVqSCxpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7QUFHbkMsb0NBQW9DO0FBQ3BDLEdBQUcsSUFBcUIsRUFheEIsRUFBRSxDQUFDLENBQUM7SUFDSixZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBUyxDQUFDLE9BQU8sQ0FBUTtJQUN4RCxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDMUIsaURBQWlEO1FBQ2pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBYSxDQUFDLENBQUE7UUFDL0MsT0FBTyxNQUFNO2FBQ1YsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sUUFBUSxHQUFJLE1BQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDcEQ7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTTthQUNsRyxDQUNGLENBQUMsQ0FBQTtZQUNGLDhEQUE4RDtZQUM5RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBZSxDQUFDLENBQUE7WUFDckQsT0FBTyxPQUFPLENBQUE7UUFDaEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQVE7Q0FDVixDQUFDLENBQUE7QUFFRix1SUFBdUk7QUFDdkksTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBTzdCLEtBWUMsRUFDRCxFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FJNUIsaUJBQWlCLENBQ2xCLENBQUE7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUUsRUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDbEgsQ0FBQTtJQUNELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQVEsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDeEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2IsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBT3pFO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0FBR25DLG9DQUFvQztBQUNwQyxHQUFHLElBQXFCLEVBQ3hCLEVBQUUsQ0FDRixJQUFJLENBQ0YsSUFBcUQsRUFDckQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBUSxDQUFDLENBZWpDLENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBIn0=
@@ -1,9 +1,10 @@
1
- import { Context, Effect, Layer, type NonEmptyReadonlyArray, type Request, type S, type Scope } from "effect-app";
1
+ import { Rpc, RpcMiddleware } from "@effect/rpc";
2
+ import { type SuccessValue, type TagClass } from "@effect/rpc/RpcMiddleware";
3
+ import { Context, Effect, Layer, type NonEmptyReadonlyArray, type Request, type S, type Schema, type Scope } from "effect-app";
2
4
  import type { GetEffectContext, RPCContextMap } from "effect-app/client/req";
3
- import { type HttpRouter } from "effect-app/http";
5
+ import { type HttpHeaders, type HttpRouter } from "effect-app/http";
4
6
  import type * as EffectRequest from "effect/Request";
5
7
  import { type ContextTagWithDefault, type LayerUtils } from "../../layerUtils.js";
6
- import { type ContextProviderId, type ContextProviderShape } from "./ContextProvider.js";
7
8
  import { type ContextWithLayer } from "./dynamic-middleware.js";
8
9
  import { type GenericMiddlewareMaker } from "./generic-middleware.js";
9
10
  export type MakeRPCHandlerFactory<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR> = <T extends {
@@ -18,44 +19,65 @@ type RequestContextMapProvider<RequestContextMap extends Record<string, RPCConte
18
19
  }, RequestContextMap[K]["service"], S.Schema.Type<RequestContextMap[K]["error"]>>;
19
20
  };
20
21
  export interface MiddlewareMake<RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middleware provide dynamically to the next, or raise errors.
21
- ContextProviderA, // what the context provider provides
22
- ContextProviderR extends HttpRouter.HttpRouter.Provided, // what the context provider requires
23
- MakeContextProviderE, // what the context provider construction can fail with
24
- MakeContextProviderR, // what the context provider construction requires
25
22
  DynamicMiddlewareProviders extends RequestContextMapProvider<RequestContextMap>, // how to resolve the dynamic middleware
26
- GenericMiddlewareProviders extends ReadonlyArray<ContextTagWithDefault.Base<GenericMiddlewareMaker>>, MakeMiddlewareE, // what the middleware construction can fail with
23
+ GenericMiddlewareProviders extends NonEmptyReadonlyArray<GenericMiddlewareMaker>, MakeMiddlewareE, // what the middleware construction can fail with
27
24
  MakeMiddlewareR, // what the middleware requires to be constructed
28
25
  MiddlewareDependencies extends NonEmptyReadonlyArray<Layer.Layer.Any>> {
29
26
  dynamicMiddlewares: DynamicMiddlewareProviders;
30
27
  /** generic middlewares are those which follow the (next) => (input, headers) => pattern */
31
28
  genericMiddlewares: GenericMiddlewareProviders;
32
- /** static context providers */
33
- contextProvider?: ContextTagWithDefault<ContextProviderId, ContextProviderShape<ContextProviderA, ContextProviderR>, MakeContextProviderE, MakeContextProviderR>;
34
29
  dependencies?: MiddlewareDependencies;
35
- execute?: (maker: (cb: MakeRPCHandlerFactory<RequestContextMap, ContextProviderA | HttpRouter.HttpRouter.Provided>) => MakeRPCHandlerFactory<RequestContextMap, ContextProviderA | HttpRouter.HttpRouter.Provided>) => Effect<MakeRPCHandlerFactory<RequestContextMap, ContextProviderA | HttpRouter.HttpRouter.Provided>, MakeMiddlewareE, MakeMiddlewareR | Scope>;
30
+ execute?: (maker: (cb: MakeRPCHandlerFactory<RequestContextMap, GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]> | HttpRouter.HttpRouter.Provided>) => MakeRPCHandlerFactory<RequestContextMap, GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]> | HttpRouter.HttpRouter.Provided>) => Effect<MakeRPCHandlerFactory<RequestContextMap, GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]> | HttpRouter.HttpRouter.Provided>, MakeMiddlewareE, MakeMiddlewareR | Scope>;
36
31
  }
37
32
  export interface MiddlewareMakerId {
38
33
  _tag: "MiddlewareMaker";
39
34
  }
40
- export type Middleware<RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the next, or raise errors.
35
+ export type RouterMiddleware<RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the next, or raise errors.
41
36
  MakeMiddlewareE, // what the middleware construction can fail with
42
37
  MakeMiddlewareR, // what the middlware requires to be constructed
43
38
  ContextProviderA> = ContextTagWithDefault<MiddlewareMakerId, {
39
+ _tag: "MiddlewareMaker";
44
40
  effect: RPCHandlerFactory<RequestContextMap, ContextProviderA>;
45
- }, MakeMiddlewareE, MakeMiddlewareR, "MiddlewareMaker">;
41
+ }, MakeMiddlewareE, MakeMiddlewareR>;
46
42
  export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<RequestContextMap[keyof RequestContextMap]["error"]>;
47
43
  export declare const makeMiddleware: <RequestContextMap extends Record<string, RPCContextMap.Any>>() => <RequestContextProviders extends RequestContextMapProvider<RequestContextMap>, // how to resolve the dynamic middleware
48
- GenericMiddlewareProviders extends ReadonlyArray<ContextTagWithDefault.Base<GenericMiddlewareMaker>>, MiddlewareDependencies extends NonEmptyReadonlyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
49
- ContextProviderA = never, // what the context provider provides
50
- ContextProviderR extends HttpRouter.HttpRouter.Provided = never, // what the context provider requires
51
- MakeContextProviderE = never, // what the context provider construction can fail with
52
- MakeContextProviderR = never, // what the context provider construction requires
44
+ GenericMiddlewareProviders extends NonEmptyReadonlyArray<GenericMiddlewareMaker>, MiddlewareDependencies extends NonEmptyReadonlyArray<Layer.Layer.Any>, // layers provided for the middlware to be constructed
53
45
  MakeMiddlewareE = never, // what the middleware construction can fail with
54
- MakeMiddlewareR = never>(make: MiddlewareMake<RequestContextMap, ContextProviderA, ContextProviderR, MakeContextProviderE, MakeContextProviderR, RequestContextProviders, GenericMiddlewareProviders, MakeMiddlewareE, MakeMiddlewareR, MiddlewareDependencies>) => Context.Tag<MiddlewareMakerId, {
55
- effect: RPCHandlerFactory<RequestContextMap, ContextProviderA>;
46
+ MakeMiddlewareR = never>(make: MiddlewareMake<RequestContextMap, RequestContextProviders, GenericMiddlewareProviders, MakeMiddlewareE, MakeMiddlewareR, MiddlewareDependencies>) => Context.Tag<MiddlewareMakerId, {
47
+ effect: RPCHandlerFactory<RequestContextMap, GenericMiddlewareMaker.Provided<GenericMiddlewareProviders[number]>>;
56
48
  _tag: "MiddlewareMaker";
57
49
  }> & {
58
- Default: Layer.Layer<MiddlewareMakerId, MakeContextProviderE | MakeMiddlewareE | LayerUtils.GetLayersContext<[...{ [K in keyof GenericMiddlewareProviders]: GenericMiddlewareProviders[K]["Default"]; }]>, MakeContextProviderR | LayerUtils.GetLayersContext<[...{ [K in keyof GenericMiddlewareProviders]: GenericMiddlewareProviders[K]["Default"]; }]> | LayerUtils.GetLayersContext<MiddlewareDependencies> | Exclude<MakeMiddlewareR, LayerUtils.GetLayersSuccess<MiddlewareDependencies>>>;
50
+ Default: Layer.Layer<MiddlewareMakerId, MakeMiddlewareE | LayerUtils.GetLayersError<[...{ [K in keyof GenericMiddlewareProviders]: GenericMiddlewareProviders[K]["Default"]; }]>, LayerUtils.GetLayersContext<MiddlewareDependencies> | LayerUtils.GetLayersContext<[...{ [K in keyof GenericMiddlewareProviders]: GenericMiddlewareProviders[K]["Default"]; }]> | Exclude<MakeMiddlewareR, LayerUtils.GetLayersSuccess<MiddlewareDependencies>>>;
51
+ };
52
+ export interface RpcMiddleware<Provides, E> {
53
+ (options: {
54
+ readonly clientId: number;
55
+ readonly rpc: Rpc.AnyWithProps;
56
+ readonly payload: unknown;
57
+ readonly headers: HttpHeaders.Headers;
58
+ }): Effect.Effect<Provides, E, HttpRouter.HttpRouter.Provided>;
59
+ }
60
+ export interface RpcMiddlewareWrap<Provides, E> {
61
+ (options: {
62
+ readonly clientId: number;
63
+ readonly rpc: Rpc.AnyWithProps;
64
+ readonly payload: unknown;
65
+ readonly headers: HttpHeaders.Headers;
66
+ readonly next: Effect.Effect<SuccessValue, E, Provides | HttpRouter.HttpRouter.Provided>;
67
+ }): Effect.Effect<SuccessValue, E, HttpRouter.HttpRouter.Provided>;
68
+ }
69
+ type RpcOptionsOriginal = {
70
+ readonly wrap?: boolean;
71
+ readonly optional?: boolean;
72
+ readonly failure?: Schema.Schema.All;
73
+ readonly provides?: Context.Tag<any, any>;
74
+ readonly requiredForClient?: boolean;
75
+ };
76
+ export declare const Tag: <Self>() => <const Name extends string, const Options extends RpcOptionsOriginal>(id: Name, options?: Options | undefined) => <E, R, L extends NonEmptyReadonlyArray<Layer.Layer.Any>>(opts: {
77
+ effect: Effect.Effect<TagClass.Wrap<Options> extends true ? RpcMiddlewareWrap<TagClass.Provides<Options>, TagClass.Failure<Options>> : RpcMiddleware<TagClass.Service<Options>, TagClass.FailureService<Options>>, E, R>;
78
+ dependencies?: L;
79
+ }) => RpcMiddleware.TagClass<Self, Name, Options> & {
80
+ Default: Layer.Layer<Self, E | LayerUtils.GetLayersError<L>, Exclude<R, LayerUtils.GetLayersSuccess<L>>>;
59
81
  };
60
82
  export {};
61
83
  //# sourceMappingURL=DynamicMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/DynamicMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/DynamicMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
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, Option } from "effect-app";
4
+ import { Rpc, RpcMiddleware } from "@effect/rpc";
5
+ import { Console, Context, Effect, Layer, Unify } from "effect-app";
5
6
  import { implementMiddleware } from "./dynamic-middleware.js";
6
7
  import { genericMiddlewareMaker } from "./generic-middleware.js";
7
8
  // factory for middlewares
@@ -17,35 +18,43 @@ export const makeMiddleware =
17
18
  generic: middlewares.effect,
18
19
  middleware: make.execute
19
20
  ? make.execute((cb) => cb)
20
- : Effect.succeed((_schema, next) => (payload, headers) => next(payload, headers)),
21
- contextProvider: make.contextProvider
22
- ? make.contextProvider.pipe(Effect.map(Effect.map(Option.some)))
23
- : Effect.succeed(Effect.succeed(Option.none())) // uses the middleware.contextProvider tag to get the context provider service
21
+ : Effect.succeed((_schema, next) => (payload, headers) => next(payload, headers))
24
22
  })
25
- .pipe(Effect.map(({ contextProvider, dynamicMiddlewares, generic, middleware }) => ({
23
+ .pipe(Effect.map(({ dynamicMiddlewares, generic, middleware }) => ({
26
24
  _tag: "MiddlewareMaker",
27
25
  effect: makeRpcEffect()((schema, next, moduleName) => {
28
26
  const h = middleware(schema, next, moduleName);
29
- return (payload, headers) => Effect.gen(function* () {
30
- return yield* generic({
27
+ return (payload, headers) => Effect
28
+ .gen(function* () {
29
+ const gen = generic({
31
30
  payload,
32
31
  headers,
33
- rpc: { _tag: `${moduleName}.${payload._tag}` }, // todo: make moduleName part of the tag on S.Req creation.
34
- next: Effect.gen(function* () {
35
- yield* Effect.annotateCurrentSpan("request.name", moduleName ? `${moduleName}.${payload._tag}` : payload._tag);
36
- // the contextProvider is an Effect that builds the context for the request
37
- return yield* contextProvider.pipe(Effect.flatMap((contextProviderContext) =>
38
- // the dynamicMiddlewares is an Effect that builds the dynamiuc context for the request
39
- dynamicMiddlewares(schema.config ?? {}, headers).pipe(Effect.flatMap((dynamicContext) => h(payload, headers).pipe(Effect.provide(dynamicContext))), Effect.provide(Option.getOrElse(contextProviderContext, () => Context.empty())))));
40
- })
32
+ clientId: 0, // TODO: get the clientId from the request context
33
+ rpc: {
34
+ ...Rpc.fromTaggedRequest(schema),
35
+ // middlewares ? // todo: get from actual middleware flow?
36
+ annotations: Context.empty(), // TODO //Annotations(schema as any),
37
+ // successSchema: schema.success ?? Schema.Void,
38
+ // errorSchema: schema.failure ?? Schema.Never,
39
+ payloadSchema: schema,
40
+ _tag: `${moduleName}.${payload._tag}`,
41
+ key: `${moduleName}.${payload._tag}` /* ? */
42
+ // clientId: 0 as number /* ? */
43
+ }, // todo: make moduleName part of the tag on S.Req creation.
44
+ next:
45
+ // the contextProvider is an Effect that builds the context for the request
46
+ // the dynamicMiddlewares is an Effect that builds the dynamiuc context for the request
47
+ dynamicMiddlewares(schema.config ?? {}, headers).pipe(Effect.flatMap((dynamicContext) => h(payload, headers).pipe(Effect.provide(dynamicContext))))
41
48
  });
42
- }); // why?
49
+ console.log({ gen });
50
+ return yield* gen;
51
+ })
52
+ .pipe(Effect.onExit(Console.log)); // why?
43
53
  })
44
- }))));
54
+ })), Effect.onExit(Console.log)));
45
55
  const dependencies = [
46
56
  ...(make.dependencies ? make.dependencies : []),
47
57
  ...dynamicMiddlewares.dependencies,
48
- ...(make.contextProvider?.Default ? [make.contextProvider.Default] : []),
49
58
  ...middlewares.dependencies
50
59
  ];
51
60
  const middlewareLayer = l
@@ -56,4 +65,35 @@ export const makeMiddleware =
56
65
  function makeRpcEffect() {
57
66
  return (cb) => cb;
58
67
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWlkZGxld2FyZS9EeW5hbWljTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQThCLE1BQU0sRUFBb0MsTUFBTSxZQUFZLENBQUE7QUFNekgsT0FBTyxFQUF5QixtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BGLE9BQU8sRUFBK0Isc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQW9KN0YsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLGNBQWM7QUFDekIscUdBQXFHO0FBQ3JHLEdBRUksRUFBRSxDQUNOLENBZUUsSUFXQyxFQUNELEVBQUU7SUFDRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQU94QyxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUVELE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLEVBQXFCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDNUYsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUV0RSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNwQixlQUFlLEVBQ2YsTUFBTTtTQUNILEdBQUcsQ0FBQztRQUNILGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLE1BQU07UUFDN0MsT0FBTyxFQUFFLFdBQVcsQ0FBQyxNQUFNO1FBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUNiLEVBQStGLEVBQy9GLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDUixDQUFDLENBQUMs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
68
+ export const Tag = () => (id, options) => (opts) => class extends RpcMiddleware.Tag()(id, options) {
69
+ static Default = Layer.scoped(this, opts.effect).pipe(Layer.provide([Layer.empty, ...opts.dependencies ?? []]));
70
+ static [Unify.typeSymbol];
71
+ static [Unify.unifySymbol];
72
+ static [Unify.ignoreSymbol];
73
+ };
74
+ // export const Tag = <Self>() =>
75
+ // <
76
+ // const Name extends string,
77
+ // const Options extends Omit<RpcOptionsOriginal, "wrap">
78
+ // >(
79
+ // id: Name,
80
+ // options?: Options | undefined
81
+ // ) =>
82
+ // OurTag<Self>()(id, { ...options, wrap: true } as Options & { wrap: true }) as <
83
+ // E,
84
+ // R,
85
+ // L extends NonEmptyReadonlyArray<Layer.Layer.Any>
86
+ // >(opts: {
87
+ // effect: Effect.Effect<
88
+ // RpcMiddlewareWrap<
89
+ // RpcMiddleware.TagClass.Provides<Options>,
90
+ // RpcMiddleware.TagClass.Failure<Options>
91
+ // >,
92
+ // E,
93
+ // R
94
+ // >
95
+ // dependencies?: L
96
+ // }) => RpcMiddleware.TagClass<Self, Name, Options> & {
97
+ // Default: Layer.Layer<Self, E | LayerUtils.GetLayersError<L>, Exclude<R, LayerUtils.GetLayersSuccess<L>>>
98
+ // }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWlkZGxld2FyZS9EeW5hbWljTWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE2RSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFNOUksT0FBTyxFQUF5QixtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BGLE9BQU8sRUFBK0Isc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQWlKN0YsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLGNBQWM7QUFDekIscUdBQXFHO0FBQ3JHLEdBRUksRUFBRSxDQUNOLENBT0UsSUFPQyxFQUNELEVBQUU7SUFDRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQVV4QyxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUVELE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLEVBQXFCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDNUYsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUV0RSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNwQixlQUFlLEVBQ2YsTUFBTTtTQUNILEdBQUcsQ0FBQztRQUNILGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLE1BQU07UUFDN0MsT0FBTyxFQUFFLFdBQVcsQ0FBQyxNQUFNO1FBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLE9B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
@@ -1,18 +1,25 @@
1
- import { type Array, Effect } from "effect-app";
1
+ import { type Rpc, type RpcMiddleware } from "@effect/rpc";
2
+ import { type SuccessValue, type TagClassAny } from "@effect/rpc/RpcMiddleware";
3
+ import { type Array, Context, Effect, type Layer } from "effect-app";
2
4
  import { type HttpHeaders, type HttpRouter } from "effect-app/http";
3
- import { type ContextTagWithDefault } from "../../layerUtils.js";
4
- export interface GenericMiddlewareOptions<A, E> {
5
- readonly next: Effect.Effect<A, E, HttpRouter.HttpRouter.Provided>;
5
+ export interface GenericMiddlewareOptions<E> {
6
+ readonly next: Effect.Effect<SuccessValue, E, HttpRouter.HttpRouter.Provided>;
6
7
  readonly payload: unknown;
7
8
  readonly headers: HttpHeaders.Headers;
8
- readonly rpc: {
9
- _tag: string;
10
- };
9
+ readonly clientId: number;
10
+ readonly rpc: Rpc.AnyWithProps;
11
+ }
12
+ export type GenericMiddlewareMaker = TagClassAny & {
13
+ Default: Layer.Layer.Any;
14
+ };
15
+ export declare namespace GenericMiddlewareMaker {
16
+ type Provided<T> = T extends TagClassAny ? T extends {
17
+ provides: Context.Tag<any, any>;
18
+ } ? Context.Tag.Identifier<T["provides"]> : never : never;
11
19
  }
12
- export type GenericMiddlewareMaker = <A, E>(options: GenericMiddlewareOptions<A, E>) => Effect.Effect<A, E, HttpRouter.HttpRouter.Provided>;
13
20
  export declare const genericMiddleware: (i: GenericMiddlewareMaker) => GenericMiddlewareMaker;
14
- export declare const genericMiddlewareMaker: <T extends Array<ContextTagWithDefault.Base<GenericMiddlewareMaker>>>(...middlewares: T) => {
21
+ export declare const genericMiddlewareMaker: <T extends Array<GenericMiddlewareMaker>>(...middlewares: T) => {
15
22
  dependencies: { [K in keyof T]: T[K]["Default"]; };
16
- effect: Effect.Effect<GenericMiddlewareMaker>;
23
+ effect: Effect.Effect<RpcMiddleware.RpcMiddlewareWrap<any, any>>;
17
24
  };
18
25
  //# sourceMappingURL=generic-middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/generic-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,MAAM,WAAW,wBAAwB,CAAC,CAAC,EAAE,CAAC;IAE5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAA;IAErC,QAAQ,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/B;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,EAAE,CAAC,EACxC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAExD,eAAO,MAAM,iBAAiB,GAAI,GAAG,sBAAsB,2BAAM,CAAA;AAEjE,eAAO,MAAM,sBAAsB,GACjC,CAAC,SAAS,KAAK,CACb,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CACnD,EACD,GAAG,aAAa,CAAC,KAAG;IACpB,YAAY,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAE,CAAA;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;CAkB9C,CAAA"}
1
+ {"version":3,"file":"generic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/generic-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGnE,MAAM,WAAW,wBAAwB,CAAC,CAAC;IAEzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAA;CAC/B;AAED,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAA;CAAE,CAAA;AAE/E,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,GAC3C,CAAC,SAAS;QAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,GAC7F,KAAK,CAAA;CACV;AAED,eAAO,MAAM,iBAAiB,GAAI,GAAG,sBAAsB,2BAAM,CAAA;AAEjE,eAAO,MAAM,sBAAsB,GACjC,CAAC,SAAS,KAAK,CAAC,sBAAsB,CAAC,EACvC,GAAG,aAAa,CAAC,KAAG;IACpB,YAAY,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAE,CAAA;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;CAkDjE,CAAA"}
@@ -1,19 +1,45 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Effect } from "effect-app";
1
+ import { Context, Effect } from "effect-app";
2
+ import { InfraLogger } from "../../../logger.js";
3
3
  export const genericMiddleware = (i) => i;
4
4
  export const genericMiddlewareMaker = (...middlewares) => {
5
+ // we want to run them in reverse order
6
+ middlewares = middlewares.toReversed();
5
7
  return {
6
8
  dependencies: middlewares.map((_) => _.Default),
7
9
  effect: Effect.gen(function* () {
8
- const middlewaresInstances = yield* Effect.all(middlewares);
10
+ const context = yield* Effect.context();
11
+ // const middlewares: readonly (RpcMiddlewareWrap<any, any> | RpcMiddleware.RpcMiddleware<any, any>)[] =
12
+ // (yield* Effect.all(
13
+ // middlewares
14
+ // )) as any
9
15
  return (options) => {
10
- let next = options.next;
11
- for (const middleware of middlewaresInstances.toReversed()) {
12
- next = middleware({ ...options, next });
16
+ let handler = options.next;
17
+ // copied from RpcMiddleare
18
+ for (const tag of middlewares) {
19
+ if (tag.wrap) {
20
+ const middleware = Context.unsafeGet(context, tag);
21
+ handler = InfraLogger.logDebug("Applying middleware " + tag.key).pipe(Effect.zipRight(middleware({ ...options, next: handler })));
22
+ }
23
+ else if (tag.optional) {
24
+ const middleware = Context.unsafeGet(context, tag);
25
+ const previous = handler;
26
+ handler = InfraLogger.logDebug("Applying middleware " + tag.key).pipe(Effect.zipRight(Effect.matchEffect(middleware(options), {
27
+ onFailure: () => previous,
28
+ onSuccess: tag.provides !== undefined
29
+ ? (value) => Effect.provideService(previous, tag.provides, value)
30
+ : (_) => previous
31
+ })));
32
+ }
33
+ else {
34
+ const middleware = Context.unsafeGet(context, tag);
35
+ handler = InfraLogger.logDebug("Applying middleware " + tag.key).pipe(Effect.zipRight(tag.provides !== undefined
36
+ ? Effect.provideServiceEffect(handler, tag.provides, middleware(options))
37
+ : Effect.zipRight(middleware(options), handler)));
38
+ }
13
39
  }
14
- return next;
40
+ return handler;
15
41
  };
16
42
  })
17
43
  };
18
44
  };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZ2VuZXJpYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQWMsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBaUIvQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVqRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUlwQyxHQUFHLFdBQWMsRUFHakIsRUFBRTtJQUNGLE9BQU87UUFDTCxZQUFZLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMvQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDMUIsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBRTNELE9BQU8sQ0FDTCxPQUF1QyxFQUN2QyxFQUFFO2dCQUNGLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7Z0JBQ3ZCLEtBQUssTUFBTSxVQUFVLElBQUssb0JBQThCLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztvQkFDdEUsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7Z0JBQ3pDLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDLENBQUE7UUFDSCxDQUFDLENBQUM7S0FDSSxDQUFBO0FBQ1YsQ0FBQyxDQUFBIn0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZ2VuZXJpYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxFQUFjLE1BQU0sWUFBWSxDQUFBO0FBRXBFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQW1CaEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFakUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FFcEMsR0FBRyxXQUFjLEVBR2pCLEVBQUU7SUFDRix1Q0FBdUM7SUFDdkMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxVQUFVLEVBQVMsQ0FBQTtJQUM3QyxPQUFPO1FBQ0wsWUFBWSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDL0MsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzFCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUN2Qyx3R0FBd0c7WUFDeEcsd0JBQXdCO1lBQ3hCLGtCQUFrQjtZQUNsQixjQUFjO1lBRWQsT0FBTyxDQUNMLE9BQW9DLEVBQ3BDLEVBQUU7Z0JBQ0YsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtnQkFDMUIsMkJBQTJCO2dCQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUM5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDYixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTt3QkFDbEQsT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDbkUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBYyxFQUFFLENBQUMsQ0FBQyxDQUMzRCxDQUFBO29CQUNWLENBQUM7eUJBQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3hCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBMEMsQ0FBQTt3QkFDM0YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFBO3dCQUN4QixPQUFPLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNuRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUN0RCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUTs0QkFDekIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztnQ0FDbkMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBZSxFQUFFLEtBQUssQ0FBQztnQ0FDeEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRO3lCQUNwQixDQUFDLENBQUMsQ0FDSixDQUFBO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQTBDLENBQUE7d0JBQzNGLE9BQU8sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ25FLE1BQU0sQ0FBQyxRQUFRLENBQ2IsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTOzRCQUN4QixDQUFDLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBZSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFDaEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUNsRCxDQUNGLENBQUE7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sT0FBTyxDQUFBO1lBQ2hCLENBQUMsQ0FBQTtRQUNILENBQUMsQ0FBQztLQUNJLENBQUE7QUFDVixDQUFDLENBQUEifQ==