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

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,21 @@ 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
+ Scope: safeIdentifier("Scope"),
18
+ };
19
+ f.print('import * as ', effectImports.Context, ' from "effect/Context";');
20
+ f.print('import * as ', effectImports.Effect, ' from "effect/Effect";');
21
+ f.print('import * as ', effectImports.Layer, ' from "effect/Layer";');
22
+ f.print('import * as ', effectImports.Scope, ' from "effect/Scope";');
23
+ f.print();
12
24
  // Extract basename from file path for import examples
13
25
  const fileBasename = file.name.split('/').pop() || file.name;
14
- file.services.forEach(service => generateEffectService(f, service, fileBasename));
26
+ file.services.forEach(service => generateEffectService(f, service, fileBasename, effectImports));
15
27
  /*
16
28
  for (const service of file.services) {
17
29
  f.print(f.jsDoc(service));
@@ -62,22 +74,31 @@ function generateTs(schema) {
62
74
  }*/
63
75
  }
64
76
  }
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");
77
+ /**
78
+ * Appends a suffix to a name only if the name doesn't already end with that suffix.
79
+ * This prevents names like "HelloWorldServiceService" when the proto service
80
+ * is already named "HelloWorldService".
81
+ */
82
+ function appendSuffixIfNeeded(name, suffix) {
83
+ return name.endsWith(suffix) ? name : name + suffix;
84
+ }
85
+ function generateEffectService(f, service, fileBasename, effectImports) {
86
+ // Effect imports are added manually as namespace imports in generateTs()
87
+ const { Context: importContext, Effect: importEffect, Layer: importLayer, Scope: importScope } = effectImports;
70
88
  const importEffectGrpcService = f.import("EffectGrpcServer", packageJson.name);
71
89
  const importGrpcException = f.import("GrpcException", packageJson.name);
72
90
  const importService = f.importSchema(service);
91
+ // Use appendSuffixIfNeeded to avoid duplicate suffixes (e.g., "HelloWorldServiceService")
92
+ const serviceName = appendSuffixIfNeeded(service.name, "Service");
93
+ const serviceNameLower = serviceName.charAt(0).toLowerCase() + serviceName.slice(1);
73
94
  const serviceId = service.typeName;
74
95
  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");
96
+ const serviceSymbol = safeIdentifier(serviceName);
97
+ const grpcServiceSymbol = safeIdentifier(serviceName.replace(/Service$/, "") + "GrpcService");
98
+ const serviceTagSymbol = safeIdentifier(serviceName + "Tag");
99
+ const serviceLiveLayerSymbol = safeIdentifier(serviceNameLower + "LiveLayer");
100
+ const makeTagSymbol = safeIdentifier("make" + serviceName + "Tag");
101
+ const makeLiveLayerSymbol = safeIdentifier("make" + serviceName + "LiveLayer");
81
102
  // Generate service ID constant with JSDoc
82
103
  f.print("/**");
83
104
  f.print(" * Unique identifier for the ", service.name, " gRPC service.");
@@ -99,7 +120,7 @@ function generateEffectService(f, service, fileBasename) {
99
120
  f.print(" *");
100
121
  f.print(" * @example");
101
122
  f.print(" * ```typescript");
102
- f.print(" * import { Effect } from \"effect\";");
123
+ f.print(" * import * as Effect from \"effect/Effect\";");
103
124
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
104
125
  f.print(" *");
105
126
  f.print(" * // Simple implementation with default context");
@@ -134,7 +155,8 @@ function generateEffectService(f, service, fileBasename) {
134
155
  f.print(" *");
135
156
  f.print(" * @example");
136
157
  f.print(" * ```typescript");
137
- f.print(" * import { Effect, Layer } from \"effect\";");
158
+ f.print(" * import * as Effect from \"effect/Effect\";");
159
+ f.print(" * import * as Layer from \"effect/Layer\";");
138
160
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
139
161
  f.print(" *");
140
162
  f.print(" * // Define your service implementation");
@@ -193,7 +215,7 @@ function generateEffectService(f, service, fileBasename) {
193
215
  f.print(" *");
194
216
  f.print(" * @example");
195
217
  f.print(" * ```typescript");
196
- f.print(" * import { Effect } from \"effect\";");
218
+ f.print(" * import * as Effect from \"effect/Effect\";");
197
219
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
198
220
  f.print(" *");
199
221
  f.print(" * // Use default context tag");
@@ -208,7 +230,7 @@ function generateEffectService(f, service, fileBasename) {
208
230
  f.print(" *");
209
231
  f.print(" * @example");
210
232
  f.print(" * ```typescript");
211
- f.print(" * import { Effect } from \"effect\";");
233
+ f.print(" * import * as Effect from \"effect/Effect\";");
212
234
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
213
235
  f.print(" *");
214
236
  f.print(" * // Create a typed context tag");
@@ -249,7 +271,7 @@ function generateEffectService(f, service, fileBasename) {
249
271
  service.methods.forEach((method) => {
250
272
  if (method.methodKind === "unary") {
251
273
  f.print(" ", method.localName, ": (req, ctx) =>");
252
- f.print(" executor.unary(req, ctx, (req, ctx) => service.", method.localName, "(req, ctx)),");
274
+ f.print(" executor.unary(`${", serviceIdSymbol, "}/", method.name, "`, req, ctx, (req, ctx) => service.", method.localName, "(req, ctx)),");
253
275
  }
254
276
  });
255
277
  f.print(" }));");
@@ -257,13 +279,16 @@ function generateEffectService(f, service, fileBasename) {
257
279
  f.print(" return ", importLayer, ".succeed(tag, instance);");
258
280
  f.print("}");
259
281
  f.print();
260
- const clientSymbol = safeIdentifier(service.name + "Client");
282
+ // Use appendSuffixIfNeeded to avoid duplicate suffixes (e.g., "HelloWorldClientClient")
283
+ const clientName = appendSuffixIfNeeded(service.name, "Client");
284
+ const clientNameLower = clientName.charAt(0).toLowerCase() + clientName.slice(1);
285
+ const clientSymbol = safeIdentifier(clientName);
261
286
  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");
287
+ const clientTagSymbol = safeIdentifier(clientName + "Tag");
288
+ const clientLiveLayerSymbol = safeIdentifier(clientNameLower + "LiveLayer");
264
289
  const configTagSymbol = safeIdentifier(service.name + "ConfigTag");
265
- const makeClientTagSymbol = safeIdentifier("make" + service.name + "ClientTag");
266
- const makeClientLiveLayerSymbol = safeIdentifier("make" + service.name + "ClientLiveLayer");
290
+ const makeClientTagSymbol = safeIdentifier("make" + clientName + "Tag");
291
+ const makeClientLiveLayerSymbol = safeIdentifier("make" + clientName + "LiveLayer");
267
292
  // Generate comprehensive JSDoc for client interface
268
293
  f.print("/**");
269
294
  f.print(" * Client interface for making gRPC calls to ", service.name, " service.");
@@ -277,7 +302,7 @@ function generateEffectService(f, service, fileBasename) {
277
302
  f.print(" *");
278
303
  f.print(" * @example");
279
304
  f.print(" * ```typescript");
280
- f.print(" * import { Effect } from \"effect\";");
305
+ f.print(" * import * as Effect from \"effect/Effect\";");
281
306
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
282
307
  f.print(" *");
283
308
  f.print(" * // Use the client in an Effect");
@@ -318,7 +343,8 @@ function generateEffectService(f, service, fileBasename) {
318
343
  f.print(" *");
319
344
  f.print(" * @example");
320
345
  f.print(" * ```typescript");
321
- f.print(" * import { Effect, Layer } from \"effect\";");
346
+ f.print(" * import * as Effect from \"effect/Effect\";");
347
+ f.print(" * import * as Layer from \"effect/Layer\";");
322
348
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
323
349
  f.print(" * import { EffectGrpcClient } from \"@dr_nikson/effect-grpc\";");
324
350
  f.print(" *");
@@ -337,7 +363,8 @@ function generateEffectService(f, service, fileBasename) {
337
363
  f.print(" *");
338
364
  f.print(" * @example");
339
365
  f.print(" * ```typescript");
340
- f.print(" * import { Effect, Layer } from \"effect\";");
366
+ f.print(" * import * as Effect from \"effect/Effect\";");
367
+ f.print(" * import * as Layer from \"effect/Layer\";");
341
368
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
342
369
  f.print(" *");
343
370
  f.print(" * // Create a typed metadata tag");
@@ -371,7 +398,8 @@ function generateEffectService(f, service, fileBasename) {
371
398
  f.print(" *");
372
399
  f.print(" * @example");
373
400
  f.print(" * ```typescript");
374
- f.print(" * import { Effect, Layer } from \"effect\";");
401
+ f.print(" * import * as Effect from \"effect/Effect\";");
402
+ f.print(" * import * as Layer from \"effect/Layer\";");
375
403
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
376
404
  f.print(" * import { EffectGrpcClient } from \"@dr_nikson/effect-grpc\";");
377
405
  f.print(" *");
@@ -387,7 +415,7 @@ function generateEffectService(f, service, fileBasename) {
387
415
  f.print(" *");
388
416
  f.print(" * @example");
389
417
  f.print(" * ```typescript");
390
- f.print(" * import { Effect } from \"effect\";");
418
+ f.print(" * import * as Effect from \"effect/Effect\";");
391
419
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
392
420
  f.print(" *");
393
421
  f.print(" * // Advanced usage with metadata transformation");
@@ -454,7 +482,7 @@ function generateEffectService(f, service, fileBasename) {
454
482
  f.print(" *");
455
483
  f.print(" * @example");
456
484
  f.print(" * ```typescript");
457
- f.print(" * import { Layer } from \"effect\";");
485
+ f.print(" * import * as Layer from \"effect/Layer\";");
458
486
  f.print(" * import * as effectProto from \"./" + fileBasename + "_effect.js\";");
459
487
  f.print(" *");
460
488
  f.print(" * // Simple configuration with just the base URL");
@@ -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.3",
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
  },