@effect-app/infra 1.16.0 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 1.16.1
4
+
5
+ ### Patch Changes
6
+
7
+ - fup
8
+
3
9
  ## 1.16.0
4
10
 
5
11
  ### Minor Changes
package/_cjs/router.cjs CHANGED
@@ -26,7 +26,9 @@ const makeRouter = (handleRequestEnv /* Middleware */) => {
26
26
  const handler = (0, _routing.makeRequestHandler)(requestHandler,
27
27
  // one argument if no middleware, 2 if has middleware. TODO: clean this shit up
28
28
  errorHandler, middlewareLayer);
29
- const route = _http.HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler);
29
+ const route = _http.HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler.pipe(_effectApp.Effect.withSpan("Request." + requestHandler.name, {
30
+ captureStackTrace: () => requestHandler.stack
31
+ })));
30
32
  // TODO
31
33
  // rdesc.push(makeRouteDescriptor(
32
34
  // requestHandler.Request.path,
@@ -40,6 +42,7 @@ const makeRouter = (handleRequestEnv /* Middleware */) => {
40
42
  const Response = _effectApp.S.REST.extractResponse(_);
41
43
  return h => ({
42
44
  adaptResponse,
45
+ stack: h.stack,
43
46
  h: h.handler,
44
47
  name,
45
48
  Request,
@@ -97,31 +100,43 @@ const makeRouter = (handleRequestEnv /* Middleware */) => {
97
100
  controllers,
98
101
  ...(0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
99
102
  ;
100
- prev[cur] = (svcOrFnOrEffect, fnOrNone) => _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
101
- static _tag = "d";
102
- static handler = () => svcOrFnOrEffect;
103
- } : typeof svcOrFnOrEffect === "function" ? class {
104
- static _tag = "d";
105
- static handler = (req, ctx) => svcOrFnOrEffect(req, {
106
- ...ctx,
107
- Response: rsc[cur].Response
108
- });
109
- } : class {
110
- static _tag = "d";
111
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
103
+ prev[cur] = (svcOrFnOrEffect, fnOrNone) => {
104
+ const stack = new Error().stack?.split("\n").slice(2).join("\n");
105
+ return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
106
+ static stack = stack;
107
+ static _tag = "d";
108
+ static handler = () => svcOrFnOrEffect;
109
+ } : typeof svcOrFnOrEffect === "function" ? class {
110
+ static stack = stack;
111
+ static _tag = "d";
112
+ static handler = (req, ctx) => svcOrFnOrEffect(req, {
113
+ ...ctx,
114
+ Response: rsc[cur].Response
115
+ });
116
+ } : class {
117
+ static stack = stack;
118
+ static _tag = "d";
119
+ static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
120
+ };
112
121
  };
113
- prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
114
- static _tag = "raw";
115
- static handler = () => svcOrFnOrEffect;
116
- } : typeof svcOrFnOrEffect === "function" ? class {
117
- static _tag = "raw";
118
- static handler = (req, ctx) => svcOrFnOrEffect(req, {
119
- ...ctx,
120
- Response: rsc[cur].Response
121
- });
122
- } : class {
123
- static _tag = "raw";
124
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
122
+ prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => {
123
+ const stack = new Error().stack?.split("\n").slice(2).join("\n");
124
+ return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
125
+ static stack = stack;
126
+ static _tag = "raw";
127
+ static handler = () => svcOrFnOrEffect;
128
+ } : typeof svcOrFnOrEffect === "function" ? class {
129
+ static stack = stack;
130
+ static _tag = "raw";
131
+ static handler = (req, ctx) => svcOrFnOrEffect(req, {
132
+ ...ctx,
133
+ Response: rsc[cur].Response
134
+ });
135
+ } : class {
136
+ static stack = stack;
137
+ static _tag = "raw";
138
+ static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
139
+ };
125
140
  };
126
141
  return prev;
127
142
  }, {})
@@ -1 +1 @@
1
- {"version":3,"file":"router.cjs","names":["_Effect","require","_utils","_routing","_effectApp","_http","_schema","makeRouter","handleRequestEnv","match","requestHandler","errorHandler","middleware","middlewareLayer","undefined","handler","makeRequestLayer","makeRequestHandler","route","HttpRouter","makeRoute","Request","method","path","handle","_","name","adaptResponse","S","REST","extractRequest","Response","extractResponse","h","ResponseOpenApi","Context","CTX","rt","_tag","matchFor","rsc","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","matchWithServices","action","services","f","req","ctx","Effect","andThen","allLower","svc2","controllers","handlers","m","meta","Error","moduleName","mapped","determineMethod","split","Object","assign","Auto","fromIterable","values","r","prev","svcOrFnOrEffect","fnOrNone","isEffect","resourceRequest","res","r2","defaultErrorHandler","catchTag","die","failure","matchAll","concat","empty","exports"],"sources":["../src/router.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"router.cjs","names":["_Effect","require","_utils","_routing","_effectApp","_http","_schema","makeRouter","handleRequestEnv","match","requestHandler","errorHandler","middleware","middlewareLayer","undefined","handler","makeRequestLayer","makeRequestHandler","route","HttpRouter","makeRoute","Request","method","path","pipe","Effect","withSpan","name","captureStackTrace","stack","handle","_","adaptResponse","S","REST","extractRequest","Response","extractResponse","h","ResponseOpenApi","Context","CTX","rt","_tag","matchFor","rsc","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","matchWithServices","action","services","f","req","ctx","andThen","allLower","svc2","controllers","handlers","m","meta","Error","moduleName","mapped","determineMethod","split","Object","assign","Auto","fromIterable","values","r","prev","svcOrFnOrEffect","fnOrNone","slice","join","isEffect","resourceRequest","res","r2","defaultErrorHandler","catchTag","die","failure","matchAll","concat","empty","exports"],"sources":["../src/router.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAcA,IAAAE,QAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AAEA,IAAAI,KAAA,GAAAJ,OAAA;AAGA,IAAAK,OAAA,GAAAL,OAAA;AAkBA;AACO,MAAMM,UAAU,GAAGA,CACxBC,gBAAqB,CAAC,qBACpB;EAqBF,SAASC,KAAKA,CAoBZC,cAeC,EACDC,YAQC,EACDC,UAkBC;IAED,IAAIC,eAAe,GAA2CC,SAAS;IACvE,IAAIF,UAAU,EAAE;MACd,MAAM;QAAEG,OAAO;QAAEC;MAAgB,CAAE,GAAGJ,UAAU,CAACF,cAAc,CAAC;MAChEA,cAAc,GAAGK,OAAc,EAAC;MAChCF,eAAe,GAAGG,gBAAgB;IACpC;IACA;IAEA,MAAMD,OAAO,GAAG,IAAAE,2BAAkB,EAkBhCP,cAAqB;IAAE;IACvBC,YAAY,EACZE,eAAe,CAChB;IAED,MAAMK,KAAK,GAAGC,gBAAU,CAACC,SAAS,CAChCV,cAAc,CAACW,OAAO,CAACC,MAAM,EAC7BZ,cAAc,CAACW,OAAO,CAACE,IAAI,EAC3BR,OAAO,CAACS,IAAI,CACVC,iBAAM,CAACC,QAAQ,CAAC,UAAU,GAAGhB,cAAc,CAACiB,IAAI,EAAE;MAAEC,iBAAiB,EAAEA,CAAA,KAAOlB,cAAsB,CAACmB;IAAK,CAAE,CAAC,CAC9G,CACF;IACD;IACA;IACA;IACA;IACA;IACA;IACA,OAAOX,KAAK;EACd;EAEA,SAASY,MAAMA,CAMbC,CAAsC,EACtCJ,IAAY,EACZK,aAAmB;IAEnB,MAAMX,OAAO,GAAGY,YAAC,CAACC,IAAI,CAACC,cAAc,CAACJ,CAAC,CAAC;IACxC,MAAMK,QAAQ,GAAGH,YAAC,CAACC,IAAI,CAACG,eAAe,CAACN,CAAC,CAAC;IAU1C,OACEO,CAAgF,KAC5E;MACJN,aAAa;MACbH,KAAK,EAAES,CAAC,CAACT,KAAK;MACdS,CAAC,EAAEA,CAAC,CAACvB,OAAO;MACZY,IAAI;MACJN,OAAO;MACPe,QAAQ;MACRG,eAAe,EAAER,CAAC,CAACQ,eAAe,IAAIH,QAAQ;MAC9CI,OAAO,EAAE,IAAW;MACpBC,GAAG,EAAE,IAAW;MAChBC,EAAE,EAAEJ,CAAC,CAACK;KAUN;EACJ;EAeA,SAASC,QAAQA,CACfC,GAAQ;IAMR,MAAMC,QAAQ,GAAG,IAAAC,kBAAW,EAACF,GAAG,CAAC,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAI;MACpD,IAAIC,oBAAS,CAACC,QAAQ,CAACP,GAAG,CAACK,GAAG,CAAC,CAAC,IAAIL,GAAG,CAACK,GAAG,CAAC,CAAC7B,OAAO,EAAE;QACpD4B,GAAG,CAACC,GAAqB,CAAC,GAAGL,GAAG,CAACK,GAAG,CAAC;MACvC;MACA,OAAOD,GAAG;IACZ,CAAC,EAAE,EAAc,CAAC;IAElB,MAAMI,iBAAiB,GAAgCC,MAAW,IAAI;MAEpE,OAAO,CASLC,QAAa,EACbC,CAMqB,KAEvB,CAACC,GAAQ,EAAEC,GAAQ,KACjBjC,iBAAM,CAACkC,OAAO,CAAC,IAAAC,gBAAQ,EAACL,QAAQ,CAAC,EAAGM,IAAI,IAAKL,CAAC,CAACC,GAAG,EAAE;QAAE,GAAGC,GAAG;QAAE,GAAGG,IAAI;QAAEzB,QAAQ,EAAES,GAAG,CAACS,MAAM,CAAC,CAAClB;MAAQ,CAAE,CAAC,CAAC;IAC7G,CAAC;IA6FD,MAAM0B,WAAW,GAMfA,WAAsB,IACpB;MACF,MAAMC,QAAQ,GAAG,IAAAhB,kBAAW,EAACD,QAAQ,CAAC,CAACE,MAAM,CAC3C,CAACC,GAAG,EAAEC,GAAG,KAAI;QACX,IAAIA,GAAG,KAAK,MAAM,EAAE,OAAOD,GAAG;QAC9B,MAAMe,CAAC,GAAInB,GAAW,CAACoB,IAA8B;QACrD,IAAI,CAACD,CAAC,EAAE,MAAM,IAAIE,KAAK,CAAC,gCAAgC,CAAC;QACvDjB,GAAW,CAACC,GAAG,CAAC,GAAGpB,MAAM,CACzBe,GAAG,CAACK,GAAG,CAAC,EACRc,CAAC,CAACG,UAAU,GAAG,GAAG,GAAIjB,GAAc,CACrC,CAACY,WAAW,CAACZ,GAA+B,CAAQ,CAAC;QACtD,OAAOD,GAAG;MACZ,CAAC,EACD,EAWC,CACF;MAED,MAAMmB,MAAM,GAAG,IAAArB,kBAAW,EAACgB,QAAQ,CAAC,CAACf,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAI;QACvD,MAAMnC,OAAO,GAAGgD,QAAQ,CAACb,GAAG,CAAC;QAC7B,MAAMO,GAAG,GAAG1C,OAAO,CAACM,OAAO;QAE3B,MAAMA,OAAQ,SAASoC,GAAW;UAChC,OAAOlC,IAAI,GAAG,GAAG,GAAGR,OAAO,CAACY,IAAI,IAAI8B,GAAG,CAAClC,IAAI,KAAK,GAAG,GAAG,EAAE,GAAGkC,GAAG,CAAClC,IAAI,CAAC;UACrE,OAAOD,MAAM,GAAGmC,GAAG,CAACnC,MAAM,KAAK,MAAM,GACjCY,YAAI,CAACmC,eAAe,CAACtD,OAAO,CAACY,IAAI,CAAC2C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,EAAEb,GAAG,CAAC,GACtDA,GAAG,CAACnC,MAAM;;QAEhB,IAAImC,GAAG,CAACnC,MAAM,KAAK,MAAM,EAAE;UACzBiD,MAAM,CAACC,MAAM,CAACnD,OAAO,EAAE;YACrB,CAACA,OAAO,CAACC,MAAM,KAAK,KAAK,IAAID,OAAO,CAACC,MAAM,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAGmC,GAAG,CAACgB;WACnF,CAAC;QACJ;QACAF,MAAM,CAACC,MAAM,CAACzD,OAAO,EAAE;UAAEM;QAAO,CAAE,CAAC;QACnC4B,GAAG,CAACC,GAAG,CAAC,GAAGzC,KAAK,CACdM,OAAc,EACdJ,YAAY,CAAC8C,GAAG,CAAC,EACjBjD,gBAAgB,CAAC;SAClB;QACD,OAAOyC,GAAG;MACZ,CAAC,EAAE,EAAS,CAOX;MAYD,OAAO9B,gBAAU,CAACuD,YAAY,CAACH,MAAM,CAACI,MAAM,CAACP,MAAM,CAAC,CAGnD;IACH,CAAC;IAID,MAAMQ,CAAC,GAAG;MACRd,WAAW;MACX,GAAG,IAAAf,kBAAW,EAACD,QAAQ,CAAC,CAACE,MAAM,CAC7B,CAAC6B,IAAI,EAAE3B,GAAG,KAAI;QACZ;QAAE2B,IAAY,CAAC3B,GAAG,CAAC,GAAG,CAAC4B,eAAoB,EAAEC,QAAa,KAAI;UAC5D,MAAMlD,KAAK,GAAG,IAAIqC,KAAK,EAAE,CAACrC,KAAK,EAAEyC,KAAK,CAAC,IAAI,CAAC,CAACU,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;UAChE,OAAOxD,iBAAM,CAACyD,QAAQ,CAACJ,eAAe,CAAC,GACnC;YACA,OAAOjD,KAAK,GAAGA,KAAK;YACpB,OAAOc,IAAI,GAAG,GAAG;YACjB,OAAO5B,OAAO,GAAGA,CAAA,KAAM+D,eAAe;WACvC,GACC,OAAOA,eAAe,KAAK,UAAU,GACrC;YACA,OAAOjD,KAAK,GAAGA,KAAK;YACpB,OAAOc,IAAI,GAAG,GAAG;YACjB,OAAO5B,OAAO,GAAGA,CAAC0C,GAAQ,EAAEC,GAAQ,KAAKoB,eAAe,CAACrB,GAAG,EAAE;cAAE,GAAGC,GAAG;cAAEtB,QAAQ,EAAES,GAAG,CAACK,GAAG,CAAC,CAACd;YAAQ,CAAE,CAAC;WACvG,GACC;YACA,OAAOP,KAAK,GAAGA,KAAK;YACpB,OAAOc,IAAI,GAAG,GAAG;YACjB,OAAO5B,OAAO,GAAGsC,iBAAiB,CAACH,GAAG,CAAC,CAAC4B,eAAe,EAAEC,QAAQ,CAAC;WACnE;QACL,CAAC;QACCF,IAAY,CAAE3B,GAAW,GAAG,KAAK,CAAC,GAAG,CAAC4B,eAAoB,EAAEC,QAAa,KAAI;UAC7E,MAAMlD,KAAK,GAAG,IAAIqC,KAAK,EAAE,CAACrC,KAAK,EAAEyC,KAAK,CAAC,IAAI,CAAC,CAACU,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;UAChE,OAAOxD,iBAAM,CAACyD,QAAQ,CAACJ,eAAe,CAAC,GACnC;YACA,OAAOjD,KAAK,GAAGA,KAAK;YACpB,OAAOc,IAAI,GAAG,KAAK;YACnB,OAAO5B,OAAO,GAAGA,CAAA,KAAM+D,eAAe;WACvC,GACC,OAAOA,eAAe,KAAK,UAAU,GACrC;YACA,OAAOjD,KAAK,GAAGA,KAAK;YACpB,OAAOc,IAAI,GAAG,KAAK;YACnB,OAAO5B,OAAO,GAAGA,CAAC0C,GAAQ,EAAEC,GAAQ,KAAKoB,eAAe,CAACrB,GAAG,EAAE;cAAE,GAAGC,GAAG;cAAEtB,QAAQ,EAAES,GAAG,CAACK,GAAG,CAAC,CAACd;YAAQ,CAAE,CAAC;WACvG,GACC;YACA,OAAOP,KAAK,GAAGA,KAAK;YACpB,OAAOc,IAAI,GAAG,KAAK;YACnB,OAAO5B,OAAO,GAAGsC,iBAAiB,CAACH,GAAG,CAAC,CAAC4B,eAAe,EAAEC,QAAQ,CAAC;WACnE;QACL,CAAC;QACD,OAAOF,IAAI;MACb,CAAC,EACD,EAQG;KAEN;IACD,OAAOD,CAAC;EACV;EAEA,MAAMjE,YAAY,GAAIwE,eAAoD,IAAI;IAC5E,OAAO,CACL1B,GAAwC,EACxC2B,GAA0C,EAC1CC,EAA2G,KACxG,IAAAC,4BAAmB,EAAC7B,GAAG,EAAE2B,GAAG,EAAE3D,iBAAM,CAAC8D,QAAQ,CAACF,EAAE,EAAE,YAAY,EAAGtD,CAAC,IAAKN,iBAAM,CAAC+D,GAAG,CAACzD,CAAC,CAAC,CAAC,EAAEoD,eAAe,CAACM,OAAO,CAAC;EACtH,CAAC;EAED;;;;EAKA,SAASC,QAAQA,CAAgC3B,QAAW;IAC1D,MAAMa,CAAC,GAAG,IAAA7B,kBAAW,EAACgB,QAAQ,CAAC,CAACf,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAI;MAClD,OAAO/B,gBAAU,CAACwE,MAAM,CAAC1C,GAAG,EAAEc,QAAQ,CAACb,GAAG,CAAQ,CAAC;IACrD,CAAC,EAAE/B,gBAAU,CAACyE,KAAK,CAAC;IAYpB,OAAOhB,CAGN;EACH;EAwBA,OAAO;IAAEhC,QAAQ;IAAE8C;EAAQ,CAAE;AAC/B,CAAC;AAAAG,OAAA,CAAAtF,UAAA,GAAAA,UAAA","ignoreList":[]}
package/dist/router.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import type { EffectUnunified, LowerServices } from "@effect-app/core/Effect";
2
2
  import type { EnforceNonEmptyRecord } from "@effect-app/core/utils";
3
- import type { _R, EffectDeps, Extr, ReqFromSchema } from "@effect-app/infra/api/routing";
4
- import type { Types } from "effect-app";
3
+ import type { EffectDeps, Extr } from "@effect-app/infra/api/routing";
5
4
  import { Effect, S } from "effect-app";
6
5
  import type { ValidationError } from "effect-app/client/errors";
7
6
  import { HttpRouter } from "effect-app/http";
@@ -17,13 +16,11 @@ export declare const makeRouter: <CTX, CTXMap extends Record<string, [string, an
17
16
  } ? K_1 : never]: Rsc[K_1] extends {
18
17
  Response: any;
19
18
  } ? Rsc[K_1] : never; }]: {
20
- new (): {};
21
19
  _tag: "raw";
22
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[K]>>, ctx: CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }) => Effect<S.Schema.Encoded<Extr<REST.GetResponse<Rsc[K]>>>, import("effect-app/client/errors").OptimisticConcurrencyException | S.ParseResult.ParseError | ValidationError | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").NotFoundError<ItemType> | import("effect-app/client/errors").NotLoggedInError | import("effect-app/client/errors").LoginError | import("effect-app/client/errors").UnauthorizedError | import("effect-app/client/errors").ServiceUnavailableError | S.Schema.Type<REST.GetRequest<Rsc[K]>["failure"]>, any>;
20
+ handler: (req: Rsc[K]["Request"], ctx: Rsc[K]["Context"]) => Effect<S.Schema.Encoded<Extr<REST.GetResponse<Rsc[K]>>>, import("effect-app/client/errors").OptimisticConcurrencyException | S.ParseResult.ParseError | ValidationError | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").NotFoundError<ItemType> | import("effect-app/client/errors").NotLoggedInError | import("effect-app/client/errors").LoginError | import("effect-app/client/errors").UnauthorizedError | import("effect-app/client/errors").ServiceUnavailableError | S.Schema.Type<Rsc[K]["failure"]>, any>;
23
21
  } | {
24
- new (): {};
25
22
  _tag: "d";
26
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[K]>>, ctx: CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }) => Effect<S.Schema.Type<Extr<REST.GetResponse<Rsc[K]>>>, import("effect-app/client/errors").OptimisticConcurrencyException | S.ParseResult.ParseError | ValidationError | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").NotFoundError<ItemType> | import("effect-app/client/errors").NotLoggedInError | import("effect-app/client/errors").LoginError | import("effect-app/client/errors").UnauthorizedError | import("effect-app/client/errors").ServiceUnavailableError | S.Schema.Type<REST.GetRequest<Rsc[K]>["failure"]>, any>;
23
+ handler: (req: Rsc[K]["Request"], ctx: Rsc[K]["Context"]) => Effect<S.Schema.Type<Extr<REST.GetResponse<Rsc[K]>>>, import("effect-app/client/errors").OptimisticConcurrencyException | S.ParseResult.ParseError | ValidationError | import("effect-app/client/errors").InvalidStateError | import("effect-app/client/errors").NotFoundError<ItemType> | import("effect-app/client/errors").NotLoggedInError | import("effect-app/client/errors").LoginError | import("effect-app/client/errors").UnauthorizedError | import("effect-app/client/errors").ServiceUnavailableError | S.Schema.Type<Rsc[K]["failure"]>, any>;
27
24
  }; }>(controllers: THandlers) => HttpRouter.HttpRouter<[(keyof { [K_1 in keyof Rsc as Rsc[K_1] extends {
28
25
  Response: any;
29
26
  } ? K_1 : never]: Rsc[K_1] extends {
@@ -32,7 +29,7 @@ export declare const makeRouter: <CTX, CTXMap extends Record<string, [string, an
32
29
  Response: any;
33
30
  } ? K_1 : never]: Rsc[K_1] extends {
34
31
  Response: any;
35
- } ? Rsc[K_1] : never; } ? { [K in T]: RouteMatch<_R<ReturnType<THandlers[K]["handler"]>>, ReqFromSchema<REST.GetRequest<Rsc[K]>>, { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }[keyof { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }]>; } : never)[keyof { [K_1 in keyof Rsc as Rsc[K_1] extends {
32
+ } ? Rsc[K_1] : never; } ? { [K in T]: HttpRouter.Route<never, Exclude<Exclude<_R<ReturnType<THandlers[K]["handler"]>>, EnforceNonEmptyRecord<ReqFromSchema<REST.GetRequest<Rsc[K]>>>>, { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }[keyof { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }]>>; } : never)[keyof { [K_1 in keyof Rsc as Rsc[K_1] extends {
36
33
  Response: any;
37
34
  } ? K_1 : never]: Rsc[K_1] extends {
38
35
  Response: any;
@@ -44,7 +41,7 @@ export declare const makeRouter: <CTX, CTXMap extends Record<string, [string, an
44
41
  Response: any;
45
42
  } ? K_1 : never]: Rsc[K_1] extends {
46
43
  Response: any;
47
- } ? Rsc[K_1] : never; } ? { [K in T]: RouteMatch<_R<ReturnType<THandlers[K]["handler"]>>, ReqFromSchema<REST.GetRequest<Rsc[K]>>, { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }[keyof { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }]>; } : never)[keyof { [K_1 in keyof Rsc as Rsc[K_1] extends {
44
+ } ? Rsc[K_1] : never; } ? { [K in T]: HttpRouter.Route<never, Exclude<Exclude<_R<ReturnType<THandlers[K]["handler"]>>, EnforceNonEmptyRecord<ReqFromSchema<REST.GetRequest<Rsc[K]>>>>, { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }[keyof { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[K]> ? REST.GetRequest<Rsc[K]>[key] extends true ? never : CTXMap[key][0] : CTXMap[key][0]]: CTXMap[key][1]; }]>>; } : never)[keyof { [K_1 in keyof Rsc as Rsc[K_1] extends {
48
45
  Response: any;
49
46
  } ? K_1 : never]: Rsc[K_1] extends {
50
47
  Response: any;
@@ -55,31 +52,25 @@ export declare const makeRouter: <CTX, CTXMap extends Record<string, [string, an
55
52
  Response: any;
56
53
  } ? Rsc[K_1] : never; }]: {
57
54
  <R2, E, A>(f: Effect<A, E, R2>): S.Schema.Type<REST.GetResponse<Rsc[Key]>> extends infer T ? T extends S.Schema.Type<REST.GetResponse<Rsc[Key]>> ? T extends void ? A extends void ? {
58
- new (): {};
59
55
  _tag: "d";
60
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A, E, R2>;
56
+ handler: (req: Rsc[Key]["Request"], ctx: Rsc[Key]["Context"]) => Effect<A, E, R2>;
61
57
  } : Hint<"You're returning non void for a void Response, please fix"> : {
62
- new (): {};
63
58
  _tag: "d";
64
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A, E, R2>;
59
+ handler: (req: Rsc[Key]["Request"], ctx: Rsc[Key]["Context"]) => Effect<A, E, R2>;
65
60
  } : never : never;
66
61
  <R2, E_1, A_1>(f: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & Pick<Rsc[Key], "Response">) => Effect<A_1, E_1, R2>): S.Schema.Type<REST.GetResponse<Rsc[Key]>> extends infer T ? T extends S.Schema.Type<REST.GetResponse<Rsc[Key]>> ? T extends void ? A_1 extends void ? {
67
- new (): {};
68
62
  _tag: "d";
69
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_1, E_1, R2>;
63
+ handler: (req: Rsc[Key]["Request"], ctx: Rsc[Key]["Context"]) => Effect<A_1, E_1, R2>;
70
64
  } : Hint<"You're returning non void for a void Response, please fix"> : {
71
- new (): {};
72
65
  _tag: "d";
73
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_1, E_1, R2>;
66
+ handler: (req: Rsc[Key]["Request"], ctx: Rsc[Key]["Context"]) => Effect<A_1, E_1, R2>;
74
67
  } : never : never;
75
68
  <SVC extends Record<string, EffectUnunified<any, any, any>>, R2, E_2, A_2>(services: SVC, f: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: import("@effect-app/core/utils").ComputeFlat<LowerServices<EffectDeps<SVC>> & CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & Pick<Rsc[Key], "Response">>) => Effect<A_2, E_2, R2>): S.Schema.Type<REST.GetResponse<Rsc[Key]>> extends infer T ? T extends S.Schema.Type<REST.GetResponse<Rsc[Key]>> ? T extends void ? A_2 extends void ? {
76
- new (): {};
77
69
  _tag: "d";
78
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_2, E_2, R2>;
70
+ handler: (req: Rsc[Key]["Request"], ctx: Rsc[Key]["Context"]) => Effect<A_2, E_2, R2>;
79
71
  } : Hint<"You're returning non void for a void Response, please fix"> : {
80
- new (): {};
81
72
  _tag: "d";
82
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key]> ? REST.GetRequest<Rsc[Key]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_2, E_2, R2>;
73
+ handler: (req: Rsc[Key]["Request"], ctx: Rsc[Key]["Context"]) => Effect<A_2, E_2, R2>;
83
74
  } : never : never;
84
75
  }; } & { [Key_1 in keyof { [K_1 in keyof Rsc as Rsc[K_1] extends {
85
76
  Response: any;
@@ -87,35 +78,29 @@ export declare const makeRouter: <CTX, CTXMap extends Record<string, [string, an
87
78
  Response: any;
88
79
  } ? Rsc[K_1] : never; } as Key_1 extends string ? `${Key_1}Raw` : never]: {
89
80
  <R2_1, E, A>(f: Effect<A, E, R2_1>): S.Schema.Type<REST.GetResponse<Rsc[Key_1]>> extends infer T ? T extends S.Schema.Type<REST.GetResponse<Rsc[Key_1]>> ? T extends void ? A extends void ? {
90
- new (): {};
91
81
  _tag: "raw";
92
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A, E, R2_1>;
82
+ handler: (req: Rsc[Key_1]["Request"], ctx: Rsc[Key_1]["Context"]) => Effect<A, E, R2_1>;
93
83
  } : Hint<"You're returning non void for a void Response, please fix"> : {
94
- new (): {};
95
84
  _tag: "raw";
96
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A, E, R2_1>;
85
+ handler: (req: Rsc[Key_1]["Request"], ctx: Rsc[Key_1]["Context"]) => Effect<A, E, R2_1>;
97
86
  } : never : never;
98
87
  <R2_1, E_1, A_1>(f: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & Pick<Rsc[Key_1], "Response">) => Effect<A_1, E_1, R2_1>): S.Schema.Type<REST.GetResponse<Rsc[Key_1]>> extends infer T ? T extends S.Schema.Type<REST.GetResponse<Rsc[Key_1]>> ? T extends void ? A_1 extends void ? {
99
- new (): {};
100
88
  _tag: "raw";
101
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_1, E_1, R2_1>;
89
+ handler: (req: Rsc[Key_1]["Request"], ctx: Rsc[Key_1]["Context"]) => Effect<A_1, E_1, R2_1>;
102
90
  } : Hint<"You're returning non void for a void Response, please fix"> : {
103
- new (): {};
104
91
  _tag: "raw";
105
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_1, E_1, R2_1>;
92
+ handler: (req: Rsc[Key_1]["Request"], ctx: Rsc[Key_1]["Context"]) => Effect<A_1, E_1, R2_1>;
106
93
  } : never : never;
107
94
  <SVC extends Record<string, EffectUnunified<any, any, any>>, R2, E_2, A_2>(services: SVC, f: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: import("@effect-app/core/utils").ComputeFlat<LowerServices<EffectDeps<SVC>> & CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & Pick<Rsc[Key_1], "Response">>) => Effect<A_2, E_2, R2>): S.Schema.Type<REST.GetResponse<Rsc[Key_1]>> extends infer T ? T extends S.Schema.Type<REST.GetResponse<Rsc[Key_1]>> ? T extends void ? A_2 extends void ? {
108
- new (): {};
109
95
  _tag: "raw";
110
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_2, E_2, R2>;
96
+ handler: (req: Rsc[Key_1]["Request"], ctx: Rsc[Key_1]["Context"]) => Effect<A_2, E_2, R2>;
111
97
  } : Hint<"You're returning non void for a void Response, please fix"> : {
112
- new (): {};
113
98
  _tag: "raw";
114
- handler: (req: S.Schema.Type<REST.GetRequest<Rsc[Key_1]>>, ctx: Types.Simplify<CTX & { [key in keyof CTXMap as key extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as key_1 extends keyof REST.GetRequest<Rsc[Key_1]> ? REST.GetRequest<Rsc[Key_1]>[key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; }>) => Effect<A_2, E_2, R2>;
99
+ handler: (req: Rsc[Key_1]["Request"], ctx: Rsc[Key_1]["Context"]) => Effect<A_2, E_2, R2>;
115
100
  } : never : never;
116
101
  }; };
117
102
  matchAll: <T extends {
118
103
  [key: string]: HttpRouter.HttpRouter<any, any>;
119
- }>(handlers: T) => HttpRouter.HttpRouter<[T[keyof T]] extends [HttpRouter.HttpRouter<infer R, any>] ? R : never, [T[keyof T]] extends [HttpRouter.HttpRouter<any, infer E_3>] ? E_3 : never>;
104
+ }>(handlers: T) => HttpRouter.HttpRouter<[T[keyof T]] extends [HttpRouter.HttpRouter<any, infer E_3>] ? E_3 : never, [T[keyof T]] extends [HttpRouter.HttpRouter<infer R, any>] ? R : never>;
120
105
  };
