@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.
- package/CHANGELOG.md +7 -0
- package/_cjs/api/routing/DynamicMiddleware.cjs +6 -7
- package/_cjs/api/routing/DynamicMiddleware.cjs.map +1 -1
- package/_cjs/api/routing.cjs +115 -112
- package/_cjs/api/routing.cjs.map +1 -1
- package/dist/api/routing/DynamicMiddleware.d.ts +8 -7
- package/dist/api/routing/DynamicMiddleware.d.ts.map +1 -1
- package/dist/api/routing/DynamicMiddleware.js +7 -8
- package/dist/api/routing.d.ts +49 -27
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +150 -122
- package/package.json +1 -21
- package/src/api/routing/DynamicMiddleware.ts +30 -26
- package/src/api/routing.ts +360 -344
- package/_cjs/api/routing2.cjs +0 -270
- package/_cjs/api/routing2.cjs.map +0 -1
- package/_cjs/api/routing3.cjs +0 -187
- package/_cjs/api/routing3.cjs.map +0 -1
- package/dist/api/routing2.d.ts +0 -112
- package/dist/api/routing2.d.ts.map +0 -1
- package/dist/api/routing2.js +0 -302
- package/dist/api/routing3.d.ts +0 -108
- package/dist/api/routing3.d.ts.map +0 -1
- package/dist/api/routing3.js +0 -206
- package/src/api/routing2.ts +0 -758
- package/src/api/routing3.ts +0 -511
package/_cjs/api/routing2.cjs
DELETED
|
@@ -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":[]}
|
package/_cjs/api/routing3.cjs
DELETED
|
@@ -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":[]}
|
package/dist/api/routing2.d.ts
DELETED
|
@@ -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
|