@effect/platform 0.63.3 → 0.64.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.
Files changed (49) hide show
  1. package/dist/cjs/Etag.js +11 -1
  2. package/dist/cjs/Etag.js.map +1 -1
  3. package/dist/cjs/HttpApiBuilder.js +35 -1
  4. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  5. package/dist/cjs/HttpPlatform.js +6 -1
  6. package/dist/cjs/HttpPlatform.js.map +1 -1
  7. package/dist/cjs/Socket.js +56 -16
  8. package/dist/cjs/Socket.js.map +1 -1
  9. package/dist/cjs/internal/etag.js +42 -1
  10. package/dist/cjs/internal/etag.js.map +1 -1
  11. package/dist/cjs/internal/httpPlatform.js +28 -4
  12. package/dist/cjs/internal/httpPlatform.js.map +1 -1
  13. package/dist/cjs/internal/httpServerResponse.js +5 -4
  14. package/dist/cjs/internal/httpServerResponse.js.map +1 -1
  15. package/dist/cjs/internal/multipart.js +1 -3
  16. package/dist/cjs/internal/multipart.js.map +1 -1
  17. package/dist/dts/Etag.d.ts +11 -0
  18. package/dist/dts/Etag.d.ts.map +1 -1
  19. package/dist/dts/HttpApiBuilder.d.ts +29 -1
  20. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  21. package/dist/dts/HttpPlatform.d.ts +6 -0
  22. package/dist/dts/HttpPlatform.d.ts.map +1 -1
  23. package/dist/dts/Socket.d.ts +20 -3
  24. package/dist/dts/Socket.d.ts.map +1 -1
  25. package/dist/esm/Etag.js +10 -0
  26. package/dist/esm/Etag.js.map +1 -1
  27. package/dist/esm/HttpApiBuilder.js +33 -0
  28. package/dist/esm/HttpApiBuilder.js.map +1 -1
  29. package/dist/esm/HttpPlatform.js +5 -0
  30. package/dist/esm/HttpPlatform.js.map +1 -1
  31. package/dist/esm/Socket.js +53 -15
  32. package/dist/esm/Socket.js.map +1 -1
  33. package/dist/esm/internal/etag.js +41 -0
  34. package/dist/esm/internal/etag.js.map +1 -1
  35. package/dist/esm/internal/httpPlatform.js +28 -4
  36. package/dist/esm/internal/httpPlatform.js.map +1 -1
  37. package/dist/esm/internal/httpServerResponse.js +4 -3
  38. package/dist/esm/internal/httpServerResponse.js.map +1 -1
  39. package/dist/esm/internal/multipart.js +1 -3
  40. package/dist/esm/internal/multipart.js.map +1 -1
  41. package/package.json +2 -2
  42. package/src/Etag.ts +13 -0
  43. package/src/HttpApiBuilder.ts +46 -2
  44. package/src/HttpPlatform.ts +7 -0
  45. package/src/Socket.ts +97 -23
  46. package/src/internal/etag.ts +43 -0
  47. package/src/internal/httpPlatform.ts +32 -4
  48. package/src/internal/httpServerResponse.ts +6 -3
  49. package/src/internal/multipart.ts +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"multipart.js","names":["Schema","Cause","Channel","Chunk","Effect","FiberRef","dual","flow","pipe","globalValue","Inspectable","Option","Predicate","Queue","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","all","get","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","bounded","config","queue","makeFromQueue","shutdown","suspend","error","partsBuffer","partsFinished","input","awaitRead","void","emit","element","offer","cause","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","sync","end","forEach","buf","takeParts","parts","partsChannel","failCause","embedInput","limit","PartBase","Class","constructor","key","toJSON","_id","content","channel","filename","fromChannel","defaultWriteFile","path","fs","mapError","run","sink","toPersisted","stream","writeFile","Do","bind","makeTempDirectoryScoped","dir","path_","runFoldEffect","Object","create","part","succeed","join","basename","slice","isArray","PersistedFileImpl","as","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"multipart.js","names":["Schema","Cause","Channel","Chunk","Effect","FiberRef","dual","flow","pipe","globalValue","Inspectable","Option","Predicate","Queue","Stream","MP","TypeIdError","FileSystem","IncomingMessage","Path","TypeId","Symbol","for","isPart","u","hasProperty","isField","_tag","isFile","isPersistedFile","isTagged","ErrorTypeId","MultipartError","message","reason","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","FileSchema","declare","identifier","jsonSchema","type","format","FilesSchema","Array","SingleFileSchema","transform","itemsCount","strict","decode","file","encode","schemaPersisted","schema","options","parse","decodeUnknown","persisted","schemaJson","fromJson","parseJson","field","Struct","_","makeConfig","headers","all","get","getOrUndefined","Number","maxPartSize","maxTotalSize","maxBodySize","length","undefined","info","some","contentType","includes","defaultIsFile","makeChannel","bufferSize","acquireUseRelease","bounded","config","queue","makeFromQueue","shutdown","suspend","error","partsBuffer","partsFinished","input","awaitRead","void","emit","element","offer","cause","done","_value","parser","onField","value","push","FieldImpl","name","decodeField","onFile","chunks","finished","take","zipRight","pump","chunk","unsafeFromArray","write","FileImpl","onError","error_","fail","convertError","onDone","flatMap","sync","end","forEach","takeParts","parts","partsChannel","failCause","embedInput","limit","PartBase","Class","constructor","key","toJSON","_id","content","channel","filename","fromChannel","defaultWriteFile","path","fs","mapError","run","sink","toPersisted","stream","writeFile","Do","bind","makeTempDirectoryScoped","dir","path_","runFoldEffect","Object","create","part","succeed","join","basename","slice","isArray","PersistedFileImpl","as","catchTags","SystemError","BadArgument"],"sources":["../../../src/internal/multipart.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.63.3",
3
+ "version": "0.64.0",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -14,7 +14,7 @@
14
14
  "multipasta": "^0.2.5"
15
15
  },
