@dr_nikson/effect-grpc 3.0.0-alpha.2 → 3.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,7 @@ Type-safe gRPC and Protocol Buffer support for the Effect ecosystem
12
12
 
13
13
  - **Full Type Safety** - Generated TypeScript code from Protocol Buffers with complete type inference
14
14
  - **Effect Integration** - Native support for Effect's error handling, tracing, and dependency injection
15
+ - **🔭 Distributed Tracing** - Automatic OpenTelemetry support with W3C Trace Context propagation
15
16
  - **Code Generation** - Automatic client and server code generation via `protoc-gen-effect` plugin
16
17
  - **Connect-RPC** - Built on Connect-RPC for maximum compatibility with gRPC and gRPC-Web
17
18
  - **Modular Architecture** - Clean separation between service definitions and implementations
@@ -790,6 +791,106 @@ const response = yield* client.sayHello(
790
791
  );
791
792
  ```
792
793
 
794
+ ### Distributed Tracing with OpenTelemetry
795
+
796
+ effect-grpc provides **automatic distributed tracing** with OpenTelemetry, enabling you to trace requests across your entire distributed system with zero manual instrumentation.
797
+
798
+ #### How It Works
799
+
800
+ When you make a gRPC call, trace context automatically flows from client to server using the [W3C Trace Context](https://www.w3.org/TR/trace-context/) standard:
801
+
802
+ ```
803
+ ┌─────────────────────────────────────────────────────────────────────────────┐
804
+ │ Distributed Trace Flow │
805
+ ├─────────────────────────────────────────────────────────────────────────────┤
806
+ │ │
807
+ │ Client Process Server Process │
808
+ │ ───────────────── ───────────────── │
809
+ │ │
810
+ │ ┌─────────────────────┐ ┌─────────────────────┐ │
811
+ │ │ Application Span │ │ │ │
812
+ │ │ "my-operation" │ │ │ │
813
+ │ └──────────┬──────────┘ │ │ │
814
+ │ │ │ │ │
815
+ │ ▼ │ │ │
816
+ │ ┌─────────────────────┐ traceparent │ │ │
817
+ │ │ Client RPC Span │ ═══════════════► │ Server RPC Span │ │
818
+ │ │ "GrpcClient..." │ tracestate │ "service/Method" │ │
819
+ │ └─────────────────────┘ └─────────────────────┘ │
820
+ │ │
821
+ │ All spans share the same traceId for end-to-end visibility │
822
+ │ │
823
+ └─────────────────────────────────────────────────────────────────────────────┘
824
+ ```
825
+
826
+ #### Setting Up Tracing
827
+
828
+ **1. Add OpenTelemetry dependencies:**
829
+
830
+ ```bash
831
+ npm install @effect/opentelemetry @opentelemetry/api @opentelemetry/sdk-trace-node
832
+ # Plus your preferred exporter
833
+ npm install @opentelemetry/exporter-trace-otlp-http
834
+ ```
835
+
836
+ **2. Configure the OpenTelemetry SDK:**
837
+
838
+ ```typescript
839
+ import { Effect, Layer } from "effect";
840
+ import { NodeSdk } from "@effect/opentelemetry";
841
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
842
+ import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
843
+
844
+ // Create the tracing layer
845
+ const TracingLive = NodeSdk.layer(() => ({
846
+ resource: { serviceName: "my-grpc-service" },
847
+ spanProcessor: new BatchSpanProcessor(
848
+ new OTLPTraceExporter({ url: "http://localhost:4318/v1/traces" })
849
+ ),
850
+ }));
851
+
852
+ // Provide it to your application
853
+ const program = myGrpcProgram.pipe(
854
+ Effect.provide(TracingLive)
855
+ );
856
+ ```
857
+
858
+ **3. That's it!** Your gRPC calls will automatically:
859
+ - Create spans with semantic attributes (`rpc.system`, `rpc.service`, `rpc.method`)
860
+ - Propagate trace context via W3C `traceparent`/`tracestate` headers
861
+ - Link client and server spans in the same trace
862
+
863
+ #### Generated Span Names
864
+
865
+ | Location | Span Name Format | Example |
866
+ |----------|------------------|---------|
867
+ | Client | `GrpcClient.makeUnaryRequest({service}/{method})` | `GrpcClient.makeUnaryRequest(example.v1.HelloService/SayHello)` |
868
+ | Server | `{service}/{method}` | `example.v1.HelloService/SayHello` |
869
+
870
+ #### Full Trace Hierarchy
871
+
872
+ When you wrap your client call in a span, the complete trace hierarchy looks like:
873
+
874
+ ```typescript
875
+ // Your code
876
+ const program = Effect.gen(function* () {
877
+ const client = yield* HelloServiceClientTag;
878
+ return yield* client.sayHello({ name: "World" }, {});
879
+ }).pipe(Effect.withSpan("my-business-operation"));
880
+ ```
881
+
882
+ ```
883
+ Trace: abc123...
884
+
885
+ ├── my-business-operation [Client Process]
886
+ │ │
887
+ │ └── GrpcClient.makeUnaryRequest(example.v1.HelloService/SayHello)
888
+ │ │
889
+ │ └── example.v1.HelloService/SayHello [Server Process]
890
+ │ │
891
+ │ └── (your business logic spans...)
892
+ ```
893
+
793
894
 
794
895
  ## Development
795
896
 
@@ -834,6 +935,7 @@ effect-grpc/
834
935
 
835
936
  ## Roadmap
836
937
 
938
+ - [x] **OpenTelemetry distributed tracing** - Automatic trace context propagation
837
939
  - [ ] Support for streaming RPCs (server-streaming, client-streaming, bidirectional)
838
940
  - [ ] Interceptor/middleware support
839
941
  - [ ] Built-in retry policies with Effect
@@ -1 +1 @@
1
- {"version":3,"file":"client.internal.d.ts","sourceRoot":"","sources":["../src/client.internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAQhD,OAAO,KAAK,KAAK,CAAC,MAAM,aAAa,CAAC;AAGtC,eAAO,MAAM,uBAAuB,eAAqD,CAAC;AAE1F,eAAO,MAAM,oBAAoB,uDAEhC,CAAC;AAsBF,wBAAgB,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAkDxE;AAoCD,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,yEAI/E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,MAAM,EACzD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAK9C,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CACjC"}
1
+ {"version":3,"file":"client.internal.d.ts","sourceRoot":"","sources":["../src/client.internal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,KAAK,EAAE,MAAM,QAAQ,CAAC;AAWxD,OAAO,KAAK,KAAK,CAAC,MAAM,aAAa,CAAC;AAatC,eAAO,MAAM,uBAAuB,eAAqD,CAAC;AAE1F,eAAO,MAAM,oBAAoB,uDAEhC,CAAC;AAsBF,wBAAgB,qBAAqB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAkDxE;AAyFD,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,yEAI/E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,MAAM,EACzD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAK9C,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CACjC"}
@@ -1,7 +1,19 @@
1
- import { Context, Effect, Layer } from "effect";
1
+ // packages/effect-grpc/src/client.internal.ts
2
+ import { Context, Effect, Either, Layer } from "effect";
2
3
  import { createClient, createContextValues } from "@connectrpc/connect";
3
4
  import { Http2SessionManager, createGrpcTransport } from "@connectrpc/connect-node";
5
+ import { ROOT_CONTEXT, TraceFlags, trace } from "@opentelemetry/api";
6
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
4
7
  import * as protoRuntime from "./protoRuntime.js";
8
+ /**
9
+ * TextMapSetter implementation for injecting trace context into request headers.
10
+ * This adapter allows OpenTelemetry's propagation API to write to the Headers object.
11
+ */
12
+ const headerSetter = {
13
+ set(carrier, key, value) {
14
+ carrier.set(key, value);
15
+ },
16
+ };
5
17
  export const grpcClientRuntimeTypeId = Symbol("@dr_nikson/effect-grpc/GrpcClientRuntime");
6
18
  export const grpcClientRuntimeTag = Context.GenericTag(grpcClientRuntimeTypeId.toString());
7
19
  /**
@@ -50,24 +62,68 @@ export function liveGrpcClientRuntime() {
50
62
  };
51
63
  return Layer.succeed(grpcClientRuntimeTag, instance);
52
64
  }
65
+ /**
66
+ * @internal
67
+ * Inject trace context into request headers (pure function).
68
+ *
69
+ * Uses OpenTelemetry's W3CTraceContextPropagator to properly format and inject the
70
+ * `traceparent` and `tracestate` headers according to the W3C Trace Context specification.
71
+ *
72
+ * @param span - The current Effect span to extract trace context from
73
+ * @param headers - The original headers to copy and augment
74
+ * @returns New Headers object with trace context injected, preserving original headers
75
+ */
76
+ function injectTraceContext(span, headers) {
77
+ return Either.try(() => {
78
+ // Copy existing headers to preserve user-provided headers (auth tokens, etc.)
79
+ // new Headers(headers) copies all entries from the source Headers object
80
+ const newHeaders = new Headers(headers);
81
+ // Create an OTel SpanContext from the Effect span
82
+ const spanContext = {
83
+ traceId: span.traceId,
84
+ spanId: span.spanId,
85
+ traceFlags: span.sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,
86
+ // isRemote indicates whether the span context was received from a remote service.
87
+ // Here it's false because this span was created locally in the client process.
88
+ // (Server-side extraction from incoming headers would set isRemote: true)
89
+ isRemote: false,
90
+ };
91
+ // Inject trace context headers (traceparent, tracestate) into the copied headers
92
+ const propagator = new W3CTraceContextPropagator();
93
+ const otelContext = trace.setSpanContext(ROOT_CONTEXT, spanContext);
94
+ propagator.inject(otelContext, newHeaders, headerSetter);
95
+ return newHeaders;
96
+ }).pipe(Either.getOrElse(() => headers));
97
+ }
53
98
  function makeExecutorMethod(client, methodName, serviceDefinition) {
54
99
  const method = serviceDefinition.method[methodName];
100
+ // Build span name following gRPC convention: {service}/{method}
101
+ const fullMethodName = `${serviceDefinition.typeName}/${method.name}`;
55
102
  switch (method.methodKind) {
56
103
  case "unary":
57
- return (req, opts) => {
58
- return Effect.promise((signal) => {
59
- const method = client[methodName].bind(client);
60
- return method(req, {
104
+ // Use Effect.fn to create a client-side span for each RPC call.
105
+ // This provides visibility into client-side latency separate from server processing time.
106
+ return Effect.fn(`GrpcClient.makeUnaryRequest(${fullMethodName})`, {
107
+ attributes: {
108
+ "rpc.system": "grpc",
109
+ "rpc.service": serviceDefinition.typeName,
110
+ "rpc.method": method.name,
111
+ },
112
+ })(function* (req, opts) {
113
+ const baseHeaders = opts.headers ?? new Headers();
114
+ const headers = yield* Effect.currentSpan.pipe(Effect.map((span) => injectTraceContext(span, baseHeaders)), Effect.catchAll(() => Effect.succeed(baseHeaders)));
115
+ return yield* Effect.promise((signal) => {
116
+ const clientMethod = client[methodName].bind(client);
117
+ return clientMethod(req, {
61
118
  // timeoutMs: null,
62
- // TODO: tracing
63
- headers: opts.headers,
119
+ headers,
64
120
  signal,
65
121
  // onHeader: null,
66
122
  // onTrailer: null,
67
123
  contextValues: createContextValues(),
68
124
  });
69
125
  });
70
- };
126
+ });
71
127
  default:
72
128
  return null;
73
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.internal.js","sourceRoot":"","sources":["../src/client.internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.internal.js","sourceRoot":"","sources":["../src/client.internal.ts"],"names":[],"mappings":"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"}
@@ -70,7 +70,16 @@ type UnaryClientExecutorFn<I extends DescMessage, O extends DescMessage> = (requ
70
70
  * ```
