@effect/platform 0.13.16 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CommandExecutor.d.ts.map +1 -1
  2. package/Error.d.ts.map +1 -1
  3. package/FileSystem.d.ts.map +1 -1
  4. package/Http/Body.d.ts.map +1 -1
  5. package/Http/Client.d.ts.map +1 -1
  6. package/Http/ClientError.d.ts.map +1 -1
  7. package/Http/ClientRequest.d.ts.map +1 -1
  8. package/Http/FormData.d.ts.map +1 -1
  9. package/Http/IncomingMessage.js +1 -1
  10. package/Http/Middleware.d.ts.map +1 -1
  11. package/Http/Platform.d.ts +43 -0
  12. package/Http/Platform.d.ts.map +1 -0
  13. package/Http/Platform.js +28 -0
  14. package/Http/Platform.js.map +1 -0
  15. package/Http/Router.d.ts.map +1 -1
  16. package/Http/ServerError.d.ts.map +1 -1
  17. package/Http/ServerResponse.d.ts +3 -3
  18. package/Http/ServerResponse.d.ts.map +1 -1
  19. package/Http/ServerResponse.js.map +1 -1
  20. package/KeyValueStore.d.ts.map +1 -1
  21. package/Path.d.ts.map +1 -1
  22. package/internal/http/formData.js +7 -7
  23. package/internal/http/formData.js.map +1 -1
  24. package/internal/http/middleware.js +3 -3
  25. package/internal/http/middleware.js.map +1 -1
  26. package/internal/http/platform.d.ts +2 -0
  27. package/internal/http/platform.d.ts.map +1 -0
  28. package/internal/http/platform.js +58 -0
  29. package/internal/http/platform.js.map +1 -0
  30. package/internal/http/router.d.ts.map +1 -1
  31. package/internal/http/router.js +4 -1
  32. package/internal/http/router.js.map +1 -1
  33. package/internal/http/serverResponse.js +3 -33
  34. package/internal/http/serverResponse.js.map +1 -1
  35. package/mjs/Http/IncomingMessage.mjs +1 -1
  36. package/mjs/Http/IncomingMessage.mjs.map +1 -1
  37. package/mjs/Http/Platform.mjs +17 -0
  38. package/mjs/Http/Platform.mjs.map +1 -0
  39. package/mjs/Http/ServerResponse.mjs.map +1 -1
  40. package/mjs/internal/http/formData.mjs +1 -1
  41. package/mjs/internal/http/formData.mjs.map +1 -1
  42. package/mjs/internal/http/middleware.mjs +3 -3
  43. package/mjs/internal/http/middleware.mjs.map +1 -1
  44. package/mjs/internal/http/platform.mjs +47 -0
  45. package/mjs/internal/http/platform.mjs.map +1 -0
  46. package/mjs/internal/http/router.mjs +4 -1
  47. package/mjs/internal/http/router.mjs.map +1 -1
  48. package/mjs/internal/http/serverResponse.mjs +4 -34
  49. package/mjs/internal/http/serverResponse.mjs.map +1 -1
  50. package/package.json +5 -6
  51. package/src/CommandExecutor.ts +1 -1
  52. package/src/Error.ts +1 -1
  53. package/src/FileSystem.ts +1 -1
  54. package/src/Http/Body.ts +1 -1
  55. package/src/Http/Client.ts +1 -1
  56. package/src/Http/ClientError.ts +1 -1
  57. package/src/Http/ClientRequest.ts +1 -1
  58. package/src/Http/FormData.ts +1 -1
  59. package/src/Http/IncomingMessage.ts +1 -1
  60. package/src/Http/Middleware.ts +1 -1
  61. package/src/Http/Platform.ts +70 -0
  62. package/src/Http/Router.ts +2 -2
  63. package/src/Http/ServerError.ts +1 -1
  64. package/src/Http/ServerResponse.ts +5 -5
  65. package/src/KeyValueStore.ts +1 -1
  66. package/src/Path.ts +1 -1
  67. package/src/internal/http/formData.ts +1 -1
  68. package/src/internal/http/middleware.ts +6 -8
  69. package/src/internal/http/platform.ts +85 -0
  70. package/src/internal/http/router.ts +5 -2
  71. package/src/internal/http/serverResponse.ts +13 -53
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.mjs","names":["Context","Effect","FileSystem","Etag","TypeId","Symbol","for","tag","Tag","make","impl","gen","_","fs","etagGen","Generator","of","fileResponse","path","options","map","etag","info","start","Number","offset","end","bytesToRead","undefined","headers","toString","mtime","_tag","value","toUTCString","contentLength","size","status","statusText","bind","fromFileInfo","bindTo","stat","fileWebResponse","file","fromFileWeb","Date","lastModified"],"sources":["../../../src/internal/http/platform.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -84,7 +84,10 @@ const toHttpApp = self => {
84
84
  }
