@effect/platform 0.48.28 → 0.49.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 (159) hide show
  1. package/README.md +12 -12
  2. package/dist/cjs/Http/App.js +13 -11
  3. package/dist/cjs/Http/App.js.map +1 -1
  4. package/dist/cjs/Http/Client.js +13 -3
  5. package/dist/cjs/Http/Client.js.map +1 -1
  6. package/dist/cjs/Http/ClientResponse.js +9 -9
  7. package/dist/cjs/Http/ClientResponse.js.map +1 -1
  8. package/dist/cjs/Http/Cookies.js +7 -7
  9. package/dist/cjs/Http/Cookies.js.map +1 -1
  10. package/dist/cjs/Http/Headers.js +7 -7
  11. package/dist/cjs/Http/Headers.js.map +1 -1
  12. package/dist/cjs/Http/IncomingMessage.js +7 -7
  13. package/dist/cjs/Http/IncomingMessage.js.map +1 -1
  14. package/dist/cjs/Http/Middleware.js +11 -1
  15. package/dist/cjs/Http/Middleware.js.map +1 -1
  16. package/dist/cjs/Http/Multiplex.js.map +1 -1
  17. package/dist/cjs/Http/Router.js +1 -6
  18. package/dist/cjs/Http/Router.js.map +1 -1
  19. package/dist/cjs/Http/UrlParams.js +13 -13
  20. package/dist/cjs/Http/UrlParams.js.map +1 -1
  21. package/dist/cjs/PlatformConfigProvider.js +2 -2
  22. package/dist/cjs/PlatformConfigProvider.js.map +1 -1
  23. package/dist/cjs/Socket.js +6 -6
  24. package/dist/cjs/Socket.js.map +1 -1
  25. package/dist/cjs/Transferable.js +1 -1
  26. package/dist/cjs/Transferable.js.map +1 -1
  27. package/dist/cjs/WorkerRunner.js.map +1 -1
  28. package/dist/cjs/internal/command.js +1 -1
  29. package/dist/cjs/internal/command.js.map +1 -1
  30. package/dist/cjs/internal/fileSystem.js +2 -2
  31. package/dist/cjs/internal/fileSystem.js.map +1 -1
  32. package/dist/cjs/internal/http/client.js +19 -16
  33. package/dist/cjs/internal/http/client.js.map +1 -1
  34. package/dist/cjs/internal/http/clientResponse.js +5 -5
  35. package/dist/cjs/internal/http/clientResponse.js.map +1 -1
  36. package/dist/cjs/internal/http/middleware.js +8 -3
  37. package/dist/cjs/internal/http/middleware.js.map +1 -1
  38. package/dist/cjs/internal/http/multipart.js +4 -4
  39. package/dist/cjs/internal/http/multipart.js.map +1 -1
  40. package/dist/cjs/internal/http/multiplex.js +2 -2
  41. package/dist/cjs/internal/http/multiplex.js.map +1 -1
  42. package/dist/cjs/internal/http/router.js +11 -11
  43. package/dist/cjs/internal/http/router.js.map +1 -1
  44. package/dist/cjs/internal/worker.js +7 -7
  45. package/dist/cjs/internal/worker.js.map +1 -1
  46. package/dist/cjs/internal/workerRunner.js +14 -13
  47. package/dist/cjs/internal/workerRunner.js.map +1 -1
  48. package/dist/dts/Command.d.ts +3 -3
  49. package/dist/dts/Command.d.ts.map +1 -1
  50. package/dist/dts/Http/App.d.ts +7 -7
  51. package/dist/dts/Http/App.d.ts.map +1 -1
  52. package/dist/dts/Http/Client.d.ts +78 -65
  53. package/dist/dts/Http/Client.d.ts.map +1 -1
  54. package/dist/dts/Http/ClientResponse.d.ts +5 -5
  55. package/dist/dts/Http/Cookies.d.ts +3 -3
  56. package/dist/dts/Http/Cookies.d.ts.map +1 -1
  57. package/dist/dts/Http/Headers.d.ts +4 -4
  58. package/dist/dts/Http/Headers.d.ts.map +1 -1
  59. package/dist/dts/Http/IncomingMessage.d.ts +4 -3
  60. package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
  61. package/dist/dts/Http/Middleware.d.ts +22 -5
  62. package/dist/dts/Http/Middleware.d.ts.map +1 -1
  63. package/dist/dts/Http/Multiplex.d.ts +22 -22
  64. package/dist/dts/Http/Multiplex.d.ts.map +1 -1
  65. package/dist/dts/Http/Router.d.ts +98 -66
  66. package/dist/dts/Http/Router.d.ts.map +1 -1
  67. package/dist/dts/Http/Server.d.ts +11 -11
  68. package/dist/dts/Http/Server.d.ts.map +1 -1
  69. package/dist/dts/Http/ServerRequest.d.ts +1 -1
  70. package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
  71. package/dist/dts/Http/TraceContext.d.ts.map +1 -1
  72. package/dist/dts/Http/UrlParams.d.ts.map +1 -1
  73. package/dist/dts/PlatformConfigProvider.d.ts.map +1 -1
  74. package/dist/dts/Socket.d.ts +10 -10
  75. package/dist/dts/Socket.d.ts.map +1 -1
  76. package/dist/dts/Transferable.d.ts.map +1 -1
  77. package/dist/dts/Worker.d.ts +6 -6
  78. package/dist/dts/Worker.d.ts.map +1 -1
  79. package/dist/dts/WorkerRunner.d.ts +5 -5
  80. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  81. package/dist/dts/internal/http/router.d.ts +1 -1
  82. package/dist/dts/internal/http/router.d.ts.map +1 -1
  83. package/dist/esm/Http/App.js +13 -11
  84. package/dist/esm/Http/App.js.map +1 -1
  85. package/dist/esm/Http/Client.js +12 -2
  86. package/dist/esm/Http/Client.js.map +1 -1
  87. package/dist/esm/Http/ClientResponse.js +5 -5
  88. package/dist/esm/Http/ClientResponse.js.map +1 -1
  89. package/dist/esm/Http/Cookies.js +7 -7
  90. package/dist/esm/Http/Cookies.js.map +1 -1
  91. package/dist/esm/Http/Headers.js +7 -7
  92. package/dist/esm/Http/Headers.js.map +1 -1
  93. package/dist/esm/Http/IncomingMessage.js +3 -3
  94. package/dist/esm/Http/IncomingMessage.js.map +1 -1
  95. package/dist/esm/Http/Middleware.js +10 -0
  96. package/dist/esm/Http/Middleware.js.map +1 -1
  97. package/dist/esm/Http/Multiplex.js.map +1 -1
  98. package/dist/esm/Http/Router.js +0 -5
  99. package/dist/esm/Http/Router.js.map +1 -1
  100. package/dist/esm/Http/UrlParams.js +13 -13
  101. package/dist/esm/Http/UrlParams.js.map +1 -1
  102. package/dist/esm/PlatformConfigProvider.js +2 -2
  103. package/dist/esm/PlatformConfigProvider.js.map +1 -1
  104. package/dist/esm/Socket.js +6 -6
  105. package/dist/esm/Socket.js.map +1 -1
  106. package/dist/esm/Transferable.js +1 -1
  107. package/dist/esm/Transferable.js.map +1 -1
  108. package/dist/esm/WorkerRunner.js.map +1 -1
  109. package/dist/esm/internal/command.js +1 -1
  110. package/dist/esm/internal/command.js.map +1 -1
  111. package/dist/esm/internal/fileSystem.js +2 -2
  112. package/dist/esm/internal/fileSystem.js.map +1 -1
  113. package/dist/esm/internal/http/client.js +18 -13
  114. package/dist/esm/internal/http/client.js.map +1 -1
  115. package/dist/esm/internal/http/clientResponse.js +2 -2
  116. package/dist/esm/internal/http/clientResponse.js.map +1 -1
  117. package/dist/esm/internal/http/middleware.js +7 -2
  118. package/dist/esm/internal/http/middleware.js.map +1 -1
  119. package/dist/esm/internal/http/multipart.js +4 -4
  120. package/dist/esm/internal/http/multipart.js.map +1 -1
  121. package/dist/esm/internal/http/multiplex.js +2 -2
  122. package/dist/esm/internal/http/multiplex.js.map +1 -1
  123. package/dist/esm/internal/http/router.js +10 -9
  124. package/dist/esm/internal/http/router.js.map +1 -1
  125. package/dist/esm/internal/worker.js +7 -7
  126. package/dist/esm/internal/worker.js.map +1 -1
  127. package/dist/esm/internal/workerRunner.js +14 -13
  128. package/dist/esm/internal/workerRunner.js.map +1 -1
  129. package/package.json +3 -3
  130. package/src/Command.ts +3 -3
  131. package/src/Http/App.ts +44 -41
  132. package/src/Http/Client.ts +105 -90
  133. package/src/Http/ClientResponse.ts +7 -7
  134. package/src/Http/Cookies.ts +9 -9
  135. package/src/Http/Headers.ts +12 -12
  136. package/src/Http/IncomingMessage.ts +16 -6
  137. package/src/Http/Middleware.ts +30 -6
  138. package/src/Http/Multiplex.ts +38 -38
  139. package/src/Http/Router.ts +156 -141
  140. package/src/Http/Server.ts +16 -16
  141. package/src/Http/ServerRequest.ts +1 -1
  142. package/src/Http/UrlParams.ts +15 -15
  143. package/src/PlatformConfigProvider.ts +2 -2
  144. package/src/Socket.ts +6 -6
  145. package/src/Transferable.ts +1 -1
  146. package/src/Worker.ts +9 -9
  147. package/src/WorkerRunner.ts +5 -4
  148. package/src/internal/command.ts +12 -6
  149. package/src/internal/fileSystem.ts +2 -2
  150. package/src/internal/http/client.ts +221 -204
  151. package/src/internal/http/clientResponse.ts +2 -2
  152. package/src/internal/http/middleware.ts +24 -1
  153. package/src/internal/http/multipart.ts +4 -4
  154. package/src/internal/http/multiplex.ts +54 -54
  155. package/src/internal/http/router.ts +146 -116
  156. package/src/internal/http/server.ts +17 -17
  157. package/src/internal/http/serverRequest.ts +1 -1
  158. package/src/internal/worker.ts +14 -14
  159. package/src/internal/workerRunner.ts +20 -16