121
106
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAG7E,OAAO,KAAK,EAAW,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAGV,UAAU,EACV,IAAI,EAOL,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EAAE,MAAM,EAAa,CAAC,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAGxC,MAAM,MAAM,UAAU,CACpB,CAAC,EACD,CAAC,EAGD,EAAE,GAAG,KAAK,IAET,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAE7E,MAAM,WAAW,IAAI,CAAC,GAAG,SAAS,MAAM;IACtC,GAAG,EAAE,GAAG,CAAA;CACT;AAKD,eAAO,MAAM,UAAU,GAAI,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,oBACjE,GAAG;eAiMH,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAC1C,GAAG;sBAiIN,SAAS,SAAS,GAEf,CAAS;sBAhIkC,GAAG;;sBAA4C,GAAG;+BAgIpF;;;;;;YACX,eAEY,SAAS,KAoEmC,UAAU,CAAC,UAAU;sBAvMhC,GAAG;;sBAA4C,GAAG;;sBAAlD,GAAG;;sBAA4C,GAAG;qCAqL7F,CAAC,4JAzWH,GAAG,iLAAH,GAAG;sBAoL0C,GAAG;;sBAA4C,GAAG;kEAmMvE,CAAC;sBAnMoB,GAAG;;sBAA4C,GAAG;;sBAAlD,GAAG;;sBAA4C,GAAG;qCAqL7F,CAAC,4JAzWH,GAAG,iLAAH,GAAG;sBAoL0C,GAAG;;sBAA4C,GAAG;uEA8LlE,CAAC,eAY9B;WAsDM,GAAG;kBAhQoC,GAAG;;kBAA4C,GAAG;;SAmC/F,EAAE,EAAE,CAAC,EAAE,CAAC;;;;;;;SAcR,EAAE,6EAjPF,GAAG;;;;;;;SAmQF,GAAG,SAAS,MAAM,CAChB,MAAM,EACN,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC/B,EACD,EAAE,0KAvQH,GAAG;;;;;;;;kBAgM0C,GAAG;;kBAA4C,GAAG;;eAmC3F,CAAC,EAAE,CAAC;;;;;;;4FAnOR,GAAG;;;;;;;SAmQF,GAAG,SAAS,MAAM,CAChB,MAAM,EACN,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC/B,EACD,EAAE,4KAvQH,GAAG;;;;;;;;eAwdU,CAAC;;iBAAwC,CAAC,KAe9C,UAAU,CAAC,UAAU,+HATH,CAAC,oBAY9B;CA0BJ,CAAA"}
package/dist/router.js CHANGED
@@ -16,7 +16,7 @@ export const makeRouter = (handleRequestEnv /* Middleware */) => {
16
16
  // const rdesc = yield* RouteDescriptors.flatMap((_) => _.get)
17
17
  const handler = makeRequestHandler(requestHandler, // one argument if no middleware, 2 if has middleware. TODO: clean this shit up
18
18
  errorHandler, middlewareLayer);
19
- const route = HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler);
19
+ const route = HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler.pipe(Effect.withSpan("Request." + requestHandler.name, { captureStackTrace: () => requestHandler.stack })));
20
20
  // TODO
