@fougere/observability 0.12.2-alpha.0 → 0.12.5-alpha.0

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.
@@ -47,6 +47,7 @@ function payload(service, spans) {
47
47
  // viewer draws the two differently. `selfMs` is NOT sent — a collector
48
48
  // derives it from the tree it already holds.
49
49
  kind: span.kind === 'statement' ? CLIENT : INTERNAL,
50
+ attributes: attributesOf(span),
50
51
  startTimeUnixNano: nanos(span.startedAt),
51
52
  endTimeUnixNano: nanos(span.startedAt + span.ms),
52
53
  status: span.error ? { code: ERROR, message: span.error } : { code: OK },
@@ -57,6 +58,24 @@ function payload(service, spans) {
57
58
  ],
58
59
  };
59
60
  }
61
+ /**
62
+ * What a reader groups and filters by, under OpenTelemetry's RPC names where it has them —
63
+ * a span that carried none left every collector with a name and a duration.
64
+ */
65
+ function attributesOf(span) {
66
+ const values = [
67
+ ['rpc.system', 'fougere'],
68
+ ['rpc.service', span.entity],
69
+ ['rpc.method', span.operation],
70
+ ['fougere.frond', span.frond],
71
+ ['fougere.caller_frond', span.callerFrond],
72
+ ['fougere.statements', span.kind === 'operation' ? span.statements : undefined],
73
+ ['fougere.error', span.error],
74
+ ];
75
+ return values
76
+ .filter((entry) => entry[1] !== undefined)
77
+ .map(([key, value]) => ({ key, value: typeof value === 'number' ? { intValue: String(value) } : { stringValue: value } }));
78
+ }
60
79
  /** Epoch milliseconds → the int64 nanoseconds OTLP wants, as a string. */
61
80
  function nanos(ms) {
62
81
  return `${Math.round(ms * 1e6)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"OtlpExporter.js","sourceRoot":"","sources":["../../src/otlp/OtlpExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAYvD,iDAAiD;AACjD,MAAM,EAAE,GAAG,CAAC,CAAC;AAEb,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,2DAA2D;AAC3D,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAM,UAAU,IAAI,CAAC,OAAoB;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,iCAAiC,CAAC;IAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CACzB,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,EACjE,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,IAAI,MAAM,GAAmB,EAAE,CAAC;IAEhC,KAAK,UAAU,KAAK;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,EAAE,CAAC;QACZ,gFAAgF;QAChF,4CAA4C;QAC5C,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;YACnF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;SAChH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEhD,OAAO;QACL,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,OAAO,CAAC,OAAe,EAAE,KAAqB;IACrD,OAAO;QACL,aAAa,EAAE;YACb;gBACE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE;gBACpF,UAAU,EAAE;oBACV;wBACE,KAAK,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE;wBACzC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACzD,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;4BACxC,2EAA2E;4BAC3E,uEAAuE;4BACvE,6CAA6C;4BAC7C,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;4BACnD,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;4BACxC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;4BAChD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;yBACzE,CAAC,CAAC;qBACJ;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"OtlpExporter.js","sourceRoot":"","sources":["../../src/otlp/OtlpExporter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fougere/observability",
3
- "version": "0.12.2-alpha.0",
3
+ "version": "0.12.5-alpha.0",
4
4
  "description": "Optional observability for Fougere: one span per operation, W3C Trace Context across any transport.",
5
5
  "keywords": [
6
6
  "fougere",
@@ -31,17 +31,17 @@
31
31
  "src"
32
32
  ],
33
33
  "peerDependencies": {
34
- "@fougere/core": "^0.12.2-alpha.0",
35
- "@fougere/adapter-sql": "^0.12.2-alpha.0"
34
+ "@fougere/core": "^0.12.5-alpha.0",
35
+ "@fougere/adapter-sql": "^0.12.5-alpha.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "vitest": "^4.1.0",
39
- "@fougere/compiler": "0.12.2-alpha.0",
40
- "@fougere/adapter-sql": "0.12.2-alpha.0",
41
- "@fougere/core": "0.12.2-alpha.0",
42
- "@fougere/schema": "0.12.2-alpha.0",
43
- "@fougere/transport-http": "0.12.2-alpha.0",
44
- "@fougere/container": "0.12.2-alpha.0"
39
+ "@fougere/adapter-sql": "0.12.5-alpha.0",
40
+ "@fougere/core": "0.12.5-alpha.0",
41
+ "@fougere/compiler": "0.12.5-alpha.0",
42
+ "@fougere/container": "0.12.5-alpha.0",
43
+ "@fougere/schema": "0.12.5-alpha.0",
44
+ "@fougere/transport-http": "0.12.5-alpha.0"
45
45
  },
46
46
  "publishConfig": {
47
47
  "access": "public"
@@ -70,6 +70,7 @@ function payload(service: string, spans: FinishedSpan[]) {
70
70
  // viewer draws the two differently. `selfMs` is NOT sent — a collector
71
71
  // derives it from the tree it already holds.
72
72
  kind: span.kind === 'statement' ? CLIENT : INTERNAL,
73
+ attributes: attributesOf(span),
73
74
  startTimeUnixNano: nanos(span.startedAt),
74
75
  endTimeUnixNano: nanos(span.startedAt + span.ms),
75
76
  status: span.error ? { code: ERROR, message: span.error } : { code: OK },
@@ -81,6 +82,26 @@ function payload(service: string, spans: FinishedSpan[]) {
81
82
  };
82
83
  }
83
84
 
85
+ /**
86
+ * What a reader groups and filters by, under OpenTelemetry's RPC names where it has them —
87
+ * a span that carried none left every collector with a name and a duration.
88
+ */
89
+ function attributesOf(span: FinishedSpan) {
90
+ const values: [string, string | number | undefined][] = [
91
+ ['rpc.system', 'fougere'],
92
+ ['rpc.service', span.entity],
93
+ ['rpc.method', span.operation],
94
+ ['fougere.frond', span.frond],
95
+ ['fougere.caller_frond', span.callerFrond],
96
+ ['fougere.statements', span.kind === 'operation' ? span.statements : undefined],
97
+ ['fougere.error', span.error],
98
+ ];
99
+
100
+ return values
101
+ .filter((entry): entry is [string, string | number] => entry[1] !== undefined)
102
+ .map(([key, value]) => ({ key, value: typeof value === 'number' ? { intValue: String(value) } : { stringValue: value } }));
103
+ }
104
+
84
105
  /** Epoch milliseconds → the int64 nanoseconds OTLP wants, as a string. */
85
106
  function nanos(ms: number): string {
86
107
  return `${Math.round(ms * 1e6)}`;