@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
@@ -1,17 +1,16 @@
1
- import { dual, pipe } from "@effect/data/Function"
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
4
  import type * as PlatformError from "@effect/platform/Error"
5
- import * as FileSystem from "@effect/platform/FileSystem"
5
+ import type * as FileSystem from "@effect/platform/FileSystem"
6
6
  import type * as Body from "@effect/platform/Http/Body"
7
- import * as Etag from "@effect/platform/Http/Etag"
8
7
  import * as Headers from "@effect/platform/Http/Headers"
8
+ import * as Platform from "@effect/platform/Http/Platform"
9
9
  import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
10
10
  import * as UrlParams from "@effect/platform/Http/UrlParams"
11
11
  import * as internalBody from "@effect/platform/internal/http/body"
12
12
  import type * as Schema from "@effect/schema/Schema"
13
13
  import type * as Stream from "@effect/stream/Stream"
14
- import * as Mime from "mime"
15
14
 
16
15
  /** @internal */
17
16
  export const TypeId: ServerResponse.TypeId = Symbol.for("@effect/platform/Http/ServerResponse") as ServerResponse.TypeId
@@ -125,60 +124,21 @@ export const schemaJson = <I, A>(
125
124
  export const file = (
126
125
  path: string,
127
126
  options?: ServerResponse.Options & FileSystem.StreamOptions
128
- ): Effect.Effect<
129
- FileSystem.FileSystem | Etag.Generator,
130
- PlatformError.PlatformError,
131
- ServerResponse.ServerResponse
132
- > =>
133
- pipe(
134
- Effect.bindTo(Effect.flatMap(FileSystem.FileSystem, (fs) => fs.stat(path)), "info"),
135
- Effect.bind("etag", ({ info }) =>
136
- Effect.flatMap(
137
- Etag.Generator,
138
- (generator) => generator.fromFileInfo(info)
139
- )),
140
- Effect.bind("body", ({ info }) =>
141
- internalBody.fileInfo(path, info, {
142
- contentType: Mime.getType(path) ?? undefined,
143
- ...options
144
- })),
145
- Effect.map(({ body, etag, info }) => {
146
- const headers: Record<string, string> = {
147
- ...(options?.headers ?? {}),
148
- etag: Etag.toString(etag)
149
- }
150
- if (info.mtime._tag === "Some") {
151
- headers["last-modified"] = info.mtime.value.toUTCString()
152
- }
153
- return new ServerResponseImpl(
154
- options?.status ?? 200,
155
- options?.statusText,
156
- headers,
157
- body
158
- )
159
- })
127
+ ): Effect.Effect<Platform.Platform, PlatformError.PlatformError, ServerResponse.ServerResponse> =>
128
+ Effect.flatMap(
129
+ Platform.Platform,
130
+ (platform) => platform.fileResponse(path, options)
160
131
  )
161
132
 
162
133
  /** @internal */
163
134
  export const fileWeb = (
164
135
  file: Body.Body.FileLike,
165
- options?: ServerResponse.Options.WithContent
166
- ): Effect.Effect<Etag.Generator, never, ServerResponse.ServerResponse> =>
167
- Effect.flatMap(Etag.Generator, (generator) =>
168
- Effect.map(generator.fromFileWeb(file), (etag) => {
169
- const body = internalBody.fileWeb(file)
170
- const headers: Record<string, string> = {
171
- ...(options?.headers ?? {}),
172
- etag: Etag.toString(etag),
173
- "last-modified": new Date(file.lastModified).toUTCString()
174
- }
175
- return new ServerResponseImpl(
176
- options?.status ?? 200,
177
- options?.statusText,
178
- headers,
179
- body
180
- )
181
- }))
136
+ options?: ServerResponse.Options.WithContent & FileSystem.StreamOptions
137
+ ): Effect.Effect<Platform.Platform, never, ServerResponse.ServerResponse> =>
138
+ Effect.flatMap(
139
+ Platform.Platform,
140
+ (platform) => platform.fileWebResponse(file, options)
141
+ )
182
142
 
183
143
  /** @internal */
184
144
  export const urlParams = (