21
21
  // rdesc.push(makeRouteDescriptor(
22
22
  // requestHandler.Request.path,
@@ -30,6 +30,7 @@ export const makeRouter = (handleRequestEnv /* Middleware */) => {
30
30
  const Response = S.REST.extractResponse(_);
31
31
  return (h) => ({
32
32
  adaptResponse,
33
+ stack: h.stack,
33
34
  h: h.handler,
34
35
  name,
35
36
  Request,
@@ -85,34 +86,46 @@ export const makeRouter = (handleRequestEnv /* Middleware */) => {
85
86
  controllers,
86
87
  ...typedKeysOf(filtered).reduce((prev, cur) => {
87
88
  ;
88
- prev[cur] = (svcOrFnOrEffect, fnOrNone) => Effect.isEffect(svcOrFnOrEffect)
89
- ? class {
90
- static _tag = "d";
91
- static handler = () => svcOrFnOrEffect;
92
- }
93
- : typeof svcOrFnOrEffect === "function"
89
+ prev[cur] = (svcOrFnOrEffect, fnOrNone) => {
90
+ const stack = new Error().stack?.split("\n").slice(2).join("\n");
91
+ return Effect.isEffect(svcOrFnOrEffect)
94
92
  ? class {
93
+ static stack = stack;
95
94
  static _tag = "d";
96
- static handler = (req, ctx) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].Response });
95
+ static handler = () => svcOrFnOrEffect;
97
96
  }
98
- : class {
99
- static _tag = "d";
100
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
101
- };
102
- prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => Effect.isEffect(svcOrFnOrEffect)
103
- ? class {
104
- static _tag = "raw";
105
- static handler = () => svcOrFnOrEffect;
106
- }
107
- : typeof svcOrFnOrEffect === "function"
97
+ : typeof svcOrFnOrEffect === "function"
98
+ ? class {
99
+ static stack = stack;
100
+ static _tag = "d";
101
+ static handler = (req, ctx) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].Response });
102
+ }
103
+ : class {
104
+ static stack = stack;
105
+ static _tag = "d";
106
+ static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
107
+ };
108
+ };
109
+ prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => {
110
+ const stack = new Error().stack?.split("\n").slice(2).join("\n");
111
+ return Effect.isEffect(svcOrFnOrEffect)
108
112
  ? class {
113
+ static stack = stack;
109
114
  static _tag = "raw";
110
- static handler = (req, ctx) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].Response });
115
+ static handler = () => svcOrFnOrEffect;
111
116
  }
