@effect-app/infra 2.1.2 → 2.2.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.
@@ -1,270 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.toHttpApp = exports.makeRouter = exports.RouterSymbol = void 0;
7
- var _rpc = require("@effect/rpc");
8
- var _effectApp = require("effect-app");
9
- var _Effect = require("effect-app/Effect");
10
- var _http = require("effect-app/http");
11
- var _utils = require("effect-app/utils");
12
- var _errorReporter = require("../errorReporter.cjs");
13
- var _logger = require("../logger.cjs");
14
- var _DynamicMiddleware = require("./routing/DynamicMiddleware.cjs");
15
- const logRequestError = (0, _errorReporter.logError)("Request");
16
- const reportRequestError = (0, _errorReporter.reportError)("Request");
17
- /**
18
- * Plain jane JSON version
19
- * @deprecated use HttpRpcRouterNoStream.toHttpApp once support options
20
- */
21
- const toHttpApp = (self, options) => {
22
- const handler = _rpc.RpcRouter.toHandler(self, options);
23
- return _effectApp.Effect.withFiberRuntime(fiber => {
24
- const context = fiber.getFiberRef(_effectApp.FiberRef.currentContext);
25
- const request = _effectApp.Context.unsafeGet(context, _http.HttpServerRequest.HttpServerRequest);
26
- return _effectApp.Effect.flatMap(request.json, _ => handler(_).pipe(_effectApp.Stream.provideContext(context), _effectApp.Stream.runCollect, _effectApp.Effect.map(_ => _effectApp.Chunk.toReadonlyArray(_)), _effectApp.Effect.andThen(_ => {
27
- let status = 200;
28
- for (const r of _.flat()) {
29
- if (typeof r === "number") continue;
30
- const results = Array.isArray(r) ? r : [r];
31
- if (results.some(_ => _._tag === "Failure" && _.cause._tag === "Die")) {
32
- status = 500;
33
- break;
34
- }
35
- if (results.some(_ => _._tag === "Failure" && _.cause._tag === "Fail")) {
36
- status = 422; // 418
37
- break;
38
- }
39
- }
40
- return _http.HttpServerResponse.json(_, {
41
- status
42
- });
43
- }), _effectApp.Effect.orDie, _effectApp.Effect.tapDefect((0, _errorReporter.reportError)("RPCHttpApp"))));
44
- });
45
- };
46
- exports.toHttpApp = toHttpApp;
47
- const RouterSymbol = exports.RouterSymbol = Symbol();
48
- const makeRouter = (middleware, devMode) => {
49
- const rpc = (0, _DynamicMiddleware.makeRpc)(middleware);
50
- function matchFor(rsc) {
51
- const meta = rsc.meta;
52
- const filtered = (0, _utils.typedKeysOf)(rsc).reduce((acc, cur) => {
53
- if (_effectApp.Predicate.isObject(rsc[cur]) && rsc[cur]["success"]) {
54
- acc[cur] = rsc[cur];
55
- }
56
- return acc;
57
- }, {});
58
- const matchWithServices = action => {
59
- return (services, f) => req => _effectApp.Effect.andThen(_effectApp.Effect.all({
60
- svc: (0, _Effect.allLower)(services),
61
- ctx: middleware.makeContext
62
- }), ({
63
- ctx,
64
- svc
65
- }) => f(req, {
66
- ...svc,
67
- ...ctx,
68
- Response: rsc[action].success
69
- }));
70
- };
71
- const controllers = (controllers, layers) => {
72
- const mapped = (0, _utils.typedKeysOf)(filtered).reduce((acc, cur) => {
73
- const handler = controllers[cur];
74
- const req = rsc[cur];
75
- acc[cur] = rpc.effect(handler._tag === "raw" ? class extends req {
76
- static success = _effectApp.S.encodedSchema(req.success);
77
- get [_effectApp.Schema.symbolSerializable]() {
78
- return this.constructor;
79
- }
80
- get [_effectApp.Schema.symbolWithResult]() {
81
- return {
82
- failure: req.failure,
83
- success: _effectApp.S.encodedSchema(req.success)
84
- };
85
- }
86
- } : req, req => _effectApp.Effect.annotateCurrentSpan("requestInput", Object.entries(req).reduce((prev, [key, value]) => {
87
- prev[key] = key === "password" ? "<redacted>" : typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? typeof value === "string" && value.length > 256 ? value.substring(0, 253) + "..." : value : Array.isArray(value) ? `Array[${value.length}]` : value === null || value === undefined ? `${value}` : typeof value === "object" && value ? `Object[${Object.keys(value).length}]` : typeof value;
88
- return prev;
89
- }, {})).pipe(
90
- // can't use andThen due to some being a function and effect
91
- _effectApp.Effect.zipRight(handler.handler(req)), _effectApp.Effect.tapErrorCause(cause => _effectApp.Cause.isFailure(cause) ? logRequestError(cause) : _effectApp.Effect.void), _effectApp.Effect.tapDefect(cause => _effectApp.Effect.all([reportRequestError(cause, {
92
- action: `${meta.moduleName}.${req._tag}`
93
- }), _rpc.Rpc.currentHeaders.pipe(_effectApp.Effect.andThen(headers => {
94
- return _logger.InfraLogger.logError("Finished request", cause).pipe(_effectApp.Effect.annotateLogs({
95
- action: `${meta.moduleName}.${req._tag}`,
96
- req: (0, _utils.pretty)(req),
97
- headers: (0, _utils.pretty)(headers)
98
- // resHeaders: pretty(
99
- // Object
100
- // .entries(headers)
101
- // .reduce((prev, [key, value]) => {
102
- // prev[key] = value && typeof value === "string" ? snipString(value) : value
103
- // return prev
104
- // }, {} as Record<string, any>)
105
- // )
106
- }));
107
- }))])), devMode ? _ => _ : _effectApp.Effect.catchAllDefect(() => _effectApp.Effect.die("Internal Server Error")), _effectApp.Effect.withSpan("Request." + meta.moduleName + "." + req._tag, {
108
- captureStackTrace: () => handler.stack
109
- })), meta.moduleName); // TODO
110
- return acc;
111
- }, {});
112
- const rpcRouter = _rpc.RpcRouter.make(...Object.values(mapped));
113
- const r = class Router extends _http.HttpRouter.Tag(`${meta.moduleName}Router`)() {};
114
- const layer = r.use(router => _effectApp.Effect.gen(function* () {
115
- const httpApp = toHttpApp(rpcRouter, {
116
- spanPrefix: rsc.meta.moduleName + "."
117
- });
118
- const services = (yield* _effectApp.Effect.context()).pipe(_effectApp.Context.omit(_effectApp.Scope.Scope), _effectApp.Context.omit(_effectApp.Tracer.ParentSpan));
119
- yield* router.all("/", httpApp.pipe(_http.HttpMiddleware.make(_effectApp.Effect.provide(services))),
120
- // TODO: not queries.
121
- {
122
- uninterruptible: true
123
- });
124
- }));
125
- const routes = layer.pipe(_effectApp.Layer.provideMerge(r.Live), layers ? _effectApp.Layer.provide(layers) : _ => _);
126
- // Effect.Effect<HttpRouter.HttpRouter<unknown, HttpRouter.HttpRouter.DefaultServices>, never, UserRouter>
127
- return {
128
- moduleName: meta.moduleName,
129
- Router: r,
130
- routes
131
- };
132
- };
133
- const effect = (layers, make) => {
134
- const r = class Router extends _http.HttpRouter.Tag(`${meta.moduleName}Router`)() {};
135
- const layer = r.use(router => _effectApp.Effect.gen(function* () {
136
- const controllers = yield* make;
137
- // return make.pipe(Effect.map((c) => controllers(c, layers)))
138
- const mapped = (0, _utils.typedKeysOf)(filtered).reduce((acc, cur) => {
139
- const handler = controllers[cur];
140
- const req = rsc[cur];
141
- acc[cur] = rpc.effect(handler._tag === "raw" ? class extends req {
142
- static success = _effectApp.S.encodedSchema(req.success);
143
- get [_effectApp.Schema.symbolSerializable]() {
144
- return this.constructor;
145
- }
146
- get [_effectApp.Schema.symbolWithResult]() {
147
- return {
148
- failure: req.failure,
149
- success: _effectApp.S.encodedSchema(req.success)
150
- };
151
- }
152
- } : req, req => _effectApp.Effect.annotateCurrentSpan("requestInput", Object.entries(req).reduce((prev, [key, value]) => {
153
- prev[key] = key === "password" ? "<redacted>" : typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? typeof value === "string" && value.length > 256 ? value.substring(0, 253) + "..." : value : Array.isArray(value) ? `Array[${value.length}]` : value === null || value === undefined ? `${value}` : typeof value === "object" && value ? `Object[${Object.keys(value).length}]` : typeof value;
154
- return prev;
155
- }, {})).pipe(
156
- // can't use andThen due to some being a function and effect
157
- _effectApp.Effect.zipRight(handler.handler(req)), _effectApp.Effect.tapErrorCause(cause => _effectApp.Cause.isFailure(cause) ? logRequestError(cause) : _effectApp.Effect.void), _effectApp.Effect.tapDefect(cause => _effectApp.Effect.all([reportRequestError(cause, {
158
- action: `${meta.moduleName}.${req._tag}`
159
- }), _rpc.Rpc.currentHeaders.pipe(_effectApp.Effect.andThen(headers => {
160
- return _logger.InfraLogger.logError("Finished request", cause).pipe(_effectApp.Effect.annotateLogs({
161
- action: `${meta.moduleName}.${req._tag}`,
162
- req: (0, _utils.pretty)(req),
163
- headers: (0, _utils.pretty)(headers)
164
- // resHeaders: pretty(
165
- // Object
166
- // .entries(headers)
167
- // .reduce((prev, [key, value]) => {
168
- // prev[key] = value && typeof value === "string" ? snipString(value) : value
169
- // return prev
170
- // }, {} as Record<string, any>)
171
- // )
172
- }));
173
- }))])), devMode ? _ => _ : _effectApp.Effect.catchAllDefect(() => _effectApp.Effect.die("Internal Server Error")), _effectApp.Effect.withSpan("Request." + meta.moduleName + "." + req._tag, {
174
- captureStackTrace: () => handler.stack
175
- })), meta.moduleName); // TODO
176
- return acc;
177
- }, {});
178
- const rpcRouter = _rpc.RpcRouter.make(...Object.values(mapped));
179
- const httpApp = toHttpApp(rpcRouter, {
180
- spanPrefix: rsc.meta.moduleName + "."
181
- });
182
- const services = (yield* _effectApp.Effect.context()).pipe(_effectApp.Context.omit(_effectApp.Scope.Scope), _effectApp.Context.omit(_effectApp.Tracer.ParentSpan));
183
- yield* router.all("/", httpApp.pipe(_http.HttpMiddleware.make(_effectApp.Effect.provide(services))),
184
- // TODO: not queries.
185
- {
186
- uninterruptible: true
187
- });
188
- }));
189
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
190
- const routes = layer.pipe(_effectApp.Layer.provideMerge(r.Live), layers ? _effectApp.Layer.provide(layers) : _ => _);
191
- // Effect.Effect<HttpRouter.HttpRouter<unknown, HttpRouter.HttpRouter.DefaultServices>, never, UserRouter>
192
- return {
193
- moduleName: meta.moduleName,
194
- Router: r,
195
- routes
196
- };
197
- };
198
- const r = {
199
- effect,
200
- controllers,
201
- ...(0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
202
- ;
203
- prev[cur] = (svcOrFnOrEffect, fnOrNone) => {
204
- const stack = new Error().stack?.split("\n").slice(2).join("\n");
205
- return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
206
- static stack = stack;
207
- static _tag = "d";
208
- static handler = () => svcOrFnOrEffect;
209
- } : typeof svcOrFnOrEffect === "function" ? class {
210
- static stack = stack;
211
- static _tag = "d";
212
- static handler = req => _effectApp.Effect.andThen(_effectApp.Effect.all({
213
- ctx: middleware.makeContext
214
- }), ({
215
- ctx
216
- }) => svcOrFnOrEffect(req, {
217
- ...ctx,
218
- Response: rsc[cur].success
219
- }));
220
- } : class {
221
- static stack = stack;
222
- static _tag = "d";
223
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
224
- };
225
- } // "Raw" variations are for when you don't want to decode just to encode it again on the response
226
- ;
227
- prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => {
228
- const stack = new Error().stack?.split("\n").slice(2).join("\n");
229
- return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
230
- static stack = stack;
231
- static _tag = "raw";
232
- static handler = () => svcOrFnOrEffect;
233
- } : typeof svcOrFnOrEffect === "function" ? class {
234
- static stack = stack;
235
- static _tag = "raw";
236
- static handler = (req, ctx) => svcOrFnOrEffect(req, {
237
- ...ctx,
238
- Response: rsc[cur].success
239
- });
240
- } : class {
241
- static stack = stack;
242
- static _tag = "raw";
243
- static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
244
- };
245
- };
246
- return prev;
247
- }, {})
248
- };
249
- return r;
250
- }
251
- function matchAll(handlers, requestLayer) {
252
- const routers = (0, _utils.typedValuesOf)(handlers);
253
- const rootRouter = class extends _http.HttpRouter.Tag("RootRouter")() {};
254
- const r = rootRouter.use(router => _effectApp.Effect.gen(function* () {
255
- for (const route of routers) {
256
- yield* router.mount("/rpc/" + route.moduleName, yield* route.Router.router.pipe(_effectApp.Effect.map(_http.HttpRouter.use((0, _effectApp.flow)(_effectApp.Effect.provide(requestLayer))))));
257
- }
258
- })).pipe(_effectApp.Layer.provide(routers.map(r => r.routes).flat()));
259
- return {
260
- layer: r,
261
- Router: rootRouter
262
- };
263
- }
264
- return {
265
- matchAll,
266
- matchFor
267
- };
268
- };
269
- exports.makeRouter = makeRouter;
270
- //# sourceMappingURL=routing2.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routing2.cjs","names":["_rpc","require","_effectApp","_Effect","_http","_utils","_errorReporter","_logger","_DynamicMiddleware","logRequestError","logError","reportRequestError","reportError","toHttpApp","self","options","handler","RpcRouter","toHandler","Effect","withFiberRuntime","fiber","context","getFiberRef","FiberRef","currentContext","request","Context","unsafeGet","HttpServerRequest","flatMap","json","_","pipe","Stream","provideContext","runCollect","map","Chunk","toReadonlyArray","andThen","status","r","flat","results","Array","isArray","some","_tag","cause","HttpServerResponse","orDie","tapDefect","exports","RouterSymbol","Symbol","makeRouter","middleware","devMode","rpc","makeRpc","matchFor","rsc","meta","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","matchWithServices","action","services","f","req","all","svc","allLower","ctx","makeContext","Response","success","controllers","layers","mapped","effect","S","encodedSchema","Schema","symbolSerializable","constructor","symbolWithResult","failure","annotateCurrentSpan","Object","entries","prev","key","value","length","substring","undefined","keys","zipRight","tapErrorCause","Cause","isFailure","void","moduleName","Rpc","currentHeaders","headers","InfraLogger","annotateLogs","pretty","catchAllDefect","die","withSpan","captureStackTrace","stack","rpcRouter","make","values","Router","HttpRouter","Tag","layer","use","router","gen","httpApp","spanPrefix","omit","Scope","Tracer","ParentSpan","HttpMiddleware","provide","uninterruptible","routes","Layer","provideMerge","Live","svcOrFnOrEffect","fnOrNone","Error","split","slice","join","isEffect","matchAll","handlers","requestLayer","routers","typedValuesOf","rootRouter","route","mount","flow"],"sources":["../../src/api/routing2.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,187 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.toHttpApp = exports.makeRouter = exports.RouterSymbol = void 0;
7
- var _rpc = require("@effect/rpc");
8
- var _effectApp = require("effect-app");
9
- var _http = require("effect-app/http");
10
- var _utils = require("effect-app/utils");
11
- var _errorReporter = require("../errorReporter.cjs");
12
- var _logger = require("../logger.cjs");
13
- var _DynamicMiddleware = require("./routing/DynamicMiddleware.cjs");
14
- const logRequestError = (0, _errorReporter.logError)("Request");
15
- const reportRequestError = (0, _errorReporter.reportError)("Request");
16
- /**
17
- * Plain jane JSON version
18
- * @deprecated use HttpRpcRouterNoStream.toHttpApp once support options
19
- */
20
- const toHttpApp = (self, options) => {
21
- const handler = _rpc.RpcRouter.toHandler(self, options);
22
- return _effectApp.Effect.withFiberRuntime(fiber => {
23
- const context = fiber.getFiberRef(_effectApp.FiberRef.currentContext);
24
- const request = _effectApp.Context.unsafeGet(context, _http.HttpServerRequest.HttpServerRequest);
25
- return _effectApp.Effect.flatMap(request.json, _ => handler(_).pipe(_effectApp.Stream.provideContext(context), _effectApp.Stream.runCollect, _effectApp.Effect.map(_ => _effectApp.Chunk.toReadonlyArray(_)), _effectApp.Effect.andThen(_ => {
26
- let status = 200;
27
- for (const r of _.flat()) {
28
- if (typeof r === "number") continue;
29
- const results = Array.isArray(r) ? r : [r];
30
- if (results.some(_ => _._tag === "Failure" && _.cause._tag === "Die")) {
31
- status = 500;
32
- break;
33
- }
34
- if (results.some(_ => _._tag === "Failure" && _.cause._tag === "Fail")) {
35
- status = 422; // 418
36
- break;
37
- }
38
- }
39
- return _http.HttpServerResponse.json(_, {
40
- status
41
- });
42
- }), _effectApp.Effect.orDie, _effectApp.Effect.tapDefect((0, _errorReporter.reportError)("RPCHttpApp"))));
43
- });
44
- };
45
- exports.toHttpApp = toHttpApp;
46
- const RouterSymbol = exports.RouterSymbol = Symbol();
47
- // export interface RouteMatcher<
48
- // Filtered extends Record<string, any>,
49
- // CTXMap extends Record<string, any>,
50
- // Rsc extends Filtered
51
- // > extends RouteMatcherInt<Filtered, CTXMap, Rsc> {}
52
- const makeRouter = (middleware, devMode) => {
53
- const rpc = (0, _DynamicMiddleware.makeRpc)(middleware);
54
- function matchFor(rsc) {
55
- const meta = rsc.meta;
56
- const filtered = (0, _utils.typedKeysOf)(rsc).reduce((acc, cur) => {
57
- if (_effectApp.Predicate.isObject(rsc[cur]) && rsc[cur]["success"]) {
58
- acc[cur] = rsc[cur];
59
- }
60
- return acc;
61
- }, {});
62
- const items = (0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
63
- ;
64
- prev[cur] = Object.assign(fnOrEffect => {
65
- const stack = new Error().stack?.split("\n").slice(2).join("\n");
66
- return _effectApp.Effect.isEffect(fnOrEffect) ? class {
67
- static stack = stack;
68
- static _tag = "d";
69
- static handler = () => fnOrEffect;
70
- } : class {
71
- static stack = stack;
72
- static _tag = "d";
73
- static handler = fnOrEffect;
74
- };
75
- }, {
76
- success: rsc[cur].success,
77
- successRaw: _effectApp.S.encodedSchema(rsc[cur].success),
78
- failure: rsc[cur].failure,
79
- raw:
80
- // "Raw" variations are for when you don't want to decode just to encode it again on the response
81
- // e.g for direct projection from DB
82
- // but more importantly, to skip Effectful decoders, like to resolve relationships from the database or remote client.
83
- fnOrEffect => {
84
- const stack = new Error().stack?.split("\n").slice(2).join("\n");
85
- return _effectApp.Effect.isEffect(fnOrEffect) ? class {
86
- static stack = stack;
87
- static _tag = "raw";
88
- static handler = () => fnOrEffect;
89
- } : class {
90
- static stack = stack;
91
- static _tag = "raw";
92
- static handler = (req, ctx) => fnOrEffect(req, {
93
- ...ctx,
94
- Response: rsc[cur].success
95
- });
96
- };
97
- }
98
- });
99
- return prev;
100
- }, {});
101
- const effect = (layers, make) => {
102
- const r = class Router extends _http.HttpRouter.Tag(`${meta.moduleName}Router`)() {};
103
- const layer = r.use(router => _effectApp.Effect.gen(function* () {
104
- const controllers = yield* make(items);
105
- // return make.pipe(Effect.map((c) => controllers(c, layers)))
106
- const mapped = (0, _utils.typedKeysOf)(filtered).reduce((acc, cur) => {
107
- const handler = controllers[cur];
108
- const req = rsc[cur];
109
- acc[cur] = rpc.effect(handler._tag === "raw" ? class extends req {
110
- static success = _effectApp.S.encodedSchema(req.success);
111
- get [_effectApp.Schema.symbolSerializable]() {
112
- return this.constructor;
113
- }
114
- get [_effectApp.Schema.symbolWithResult]() {
115
- return {
116
- failure: req.failure,
117
- success: _effectApp.S.encodedSchema(req.success)
118
- };
119
- }
120
- } : req, req => _effectApp.Effect.annotateCurrentSpan("requestInput", Object.entries(req).reduce((prev, [key, value]) => {
121
- prev[key] = key === "password" ? "<redacted>" : typeof value === "string" || typeof value === "number" || typeof value === "boolean" ? typeof value === "string" && value.length > 256 ? value.substring(0, 253) + "..." : value : Array.isArray(value) ? `Array[${value.length}]` : value === null || value === undefined ? `${value}` : typeof value === "object" && value ? `Object[${Object.keys(value).length}]` : typeof value;
122
- return prev;
123
- }, {})).pipe(
124
- // can't use andThen due to some being a function and effect
125
- _effectApp.Effect.zipRight(handler.handler(req)), _effectApp.Effect.tapErrorCause(cause => _effectApp.Cause.isFailure(cause) ? logRequestError(cause) : _effectApp.Effect.void), _effectApp.Effect.tapDefect(cause => _effectApp.Effect.all([reportRequestError(cause, {
126
- action: `${meta.moduleName}.${req._tag}`
127
- }), _rpc.Rpc.currentHeaders.pipe(_effectApp.Effect.andThen(headers => {
128
- return _logger.InfraLogger.logError("Finished request", cause).pipe(_effectApp.Effect.annotateLogs({
129
- action: `${meta.moduleName}.${req._tag}`,
130
- req: (0, _utils.pretty)(req),
131
- headers: (0, _utils.pretty)(headers)
132
- // resHeaders: pretty(
133
- // Object
134
- // .entries(headers)
135
- // .reduce((prev, [key, value]) => {
136
- // prev[key] = value && typeof value === "string" ? snipString(value) : value
137
- // return prev
138
- // }, {} as Record<string, any>)
139
- // )
140
- }));
141
- }))])), devMode ? _ => _ : _effectApp.Effect.catchAllDefect(() => _effectApp.Effect.die("Internal Server Error")), _effectApp.Effect.withSpan("Request." + meta.moduleName + "." + req._tag, {
142
- captureStackTrace: () => handler.stack
143
- })), meta.moduleName); // TODO
144
- return acc;
145
- }, {});
146
- const rpcRouter = _rpc.RpcRouter.make(...Object.values(mapped));
147
- const httpApp = toHttpApp(rpcRouter, {
148
- spanPrefix: rsc.meta.moduleName + "."
149
- });
150
- const services = (yield* _effectApp.Effect.context()).pipe(_effectApp.Context.omit(_effectApp.Scope.Scope), _effectApp.Context.omit(_effectApp.Tracer.ParentSpan));
151
- yield* router.all("/", httpApp.pipe(_http.HttpMiddleware.make(_effectApp.Effect.provide(services))),
152
- // TODO: not queries.
153
- {
154
- uninterruptible: true
155
- });
156
- }));
157
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
158
- const routes = layer.pipe(_effectApp.Layer.provideMerge(r.Live), layers ? _effectApp.Layer.provide(layers) : _ => _);
159
- // Effect.Effect<HttpRouter.HttpRouter<unknown, HttpRouter.HttpRouter.DefaultServices>, never, UserRouter>
160
- return {
161
- moduleName: meta.moduleName,
162
- Router: r,
163
- routes
164
- };
165
- };
166
- return effect;
167
- }
168
- function matchAll(handlers, requestLayer) {
169
- const routers = (0, _utils.typedValuesOf)(handlers);
170
- const rootRouter = class extends _http.HttpRouter.Tag("RootRouter")() {};
171
- const r = rootRouter.use(router => _effectApp.Effect.gen(function* () {
172
- for (const route of routers) {
173
- yield* router.mount("/rpc/" + route.moduleName, yield* route.Router.router.pipe(_effectApp.Effect.map(_http.HttpRouter.use((0, _effectApp.flow)(_effectApp.Effect.provide(requestLayer))))));
174
- }
175
- })).pipe(_effectApp.Layer.provide(routers.map(r => r.routes).flat()));
176
- return {
177
- layer: r,
178
- Router: rootRouter
179
- };
180
- }
181
- return {
182
- matchAll,
183
- matchFor
184
- };
185
- };
186
- exports.makeRouter = makeRouter;
187
- //# sourceMappingURL=routing3.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routing3.cjs","names":["_rpc","require","_effectApp","_http","_utils","_errorReporter","_logger","_DynamicMiddleware","logRequestError","logError","reportRequestError","reportError","toHttpApp","self","options","handler","RpcRouter","toHandler","Effect","withFiberRuntime","fiber","context","getFiberRef","FiberRef","currentContext","request","Context","unsafeGet","HttpServerRequest","flatMap","json","_","pipe","Stream","provideContext","runCollect","map","Chunk","toReadonlyArray","andThen","status","r","flat","results","Array","isArray","some","_tag","cause","HttpServerResponse","orDie","tapDefect","exports","RouterSymbol","Symbol","makeRouter","middleware","devMode","rpc","makeRpc","matchFor","rsc","meta","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","items","prev","Object","assign","fnOrEffect","stack","Error","split","slice","join","isEffect","success","successRaw","S","encodedSchema","failure","raw","req","ctx","Response","effect","layers","make","Router","HttpRouter","Tag","moduleName","layer","use","router","gen","controllers","mapped","Schema","symbolSerializable","constructor","symbolWithResult","annotateCurrentSpan","entries","key","value","length","substring","undefined","keys","zipRight","tapErrorCause","Cause","isFailure","void","all","action","Rpc","currentHeaders","headers","InfraLogger","annotateLogs","pretty","catchAllDefect","die","withSpan","captureStackTrace","rpcRouter","values","httpApp","spanPrefix","services","omit","Scope","Tracer","ParentSpan","HttpMiddleware","provide","uninterruptible","routes","Layer","provideMerge","Live","matchAll","handlers","requestLayer","routers","typedValuesOf","rootRouter","route","mount","flow"],"sources":["../../src/api/routing3.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,112 +0,0 @@
1
- import type * as HttpApp from "@effect/platform/HttpApp";
2
- import { Rpc, RpcRouter } from "@effect/rpc";
3
- import type { NonEmptyArray } from "effect-app";
4
- import { Effect, Layer, S } from "effect-app";
5
- import type { GetEffectContext, RPCContextMap } from "effect-app/client/req";
6
- import { type EffectUnunified } from "effect-app/Effect";
7
- import type { HttpServerError } from "effect-app/http";
8
- import { HttpRouter } from "effect-app/http";
9
- import type { Middleware } from "./routing/DynamicMiddleware.js";
10
- export type _R<T extends Effect<any, any, any>> = [T] extends [
11
- Effect<any, any, infer R>
12
- ] ? R : never;
13
- export type _E<T extends Effect<any, any, any>> = [T] extends [
14
- Effect<any, infer E, any>
15
- ] ? E : never;
16
- export type EffectDeps<A> = {
17
- [K in keyof A as A[K] extends Effect<any, any, any> ? K : never]: A[K] extends Effect<any, any, any> ? A[K] : never;
18
- };
19
- /**
20
- * Plain jane JSON version
21
- * @deprecated use HttpRpcRouterNoStream.toHttpApp once support options
22
- */
23
- export declare const toHttpApp: <R extends RpcRouter.RpcRouter<any, any>>(self: R, options?: {
24
- readonly spanPrefix?: string;
25
- }) => HttpApp.Default<HttpServerError.RequestError, RpcRouter.RpcRouter.Context<R>>;
26
- export interface Hint<Err extends string> {
27
- Err: Err;
28
- }
29
- type HandleVoid<Expected, Actual, Result> = [Expected] extends [void] ? [Actual] extends [void] ? Result : Hint<"You're returning non void for a void Response, please fix"> : Result;
30
- type AnyRequestModule = S.Schema.Any & {
31
- success?: S.Schema.Any;
32
- failure?: S.Schema.Any;
33
- };
34
- type GetSuccess<T> = T extends {
35
- success: S.Schema.Any;
36
- } ? T["success"] : typeof S.Void;
37
- type GetFailure<T extends {
38
- failure?: S.Schema.Any;
39
- }> = T["failure"] extends never ? typeof S.Never : T["failure"];
40
- export interface Handler<Action extends AnyRequestModule, RT extends "raw" | "d", A, E, R> {
41
- new (): {};
42
- _tag: RT;
43
- stack: string;
44
- handler: (req: S.Schema.Type<Action>) => Effect<A, E, R>;
45
- }
46
- type AHandler<Action extends AnyRequestModule> = Handler<Action, "raw", S.Schema.Encoded<GetSuccess<Action>>, S.Schema.Type<GetFailure<Action>> | S.ParseResult.ParseError, any> | Handler<Action, "d", S.Schema.Type<GetSuccess<Action>>, S.Schema.Type<GetFailure<Action>> | S.ParseResult.ParseError, any>;
47
- type Filter<T> = {
48
- [K in keyof T as T[K] extends S.Schema.All & {
49
- success: S.Schema.Any;
50
- failure: S.Schema.Any;
51
- } ? K : never]: T[K];
52
- };
53
- export interface ExtendedMiddleware<Context, CTXMap extends Record<string, RPCContextMap.Any>> extends Middleware<Context, CTXMap> {
54
- makeContext: Effect<{
55
- [K in keyof CTXMap as CTXMap[K][1] extends never ? never : CTXMap[K][0]]: CTXMap[K][1];
56
- }, never, never>;
57
- }
58
- export declare const RouterSymbol: unique symbol;
59
- export interface RouterShape<Rsc> {
60
- [RouterSymbol]: Rsc;
61
- }
62
- type RPCRouteR<T extends Rpc.Rpc<any, any>> = [T] extends [
63
- Rpc.Rpc<any, infer R>
64
- ] ? R : never;
65
- export declare const makeRouter: <Context, CTXMap extends Record<string, RPCContextMap.Any>>(middleware: ExtendedMiddleware<Context, CTXMap>, devMode: boolean) => {
66
- matchAll: <T extends {
67
- [key: string]: {
68
- Router: {
69
- router: Effect<HttpRouter.HttpRouter<any, any>, any, any>;
70
- };
71
- routes: Layer.Layer<any, any, any>;
72
- moduleName: string;
73
- };
74
- }, A, E, R>(handlers: T, requestLayer: Layer.Layer<A, E, R>) => {
75
- layer: Layer.Layer<never, Layer.Layer.Error<(typeof handlers)[keyof typeof handlers]["routes"]>, Layer.Layer.Context<(typeof handlers)[keyof typeof handlers]["routes"]>>;
76
- Router: HttpRouter.HttpRouter.TagClass<"RootRouter", "RootRouter", Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_1 ? T_1 extends Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_1 extends HttpRouter.HttpRouter<infer E_1, any> ? E_1 : never : never : never, R | Exclude<Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_2 ? T_2 extends Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_2 extends HttpRouter.HttpRouter<any, infer R_1> ? R_1 : never : never : never, A>>;
77
- };
78
- matchFor: <const ModuleName extends string, const Rsc extends Record<string, any>>(rsc: Rsc & {
79
- meta: {
80
- moduleName: ModuleName;
81
- };
82
- }) => {
83
- effect: <E_1, R_1, THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]>; }, TLayers extends NonEmptyArray<Layer.Layer.Any>>(layers: TLayers, make: Effect<THandlers, E_1, R_1>) => {
84
- moduleName: ModuleName;
85
- Router: HttpRouter.HttpRouter.TagClass<RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<RPCRouteR<{ [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>>; }[keyof Filter<Rsc>]>, { [k in keyof TLayers]: Layer.Layer.Success<TLayers[k]>; }[number]>>;
86
- routes: Layer.Layer<RouterShape<Rsc>, E_1 | { [k_1 in keyof TLayers]: Layer.Layer.Error<TLayers[k_1]>; }[number], { [k_2 in keyof TLayers]: Layer.Layer.Context<TLayers[k_2]>; }[number] | Exclude<R_1, { [k_3 in keyof TLayers]: Layer.Layer.Success<TLayers[k_3]>; }[number]>>;
87
- };
88
- controllers: <THandlers_1 extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]>; }, TLayers_1 extends NonEmptyArray<Layer.Layer.Any>>(controllers: THandlers_1, layers?: TLayers_1) => {
89
- moduleName: ModuleName;
90
- Router: HttpRouter.HttpRouter.TagClass<RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<Context, { [k in keyof TLayers_1]: Layer.Layer.Success<TLayers_1[k]>; }[number]> | Exclude<RPCRouteR<{ [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers_1[K]["handler"]>>>; }[keyof Filter<Rsc>]>, { [k in keyof TLayers_1]: Layer.Layer.Success<TLayers_1[k]>; }[number]>>;
91
- routes: Layer.Layer<RouterShape<Rsc>, { [k_1 in keyof TLayers_1]: Layer.Layer.Error<TLayers_1[k_1]>; }[number], { [k_2 in keyof TLayers_1]: Layer.Layer.Context<TLayers_1[k_2]>; }[number]>;
92
- };
93
- } & { [Key in keyof Filter<Rsc>]: {
94
- <R2, E_1, A_1>(f: Effect<A_1, E_1, R2>): HandleVoid<S.Schema.Type<GetSuccess<Rsc[Key]>>, A_1, Handler<Rsc[Key], "d", A_1, E_1, Exclude<R2, GetEffectContext<CTXMap, Rsc[Key]["config"]>>>>;
95
- <R2, E_2, A_2>(f: (req: S.Schema.Type<Rsc[Key]>, ctx: { [key in keyof CTXMap as CTXMap[key][3] extends true ? never : key extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as CTXMap[key_1][3] extends true ? never : key_1 extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & { [key_2 in keyof CTXMap as CTXMap[key_2][3] extends false ? never : key_2 extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key_2] extends true ? CTXMap[key_2][0] : never : never]: CTXMap[key_2][1]; } & { [key_3 in keyof CTXMap as CTXMap[key_3][3] extends false ? never : key_3 extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key_3] extends false ? CTXMap[key_3][0] : never : CTXMap[key_3][0]]?: CTXMap[key_3][1]; } & {
96
- Response: Rsc[Key]["success"];
97
- }) => Effect<A_2, E_2, R2>): HandleVoid<S.Schema.Type<GetSuccess<Rsc[Key]>>, A_2, Handler<Rsc[Key], "d", A_2, E_2, Exclude<R2, GetEffectContext<CTXMap, Rsc[Key]["config"]>>>>;
98
- <SVC extends Record<string, EffectUnunified<any, any, any>>, R2, E_3, A_3>(services: SVC, f: (req: S.Schema.Type<Rsc[Key]>, ctx: import("effect-app/utils").ComputeFlat<Effect.LowerServices<EffectDeps<SVC>> & { [key in keyof CTXMap as CTXMap[key][3] extends true ? never : key extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as CTXMap[key_1][3] extends true ? never : key_1 extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & { [key_2 in keyof CTXMap as CTXMap[key_2][3] extends false ? never : key_2 extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key_2] extends true ? CTXMap[key_2][0] : never : never]: CTXMap[key_2][1]; } & { [key_3 in keyof CTXMap as CTXMap[key_3][3] extends false ? never : key_3 extends keyof Rsc[Key]["config"] ? Rsc[Key]["config"][key_3] extends false ? CTXMap[key_3][0] : never : CTXMap[key_3][0]]?: CTXMap[key_3][1]; } & {
99
- Response: Rsc[Key]["success"];
100
- }>) => Effect<A_3, E_3, R2>): HandleVoid<S.Schema.Type<GetSuccess<Rsc[Key]>>, A_3, Handler<Rsc[Key], "d", A_3, E_3, Exclude<R2, GetEffectContext<CTXMap, Rsc[Key]["config"]>> | Exclude<Effect.Effect.Context<SVC[keyof SVC]>, GetEffectContext<CTXMap, Rsc[Key]["config"]>>>>;
101
- }; } & { [Key_1 in keyof Filter<Rsc> as Key_1 extends string ? `${Key_1}Raw` : never]: {
102
- <R2_1, E_1, A_1>(f: Effect<A_1, E_1, R2_1>): HandleVoid<S.Schema.Encoded<GetSuccess<Rsc[Key_1]>>, A_1, Handler<Rsc[Key_1], "raw", A_1, E_1, Exclude<R2_1, GetEffectContext<CTXMap, Rsc[Key_1]["config"]>>>>;
103
- <R2_1, E_2, A_2>(f: (req: S.Schema.Type<Rsc[Key_1]>, ctx: { [key in keyof CTXMap as CTXMap[key][3] extends true ? never : key extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as CTXMap[key_1][3] extends true ? never : key_1 extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & { [key_2 in keyof CTXMap as CTXMap[key_2][3] extends false ? never : key_2 extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key_2] extends true ? CTXMap[key_2][0] : never : never]: CTXMap[key_2][1]; } & { [key_3 in keyof CTXMap as CTXMap[key_3][3] extends false ? never : key_3 extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key_3] extends false ? CTXMap[key_3][0] : never : CTXMap[key_3][0]]?: CTXMap[key_3][1]; } & {
104
- Response: Rsc[Key_1]["success"];
105
- }) => Effect<A_2, E_2, R2_1>): HandleVoid<S.Schema.Encoded<GetSuccess<Rsc[Key_1]>>, A_2, Handler<Rsc[Key_1], "raw", A_2, E_2, Exclude<R2_1, GetEffectContext<CTXMap, Rsc[Key_1]["config"]>>>>;
106
- <SVC extends Record<string, EffectUnunified<any, any, any>>, R2, E_3, A_3>(services: SVC, f: (req: S.Schema.Type<Rsc[Key_1]>, ctx: import("effect-app/utils").ComputeFlat<Effect.LowerServices<EffectDeps<SVC>> & { [key in keyof CTXMap as CTXMap[key][3] extends true ? never : key extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key] extends true ? CTXMap[key][0] : never : never]?: CTXMap[key][1]; } & { [key_1 in keyof CTXMap as CTXMap[key_1][3] extends true ? never : key_1 extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key_1] extends false ? CTXMap[key_1][0] : never : CTXMap[key_1][0]]: CTXMap[key_1][1]; } & { [key_2 in keyof CTXMap as CTXMap[key_2][3] extends false ? never : key_2 extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key_2] extends true ? CTXMap[key_2][0] : never : never]: CTXMap[key_2][1]; } & { [key_3 in keyof CTXMap as CTXMap[key_3][3] extends false ? never : key_3 extends keyof Rsc[Key_1]["config"] ? Rsc[Key_1]["config"][key_3] extends false ? CTXMap[key_3][0] : never : CTXMap[key_3][0]]?: CTXMap[key_3][1]; } & {
107
- Response: Rsc[Key_1]["success"];
108
- }>) => Effect<A_3, E_3, R2>): HandleVoid<S.Schema.Encoded<GetSuccess<Rsc[Key_1]>>, A_3, Handler<Rsc[Key_1], "raw", A_3, E_3, Exclude<R2, GetEffectContext<CTXMap, Rsc[Key_1]["config"]>> | Exclude<Effect.Effect.Context<SVC[keyof SVC]>, GetEffectContext<CTXMap, Rsc[Key_1]["config"]>>>>;
109
- }; };
110
- };
111
- export {};
112
- //# sourceMappingURL=routing2.d.ts.map