@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/CHANGELOG.md
CHANGED
|
@@ -5,16 +5,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.makeRpc = void 0;
|
|
7
7
|
var _rpc = require("@effect/rpc");
|
|
8
|
+
var _effectApp = require("effect-app");
|
|
8
9
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
9
10
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
10
11
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
12
|
|
|
12
|
-
const makeRpc = middleware => {
|
|
13
|
-
|
|
14
|
-
effect
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
};
|
|
13
|
+
const makeRpc = middleware => middleware.execute.pipe(_effectApp.Effect.map(execute => ({
|
|
14
|
+
effect: (schema, handler, moduleName) => {
|
|
15
|
+
return _rpc.Rpc.effect(schema, execute(schema, handler, moduleName));
|
|
16
|
+
}
|
|
17
|
+
})));
|
|
19
18
|
exports.makeRpc = makeRpc;
|
|
20
19
|
//# sourceMappingURL=DynamicMiddleware.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicMiddleware.cjs","names":["_rpc","require","makeRpc","middleware","effect","schema","handler","moduleName","Rpc","
|
|
1
|
+
{"version":3,"file":"DynamicMiddleware.cjs","names":["_rpc","require","_effectApp","makeRpc","middleware","execute","pipe","Effect","map","effect","schema","handler","moduleName","Rpc","exports"],"sources":["../../../src/api/routing/DynamicMiddleware.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AALA;AACA;AACA;;AAmCO,MAAME,OAAO,GAClBC,UAA0C,IAE1CA,UAAU,CAACC,OAAO,CAACC,IAAI,CAACC,iBAAM,CAACC,GAAG,CAAEH,OAAO,KAAM;EAC/CI,MAAM,EAAEA,CACNC,MAAqC,EACrCC,OAMC,EACDC,UAAmB,KACjB;IACF,OAAOC,QAAG,CAACJ,MAAM,CACfC,MAAM,EACNL,OAAO,CAACK,MAAM,EAAEC,OAAO,EAAEC,UAAU,CAAC,CACrC;EACH;CACD,CAAC,CAAC,CAAC;AAAAE,OAAA,CAAAX,OAAA,GAAAA,OAAA","ignoreList":[]}
|
package/_cjs/api/routing.cjs
CHANGED
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.toHttpApp = exports.makeRouter = void 0;
|
|
6
|
+
exports.toHttpApp = exports.makeRouter = exports.RouterSymbol = void 0;
|
|
7
7
|
var _rpc = require("@effect/rpc");
|
|
8
8
|
var _effectApp = require("effect-app");
|
|
9
|
-
var _Effect = require("effect-app/Effect");
|
|
10
9
|
var _http = require("effect-app/http");
|
|
11
10
|
var _utils = require("effect-app/utils");
|
|
12
11
|
var _errorReporter = require("../errorReporter.cjs");
|
|
@@ -44,8 +43,13 @@ const toHttpApp = (self, options) => {
|
|
|
44
43
|
});
|
|
45
44
|
};
|
|
46
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> {}
|
|
47
52
|
const makeRouter = (middleware, devMode) => {
|
|
48
|
-
const rpc = (0, _DynamicMiddleware.makeRpc)(middleware);
|
|
49
53
|
function matchFor(rsc) {
|
|
50
54
|
const meta = rsc.meta;
|
|
51
55
|
const filtered = (0, _utils.typedKeysOf)(rsc).reduce((acc, cur) => {
|
|
@@ -54,126 +58,125 @@ const makeRouter = (middleware, devMode) => {
|
|
|
54
58
|
}
|
|
55
59
|
return acc;
|
|
56
60
|
}, {});
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
get [_effectApp.Schema.symbolWithResult]() {
|
|
80
|
-
return {
|
|
81
|
-
failure: req.failure,
|
|
82
|
-
success: _effectApp.S.encodedSchema(req.success)
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
} : req, req => _effectApp.Effect.annotateCurrentSpan("requestInput", Object.entries(req).reduce((prev, [key, value]) => {
|
|
86
|
-
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;
|
|
87
|
-
return prev;
|
|
88
|
-
}, {})).pipe(
|
|
89
|
-
// can't use andThen due to some being a function and effect
|
|
90
|
-
_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, {
|
|
91
|
-
action: `${meta.moduleName}.${req._tag}`
|
|
92
|
-
}), _rpc.Rpc.currentHeaders.pipe(_effectApp.Effect.andThen(headers => {
|
|
93
|
-
return _logger.InfraLogger.logError("Finished request", cause).pipe(_effectApp.Effect.annotateLogs({
|
|
94
|
-
action: `${meta.moduleName}.${req._tag}`,
|
|
95
|
-
req: (0, _utils.pretty)(req),
|
|
96
|
-
headers: (0, _utils.pretty)(headers)
|
|
97
|
-
// resHeaders: pretty(
|
|
98
|
-
// Object
|
|
99
|
-
// .entries(headers)
|
|
100
|
-
// .reduce((prev, [key, value]) => {
|
|
101
|
-
// prev[key] = value && typeof value === "string" ? snipString(value) : value
|
|
102
|
-
// return prev
|
|
103
|
-
// }, {} as Record<string, any>)
|
|
104
|
-
// )
|
|
105
|
-
}));
|
|
106
|
-
}))])), devMode ? _ => _ : _effectApp.Effect.catchAllDefect(() => _effectApp.Effect.die("Internal Server Error")), _effectApp.Effect.withSpan("Request." + meta.moduleName + "." + req._tag, {
|
|
107
|
-
captureStackTrace: () => handler.stack
|
|
108
|
-
})), meta.moduleName); // TODO
|
|
109
|
-
return acc;
|
|
110
|
-
}, {});
|
|
111
|
-
const router = _rpc.RpcRouter.make(...Object.values(mapped));
|
|
112
|
-
return _http.HttpRouter.empty.pipe(_http.HttpRouter.all("/rpc/" + rsc.meta.moduleName, toHttpApp(router, {
|
|
113
|
-
spanPrefix: rsc.meta.moduleName + "."
|
|
114
|
-
}),
|
|
115
|
-
// TODO: not queries.
|
|
116
|
-
{
|
|
117
|
-
uninterruptible: true
|
|
118
|
-
}));
|
|
119
|
-
};
|
|
120
|
-
const r = {
|
|
121
|
-
controllers,
|
|
122
|
-
...(0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
|
|
123
|
-
;
|
|
124
|
-
prev[cur] = (svcOrFnOrEffect, fnOrNone) => {
|
|
125
|
-
const stack = new Error().stack?.split("\n").slice(2).join("\n");
|
|
126
|
-
return _effectApp.Effect.isEffect(svcOrFnOrEffect) ? class {
|
|
127
|
-
static stack = stack;
|
|
128
|
-
static _tag = "d";
|
|
129
|
-
static handler = () => svcOrFnOrEffect;
|
|
130
|
-
} : typeof svcOrFnOrEffect === "function" ? class {
|
|
131
|
-
static stack = stack;
|
|
132
|
-
static _tag = "d";
|
|
133
|
-
static handler = req => _effectApp.Effect.andThen(_effectApp.Effect.all({
|
|
134
|
-
ctx: middleware.makeContext
|
|
135
|
-
}), ({
|
|
136
|
-
ctx
|
|
137
|
-
}) => svcOrFnOrEffect(req, {
|
|
138
|
-
...ctx,
|
|
139
|
-
Response: rsc[cur].success
|
|
140
|
-
}));
|
|
141
|
-
} : class {
|
|
142
|
-
static stack = stack;
|
|
143
|
-
static _tag = "d";
|
|
144
|
-
static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
|
|
145
|
-
};
|
|
146
|
-
} // "Raw" variations are for when you don't want to decode just to encode it again on the response
|
|
147
|
-
;
|
|
148
|
-
prev[cur + "Raw"] = (svcOrFnOrEffect, fnOrNone) => {
|
|
61
|
+
const items = (0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
|
|
62
|
+
;
|
|
63
|
+
prev[cur] = Object.assign(fnOrEffect => {
|
|
64
|
+
const stack = new Error().stack?.split("\n").slice(2).join("\n");
|
|
65
|
+
return _effectApp.Effect.isEffect(fnOrEffect) ? class {
|
|
66
|
+
static stack = stack;
|
|
67
|
+
static _tag = "d";
|
|
68
|
+
static handler = () => fnOrEffect;
|
|
69
|
+
} : class {
|
|
70
|
+
static stack = stack;
|
|
71
|
+
static _tag = "d";
|
|
72
|
+
static handler = fnOrEffect;
|
|
73
|
+
};
|
|
74
|
+
}, {
|
|
75
|
+
success: rsc[cur].success,
|
|
76
|
+
successRaw: _effectApp.S.encodedSchema(rsc[cur].success),
|
|
77
|
+
failure: rsc[cur].failure,
|
|
78
|
+
raw:
|
|
79
|
+
// "Raw" variations are for when you don't want to decode just to encode it again on the response
|
|
80
|
+
// e.g for direct projection from DB
|
|
81
|
+
// but more importantly, to skip Effectful decoders, like to resolve relationships from the database or remote client.
|
|
82
|
+
fnOrEffect => {
|
|
149
83
|
const stack = new Error().stack?.split("\n").slice(2).join("\n");
|
|
150
|
-
return _effectApp.Effect.isEffect(
|
|
84
|
+
return _effectApp.Effect.isEffect(fnOrEffect) ? class {
|
|
151
85
|
static stack = stack;
|
|
152
86
|
static _tag = "raw";
|
|
153
|
-
static handler = () =>
|
|
154
|
-
} :
|
|
87
|
+
static handler = () => fnOrEffect;
|
|
88
|
+
} : class {
|
|
155
89
|
static stack = stack;
|
|
156
90
|
static _tag = "raw";
|
|
157
|
-
static handler = (req, ctx) =>
|
|
91
|
+
static handler = (req, ctx) => fnOrEffect(req, {
|
|
158
92
|
...ctx,
|
|
159
93
|
Response: rsc[cur].success
|
|
160
94
|
});
|
|
161
|
-
} : class {
|
|
162
|
-
static stack = stack;
|
|
163
|
-
static _tag = "raw";
|
|
164
|
-
static handler = matchWithServices(cur)(svcOrFnOrEffect, fnOrNone);
|
|
165
95
|
};
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return prev;
|
|
99
|
+
}, {});
|
|
100
|
+
const effect = (layers, make) => {
|
|
101
|
+
const r = class Router extends _http.HttpRouter.Tag(`${meta.moduleName}Router`)() {};
|
|
102
|
+
const layer = r.use(router => _effectApp.Effect.gen(function* () {
|
|
103
|
+
const controllers = yield* make(items);
|
|
104
|
+
const rpc = yield* (0, _DynamicMiddleware.makeRpc)(middleware);
|
|
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
|
+
};
|
|
169
165
|
};
|
|
170
|
-
return
|
|
166
|
+
return effect;
|
|
171
167
|
}
|
|
172
|
-
function matchAll(handlers) {
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
+
};
|
|
177
180
|
}
|
|
178
181
|
return {
|
|
179
182
|
matchAll,
|
package/_cjs/api/routing.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.cjs","names":["_rpc","require","_effectApp","
|
|
1
|
+
{"version":3,"file":"routing.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","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","rpc","makeRpc","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/routing.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { Rpc } from "@effect/rpc";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Request, S } from "effect-app";
|
|
3
|
+
import { Effect } from "effect-app";
|
|
3
4
|
import type { GetEffectContext, RPCContextMap } from "effect-app/client/req";
|
|
4
5
|
import type * as EffectRequest from "effect/Request";
|
|
5
|
-
export interface Middleware<Context, CTXMap extends Record<string, RPCContextMap.Any
|
|
6
|
+
export interface Middleware<Context, CTXMap extends Record<string, RPCContextMap.Any>, R> {
|
|
6
7
|
contextMap: CTXMap;
|
|
7
8
|
context: Context;
|
|
8
|
-
execute: <T extends {
|
|
9
|
+
execute: Effect<(<T extends {
|
|
9
10
|
config?: {
|
|
10
11
|
[K in keyof CTXMap]?: any;
|
|
11
12
|
};
|
|
12
|
-
}, Req extends S.TaggedRequest.All, R>(schema: T & S.Schema<Req, any, never>, handler: (request: Req) => Effect.Effect<EffectRequest.Request.Success<Req>, EffectRequest.Request.Error<Req>, R>, moduleName?: string) => (req: Req) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req>, any>;
|
|
13
|
+
}, Req extends S.TaggedRequest.All, R>(schema: T & S.Schema<Req, any, never>, handler: (request: Req) => Effect.Effect<EffectRequest.Request.Success<Req>, EffectRequest.Request.Error<Req>, R>, moduleName?: string) => (req: Req) => Effect.Effect<Request.Request.Success<Req>, Request.Request.Error<Req>, any>), never, R>;
|
|
13
14
|
}
|
|
14
|
-
export declare const makeRpc: <Context, CTXMap extends Record<string, RPCContextMap.Any
|
|
15
|
+
export declare const makeRpc: <Context, CTXMap extends Record<string, RPCContextMap.Any>, R>(middleware: Middleware<Context, CTXMap, R>) => Effect.Effect<{
|
|
15
16
|
effect: <T extends {
|
|
16
17
|
config?: { [K in keyof CTXMap]?: any; };
|
|
17
|
-
}, Req extends S.TaggedRequest.All,
|
|
18
|
-
}
|
|
18
|
+
}, Req extends S.TaggedRequest.All, R_1>(schema: T & S.Schema<Req, any, never>, handler: (request: Req) => Effect.Effect<EffectRequest.Request.Success<Req>, EffectRequest.Request.Error<Req>, R_1>, moduleName?: string) => Rpc.Rpc<Req, Context | Exclude<R_1, GetEffectContext<CTXMap, T["config"]>>>;
|
|
19
|
+
}, never, R>;
|
|
19
20
|
//# sourceMappingURL=DynamicMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing/DynamicMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DynamicMiddleware.d.ts","sourceRoot":"","sources":["../../../src/api/routing/DynamicMiddleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,KAAK,KAAK,aAAa,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,UAAU,CAAC,OAAO,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EACb,CACE,CAAC,SAAS;QACR,MAAM,CAAC,EAAE;aAAG,CAAC,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,GAAG;SAAE,CAAA;KACvC,EACD,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAC/B,CAAC,EAED,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EACrC,OAAO,EAAE,CACP,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAC3F,UAAU,CAAC,EAAE,MAAM,KAChB,CACH,GAAG,EAAE,GAAG,KACL,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1B,GAAG,CACJ,GACD,KAAK,EACL,CAAC,CACF,CAAA;CACF;AAED,eAAO,MAAM,OAAO,GAAI,OAAO,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,cACtE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;aAG/B,CAAC,SAAS;QAAE,MAAM,CAAC,EAAE,GAAG,CAAiB,IAAZ,MAAM,MAAM,CAAC,CAAC,EAAE,GAAG,GAAE,CAAA;KAAE,EAAE,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,eACpF,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,WAC5B,CACP,OAAO,EAAE,GAAG,KACT,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAClC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAChC,GAAC,CACF,eACY,MAAM;YAOnB,CAAA"}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
4
|
import { Rpc } from "@effect/rpc";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvRHluYW1pY01pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQTZCakMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQ3JCLFVBQXVDLEVBQ3ZDLEVBQUU7SUFDRixPQUFPO1FBQ0wsTUFBTSxFQUFFLENBQ04sTUFBcUMsRUFDckMsT0FNQyxFQUNELFVBQW1CLEVBQ25CLEVBQUU7WUFDRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQ2YsTUFBTSxFQUNOLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FDaEQsQ0FBQTtRQUNILENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0=
|
|
5
|
+
import { Effect } from "effect-app";
|
|
6
|
+
export const makeRpc = (middleware) => middleware.execute.pipe(Effect.map((execute) => ({
|
|
7
|
+
effect: (schema, handler, moduleName) => {
|
|
8
|
+
return Rpc.effect(schema, execute(schema, handler, moduleName));
|
|
9
|
+
}
|
|
10
|
+
})));
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvRHluYW1pY01pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBZ0NuQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsVUFBMEMsRUFDMUMsRUFBRSxDQUNGLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsTUFBTSxFQUFFLENBQ04sTUFBcUMsRUFDckMsT0FNQyxFQUNELFVBQW1CLEVBQ25CLEVBQUU7UUFDRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQ2YsTUFBTSxFQUNOLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUNyQyxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFDLENBQUEifQ==
|
package/dist/api/routing.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type * as HttpApp from "@effect/platform/HttpApp";
|
|
2
2
|
import { Rpc, RpcRouter } from "@effect/rpc";
|
|
3
|
-
import {
|
|
3
|
+
import type { NonEmptyArray } from "effect-app";
|
|
4
|
+
import { Effect, Layer, S } from "effect-app";
|
|
4
5
|
import type { GetEffectContext, RPCContextMap } from "effect-app/client/req";
|
|
5
|
-
import { type EffectUnunified } from "effect-app/Effect";
|
|
6
6
|
import type { HttpServerError } from "effect-app/http";
|
|
7
7
|
import { HttpRouter } from "effect-app/http";
|
|
8
8
|
import type { Middleware } from "./routing/DynamicMiddleware.js";
|
|
@@ -33,54 +33,76 @@ type AnyRequestModule = S.Schema.Any & {
|
|
|
33
33
|
type GetSuccess<T> = T extends {
|
|
34
34
|
success: S.Schema.Any;
|
|
35
35
|
} ? T["success"] : typeof S.Void;
|
|
36
|
+
type GetSuccessShape<Action extends {
|
|
37
|
+
success?: S.Schema.Any;
|
|
38
|
+
}, RT extends "d" | "raw"> = RT extends "raw" ? S.Schema.Encoded<GetSuccess<Action>> : S.Schema.Type<GetSuccess<Action>>;
|
|
36
39
|
type GetFailure<T extends {
|
|
37
40
|
failure?: S.Schema.Any;
|
|
38
41
|
}> = T["failure"] extends never ? typeof S.Never : T["failure"];
|
|
39
|
-
|
|
42
|
+
type HandlerFull<Action extends AnyRequestModule, RT extends "raw" | "d", A, E, R> = {
|
|
40
43
|
new (): {};
|
|
41
44
|
_tag: RT;
|
|
42
45
|
stack: string;
|
|
43
46
|
handler: (req: S.Schema.Type<Action>) => Effect<A, E, R>;
|
|
47
|
+
};
|
|
48
|
+
export interface Handler<Action extends AnyRequestModule, RT extends "raw" | "d", R> extends HandlerFull<Action, RT, GetSuccessShape<Action, RT>, S.Schema.Type<GetFailure<Action>> | S.ParseResult.ParseError, R> {
|
|
44
49
|
}
|
|
45
|
-
type AHandler<Action extends AnyRequestModule> = Handler<Action,
|
|
50
|
+
type AHandler<Action extends AnyRequestModule> = Handler<Action, any, any>;
|
|
46
51
|
type Filter<T> = {
|
|
47
52
|
[K in keyof T as T[K] extends S.Schema.All & {
|
|
48
53
|
success: S.Schema.Any;
|
|
49
54
|
failure: S.Schema.Any;
|
|
50
55
|
} ? K : never]: T[K];
|
|
51
56
|
};
|
|
52
|
-
export interface ExtendedMiddleware<Context, CTXMap extends Record<string, RPCContextMap.Any
|
|
57
|
+
export interface ExtendedMiddleware<Context, CTXMap extends Record<string, RPCContextMap.Any>, R> extends Middleware<Context, CTXMap, R> {
|
|
53
58
|
makeContext: Effect<{
|
|
54
59
|
[K in keyof CTXMap as CTXMap[K][1] extends never ? never : CTXMap[K][0]]: CTXMap[K][1];
|
|
55
60
|
}, never, never>;
|
|
56
61
|
}
|
|
57
|
-
export declare const
|
|
62
|
+
export declare const RouterSymbol: unique symbol;
|
|
63
|
+
export interface RouterShape<Rsc> {
|
|
64
|
+
[RouterSymbol]: Rsc;
|
|
65
|
+
}
|
|
66
|
+
type RPCRouteR<T extends Rpc.Rpc<any, any>> = [T] extends [
|
|
67
|
+
Rpc.Rpc<any, infer R>
|
|
68
|
+
] ? R : never;
|
|
69
|
+
type Match<Rsc extends Record<string, any>, CTXMap extends Record<string, any>, RT extends "raw" | "d", Key extends keyof Rsc, Context> = {
|
|
70
|
+
<A extends GetSuccessShape<Rsc[Key], RT>, R2 = never, E = never>(f: Effect<A, E, R2>): HandleVoid<GetSuccessShape<Rsc[Key], RT>, A, Handler<Rsc[Key], RT, Exclude<Context | Exclude<R2, GetEffectContext<CTXMap, Rsc[Key]["config"]>>, HttpRouter.HttpRouter.Provided>>>;
|
|
71
|
+
<A extends GetSuccessShape<Rsc[Key], RT>, R2 = never, E = never>(f: (req: S.Schema.Type<Rsc[Key]>) => Effect<A, E, R2>): HandleVoid<GetSuccessShape<Rsc[Key], RT>, A, Handler<Rsc[Key], RT, Exclude<Context | Exclude<R2, GetEffectContext<CTXMap, Rsc[Key]["config"]>>, HttpRouter.HttpRouter.Provided>>>;
|
|
72
|
+
};
|
|
73
|
+
export type RouteMatcher<CTXMap extends Record<string, any>, Rsc extends Record<string, any>, Context> = {
|
|
74
|
+
[Key in keyof Filter<Rsc>]: Match<Rsc, CTXMap, "d", Key, Context> & {
|
|
75
|
+
success: Rsc[Key]["success"];
|
|
76
|
+
successRaw: S.SchemaClass<S.Schema.Encoded<Rsc[Key]["success"]>>;
|
|
77
|
+
failure: Rsc[Key]["failure"];
|
|
78
|
+
/**
|
|
79
|
+
* Requires the Encoded shape (e.g directly undecoded from DB, so that we don't do multiple Decode/Encode)
|
|
80
|
+
*/
|
|
81
|
+
raw: Match<Rsc, CTXMap, "raw", Key, Context>;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export declare const makeRouter: <Context, CTXMap extends Record<string, RPCContextMap.Any>, RMW>(middleware: ExtendedMiddleware<Context, CTXMap, RMW>, devMode: boolean) => {
|
|
58
85
|
matchAll: <T extends {
|
|
59
|
-
[key: string]:
|
|
60
|
-
|
|
86
|
+
[key: string]: {
|
|
87
|
+
Router: {
|
|
88
|
+
router: Effect<HttpRouter.HttpRouter<any, any>, any, any>;
|
|
89
|
+
};
|
|
90
|
+
routes: Layer.Layer<any, any, any>;
|
|
91
|
+
moduleName: string;
|
|
92
|
+
};
|
|
93
|
+
}, A, E, R>(handlers: T, requestLayer: Layer.Layer<A, E, R>) => {
|
|
94
|
+
layer: Layer.Layer<never, Layer.Layer.Error<(typeof handlers)[keyof typeof handlers]["routes"]>, Layer.Layer.Context<(typeof handlers)[keyof typeof handlers]["routes"]>>;
|
|
95
|
+
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>>;
|
|
96
|
+
};
|
|
61
97
|
matchFor: <const ModuleName extends string, const Rsc extends Record<string, any>>(rsc: Rsc & {
|
|
62
98
|
meta: {
|
|
63
99
|
moduleName: ModuleName;
|
|
64
100
|
};
|
|
65
|
-
}) => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
Response: Rsc[Key]["success"];
|
|
71
|
-
}) => 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"]>>>>;
|
|
72
|
-
<SVC extends Record<string, EffectUnunified<any, any, any>>, R2, E_2, A_2>(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]; } & {
|
|
73
|
-
Response: Rsc[Key]["success"];
|
|
74
|
-
}>) => 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"]>>>>;
|
|
75
|
-
}; } & { [Key_1 in keyof Filter<Rsc> as Key_1 extends string ? `${Key_1}Raw` : never]: {
|
|
76
|
-
<R2_1, E, A>(f: Effect<A, E, R2_1>): HandleVoid<S.Schema.Encoded<GetSuccess<Rsc[Key_1]>>, A, Handler<Rsc[Key_1], "raw", A, E, Exclude<R2_1, GetEffectContext<CTXMap, Rsc[Key_1]["config"]>>>>;
|
|
77
|
-
<R2_1, E_1, A_1>(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]; } & {
|
|
78
|
-
Response: Rsc[Key_1]["success"];
|
|
79
|
-
}) => 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"]>>>>;
|
|
80
|
-
<SVC extends Record<string, EffectUnunified<any, any, any>>, R2, E_2, A_2>(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]; } & {
|
|
81
|
-
Response: Rsc[Key_1]["success"];
|
|
82
|
-
}>) => Effect<A_2, E_2, R2>): HandleVoid<S.Schema.Encoded<GetSuccess<Rsc[Key_1]>>, A_2, Handler<Rsc[Key_1], "raw", A_2, E_2, Exclude<R2, GetEffectContext<CTXMap, Rsc[Key_1]["config"]>>>>;
|
|
83
|
-
}; };
|
|
101
|
+
}) => <E_1, R_1, THandlers extends { [K in keyof Filter<Rsc>]: AHandler<Rsc[K]>; }, TLayers extends NonEmptyArray<Layer.Layer.Any>>(layers: TLayers, make: (requests: RouteMatcher<CTXMap, Rsc, Context>) => Effect<THandlers, E_1, R_1>) => {
|
|
102
|
+
moduleName: ModuleName;
|
|
103
|
+
Router: HttpRouter.HttpRouter.TagClass<RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<Context, HttpRouter.HttpRouter.Provided | { [k in keyof TLayers]: Layer.Layer.Success<TLayers[k]>; }[number]> | Exclude<RPCRouteR<{ [K in keyof Filter<Rsc>]: Rpc.Rpc<Rsc[K], _R<ReturnType<THandlers[K]["handler"]>>>; }[keyof Filter<Rsc>]>, HttpRouter.HttpRouter.Provided | { [k in keyof TLayers]: Layer.Layer.Success<TLayers[k]>; }[number]>>;
|
|
104
|
+
routes: Layer.Layer<RouterShape<Rsc>, E_1 | { [k_1 in keyof TLayers]: Layer.Layer.Error<TLayers[k_1]>; }[number], RMW | { [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]>>;
|
|
105
|
+
};
|
|
84
106
|
};
|
|
85
107
|
export {};
|
|
86
108
|
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/api/routing.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,OAAO,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/api/routing.ts"],"names":[],"mappings":"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"}
|