@effect/platform 0.78.1 → 0.79.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 (54) hide show
  1. package/README.md +15 -51
  2. package/dist/cjs/HttpApiBuilder.js +1 -1
  3. package/dist/cjs/HttpApiClient.js +1 -1
  4. package/dist/cjs/HttpApiClient.js.map +1 -1
  5. package/dist/cjs/HttpClient.js.map +1 -1
  6. package/dist/cjs/HttpClientResponse.js.map +1 -1
  7. package/dist/cjs/HttpMethod.js +1 -2
  8. package/dist/cjs/HttpMethod.js.map +1 -1
  9. package/dist/cjs/UrlParams.js +2 -0
  10. package/dist/cjs/UrlParams.js.map +1 -1
  11. package/dist/cjs/internal/httpClient.js +126 -13
  12. package/dist/cjs/internal/httpClient.js.map +1 -1
  13. package/dist/cjs/internal/httpClientResponse.js +1 -1
  14. package/dist/cjs/internal/httpClientResponse.js.map +1 -1
  15. package/dist/cjs/internal/workerRunner.js +9 -2
  16. package/dist/cjs/internal/workerRunner.js.map +1 -1
  17. package/dist/dts/HttpApiBuilder.d.ts +1 -1
  18. package/dist/dts/HttpApiClient.d.ts +3 -4
  19. package/dist/dts/HttpApiClient.d.ts.map +1 -1
  20. package/dist/dts/HttpClient.d.ts +11 -12
  21. package/dist/dts/HttpClient.d.ts.map +1 -1
  22. package/dist/dts/HttpClientResponse.d.ts +1 -2
  23. package/dist/dts/HttpClientResponse.d.ts.map +1 -1
  24. package/dist/dts/HttpMethod.d.ts +1 -2
  25. package/dist/dts/HttpMethod.d.ts.map +1 -1
  26. package/dist/dts/UrlParams.d.ts +2 -0
  27. package/dist/dts/UrlParams.d.ts.map +1 -1
  28. package/dist/dts/internal/httpClient.d.ts +8 -9
  29. package/dist/dts/internal/httpClient.d.ts.map +1 -1
  30. package/dist/esm/HttpApiBuilder.js +1 -1
  31. package/dist/esm/HttpApiClient.js +1 -1
  32. package/dist/esm/HttpApiClient.js.map +1 -1
  33. package/dist/esm/HttpClient.js.map +1 -1
  34. package/dist/esm/HttpClientResponse.js.map +1 -1
  35. package/dist/esm/HttpMethod.js +1 -2
  36. package/dist/esm/HttpMethod.js.map +1 -1
  37. package/dist/esm/UrlParams.js +2 -0
  38. package/dist/esm/UrlParams.js.map +1 -1
  39. package/dist/esm/internal/httpClient.js +125 -12
  40. package/dist/esm/internal/httpClient.js.map +1 -1
  41. package/dist/esm/internal/httpClientResponse.js +1 -1
  42. package/dist/esm/internal/httpClientResponse.js.map +1 -1
  43. package/dist/esm/internal/workerRunner.js +9 -2
  44. package/dist/esm/internal/workerRunner.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/HttpApiBuilder.ts +1 -1
  47. package/src/HttpApiClient.ts +4 -6
  48. package/src/HttpClient.ts +11 -13
  49. package/src/HttpClientResponse.ts +1 -2
  50. package/src/HttpMethod.ts +1 -2
  51. package/src/UrlParams.ts +2 -0
  52. package/src/internal/httpClient.ts +176 -52
  53. package/src/internal/httpClientResponse.ts +1 -1
  54. package/src/internal/workerRunner.ts +13 -4
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["Cause","Chunk","Context","Deferred","Effect","Either","Fiber","FiberId","pipe","Layer","Schema","Stream","Transferable","isWorkerError","WorkerError","PlatformRunnerTypeId","Symbol","for","PlatformRunner","GenericTag","CloseLatch","Reference","defaultValue","unsafeMake","none","layerCloseLatch","effect","make","fnUntraced","process","options","platform","closeLatch","backing","start","fiberMap","Map","run","portId","id","kind","data","span","fiber","get","void","interrupt","withFiberRuntime","set","decode","succeed","flatMap","input","collector","unsafeMakeCollector","stream","isEffect","out","encodeOutput","provideService","Collector","payload","send","unsafeRead","runForEachChunk","chunk","undefined","toReadonlyArray","unsafeClear","forEach","andThen","withParentSpan","_tag","traceId","spanId","sampled","context","empty","uninterruptibleMask","restore","catchIf","error","encodeCause","fail","catchAllCause","cause","match","failureOrCause","onLeft","encodeError","onRight","ensuring","sync","delete","layer","scopedDiscard","provide","makeSerialized","schema","handlers","gen","scope","parseRequest","decodeUnknown","request","result","isLayer","buildWithScope","_","merge","provideContext","message","mapError","reason","serializeFailure","serializeSuccess","layerSerialized","launch","scopedWith","never","raceFirst","await"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"workerRunner.js","names":["Cause","Chunk","Context","Deferred","Effect","Either","Fiber","FiberId","pipe","Layer","Schema","Stream","Transferable","isWorkerError","WorkerError","PlatformRunnerTypeId","Symbol","for","PlatformRunner","GenericTag","CloseLatch","Reference","defaultValue","unsafeMake","none","layerCloseLatch","effect","make","fnUntraced","process","options","fiber","withFiberRuntime","succeed","platform","closeLatch","backing","start","fiberMap","Map","await","onExit","currentScheduler","scheduleTask","unsafeInterruptAsFork","id","void","forkScoped","run","portId","kind","data","span","get","interrupt","set","decode","flatMap","input","collector","unsafeMakeCollector","stream","isEffect","out","encodeOutput","provideService","Collector","payload","send","unsafeRead","runForEachChunk","chunk","undefined","toReadonlyArray","unsafeClear","forEach","andThen","withParentSpan","_tag","traceId","spanId","sampled","context","empty","uninterruptibleMask","restore","catchIf","error","encodeCause","fail","catchAllCause","cause","match","failureOrCause","onLeft","encodeError","onRight","ensuring","sync","delete","layer","scopedDiscard","provide","makeSerialized","schema","handlers","gen","scope","parseRequest","decodeUnknown","request","result","isLayer","buildWithScope","_","merge","provideContext","message","mapError","reason","serializeFailure","serializeSuccess","layerSerialized","launch","scopedWith","provideMerge"],"sources":["../../../src/internal/workerRunner.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.78.1",
3
+ "version": "0.79.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": "^3.13.8"
17
+ "effect": "^3.13.9"
18
18
  },
19
19
  "publishConfig": {
20
20
  "provenance": true
@@ -1045,7 +1045,7 @@ export const securityDecode = <Security extends HttpApiSecurity.HttpApiSecurity>
1045
1045
  *
1046
1046
  * You can use this api before returning a response from an endpoint handler.
1047
1047
  *
1048
- * ```ts
1048
+ * ```ts skip-type-checking
1049
1049
  * handlers.handle(
1050
1050
  * "authenticate",
1051
1051
  * (_) => HttpApiBuilder.securitySetCookie(security, "secret123")
@@ -10,7 +10,6 @@ import * as ParseResult from "effect/ParseResult"
10
10
  import type * as Predicate from "effect/Predicate"
11
11
  import * as Schema from "effect/Schema"
12
12
  import type * as AST from "effect/SchemaAST"
13
- import type { Scope } from "effect/Scope"
14
13
  import type { Simplify } from "effect/Types"
15
14
  import * as HttpApi from "./HttpApi.js"
16
15
  import type { HttpApiEndpoint } from "./HttpApiEndpoint.js"
@@ -130,7 +129,7 @@ const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any, ApiEr
130
129
  }) => void
131
130
  readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined
132
131
  readonly transformResponse?:
133
- | ((effect: Effect.Effect<unknown, unknown, Scope>) => Effect.Effect<unknown, unknown, Scope>)
132
+ | ((effect: Effect.Effect<unknown, unknown>) => Effect.Effect<unknown, unknown>)
134
133
  | undefined
135
134
  readonly baseUrl?: string | undefined
136
135
  }