71
71
  */
72
72
  export interface ServerExecutor<Ctx> {
73
- unary<In, Out>(req: In, ctx: HandlerContext, prog: (req: In, ctx: Ctx) => Effect.Effect<Out, GrpcException.GrpcException>): Promise<Out>;
73
+ /**
74
+ * Execute a unary gRPC method with automatic tracing and logging.
75
+ *
76
+ * @param method - Fully qualified method name (e.g., "com.example.v1.HelloWorldAPI/GetGreeting")
77
+ * @param req - The incoming request message
78
+ * @param ctx - The gRPC handler context
79
+ * @param prog - The Effect program implementing the method logic
80
+ * @returns Promise resolving to the response message
81
+ */
82
+ unary<In, Out>(method: string, req: In, ctx: HandlerContext, prog: (req: In, ctx: Ctx) => Effect.Effect<Out, GrpcException.GrpcException>): Promise<Out>;
74
83
  }
75
84
  export declare const ServerExecutor: {
76
85
  (runtime: Runtime.Runtime<never>): ServerExecutor<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"protoRuntime.d.ts","sourceRoot":"","sources":["../src/protoRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,iBAAiB,IAAI;KAClE,CAAC,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CACjD;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;KAAE,CACpF,GACC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,GACtD,0CAA0C;CAC7C,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,IAAI,CACzE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,CAAC,EAAE,WAAW,KACf,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,cAAc,CAAC,GAAG;IACjC,KAAK,CAAC,EAAE,EAAE,GAAG,EACX,GAAG,EAAE,EAAE,EACP,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,GAC3E,OAAO,CAAC,GAAG,CAAC,CAAC;CACjB;AACD,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;CACrB,CAAC;AAErC,MAAM,WAAW,yBAAyB,CAAC,GAAG;IAC5C,QAAQ,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,cAAc,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;IAE7F,gBAAgB,CAAC,IAAI,EACnB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,GAClF,yBAAyB,CAAC,IAAI,CAAC,CAAC;CACpC;AACD,eAAO,MAAM,yBAAyB,EAAE;IACtC,IAAI,yBAAyB,CAAC,GAAG,CAAC,CAAC;CACW,CAAC"}
1
+ {"version":3,"file":"protoRuntime.d.ts","sourceRoot":"","sources":["../src/protoRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,iBAAiB,IAAI;KAClE,CAAC,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CACjD;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;KAAE,CACpF,GACC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,GACtD,0CAA0C;CAC7C,CAAC;AAEF,KAAK,qBAAqB,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,WAAW,IAAI,CACzE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,CAAC,EAAE,WAAW,KACf,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,cAAc,CAAC,GAAG;IACjC;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,EAAE,GAAG,EACX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,EAAE,EACP,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,GAC3E,OAAO,CAAC,GAAG,CAAC,CAAC;CACjB;AACD,eAAO,MAAM,cAAc,EAAE;IAC3B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;CACrB,CAAC;AAErC,MAAM,WAAW,yBAAyB,CAAC,GAAG;IAC5C,QAAQ,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,cAAc,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;IAE7F,gBAAgB,CAAC,IAAI,EACnB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,GAClF,yBAAyB,CAAC,IAAI,CAAC,CAAC;CACpC;AACD,eAAO,MAAM,yBAAyB,EAAE;IACtC,IAAI,yBAAyB,CAAC,GAAG,CAAC,CAAC;CACW,CAAC"}
@@ -11,7 +11,31 @@ export declare class ServerExecutorLive implements T.ServerExecutor<any> {
11
11
  readonly runtime: Runtime.Runtime<never>;
12
12
  constructor(runtime: Runtime.Runtime<never>);
13
13
  static make(runtime: Runtime.Runtime<never>): T.ServerExecutor<any>;
14
- unary<In, Out>(req: In, ctx: HandlerContext, prog: (req: In, ctx: any) => Effect.Effect<Out, GrpcException.GrpcException>): Promise<Out>;
14
+ unary<In, Out>(method: string, req: In, ctx: HandlerContext, prog: (req: In, ctx: any) => Effect.Effect<Out, GrpcException.GrpcException>): Promise<Out>;
15
+ /**
16
+ * Extract W3C Trace Context from incoming gRPC request headers.
17
+ *
18
+ * Uses OpenTelemetry's W3CTraceContextPropagator to properly parse the `traceparent` and
19
+ * `tracestate` headers according to the W3C Trace Context specification. When valid trace
20
+ * context is found, it creates an ExternalSpan that will be used as the parent for the
21
+ * server-side span, enabling distributed tracing.
22
+ *
23
+ * We use `ROOT_CONTEXT` (not `context.active()`) because:
24
+ * 1. Each incoming gRPC request should start with a fresh context
25
+ * 2. We don't want to inherit any ambient context from the Node.js process
26
+ * 3. The only parent context should come from the incoming request headers
27
+ *
28
+ * We explicitly instantiate W3CTraceContextPropagator rather than using the global
29
+ * `propagation` API because the global propagator registry may not be initialized
30
+ * when using Effect's managed tracing setup.
31
+ *
32
+ * The extracted OTel span context is then converted to Effect's ExternalSpan format
33
+ * so it can be used with Effect's tracing system via `Effect.withSpan({ parent: ... })`.
34
+ *
35
+ * @param ctx - The gRPC handler context containing request headers
36
+ * @returns Option.Some with the extracted ExternalSpan, or Option.None if no valid context
37
+ */
38
+ private extractTraceContext;
15
39
  }
16
40
  /**
17
41
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"protoRuntime.internal.d.ts","sourceRoot":"","sources":["../src/protoRuntime.internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAQ,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,KAAK,CAAC,MAAM,mBAAmB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;aAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAA/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAE3D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IAInE,KAAK,CAAC,EAAE,EAAE,GAAG,EACX,GAAG,EAAE,EAAE,EACP,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,GAC3E,OAAO,CAAC,GAAG,CAAC;CA2BhB;AAED;;;;GAIG;AACH,qBAAa,6BAA6B,CAAC,GAAG,CAAE,YAAW,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC;aAEvE,cAAc,EAAE,CAC9B,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,KACzC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;gBAFV,cAAc,EAAE,CAC9B,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,KACzC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IAG5B,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC,GAAG,CAAC;IAIlD,gBAAgB,CAAC,IAAI,EACnB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,GAClF,6BAA6B,CAAC,IAAI,CAAC;CAevC"}
1
+ {"version":3,"file":"protoRuntime.internal.d.ts","sourceRoot":"","sources":["../src/protoRuntime.internal.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,MAAM,EAAgB,OAAO,EAAE,MAAM,QAAQ,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,KAAK,CAAC,MAAM,mBAAmB,CAAC;AAe5C;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;aAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAA/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAE3D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IAInE,KAAK,CAAC,EAAE,EAAE,GAAG,EACX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,EAAE,EACP,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,GAC3E,OAAO,CAAC,GAAG,CAAC;IAsCf;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,mBAAmB;CAa5B;AAED;;;;GAIG;AACH,qBAAa,6BAA6B,CAAC,GAAG,CAAE,YAAW,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC;aAEvE,cAAc,EAAE,CAC9B,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,KACzC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;gBAFV,cAAc,EAAE,CAC9B,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,KACzC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IAG5B,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC,GAAG,CAAC;IAIlD,gBAAgB,CAAC,IAAI,EACnB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,GAClF,6BAA6B,CAAC,IAAI,CAAC;CAgBvC"}
@@ -1,6 +1,22 @@
1
- import { Cause, Effect, Exit, Runtime } from "effect";
1
+ // packages/effect-grpc/src/protoRuntime.internal.ts
2
+ import { Cause, Effect, Exit, Option, Runtime } from "effect";
2
3
  import { Code, ConnectError } from "@connectrpc/connect";
4
+ import { Tracer } from "@effect/opentelemetry";
5
+ import { ROOT_CONTEXT, trace } from "@opentelemetry/api";
6
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
3
7
  import * as GrpcException from "./grpcException.js";
8
+ /**
9
+ * TextMapGetter implementation for extracting trace context from gRPC request headers.
10
+ * This adapter allows OpenTelemetry's propagation API to read from the Headers object.
11
+ */
12
+ const headerGetter = {
13
+ get(carrier, key) {
14
+ return carrier.get(key) ?? undefined;
15
+ },
16
+ keys(carrier) {
17
+ return [...carrier.keys()];
18
+ },
19
+ };
4
20
  /**
5
21
  * @internal
6
22
  * Live implementation of the Executor interface using Effect's ManagedRuntime.
@@ -14,9 +30,14 @@ export class ServerExecutorLive {
14
30
  static make(runtime) {
15
31
  return new ServerExecutorLive(runtime);
16
32
  }
17
- unary(req, ctx, prog) {
33
+ unary(method, req, ctx, prog) {
34
+ const parentSpan = this.extractTraceContext(ctx);
18
35
  // Pass undefined as the context since the default is 'any' and no transformation has been applied
19
- return Runtime.runPromiseExit(this.runtime, prog(req, undefined), { signal: ctx.signal }).then(Exit.match({
36
+ const traced = prog(req, undefined).pipe(Effect.annotateLogs({ method, protocol: "gRPC" }), Effect.withSpan(method, {
37
+ attributes: { method, protocol: "gRPC" },
38
+ parent: Option.getOrUndefined(parentSpan),
39
+ }));
40
+ return Runtime.runPromiseExit(this.runtime, traced, { signal: ctx.signal }).then(Exit.match({
20
41
  onFailure: (cause) => {
21
42
  throw Cause.match(cause, {
22
43
  onEmpty: new ConnectError("Unknown error", Code.Unknown),
@@ -30,6 +51,37 @@ export class ServerExecutorLive {
30
51
  onSuccess: (value) => value,
31
52
  }));
32
53
  }
54
+ /**
55
+ * Extract W3C Trace Context from incoming gRPC request headers.
56
+ *
57
+ * Uses OpenTelemetry's W3CTraceContextPropagator to properly parse the `traceparent` and
58
+ * `tracestate` headers according to the W3C Trace Context specification. When valid trace
59
+ * context is found, it creates an ExternalSpan that will be used as the parent for the
60
+ * server-side span, enabling distributed tracing.
61
+ *
62
+ * We use `ROOT_CONTEXT` (not `context.active()`) because:
63
+ * 1. Each incoming gRPC request should start with a fresh context
64
+ * 2. We don't want to inherit any ambient context from the Node.js process
65
+ * 3. The only parent context should come from the incoming request headers
66
+ *
67
+ * We explicitly instantiate W3CTraceContextPropagator rather than using the global
68
+ * `propagation` API because the global propagator registry may not be initialized
69
+ * when using Effect's managed tracing setup.
70
+ *
71
+ * The extracted OTel span context is then converted to Effect's ExternalSpan format
72
+ * so it can be used with Effect's tracing system via `Effect.withSpan({ parent: ... })`.
73
+ *
74
+ * @param ctx - The gRPC handler context containing request headers
75
+ * @returns Option.Some with the extracted ExternalSpan, or Option.None if no valid context
76
+ */
77
+ extractTraceContext(ctx) {
78
+ const propagator = new W3CTraceContextPropagator();
79
+ // Extract trace context from headers into a fresh ROOT_CONTEXT
80
+ // This ensures we don't inherit any ambient context from the process
81
+ const extractedContext = propagator.extract(ROOT_CONTEXT, ctx.requestHeader, headerGetter);
82
+ // Get the span context from the extracted OTel context and convert to Effect's ExternalSpan
83
+ return Option.fromNullable(trace.getSpanContext(extractedContext)).pipe(Option.filter(trace.isSpanContextValid), Option.map(Tracer.makeExternalSpan));
84
+ }
33
85
  }
34
86
  /**
35
87
  * @internal
@@ -47,8 +99,8 @@ export class ServerExecutorTransformerLive {
47
99
  transformContext(f) {
48
100
  return new ServerExecutorTransformerLive((underlying) => {
49
101
  return {
50
- unary(req, handlerCtx, prog) {
51
- return underlying.unary(req, handlerCtx, (req) => {
102
+ unary(method, req, handlerCtx, prog) {
103
+ return underlying.unary(method, req, handlerCtx, (req) => {
52
104
  return Effect.flatMap(f(handlerCtx), (ctx1) => prog(req, ctx1));
53
105
  });
54
106
  },
@@ -1 +1 @@
1
- {"version":3,"file":"protoRuntime.internal.js","sourceRoot":"","sources":["../src/protoRuntime.internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AAGpD;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACD;IAA5B,YAA4B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;IAAG,CAAC;IAE/D,MAAM,CAAC,IAAI,CAAC,OAA+B;QACzC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CACH,GAAO,EACP,GAAmB,EACnB,IAA4E;QAE5E,kGAAkG;QAClG,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC5F,IAAI,CAAC,KAAK,CAAC;YACT,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;oBACvB,OAAO,EAAE,IAAI,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC;oBACxD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC;oBACtD,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAChB,IAAI,YAAY,CACd,uBAAuB,EACvB,IAAI,CAAC,QAAQ,EACb,SAAS,EACT,SAAS,EACT,MAAM,CACP;oBACH,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC;oBACzE,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC5B,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;oBAC5E,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC1B,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;iBAC9E,CAAC,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;SAC5B,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IAEtB;IADlB,YACkB,cAEU;QAFV,mBAAc,GAAd,cAAc,CAEJ;IACzB,CAAC;IAEJ,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IAED,gBAAgB,CACd,CAAmF;QAEnF,OAAO,IAAI,6BAA6B,CAAO,CAAC,UAAU,EAAE,EAAE;YAC5D,OAAO;gBACL,KAAK,CACH,GAAO,EACP,UAA0B,EAC1B,IAA6E;oBAE7E,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;wBAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;oBAClE,CAAC,CAAC,CAAC;gBACL,CAAC;aACwB,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"protoRuntime.internal.js","sourceRoot":"","sources":["../src/protoRuntime.internal.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"protoRuntime.js","sourceRoot":"","sources":["../src/protoRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMzC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAgFvD,MAAM,CAAC,MAAM,cAAc,GAEvB,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC;AASrC,MAAM,CAAC,MAAM,yBAAyB,GAElC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC"}
1
+ {"version":3,"file":"protoRuntime.js","sourceRoot":"","sources":["../src/protoRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMzC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AA0FvD,MAAM,CAAC,MAAM,cAAc,GAEvB,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC;AASrC,MAAM,CAAC,MAAM,yBAAyB,GAElC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC"}
@@ -9,9 +9,19 @@ function generateTs(schema) {
9
9
  for (const file of schema.files) {
10
10
  const f = schema.generateFile(file.name + "_effect.ts");
11
11
  f.preamble(file);
12
+ // Add Effect imports (namespace imports from submodules)
13
+ const effectImports = {
14
+ Context: safeIdentifier("Context"),
15
+ Effect: safeIdentifier("Effect"),
16
+ Layer: safeIdentifier("Layer"),
17
+ };
18
+ f.print('import * as ', effectImports.Context, ' from "effect/Context";');
19
+ f.print('import * as ', effectImports.Effect, ' from "effect/Effect";');
20
+ f.print('import * as ', effectImports.Layer, ' from "effect/Layer";');
21
+ f.print();
12
22
  // Extract basename from file path for import examples
13
23
  const fileBasename = file.name.split('/').pop() || file.name;
14
- file.services.forEach(service => generateEffectService(f, service, fileBasename));
24
+ file.services.forEach(service => generateEffectService(f, service, fileBasename, effectImports));
15
25
  /*
16
26
  for (const service of file.services) {
17
27
  f.print(f.jsDoc(service));
@@ -62,22 +72,31 @@ function generateTs(schema) {
62
72
  }*/
63
73
  }
