@foam-ai/node-cliengo 0.1.0-alpha.1 → 0.1.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/node-cliengo/src/constants.d.ts +1 -1
  2. package/dist/node-cliengo/src/constants.js +1 -1
  3. package/dist/node-cliengo/src/http/express.d.ts +21 -0
  4. package/dist/node-cliengo/src/http/express.js +63 -4
  5. package/dist/node-cliengo/src/http/fastify.d.ts +10 -0
  6. package/dist/node-cliengo/src/http/fastify.js +48 -3
  7. package/dist/node-cliengo/src/index.d.ts +5 -5
  8. package/dist/node-cliengo/src/index.js +6 -3
  9. package/dist/node-cliengo/src/init.d.ts +14 -11
  10. package/dist/node-cliengo/src/init.js +57 -49
  11. package/dist/node-cliengo/src/job.d.ts +3 -3
  12. package/dist/node-cliengo/src/job.js +1 -5
  13. package/dist/node-cliengo/src/logs/pino-destination.d.ts +7 -2
  14. package/dist/node-cliengo/src/logs/pino-destination.js +34 -9
  15. package/dist/node-cliengo/src/logs/pino-mixin.d.ts +5 -4
  16. package/dist/node-cliengo/src/logs/pino-mixin.js +9 -5
  17. package/dist/node-cliengo/src/logs/winston-transport.js +11 -0
  18. package/dist/node-cliengo/src/metrics/instruments.d.ts +9 -11
  19. package/dist/node-cliengo/src/metrics/instruments.js +19 -55
  20. package/dist/node-cliengo/src/nr.d.ts +1 -1
  21. package/dist/node-cliengo/src/nr.js +1 -1
  22. package/dist/node-cliengo/src/sns.d.ts +1 -4
  23. package/dist/node-cliengo/src/sns.js +2 -9
  24. package/dist/node-cliengo/src/sqs.d.ts +3 -3
  25. package/dist/node-cliengo/src/sqs.js +1 -1
  26. package/dist/node-cliengo/src/trace-bridge.d.ts +31 -27
  27. package/dist/node-cliengo/src/trace-bridge.js +67 -36
  28. package/dist/node-cliengo/src/types.d.ts +10 -10
  29. package/dist/node-cliengo/src/types.js +2 -2
  30. package/package.json +12 -10
@@ -2,8 +2,8 @@
2
2
  * All public interfaces and minimal type stubs for @foam/node-cliengo.
3
3
  *
4
4
  * Why this file exists:
5
- * Defines every public type the library exposes (OtelBridge, InitOptions,
6
- * TraceContext, BridgeMetrics) plus lightweight stubs for external frameworks
5
+ * Defines every public type the library exposes (FoamInstance, InitOptions,
6
+ * TraceContext, FoamMetrics) plus lightweight stubs for external frameworks
7
7
  * (Express, Fastify, Winston, Pino, New Relic). These stubs exist so the
8
8
  * library never imports framework types at the top level — services that only
9
9
  * use Pino don't need Winston installed, and vice versa.
@@ -41,22 +41,19 @@ export interface TraceContext {
41
41
  spanId: string;
42
42
  traceparent: string;
43
43
  }