@@ -223,7 +222,6 @@ const makeClient = <ApiId extends string, Groups extends HttpApiGroup.Any, ApiEr
223
222
  : options.transformResponse(decodeResponse(response)))
224
223
  return request?.withResponse === true ? [value, response] : value
225
224
  }).pipe(
226
- Effect.scoped,
227
225
  Effect.mapInputContext((input) => Context.merge(context, input))
228
226
  )
229
227
 
@@ -244,7 +242,7 @@ export const make = <ApiId extends string, Groups extends HttpApiGroup.Any, ApiE
244
242
  options?: {
245
243
  readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined
246
244
  readonly transformResponse?:
247
- | ((effect: Effect.Effect<unknown, unknown, Scope>) => Effect.Effect<unknown, unknown, Scope>)
245
+ | ((effect: Effect.Effect<unknown, unknown>) => Effect.Effect<unknown, unknown>)
248
246
  | undefined
249
247
  readonly baseUrl?: string | undefined
250
248
  }
@@ -282,7 +280,7 @@ export const group = <
282
280
  options?: {
283
281
  readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined
284
282
  readonly transformResponse?:
285
- | ((effect: Effect.Effect<unknown, unknown, Scope>) => Effect.Effect<unknown, unknown, Scope>)
283
+ | ((effect: Effect.Effect<unknown, unknown>) => Effect.Effect<unknown, unknown>)
286
284
  | undefined
287
285
  readonly baseUrl?: string | undefined
288
286
  }