112
- : class {
113
- static _tag = "raw";
114
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
115
- };
117
+ : typeof svcOrFnOrEffect === "function"
118
+ ? class {
119
+ static stack = stack;
120
+ static _tag = "raw";
121
+ static handler = (req, ctx) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].Response });
122
+ }
123
+ : class {
124
+ static stack = stack;
125
+ static _tag = "raw";
126
+ static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
127
+ };
128
+ };
116
129
  return prev;
117
130
  }, {})
118
131
  };
@@ -133,4 +146,4 @@ export const makeRouter = (handleRequestEnv /* Middleware */) => {
133
146
  }
134
147
  return { matchFor, matchAll };
135
148
  };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBY3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXZGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFHNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBZ0J4QyxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLGdCQUFxQixDQUFDLGdCQUFnQixFQUN0QyxFQUFFO0lBb0JGLFNBQVMsS0FBSyxDQW9CWixjQWVDLEVBQ0QsWUFRQyxFQUNELFVBa0JDO1FBRUQsSUFBSSxlQUFlLEdBQTJDLFNBQVMsQ0FBQTtRQUN2RSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUNoRSxjQUFjLEdBQUcsT0FBYyxDQUFBLENBQUMsT0FBTztZQUN2QyxlQUFlLEdBQUcsZ0JBQWdCLENBQUE7UUFDcEMsQ0FBQztRQUNELDhEQUE4RDtRQUU5RCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FrQmhDLGNBQXFCLEVBQUUsK0VBQStFO1FBQ3RHLFlBQVksRUFDWixlQUFlLENBQ2hCLENBQUE7UUFFRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsU0FBUyxDQUNoQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDN0IsY0FBYyxDQUFDLE9B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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBY3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXZGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFHNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBa0J4QyxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLGdCQUFxQixDQUFDLGdCQUFnQixFQUN0QyxFQUFFO0lBcUJGLFNBQVMsS0FBSyxDQW9CWixjQWVDLEVBQ0QsWUFRQyxFQUNELFVBa0JDO1FBRUQsSUFBSSxlQUFlLEdBQTJDLFNBQVMsQ0FBQTtRQUN2RSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUNoRSxjQUFjLEdBQUcsT0FBYyxDQUFBLENBQUMsT0FBTztZQUN2QyxlQUFlLEdBQUcsZ0JBQWdCLENBQUE7UUFDcEMsQ0FBQztRQUNELDhEQUE4RDtRQUU5RCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FrQmhDLGNBQXFCLEVBQUUsK0VBQStFO1FBQ3RHLFlBQVksRUFDWixlQUFlLENBQ2hCLENBQUE7UUFFRCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsU0FBUyxDQUNoQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDN0IsY0FBYyxDQUFDLE9B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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "1.16.0",
