@effect-app/infra 2.86.0 → 2.87.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 (49) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/api/layerUtils.d.ts +1 -5
  3. package/dist/api/layerUtils.d.ts.map +1 -1
  4. package/dist/api/layerUtils.js +3 -11
  5. package/dist/api/routing/middleware/RouterMiddleware.d.ts +33 -0
  6. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  7. package/dist/api/routing/middleware/RouterMiddleware.js +5 -0
  8. package/dist/api/routing/middleware/RpcMiddleware.d.ts +199 -0
  9. package/dist/api/routing/middleware/RpcMiddleware.d.ts.map +1 -0
  10. package/dist/api/routing/middleware/RpcMiddleware.js +14 -0
  11. package/dist/api/routing/middleware/dynamic-middleware.d.ts +2 -12
  12. package/dist/api/routing/middleware/dynamic-middleware.d.ts.map +1 -1
  13. package/dist/api/routing/middleware/dynamic-middleware.js +2 -18
  14. package/dist/api/routing/middleware/generic-middleware.d.ts +4 -23
  15. package/dist/api/routing/middleware/generic-middleware.d.ts.map +1 -1
  16. package/dist/api/routing/middleware/generic-middleware.js +13 -9
  17. package/dist/api/routing/middleware/middleware-api.d.ts +43 -7
  18. package/dist/api/routing/middleware/middleware-api.d.ts.map +1 -1
  19. package/dist/api/routing/middleware/middleware-api.js +47 -22
  20. package/dist/api/routing/middleware/middleware.d.ts +3 -3
  21. package/dist/api/routing/middleware/middleware.js +2 -2
  22. package/dist/api/routing/middleware.d.ts +2 -1
  23. package/dist/api/routing/middleware.d.ts.map +1 -1
  24. package/dist/api/routing/middleware.js +3 -2
  25. package/dist/api/routing/tsort.d.ts +2 -2
  26. package/dist/api/routing/tsort.d.ts.map +1 -1
  27. package/dist/api/routing/tsort.js +1 -1
  28. package/package.json +9 -5
  29. package/src/api/layerUtils.ts +4 -18
  30. package/src/api/routing/middleware/RouterMiddleware.ts +149 -0
  31. package/src/api/routing/middleware/RpcMiddleware.ts +287 -0
  32. package/src/api/routing/middleware/dynamic-middleware.ts +5 -52
  33. package/src/api/routing/middleware/generic-middleware.ts +23 -34
  34. package/src/api/routing/middleware/middleware-api.ts +142 -59
  35. package/src/api/routing/middleware/middleware.ts +1 -1
  36. package/src/api/routing/middleware.ts +2 -1
  37. package/src/api/routing/tsort.ts +2 -2
  38. package/test/controller.test.ts +22 -58
  39. package/test/dist/controller.test.d.ts.map +1 -1
  40. package/test/dist/fixtures.d.ts +4 -2
  41. package/test/dist/fixtures.d.ts.map +1 -1
  42. package/test/dist/fixtures.js +21 -9
  43. package/test/dist/requires.test.d.ts.map +1 -1
  44. package/test/fixtures.ts +29 -12
  45. package/test/requires.test.ts +98 -17
  46. package/dist/api/routing/middleware/DynamicMiddleware.d.ts +0 -229
  47. package/dist/api/routing/middleware/DynamicMiddleware.d.ts.map +0 -1
  48. package/dist/api/routing/middleware/DynamicMiddleware.js +0 -168
  49. package/src/api/routing/middleware/DynamicMiddleware.ts +0 -715
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 2.87.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 99cf15f: unify middleware api
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [99cf15f]
12
+ - effect-app@2.52.0
13
+
3
14
  ## 2.86.0
4
15
 
5
16
  ### Minor Changes