@@ -324,7 +322,7 @@ export const endpoint = <
324
322
  options?: {
325
323
  readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined
326
324
  readonly transformResponse?:
327
- | ((effect: Effect.Effect<unknown, unknown, Scope>) => Effect.Effect<unknown, unknown, Scope>)
325
+ | ((effect: Effect.Effect<unknown, unknown>) => Effect.Effect<unknown, unknown>)
328
326
  | undefined
329
327
  readonly baseUrl?: string | undefined
330
328
  }
package/src/HttpClient.ts CHANGED
@@ -11,7 +11,6 @@ import type { Pipeable } from "effect/Pipeable"
11
11
  import type * as Predicate from "effect/Predicate"
12
12
  import type { Ref } from "effect/Ref"
13
13
  import type * as Schedule from "effect/Schedule"
14
- import type * as Scope from "effect/Scope"
15
14
  import type { NoExcessProperties, NoInfer } from "effect/Types"
16
15
  import type { Cookies } from "./Cookies.js"
17
16
  import type * as Error from "./HttpClientError.js"
@@ -35,7 +34,7 @@ export type TypeId = typeof TypeId
35
34
  * @since 1.0.0
36
35
  * @category models
37
36
  */
38
- export interface HttpClient extends HttpClient.With<Error.HttpClientError, Scope.Scope> {}
37
+ export interface HttpClient extends HttpClient.With<Error.HttpClientError> {}
39
38
 
40
39
  /**
41
40
  * @since 1.0.0
@@ -45,7 +44,7 @@ export declare namespace HttpClient {
45
44
  * @since 1.0.0
46
45
  * @category models
47
46
  */