3
+ "version": "1.16.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -18,10 +18,10 @@
18
18
  "proper-lockfile": "^4.1.2",
19
19
  "pure-rand": "6.1.0",
20
20
  "redlock": "^4.2.0",
21
+ "@effect-app/infra-adapters": "1.10.1",
21
22
  "@effect-app/core": "1.9.0",
22
- "effect-app": "1.15.0",
23
23
  "@effect-app/schema": "1.11.0",
24
- "@effect-app/infra-adapters": "1.10.1"
24
+ "effect-app": "1.15.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@babel/cli": "^7.25.6",
package/src/router.ts CHANGED
@@ -17,7 +17,7 @@ import type {
17
17
  ResFromSchema
18
18
  } from "@effect-app/infra/api/routing"
19
19
  import { defaultErrorHandler, makeRequestHandler } from "@effect-app/infra/api/routing"
20
- import type { Layer, Scope, Types } from "effect-app"
20
+ import type { Layer, Scope } from "effect-app"
21
21
  import { Effect, Predicate, S } from "effect-app"
22
22
  import type { SupportedErrors, ValidationError } from "effect-app/client/errors"
23
23
  import { HttpRouter } from "effect-app/http"
@@ -39,6 +39,8 @@ export interface Hint<Err extends string> {
39
39
  Err: Err
40
40
  }
