@effect/platform 0.35.0 → 0.37.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/dist/cjs/Http/Router.js.map +1 -1
- package/dist/cjs/Http/Server.js +6 -1
- package/dist/cjs/Http/Server.js.map +1 -1
- package/dist/cjs/internal/http/router.js +7 -15
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/cjs/internal/http/server.js +5 -2
- package/dist/cjs/internal/http/server.js.map +1 -1
- package/dist/dts/Http/Router.d.ts +31 -26
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Http/Server.d.ts +18 -8
- package/dist/dts/Http/Server.d.ts.map +1 -1
- package/dist/dts/internal/http/router.d.ts.map +1 -1
- package/dist/esm/Http/Router.js.map +1 -1
- package/dist/esm/Http/Server.js +5 -0
- package/dist/esm/Http/Server.js.map +1 -1
- package/dist/esm/internal/http/router.js +7 -10
- package/dist/esm/internal/http/router.js.map +1 -1
- package/dist/esm/internal/http/server.js +4 -1
- package/dist/esm/internal/http/server.js.map +1 -1
- package/package.json +2 -2
- package/src/Http/Router.ts +34 -27
- package/src/Http/Server.ts +31 -21
- package/src/internal/http/router.ts +24 -26
- package/src/internal/http/server.ts +60 -11
|
@@ -6,7 +6,7 @@ import * as Effectable from "effect/Effectable";
|
|
|
6
6
|
import { dual } from "effect/Function";
|
|
7
7
|
import * as Inspectable from "effect/Inspectable";
|
|
8
8
|
import * as Option from "effect/Option";
|
|
9
|
-
import FindMyWay from "find-my-way";
|
|
9
|
+
import * as FindMyWay from "find-my-way-ts";
|
|
10
10
|
import * as Error from "../../Http/ServerError.js";
|
|
11
11
|
import * as ServerRequest from "../../Http/ServerRequest.js";
|
|
12
12
|
/** @internal */
|
|
@@ -72,17 +72,14 @@ class RouterImpl extends Effectable.StructuralClass {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
const toHttpApp = self => {
|
|
75
|
-
const router = FindMyWay();
|
|
75
|
+
const router = FindMyWay.make();
|
|
76
76
|
const mounts = Chunk.toReadonlyArray(self.mounts);
|
|
77
77
|
const mountsLen = mounts.length;
|
|
78
78
|
Chunk.forEach(self.routes, route => {
|
|
79
|
-
function fn() {
|
|
80
|
-
return route;
|
|
81
|
-
}
|
|
82
79
|
if (route.method === "*") {
|
|
83
|
-
router.all(route.path,
|
|
80
|
+
router.all(route.path, route);
|
|
84
81
|
} else {
|
|
85
|
-
router.on(route.method, route.path,
|
|
82
|
+
router.on(route.method, route.path, route);
|
|
86
83
|
}
|
|
87
84
|
});
|
|
88
85
|
return Effect.flatMap(ServerRequest.ServerRequest, request => {
|
|
@@ -95,15 +92,15 @@ const toHttpApp = self => {
|
|
|
95
92
|
}
|
|
96
93
|
}
|
|
97
94
|
let result = router.find(request.method, request.url);
|
|
98
|
-
if (result ===
|
|
95
|
+
if (result === undefined && request.method === "HEAD") {
|
|
99
96
|
result = router.find("GET", request.url);
|
|
100
97
|
}
|
|
101
|
-
if (result ===
|
|
98
|
+
if (result === undefined) {
|
|
102
99
|
return Effect.fail(Error.RouteNotFound({
|
|
103
100
|
request
|
|
104
101
|
}));
|
|
105
102
|
}
|
|
106
|
-
const route = result.handler
|
|
103
|
+
const route = result.handler;
|
|
107
104
|
if (route.prefix._tag === "Some") {
|
|
108
105
|
request = sliceRequestUrl(request, route.prefix.value);
|
|
109
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","names":["Schema","Chunk","Context","Effect","Effectable","dual","Inspectable","Option","FindMyWay","Error","ServerRequest","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","schemaPathParams","schemaSearchParams","RouterImpl","StructuralClass","routes","mounts","constructor","httpApp","commit","undefined","toHttpApp","toJSON","_id","toString","format","NodeInspectSymbol","self","router","toReadonlyArray","mountsLen","length","forEach","route","fn","method","all","path","on","request","i","app","url","startsWith","provideService","sliceRequestUrl","result","find","fail","RouteNotFound","handler","prefix","_tag","value","mapInputContext","context","add","RouteContextImpl","prefexLen","modify","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","that","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","some","mount","mountApp","append","get","post","put","patch","del","head","options","use","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","tag","service","provideServiceEffect","effect"],"sources":["../../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","names":["Schema","Chunk","Context","Effect","Effectable","dual","Inspectable","Option","FindMyWay","Error","ServerRequest","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","schemaPathParams","schemaSearchParams","RouterImpl","StructuralClass","routes","mounts","constructor","httpApp","commit","undefined","toHttpApp","toJSON","_id","toString","format","NodeInspectSymbol","self","router","make","toReadonlyArray","mountsLen","length","forEach","route","method","all","path","on","request","i","app","url","startsWith","provideService","sliceRequestUrl","result","find","fail","RouteNotFound","handler","prefix","_tag","value","mapInputContext","context","add","RouteContextImpl","prefexLen","modify","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","that","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","some","mount","mountApp","append","get","post","put","patch","del","head","options","use","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","tag","service","provideServiceEffect","effect"],"sources":["../../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Context from "effect/Context";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import { dual } from "effect/Function";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
4
5
|
/** @internal */
|
|
5
6
|
export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/Http/Server");
|
|
6
7
|
/** @internal */
|
|
@@ -13,5 +14,7 @@ export const isServer = u => typeof u === "object" && u !== null && TypeId in u;
|
|
|
13
14
|
/** @internal */
|
|
14
15
|
export const make = options => Object.assign(Object.create(serverProto), options);
|
|
15
16
|
/** @internal */
|
|
16
|
-
export const serve = /*#__PURE__*/dual(args => Effect.isEffect(args[0]), (httpApp, middleware) => Effect.flatMap(serverTag, server => server.serve(httpApp, middleware)));
|
|
17
|
+
export const serve = /*#__PURE__*/dual(args => Effect.isEffect(args[0]), (httpApp, middleware) => Layer.scopedDiscard(Effect.flatMap(serverTag, server => server.serve(httpApp, middleware))));
|
|
18
|
+
/** @internal */
|
|
19
|
+
export const serveEffect = /*#__PURE__*/dual(args => Effect.isEffect(args[0]), (httpApp, middleware) => Effect.flatMap(serverTag, server => server.serve(httpApp, middleware)));
|
|
17
20
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","names":["Context","Effect","dual","TypeId","Symbol","for","serverTag","Tag","serverProto","isServer","u","make","options","Object","assign","create","serve","args","isEffect","httpApp","middleware","flatMap","server"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;
|
|
1
|
+
{"version":3,"file":"server.js","names":["Context","Effect","dual","Layer","TypeId","Symbol","for","serverTag","Tag","serverProto","isServer","u","make","options","Object","assign","create","serve","args","isEffect","httpApp","middleware","scopedDiscard","flatMap","server","serveEffect"],"sources":["../../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAOrC;AACA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,8BAA8B,CAAkB;AAEhG;AACA,OAAO,MAAMC,SAAS,gBAAGP,OAAO,CAACQ,GAAG,CAAgBJ,MAAM,CAAC;AAE3D,MAAMK,WAAW,GAAG;EAClB,CAACL,MAAM,GAAGA;CACX;AAED;AACA,OAAO,MAAMM,QAAQ,GAAIC,CAAU,IAAyB,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAIP,MAAM,IAAIO,CAAC;AAE9G;AACA,OAAO,MAAMC,IAAI,GACfC,OAMC,IACiBC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACP,WAAW,CAAC,EAAEI,OAAO,CAAC;AAEtE;AACA,OAAO,MAAMI,KAAK,gBAAGf,IAAI,CA+BtBgB,IAAI,IAAKjB,MAAM,CAACkB,QAAQ,CAACD,IAAI,CAAC,CAAC,CAAC,CAAC,EAClC,CACEE,OAA0B,EAC1BC,UAAqD,KAMrDlB,KAAK,CAACmB,aAAa,CACjBrB,MAAM,CAACsB,OAAO,CACZhB,SAAS,EACRiB,MAAM,IAAKA,MAAM,CAACP,KAAK,CAACG,OAAO,EAAEC,UAAW,CAAC,CAC/C,CACK,CACX;AAED;AACA,OAAO,MAAMI,WAAW,gBAAGvB,IAAI,CA+B5BgB,IAAI,IAAKjB,MAAM,CAACkB,QAAQ,CAACD,IAAI,CAAC,CAAC,CAAC,CAAC,EACjC,CACCE,OAA0B,EAC1BC,UAAoD,KAMpDpB,MAAM,CAACsB,OAAO,CACZhB,SAAS,EACRiB,MAAM,IAAKA,MAAM,CAACP,KAAK,CAACG,OAAO,EAAEC,UAAU,CAAC,CACtC,CACZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"sideEffects": [],
|
|
11
11
|
"author": "Effect contributors",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"find-my-way": "^
|
|
13
|
+
"find-my-way-ts": "^0.1.0",
|
|
14
14
|
"multipasta": "^0.1.19",
|
|
15
15
|
"path-browserify": "^1.0.1"
|
|
16
16
|
},
|
package/src/Http/Router.ts
CHANGED
|
@@ -59,6 +59,12 @@ export const RouteTypeId: unique symbol = internal.RouteTypeId
|
|
|
59
59
|
*/
|
|
60
60
|
export type RouteTypeId = typeof RouteTypeId
|
|
61
61
|
|
|
62
|
+
/**
|
|
63
|
+
* @since 1.0.0
|
|
64
|
+
* @category models
|
|
65
|
+
*/
|
|
66
|
+
export type PathInput = `/${string}` | "*"
|
|
67
|
+
|
|
62
68
|
/**
|
|
63
69
|
* @since 1.0.0
|
|
64
70
|
* @category models
|
|
@@ -66,7 +72,7 @@ export type RouteTypeId = typeof RouteTypeId
|
|
|
66
72
|
export interface Route<R, E> {
|
|
67
73
|
readonly [RouteTypeId]: RouteTypeId
|
|
68
74
|
readonly method: Method.Method | "*"
|
|
69
|
-
readonly path:
|
|
75
|
+
readonly path: PathInput
|
|
70
76
|
readonly handler: Route.Handler<R, E>
|
|
71
77
|
readonly prefix: Option.Option<string>
|
|
72
78
|
}
|
|
@@ -177,8 +183,9 @@ export const fromIterable: <R, E>(
|
|
|
177
183
|
*/
|
|
178
184
|
export const makeRoute: <R, E>(
|
|
179
185
|
method: Method.Method,
|
|
180
|
-
path:
|
|
181
|
-
handler: Route.Handler<R, E
|
|
186
|
+
path: PathInput,
|
|
187
|
+
handler: Route.Handler<R, E>,
|
|
188
|
+
prefix?: Option.Option<string>
|
|
182
189
|
) => Route<R, E> = internal.makeRoute
|
|
183
190
|
|
|
184
191
|
/**
|
|
@@ -186,8 +193,8 @@ export const makeRoute: <R, E>(
|
|
|
186
193
|
* @category combinators
|
|
187
194
|
*/
|
|
188
195
|
export const prefixAll: {
|
|
189
|
-
(prefix:
|
|
190
|
-
<R, E>(self: Router<R, E>, prefix:
|
|
196
|
+
(prefix: PathInput): <R, E>(self: Router<R, E>) => Router<R, E>
|
|
197
|
+
<R, E>(self: Router<R, E>, prefix: PathInput): Router<R, E>
|
|
191
198
|
} = internal.prefixAll
|
|
192
199
|
|
|
193
200
|
/**
|
|
@@ -209,8 +216,8 @@ export const concat: {
|
|
|
209
216
|
* @category routing
|
|
210
217
|
*/
|
|
211
218
|
export const mount: {
|
|
212
|
-
<R1, E1>(path: string
|
|
213
|
-
<R, E, R1, E1>(self: Router<R, E>, path: string
|
|
219
|
+
<R1, E1>(path: `/${string}`, that: Router<R1, E1>): <R, E>(self: Router<R, E>) => Router<R1 | R, E1 | E>
|
|
220
|
+
<R, E, R1, E1>(self: Router<R, E>, path: `/${string}`, that: Router<R1, E1>): Router<R | R1, E | E1>
|
|
214
221
|
} = internal.mount
|
|
215
222
|
|
|
216
223
|
/**
|
|
@@ -219,7 +226,7 @@ export const mount: {
|
|
|
219
226
|
*/
|
|
220
227
|
export const mountApp: {
|
|
221
228
|
<R1, E1>(
|
|
222
|
-
path: string
|
|
229
|
+
path: `/${string}`,
|
|
223
230
|
that: App.Default<R1, E1>
|
|
224
231
|
): <R, E>(
|
|
225
232
|
self: Router<R, E>
|
|
@@ -229,7 +236,7 @@ export const mountApp: {
|
|
|
229
236
|
>
|
|
230
237
|
<R, E, R1, E1>(
|
|
231
238
|
self: Router<R, E>,
|
|
232
|
-
path: string
|
|
239
|
+
path: `/${string}`,
|
|
233
240
|
that: App.Default<R1, E1>
|
|
234
241
|
): Router<
|
|
235
242
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -245,7 +252,7 @@ export const route: (
|
|
|
245
252
|
method: Method.Method | "*"
|
|
246
253
|
) => {
|
|
247
254
|
<R1, E1>(
|
|
248
|
-
path:
|
|
255
|
+
path: PathInput,
|
|
249
256
|
handler: Route.Handler<R1, E1>
|
|
250
257
|
): <R, E>(
|
|
251
258
|
self: Router<R, E>
|
|
@@ -255,7 +262,7 @@ export const route: (
|
|
|
255
262
|
>
|
|
256
263
|
<R, E, R1, E1>(
|
|
257
264
|
self: Router<R, E>,
|
|
258
|
-
path:
|
|
265
|
+
path: PathInput,
|
|
259
266
|
handler: Route.Handler<R1, E1>
|
|
260
267
|
): Router<
|
|
261
268
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -269,7 +276,7 @@ export const route: (
|
|
|
269
276
|
*/
|
|
270
277
|
export const all: {
|
|
271
278
|
<R1, E1>(
|
|
272
|
-
path:
|
|
279
|
+
path: PathInput,
|
|
273
280
|
handler: Route.Handler<R1, E1>
|
|
274
281
|
): <R, E>(
|
|
275
282
|
self: Router<R, E>
|
|
@@ -279,7 +286,7 @@ export const all: {
|
|
|
279
286
|
>
|
|
280
287
|
<R, E, R1, E1>(
|
|
281
288
|
self: Router<R, E>,
|
|
282
|
-
path:
|
|
289
|
+
path: PathInput,
|
|
283
290
|
handler: Route.Handler<R1, E1>
|
|
284
291
|
): Router<
|
|
285
292
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -293,7 +300,7 @@ export const all: {
|
|
|
293
300
|
*/
|
|
294
301
|
export const get: {
|
|
295
302
|
<R1, E1>(
|
|
296
|
-
path:
|
|
303
|
+
path: PathInput,
|
|
297
304
|
handler: Route.Handler<R1, E1>
|
|
298
305
|
): <R, E>(
|
|
299
306
|
self: Router<R, E>
|
|
@@ -303,7 +310,7 @@ export const get: {
|
|
|
303
310
|
>
|
|
304
311
|
<R, E, R1, E1>(
|
|
305
312
|
self: Router<R, E>,
|
|
306
|
-
path:
|
|
313
|
+
path: PathInput,
|
|
307
314
|
handler: Route.Handler<R1, E1>
|
|
308
315
|
): Router<
|
|
309
316
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -317,7 +324,7 @@ export const get: {
|
|
|
317
324
|
*/
|
|
318
325
|
export const post: {
|
|
319
326
|
<R1, E1>(
|
|
320
|
-
path:
|
|
327
|
+
path: PathInput,
|
|
321
328
|
handler: Route.Handler<R1, E1>
|
|
322
329
|
): <R, E>(
|
|
323
330
|
self: Router<R, E>
|
|
@@ -327,7 +334,7 @@ export const post: {
|
|
|
327
334
|
>
|
|
328
335
|
<R, E, R1, E1>(
|
|
329
336
|
self: Router<R, E>,
|
|
330
|
-
path:
|
|
337
|
+
path: PathInput,
|
|
331
338
|
handler: Route.Handler<R1, E1>
|
|
332
339
|
): Router<
|
|
333
340
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -341,7 +348,7 @@ export const post: {
|
|
|
341
348
|
*/
|
|
342
349
|
export const patch: {
|
|
343
350
|
<R1, E1>(
|
|
344
|
-
path:
|
|
351
|
+
path: PathInput,
|
|
345
352
|
handler: Route.Handler<R1, E1>
|
|
346
353
|
): <R, E>(
|
|
347
354
|
self: Router<R, E>
|
|
@@ -351,7 +358,7 @@ export const patch: {
|
|
|
351
358
|
>
|
|
352
359
|
<R, E, R1, E1>(
|
|
353
360
|
self: Router<R, E>,
|
|
354
|
-
path:
|
|
361
|
+
path: PathInput,
|
|
355
362
|
handler: Route.Handler<R1, E1>
|
|
356
363
|
): Router<
|
|
357
364
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -365,7 +372,7 @@ export const patch: {
|
|
|
365
372
|
*/
|
|
366
373
|
export const put: {
|
|
367
374
|
<R1, E1>(
|
|
368
|
-
path:
|
|
375
|
+
path: PathInput,
|
|
369
376
|
handler: Route.Handler<R1, E1>
|
|
370
377
|
): <R, E>(
|
|
371
378
|
self: Router<R, E>
|
|
@@ -375,7 +382,7 @@ export const put: {
|
|
|
375
382
|
>
|
|
376
383
|
<R, E, R1, E1>(
|
|
377
384
|
self: Router<R, E>,
|
|
378
|
-
path:
|
|
385
|
+
path: PathInput,
|
|
379
386
|
handler: Route.Handler<R1, E1>
|
|
380
387
|
): Router<
|
|
381
388
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -389,7 +396,7 @@ export const put: {
|
|
|
389
396
|
*/
|
|
390
397
|
export const del: {
|
|
391
398
|
<R1, E1>(
|
|
392
|
-
path:
|
|
399
|
+
path: PathInput,
|
|
393
400
|
handler: Route.Handler<R1, E1>
|
|
394
401
|
): <R, E>(
|
|
395
402
|
self: Router<R, E>
|
|
@@ -399,7 +406,7 @@ export const del: {
|
|
|
399
406
|
>
|
|
400
407
|
<R, E, R1, E1>(
|
|
401
408
|
self: Router<R, E>,
|
|
402
|
-
path:
|
|
409
|
+
path: PathInput,
|
|
403
410
|
handler: Route.Handler<R1, E1>
|
|
404
411
|
): Router<
|
|
405
412
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -413,7 +420,7 @@ export const del: {
|
|
|
413
420
|
*/
|
|
414
421
|
export const head: {
|
|
415
422
|
<R1, E1>(
|
|
416
|
-
path:
|
|
423
|
+
path: PathInput,
|
|
417
424
|
handler: Route.Handler<R1, E1>
|
|
418
425
|
): <R, E>(
|
|
419
426
|
self: Router<R, E>
|
|
@@ -423,7 +430,7 @@ export const head: {
|
|
|
423
430
|
>
|
|
424
431
|
<R, E, R1, E1>(
|
|
425
432
|
self: Router<R, E>,
|
|
426
|
-
path:
|
|
433
|
+
path: PathInput,
|
|
427
434
|
handler: Route.Handler<R1, E1>
|
|
428
435
|
): Router<
|
|
429
436
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
|
@@ -437,7 +444,7 @@ export const head: {
|
|
|
437
444
|
*/
|
|
438
445
|
export const options: {
|
|
439
446
|
<R1, E1>(
|
|
440
|
-
path:
|
|
447
|
+
path: PathInput,
|
|
441
448
|
handler: Route.Handler<R1, E1>
|
|
442
449
|
): <R, E>(
|
|
443
450
|
self: Router<R, E>
|
|
@@ -447,7 +454,7 @@ export const options: {
|
|
|
447
454
|
>
|
|
448
455
|
<R, E, R1, E1>(
|
|
449
456
|
self: Router<R, E>,
|
|
450
|
-
path:
|
|
457
|
+
path: PathInput,
|
|
451
458
|
handler: Route.Handler<R1, E1>
|
|
452
459
|
): Router<
|
|
453
460
|
Exclude<R, RouteContext | ServerRequest.ServerRequest> | Exclude<R1, RouteContext | ServerRequest.ServerRequest>,
|
package/src/Http/Server.ts
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type * as Context from "effect/Context"
|
|
5
5
|
import type * as Effect from "effect/Effect"
|
|
6
|
+
import type * as Layer from "effect/Layer"
|
|
6
7
|
import type * as Scope from "effect/Scope"
|
|
7
8
|
import * as internal from "../internal/http/server.js"
|
|
8
9
|
import type * as App from "./App.js"
|
|
9
10
|
import type * as Middleware from "./Middleware.js"
|
|
10
|
-
import type * as Error from "./ServerError.js"
|
|
11
11
|
import type * as ServerRequest from "./ServerRequest.js"
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -31,16 +31,16 @@ export interface Server {
|
|
|
31
31
|
readonly serve: {
|
|
32
32
|
<R, E>(httpApp: App.Default<R, E>): Effect.Effect<
|
|
33
33
|
Exclude<R, ServerRequest.ServerRequest> | Scope.Scope,
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
never,
|
|
35
|
+
void
|
|
36
36
|
>
|
|
37
37
|
<R, E, App extends App.Default<any, any>>(
|
|
38
38
|
httpApp: App.Default<R, E>,
|
|
39
39
|
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
40
40
|
): Effect.Effect<
|
|
41
41
|
Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest> | Scope.Scope,
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
never,
|
|
43
|
+
void
|
|
44
44
|
>
|
|
45
45
|
}
|
|
46
46
|
readonly address: Address
|
|
@@ -94,7 +94,7 @@ export const make: (
|
|
|
94
94
|
readonly serve: (
|
|
95
95
|
httpApp: App.Default<never, unknown>,
|
|
96
96
|
middleware?: Middleware.Middleware
|
|
97
|
-
) => Effect.Effect<Scope.Scope,
|
|
97
|
+
) => Effect.Effect<Scope.Scope, never, void>
|
|
98
98
|
readonly address: Address
|
|
99
99
|
}
|
|
100
100
|
) => Server = internal.make
|
|
@@ -104,31 +104,41 @@ export const make: (
|
|
|
104
104
|
* @category accessors
|
|
105
105
|
*/
|
|
106
106
|
export const serve: {
|
|
107
|
+
(): <R, E>(httpApp: App.Default<R, E>) => Layer.Layer<Server | Exclude<R, ServerRequest.ServerRequest>, never, never>
|
|
108
|
+
<R, E, App extends App.Default<any, any>>(
|
|
109
|
+
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
110
|
+
): (
|
|
111
|
+
httpApp: App.Default<R, E>
|
|
112
|
+
) => Layer.Layer<Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>, never, never>
|
|
113
|
+
<R, E>(httpApp: App.Default<R, E>): Layer.Layer<Server | Exclude<R, ServerRequest.ServerRequest>, never, never>
|
|
114
|
+
<R, E, App extends App.Default<any, any>>(
|
|
115
|
+
httpApp: App.Default<R, E>,
|
|
116
|
+
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
117
|
+
): Layer.Layer<Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>, never, never>
|
|
118
|
+
} = internal.serve
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @since 1.0.0
|
|
122
|
+
* @category accessors
|
|
123
|
+
*/
|
|
124
|
+
export const serveEffect: {
|
|
107
125
|
(): <R, E>(
|
|
108
126
|
httpApp: App.Default<R, E>
|
|
109
|
-
) => Effect.Effect<
|
|
110
|
-
Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>,
|
|
111
|
-
Error.ServeError,
|
|
112
|
-
never
|
|
113
|
-
>
|
|
127
|
+
) => Effect.Effect<Scope.Scope | Server | Exclude<R, ServerRequest.ServerRequest>, never, void>
|
|
114
128
|
<R, E, App extends App.Default<any, any>>(
|
|
115
129
|
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
116
130
|
): (
|
|
117
131
|
httpApp: App.Default<R, E>
|
|
118
132
|
) => Effect.Effect<
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
133
|
+
Scope.Scope | Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>,
|
|
134
|
+
never,
|
|
135
|
+
void
|
|
122
136
|
>
|
|
123
137
|
<R, E>(
|
|
124
138
|
httpApp: App.Default<R, E>
|
|
125
|
-
): Effect.Effect<
|
|
139
|
+
): Effect.Effect<Scope.Scope | Server | Exclude<R, ServerRequest.ServerRequest>, never, void>
|
|
126
140
|
<R, E, App extends App.Default<any, any>>(
|
|
127
141
|
httpApp: App.Default<R, E>,
|
|
128
142
|
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
129
|
-
): Effect.Effect<
|
|
130
|
-
|
|
131
|
-
Error.ServeError,
|
|
132
|
-
never
|
|
133
|
-
>
|
|
134
|
-
} = internal.serve
|
|
143
|
+
): Effect.Effect<Scope.Scope | Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>, never, void>
|
|
144
|
+
} = internal.serveEffect
|
|
@@ -7,8 +7,7 @@ import * as Effectable from "effect/Effectable"
|
|
|
7
7
|
import { dual } from "effect/Function"
|
|
8
8
|
import * as Inspectable from "effect/Inspectable"
|
|
9
9
|
import * as Option from "effect/Option"
|
|
10
|
-
import
|
|
11
|
-
import FindMyWay from "find-my-way"
|
|
10
|
+
import * as FindMyWay from "find-my-way-ts"
|
|
12
11
|
import type * as App from "../../Http/App.js"
|
|
13
12
|
import type * as Method from "../../Http/Method.js"
|
|
14
13
|
import type * as Router from "../../Http/Router.js"
|
|
@@ -95,17 +94,14 @@ class RouterImpl<R, E> extends Effectable.StructuralClass<
|
|
|
95
94
|
const toHttpApp = <R, E>(
|
|
96
95
|
self: Router.Router<R, E>
|
|
97
96
|
): App.Default<Router.Router.ExcludeProvided<R>, E | Error.RouteNotFound> => {
|
|
98
|
-
const router = FindMyWay()
|
|
97
|
+
const router = FindMyWay.make<Router.Route<R, E>>()
|
|
99
98
|
const mounts = Chunk.toReadonlyArray(self.mounts)
|
|
100
99
|
const mountsLen = mounts.length
|
|
101
100
|
Chunk.forEach(self.routes, (route) => {
|
|
102
|
-
function fn() {
|
|
103
|
-
return route
|
|
104
|
-
}
|
|
105
101
|
if (route.method === "*") {
|
|
106
|
-
router.all(route.path,
|
|
102
|
+
router.all(route.path, route)
|
|
107
103
|
} else {
|
|
108
|
-
router.on(route.method, route.path,
|
|
104
|
+
router.on(route.method, route.path, route)
|
|
109
105
|
}
|
|
110
106
|
})
|
|
111
107
|
return Effect.flatMap(
|
|
@@ -124,14 +120,14 @@ const toHttpApp = <R, E>(
|
|
|
124
120
|
}
|
|
125
121
|
}
|
|
126
122
|
|
|
127
|
-
let result = router.find(request.method
|
|
128
|
-
if (result ===
|
|
123
|
+
let result = router.find(request.method, request.url)
|
|
124
|
+
if (result === undefined && request.method === "HEAD") {
|
|
129
125
|
result = router.find("GET", request.url)
|
|
130
126
|
}
|
|
131
|
-
if (result ===
|
|
127
|
+
if (result === undefined) {
|
|
132
128
|
return Effect.fail(Error.RouteNotFound({ request }))
|
|
133
129
|
}
|
|
134
|
-
const route =
|
|
130
|
+
const route = result.handler
|
|
135
131
|
if (route.prefix._tag === "Some") {
|
|
136
132
|
request = sliceRequestUrl(request, route.prefix.value)
|
|
137
133
|
}
|
|
@@ -157,7 +153,7 @@ class RouteImpl<R, E> implements Router.Route<R, E> {
|
|
|
157
153
|
readonly [RouteTypeId]: Router.RouteTypeId
|
|
158
154
|
constructor(
|
|
159
155
|
readonly method: Method.Method | "*",
|
|
160
|
-
readonly path:
|
|
156
|
+
readonly path: Router.PathInput,
|
|
161
157
|
readonly handler: Router.Route.Handler<R, E>,
|
|
162
158
|
readonly prefix = Option.none<string>()
|
|
163
159
|
) {
|
|
@@ -186,7 +182,7 @@ export const fromIterable = <R, E>(
|
|
|
186
182
|
/** @internal */
|
|
187
183
|
export const makeRoute = <R, E>(
|
|
188
184
|
method: Method.Method,
|
|
189
|
-
path:
|
|
185
|
+
path: Router.PathInput,
|
|
190
186
|
handler: Router.Route.Handler<R, E>,
|
|
191
187
|
prefix: Option.Option<string> = Option.none()
|
|
192
188
|
): Router.Route<R, E> => new RouteImpl(method, path, handler, prefix)
|
|
@@ -197,12 +193,14 @@ export const concat = dual<
|
|
|
197
193
|
<R, E, R1, E1>(self: Router.Router<R, E>, that: Router.Router<R1, E1>) => Router.Router<R | R1, E | E1>
|
|
198
194
|
>(2, (self, that) => new RouterImpl(Chunk.appendAll(self.routes, that.routes) as any, self.mounts))
|
|
199
195
|
|
|
200
|
-
const removeTrailingSlash = (
|
|
196
|
+
const removeTrailingSlash = (
|
|
197
|
+
path: Router.PathInput
|
|
198
|
+
): Router.PathInput => (path.endsWith("/") ? path.slice(0, -1) : path) as any
|
|
201
199
|
|
|
202
200
|
/** @internal */
|
|
203
201
|
export const prefixAll = dual<
|
|
204
|
-
(prefix:
|
|
205
|
-
<R, E>(self: Router.Router<R, E>, prefix:
|
|
202
|
+
(prefix: Router.PathInput) => <R, E>(self: Router.Router<R, E>) => Router.Router<R, E>,
|
|
203
|
+
<R, E>(self: Router.Router<R, E>, prefix: Router.PathInput) => Router.Router<R, E>
|
|
206
204
|
>(
|
|
207
205
|
2,
|
|
208
206
|
(self, prefix) => {
|
|
@@ -211,7 +209,7 @@ export const prefixAll = dual<
|
|
|
211
209
|
Chunk.map(self.routes, (route) =>
|
|
212
210
|
new RouteImpl(
|
|
213
211
|
route.method,
|
|
214
|
-
route.path === "/" ? prefix : prefix + route.path,
|
|
212
|
+
route.path === "/" ? prefix : prefix + route.path as Router.PathInput,
|
|
215
213
|
route.handler,
|
|
216
214
|
Option.orElse(
|
|
217
215
|
Option.map(route.prefix, (_) => prefix + _),
|
|
@@ -226,12 +224,12 @@ export const prefixAll = dual<
|
|
|
226
224
|
/** @internal */
|
|
227
225
|
export const mount = dual<
|
|
228
226
|
<R1, E1>(
|
|
229
|
-
path: string
|
|
227
|
+
path: `/${string}`,
|
|
230
228
|
that: Router.Router<R1, E1>
|
|
231
229
|
) => <R, E>(self: Router.Router<R, E>) => Router.Router<R | R1, E | E1>,
|
|
232
230
|
<R, E, R1, E1>(
|
|
233
231
|
self: Router.Router<R, E>,
|
|
234
|
-
path: string
|
|
232
|
+
path: `/${string}`,
|
|
235
233
|
that: Router.Router<R1, E1>
|
|
236
234
|
) => Router.Router<R | R1, E | E1>
|
|
237
235
|
>(
|
|
@@ -242,14 +240,14 @@ export const mount = dual<
|
|
|
242
240
|
/** @internal */
|
|
243
241
|
export const mountApp = dual<
|
|
244
242
|
<R1, E1>(
|
|
245
|
-
path: string
|
|
243
|
+
path: `/${string}`,
|
|
246
244
|
that: App.Default<R1, E1>
|
|
247
245
|
) => <R, E>(
|
|
248
246
|
self: Router.Router<R, E>
|
|
249
247
|
) => Router.Router<Router.Router.ExcludeProvided<R | R1>, E | E1>,
|
|
250
248
|
<R, E, R1, E1>(
|
|
251
249
|
self: Router.Router<R, E>,
|
|
252
|
-
path: string
|
|
250
|
+
path: `/${string}`,
|
|
253
251
|
that: App.Default<R1, E1>
|
|
254
252
|
) => Router.Router<Router.Router.ExcludeProvided<R | R1>, E | E1>
|
|
255
253
|
>(
|
|
@@ -261,27 +259,27 @@ export const mountApp = dual<
|
|
|
261
259
|
/** @internal */
|
|
262
260
|
export const route = (method: Method.Method | "*"): {
|
|
263
261
|
<R1, E1>(
|
|
264
|
-
path:
|
|
262
|
+
path: Router.PathInput,
|
|
265
263
|
handler: Router.Route.Handler<R1, E1>
|
|
266
264
|
): <R, E>(
|
|
267
265
|
self: Router.Router<R, E>
|
|
268
266
|
) => Router.Router<Router.Router.ExcludeProvided<R | R1>, E1 | E>
|
|
269
267
|
<R, E, R1, E1>(
|
|
270
268
|
self: Router.Router<R, E>,
|
|
271
|
-
path:
|
|
269
|
+
path: Router.PathInput,
|
|
272
270
|
handler: Router.Route.Handler<R1, E1>
|
|
273
271
|
): Router.Router<Router.Router.ExcludeProvided<R | R1>, E1 | E>
|
|
274
272
|
} =>
|
|
275
273
|
dual<
|
|
276
274
|
<R1, E1>(
|
|
277
|
-
path:
|
|
275
|
+
path: Router.PathInput,
|
|
278
276
|
handler: Router.Route.Handler<R1, E1>
|
|
279
277
|
) => <R, E>(
|
|
280
278
|
self: Router.Router<R, E>
|
|
281
279
|
) => Router.Router<Router.Router.ExcludeProvided<R | R1>, E | E1>,
|
|
282
280
|
<R, E, R1, E1>(
|
|
283
281
|
self: Router.Router<R, E>,
|
|
284
|
-
path:
|
|
282
|
+
path: Router.PathInput,
|
|
285
283
|
handler: Router.Route.Handler<R1, E1>
|
|
286
284
|
) => Router.Router<Router.Router.ExcludeProvided<R | R1>, E | E1>
|
|
287
285
|
>(3, (self, path, handler) =>
|