@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 +102 -0
- package/dist/client.internal.d.ts.map +1 -1
- package/dist/client.internal.js +64 -8
- package/dist/client.internal.js.map +1 -1
- package/dist/protoRuntime.d.ts +10 -1
- package/dist/protoRuntime.d.ts.map +1 -1
- package/dist/protoRuntime.internal.d.ts +25 -1
- package/dist/protoRuntime.internal.d.ts.map +1 -1
- package/dist/protoRuntime.internal.js +57 -5
- package/dist/protoRuntime.internal.js.map +1 -1
- package/dist/protoRuntime.js.map +1 -1
- package/dist/protocGenPlugin.js +56 -28
- package/dist/protocGenPlugin.js.map +1 -1
- package/package.json +10 -8
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":"
|
|
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"}
|
package/dist/client.internal.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"client.internal.js","sourceRoot":"","sources":["../src/client.internal.ts"],"names":[],"mappings":"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"}
|
package/dist/protoRuntime.d.ts
CHANGED
|
@@ -70,7 +70,16 @@ type UnaryClientExecutorFn<I extends DescMessage, O extends DescMessage> = (requ
|
|
|
70
70
|
* ```
|
|
71
71
|
*/
|
|
72
72
|
export interface ServerExecutor<Ctx> {
|
|
73
|
-
|
|
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":"
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"protoRuntime.internal.js","sourceRoot":"","sources":["../src/protoRuntime.internal.ts"],"names":[],"mappings":"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"}
|
package/dist/protoRuntime.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/protocGenPlugin.js
CHANGED
|
@@ -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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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(
|
|
76
|
-
const grpcServiceSymbol = safeIdentifier(
|
|
77
|
-
const serviceTagSymbol = safeIdentifier(
|
|
78
|
-
const serviceLiveLayerSymbol = safeIdentifier(
|
|
79
|
-
const makeTagSymbol = safeIdentifier("make" +
|
|
80
|
-
const makeLiveLayerSymbol = safeIdentifier("make" +
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
263
|
-
const clientLiveLayerSymbol = safeIdentifier(
|
|
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" +
|
|
266
|
-
const makeClientLiveLayerSymbol = safeIdentifier("make" +
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
"@
|
|
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": "^
|
|
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
|
-
"@
|
|
62
|
-
"@effect/
|
|
63
|
-
"effect": "3.
|
|
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
|
},
|