41
41
 
42
+ type AnyRequestModule = { Request: any; Context: any; Response: any; failure: any }
43
+
42
44
  // TODO: support FLIP
43
45
  export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, boolean]>>(
44
46
  handleRequestEnv: any /* Middleware */
@@ -62,6 +64,7 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
62
64
  CTXMap[key][1]
63
65
  }
64
66
  >
67
+
65
68
  function match<
66
69
  R,
67
70
  M,
@@ -161,7 +164,9 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
161
164
  const route = HttpRouter.makeRoute(
162
165
  requestHandler.Request.method,
163
166
  requestHandler.Request.path,
164
- handler
167
+ handler.pipe(
168
+ Effect.withSpan("Request." + requestHandler.name, { captureStackTrace: () => (requestHandler as any).stack })
169
+ )
165
170
  )
166
171
  // TODO
167
172
  // rdesc.push(makeRouteDescriptor(
@@ -194,9 +199,10 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
194
199
  type Res = S.Schema.Type<Extr<ResSchema>>
195
200
 
196
201
  return <R, E>(
197
- h: { _tag: "raw" | "d"; handler: (r: Req) => Effect<Res, E, R> }
202
+ h: { _tag: "raw" | "d"; handler: (r: Req) => Effect<Res, E, R>; stack?: string }
198
203
  ) => ({
199
204
  adaptResponse,
205
+ stack: h.stack,
200
206
  h: h.handler,
201
207
  name,
202
208
  Request,
@@ -217,6 +223,15 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
217
223
  >)
218
224
  }