85
85
  }
86
86
  }
87
- const result = router.find(request.method, request.url);
87
+ let result = router.find(request.method, request.url);
88
+ if (result === null && request.method === "HEAD") {
89
+ result = router.find("GET", request.url);
90
+ }
88
91
  if (result === null) {
89
92
  return Effect.fail(Error.RouteNotFound({
90
93
  request
@@ -1 +1 @@
1
- {"version":3,"file":"router.mjs","names":["Chunk","Context","Equal","dual","Hash","Option","pipeArguments","Effect","Error","ServerRequest","Schema","Channel","Sink","Stream","FindMyWay","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","RouterImpl","constructor","routes","mounts","_tag","EffectTypeId","undefined","StreamTypeId","SinkTypeId","ChannelTypeId","pipe","arguments","commit","httpApp","toHttpApp","symbol","that","random","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","value","mapInputContext","context","add","RouteContextImpl","prefexLen","setUrl","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","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.mjs","names":["Chunk","Context","Equal","dual","Hash","Option","pipeArguments","Effect","Error","ServerRequest","Schema","Channel","Sink","Stream","FindMyWay","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","RouterImpl","constructor","routes","mounts","_tag","EffectTypeId","undefined","StreamTypeId","SinkTypeId","ChannelTypeId","pipe","arguments","commit","httpApp","toHttpApp","symbol","that","random","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","value","mapInputContext","context","add","RouteContextImpl","prefexLen","setUrl","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","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,12 +1,10 @@
1
1
  import { dual } from "@effect/data/Function";
2
2
  import { pipeArguments } from "@effect/data/Pipeable";
3
3
  import * as Effect from "@effect/io/Effect";
4
- import * as FileSystem from "@effect/platform/FileSystem";
5
- import * as Etag from "@effect/platform/Http/Etag";
6
4
  import * as Headers from "@effect/platform/Http/Headers";
5
+ import * as Platform from "@effect/platform/Http/Platform";
7
6
  import * as UrlParams from "@effect/platform/Http/UrlParams";
8
7
  import * as internalBody from "@effect/platform/internal/http/body";
9
- import * as Mime from "mime";
10
8
  /** @internal */
11
9
  export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/Http/ServerResponse");
12
10
  class ServerResponseImpl {
@@ -52,37 +50,9 @@ export const schemaJson = schema => {
52
50
  return (body, options) => Effect.map(encode(body), body => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, body));
53
51
  };
54
52
  /** @internal */
55
- export const file = (path, options) => Effect.map(({
56
- body,
57
- etag,
58
- info
59
- }) => {
60
- const headers = {
61
- ...(options?.headers ?? {}),
62
- etag: Etag.toString(etag)
63
- };
64
- if (info.mtime._tag === "Some") {
65
- headers["last-modified"] = info.mtime.value.toUTCString();
66
- }
67
- return new ServerResponseImpl(options?.status ?? 200, options?.statusText, headers, body);
68
- })(Effect.bind("body", ({
69
- info
70
- }) => internalBody.fileInfo(path, info, {
71
- contentType: Mime.getType(path) ?? undefined,
72
- ...options
73
- }))(Effect.bind("etag", ({
74
- info
75
- }) => Effect.flatMap(Etag.Generator, generator => generator.fromFileInfo(info)))(Effect.bindTo(Effect.flatMap(FileSystem.FileSystem, fs => fs.stat(path)), "info"))));
76
- /** @internal */
77
- export const fileWeb = (file, options) => Effect.flatMap(Etag.Generator, generator => Effect.map(generator.fromFileWeb(file), etag => {
78
- const body = internalBody.fileWeb(file);
79
- const headers = {
80
- ...(options?.headers ?? {}),
81
- etag: Etag.toString(etag),
82
- "last-modified": new Date(file.lastModified).toUTCString()
83
- };
84
- return new ServerResponseImpl(options?.status ?? 200, options?.statusText, headers, body);
85
- }));
53
+ export const file = (path, options) => Effect.flatMap(Platform.Platform, platform => platform.fileResponse(path, options));
54
+ /** @internal */
55
+ export const fileWeb = (file, options) => Effect.flatMap(Platform.Platform, platform => platform.fileWebResponse(file, options));
86
56
  /** @internal */
87
57
  export const urlParams = (body, options) => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, internalBody.text(UrlParams.toString(UrlParams.fromInput(body)), "application/x-www-form-urlencoded"));
88
58
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","FileSystem","Etag","Headers","UrlParams","internalBody","Mime","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","empty","options","uint8Array","getContentType","text","json","map","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","etag","info","mtime","_tag","value","toUTCString","bind","fileInfo","getType","undefined","flatMap","Generator","generator","fromFileInfo","bindTo","fs","stat","fileWeb","fromFileWeb","Date","lastModified","urlParams","fromInput","raw","formData","stream","setHeader","self","key","set","setHeaders","input","setAll","setStatus","args","setBody","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","Headers","Platform","UrlParams","internalBody","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","empty","options","uint8Array","getContentType","text","json","map","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","flatMap","platform","fileResponse","fileWeb","fileWebResponse","urlParams","fromInput","raw","formData","stream","setHeader","self","key","value","set","setHeaders","input","setAll","setStatus","args","setBody","_tag","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.13.16",
3
+ "version": "0.14.1",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,13 +26,12 @@
26
26
  "author": "Effect contributors",
27
27
  "dependencies": {
28
28
  "find-my-way": "^7.6.2",
29
- "mime": "^3.0.0",
30
29
  "path-browserify": "^1.0.1"
31
30
  },
32
31
  "peerDependencies": {
33
- "@effect/data": "^0.17.5",
34
- "@effect/io": "^0.38.2",
35
- "@effect/schema": "^0.33.1",
36
- "@effect/stream": "^0.34.0"
32
+ "@effect/data": "^0.18.3",
33
+ "@effect/io": "^0.39.0",
34
+ "@effect/schema": "^0.34.0",
35
+ "@effect/stream": "^0.35.1"
37
36
  }
38
37
  }
@@ -113,7 +113,7 @@ export type ProcessId = Brand.Branded<number, "ProcessId">
113
113
  /**
114
114
  * @since 1.0.0
115
115
  */
116
- export namespace Process {
116
+ export declare namespace Process {
117
117
  /**
118
118
  * @since 1.0.0
119
119
  * @category models
package/src/Error.ts CHANGED
@@ -25,7 +25,7 @@ export type PlatformError = BadArgument | SystemError
25
25
  /**
26
26
  * @since 1.0.0
27
27
  */
28
- export namespace PlatformError {
28
+ export declare namespace PlatformError {
29
29
  /**
30
30
  * @since 1.0.0
31
31
  * @category models
package/src/FileSystem.ts CHANGED
@@ -474,7 +474,7 @@ export interface File {
474
474
  /**
475
475
  * @since 1.0.0
476
476
  */
477
- export namespace File {
477
+ export declare namespace File {
478
478
  /**
479
479
  * @since 1.0.0
480
480
  * @category model
package/src/Http/Body.ts CHANGED
@@ -31,7 +31,7 @@ export type Body = Empty | Raw | Uint8Array | FormData | Stream
31
31
  /**
32
32
  * @since 1.0.0
33
33
  */
34
- export namespace Body {
34
+ export declare namespace Body {
35
35
  /**
36
36
  * @since 1.0.0
37
37
  * @category models
@@ -38,7 +38,7 @@ export interface Client<R, E, A> extends Pipeable {
38
38
  /**
39
39
  * @since 1.0.0
40
40
  */
41
- export namespace Client {
41
+ export declare namespace Client {
42
42
  /**
43
43
  * @since 1.0.0
44
44
  * @category models
@@ -27,7 +27,7 @@ export type HttpClientError = RequestError | ResponseError
27
27
  /**
28
28
  * @since 1.0.0
29
29
  */
30
- export namespace HttpError {
30
+ export declare namespace HttpError {
31
31
  /**
32
32
  * @since 1.0.0
33
33
  * @category models
@@ -56,7 +56,7 @@ export interface Options {
56
56
  /**
57
57
  * @since 1.0.0
58
58
  */
59
- export namespace Options {
59
+ export declare namespace Options {
60
60
  /**
61
61
  * @since 1.0.0
62
62
  * @category models
@@ -33,7 +33,7 @@ export type Part = Field | File
33
33
  /**
34
34
  * @since 1.0.0
35
35
  */
36
- export namespace Part {
36
+ export declare namespace Part {
37
37
  /**
38
38
  * @since 1.0.0
39
39
  * @category models
@@ -2,7 +2,7 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import { dual } from "@effect/data/Function"
5
- import * as Global from "@effect/data/Global"
5
+ import * as Global from "@effect/data/GlobalValue"
6
6
  import * as Option from "@effect/data/Option"
7
7
  import * as Effect from "@effect/io/Effect"
8
8
  import * as FiberRef from "@effect/io/FiberRef"
@@ -15,7 +15,7 @@ export interface Middleware {
15
15
  /**
16
16
  * @since 1.0.0
17
17
  */
18
- export namespace Middleware {
18
+ export declare namespace Middleware {
19
19
  /**
20
20
  * @since 1.0.0
21
21
  */
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type * as Context from "@effect/data/Context"
5
+ import type * as Effect from "@effect/io/Effect"
6
+ import type * as Error from "@effect/platform/Error"
7
+ import type * as FileSystem from "@effect/platform/FileSystem"
8
+ import type * as Body from "@effect/platform/Http/Body"
9
+ import type * as Etag from "@effect/platform/Http/Etag"
10
+ import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
11
+ import * as internal from "@effect/platform/internal/http/platform"
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category type ids
16
+ */
17
+ export const TypeId: unique symbol = internal.TypeId
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category type ids
22
+ */
23
+ export type TypeId = typeof TypeId
24
+
25
+ /**
26
+ * @since 1.0.0
27
+ * @category tags
28
+ */
29
+ export const Platform: Context.Tag<Platform, Platform> = internal.tag
30
+
31
+ /**
32
+ * @since 1.0.0
33
+ * @category models
34
+ */
35
+ export interface Platform {
36
+ readonly [TypeId]: TypeId
37
+ readonly fileResponse: (
38
+ path: string,
39
+ options?: ServerResponse.Options.WithContent & FileSystem.StreamOptions
40
+ ) => Effect.Effect<never, Error.PlatformError, ServerResponse.ServerResponse>
41
+ readonly fileWebResponse: (
42
+ file: Body.Body.FileLike,
43
+ options?: ServerResponse.Options.WithContent & FileSystem.StreamOptions
44
+ ) => Effect.Effect<never, never, ServerResponse.ServerResponse>
45
+ }
46
+
47
+ /**
48
+ * @since 1.0.0
49
+ * @category constructors
50
+ */
51
+ export const make: (
52
+ impl: {
53
+ readonly fileResponse: (
54
+ path: string,
55
+ status: number,
56
+ statusText: string | undefined,
57
+ headers: Record<string, string>,
58
+ start: number,
59
+ end: number | undefined,
60
+ contentLength: number
61
+ ) => ServerResponse.ServerResponse
62
+ readonly fileWebResponse: (
63
+ file: Body.Body.FileLike,
64
+ status: number,
65
+ statusText: string | undefined,
66
+ headers: Record<string, string>,
67
+ options?: FileSystem.StreamOptions | undefined
68
+ ) => ServerResponse.ServerResponse
69
+ }
70
+ ) => Effect.Effect<FileSystem.FileSystem | Etag.Generator, never, Platform> = internal.make
@@ -40,7 +40,7 @@ export interface Router<R, E> extends App.Default<Exclude<R, RouteContext>, E |
40
40
  /**
41
41
  * @since 1.0.0
42
42
  */
43
- export namespace Router {
43
+ export declare namespace Router {
44
44
  /**
45
45
  * @since 1.0.0
46
46
  */
@@ -79,7 +79,7 @@ export interface Route<R, E> {
79
79
  /**
80
80
  * @since 1.0.0
81
81
  */
82
- export namespace Route {
82
+ export declare namespace Route {
83
83
  /**
84
84
  * @since 1.0.0
85
85
  */
@@ -27,7 +27,7 @@ export type HttpServerError = RequestError | ResponseError | RouteNotFound | Ser
27
27
  /**
28
28
  * @since 1.0.0
29
29
  */
30
- export namespace HttpError {
30
+ export declare namespace HttpError {
31
31
  /**
32
32
  * @since 1.0.0
33
33
  * @category models
@@ -6,8 +6,8 @@ import type * as Effect from "@effect/io/Effect"
6
6
  import type * as PlatformError from "@effect/platform/Error"
7
7
  import type * as FileSystem from "@effect/platform/FileSystem"
8
8
  import type * as Body from "@effect/platform/Http/Body"
9
- import type * as Etag from "@effect/platform/Http/Etag"
10
9
  import type * as Headers from "@effect/platform/Http/Headers"
10
+ import type * as Platform from "@effect/platform/Http/Platform"
11
11
  import type * as UrlParams from "@effect/platform/Http/UrlParams"
12
12
  import * as internal from "@effect/platform/internal/http/serverResponse"
13
13
  import type * as Schema from "@effect/schema/Schema"
@@ -52,7 +52,7 @@ export interface Options {
52
52
  /**
53
53
  * @since 1.0.0
54
54
  */
55
- export namespace Options {
55
+ export declare namespace Options {
56
56
  /**
57
57
  * @since 1.0.0
58
58
  * @category models
@@ -145,7 +145,7 @@ export const stream: (body: Stream.Stream<never, unknown, Uint8Array>, options?:
145
145
  export const file: (
146
146
  path: string,
147
147
  options?: Options & FileSystem.StreamOptions
148
- ) => Effect.Effect<FileSystem.FileSystem | Etag.Generator, PlatformError.PlatformError, ServerResponse> = internal.file
148
+ ) => Effect.Effect<Platform.Platform, PlatformError.PlatformError, ServerResponse> = internal.file
149
149
 
150
150
  /**
151
151
  * @since 1.0.0
@@ -153,8 +153,8 @@ export const file: (
153
153
  */
154
154
  export const fileWeb: (
155
155
  file: Body.Body.FileLike,
156
- options?: Options.WithContent
157
- ) => Effect.Effect<Etag.Generator, never, ServerResponse> = internal.fileWeb
156
+ options?: Options.WithContent & FileSystem.StreamOptions
157
+ ) => Effect.Effect<Platform.Platform, never, ServerResponse> = internal.fileWeb
158
158
 
159
159
  /**
160
160
  * @since 1.0.0
@@ -82,7 +82,7 @@ export interface KeyValueStore {
82
82
  /**
83
83
  * @since 1.0.0
84
84
  */
85
- export namespace KeyValueStore {
85
+ export declare namespace KeyValueStore {
86
86
  /**
87
87
  * @since 1.0.0
88
88
  */
package/src/Path.ts CHANGED
@@ -32,7 +32,7 @@ export interface Path {
32
32
  /**
33
33
  * @since 1.0.0
34
34
  */
35
- export namespace Path {
35
+ export declare namespace Path {
36
36
  /**
37
37
  * @since 1.0.0
38
38
  * @category model
@@ -1,7 +1,7 @@
1
1
  import * as Chunk from "@effect/data/Chunk"
2
2
  import * as Data from "@effect/data/Data"
3
3
  import { dual, pipe } from "@effect/data/Function"
4
- import { globalValue } from "@effect/data/Global"
4
+ import { globalValue } from "@effect/data/GlobalValue"
5
5
  import * as Option from "@effect/data/Option"
6
6
  import * as Predicate from "@effect/data/Predicate"
7
7
  import * as ReadonlyArray from "@effect/data/ReadonlyArray"
@@ -14,20 +14,18 @@ export const logger = make((httpApp) => {
14
14
  ServerRequest.ServerRequest,
15
15
  (request) =>
16
16
  Effect.withLogSpan(
17
- Effect.tap(
18
- Effect.tapErrorCause(httpApp, (cause) =>
19
- Effect.annotateLogs(Effect.log(cause), {
17
+ Effect.onExit(httpApp, (exit) =>
18
+ exit._tag === "Failure" ?
19
+ Effect.annotateLogs(Effect.log(exit.cause), {
20
20
  "http.method": request.method,
21
21
  "http.url": request.url,
22
22
  "http.status": 500
23
- })),
24
- (response) =>
23
+ }) :
25
24
  Effect.annotateLogs(Effect.log(""), {
26
25
  "http.method": request.method,
27
26
  "http.url": request.url,
28
- "http.status": response.status
29
- })
30
- ),
27
+ "http.status": exit.value.status
28
+ })),
31
29
  `http.span.${++counter}`
32
30
  )
33
31
  )
@@ -0,0 +1,85 @@
1
+ import * as Context from "@effect/data/Context"
2
+ import { pipe } from "@effect/data/Function"
3
+ import * as Effect from "@effect/io/Effect"
4
+ import * as FileSystem from "@effect/platform/FileSystem"
5
+ import type * as Body from "@effect/platform/Http/Body"
6
+ import * as Etag from "@effect/platform/Http/Etag"
7
+ import type * as Platform from "@effect/platform/Http/Platform"
8
+ import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
9
+
10
+ /** @internal */
11
+ export const TypeId: Platform.TypeId = Symbol.for("@effect/platform/Http/Platform") as Platform.TypeId
12
+
13
+ /** @internal */
14
+ export const tag = Context.Tag<Platform.Platform>(TypeId)
15
+
16
+ /** @internal */
17
+ export const make = (impl: {
18
+ readonly fileResponse: (
19
+ path: string,
20
+ status: number,
21
+ statusText: string | undefined,
22
+ headers: Record<string, string>,
23
+ start: number,
24
+ end: number | undefined,
25
+ contentLength: number
26
+ ) => ServerResponse.ServerResponse
27
+ readonly fileWebResponse: (
28
+ file: Body.Body.FileLike,
29
+ status: number,
30
+ statusText: string | undefined,
31
+ headers: Record<string, string>,
32
+ options?: FileSystem.StreamOptions
33
+ ) => ServerResponse.ServerResponse
34
+ }): Effect.Effect<FileSystem.FileSystem | Etag.Generator, never, Platform.Platform> =>
35
+ Effect.gen(function*(_) {
36
+ const fs = yield* _(FileSystem.FileSystem)
37
+ const etagGen = yield* _(Etag.Generator)
38
+
39
+ return tag.of({
40
+ [TypeId]: TypeId,
41
+ fileResponse(path, options) {
42
+ return pipe(
43
+ Effect.bindTo(fs.stat(path), "info"),
44
+ Effect.bind("etag", ({ info }) => etagGen.fromFileInfo(info)),
45
+ Effect.map(({ etag, info }) => {
46
+ const start = Number(options?.offset ?? 0)
47
+ const end = options?.bytesToRead !== undefined ? start + Number(options.bytesToRead) : undefined
48
+ const headers: Record<string, string> = {
49
+ ...(options?.headers ?? {}),
50
+ etag: Etag.toString(etag)
51
+ }
52
+ if (info.mtime._tag === "Some") {
53
+ headers["last-modified"] = info.mtime.value.toUTCString()
54
+ }
55
+ const contentLength = end !== undefined ? end - start : Number(info.size) - start
56
+ return impl.fileResponse(
57
+ path,
58
+ options?.status ?? 200,
59
+ options?.statusText,
60
+ headers,
61
+ start,
62
+ end,
63
+ contentLength
64
+ )
65
+ })
66
+ )
67
+ },
68
+ fileWebResponse(file, options) {
69
+ return Effect.map(etagGen.fromFileWeb(file), (etag) => {
70
+ const headers: Record<string, string> = {
71
+ ...(options?.headers ?? {}),
72
+ etag: Etag.toString(etag),
73
+ "last-modified": new Date(file.lastModified).toUTCString()
74
+ }
75
+ return impl.fileWebResponse(
76
+ file,
77
+ options?.status ?? 200,
78
+ options?.statusText,
79
+ headers,
80
+ options
81
+ )
82
+ })
83
+ }
84
+ })
85
+ })
@@ -125,7 +125,10 @@ const toHttpApp = <R, E>(
125
125
  }
126
126
  }
127
127
 
128
- const result = router.find(request.method as HTTPMethod, request.url)
128
+ let result = router.find(request.method as HTTPMethod, request.url)
129
+ if (result === null && request.method === "HEAD") {
130
+ result = router.find("GET", request.url)
131
+ }
129
132
  if (result === null) {
130
133
  return Effect.fail(Error.RouteNotFound({ request }))
131
134
  }
@@ -139,7 +142,7 @@ const toHttpApp = <R, E>(
139
142
  Context.add(
140
143
  Context.add(context, ServerRequest.ServerRequest, request),
141
144
  RouteContext,
142
- new RouteContextImpl(result.params, result.searchParams)
145
+ new RouteContextImpl(result!.params, result!.searchParams)
143
146
  ) as Context.Context<R>
144
147
  )
145
148
  }