44
- export interface BridgeMetrics {
44
+ export interface FoamMetrics {
45
45
  messageProcessingDuration: Histogram;
46
46
  messageProcessingErrors: Counter;
47
47
  messagesProcessed: Counter;
48
- customHistogram(name: string, description: string, unit?: string): Histogram;
49
- customCounter(name: string, description: string, unit?: string): Counter;
50
- customGauge(name: string, description: string, unit?: string): ObservableGauge;
51
48
  }
52
- export interface OtelBridge {
49
+ export interface FoamInstance {
53
50
  tracer: Tracer;
54
51
  meter: Meter;
55
52
  logger: LoggerProvider;
56
53
  traceProvider: BasicTracerProvider;
57
54
  meterProvider: MeterProvider;
58
55
  loggerProvider: LoggerProvider;
59
- metrics: BridgeMetrics;
56
+ metrics: FoamMetrics;
60
57
  getTraceContext(): TraceContext;
61
58
  createExpressMiddleware(): ExpressRequestHandler;
62
59
  createExpressErrorHandler(): ExpressErrorHandler;
@@ -64,11 +61,14 @@ export interface OtelBridge {
64
61
  createWinstonFormat(): WinstonFormat;
65
62
  createWinstonTransport(): WinstonTransport;
66
63
  createPinoMixin(): () => Record<string, string>;
64
+ createPinoHttpOptions(): {
65
+ customProps: (req: any) => Record<string, string>;
66
+ };
67
67
  createPinoDestination(): NodeJS.WritableStream;
68
- buildTraceparent(): string | undefined;
68
+ buildTraceparent(): string;
69
69
  injectSnsAttributes(attrs: Record<string, SnsMessageAttributeValue>): Record<string, SnsMessageAttributeValue>;
70
70
  injectJobData<T extends Record<string, unknown>>(data: T): T & {
71
- traceparent?: string;
71
+ traceparent: string;
72
72
  };
73
73
  wrapSqsConsumer(tracer: Tracer, spanName: string, msg: SqsMessage, fn: () => Promise<void>): Promise<void>;
74
74
  wrapJobConsumer(tracer: Tracer, spanName: string, jobData: Record<string, unknown>, fn: () => Promise<void>): Promise<void>;
@@ -3,8 +3,8 @@
3
3
  * All public interfaces and minimal type stubs for @foam/node-cliengo.
4
4
  *
5
5
  * Why this file exists:
6
- * Defines every public type the library exposes (OtelBridge, InitOptions,
7
- * TraceContext, BridgeMetrics) plus lightweight stubs for external frameworks
6
+ * Defines every public type the library exposes (FoamInstance, InitOptions,
7
+ * TraceContext, FoamMetrics) plus lightweight stubs for external frameworks
8
8
  * (Express, Fastify, Winston, Pino, New Relic). These stubs exist so the
9
9
  * library never imports framework types at the top level — services that only
10
10
  * use Pino don't need Winston installed, and vice versa.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@foam-ai/node-cliengo",
3
- "version": "0.1.0-alpha.1",
4
- "description": "Unified observability (traces, logs, metrics) for Cliengo Node.js services, bridging New Relic APM with Foam's OTel collector.",
3
+ "version": "0.1.0-alpha.11",
4
+ "description": "Unified observability (traces, logs, metrics) for Cliengo Node.js services, connecting New Relic APM with Foam's OTel collector.",
5
5
  "main": "dist/node-cliengo/src/index.js",
6
6
  "types": "dist/node-cliengo/src/index.d.ts",
7
7
  "exports": {
@@ -20,8 +20,8 @@
20
20
  "peerDependencies": {
21
21
  "@opentelemetry/api": "^1.9.0",
22
22
  "newrelic": ">=12.0.0",
23
- "winston": "^3.0.0",
24
- "pino": "^8.0.0 || ^9.0.0"
23
+ "pino": "^8.0.0 || ^9.0.0",
24
+ "winston": "^3.0.0"
25
25
  },
26
26
  "peerDependenciesMeta": {
27
27
  "newrelic": {
@@ -35,18 +35,20 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@opentelemetry/sdk-trace-base": "^2.0.0",
39
- "@opentelemetry/sdk-logs": "^0.203.0",
40
- "@opentelemetry/sdk-metrics": "^2.0.1",
41
- "@opentelemetry/exporter-trace-otlp-http": "^0.203.0",
38
+ "@opentelemetry/api-logs": "^0.203.0",
42
39
  "@opentelemetry/exporter-logs-otlp-http": "^0.203.0",
43
40
  "@opentelemetry/exporter-metrics-otlp-http": "^0.201.1",
41
+ "@opentelemetry/exporter-trace-otlp-http": "^0.203.0",
44
42
  "@opentelemetry/resources": "^2.0.1",
45
- "@opentelemetry/api-logs": "^0.203.0"
43
+ "@opentelemetry/sdk-logs": "^0.203.0",
44
+ "@opentelemetry/sdk-metrics": "^2.0.1",
45
+ "@opentelemetry/sdk-trace-base": "^2.0.0"
46
46
  },
47
47
  "devDependencies": {
48
+ "@opentelemetry/api": "^1.9.1",
49
+ "@types/node": "^20.11.0",
48
50
  "typescript": "^6.0.2",
49
- "@types/node": "^20.11.0"
51
+ "vitest": "^4.1.8"
50
52
  },
51
53
  "engines": {
52
54
  "node": ">=18"