219
225
 
226
+ type RouteMatch<
227
+ R,
228
+ M,
229
+ // TODO: specific failure
230
+ // Err extends SupportedErrors | S.ParseResult.ParseError,
231
+ PR = never
232
+ > // RErr = never,
233
+ = HttpRouter.Route<never, Exclude<Exclude<R, EnforceNonEmptyRecord<M>>, PR>>
234
+
220
235
  type HandleVoid<Expected, Actual, Result> = Expected extends void
221
236
  ? Actual extends void ? Result : Hint<"You're returning non void for a void Response, please fix">
222
237
  : Result
@@ -256,7 +271,7 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
256
271
  ) => Effect<A, E, R2>
257
272
  ) =>
258
273
  (req: any, ctx: any) =>
259
- Effect.andThen(allLower(services), (svc2) => f(req, { ...ctx, ...svc2 as any, Response: rsc[action].Response }))
274
+ Effect.andThen(allLower(services), (svc2) => f(req, { ...ctx, ...svc2, Response: rsc[action].Response }))
260
275
  }
261
276
 
262
277
  type MatchWithServicesNew<RT extends "raw" | "d", Key extends keyof Rsc> = {
@@ -266,14 +281,14 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
266
281
  S.Schema.Type<REST.GetResponse<Rsc[Key]>>,
267
282
  A,
268
283
  Handler<
269
- ReqFromSchema<REST.GetRequest<Rsc[Key]>>,
270
- Types.Simplify<GetCTX<REST.GetRequest<Rsc[Key]>>>,
284
+ Rsc[Key],
271
285
  RT,
272
286
  A,
273
287
  E,
274
288
  R2
275
289
  >
276
290
  >
291
+
277
292
  <R2, E, A>(
278
293
  f: (
279
294
  req: ReqFromSchema<REST.GetRequest<Rsc[Key]>>,
@@ -283,8 +298,7 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
283
298
  S.Schema.Type<REST.GetResponse<Rsc[Key]>>,
284
299
  A,
285
300
  Handler<
286
- ReqFromSchema<REST.GetRequest<Rsc[Key]>>,
287
- Types.Simplify<GetCTX<REST.GetRequest<Rsc[Key]>>>,
301
+ Rsc[Key],
288
302
  RT,
289
303
  A,
290
304
  E,
@@ -313,8 +327,7 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
313
327
  S.Schema.Type<REST.GetResponse<Rsc[Key]>>,
314
328
  A,
315
329
  Handler<
316
- ReqFromSchema<REST.GetRequest<Rsc[Key]>>,
317
- Types.Simplify<GetCTX<REST.GetRequest<Rsc[Key]>>>,
330
+ Rsc[Key],
318
331
  RT,
319
332
  A,
320
333
  E,
@@ -324,12 +337,11 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
324
337
  }
325
338
 
326
339
  type Keys = keyof Filtered
327
- type Handler<Req, Context, RT extends "raw" | "d", A, E, R> = {
328
- new(): {}
340
+ type Handler<Action extends AnyRequestModule, RT extends "raw" | "d", A, E, R> = {
329
341
  _tag: RT
330
342
  handler: (
331
- req: Req,
332
- ctx: Context
343
+ req: Action["Request"],
344
+ ctx: Action["Context"]
333
345
  ) => Effect<
334
346
  A,
335
347
  E,
@@ -337,21 +349,19 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
337
349
  >
338
350
  }
339
351
 
340
- type AHandler<Action extends Record<string, any>> =
352
+ type AHandler<Action extends AnyRequestModule> =
341
353
  | Handler<
342
- ReqFromSchema<REST.GetRequest<Action>>,
343
- GetCTX<REST.GetRequest<Action>>,
354
+ Action,
344
355
  "raw",
345
356
  ResRawFromSchema<REST.GetResponse<Action>>,
346
- SupportedErrors | S.ParseResult.ParseError | S.Schema.Type<REST.GetRequest<Action>["failure"]>,
357
+ SupportedErrors | S.ParseResult.ParseError | S.Schema.Type<Action["failure"]>,
347
358
  any
348
359
  >
349
360
  | Handler<
350
- ReqFromSchema<REST.GetRequest<Action>>,
351
- GetCTX<REST.GetRequest<Action>>,
361
+ Action,
352
362
  "d",
353
363
  ResFromSchema<REST.GetResponse<Action>>,
354
- SupportedErrors | S.ParseResult.ParseError | S.Schema.Type<REST.GetRequest<Action>["failure"]>,
364
+ SupportedErrors | S.ParseResult.ParseError | S.Schema.Type<Action["failure"]>,
355
365
  any
356
366
  >
357
367
 
@@ -441,36 +451,46 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
441
451
  controllers,
442
452
  ...typedKeysOf(filtered).reduce(
443
453
  (prev, cur) => {
444
- ;(prev as any)[cur] = (svcOrFnOrEffect: any, fnOrNone: any) =>
445
- Effect.isEffect(svcOrFnOrEffect)
454
+ ;(prev as any)[cur] = (svcOrFnOrEffect: any, fnOrNone: any) => {
455
+ const stack = new Error().stack?.split("\n").slice(2).join("\n")
456
+ return Effect.isEffect(svcOrFnOrEffect)
446
457
  ? class {
458
+ static stack = stack
447
459
  static _tag = "d"
448
460
  static handler = () => svcOrFnOrEffect
449
461
  }
450
462
  : typeof svcOrFnOrEffect === "function"
451
463
  ? class {
464
+ static stack = stack
452
465
  static _tag = "d"
453
466
  static handler = (req: any, ctx: any) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].Response })
454
467
  }
455
468
  : class {
469
+ static stack = stack
456
470
  static _tag = "d"
457
471
  static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone)
458
472
  }
459
- ;(prev as any)[(cur as any) + "Raw"] = (svcOrFnOrEffect: any, fnOrNone: any) =>
460
- Effect.isEffect(svcOrFnOrEffect)
473
+ }
474
+ ;(prev as any)[(cur as any) + "Raw"] = (svcOrFnOrEffect: any, fnOrNone: any) => {
475
+ const stack = new Error().stack?.split("\n").slice(2).join("\n")
476
+ return Effect.isEffect(svcOrFnOrEffect)
461
477
  ? class {
478
+ static stack = stack
462
479
  static _tag = "raw"
463
480
  static handler = () => svcOrFnOrEffect
464
481
  }
465
482
  : typeof svcOrFnOrEffect === "function"
466
483
  ? class {
484
+ static stack = stack
467
485
  static _tag = "raw"
468
486
  static handler = (req: any, ctx: any) => svcOrFnOrEffect(req, { ...ctx, Response: rsc[cur].Response })
469
487
  }
470
488
  : class {
489
+ static stack = stack
471
490
  static _tag = "raw"
472
491
  static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone)
473
492
  }
493
+ }
474
494
  return prev
475
495
  },
476
496
  {} as
@@ -516,8 +536,8 @@ export const makeRouter = <CTX, CTXMap extends Record<string, [string, any, bool
516
536
  : never
517
537
 
518
538
  return r as HttpRouter.HttpRouter<
519
- _RRouter<typeof handlers[keyof typeof handlers]>,
520
- _ERouter<typeof handlers[keyof typeof handlers]>
539
+ _ERouter<typeof handlers[keyof typeof handlers]>,
540
+ _RRouter<typeof handlers[keyof typeof handlers]>
521
541
  >
522
542
  }
523
543