@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.
- package/CommandExecutor.d.ts.map +1 -1
- package/Error.d.ts.map +1 -1
- package/FileSystem.d.ts.map +1 -1
- package/Http/Body.d.ts.map +1 -1
- package/Http/Client.d.ts.map +1 -1
- package/Http/ClientError.d.ts.map +1 -1
- package/Http/ClientRequest.d.ts.map +1 -1
- package/Http/FormData.d.ts.map +1 -1
- package/Http/IncomingMessage.js +1 -1
- package/Http/Middleware.d.ts.map +1 -1
- package/Http/Platform.d.ts +43 -0
- package/Http/Platform.d.ts.map +1 -0
- package/Http/Platform.js +28 -0
- package/Http/Platform.js.map +1 -0
- package/Http/Router.d.ts.map +1 -1
- package/Http/ServerError.d.ts.map +1 -1
- package/Http/ServerResponse.d.ts +3 -3
- package/Http/ServerResponse.d.ts.map +1 -1
- package/Http/ServerResponse.js.map +1 -1
- package/KeyValueStore.d.ts.map +1 -1
- package/Path.d.ts.map +1 -1
- package/internal/http/formData.js +7 -7
- package/internal/http/formData.js.map +1 -1
- package/internal/http/middleware.js +3 -3
- package/internal/http/middleware.js.map +1 -1
- package/internal/http/platform.d.ts +2 -0
- package/internal/http/platform.d.ts.map +1 -0
- package/internal/http/platform.js +58 -0
- package/internal/http/platform.js.map +1 -0
- package/internal/http/router.d.ts.map +1 -1
- package/internal/http/router.js +4 -1
- package/internal/http/router.js.map +1 -1
- package/internal/http/serverResponse.js +3 -33
- package/internal/http/serverResponse.js.map +1 -1
- package/mjs/Http/IncomingMessage.mjs +1 -1
- package/mjs/Http/IncomingMessage.mjs.map +1 -1
- package/mjs/Http/Platform.mjs +17 -0
- package/mjs/Http/Platform.mjs.map +1 -0
- package/mjs/Http/ServerResponse.mjs.map +1 -1
- package/mjs/internal/http/formData.mjs +1 -1
- package/mjs/internal/http/formData.mjs.map +1 -1
- package/mjs/internal/http/middleware.mjs +3 -3
- package/mjs/internal/http/middleware.mjs.map +1 -1
- package/mjs/internal/http/platform.mjs +47 -0
- package/mjs/internal/http/platform.mjs.map +1 -0
- package/mjs/internal/http/router.mjs +4 -1
- package/mjs/internal/http/router.mjs.map +1 -1
- package/mjs/internal/http/serverResponse.mjs +4 -34
- package/mjs/internal/http/serverResponse.mjs.map +1 -1
- package/package.json +5 -6
- package/src/CommandExecutor.ts +1 -1
- package/src/Error.ts +1 -1
- package/src/FileSystem.ts +1 -1
- package/src/Http/Body.ts +1 -1
- package/src/Http/Client.ts +1 -1
- package/src/Http/ClientError.ts +1 -1
- package/src/Http/ClientRequest.ts +1 -1
- package/src/Http/FormData.ts +1 -1
- package/src/Http/IncomingMessage.ts +1 -1
- package/src/Http/Middleware.ts +1 -1
- package/src/Http/Platform.ts +70 -0
- package/src/Http/Router.ts +2 -2
- package/src/Http/ServerError.ts +1 -1
- package/src/Http/ServerResponse.ts +5 -5
- package/src/KeyValueStore.ts +1 -1
- package/src/Path.ts +1 -1
- package/src/internal/http/formData.ts +1 -1
- package/src/internal/http/middleware.ts +6 -8
- package/src/internal/http/platform.ts +85 -0
- package/src/internal/http/router.ts +5 -2
- package/src/internal/http/serverResponse.ts +13 -53
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { dual
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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<
|
|
167
|
-
Effect.flatMap(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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 = (
|