16
16
  "peerDependencies": {
17
- "@effect/schema": "^0.72.2",
17
+ "@effect/schema": "^0.72.3",
18
18
  "effect": "^3.7.2"
19
19
  },
20
20
  "publishConfig": {
package/src/Etag.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Context from "effect/Context"
5
5
  import type * as Effect from "effect/Effect"
6
+ import type { Layer } from "effect/Layer"
6
7
  import type * as FileSystem from "./FileSystem.js"
7
8
  import type * as Body from "./HttpBody.js"
8
9
  import * as internal from "./internal/etag.js"
@@ -64,3 +65,15 @@ export interface Generator {
64
65
  * @category tags
65
66
  */
66
67
  export const Generator: Context.Tag<Generator, Generator> = internal.tag
68
+
69
+ /**
70
+ * @since 1.0.0
71
+ * @category layers
72
+ */
73
+ export const layer: Layer<Generator> = internal.layer
74
+
75
+ /**
76
+ * @since 1.0.0
77
+ * @category layers
78
+ */
79
+ export const layerWeak: Layer<Generator> = internal.layerWeak
@@ -12,6 +12,7 @@ import * as FiberRef from "effect/FiberRef"
12
12
  import { identity } from "effect/Function"
13
13
  import { globalValue } from "effect/GlobalValue"
14
14
  import * as Layer from "effect/Layer"
15
+ import type { ManagedRuntime } from "effect/ManagedRuntime"
15
16
  import * as Option from "effect/Option"
16
17
  import { type Pipeable, pipeArguments } from "effect/Pipeable"
17
18
  import type { ReadonlyRecord } from "effect/Record"
@@ -85,9 +86,9 @@ export const serve: {
85
86
  * @category constructors
86
87
  */
87
88
  export const httpApp: Effect.Effect<
88
- HttpApp.Default,
89
+ HttpApp.Default<never, HttpRouter.HttpRouter.DefaultServices>,
89
90
  never,
90
- Router | HttpApi.HttpApi.Service | HttpRouter.HttpRouter.DefaultServices
91
+ Router | HttpApi.HttpApi.Service
91
92
  > = Effect.gen(function*() {
92
93
  const api = yield* HttpApi.HttpApi
93
94
  const router = yield* Router.router
@@ -105,6 +106,49 @@ export const httpApp: Effect.Effect<
105
106
  )
106
107
  })
107
108
 
109
+ /**
110
+ * Construct an http web handler from an `HttpApi` instance.
111
+ *
112
+ * @since 1.0.0
113
+ * @category constructors
114
+ * @example
115
+ * import { HttpApi } from "@effect/platform"
116
+ * import { Etag, HttpApiBuilder, HttpMiddleware, HttpPlatform } from "@effect/platform"
117
+ * import { NodeContext } from "@effect/platform-node"
118
+ * import { Layer, ManagedRuntime } from "effect"
119
+ *
120
+ * const ApiLive = HttpApiBuilder.api(HttpApi.empty)
121
+ *
122
+ * const runtime = ManagedRuntime.make(
123
+ * Layer.mergeAll(
124
+ * ApiLive,
125
+ * HttpApiBuilder.Router.Live,
126
+ * HttpPlatform.layer,
127
+ * Etag.layerWeak
128
+ * ).pipe(
129
+ * Layer.provideMerge(NodeContext.layer)
130
+ * )
131
+ * )
132
+ *
133
+ * const handler = HttpApiBuilder.toWebHandler(runtime, HttpMiddleware.logger)
134
+ */
135
+ export const toWebHandler = <R, ER>(
136
+ runtime: ManagedRuntime<R | HttpApi.HttpApi.Service | Router | HttpRouter.HttpRouter.DefaultServices, ER>,
137
+ middleware?: (
138
+ httpApp: HttpApp.Default
139
+ ) => HttpApp.Default<never, R | HttpApi.HttpApi.Service | Router | HttpRouter.HttpRouter.DefaultServices>
140
+ ): (request: Request) => Promise<Response> => {
141
+ const handlerPromise = httpApp.pipe(
142
+ Effect.bindTo("httpApp"),
143
+ Effect.bind("runtime", () => runtime.runtimeEffect),
144
+ Effect.map(({ httpApp, runtime }) =>
145
+ HttpApp.toWebHandlerRuntime(runtime)(middleware ? middleware(httpApp as any) : httpApp)
146
+ ),
147
+ runtime.runPromise
148
+ )
149
+ return (request) => handlerPromise.then((handler) => handler(request))
150
+ }
151
+
108
152
  /**
109
153
  * Build a root level `Layer` from an `HttpApi` instance.
110
154
  *
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type * as Context from "effect/Context"
5
5
  import type * as Effect from "effect/Effect"
6
+ import type { Layer } from "effect/Layer"
6
7
  import type * as Error from "./Error.js"
7
8
  import type * as Etag from "./Etag.js"
8
9
  import type * as FileSystem from "./FileSystem.js"
@@ -69,3 +70,9 @@ export const make: (
69
70
  ) => ServerResponse.HttpServerResponse
70
71
  }
71
72
  ) => Effect.Effect<HttpPlatform, never, FileSystem.FileSystem | Etag.Generator> = internal.make
73
+
74
+ /**
75
+ * @since 1.0.0
76
+ * @category layers
77
+ */
78
+ export const layer: Layer<HttpPlatform, never, FileSystem.FileSystem> = internal.layer
package/src/Socket.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import * as Cause from "effect/Cause"
5
4
  import * as Channel from "effect/Channel"
6
5
  import * as Chunk from "effect/Chunk"
7
6
  import * as Context from "effect/Context"
@@ -12,6 +11,7 @@ import * as ExecutionStrategy from "effect/ExecutionStrategy"
12
11
  import * as Exit from "effect/Exit"
13
12
  import * as FiberRef from "effect/FiberRef"
14
13
  import * as FiberSet from "effect/FiberSet"
14
+ import { dual } from "effect/Function"
15
15
  import { globalValue } from "effect/GlobalValue"
16
16
  import * as Layer from "effect/Layer"
17
17
  import * as Predicate from "effect/Predicate"
@@ -32,6 +32,12 @@ export const TypeId: unique symbol = Symbol.for("@effect/platform/Socket")
32
32
  */
33
33
  export type TypeId = typeof TypeId
34
34
 
35
+ /**
36
+ * @since 1.0.0
37
+ * @category guards
38
+ */
39
+ export const isSocket = (u: unknown): u is Socket => Predicate.hasProperty(u, TypeId)
40
+
35
41
  /**
36
42
  * @since 1.0.0
37
43
  * @category tags
@@ -171,10 +177,11 @@ export class SocketCloseError extends TypeIdError(SocketErrorTypeId, "SocketErro
171
177
  * @since 1.0.0
172
178
  * @category combinators
173
179
  */
174
- export const toChannel = <IE>(
175
- self: Socket
180
+ export const toChannelMap = <IE, A>(
181
+ self: Socket,
182
+ f: (data: Uint8Array | string) => A
176
183
  ): Channel.Channel<
177
- Chunk.Chunk<Uint8Array>,
184
+ Chunk.Chunk<A>,
178
185
  Chunk.Chunk<Uint8Array | string | CloseEvent>,
179
186
  SocketError | IE,
180
187
  IE,
@@ -183,25 +190,27 @@ export const toChannel = <IE>(
183
190
  > =>
184
191
  Effect.scope.pipe(
185
192
  Effect.bindTo("scope"),
193
+ Effect.let("state", () => ({ finished: false, buffer: [] as Array<A> })),
194
+ Effect.bind("semaphore", () => Effect.makeSemaphore(0)),
186
195
  Effect.bind("writeScope", ({ scope }) => Scope.fork(scope, ExecutionStrategy.sequential)),
187
196
  Effect.bind("write", ({ writeScope }) => Scope.extend(self.writer, writeScope)),
188
- Effect.bind("exitQueue", (_) => Queue.unbounded<Exit.Exit<Chunk.Chunk<Uint8Array>, SocketError | IE>>()),
197
+ Effect.bind("deferred", () => Deferred.make<void, SocketError | IE>()),
189
198
  Effect.let(
190
199
  "input",
191
200
  (
192
- { exitQueue, write, writeScope }
201
+ { deferred, write, writeScope }
193
202
  ): AsyncProducer.AsyncInputProducer<IE, Chunk.Chunk<Uint8Array | string | CloseEvent>, unknown> => ({
194
203
  awaitRead: () => Effect.void,
195
204
  emit(chunk) {
196
205
  return Effect.catchAllCause(
197
206
  Effect.forEach(chunk, write, { discard: true }),
198
- (cause) => Queue.offer(exitQueue, Exit.failCause(cause))
207
+ (cause) => Deferred.failCause(deferred, cause)
199
208
  )
200
209
  },
201
210
  error(error) {
202
211
  return Effect.zipRight(
203
212
  Scope.close(writeScope, Exit.void),
204
- Queue.offer(exitQueue, Exit.failCause(error))
213
+ Deferred.failCause(deferred, error)
205
214
  )
206
215
  },
207
216
  done() {
@@ -209,30 +218,95 @@ export const toChannel = <IE>(
209
218
  }
210
219
  })
211
220
  ),
212
- Effect.tap(({ exitQueue, scope }) =>
213
- self.run((data) => Queue.offer(exitQueue, Exit.succeed(Chunk.of(data)))).pipe(
214
- Effect.zipRight(Effect.failCause(Cause.empty)),
215
- Effect.exit,
216
- Effect.tap((exit) => Queue.offer(exitQueue, exit)),
221
+ Effect.tap(({ deferred, scope, semaphore, state }) =>
222
+ self.runRaw((data) => {
223
+ state.buffer.push(f(data))
224
+ return semaphore.release(1)
225
+ }).pipe(
226
+ Effect.intoDeferred(deferred),
227
+ Effect.raceFirst(Deferred.await(deferred)),
228
+ Effect.ensuring(Effect.suspend(() => {
229
+ state.finished = true
230
+ return semaphore.release(1)
231
+ })),
217
232
  Effect.forkIn(scope),
218
233
  Effect.interruptible
219
234
  )
220
235
  ),
221
- Effect.map(({ exitQueue, input }) => {
222
- const loop: Channel.Channel<Chunk.Chunk<Uint8Array>, unknown, SocketError | IE, unknown, void, unknown> = Channel
223
- .flatMap(
224
- Queue.take(exitQueue),
225
- Exit.match({
226
- onFailure: (cause) => Cause.isEmptyType(cause) ? Channel.void : Channel.failCause(cause),
227
- onSuccess: (chunk) => Channel.zipRight(Channel.write(chunk), loop)
228
- })
229
- )
230
-
236
+ Effect.map(({ deferred, input, semaphore, state }) => {
237
+ const loop: Channel.Channel<Chunk.Chunk<A>, unknown, SocketError | IE, unknown, void, unknown> = Channel.flatMap(
238
+ semaphore.take(1),
239
+ (_) => {
240
+ if (state.buffer.length === 0) {
241
+ return state.finished ? Deferred.await(deferred) : loop
242
+ }
243
+ const chunk = Chunk.unsafeFromArray(state.buffer)
244
+ state.buffer = []
245
+ return Channel.zipRight(Channel.write(chunk), state.finished ? Deferred.await(deferred) : loop)
246
+ }
247
+ )
231
248
  return Channel.embedInput(loop, input)
232
249
  }),
233
250
  Channel.unwrapScoped
234
251
  )
235
252
 
253
+ /**
254
+ * @since 1.0.0
255
+ * @category combinators
256
+ */
257
+ export const toChannel = <IE>(
258
+ self: Socket
259
+ ): Channel.Channel<
260
+ Chunk.Chunk<Uint8Array>,
261
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
262
+ SocketError | IE,
263
+ IE,
264
+ void,
265
+ unknown
266
+ > => {
267
+ const encoder = new TextEncoder()
268
+ return toChannelMap(self, (data) => typeof data === "string" ? encoder.encode(data) : data)
269
+ }
270
+
271
+ /**
272
+ * @since 1.0.0
273
+ * @category combinators
274
+ */
275
+ export const toChannelString: {
276
+ (encoding?: string | undefined): <IE>(self: Socket) => Channel.Channel<
277
+ Chunk.Chunk<string>,
278
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
279
+ SocketError | IE,
280
+ IE,
281
+ void,
282
+ unknown
283
+ >
284
+ <IE>(
285
+ self: Socket,
286
+ encoding?: string | undefined
287
+ ): Channel.Channel<
288
+ Chunk.Chunk<string>,
289
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
290
+ SocketError | IE,
291
+ IE,
292
+ void,
293
+ unknown
294
+ >
295
+ } = dual((args) => isSocket(args[0]), <IE>(
296
+ self: Socket,
297
+ encoding?: string | undefined
298
+ ): Channel.Channel<
299
+ Chunk.Chunk<string>,
300
+ Chunk.Chunk<Uint8Array | string | CloseEvent>,
301
+ SocketError | IE,
302
+ IE,
303
+ void,
304
+ unknown
305
+ > => {
306
+ const decoder = new TextDecoder(encoding)
307
+ return toChannelMap(self, (data) => typeof data === "string" ? data : decoder.decode(data))
308
+ })
309
+
236
310
  /**
237
311
  * @since 1.0.0
238
312
  * @category combinators
@@ -1,5 +1,9 @@
1
1
  import * as Context from "effect/Context"
2
+ import * as Effect from "effect/Effect"
3
+ import * as Layer from "effect/Layer"
2
4
  import type * as Etag from "../Etag.js"
5
+ import type * as FileSystem from "../FileSystem.js"
6
+ import type * as Body from "../HttpBody.js"
3
7
 
4
8
  /** @internal */
5
9
  export const GeneratorTypeId: Etag.GeneratorTypeId = Symbol.for(
@@ -18,3 +22,42 @@ export const toString = (self: Etag.Etag): string => {
18
22
  return `"${self.value}"`
19
23
  }
20
24
  }
25
+
26
+ const fromFileInfo = (info: FileSystem.File.Info) => {
27
+ const mtime = info.mtime._tag === "Some"
28
+ ? info.mtime.value.getTime().toString(16)
29
+ : "0"
30
+ return `${info.size.toString(16)}-${mtime}`
31
+ }
32
+
33
+ const fromFileWeb = (file: Body.HttpBody.FileLike) => {
34
+ return `${file.size.toString(16)}-${file.lastModified.toString(16)}`
35
+ }
36
+
37
+ /** @internal */
38
+ export const layer = Layer.succeed(
39
+ tag,
40
+ tag.of({
41
+ [GeneratorTypeId]: GeneratorTypeId,
42
+ fromFileInfo(info) {
43
+ return Effect.sync(() => ({ _tag: "Strong", value: fromFileInfo(info) }))
44
+ },
45
+ fromFileWeb(file) {
46
+ return Effect.sync(() => ({ _tag: "Strong", value: fromFileWeb(file) }))
47
+ }
48
+ })
49
+ )
50
+
51
+ /** @internal */
52
+ export const layerWeak = Layer.succeed(
53
+ tag,
54
+ tag.of({
55
+ [GeneratorTypeId]: GeneratorTypeId,
56
+ fromFileInfo(info) {
57
+ return Effect.sync(() => ({ _tag: "Weak", value: fromFileInfo(info) }))
58
+ },
59
+ fromFileWeb(file) {
60
+ return Effect.sync(() => ({ _tag: "Weak", value: fromFileWeb(file) }))
61
+ }
62
+ })
63
+ )
@@ -1,12 +1,15 @@
1
1
  import * as Context from "effect/Context"
2
2
  import * as Effect from "effect/Effect"
3
- import { pipe } from "effect/Function"
3
+ import { identity, pipe } from "effect/Function"
4
+ import * as Layer from "effect/Layer"
5
+ import * as Stream from "effect/Stream"
4
6
  import * as Etag from "../Etag.js"
5
7
  import * as FileSystem from "../FileSystem.js"
6
8
  import * as Headers from "../Headers.js"
7
9
  import type * as Body from "../HttpBody.js"
8
10
  import type * as Platform from "../HttpPlatform.js"
9
11
  import type * as ServerResponse from "../HttpServerResponse.js"
12
+ import * as serverResponse from "./httpServerResponse.js"
10
13
 
11
14
  /** @internal */
12
15
  export const TypeId: Platform.TypeId = Symbol.for("@effect/platform/HttpPlatform") as Platform.TypeId
@@ -33,9 +36,9 @@ export const make = (impl: {
33
36
  options?: FileSystem.StreamOptions
34
37
  ) => ServerResponse.HttpServerResponse
35
38
  }): Effect.Effect<Platform.HttpPlatform, never, FileSystem.FileSystem | Etag.Generator> =>
36
- Effect.gen(function*(_) {
37
- const fs = yield* _(FileSystem.FileSystem)
38
- const etagGen = yield* _(Etag.Generator)
39
+ Effect.gen(function*() {
40
+ const fs = yield* FileSystem.FileSystem
41
+ const etagGen = yield* Etag.Generator
39
42
 
40
43
  return tag.of({
41
44
  [TypeId]: TypeId,
@@ -83,3 +86,28 @@ export const make = (impl: {
83
86
  }
84
87
  })
85
88
  })
89
+
90
+ /** @internal */
91
+ export const layer = Layer.effect(
92
+ tag,
93
+ Effect.flatMap(FileSystem.FileSystem, (fs) =>
94
+ make({
95
+ fileResponse(path, status, statusText, headers, start, end, contentLength) {
96
+ return serverResponse.stream(
97
+ fs.stream(path, {
98
+ offset: start,
99
+ bytesToRead: end !== undefined ? end - start : undefined
100
+ }),
101
+ { contentLength, headers, status, statusText }
102
+ )
103
+ },
104
+ fileWebResponse(file, status, statusText, headers, _options) {
105
+ return serverResponse.stream(
106
+ Stream.fromReadableStream(() => file.stream() as ReadableStream<Uint8Array>, identity),
107
+ { headers, status, statusText }
108
+ )
109
+ }
110
+ }))
111
+ ).pipe(
112
+ Layer.provide(Etag.layerWeak)
113
+ )
@@ -1,5 +1,6 @@
1
1
  import type { ParseOptions } from "@effect/schema/AST"
2
2
  import type * as Schema from "@effect/schema/Schema"
3
+ import * as Context from "effect/Context"
3
4
  import * as Effect from "effect/Effect"
4
5
  import * as Effectable from "effect/Effectable"
5
6
  import { dual } from "effect/Function"
@@ -11,7 +12,7 @@ import type * as PlatformError from "../Error.js"
11
12
  import type * as FileSystem from "../FileSystem.js"
12
13
  import * as Headers from "../Headers.js"
13
14
  import type * as Body from "../HttpBody.js"
14
- import * as Platform from "../HttpPlatform.js"
15
+ import type * as Platform from "../HttpPlatform.js"
15
16
  import type * as Respondable from "../HttpServerRespondable.js"
16
17
  import type * as ServerResponse from "../HttpServerResponse.js"
17
18
  import * as Template from "../Template.js"
@@ -214,13 +215,15 @@ export const schemaJson = <A, I, R>(
214
215
  ))
215
216
  }
216
217
 
218
+ const httpPlatform = Context.GenericTag<Platform.HttpPlatform>("@effect/platform/HttpPlatform")
219
+
217
220
  /** @internal */
218
221
  export const file = (
219
222
  path: string,
220
223
  options?: (ServerResponse.Options & FileSystem.StreamOptions) | undefined
221
224
  ): Effect.Effect<ServerResponse.HttpServerResponse, PlatformError.PlatformError, Platform.HttpPlatform> =>
222
225
  Effect.flatMap(
223
- Platform.HttpPlatform,
226
+ httpPlatform,
224
227
  (platform) => platform.fileResponse(path, options)
225
228
  )
226
229
 
@@ -230,7 +233,7 @@ export const fileWeb = (
230
233
  options?: (ServerResponse.Options.WithContent & FileSystem.StreamOptions) | undefined
231
234
  ): Effect.Effect<ServerResponse.HttpServerResponse, never, Platform.HttpPlatform> =>
232
235
  Effect.flatMap(
233
- Platform.HttpPlatform,
236
+ httpPlatform,
234
237
  (platform) => platform.fileWebResponse(file, options)
235
238
  )
236
239
 
@@ -287,9 +287,7 @@ const makeFromQueue = <IE>(
287
287
  if (chunk === null) {
288
288
  parser.end()
289
289
  } else {
290
- Chunk.forEach(chunk, function(buf) {
291
- parser.write(buf)
292
- })
290
+ Chunk.forEach(chunk, parser.write)
293
291
  }
294
292
  })
295
293
  )