@@ -1,5 +1,6 @@
1
1
  import * as Schema from "@effect/schema/Schema"
2
2
  import * as Serializable from "@effect/schema/Serializable"
3
+ import * as Array from "effect/Array"
3
4
  import * as Cause from "effect/Cause"
4
5
  import * as Channel from "effect/Channel"
5
6
  import * as Chunk from "effect/Chunk"
@@ -13,7 +14,6 @@ import * as Layer from "effect/Layer"
13
14
  import * as Option from "effect/Option"
14
15
  import * as Pool from "effect/Pool"
15
16
  import * as Queue from "effect/Queue"
16
- import * as ReadonlyArray from "effect/ReadonlyArray"
17
17
  import * as Schedule from "effect/Schedule"
18
18
  import type * as Scope from "effect/Scope"
19
19
  import * as Stream from "effect/Stream"
@@ -64,7 +64,7 @@ export const makeManager = Effect.gen(function*(_) {
64
64
  let idCounter = 0
65
65
  return WorkerManager.of({
66
66
  [WorkerManagerTypeId]: WorkerManagerTypeId,
67
- spawn<I, E, O>({
67
+ spawn<I, O, E>({
68
68
  encode,
69
69
  initialMessage,
70
70
  permits = 1,
@@ -112,7 +112,7 @@ export const makeManager = Effect.gen(function*(_) {
112
112
  Queue.take(backing.queue),
113
113
  Effect.flatMap((msg) => {
114
114
  if (msg[0] === 0) {
115
- return Deferred.complete(readyLatch, Effect.unit)
115
+ return Deferred.complete(readyLatch, Effect.void)
116
116
  }
117
117
  return handleMessage(msg[1])
118
118
  }),
@@ -153,7 +153,7 @@ export const makeManager = Effect.gen(function*(_) {
153
153
  const handleMessage = (response: Worker.Worker.Response<E, O>) =>
154
154
  Effect.suspend(() => {
155
155
  const queue = requestMap.get(response[0])
156
- if (!queue) return Effect.unit
156
+ if (!queue) return Effect.void
157
157
 
158
158
  switch (response[1]) {
159
159
  // data
@@ -210,7 +210,7 @@ export const makeManager = Effect.gen(function*(_) {
210
210
  exit: Exit.Exit<unknown, unknown>
211
211
  ) => {
212
212
  const release = Effect.zipRight(
213
- Deferred.complete(deferred, Effect.unit),
213
+ Deferred.complete(deferred, Effect.void),
214
214
  Effect.sync(() => requestMap.delete(id))
215
215
  )
216
216
  return Exit.isFailure(exit) ?
@@ -229,7 +229,7 @@ export const makeManager = Effect.gen(function*(_) {
229
229
  .flatMap(
230
230
  Queue.take(queue),
231
231
  Exit.match({
232
- onFailure: (cause) => Cause.isEmpty(cause) ? Channel.unit : Channel.failCause(cause),
232
+ onFailure: (cause) => Cause.isEmpty(cause) ? Channel.void : Channel.failCause(cause),
233
233
  onSuccess: (value) => Channel.flatMap(Channel.write(Chunk.unsafeFromArray(value)), () => loop)
234
234
  })
235
235
  )
@@ -240,7 +240,7 @@ export const makeManager = Effect.gen(function*(_) {
240
240
  const executeEffect = (request: I) =>
241
241
  Effect.acquireUseRelease(
242
242
  executeAcquire(request),
243
- ([, queue]) => Effect.flatMap(Queue.take(queue), Exit.map(ReadonlyArray.unsafeGet(0))),
243
+ ([, queue]) => Effect.flatMap(Queue.take(queue), Exit.map(Array.unsafeGet(0))),
244
244
  executeRelease
245
245
  )
246
246
 
@@ -251,7 +251,7 @@ export const makeManager = Effect.gen(function*(_) {
251
251
  pipe(
252
252
  Effect.suspend(() => {
253
253
  const result = requestMap.get(id)
254
- if (!result) return Effect.unit
254
+ if (!result) return Effect.void
255
255
  const transferables = transfers(request)
256
256
  const spanTuple = Option.getOrUndefined(
257
257
  Option.map(span, (span) => [span.traceId, span.spanId, span.sampled] as const)
@@ -296,14 +296,14 @@ export const makeManager = Effect.gen(function*(_) {
296
296
  export const layerManager = Layer.effect(WorkerManager, makeManager)
297
297
 
298
298
  /** @internal */
299
- export const makePool = <I, E, O>(
299
+ export const makePool = <I, O, E>(
300
300
  options: Worker.WorkerPool.Options<I>
301
301
  ) =>
302
302
  Effect.gen(function*(_) {
303
303
  const manager = yield* _(WorkerManager)
304
- const workers = new Set<Worker.Worker<I, E, O>>()
304
+ const workers = new Set<Worker.Worker<I, O, E>>()
305
305
  const acquire = pipe(
306
- manager.spawn<I, E, O>(options),
306
+ manager.spawn<I, O, E>(options),
307
307
  Effect.tap((worker) => Effect.sync(() => workers.add(worker))),
308
308
  Effect.tap((worker) => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))),
309
309
  options.onCreate ? Effect.tap(options.onCreate) : identity
@@ -321,7 +321,7 @@ export const makePool = <I, E, O>(
321
321
  size: options.size
322
322
  })
323
323
  )
324
- const pool: Worker.WorkerPool<I, E, O> = {
324
+ const pool: Worker.WorkerPool<I, O, E> = {
325
325
  backing,
326
326
  broadcast: (message: I) =>
327
327
  Effect.forEach(workers, (worker) => worker.executeEffect(message), {
@@ -346,8 +346,8 @@ export const makePool = <I, E, O>(
346
346
  })
347
347
 
348
348
  /** @internal */
349
- export const makePoolLayer = <Tag, I, E, O>(
350
- tag: Context.Tag<Tag, Worker.WorkerPool<I, E, O>>,
349
+ export const makePoolLayer = <Tag, I, O, E>(
350
+ tag: Context.Tag<Tag, Worker.WorkerPool<I, O, E>>,
351
351
  options: Worker.WorkerPool.Options<I>
352
352
  ) => Layer.scoped(tag, makePool(options))
353
353
 
@@ -32,13 +32,13 @@ export const PlatformRunner = Context.GenericTag<WorkerRunner.PlatformRunner>(
32
32
  /** @internal */
33
33
  export const make = <I, R, E, O>(
34
34
  process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
35
- options?: WorkerRunner.Runner.Options<I, E, O>
35
+ options?: WorkerRunner.Runner.Options<I, O, E>
36
36
  ) =>
37
37
  Effect.gen(function*(_) {
38
38
  const scope = yield* _(Scope.fork(yield* _(Effect.scope), ExecutionStrategy.parallel))
39
39
  const fiber = Option.getOrThrow(Fiber.getCurrentFiber())
40
40
  const shutdown = Effect.zipRight(
41
- Scope.close(scope, Exit.unit),
41
+ Scope.close(scope, Exit.void),
42
42
  Fiber.interruptFork(fiber)
43
43
  )
44
44
  const platform = yield* _(PlatformRunner)
@@ -51,19 +51,20 @@ export const make = <I, R, E, O>(
51
51
  yield* _(
52
52
  Queue.take(backing.queue),
53
53
  options?.decode ?
54
- Effect.flatMap((req): Effect.Effect<Worker.Worker.Request<I>, WorkerError> => {
54
+ Effect.flatMap((msg): Effect.Effect<readonly [portId: number, Worker.Worker.Request<I>], WorkerError> => {
55
+ const req = msg[1]
55
56
  if (req[1] === 1) {
56
- return Effect.succeed(req)
57
+ return Effect.succeed(msg)
57
58
  }
58
59
 
59
- return Effect.map(options.decode!(req[2]), (data) => [req[0], req[1], data, req[3]])
60
+ return Effect.map(options.decode!(req[2]), (data) => [msg[0], [req[0], req[1], data, req[3]]])
60
61
  }) :
61
62
  identity,
62
- Effect.tap((req) => {
63
+ Effect.tap(([portId, req]) => {
63
64
  const id = req[0]
64
65
  if (req[1] === 1) {
65
66
  const fiber = fiberMap.get(id)
66
- if (!fiber) return Effect.unit
67
+ if (!fiber) return Effect.void
67
68
  return Fiber.interrupt(fiber)
68
69
  }
69
70
 
@@ -79,7 +80,7 @@ export const make = <I, R, E, O>(
79
80
  ? Effect.provideService(options.encodeOutput(req[2], data), Transferable.Collector, collector)
80
81
  : Effect.succeed(data),
81
82
  Effect.flatMap((payload) =>
82
- backing.send([id, 0, [payload]], [
83
+ backing.send(portId, [id, 0, [payload]], [
83
84
  ...transfers,
84
85
  ...collector.unsafeRead()
85
86
  ])
@@ -93,7 +94,7 @@ export const make = <I, R, E, O>(
93
94
  if (options?.encodeOutput === undefined) {
94
95
  const payload = Chunk.toReadonlyArray(data)
95
96
  const transfers = options?.transfers ? payload.flatMap(options.transfers) : undefined
96
- return backing.send([id, 0, payload], transfers)
97
+ return backing.send(portId, [id, 0, payload], transfers)
97
98
  }
98
99
 
99
100
  const transfers: Array<unknown> = []
@@ -110,12 +111,12 @@ export const make = <I, R, E, O>(
110
111
  Effect.provideService(Transferable.Collector, collector),
111
112
  Effect.flatMap((payload) => {
112
113
  collector.unsafeRead().forEach((transfer) => transfers.push(transfer))
113
- return backing.send([id, 0, payload], transfers)
114
+ return backing.send(portId, [id, 0, payload], transfers)
114
115
  })
115
116
  )
116
117
  }),
117
118
  Stream.runDrain,
118
- Effect.andThen(backing.send([id, 1]))
119
+ Effect.andThen(backing.send(portId, [id, 1]))
119
120
  )
120
121
 
121
122
  if (req[3]) {
@@ -131,7 +132,8 @@ export const make = <I, R, E, O>(
131
132
 
132
133
  return effect
133
134
  }),
134
- Effect.catchIf(isWorkerError, (error) => backing.send([id, 3, WorkerError.encodeCause(Cause.fail(error))])),
135
+ Effect.catchIf(isWorkerError, (error) =>
136
+ backing.send(portId, [id, 3, WorkerError.encodeCause(Cause.fail(error))])),
135
137
  Effect.catchAllCause((cause) =>
136
138
  Either.match(Cause.failureOrCause(cause), {
137
139
  onLeft: (error) => {
@@ -146,15 +148,17 @@ export const make = <I, R, E, O>(
146
148
  )
147
149
  : Effect.succeed(error),
148
150
  Effect.flatMap((payload) =>
149
- backing.send([id, 2, payload as any], [
151
+ backing.send(portId, [id, 2, payload as any], [
150
152
  ...transfers,
151
153
  ...collector.unsafeRead()
152
154
  ])
153
155
  ),
154
- Effect.catchAllCause((cause) => backing.send([id, 3, WorkerError.encodeCause(cause)]))
156
+ Effect.catchAllCause((cause) =>
157
+ backing.send(portId, [id, 3, WorkerError.encodeCause(cause)])
158
+ )
155
159
  )
156
160
  },
157
- onRight: (cause) => backing.send([id, 3, WorkerError.encodeCause(cause)])
161
+ onRight: (cause) => backing.send(portId, [id, 3, WorkerError.encodeCause(cause)])
158
162
  })
159
163
  ),
160
164
  Effect.ensuring(Effect.sync(() => fiberMap.delete(id))),
@@ -170,7 +174,7 @@ export const make = <I, R, E, O>(
170
174
  /** @internal */
171
175
  export const layer = <I, R, E, O>(
172
176
  process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
173
- options?: WorkerRunner.Runner.Options<I, E, O>
177
+ options?: WorkerRunner.Runner.Options<I, O, E>
174
178
  ): Layer.Layer<never, WorkerError, WorkerRunner.PlatformRunner | R> => Layer.scopedDiscard(make(process, options))
175
179
 
176
180
  /** @internal */