@effect/platform 0.48.22 → 0.48.23

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 (33) hide show
  1. package/Http/TraceContext/package.json +6 -0
  2. package/dist/cjs/Http/Client.js +11 -1
  3. package/dist/cjs/Http/Client.js.map +1 -1
  4. package/dist/cjs/Http/IncomingMessage.js +2 -51
  5. package/dist/cjs/Http/IncomingMessage.js.map +1 -1
  6. package/dist/cjs/Http/TraceContext.js +132 -0
  7. package/dist/cjs/Http/TraceContext.js.map +1 -0
  8. package/dist/cjs/internal/http/client.js +51 -34
  9. package/dist/cjs/internal/http/client.js.map +1 -1
  10. package/dist/cjs/internal/http/middleware.js +36 -22
  11. package/dist/cjs/internal/http/middleware.js.map +1 -1
  12. package/dist/dts/Http/Client.d.ts +16 -1
  13. package/dist/dts/Http/Client.d.ts.map +1 -1
  14. package/dist/dts/Http/IncomingMessage.d.ts +1 -7
  15. package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
  16. package/dist/dts/Http/TraceContext.d.ts +39 -0
  17. package/dist/dts/Http/TraceContext.d.ts.map +1 -0
  18. package/dist/esm/Http/Client.js +10 -0
  19. package/dist/esm/Http/Client.js.map +1 -1
  20. package/dist/esm/Http/IncomingMessage.js +1 -50
  21. package/dist/esm/Http/IncomingMessage.js.map +1 -1
  22. package/dist/esm/Http/TraceContext.js +95 -0
  23. package/dist/esm/Http/TraceContext.js.map +1 -0
  24. package/dist/esm/internal/http/client.js +50 -33
  25. package/dist/esm/internal/http/client.js.map +1 -1
  26. package/dist/esm/internal/http/middleware.js +36 -22
  27. package/dist/esm/internal/http/middleware.js.map +1 -1
  28. package/package.json +11 -3
  29. package/src/Http/Client.ts +25 -1
  30. package/src/Http/IncomingMessage.ts +2 -71
  31. package/src/Http/TraceContext.ts +109 -0
  32. package/src/internal/http/client.ts +89 -55
  33. package/src/internal/http/middleware.ts +46 -49
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["Schema","Context","Effect","dual","pipe","Layer","pipeArguments","Predicate","Ref","Stream","Error","Cookies","Method","UrlParams","internalBody","internalRequest","internalResponse","TypeId","Symbol","for","tag","GenericTag","clientProto","arguments","isClient","u","hasProperty","make","execute","preprocess","client","request","Object","setPrototypeOf","addB3Headers","req","match","currentSpan","onFailure","onSuccess","span","setHeader","traceId","spanId","sampled","parent","_tag","value","makeDefault","f","flatMap","Fetch","fetch","options","makeUrl","url","urlParams","_","RequestError","reason","error","serviceOption","fetch_","globalThis","headers","Headers","send","body","acquireRelease","sync","AbortController","controller","abort","tryPromise","try","method","duplex","undefined","signal","catch","map","fromWeb","hasBody","convertBody","formData","toReadableStream","stream","fetchOk","filterStatusOk","layer","succeed","transform","self","transformResponse","catchTag","catchTags","cases","catchAll","filterOrElse","orElse","filterOrFail","orFailWith","filterStatus","effect","response","status","ResponseError","mapEffect","scoped","mapEffectScoped","mapRequest","mapRequestEffect","mapInputRequest","mapInputRequestEffect","retry","policy","schemaFunction","args","schema","encode","a","tryMap","TextEncoder","JSON","stringify","setBody","uint8Array","tap","tapRequest","withCookiesRef","ref","update","cookies","merge","get","isEmpty","toCookieHeader"],"sources":["../../../../src/internal/http/client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"client.js","names":["Schema","Context","Effect","FiberRef","constFalse","dual","pipe","globalValue","Layer","pipeArguments","Predicate","Ref","Stream","Error","Cookies","Method","TraceContext","UrlParams","internalBody","internalRequest","internalResponse","TypeId","Symbol","for","tag","GenericTag","currentTracerDisabledWhen","unsafeMake","withTracerDisabledWhen","self","pred","locally","clientProto","arguments","isClient","u","hasProperty","make","execute","preprocess","client","request","Object","setPrototypeOf","makeDefault","f","effect","flatMap","withFiberRuntime","fiber","tracerDisabled","getFiberRef","useSpan","method","attributes","url","span","withParentSpan","setHeaders","toHeaders","succeed","Fetch","fetch","options","context","currentContext","unsafeMap","get","key","globalThis","makeUrl","urlParams","_","RequestError","reason","error","headers","Headers","send","body","acquireRelease","sync","AbortController","controller","abort","tryPromise","try","duplex","_tag","undefined","signal","catch","map","fromWeb","hasBody","convertBody","formData","toReadableStream","stream","fetchOk","filterStatusOk","layer","transform","transformResponse","catchTag","catchTags","cases","catchAll","filterOrElse","orElse","filterOrFail","orFailWith","filterStatus","response","status","ResponseError","mapEffect","scoped","mapEffectScoped","mapRequest","mapRequestEffect","mapInputRequest","mapInputRequestEffect","retry","policy","schemaFunction","args","schema","encode","a","tryMap","TextEncoder","JSON","stringify","setBody","uint8Array","tap","tapRequest","withCookiesRef","ref","update","cookies","merge","isEmpty","setHeader","toCookieHeader"],"sources":["../../../../src/internal/http/client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,14 @@
1
1
  import * as Cause from "effect/Cause";
2
+ import * as Context from "effect/Context";
2
3
  import * as Effect from "effect/Effect";
3
4
  import * as FiberRef from "effect/FiberRef";
4
5
  import { constFalse, dual } from "effect/Function";
5
6
  import { globalValue } from "effect/GlobalValue";
7
+ import * as Option from "effect/Option";
6
8
  import * as Headers from "../../Http/Headers.js";
7
- import * as IncomingMessage from "../../Http/IncomingMessage.js";
8
9
  import * as ServerError from "../../Http/ServerError.js";
9
10
  import * as ServerRequest from "../../Http/ServerRequest.js";
11
+ import * as TraceContext from "../../Http/TraceContext.js";
10
12
  /** @internal */
11
13
  export const make = middleware => middleware;
12
14
  /** @internal */
@@ -20,31 +22,43 @@ export const withTracerDisabledWhen = /*#__PURE__*/dual(2, (self, pred) => Effec
20
22
  /** @internal */
21
23
  export const logger = /*#__PURE__*/make(httpApp => {
22
24
  let counter = 0;
23
- return Effect.flatMap(ServerRequest.ServerRequest, request => Effect.withLogSpan(Effect.onExit(httpApp, exit => Effect.flatMap(FiberRef.get(loggerDisabled), disabled => {
24
- if (disabled) {
25
- return Effect.unit;
26
- }
27
- return exit._tag === "Failure" ? Effect.annotateLogs(Effect.log(exit.cause), {
28
- "http.method": request.method,
29
- "http.url": request.url,
30
- "http.status": Cause.isInterruptedOnly(exit.cause) ? ServerError.isClientAbortCause(exit.cause) ? 499 : 503 : 500
31
- }) : Effect.annotateLogs(Effect.log("Sent HTTP response"), {
32
- "http.method": request.method,
33
- "http.url": request.url,
34
- "http.status": exit.value.status
35
- });
36
- })), `http.span.${++counter}`));
25
+ return Effect.withFiberRuntime(fiber => {
26
+ const context = fiber.getFiberRef(FiberRef.currentContext);
27
+ const request = Context.unsafeGet(context, ServerRequest.ServerRequest);
28
+ return Effect.withLogSpan(Effect.onExit(httpApp, exit => {
29
+ if (fiber.getFiberRef(loggerDisabled)) {
30
+ return Effect.unit;
31
+ }
32
+ return exit._tag === "Failure" ? Effect.annotateLogs(Effect.log(exit.cause), {
33
+ "http.method": request.method,
34
+ "http.url": request.url,
35
+ "http.status": Cause.isInterruptedOnly(exit.cause) ? ServerError.isClientAbortCause(exit.cause) ? 499 : 503 : 500
36
+ }) : Effect.annotateLogs(Effect.log("Sent HTTP response"), {
37
+ "http.method": request.method,
38
+ "http.url": request.url,
39
+ "http.status": exit.value.status
40
+ });
41
+ }), `http.span.${++counter}`);
42
+ });
37
43
  });
38
44
  /** @internal */
39
45
  export const tracer = /*#__PURE__*/make(httpApp => {
40
46
  const appWithStatus = Effect.tap(httpApp, response => Effect.annotateCurrentSpan("http.status", response.status));
41
- return Effect.flatMap(Effect.zip(ServerRequest.ServerRequest, FiberRef.get(currentTracerDisabledWhen)), ([request, disabledWhen]) => Effect.flatMap(request.headers["x-b3-traceid"] || request.headers["b3"] ? Effect.orElseSucceed(IncomingMessage.schemaExternalSpan(request), () => undefined) : Effect.succeed(undefined), parent => disabledWhen(request) ? httpApp : Effect.withSpan(appWithStatus, `http ${request.method}`, {
42
- attributes: {
43
- "http.method": request.method,
44
- "http.url": request.url
45
- },
46
- parent
47
- })));
47
+ return Effect.withFiberRuntime(fiber => {
48
+ const context = fiber.getFiberRef(FiberRef.currentContext);
49
+ const request = Context.unsafeGet(context, ServerRequest.ServerRequest);
50
+ const disabled = fiber.getFiberRef(currentTracerDisabledWhen)(request);
51
+ if (disabled) {
52
+ return httpApp;
53
+ }
54
+ return Effect.withSpan(appWithStatus, `http.server ${request.method}`, {
55
+ attributes: {
56
+ "http.method": request.method,
57
+ "http.url": request.url
58
+ },
59
+ parent: Option.getOrUndefined(TraceContext.fromHeaders(request.headers))
60
+ });
61
+ });
48
62
  });
49
63
  /** @internal */
50
64
  export const xForwardedHeaders = /*#__PURE__*/make(httpApp => Effect.updateService(httpApp, ServerRequest.ServerRequest, request => request.headers["x-forwarded-host"] ? request.modify({
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","names":["Cause","Effect","FiberRef","constFalse","dual","globalValue","Headers","IncomingMessage","ServerError","ServerRequest","make","middleware","loggerDisabled","Symbol","for","unsafeMake","withLoggerDisabled","self","zipRight","set","currentTracerDisabledWhen","withTracerDisabledWhen","pred","locally","logger","httpApp","counter","flatMap","request","withLogSpan","onExit","exit","get","disabled","unit","_tag","annotateLogs","log","cause","method","url","isInterruptedOnly","isClientAbortCause","value","status","tracer","appWithStatus","tap","response","annotateCurrentSpan","zip","disabledWhen","headers","orElseSucceed","schemaExternalSpan","undefined","succeed","parent","withSpan","attributes","xForwardedHeaders","updateService","modify","remoteAddress","split","trim"],"sources":["../../../../src/internal/http/middleware.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"middleware.js","names":["Cause","Context","Effect","FiberRef","constFalse","dual","globalValue","Option","Headers","ServerError","ServerRequest","TraceContext","make","middleware","loggerDisabled","Symbol","for","unsafeMake","withLoggerDisabled","self","zipRight","set","currentTracerDisabledWhen","withTracerDisabledWhen","pred","locally","logger","httpApp","counter","withFiberRuntime","fiber","context","getFiberRef","currentContext","request","unsafeGet","withLogSpan","onExit","exit","unit","_tag","annotateLogs","log","cause","method","url","isInterruptedOnly","isClientAbortCause","value","status","tracer","appWithStatus","tap","response","annotateCurrentSpan","disabled","withSpan","attributes","parent","getOrUndefined","fromHeaders","headers","xForwardedHeaders","updateService","modify","remoteAddress","split","trim"],"sources":["../../../../src/internal/http/middleware.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.48.22",
3
+ "version": "0.48.23",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -16,8 +16,8 @@
16
16
  "path-browserify": "^1.0.1"
17
17
  },
18
18
  "peerDependencies": {
19
- "@effect/schema": "^0.64.16",
20
- "effect": "^2.4.15"
19
+ "@effect/schema": "^0.64.17",
20
+ "effect": "^2.4.16"
21
21
  },
22
22
  "main": "./dist/cjs/index.js",
23
23
  "module": "./dist/esm/index.js",
@@ -154,6 +154,11 @@
154
154
  "import": "./dist/esm/Http/ServerResponse.js",
155
155
  "default": "./dist/cjs/Http/ServerResponse.js"
156
156
  },
157
+ "./Http/TraceContext": {
158
+ "types": "./dist/dts/Http/TraceContext.d.ts",
159
+ "import": "./dist/esm/Http/TraceContext.js",
160
+ "default": "./dist/cjs/Http/TraceContext.js"
161
+ },
157
162
  "./Http/UrlParams": {
158
163
  "types": "./dist/dts/Http/UrlParams.d.ts",
159
164
  "import": "./dist/esm/Http/UrlParams.js",
@@ -302,6 +307,9 @@
302
307
  "Http/ServerResponse": [
303
308
  "./dist/dts/Http/ServerResponse.d.ts"
304
309
  ],
310
+ "Http/TraceContext": [
311
+ "./dist/dts/Http/TraceContext.d.ts"
312
+ ],
305
313
  "Http/UrlParams": [
306
314
  "./dist/dts/Http/UrlParams.d.ts"
307
315
  ],
@@ -7,6 +7,8 @@ import type * as ParseResult from "@effect/schema/ParseResult"
7
7
  import type * as Schema from "@effect/schema/Schema"
8
8
  import type * as Context from "effect/Context"
9
9
  import type * as Effect from "effect/Effect"
10
+ import type { RuntimeFiber } from "effect/Fiber"
11
+ import type * as FiberRef from "effect/FiberRef"
10
12
  import type { Inspectable } from "effect/Inspectable"
11
13
  import type * as Layer from "effect/Layer"
12
14
  import type { Pipeable } from "effect/Pipeable"
@@ -250,7 +252,8 @@ export const make: <R, E, A, R2, E2>(
250
252
  */
251
253
  export const makeDefault: (
252
254
  f: (
253
- request: ClientRequest.ClientRequest
255
+ request: ClientRequest.ClientRequest,
256
+ fiber: RuntimeFiber<ClientResponse.ClientResponse, Error.HttpClientError>
254
257
  ) => Effect.Effect<ClientResponse.ClientResponse, Error.HttpClientError, Scope.Scope>
255
258
  ) => Client.Default = internal.makeDefault
256
259
 
@@ -432,3 +435,24 @@ export const withCookiesRef: {
432
435
  (ref: Ref<Cookies>): <R, E>(self: Client.WithResponse<R, E>) => Client.WithResponse<R, E>
433
436
  <R, E>(self: Client.WithResponse<R, E>, ref: Ref<Cookies>): Client.WithResponse<R, E>
434
437
  } = internal.withCookiesRef
438
+
439
+ /**
440
+ * @since 2.0.0
441
+ * @category fiber refs
442
+ */
443
+ export const currentTracerDisabledWhen: FiberRef.FiberRef<Predicate.Predicate<ClientRequest.ClientRequest>> =
444
+ internal.currentTracerDisabledWhen
445
+
446
+ /**
447
+ * @since 2.0.0
448
+ * @category fiber refs
449
+ */
450
+ export const withTracerDisabledWhen: {
451
+ (
452
+ predicate: Predicate.Predicate<ClientRequest.ClientRequest>
453
+ ): <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
454
+ <R, E, A>(
455
+ effect: Effect.Effect<A, E, R>,
456
+ predicate: Predicate.Predicate<ClientRequest.ClientRequest>
457
+ ): Effect.Effect<A, E, R>
458
+ } = internal.withTracerDisabledWhen
@@ -2,17 +2,15 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import type { ParseOptions } from "@effect/schema/AST"
5
- import * as ParseResult from "@effect/schema/ParseResult"
5
+ import type * as ParseResult from "@effect/schema/ParseResult"
6
6
  import * as Schema from "@effect/schema/Schema"
7
7
  import * as Effect from "effect/Effect"
8
8
  import * as FiberRef from "effect/FiberRef"
9
- import { dual, flow } from "effect/Function"
9
+ import { dual } from "effect/Function"
10
10
  import * as Global from "effect/GlobalValue"
11
11
  import type { Inspectable } from "effect/Inspectable"
12
12
  import * as Option from "effect/Option"
13
13
  import type * as Stream from "effect/Stream"
14
- import * as Tracer from "effect/Tracer"
15
- import type { ExternalSpan } from "effect/Tracer"
16
14
  import * as FileSystem from "../FileSystem.js"
17
15
  import type * as Headers from "./Headers.js"
18
16
  import type * as UrlParams from "./UrlParams.js"
@@ -112,73 +110,6 @@ export const schemaHeadersEffect = <R, I extends Readonly<Record<string, string>
112
110
  return <E, E2, R2>(effect: Effect.Effect<IncomingMessage<E>, E2, R2>) => Effect.scoped(Effect.flatMap(effect, decode))
113
111
  }
114
112
 
115
- const SpanSchema = Schema.struct({
116
- traceId: Schema.string,
117
- spanId: Schema.string,
118
- parentSpanId: Schema.union(Schema.string, Schema.undefined),
119
- sampled: Schema.boolean
120
- })
121
-
122
- /**
123
- * @since 1.0.0
124
- * @category schema
125
- */
126
- export const schemaExternalSpan: <E>(
127
- self: IncomingMessage<E>
128
- ) => Effect.Effect<Tracer.ExternalSpan, ParseResult.ParseError> = flow(
129
- schemaHeaders(Schema.union(
130
- Schema.transformOrFail(
131
- Schema.struct({
132
- b3: Schema.NonEmpty
133
- }),
134
- SpanSchema,
135
- (input, _, ast) => {
136
- const parts = input.b3.split("-")
137
- if (parts.length >= 2) {
138
- return ParseResult.succeed(
139
- {
140
- traceId: parts[0],
141
- spanId: parts[1],
142
- sampled: parts[2] ? parts[2] === "1" : true,
143
- parentSpanId: parts[3]
144
- } as const
145
- )
146
- }
147
- return ParseResult.fail(new ParseResult.Type(ast, input))
148
- },
149
- (_) => ParseResult.succeed({ b3: "" } as const)
150
- ),
151
- Schema.transform(
152
- Schema.struct({
153
- "x-b3-traceid": Schema.NonEmpty,
154
- "x-b3-spanid": Schema.NonEmpty,
155
- "x-b3-parentspanid": Schema.optional(Schema.NonEmpty),
156
- "x-b3-sampled": Schema.optional(Schema.NonEmpty, { default: () => "1" })
157
- }),
158
- SpanSchema,
159
- (_) => ({
160
- traceId: _["x-b3-traceid"],
161
- spanId: _["x-b3-spanid"],
162
- parentSpanId: _["x-b3-parentspanid"],
163
- sampled: _["x-b3-sampled"] === "1"
164
- } as const),
165
- (_) => ({
166
- "x-b3-traceid": _.traceId,
167
- "x-b3-spanid": _.spanId,
168
- "x-b3-parentspanid": _.parentSpanId,
169
- "x-b3-sampled": _.sampled ? "1" : "0"
170
- } as const)
171
- )
172
- )),
173
- Effect.map((_): ExternalSpan =>
174
- Tracer.externalSpan({
175
- traceId: _.traceId,
176
- spanId: _.spanId,
177
- sampled: _.sampled
178
- })
179
- )
180
- )
181
-
182
113
  /**
183
114
  * @since 1.0.0
184
115
  * @category fiber refs
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Option from "effect/Option"
5
+ import * as Tracer from "effect/Tracer"
6
+ import * as Headers from "./Headers.js"
7
+
8
+ /**
9
+ * @since 1.0.0
10
+ * @category models
11
+ */
12
+ export interface FromHeaders {
13
+ (headers: Headers.Headers): Option.Option<Tracer.ExternalSpan>
14
+ }
15
+
16
+ /**
17
+ * @since 1.0.0
18
+ * @category encoding
19
+ */
20
+ export const toHeaders = (span: Tracer.Span): Headers.Headers =>
21
+ Headers.unsafeFromRecord({
22
+ b3: `${span.traceId}-${span.spanId}-${span.sampled ? "1" : "0"}${
23
+ span.parent._tag === "Some" ? `-${span.parent.value.spanId}` : ""
24
+ }`,
25
+ traceparent: `00-${span.traceId}-${span.spanId}-${span.sampled ? "01" : "00"}`
26
+ })
27
+
28
+ /**
29
+ * @since 1.0.0
30
+ * @category decoding
31
+ */
32
+ export const fromHeaders = (headers: Headers.Headers): Option.Option<Tracer.ExternalSpan> => {
33
+ let span = w3c(headers)
34
+ if (span._tag === "Some") {
35
+ return span
36
+ }
37
+ span = b3(headers)
38
+ if (span._tag === "Some") {
39
+ return span
40
+ }
41
+ return xb3(headers)
42
+ }
43
+
44
+ /**
45
+ * @since 1.0.0
46
+ * @category decoding
47
+ */
48
+ export const b3: FromHeaders = (headers) => {
49
+ if (!("b3" in headers)) {
50
+ return Option.none()
51
+ }
52
+ const parts = headers["b3"].split("-")
53
+ if (parts.length < 2) {
54
+ return Option.none()
55
+ }
56
+ return Option.some(Tracer.externalSpan({
57
+ traceId: parts[0],
58
+ spanId: parts[1],
59
+ sampled: parts[2] ? parts[2] === "1" : true
60
+ }))
61
+ }
62
+
63
+ /**
64
+ * @since 1.0.0
65
+ * @category decoding
66
+ */
67
+ export const xb3: FromHeaders = (headers) => {
68
+ if (!(headers["x-b3-traceid"]) || !(headers["x-b3-spanid"])) {
69
+ return Option.none()
70
+ }
71
+ return Option.some(Tracer.externalSpan({
72
+ traceId: headers["x-b3-traceid"],
73
+ spanId: headers["x-b3-spanid"],
74
+ sampled: headers["x-b3-sampled"] ? headers["x-b3-sampled"] === "1" : true
75
+ }))
76
+ }
77
+
78
+ const w3cTraceId = /^[0-9a-f]{32}$/gi
79
+ const w3cSpanId = /^[0-9a-f]{16}$/gi
80
+
81
+ /**
82
+ * @since 1.0.0
83
+ * @category decoding
84
+ */
85
+ export const w3c: FromHeaders = (headers) => {
86
+ if (!(headers["traceparent"])) {
87
+ return Option.none()
88
+ }
89
+ const parts = headers["traceparent"].split("-")
90
+ if (parts.length !== 4) {
91
+ return Option.none()
92
+ }
93
+ const [version, traceId, spanId, flags] = parts
94
+ switch (version) {
95
+ case "00": {
96
+ if (w3cTraceId.test(traceId) === false || w3cSpanId.test(spanId) === false) {
97
+ return Option.none()
98
+ }
99
+ return Option.some(Tracer.externalSpan({
100
+ traceId,
101
+ spanId,
102
+ sampled: (parseInt(flags, 16) & 1) === 1
103
+ }))
104
+ }
105
+ default: {
106
+ return Option.none()
107
+ }
108
+ }
109
+ }
@@ -3,7 +3,10 @@ import type * as ParseResult from "@effect/schema/ParseResult"
3
3
  import * as Schema from "@effect/schema/Schema"
4
4
  import * as Context from "effect/Context"
5
5
  import * as Effect from "effect/Effect"
6
- import { dual, pipe } from "effect/Function"
6
+ import type * as Fiber from "effect/Fiber"
7
+ import * as FiberRef from "effect/FiberRef"
8
+ import { constFalse, dual, pipe } from "effect/Function"
9
+ import { globalValue } from "effect/GlobalValue"
7
10
  import * as Layer from "effect/Layer"
8
11
  import { pipeArguments } from "effect/Pipeable"
9
12
  import * as Predicate from "effect/Predicate"
@@ -18,6 +21,7 @@ import type * as ClientRequest from "../../Http/ClientRequest.js"
18
21
  import type * as ClientResponse from "../../Http/ClientResponse.js"
19
22
  import * as Cookies from "../../Http/Cookies.js"
20
23
  import * as Method from "../../Http/Method.js"
24
+ import * as TraceContext from "../../Http/TraceContext.js"
21
25
  import * as UrlParams from "../../Http/UrlParams.js"
22
26
  import * as internalBody from "./body.js"
23
27
  import * as internalRequest from "./clientRequest.js"
@@ -31,6 +35,23 @@ export const TypeId: Client.TypeId = Symbol.for(
31
35
  /** @internal */
32
36
  export const tag = Context.GenericTag<Client.Client.Default>("@effect/platform/Http/Client")
33
37
 
38
+ /** @internal */
39
+ export const currentTracerDisabledWhen = globalValue(
40
+ Symbol.for("@effect/platform/Http/Client/tracerDisabledWhen"),
41
+ () => FiberRef.unsafeMake<Predicate.Predicate<ClientRequest.ClientRequest>>(constFalse)
42
+ )
43
+
44
+ /** @internal */
45
+ export const withTracerDisabledWhen = dual<
46
+ (
47
+ predicate: Predicate.Predicate<ClientRequest.ClientRequest>
48
+ ) => <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
49
+ <R, E, A>(
50
+ effect: Effect.Effect<A, E, R>,
51
+ predicate: Predicate.Predicate<ClientRequest.ClientRequest>
52
+ ) => Effect.Effect<A, E, R>
53
+ >(2, (self, pred) => Effect.locally(self, currentTracerDisabledWhen, pred))
54
+
34
55
  const clientProto = {
35
56
  [TypeId]: TypeId,
36
57
  pipe() {
@@ -56,25 +77,38 @@ export const make = <R, E, A, R2, E2>(
56
77
  return client as any
57
78
  }
58
79
 
59
- const addB3Headers = (req: ClientRequest.ClientRequest) =>
60
- Effect.match(Effect.currentSpan, {
61
- onFailure: () => req,
62
- onSuccess: (span) =>
63
- internalRequest.setHeader(
64
- req,
65
- "b3",
66
- `${span.traceId}-${span.spanId}-${span.sampled ? "1" : "0"}${
67
- span.parent._tag === "Some" ? `-${span.parent.value.spanId}` : ""
68
- }`
69
- )
70
- })
71
-
72
80
  /** @internal */
73
81
  export const makeDefault = (
74
82
  f: (
75
- request: ClientRequest.ClientRequest
83
+ request: ClientRequest.ClientRequest,
84
+ fiber: Fiber.RuntimeFiber<ClientResponse.ClientResponse, Error.HttpClientError>
76
85
  ) => Effect.Effect<ClientResponse.ClientResponse, Error.HttpClientError, Scope.Scope>
77
- ): Client.Client.Default => make(Effect.flatMap(f), addB3Headers)
86
+ ): Client.Client.Default =>
87
+ make(
88
+ (effect) =>
89
+ Effect.flatMap(effect, (request) =>
90
+ Effect.withFiberRuntime((fiber) => {
91
+ const tracerDisabled = fiber.getFiberRef(currentTracerDisabledWhen)(request)
92
+ if (tracerDisabled) {
93
+ return f(request, fiber)
94
+ }
95
+ return Effect.useSpan(
96
+ `http.client ${request.method}`,
97
+ {
98
+ attributes: {
99
+ "http.method": request.method,
100
+ "http.url": request.url
101
+ }
102
+ },
103
+ (span) =>
104
+ Effect.withParentSpan(
105
+ f(internalRequest.setHeaders(request, TraceContext.toHeaders(span)), fiber),
106
+ span
107
+ )
108
+ )
109
+ })),
110
+ Effect.succeed as Client.Client.Preprocess<never, never>
111
+ )
78
112
 
79
113
  /** @internal */
80
114
  export const Fetch = Context.GenericTag<Client.Fetch, typeof globalThis.fetch>(
@@ -83,52 +117,52 @@ export const Fetch = Context.GenericTag<Client.Fetch, typeof globalThis.fetch>(
83
117
 
84
118
  /** @internal */
85
119
  export const fetch = (options?: RequestInit): Client.Client.Default =>
86
- makeDefault((request) =>
87
- Effect.flatMap(
120
+ makeDefault((request, fiber) => {
121
+ const context = fiber.getFiberRef(FiberRef.currentContext)
122
+ const fetch: typeof globalThis.fetch = context.unsafeMap.get(Fetch.key) ?? globalThis.fetch
123
+ return Effect.flatMap(
88
124
  UrlParams.makeUrl(request.url, request.urlParams, (_) =>
89
125
  new Error.RequestError({
90
126
  request,
91
127
  reason: "InvalidUrl",
92
128
  error: _
93
129
  })),
94
- (url) =>
95
- Effect.flatMap(Effect.serviceOption(Fetch), (fetch_) => {
96
- const fetch = fetch_._tag === "Some" ? fetch_.value : globalThis.fetch
97
- const headers = new Headers(request.headers)
98
- const send = (body: BodyInit | undefined) =>
99
- pipe(
100
- Effect.acquireRelease(
101
- Effect.sync(() => new AbortController()),
102
- (controller) => Effect.sync(() => controller.abort())
103
- ),
104
- Effect.flatMap((controller) =>
105
- Effect.tryPromise({
106
- try: () =>
107
- fetch(url, {
108
- ...options,
109
- method: request.method,
110
- headers,
111
- body,
112
- duplex: request.body._tag === "Stream" ? "half" : undefined,
113
- signal: controller.signal
114
- } as any),
115
- catch: (_) =>
116
- new Error.RequestError({
117
- request,
118
- reason: "Transport",
119
- error: _
120
- })
121
- })
122
- ),
123
- Effect.map((_) => internalResponse.fromWeb(request, _))
124
- )
125
- if (Method.hasBody(request.method)) {
126
- return send(convertBody(request.body))
127
- }
128
- return send(undefined)
129
- })
130
+ (url) => {
131
+ const headers = new Headers(request.headers)
132
+ const send = (body: BodyInit | undefined) =>
133
+ pipe(
134
+ Effect.acquireRelease(
135
+ Effect.sync(() => new AbortController()),
136
+ (controller) => Effect.sync(() => controller.abort())
137
+ ),
138
+ Effect.flatMap((controller) =>
139
+ Effect.tryPromise({
140
+ try: () =>
141
+ fetch(url, {
142
+ ...options,
143
+ method: request.method,
144
+ headers,
145
+ body,
146
+ duplex: request.body._tag === "Stream" ? "half" : undefined,
147
+ signal: controller.signal
148
+ } as any),
149
+ catch: (_) =>
150
+ new Error.RequestError({
151
+ request,
152
+ reason: "Transport",
153
+ error: _
154
+ })
155
+ })
156
+ ),
157
+ Effect.map((_) => internalResponse.fromWeb(request, _))
158
+ )
159
+ if (Method.hasBody(request.method)) {
160
+ return send(convertBody(request.body))
161
+ }
162
+ return send(undefined)
163
+ }
130
164
  )
131
- )
165
+ })
132
166
 
133
167
  const convertBody = (body: Body.Body): BodyInit | undefined => {
134
168
  switch (body._tag) {