@@ -19,10 +19,6 @@ export declare namespace ContextTagWithDefault {
19
19
  export type GetContext<T> = T extends Context.Context<infer Y> ? Y : never;
20
20
  export declare const mergeContexts: <T extends readonly {
21
21
  maker: any;
22
- handle: Effect<Context<any>>;
22
+ handle: Effect<Context<any> | Option<Context<any>>>;
23
23
  }[]>(makers: T) => Effect.Effect<Context.Context<Effect.Effect.Success<T[number]["handle"]>>, never, never>;
24
- export declare const mergeOptionContexts: <T extends readonly {
25
- maker: any;
26
- handle: Effect<Option<Context<any>>>;
27
- }[]>(makers: T) => Effect.Effect<Context.Context<never>, never, never>;
28
24
  //# sourceMappingURL=layerUtils.d.ts.map
@@ -1 +1 @@
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,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEvC,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,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEvC,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,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;CACtC;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
+ {"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,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEvC,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,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEvC,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,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;CACtC;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,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;CAAE,EAAE,wGAenG,CAAA"}
@@ -4,16 +4,8 @@ import { InfraLogger } from "../logger.js";
4
4
  export const mergeContexts = Effect.fnUntraced(function* (makers) {
5
5
  let context = Context.empty();
6
6
  for (const mw of makers) {
7
- const moreContext = yield* mw.handle.pipe(Effect.provide(context));
8
- yield* InfraLogger.logDebug("Built dynamic context for middleware" + (mw.maker.key ?? mw.maker), moreContext.toJSON().services);
9
- context = Context.merge(context, moreContext);
10
- }
11
- return context;
12
- });
13
- export const mergeOptionContexts = Effect.fnUntraced(function* (makers) {
14
- let context = Context.empty();
15
- for (const mw of makers) {
16
- const moreContext = yield* mw.handle.pipe(Effect.provide(context));
7
+ const ctx = yield* mw.handle.pipe(Effect.provide(context));
8
+ const moreContext = Context.isContext(ctx) ? Option.some(ctx) : ctx;
17
9
  yield* InfraLogger.logDebug("Built dynamic context for middleware" + (mw.maker.key ?? mw.maker), Option.map(moreContext, (c) => c.toJSON().services));
18
10
  if (moreContext.value) {
19
11
  context = Context.merge(context, moreContext.value);
@@ -21,4 +13,4 @@ export const mergeOptionContexts = Effect.fnUntraced(function* (makers) {
21
13
  }
22
14
  return context;
23
15
  });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbGF5ZXJVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQTBDLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBa0MxQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDNUMsUUFBUSxDQUFDLEVBQW9FLE1BQVM7SUFDcEYsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3pCLHNDQUFzQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUNsRSxXQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FDdkMsQ0FBQTtRQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBQ0QsT0FBTyxPQUErRCxDQUFBO0FBQ3hFLENBQUMsQ0FDRixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDbEQsUUFBUSxDQUFDLEVBQTRFLE1BQVM7SUFDNUYsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3pCLHNDQUFzQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUNuRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUM3RCxDQUFBO1FBQ0QsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FDRixDQUFBIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbGF5ZXJVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQTBDLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBa0MxQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDNUMsUUFBUSxDQUFDLEVBQTJGLE1BQVM7SUFDM0csSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzdCLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQzFELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUNuRSxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUN6QixzQ0FBc0MsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDbkUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDN0QsQ0FBQTtRQUNELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckQsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE9BQStELENBQUE7QUFDeEUsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,33 @@
1
+ import { type Effect, type Request, type S, type Scope } from "effect-app";
2
+ import type { GetEffectContext, RPCContextMap } from "effect-app/client/req";
3
+ import type * as EffectRequest from "effect/Request";
4
+ import { type ContextTagWithDefault } from "../../layerUtils.js";
5
+ import { type ContextWithLayer } from "./dynamic-middleware.js";
6
+ export type MakeRPCHandlerFactory<RequestContextMap extends Record<string, RPCContextMap.Any>, MiddlewareR> = <T extends {
7
+ config?: Partial<Record<keyof RequestContextMap, any>>;
8
+ }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, next: (request: Req, headers: any) => Effect.Effect<EffectRequest.Request.Success<Req>, EffectRequest.Request.Error<Req>, Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>>, 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
+ export type RPCHandlerFactory<RequestContextMap extends Record<string, RPCContextMap.Any>, ContextProviderA> = <T extends {
10
+ config?: Partial<Record<keyof RequestContextMap, any>>;
11
+ }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, next: (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>, Scope.Scope | Exclude<Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>, ContextProviderA>>;
12
+ export type RequestContextMapProvider<RequestContextMap extends Record<string, RPCContextMap.Any>> = {
13
+ [K in keyof RequestContextMap]: ContextWithLayer.Base<{
14
+ [K in keyof RequestContextMap]?: RequestContextMap[K]["contextActivation"];
15
+ }, RequestContextMap[K]["service"], S.Schema.Type<RequestContextMap[K]["error"]>>;
16
+ };
17
+ export interface MiddlewareMakerId {
18
+ _tag: "MiddlewareMaker";
19
+ }
20
+ export type RouterMiddleware<RequestContextMap extends Record<string, RPCContextMap.Any>, // what services will the middlware provide dynamically to the next, or raise errors.
21
+ MakeMiddlewareE, // what the middleware construction can fail with
22
+ MakeMiddlewareR, // what the middlware requires to be constructed
23
+ ContextProviderA> = ContextTagWithDefault<MiddlewareMakerId, {
24
+ _tag: "MiddlewareMaker";
25
+ effect: RPCHandlerFactory<RequestContextMap, ContextProviderA>;
26
+ }, MakeMiddlewareE, MakeMiddlewareR>;
27
+ export type RequestContextMapErrors<RequestContextMap extends Record<string, RPCContextMap.Any>> = S.Schema.Type<RequestContextMap[keyof RequestContextMap]["error"]>;
28
+ export declare function makeRpcEffect<RequestContextMap extends Record<string, RPCContextMap.Any>, ContextProviderA>(): (cb: <T extends {
29
+ config?: Partial<Record<keyof RequestContextMap, any>>;
30
+ }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, next: (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>, Scope.Scope | Exclude<Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>, ContextProviderA>>) => <T extends {
31
+ config?: Partial<Record<keyof RequestContextMap, any>>;
32
+ }, Req extends S.TaggedRequest.All, HandlerR>(schema: T & S.Schema<Req, any, never>, next: (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>, Scope.Scope | Exclude<Exclude<HandlerR, GetEffectContext<RequestContextMap, (T & S.Schema<Req, any, never>)["config"]>>, ContextProviderA>>;
33
+ //# sourceMappingURL=RouterMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/RouterMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,KAAK,KAAK,aAAa,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI/D,MAAM,MAAM,qBAAqB,CAC/B,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAC3D,WAAW,IACT,CACF,CAAC,SAAS;IACR,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAA;CACvD,EACD,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAC/B,QAAQ,EAER,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EACrC,IAAI,EAAE,CACJ,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAEhC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClG,EACD,UAAU,EAAE,MAAM,KACf,CACH,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,EAErE,WAAW,GAEX,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpG,CAAA;AAED,MAAM,MAAM,iBAAiB,CAC3B,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAC3D,gBAAgB,IACd,CACF,CAAC,SAAS;IACR,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAA;CACvD,EACD,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAC/B,QAAQ,EAER,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EACrC,IAAI,EAAE,CACJ,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAChC,QAAQ,CACT,EACD,UAAU,EAAE,MAAM,KACf,CACH,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,EACrE,KAAK,CAAC,KAAK,GACX,OAAO,CAGP,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAEjG,gBAAgB,CACjB,CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,CAAC,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI;KAClG,CAAC,IAAI,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CACnD;SAAG,CAAC,IAAI,MAAM,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;KAAE,EAC9E,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAC7C;CACF,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAA;CACxB;AAED,MAAM,MAAM,gBAAgB,CAC1B,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,qFAAqF;AAClJ,eAAe,EAAE,iDAAiD;AAClE,eAAe,EAAE,gDAAgD;AACjE,gBAAgB,IACd,qBAAqB,CACvB,iBAAiB,EACjB;IACE,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;CAC/D,EACD,eAAe,EACf,eAAe,CAChB,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAC9G,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CAAC,OAAO,CAAC,CACpD,CAAA;AAGD,wBAAgB,aAAa,CAC3B,iBAAiB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAC3D,gBAAgB,MAGd,IAAI,CACF,CAAC,SAAS;IACR,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAA;CACvD,EACD,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAC/B,QAAQ,EAER,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EACrC,IAAI,EAAE,CACJ,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAChC,QAAQ,CACT,EACD,UAAU,EAAE,MAAM,KACf,CACH,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,EACrE,KAAK,CAAC,KAAK,GACX,OAAO,CAEP,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjG,gBAAgB,CACjB,CACF,MA5BC,CAAC,SAAS;IACR,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAA;CACvD,EACD,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAC/B,QAAQ,UAEA,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,QAC/B,CACJ,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAChC,QAAQ,CACT,cACW,MAAM,KACf,CACH,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,EACrE,KAAK,CAAC,KAAK,GACX,OAAO,CAEP,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjG,gBAAgB,CACjB,CACF,CAEJ"}
@@ -0,0 +1,5 @@
1
+ // it just provides the right types without cluttering the implementation with them
2
+ export function makeRpcEffect() {
3
+ return (cb) => cb;
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyTWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9taWRkbGV3YXJlL1JvdXRlck1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0dBLG1GQUFtRjtBQUNuRixNQUFNLFVBQVUsYUFBYTtJQUkzQixPQUFPLENBQ0wsRUE2QkMsRUFDRCxFQUFFLENBQUMsRUFBRSxDQUFBO0FBQ1QsQ0FBQyJ9
@@ -0,0 +1,199 @@
1
+ import { type Rpc } from "@effect/rpc";
2
+ import { type SuccessValue, type TypeId } from "@effect/rpc/RpcMiddleware";
3
+ import { type Context, type Effect, Layer, type NonEmptyReadonlyArray, type Option, type S, type Schema, type Scope } from "effect-app";
4
+ import type { AnyService, ContextRepr, RPCContextMap } from "effect-app/client/req";
5
+ import { type HttpHeaders } from "effect-app/http";
6
+ import { type LayerUtils } from "../../layerUtils.js";
7
+ export interface RpcMiddleware<Provides, E, Requires> {
8
+ (options: {
9
+ readonly clientId: number;
10
+ readonly rpc: Rpc.AnyWithProps;
11
+ readonly payload: unknown;
12
+ readonly headers: HttpHeaders.Headers;
13
+ }): Effect.Effect<Provides, E, Scope.Scope | Requires>;
14
+ }
15
+ export interface RpcMiddlewareWrap<Provides, E, Requires> {
16
+ (options: {
17
+ readonly clientId: number;
18
+ readonly rpc: Rpc.AnyWithProps;
19
+ readonly payload: unknown;
20
+ readonly headers: HttpHeaders.Headers;
21
+ readonly next: Effect.Effect<SuccessValue, E, Provides | Scope.Scope | Requires>;
22
+ }): Effect.Effect<SuccessValue, E, Scope.Scope | Requires>;
23
+ }
24
+ type RpcOptionsOriginal = {
25
+ readonly wrap?: boolean;
26
+ readonly optional?: boolean;
27
+ readonly failure?: Schema.Schema.All;
28
+ readonly provides?: AnyService;
29
+ readonly requiredForClient?: boolean;
30
+ };
31
+ export type RpcDynamic<Key extends string, A extends RPCContextMap.Any> = {
32
+ key: Key;
33
+ settings: A;
34
+ };
35
+ export type AnyDynamic = {
36
+ dynamic: RpcDynamic<any, any>;
37
+ };
38
+ export type DependsOn = {
39
+ readonly dependsOn: NonEmptyReadonlyArray<AnyDynamic> | undefined;
40
+ };
41
+ type RpcOptionsDynamic<Key extends string, A extends RPCContextMap.Any> = RpcOptionsOriginal & {
42
+ readonly dynamic: RpcDynamic<Key, A>;
43
+ readonly dependsOn?: NonEmptyReadonlyArray<AnyDynamic> | undefined;
44
+ };
45
+ export type Dynamic<Options> = Options extends RpcOptionsDynamic<any, any> ? true : false;
46
+ export interface RpcMiddlewareDynamicWrap<E, R, Config> {
47
+ (options: {
48
+ readonly next: Effect.Effect<SuccessValue, E, Scope.Scope | R>;
49
+ readonly config: Config;
50
+ readonly clientId: number;
51
+ readonly rpc: Rpc.AnyWithProps;
52
+ readonly payload: unknown;
53
+ readonly headers: HttpHeaders.Headers;
54
+ }): Effect.Effect<SuccessValue, E, Scope.Scope | R>;
55
+ }
56
+ export interface RpcMiddlewareDynamicNormal<A, E, R, Config> {
57
+ (options: {
58
+ readonly config: Config;
59
+ readonly clientId: number;
60
+ readonly rpc: Rpc.AnyWithProps;
61
+ readonly payload: unknown;
62
+ readonly headers: HttpHeaders.Headers;
63
+ }): Effect.Effect<Option.Option<A>, E, Scope.Scope | R>;
64
+ }
65
+ export interface TagClassAny extends Context.Tag<any, any> {
66
+ readonly [TypeId]: TypeId;
67
+ readonly optional: boolean;
68
+ readonly provides?: Context.Tag<any, any> | ContextRepr | undefined;
69
+ readonly requires?: Context.Tag<any, any> | ContextRepr | undefined;
70
+ readonly failure: Schema.Schema.All;
71
+ readonly requiredForClient: boolean;
72
+ readonly wrap: boolean;
73
+ readonly dynamic?: RpcDynamic<any, any> | undefined;
74
+ readonly dependsOn?: NonEmptyReadonlyArray<AnyDynamic> | undefined;
75
+ }
76
+ export declare namespace TagClass {
77
+ /**
78
+ * @since 1.0.0
79
+ * @category models
80
+ */
81
+ type Provides<Options> = Options extends {
82
+ readonly provides: Context.Tag<any, any>;
83
+ readonly optional?: false;
84
+ } ? Context.Tag.Identifier<Options["provides"]> : Options extends {
85
+ readonly provides: ContextRepr;
86
+ readonly optional?: false;
87
+ } ? ContextRepr.Identifier<Options["provides"]> : never;
88
+ /**
89
+ * @since 1.0.0
90
+ * @category models
91
+ */
92
+ type Requires<Options> = Options extends {
93
+ readonly requires: Context.Tag<any, any>;
94
+ } ? Context.Tag.Identifier<Options["requires"]> : Options extends {
95
+ readonly requires: ContextRepr;
96
+ } ? ContextRepr.Identifier<Options["requires"]> : never;
97
+ /**
98
+ * @since 1.0.0
99
+ * @category models
100
+ */
101
+ type Service<Options> = Options extends {
102
+ readonly provides: Context.Tag<any, any>;
103
+ } ? Context.Tag.Service<Options["provides"]> : Options extends {
104
+ readonly dynamic: RpcDynamic<any, infer A>;
105
+ } ? Options extends {
106
+ wrap: true;
107
+ } ? void : AnyService.Bla<A["service"]> : Options extends {
108
+ readonly provides: ContextRepr;
109
+ } ? Context.Context<ContextRepr.Identifier<Options["provides"]>> : void;
110
+ /**
111
+ * @since 1.0.0
112
+ * @category models
113
+ */
114
+ type FailureSchema<Options> = Options extends {
115
+ readonly failure: Schema.Schema.All;
116
+ readonly optional?: false;
117
+ } ? Options["failure"] : Options extends {
118
+ readonly dynamic: RpcDynamic<any, infer A>;
119
+ } ? A["error"] : typeof Schema.Never;
120
+ /**
121
+ * @since 1.0.0
122
+ * @category models
123
+ */
124
+ type Failure<Options> = Options extends {
125
+ readonly failure: Schema.Schema<infer _A, infer _I, infer _R>;
126
+ readonly optional?: false;
127
+ } ? _A : Options extends {
128
+ readonly dynamic: RpcDynamic<any, infer A>;
129
+ } ? S.Schema.Type<A["error"]> : never;
130
+ /**
131
+ * @since 1.0.0
132
+ * @category models
133
+ */
134
+ type FailureContext<Options> = Schema.Schema.Context<FailureSchema<Options>>;
135
+ /**
136
+ * @since 1.0.0
137
+ * @category models
138
+ */
139
+ type FailureService<Options> = Optional<Options> extends true ? unknown : Failure<Options>;
140
+ /**
141
+ * @since 1.0.0
142
+ * @category models
143
+ */
144
+ type Optional<Options> = Options extends {
145
+ readonly optional: true;
146
+ } ? true : false;
147
+ /**
148
+ * @since 1.0.0
149
+ * @category models
150
+ */
151
+ type RequiredForClient<Options> = Options extends {
152
+ readonly requiredForClient: true;
153
+ } ? true : false;
154
+ /**
155
+ * @since 1.0.0
156
+ * @category models
157
+ */
158
+ type Wrap<Options> = Options extends {
159
+ readonly wrap: true;
160
+ } ? true : false;
161
+ /**
162
+ * @since 1.0.0
163
+ * @category models
164
+ */
165
+ interface Base<Self, Name extends string, Options, Service> extends Context.Tag<Self, Service> {
166
+ new (_: never): Context.TagClassShape<Name, Service>;
167
+ readonly [TypeId]: TypeId;
168
+ readonly optional: Optional<Options>;
169
+ readonly failure: FailureSchema<Options>;
170
+ readonly provides: Options extends {
171
+ readonly provides: Context.Tag<any, any>;
172
+ } ? Options["provides"] : Options extends {
173
+ readonly provides: ContextRepr;
174
+ } ? Options["provides"] : undefined;
175
+ readonly requires: Options extends {
176
+ readonly requires: Context.Tag<any, any>;
177
+ } ? Options["requires"] : Options extends {
178
+ readonly requires: ContextRepr;
179
+ } ? Options["requires"] : undefined;
180
+ readonly dynamic: Options extends RpcOptionsDynamic<any, any> ? Options["dynamic"] : undefined;
181
+ readonly dependsOn: Options extends DependsOn ? Options["dependsOn"] : undefined;
182
+ readonly requiredForClient: RequiredForClient<Options>;
183
+ readonly wrap: Wrap<Options>;
184
+ }
185
+ }
186
+ export interface TagClass<Self, Name extends string, Options> extends TagClass.Base<Self, Name, Options, Options extends RpcOptionsDynamic<any, any> ? TagClass.Wrap<Options> extends true ? RpcMiddlewareDynamicWrap<TagClass.FailureService<Options>, TagClass.Requires<Options>, {
187
+ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"];
188
+ }> : RpcMiddlewareDynamicNormal<TagClass.Service<Options>, TagClass.FailureService<Options>, TagClass.Requires<Options>, {
189
+ [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"];
190
+ }> : TagClass.Wrap<Options> extends true ? RpcMiddlewareWrap<TagClass.Provides<Options>, TagClass.Requires<Options>, TagClass.Failure<Options>> : RpcMiddleware<TagClass.Service<Options>, TagClass.FailureService<Options>, TagClass.Requires<Options>>> {
191
+ }
192
+ export declare const Tag: <Self>() => <const Name extends string, const Options extends RpcOptionsOriginal | RpcOptionsDynamic<any, any>>(id: Name, options?: Options | undefined) => <E, R, L extends NonEmptyReadonlyArray<Layer.Layer.Any>>(opts: {
193
+ effect: Effect.Effect<Options extends RpcOptionsDynamic<any, any> ? TagClass.Wrap<Options> extends true ? RpcMiddlewareDynamicWrap<TagClass.FailureService<Options>, TagClass.Requires<Options>, { [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"]; }> : RpcMiddlewareDynamicNormal<TagClass.Service<Options>, TagClass.FailureService<Options>, TagClass.Requires<Options>, { [K in Options["dynamic"]["key"]]?: Options["dynamic"]["settings"]["contextActivation"]; }> : TagClass.Wrap<Options> extends true ? RpcMiddlewareWrap<TagClass.Provides<Options>, TagClass.Failure<Options>, TagClass.Requires<Options>> : RpcMiddleware<TagClass.Service<Options>, TagClass.FailureService<Options>, TagClass.Requires<Options>>, E, R>;
194
+ dependencies?: L;
195
+ }) => TagClass<Self, Name, Options> & {
196
+ Default: Layer.Layer<Self, E | LayerUtils.GetLayersError<L>, Exclude<R, LayerUtils.GetLayersSuccess<L>>>;
197
+ };
198
+ export {};
199
+ //# sourceMappingURL=RpcMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RpcMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/RpcMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ import { RpcMiddleware } from "@effect/rpc";
5
+ import { Layer, Unify } from "effect-app";
6
+ export const Tag = () => (id, options) => (opts) => class extends RpcMiddleware.Tag()(id, options) {
7
+ static dynamic = options && "dynamic" in options ? options.dynamic : undefined;
8
+ static dependsOn = options && "dependsOn" in options ? options.dependsOn : undefined;
9
+ static Default = Layer.scoped(this, opts.effect).pipe(Layer.provide([Layer.empty, ...opts.dependencies ?? []]));
10
+ static [Unify.typeSymbol];
11
+ static [Unify.unifySymbol];
12
+ static [Unify.ignoreSymbol];
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnBjTWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9taWRkbGV3YXJlL1JwY01pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFZLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVyRCxPQUFPLEVBQTZCLEtBQUssRUFBNEUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBME85SSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBUyxFQUFFLENBQzlCLENBSUUsRUFBUSxFQUNSLE9BQTZCLEVBQzdCLEVBQUUsQ0FDSixDQUF5RCxJQTJCeEQsRUFFQyxFQUFFLENBQ0YsS0FBTSxTQUFRLGFBQWEsQ0FBQyxHQUFHLEVBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBYyxDQUFDO0lBQ3pELE1BQU0sQ0FBVSxPQUFPLEdBQUcsT0FBTyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUN2RixNQUFNLENBQVUsU0FBUyxHQUFHLE9BQU8sSUFBSSxXQUFXLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDN0YsTUFBTSxDQUFVLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBYSxDQUFDLENBQUMsSUFBSSxDQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FBQTtJQUNELE1BQU0sQ0FBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBVTtJQUM1QyxNQUFNLENBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQXdCO0lBQzNELE1BQU0sQ0FBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBaUI7Q0FDL0MsQ0FBQSJ9
@@ -1,20 +1,10 @@
1
- import { type Context, Effect, type S } from "effect-app";
2
- import { type GetEffectContext, type RPCContextMap } from "effect-app/client";
3
- import { type Tag } from "effect-app/Context";
4
- import { type HttpHeaders } from "effect-app/http";
5
1
  import { type ContextTagWithDefault } from "../../layerUtils.js";
6
- import { type RpcMiddlewareDynamic } from "./DynamicMiddleware.js";
2
+ import { type RpcMiddlewareDynamicNormal, type RpcMiddlewareDynamicWrap } from "./RpcMiddleware.js";
3
+ export type RpcMiddlewareDynamic<A, E, R, Config> = [A] extends [void] ? RpcMiddlewareDynamicWrap<E, R, Config> : RpcMiddlewareDynamicNormal<A, E, R, Config>;
7
4
  export type ContextWithLayer<Config, Service, Error, Dependencies, Id, LayerE, LayerR> = (ContextTagWithDefault<Id, RpcMiddlewareDynamic<Service, Error, any, Config>, LayerE, LayerR> | ContextTagWithDefault<Id, RpcMiddlewareDynamic<Service, Error, never, Config>, LayerE, LayerR>) & {
8
5
  dependsOn?: Dependencies;
9
6
  };
10
7
  export declare namespace ContextWithLayer {
11
8
  type Base<Config, Service, Error> = ContextWithLayer<Config, Service, Error, any, any, any, any>;
12
9
  }
13
- export declare const implementMiddleware: <T extends Record<string, RPCContextMap.Any>>() => <TI extends { [K in keyof T]: ContextWithLayer.Base<{ [K_1 in keyof T]?: T[K_1]["contextActivation"]; }, T[K]["service"], S.Schema.Type<T[K]["error"]>>; }>(implementations: TI) => {
14
- dependencies: { [K in keyof TI]: TI[K]["Default"]; }[keyof TI][];
15
- effect: Effect<(options: {
16
- config: { [K in keyof T]?: T[K]["contextActivation"]; };
17
- headers: HttpHeaders.Headers;
18
- }) => Effect.Effect<Context.Context<GetEffectContext<T, (typeof options)["config"]>>, Effect.Error<ReturnType<Tag.Service<TI[keyof TI]>>>, Effect.Context<ReturnType<Tag.Service<TI[keyof TI]>>>>, never, Tag.Identifier<{ [K in keyof TI]: TI[K]; }[keyof TI]>>;
19
- };
20
10
  //# sourceMappingURL=dynamic-middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/dynamic-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,KAAK,qBAAqB,EAAuB,MAAM,qBAAqB,CAAA;AAErF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAElE,MAAM,MAAM,gBAAgB,CAC1B,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,EACZ,EAAE,EACF,MAAM,EACN,MAAM,IAEJ,CACE,qBAAqB,CACrB,EAAE,EAEF,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EACjD,MAAM,EACN,MAAM,CACP,GACC,qBAAqB,CACrB,EAAE,EAEF,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EACnD,MAAM,EACN,MAAM,CACP,CACF,GACC;IACA,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAA;AAEH,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,gBAAgB,CACzD,MAAM,EACN,OAAO,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;CACF;AAGD,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,QAE7E,EAAE,SAAS,GACR,CAAC,IAAI,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CACnC,GAAG,GAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAC,CAAC,CAAC,mBAAmB,CAAC,GAAE,EAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAC7B,GACF,EACD,iBAAiB,EAAE;kBACmD,GACnE,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAClC,CAAC,MAAM,EAAE,CAAC,EAAE;YAkBI,MAAM,CACrB,CACE,OAAO,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAE,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAA;KAAE,KAC9F,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAA,OAAO,OAAO,EAAC,QAAQ,CAAC,CAAC,CAAC,EAC9D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EACnD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACtD,EACD,KAAK,EACL,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CACrD;CACD,CAAA"}
1
+ {"version":3,"file":"dynamic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/dynamic-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,KAAK,0BAA0B,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAEnG,MAAM,MAAM,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAC3G,0BAA0B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;AAE/C,MAAM,MAAM,gBAAgB,CAC1B,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,EACZ,EAAE,EACF,MAAM,EACN,MAAM,IAEJ,CACE,qBAAqB,CACrB,EAAE,EAEF,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EACjD,MAAM,EACN,MAAM,CACP,GACC,qBAAqB,CACrB,EAAE,EAEF,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EACnD,MAAM,EACN,MAAM,CACP,CACF,GACC;IACA,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAA;AAEH,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,gBAAgB,CACzD,MAAM,EACN,OAAO,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;CACF"}
@@ -1,18 +1,2 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Array, Effect } from "effect-app";
3
- import { typedValuesOf } from "effect-app/utils";
4
- import { mergeOptionContexts } from "../../layerUtils.js";
5
- import { sort } from "../tsort.js";
6
- // Effect Rpc Middleware: no substitute atm. though maybe something could be achieved with Wrap, we just don't have type safety on the Request input etc.
7
- export const implementMiddleware = () => (implementations) => ({
8
- dependencies: typedValuesOf(implementations).map((_) => _.Default),
9
- effect: Effect.gen(function* () {
10
- const sorted = sort(typedValuesOf(implementations));
11
- const makers = yield* Effect.all(sorted);
12
- return Effect.fnUntraced(function* (options) {
13
- const ctx = yield* mergeOptionContexts(Array.map(makers, (_, i) => ({ maker: sorted[i], handle: _(options) })));
14
- return ctx;
15
- });
16
- })
17
- });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZHluYW1pYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLEVBQVUsTUFBTSxZQUFZLENBQUE7QUFJaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBOEIsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBNENsQyx5SkFBeUo7QUFDekosTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBZ0QsRUFBRSxDQUNyRixDQVFFLGVBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekIsWUFBWSxFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBRXBEO0lBQ2IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtRQUVuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hDLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FDdEIsUUFBUSxDQUFDLEVBQUMsT0FBaUc7WUFDekcsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQ3BDLEtBQUssQ0FBQyxHQUFHLENBQ1AsTUFBTSxFQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFHLENBQVMsQ0FBQyxPQUFPLENBQVEsRUFBRSxDQUFRLENBQzVFLENBQ0YsQ0FBQTtZQUNELE9BQU8sR0FFTixDQUFBO1FBQ0gsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDLENBVUE7Q0FDRixDQUFDLENBQUEifQ==
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZHluYW1pYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,24 +1,9 @@
1
1
  import { type Rpc, type RpcMiddleware } from "@effect/rpc";
2
- import { type SuccessValue, type TypeId } from "@effect/rpc/RpcMiddleware";
3
- import { type Array, Context, Effect, type Layer, type NonEmptyReadonlyArray, type Schema, type Scope } from "effect-app";
4
- import { type RPCContextMap } from "effect-app/client";
2
+ import { type SuccessValue } from "@effect/rpc/RpcMiddleware";
3
+ import { type Array, Context, Effect, type Layer, type NonEmptyReadonlyArray, type Scope } from "effect-app";
4
+ import { type ContextRepr } from "effect-app/client";
5
5
  import { type HttpHeaders } from "effect-app/http";
6
- import { type Tag } from "effect/Context";
7
- import { type TagClassDynamicAny } from "./DynamicMiddleware.js";
8
- export type ContextRepr = NonEmptyReadonlyArray<Context.Tag<any, any>>;
9
- export declare namespace ContextRepr {
10
- type Identifier<A> = A extends ContextRepr ? Tag.Identifier<A[number]> : never;
11
- type Service<A> = A extends ContextRepr ? Tag.Service<A[number]> : never;
12
- }
13
- export interface TagClassAny extends Context.Tag<any, any> {
14
- readonly [TypeId]: TypeId;
15
- readonly optional: boolean;
16
- readonly provides?: Context.Tag<any, any> | ContextRepr | undefined;
17
- readonly requires?: Context.Tag<any, any> | ContextRepr | undefined;
18
- readonly failure: Schema.Schema.All;
19
- readonly requiredForClient: boolean;
20
- readonly wrap: boolean;
21
- }
6
+ import { type TagClassAny } from "./RpcMiddleware.js";
22
7
  export interface GenericMiddlewareOptions<E> {
23
8
  readonly next: Effect.Effect<SuccessValue, E, Scope.Scope>;
24
9
  readonly payload: unknown;
@@ -29,9 +14,6 @@ export interface GenericMiddlewareOptions<E> {
29
14
  export type GenericMiddlewareMaker = TagClassAny & {
30
15
  Default: Layer.Layer.Any;
31
16
  };
32
- export type DynamicMiddlewareMaker<RequestContext extends Record<string, RPCContextMap.Any>> = TagClassDynamicAny<RequestContext> & {
33
- Default: Layer.Layer.Any;
34
- };
35
17
  export declare namespace GenericMiddlewareMaker {
36
18
  type ApplyServices<A extends TagClassAny, R> = Exclude<R, Provided<A>> | Required<A>;
37
19
  type ApplyManyServices<A extends NonEmptyReadonlyArray<TagClassAny>, R> = Exclude<R, {
@@ -50,7 +32,6 @@ export declare namespace GenericMiddlewareMaker {
50
32
  requires: ContextRepr;
51
33
  } ? ContextRepr.Identifier<T["requires"]> : never : never;
52
34
  }
53
- export declare const genericMiddleware: (i: GenericMiddlewareMaker) => GenericMiddlewareMaker;
54
35
  export declare const genericMiddlewareMaker: <T extends Array<GenericMiddlewareMaker>>(...middlewares: T) => {
55
36
  dependencies: { [K in keyof T]: T[K]["Default"]; };
56
37
  effect: Effect.Effect<RpcMiddleware.RpcMiddlewareWrap<any, any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"generic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/generic-middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/generic-middleware.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { Context, Effect } from "effect-app";
1
+ import { Context, Effect, Option } from "effect-app";
2
2
  import { InfraLogger } from "../../../logger.js";
3
- export const genericMiddleware = (i) => i;
4
3
  export const genericMiddlewareMaker = (...middlewares) => {
5
4
  // we want to run them in reverse order
6
5
  middlewares = middlewares.toReversed();
@@ -8,22 +7,18 @@ export const genericMiddlewareMaker = (...middlewares) => {
8
7
  dependencies: middlewares.map((_) => _.Default),
9
8
  effect: Effect.gen(function* () {
10
9
  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
15
10
  return (options) => {
16
11
  let handler = options.next;
17
12
  // copied from RpcMiddleare
18
13
  for (const tag of middlewares) {
19
14
  if (tag.wrap) {
20
15
  const middleware = Context.unsafeGet(context, tag);
21
- handler = InfraLogger.logDebug("Applying middleware " + tag.key).pipe(Effect.zipRight(middleware({ ...options, next: handler })));
16
+ handler = InfraLogger.logDebug("Applying middleware wrap " + tag.key).pipe(Effect.zipRight(middleware({ ...options, next: handler })));
22
17
  }
23
18
  else if (tag.optional) {
24
19
  const middleware = Context.unsafeGet(context, tag);
25
20
  const previous = handler;
26
- handler = InfraLogger.logDebug("Applying middleware " + tag.key).pipe(Effect.zipRight(Effect.matchEffect(middleware(options), {
21
+ handler = InfraLogger.logDebug("Applying middleware optional " + tag.key).pipe(Effect.zipRight(Effect.matchEffect(middleware(options), {
27
22
  onFailure: () => previous,
28
23
  onSuccess: tag.provides !== undefined
29
24
  ? (value) => Context.isContext(value)
@@ -32,6 +27,15 @@ export const genericMiddlewareMaker = (...middlewares) => {
32
27
  : (_) => previous
33
28
  })));
34
29
  }
30
+ else if (tag.dynamic) {
31
+ const middleware = Context.unsafeGet(context, tag);
32
+ const previous = handler;
33
+ handler = InfraLogger.logDebug("Applying middleware dynamic " + tag.key, tag.dynamic).pipe(Effect.zipRight(middleware(options).pipe(Effect.flatMap((value) => Option.isSome(value)
34
+ ? Context.isContext(value.value)
35
+ ? Effect.provide(previous, value.value)
36
+ : Effect.provideService(previous, tag.dynamic.settings.service, /* TODO */ value.value)
37
+ : previous))));
38
+ }
35
39
  else {
36
40
  const middleware = Context.unsafeGet(context, tag);
37
41
  const previous = handler;
@@ -47,4 +51,4 @@ export const genericMiddlewareMaker = (...middlewares) => {
47
51
  })
48
52
  };
49
53
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZ2VuZXJpYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxFQUFtRSxNQUFNLFlBQVksQ0FBQTtBQUl6SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFtRGhELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBRXBDLEdBQUcsV0FBYyxFQUdqQixFQUFFO0lBQ0YsdUNBQXVDO0lBQ3ZDLFdBQVcsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFTLENBQUE7SUFDN0MsT0FBTztRQUNMLFlBQVksRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQy9DLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUMxQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDdkMsd0dBQXdHO1lBQ3hHLHdCQUF3QjtZQUN4QixrQkFBa0I7WUFDbEIsY0FBYztZQUVkLE9BQU8sQ0FDTCxPQUFvQyxFQUNwQyxFQUFFO2dCQUNGLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7Z0JBQzFCLDJCQUEyQjtnQkFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUs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
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZ2VuZXJpYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxFQUEwQyxNQUFNLEVBQWMsTUFBTSxZQUFZLENBQUE7QUFHcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBZ0NoRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUVwQyxHQUFHLFdBQWMsRUFHakIsRUFBRTtJQUNGLHVDQUF1QztJQUN2QyxXQUFXLEdBQUcsV0FBVyxDQUFDLFVBQVUsRUFBUyxDQUFBO0lBQzdDLE9BQU87UUFDTCxZQUFZLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMvQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ3ZDLE9BQU8sQ0FDTCxPQUFvQyxFQUNwQyxFQUFFO2dCQUNGLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7Z0JBQzFCLDJCQUEyQjtnQkFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUE7d0JBQ2xELE9BQU8sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLDJCQUEyQixHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hFLE1BQU0sQ0FB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