64
74
  }
65
- function generateEffectService(f, service, fileBasename) {
66
- const importEffect = f.import("Effect", "effect");
67
- const importContext = f.import("Context", "effect");
68
- const importLayer = f.import("Layer", "effect");
69
- const importScope = f.import("Scope", "effect");
75
+ /**
76
+ * Appends a suffix to a name only if the name doesn't already end with that suffix.
77
+ * This prevents names like "HelloWorldServiceService" when the proto service
78
+ * is already named "HelloWorldService".
79
+ */
80
+ function appendSuffixIfNeeded(name, suffix) {
81
+ return name.endsWith(suffix) ? name : name + suffix;
82
+ }
83
+ function generateEffectService(f, service, fileBasename, effectImports) {
84
+ // Effect imports are added manually as namespace imports in generateTs()
85
+ const { Context: importContext, Effect: importEffect, Layer: importLayer } = effectImports;
70
86
  const importEffectGrpcService = f.import("EffectGrpcServer", packageJson.name);
71
87
  const importGrpcException = f.import("GrpcException", packageJson.name);
72
88
  const importService = f.importSchema(service);
89
+ // Use appendSuffixIfNeeded to avoid duplicate suffixes (e.g., "HelloWorldServiceService")
90
+ const serviceName = appendSuffixIfNeeded(service.name, "Service");
91
+ const serviceNameLower = serviceName.charAt(0).toLowerCase() + serviceName.slice(1);
73
92
  const serviceId = service.typeName;
74
93
  const serviceIdSymbol = safeIdentifier(service.name + "ProtoId");
75
- const serviceSymbol = safeIdentifier(service.name + "Service");
76
- const grpcServiceSymbol = safeIdentifier(service.name + "GrpcService");
77
- const serviceTagSymbol = safeIdentifier(service.name + "ServiceTag");
78
- const serviceLiveLayerSymbol = safeIdentifier(service.name.charAt(0).toLowerCase() + service.name.slice(1) + "ServiceLiveLayer");
79
- const makeTagSymbol = safeIdentifier("make" + service.name + "ServiceTag");
80
- const makeLiveLayerSymbol = safeIdentifier("make" + service.name + "ServiceLiveLayer");
94
+ const serviceSymbol = safeIdentifier(serviceName);
95
+ const grpcServiceSymbol = safeIdentifier(serviceName.replace(/Service$/, "") + "GrpcService");
96
+ const serviceTagSymbol = safeIdentifier(serviceName + "Tag");
97
+ const serviceLiveLayerSymbol = safeIdentifier(serviceNameLower + "LiveLayer");
98
+ const makeTagSymbol = safeIdentifier("make" + serviceName + "Tag");
99
+ const makeLiveLayerSymbol = safeIdentifier("make" + serviceName + "LiveLayer");
81
100
  // Generate service ID constant with JSDoc
82
101
  f.print("/**");
83
102
  f.print(" * Unique identifier for the ", service.name, " gRPC service.");
@@ -99,7 +118,7 @@ function generateEffectService(f, service, fileBasename) {
99
118
  f.print(" *");
100
119
  f.print(" * @example");
101
120
  f.print(" * ```typescript");
102
- f.print(" * import { Effect } from \"effect\";");
121
+ f.print(" * import * as Effect from \"effect/Effect\";");
103
122
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
104
123
  f.print(" *");
105
124
  f.print(" * // Simple implementation with default context");
@@ -134,7 +153,8 @@ function generateEffectService(f, service, fileBasename) {
134
153
  f.print(" *");
135
154
  f.print(" * @example");
136
155
  f.print(" * ```typescript");
137
- f.print(" * import { Effect, Layer } from \"effect\";");
156
+ f.print(" * import * as Effect from \"effect/Effect\";");
157
+ f.print(" * import * as Layer from \"effect/Layer\";");
138
158
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
139
159
  f.print(" *");
140
160
  f.print(" * // Define your service implementation");
@@ -193,7 +213,7 @@ function generateEffectService(f, service, fileBasename) {
193
213
  f.print(" *");
194
214
  f.print(" * @example");
195
215
  f.print(" * ```typescript");
196
- f.print(" * import { Effect } from \"effect\";");
216
+ f.print(" * import * as Effect from \"effect/Effect\";");
197
217
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
198
218
  f.print(" *");
199
219
  f.print(" * // Use default context tag");
@@ -208,7 +228,7 @@ function generateEffectService(f, service, fileBasename) {
208
228
  f.print(" *");
209
229
  f.print(" * @example");
210
230
  f.print(" * ```typescript");
211
- f.print(" * import { Effect } from \"effect\";");
231
+ f.print(" * import * as Effect from \"effect/Effect\";");
212
232
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
213
233
  f.print(" *");
214
234
  f.print(" * // Create a typed context tag");
@@ -249,7 +269,7 @@ function generateEffectService(f, service, fileBasename) {
249
269
  service.methods.forEach((method) => {
250
270
  if (method.methodKind === "unary") {
251
271
  f.print(" ", method.localName, ": (req, ctx) =>");
252
- f.print(" executor.unary(req, ctx, (req, ctx) => service.", method.localName, "(req, ctx)),");
272
+ f.print(" executor.unary(`${", serviceIdSymbol, "}/", method.name, "`, req, ctx, (req, ctx) => service.", method.localName, "(req, ctx)),");
253
273
  }
254
274
  });
255
275
  f.print(" }));");
@@ -257,13 +277,16 @@ function generateEffectService(f, service, fileBasename) {
257
277
  f.print(" return ", importLayer, ".succeed(tag, instance);");
258
278
  f.print("}");
259
279
  f.print();
260
- const clientSymbol = safeIdentifier(service.name + "Client");
280
+ // Use appendSuffixIfNeeded to avoid duplicate suffixes (e.g., "HelloWorldClientClient")
281
+ const clientName = appendSuffixIfNeeded(service.name, "Client");
282
+ const clientNameLower = clientName.charAt(0).toLowerCase() + clientName.slice(1);
283
+ const clientSymbol = safeIdentifier(clientName);
261
284
  const importEffectGrpcClient = f.import("EffectGrpcClient", packageJson.name);
262
- const clientTagSymbol = safeIdentifier(service.name + "ClientTag");
263
- const clientLiveLayerSymbol = safeIdentifier(service.name.charAt(0).toLowerCase() + service.name.slice(1) + "ClientLiveLayer");
285
+ const clientTagSymbol = safeIdentifier(clientName + "Tag");
286
+ const clientLiveLayerSymbol = safeIdentifier(clientNameLower + "LiveLayer");
264
287
  const configTagSymbol = safeIdentifier(service.name + "ConfigTag");
265
- const makeClientTagSymbol = safeIdentifier("make" + service.name + "ClientTag");
266
- const makeClientLiveLayerSymbol = safeIdentifier("make" + service.name + "ClientLiveLayer");
288
+ const makeClientTagSymbol = safeIdentifier("make" + clientName + "Tag");
289
+ const makeClientLiveLayerSymbol = safeIdentifier("make" + clientName + "LiveLayer");
267
290
  // Generate comprehensive JSDoc for client interface
268
291
  f.print("/**");
269
292
  f.print(" * Client interface for making gRPC calls to ", service.name, " service.");
@@ -277,7 +300,7 @@ function generateEffectService(f, service, fileBasename) {
277
300
  f.print(" *");
278
301
  f.print(" * @example");
279
302
  f.print(" * ```typescript");
280
- f.print(" * import { Effect } from \"effect\";");
303
+ f.print(" * import * as Effect from \"effect/Effect\";");
281
304
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
282
305
  f.print(" *");
283
306
  f.print(" * // Use the client in an Effect");
@@ -318,7 +341,8 @@ function generateEffectService(f, service, fileBasename) {
318
341
  f.print(" *");
319
342
  f.print(" * @example");
320
343
  f.print(" * ```typescript");
321
- f.print(" * import { Effect, Layer } from \"effect\";");
344
+ f.print(" * import * as Effect from \"effect/Effect\";");
345
+ f.print(" * import * as Layer from \"effect/Layer\";");
322
346
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
323
347
  f.print(" * import { EffectGrpcClient } from \"@dr_nikson/effect-grpc\";");
324
348
  f.print(" *");
@@ -337,7 +361,8 @@ function generateEffectService(f, service, fileBasename) {
337
361
  f.print(" *");
338
362
  f.print(" * @example");
339
363
  f.print(" * ```typescript");
340
- f.print(" * import { Effect, Layer } from \"effect\";");
364
+ f.print(" * import * as Effect from \"effect/Effect\";");
365
+ f.print(" * import * as Layer from \"effect/Layer\";");
341
366
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
342
367
  f.print(" *");
343
368
  f.print(" * // Create a typed metadata tag");
@@ -367,11 +392,11 @@ function generateEffectService(f, service, fileBasename) {
367
392
  f.print(" * The client layer requires:");
368
393
  f.print(" * - ", configTagSymbol, ": Configuration with the server URL");
369
394
  f.print(" * - EffectGrpcClient.GrpcClientRuntime: The gRPC runtime");
370
- f.print(" * - Scope.Scope: For resource management");
371
395
  f.print(" *");
372
396
  f.print(" * @example");
373
397
  f.print(" * ```typescript");
374
- f.print(" * import { Effect, Layer } from \"effect\";");
398
+ f.print(" * import * as Effect from \"effect/Effect\";");
399
+ f.print(" * import * as Layer from \"effect/Layer\";");
375
400
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
376
401
  f.print(" * import { EffectGrpcClient } from \"@dr_nikson/effect-grpc\";");
377
402
  f.print(" *");
@@ -387,7 +412,7 @@ function generateEffectService(f, service, fileBasename) {
387
412
  f.print(" *");
388
413
  f.print(" * @example");
389
414
  f.print(" * ```typescript");
390
- f.print(" * import { Effect } from \"effect\";");
415
+ f.print(" * import * as Effect from \"effect/Effect\";");
391
416
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
392
417
  f.print(" *");
393
418
  f.print(" * // Advanced usage with metadata transformation");
@@ -419,7 +444,7 @@ function generateEffectService(f, service, fileBasename) {
419
444
  f.print(" ): ", importLayer, ".Layer<");
420
445
  f.print(" ", importContext, ".Tag.Identifier<Tag>,");
421
446
  f.print(" never,");
422
- f.print(" ", configTagSymbol, "[\"Identifier\"] | ", importEffectGrpcClient, ".GrpcClientRuntime | ", importScope, ".Scope");
447
+ f.print(" ", configTagSymbol, "[\"Identifier\"] | ", importEffectGrpcClient, ".GrpcClientRuntime");
423
448
  f.print(" >;");
424
449
  f.print();
425
450
  f.print(" <Tag extends ", clientTagSymbol, ">(");
@@ -427,7 +452,7 @@ function generateEffectService(f, service, fileBasename) {
427
452
  f.print(" ): ", importLayer, ".Layer<");
428
453
  f.print(" ", importContext, ".Tag.Identifier<Tag>,");
429
454
  f.print(" never,");
430
- f.print(" ", configTagSymbol, "[\"Identifier\"] | ", importEffectGrpcClient, ".GrpcClientRuntime | ", importScope, ".Scope");
455
+ f.print(" ", configTagSymbol, "[\"Identifier\"] | ", importEffectGrpcClient, ".GrpcClientRuntime");
431
456
  f.print(" >;");
432
457
  f.print("} = ", makeClientLiveLayerSymbol, ";");
433
458
  f.print();
@@ -454,7 +479,7 @@ function generateEffectService(f, service, fileBasename) {
454
479
  f.print(" *");
455
480
  f.print(" * @example");
456
481
  f.print(" * ```typescript");
457
- f.print(" * import { Layer } from \"effect\";");
482
+ f.print(" * import * as Layer from \"effect/Layer\";");
458
483
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
459
484
  f.print(" *");
460
485
  f.print(" * // Simple configuration with just the base URL");
@@ -503,7 +528,7 @@ function generateEffectService(f, service, fileBasename) {
503
528
  f.print(" } as ", clientSymbol, "<Meta>;");
504
529
  f.print(" });");
505
530
  f.print();
506
- f.print(" return ", importLayer, ".effect(tag, prog);");
531
+ f.print(" return ", importLayer, ".scoped(tag, prog);");
507
532
  f.print();
508
533
  f.print(" function isDefaultMetaArguments(args: unknown): args is readonly [Tag] {");
509
534
  f.print(" return Array.isArray(args) && args.length === 1;");
@@ -1 +1 @@
1
- {"version":3,"file":"protocGenPlugin.js","sourceRoot":"","sources":["../src/protocGenPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocGenPlugin.js","sourceRoot":"","sources":["../src/protocGenPlugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dr_nikson/effect-grpc",
3
- "version": "3.0.0-alpha.2",
3
+ "version": "3.0.0-alpha.5",
4
4
  "description": "gRPC and Protobuf capabilities for the Effect ecosystem",
5
5
  "private": false,
6
6
  "type": "module",
@@ -45,22 +45,24 @@
45
45
  }
46
46
  },
47
47
  "dependencies": {
48
- "@bufbuild/protobuf": "2.8.0",
49
48
  "@bufbuild/protoplugin": "2.9.0",
50
- "@connectrpc/connect": "2.1.0",
51
- "@connectrpc/connect-node": "2.1.0"
49
+ "@connectrpc/connect-node": "2.1.0",
50
+ "@opentelemetry/api": "1.9.0",
51
+ "@opentelemetry/core": "2.0.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@bufbuild/protobuf": "^2.8.0",
55
55
  "@connectrpc/connect": "^2.1.0",
56
- "effect": "^3.17.0"
56
+ "@effect/opentelemetry": "^0.61.0",
57
+ "effect": "^3.19.15"
57
58
  },
58
59
  "devDependencies": {
59
60
  "@bufbuild/buf": "1.57.0",
61
+ "@bufbuild/protobuf": "2.8.0",
60
62
  "@bufbuild/protoc-gen-es": "2.8.0",
61
- "@effect/platform": "0.90.10",
62
- "@effect/platform-node": "0.96.1",
63
- "effect": "3.17.14",
63
+ "@connectrpc/connect": "2.1.0",
64
+ "@effect/opentelemetry": "0.61.0",
65
+ "effect": "3.19.15",
64
66
  "typescript": "5.9.2",
65
67
  "vitest": "3.2.4"
66
68
  },