48
- export interface With<E, R> extends Pipeable, Inspectable {
47
+ export interface With<E, R = never> extends Pipeable, Inspectable {
49
48
  readonly [TypeId]: TypeId
50
49
  readonly execute: (
51
50
  request: ClientRequest.HttpClientRequest
@@ -110,8 +109,7 @@ export const HttpClient: Context.Tag<HttpClient, HttpClient> = internal.tag
110
109
  */
111
110
  export const execute: (
112
111
  request: ClientRequest.HttpClientRequest
113
- ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError, Scope.Scope | HttpClient> =
114
- internal.execute
112
+ ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError, HttpClient> = internal.execute
115
113
 
116
114
  /**
117
115
  * @since 1.0.0
@@ -123,7 +121,7 @@ export const get: (
123
121
  ) => Effect.Effect<
124
122
  ClientResponse.HttpClientResponse,
125
123
  Error.HttpClientError,
126
- Scope.Scope | HttpClient
124
+ HttpClient
127
125
  > = internal.get
128
126
 
129
127
  /**
@@ -136,7 +134,7 @@ export const head: (
136
134
  ) => Effect.Effect<
137
135
  ClientResponse.HttpClientResponse,
138
136
  Error.HttpClientError,
139
- Scope.Scope | HttpClient
137
+ HttpClient
140
138
  > = internal.head
141
139
 
142
140
  /**
@@ -149,7 +147,7 @@ export const post: (
149
147
  ) => Effect.Effect<
150
148
  ClientResponse.HttpClientResponse,
151
149
  Error.HttpClientError,
152
- Scope.Scope | HttpClient
150
+ HttpClient
153
151
  > = internal.post
154
152
 
155
153
  /**
@@ -162,7 +160,7 @@ export const patch: (
162
160
  ) => Effect.Effect<
163
161
  ClientResponse.HttpClientResponse,
164
162
  Error.HttpClientError,
165
- Scope.Scope | HttpClient
163
+ HttpClient
166
164
  > = internal.patch
167
165
 
168
166
  /**
@@ -175,7 +173,7 @@ export const put: (
175
173
  ) => Effect.Effect<
176
174
  ClientResponse.HttpClientResponse,
177
175
  Error.HttpClientError,
178
- Scope.Scope | HttpClient
176
+ HttpClient
179
177
  > = internal.put
180
178
 
181
179
  /**
@@ -188,7 +186,7 @@ export const del: (
188
186
  ) => Effect.Effect<
189
187
  ClientResponse.HttpClientResponse,
190
188
  Error.HttpClientError,
191
- Scope.Scope | HttpClient
189
+ HttpClient
192
190
  > = internal.del
193
191
 
194
192
  /**
@@ -201,7 +199,7 @@ export const options: (
201
199
  ) => Effect.Effect<
202
200
  ClientResponse.HttpClientResponse,
203
201
  Error.HttpClientError,
204
- Scope.Scope | HttpClient
202
+ HttpClient
205
203
  > = internal.options
206
204
 
207
205
  /**
@@ -414,7 +412,7 @@ export const make: (
414
412
  url: URL,
415
413
  signal: AbortSignal,
416
414
  fiber: RuntimeFiber<ClientResponse.HttpClientResponse, Error.HttpClientError>
417
- ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError, Scope.Scope>
415
+ ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError>
418
416
  ) => HttpClient = internal.make
419
417
 
420
418
  /**
@@ -5,7 +5,6 @@ import type * as Effect from "effect/Effect"
5
5
  import type * as ParseResult from "effect/ParseResult"
6
6
  import type * as Schema from "effect/Schema"
7
7
  import type { ParseOptions } from "effect/SchemaAST"
8
- import type * as Scope from "effect/Scope"
9
8
  import type * as Stream from "effect/Stream"
10
9
  import type { Unify } from "effect/Unify"
11
10
  import type * as Cookies from "./Cookies.js"
@@ -103,7 +102,7 @@ export const schemaNoBody: <
103
102
  */
104
103
  export const stream: <E, R>(
105
104
  effect: Effect.Effect<HttpClientResponse, E, R>
106
- ) => Stream.Stream<Uint8Array, Error.ResponseError | E, Exclude<R, Scope.Scope>> = internal.stream
105
+ ) => Stream.Stream<Uint8Array, Error.ResponseError | E, R> = internal.stream
107
106
 
108
107
  /**
109
108
  * @since 1.0.0
package/src/HttpMethod.ts CHANGED
@@ -42,10 +42,9 @@ export const all: ReadonlySet<HttpMethod> = new Set(["GET", "POST", "PUT", "DELE
42
42
  /**
43
43
  * Tests if a value is a `HttpMethod`.
44
44
  *
45
- * @param input - The value to test.
46
- *
47
45
  * @example
48
46
  * ```ts
47
+ * import * as assert from "node:assert"
49
48
  * import { HttpMethod } from "@effect/platform"
50
49
  *
51
50
  * assert.deepStrictEqual(HttpMethod.isHttpMethod("GET"), true)
package/src/UrlParams.ts CHANGED
@@ -281,6 +281,7 @@ const baseUrl = (): string | undefined => {
281
281
  *
282
282
  * @example
283
283
  * ```ts
284
+ * import * as assert from "node:assert"
284
285
  * import { UrlParams } from "@effect/platform"
285
286
  *
286
287
  * const urlParams = UrlParams.fromInput({ a: 1, b: true, c: "string", e: [1, 2, 3] })
@@ -335,6 +336,7 @@ export const schemaJson = <A, I, R>(schema: Schema.Schema<A, I, R>, options?: Pa
335
336
  *
336
337
  * @example
337
338
  * ```ts
339
+ * import * as assert from "node:assert"
338
340
  * import { Effect, Schema } from "effect"
339
341
  * import { UrlParams } from "@effect/platform"
340
342
  *
@@ -1,6 +1,7 @@
1
1
  import * as Cause from "effect/Cause"
2
2
  import * as Context from "effect/Context"
3
3
  import * as Effect from "effect/Effect"
4
+ import * as Exit from "effect/Exit"
4
5
  import type * as Fiber from "effect/Fiber"
5
6
  import * as FiberRef from "effect/FiberRef"
6
7
  import { constFalse, dual } from "effect/Function"
@@ -11,7 +12,7 @@ import { pipeArguments } from "effect/Pipeable"
11
12
  import * as Predicate from "effect/Predicate"
12
13
  import * as Ref from "effect/Ref"
13
14
  import * as Schedule from "effect/Schedule"
14
- import * as Scope from "effect/Scope"
15
+ import * as Stream from "effect/Stream"
15
16
  import type { NoExcessProperties, NoInfer } from "effect/Types"
16
17
  import * as Cookies from "../Cookies.js"
17
18
  import * as Headers from "../Headers.js"
@@ -19,6 +20,7 @@ import type * as Client from "../HttpClient.js"
19
20
  import * as Error from "../HttpClientError.js"
20
21
  import type * as ClientRequest from "../HttpClientRequest.js"
21
22
  import type * as ClientResponse from "../HttpClientResponse.js"
23
+ import * as IncomingMessage from "../HttpIncomingMessage.js"
22
24
  import * as TraceContext from "../HttpTraceContext.js"
23
25
  import * as UrlParams from "../UrlParams.js"
24
26
  import * as internalRequest from "./httpClientRequest.js"
@@ -123,6 +125,38 @@ export const makeWith = <E2, R2, E, R>(
123
125
  return self
124
126
  }
125
127
 
128
+ const responseRegistry = globalValue(
129
+ "@effect/platform/HttpClient/responseRegistry",
130
+ () => {
131
+ if ("FinalizationRegistry" in globalThis && globalThis.FinalizationRegistry) {
132
+ const registry = new FinalizationRegistry((controller: AbortController) => {
133
+ controller.abort()
134
+ })
135
+ return {
136
+ register(response: ClientResponse.HttpClientResponse, controller: AbortController) {
137
+ registry.register(response, controller, response)
138
+ },
139
+ unregister(response: ClientResponse.HttpClientResponse) {
140
+ registry.unregister(response)
141
+ }
142
+ }
143
+ }
144
+
145
+ const timers = new Map<ClientResponse.HttpClientResponse, any>()
146
+ return {
147
+ register(response: ClientResponse.HttpClientResponse, controller: AbortController) {
148
+ timers.set(response, setTimeout(() => controller.abort(), 5000))
149
+ },
150
+ unregister(response: ClientResponse.HttpClientResponse) {
151
+ const timer = timers.get(response)
152
+ if (timer === undefined) return
153
+ clearTimeout(timer)
154
+ timers.delete(response)
155
+ }
156
+ }
157
+ }
158
+ )
159
+
126
160
  /** @internal */
127
161
  export const make = (
128
162
  f: (
@@ -130,14 +164,12 @@ export const make = (
130
164
  url: URL,
131
165
  signal: AbortSignal,
132
166
  fiber: Fiber.RuntimeFiber<ClientResponse.HttpClientResponse, Error.HttpClientError>
133
- ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError, Scope.Scope>
167
+ ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.HttpClientError>
134
168
  ): Client.HttpClient =>
135
169
  makeWith((effect) =>
136
170
  Effect.flatMap(effect, (request) =>
137
171
  Effect.withFiberRuntime((fiber) => {
138
- const scope = Context.unsafeGet(fiber.getFiberRef(FiberRef.currentContext), Scope.Scope)
139
172
  const controller = new AbortController()
140
- const addAbort = Scope.addFinalizer(scope, Effect.sync(() => controller.abort()))
141
173
  const urlResult = UrlParams.makeUrl(request.url, request.urlParams, request.hash)
142
174
  if (urlResult._tag === "Left") {
143
175
  return Effect.fail(new Error.RequestError({ request, reason: "InvalidUrl", cause: urlResult.left }))
@@ -146,60 +178,152 @@ export const make = (
146
178
  const tracerDisabled = !fiber.getFiberRef(FiberRef.currentTracerEnabled) ||
147
179
  fiber.getFiberRef(currentTracerDisabledWhen)(request)
148
180
  if (tracerDisabled) {
149
- return Effect.zipRight(
150
- addAbort,
151
- f(request, url, controller.signal, fiber)
181
+ return Effect.uninterruptibleMask((restore) =>
182
+ Effect.matchCauseEffect(restore(f(request, url, controller.signal, fiber)), {
183
+ onSuccess(response) {
184
+ responseRegistry.register(response, controller)
185
+ return Effect.succeed(new InterruptibleResponse(response, controller))
186
+ },
187
+ onFailure(cause) {
188
+ if (Cause.isInterrupted(cause)) {
189
+ controller.abort()
190
+ }
191
+ return Effect.failCause(cause)
192
+ }
193
+ })
152
194
  )
153
195
  }
154
- return Effect.zipRight(
155
- addAbort,
156
- Effect.useSpan(
157
- `http.client ${request.method}`,
158
- { kind: "client", captureStackTrace: false },
159
- (span) => {
160
- span.attribute("http.request.method", request.method)
161
- span.attribute("server.address", url.origin)
162
- if (url.port !== "") {
163
- span.attribute("server.port", +url.port)
164
- }
165
- span.attribute("url.full", url.toString())
166
- span.attribute("url.path", url.pathname)
167
- span.attribute("url.scheme", url.protocol.slice(0, -1))
168
- const query = url.search.slice(1)
169
- if (query !== "") {
170
- span.attribute("url.query", query)
171
- }
172
- const redactedHeaderNames = fiber.getFiberRef(Headers.currentRedactedNames)
173
- const redactedHeaders = Headers.redact(request.headers, redactedHeaderNames)
174
- for (const name in redactedHeaders) {
175
- span.attribute(`http.request.header.${name}`, String(redactedHeaders[name]))
176
- }
177
- request = fiber.getFiberRef(currentTracerPropagation)
178
- ? internalRequest.setHeaders(request, TraceContext.toHeaders(span))
179
- : request
180
- return Effect.tap(
181
- Effect.withParentSpan(
182
- f(
183
- request,
184
- url,
185
- controller.signal,
186
- fiber
187
- ),
188
- span
189
- ),
190
- (response) => {
191
- span.attribute("http.response.status_code", response.status)
192
- const redactedHeaders = Headers.redact(response.headers, redactedHeaderNames)
193
- for (const name in redactedHeaders) {
194
- span.attribute(`http.response.header.${name}`, String(redactedHeaders[name]))
196
+ return Effect.useSpan(
197
+ `http.client ${request.method}`,
198
+ { kind: "client", captureStackTrace: false },
199
+ (span) => {
200
+ span.attribute("http.request.method", request.method)
201
+ span.attribute("server.address", url.origin)
202
+ if (url.port !== "") {
203
+ span.attribute("server.port", +url.port)
204
+ }
205
+ span.attribute("url.full", url.toString())
206
+ span.attribute("url.path", url.pathname)
207
+ span.attribute("url.scheme", url.protocol.slice(0, -1))
208
+ const query = url.search.slice(1)
209
+ if (query !== "") {
210
+ span.attribute("url.query", query)
211
+ }
212
+ const redactedHeaderNames = fiber.getFiberRef(Headers.currentRedactedNames)
213
+ const redactedHeaders = Headers.redact(request.headers, redactedHeaderNames)
214
+ for (const name in redactedHeaders) {
215
+ span.attribute(`http.request.header.${name}`, String(redactedHeaders[name]))
216
+ }
217
+ request = fiber.getFiberRef(currentTracerPropagation)
218
+ ? internalRequest.setHeaders(request, TraceContext.toHeaders(span))
219
+ : request
220
+ return Effect.uninterruptibleMask((restore) =>
221
+ restore(f(request, url, controller.signal, fiber)).pipe(
222
+ Effect.withParentSpan(span),
223
+ Effect.matchCauseEffect({
224
+ onSuccess: (response) => {
225
+ span.attribute("http.response.status_code", response.status)
226
+ const redactedHeaders = Headers.redact(response.headers, redactedHeaderNames)
227
+ for (const name in redactedHeaders) {
228
+ span.attribute(`http.response.header.${name}`, String(redactedHeaders[name]))
229
+ }
230
+
231
+ responseRegistry.register(response, controller)
232
+ return Effect.succeed(new InterruptibleResponse(response, controller))
233
+ },
234
+ onFailure(cause) {
235
+ if (Cause.isInterrupted(cause)) {
236
+ controller.abort()
237
+ }
238
+ return Effect.failCause(cause)
195
239
  }
196
- }
240
+ })
197
241
  )
198
- }
199
- )
242
+ )
243
+ }
200
244
  )
201
245
  })), Effect.succeed as Client.HttpClient.Preprocess<never, never>)
202
246
 
247
+ class InterruptibleResponse implements ClientResponse.HttpClientResponse {
248
+ constructor(
249
+ readonly original: ClientResponse.HttpClientResponse,
250
+ readonly controller: AbortController
251
+ ) {}
252
+
253
+ readonly [internalResponse.TypeId]: ClientResponse.TypeId = internalResponse.TypeId
254
+ readonly [IncomingMessage.TypeId]: IncomingMessage.TypeId = IncomingMessage.TypeId
255
+
256
+ private applyInterrupt<A, E, R>(effect: Effect.Effect<A, E, R>) {
257
+ return Effect.suspend(() => {
258
+ responseRegistry.unregister(this.original)
259
+ return Effect.onInterrupt(effect, () =>
260
+ Effect.sync(() => {
261
+ this.controller.abort()
262
+ }))
263
+ })
264
+ }
265
+
266
+ get request() {
267
+ return this.original.request
268
+ }
269
+
270
+ get status() {
271
+ return this.original.status
272
+ }
273
+
274
+ get headers() {
275
+ return this.original.headers
276
+ }
277
+
278
+ get cookies() {
279
+ return this.original.cookies
280
+ }
281
+
282
+ get remoteAddress() {
283
+ return this.original.remoteAddress
284
+ }
285
+
286
+ get formData() {
287
+ return this.applyInterrupt(this.original.formData)
288
+ }
289
+
290
+ get text() {
291
+ return this.applyInterrupt(this.original.text)
292
+ }
293
+
294
+ get json() {
295
+ return this.applyInterrupt(this.original.json)
296
+ }
297
+
298
+ get urlParamsBody() {
299
+ return this.applyInterrupt(this.original.urlParamsBody)
300
+ }
301
+
302
+ get arrayBuffer() {
303
+ return this.applyInterrupt(this.original.arrayBuffer)
304
+ }
305
+
306
+ get stream() {
307
+ return Stream.suspend(() => {
308
+ responseRegistry.unregister(this.original)
309
+ return Stream.ensuringWith(this.original.stream, (exit) => {
310
+ if (Exit.isInterrupted(exit)) {
311
+ this.controller.abort()
312
+ }
313
+ return Effect.void
314
+ })
315
+ })
316
+ }
317
+
318
+ toJSON() {
319
+ return this.original.toJSON()
320
+ }
321
+
322
+ [Inspectable.NodeInspectSymbol]() {
323
+ return this.original[Inspectable.NodeInspectSymbol]()
324
+ }
325
+ }
326
+
203
327
  export const {
204
328
  /** @internal */
205
329
  del,
@@ -733,6 +857,6 @@ export const layerMergedContext = <E, R>(
733
857
  Effect.map(effect, (client) =>
734
858
  transformResponse(
735
859
  client,
736
- Effect.mapInputContext((input: Context.Context<Scope.Scope>) => Context.merge(context, input))
860
+ Effect.mapInputContext((input: Context.Context<never>) => Context.merge(context, input))
737
861
  )))
738
862
  )
@@ -196,7 +196,7 @@ export const schemaNoBody = <
196
196
 
197
197
  /** @internal */
198
198
  export const stream = <E, R>(effect: Effect.Effect<ClientResponse.HttpClientResponse, E, R>) =>
199
- Stream.unwrapScoped(Effect.map(effect, (_) => _.stream))
199
+ Stream.unwrap(Effect.map(effect, (_) => _.stream))
200
200
 
201
201
  /** @internal */
202
202
  export const matchStatus = dual<
@@ -39,11 +39,22 @@ export const make = Effect.fnUntraced(function*<I, E, R, O>(
39
39
  process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
40
40
  options?: WorkerRunner.Runner.Options<I, O, E>
41
41
  ) {
42
+ const fiber = yield* Effect.withFiberRuntime<Fiber.RuntimeFiber<void>>(Effect.succeed as any)
42
43
  const platform = yield* PlatformRunner
43
44
  const closeLatch = yield* CloseLatch
44
45
  const backing = yield* platform.start<Worker.Worker.Request<I>, Worker.Worker.Response<E>>(closeLatch)
45
46
  const fiberMap = new Map<number, Fiber.Fiber<unknown, unknown>>()
46
47
 
48
+ yield* Deferred.await(closeLatch).pipe(
49
+ Effect.onExit(() => {
50
+ fiber.currentScheduler.scheduleTask(() => {
51
+ fiber.unsafeInterruptAsFork(fiber.id())
52
+ }, 0)
53
+ return Effect.void
54
+ }),
55
+ Effect.forkScoped
56
+ )
57
+
47
58
  yield* backing.run((portId, [id, kind, data, span]): Effect.Effect<void, WorkerError, R> => {
48
59
  if (kind === 1) {
49
60
  const fiber = fiberMap.get(id)
@@ -211,9 +222,7 @@ export const layerSerialized = <
211
222
  /** @internal */
212
223
  export const launch = <A, E, R>(layer: Layer.Layer<A, E, R>): Effect.Effect<void, E | WorkerError, R> =>
213
224
  Effect.scopedWith(Effect.fnUntraced(function*(scope) {
214
- const context = yield* Layer.buildWithScope(Layer.merge(layer, layerCloseLatch), scope)
225
+ const context = yield* Layer.buildWithScope(Layer.provideMerge(layer, layerCloseLatch), scope)
215
226
  const closeLatch = Context.get(context, CloseLatch)
216
- return yield* Effect.never.pipe(
217
- Effect.raceFirst(Deferred.await(closeLatch))
218
- )
227
+ return yield* Deferred.await(closeLatch)
219
228
  }))