@reactionary/source 0.0.29 → 0.0.30

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.
@@ -5,7 +5,6 @@
5
5
  # Service identification
6
6
  OTEL_SERVICE_NAME=reactionary-trpc-example
7
7
  OTEL_SERVICE_VERSION=1.0.0
8
- DEPLOYMENT_ENVIRONMENT=development
9
8
 
10
9
  # Traces exporter: console | otlp | otlp/http | none
11
10
  OTEL_TRACES_EXPORTER=console
@@ -16,6 +15,7 @@ OTEL_METRICS_EXPORTER=console
16
15
  # For OTLP exporters (e.g., Honeycomb, Jaeger, Grafana)
17
16
  # OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io
18
17
  # OTEL_EXPORTER_OTLP_HEADERS=x-honeycomb-team=your-api-key
18
+ # OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
19
19
 
20
20
  # Or use specific endpoints for traces/metrics
21
21
  # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://api.honeycomb.io/v1/traces
@@ -54,10 +54,6 @@ app.use(
54
54
 
55
55
  const server = app.listen(3000, () => {
56
56
  console.log('Server started on http://localhost:3000');
57
- // OTEL auto-initializes based on standard env vars
58
- if (process.env['OTEL_LOG_LEVEL'] === 'debug') {
59
- console.log('OTEL traces exporter:', process.env['OTEL_TRACES_EXPORTER'] || 'console');
60
- console.log('OTEL metrics exporter:', process.env['OTEL_METRICS_EXPORTER'] || 'console');
61
- }
57
+ // OpenTelemetry automatically initializes based on OTEL_* environment variables
62
58
  });
63
59
 
package/otel/README.md CHANGED
@@ -43,7 +43,6 @@ Use standard OpenTelemetry environment variables. No code changes needed.
43
43
  # Service identification
44
44
  OTEL_SERVICE_NAME=my-service
45
45
  OTEL_SERVICE_VERSION=1.0.0
46
- DEPLOYMENT_ENVIRONMENT=production
47
46
 
48
47
  # Traces exporter (console | otlp | otlp/http | none)
49
48
  OTEL_TRACES_EXPORTER=otlp
package/otel/package.json CHANGED
@@ -7,14 +7,6 @@
7
7
  "dependencies": {
8
8
  "@opentelemetry/api": "^1.9.0",
9
9
  "@opentelemetry/sdk-node": "^0.203.0",
10
- "@opentelemetry/sdk-trace-base": "^2.0.1",
11
- "@opentelemetry/sdk-metrics": "^2.0.1",
12
- "@opentelemetry/resources": "^2.0.1",
13
- "@opentelemetry/semantic-conventions": "^1.36.0",
14
- "@opentelemetry/exporter-trace-otlp-http": "^0.203.0",
15
- "@opentelemetry/exporter-metrics-otlp-http": "^0.203.0",
16
- "@opentelemetry/instrumentation-http": "^0.203.0",
17
- "@opentelemetry/instrumentation-express": "^0.52.0",
18
10
  "@trpc/server": "^11.1.2"
19
11
  }
20
12
  }
@@ -0,0 +1,805 @@
1
+ lockfileVersion: '6.0'
2
+
3
+ settings:
4
+ autoInstallPeers: true
5
+ excludeLinksFromLockfile: false
6
+
7
+ importers:
8
+
9
+ .:
10
+ dependencies:
11
+ '@opentelemetry/api':
12
+ specifier: ^1.9.0
13
+ version: 1.9.0
14
+ '@opentelemetry/exporter-metrics-otlp-http':
15
+ specifier: ^0.203.0
16
+ version: 0.203.0(@opentelemetry/api@1.9.0)
17
+ '@opentelemetry/exporter-trace-otlp-http':
18
+ specifier: ^0.203.0
19
+ version: 0.203.0(@opentelemetry/api@1.9.0)
20
+ '@opentelemetry/instrumentation-express':
21
+ specifier: ^0.52.0
22
+ version: 0.52.0(@opentelemetry/api@1.9.0)
23
+ '@opentelemetry/instrumentation-http':
24
+ specifier: ^0.203.0
25
+ version: 0.203.0(@opentelemetry/api@1.9.0)
26
+ '@opentelemetry/resources':
27
+ specifier: ^2.0.1
28
+ version: 2.0.1(@opentelemetry/api@1.9.0)
29
+ '@opentelemetry/sdk-metrics':
30
+ specifier: ^2.0.1
31
+ version: 2.0.1(@opentelemetry/api@1.9.0)
32
+ '@opentelemetry/sdk-node':
33
+ specifier: ^0.203.0
34
+ version: 0.203.0(@opentelemetry/api@1.9.0)
35
+ '@opentelemetry/sdk-trace-base':
36
+ specifier: ^2.0.1
37
+ version: 2.0.1(@opentelemetry/api@1.9.0)
38
+ '@opentelemetry/semantic-conventions':
39
+ specifier: ^1.36.0
40
+ version: 1.36.0
41
+ '@trpc/server':
42
+ specifier: ^11.1.2
43
+ version: 11.5.0(typescript@5.7.3)
44
+
45
+ ..: {}
46
+
47
+ ../core: {}
48
+
49
+ ../dist/core: {}
50
+
51
+ ../dist/examples/node: {}
52
+
53
+ ../dist/examples/trpc-node: {}
54
+
55
+ ../dist/otel: {}
56
+
57
+ ../dist/providers/algolia: {}
58
+
59
+ ../dist/providers/commercetools: {}
60
+
61
+ ../dist/providers/fake: {}
62
+
63
+ ../dist/providers/posthog: {}
64
+
65
+ ../dist/trpc: {}
66
+
67
+ ../examples/node: {}
68
+
69
+ ../providers/algolia: {}
70
+
71
+ ../providers/commercetools: {}
72
+
73
+ ../providers/fake: {}
74
+
75
+ ../providers/posthog: {}
76
+
77
+ ../trpc: {}
78
+
79
+ dist/core/core: {}
80
+
81
+ dist/examples/trpc-node: {}
82
+
83
+ dist/otel: {}
84
+
85
+ dist/providers/algolia/providers/algolia: {}
86
+
87
+ dist/providers/commercetools/providers/commercetools: {}
88
+
89
+ dist/providers/fake/providers/fake: {}
90
+
91
+ dist/providers/posthog: {}
92
+
93
+ dist/trpc/trpc: {}
94
+
95
+ packages:
96
+
97
+ /@grpc/grpc-js@1.13.4:
98
+ resolution: {integrity: sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==}
99
+ engines: {node: '>=12.10.0'}
100
+ dependencies:
101
+ '@grpc/proto-loader': 0.7.15
102
+ '@js-sdsl/ordered-map': 4.4.2
103
+ dev: false
104
+
105
+ /@grpc/proto-loader@0.7.15:
106
+ resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==}
107
+ engines: {node: '>=6'}
108
+ hasBin: true
109
+ dependencies:
110
+ lodash.camelcase: 4.3.0
111
+ long: 5.3.2
112
+ protobufjs: 7.5.4
113
+ yargs: 17.7.2
114
+ dev: false
115
+
116
+ /@js-sdsl/ordered-map@4.4.2:
117
+ resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==}
118
+ dev: false
119
+
120
+ /@opentelemetry/api-logs@0.203.0:
121
+ resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==}
122
+ engines: {node: '>=8.0.0'}
123
+ dependencies:
124
+ '@opentelemetry/api': 1.9.0
125
+ dev: false
126
+
127
+ /@opentelemetry/api@1.9.0:
128
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
129
+ engines: {node: '>=8.0.0'}
130
+ dev: false
131
+
132
+ /@opentelemetry/context-async-hooks@2.0.1(@opentelemetry/api@1.9.0):
133
+ resolution: {integrity: sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==}
134
+ engines: {node: ^18.19.0 || >=20.6.0}
135
+ peerDependencies:
136
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
137
+ dependencies:
138
+ '@opentelemetry/api': 1.9.0
139
+ dev: false
140
+
141
+ /@opentelemetry/core@2.0.1(@opentelemetry/api@1.9.0):
142
+ resolution: {integrity: sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==}
143
+ engines: {node: ^18.19.0 || >=20.6.0}
144
+ peerDependencies:
145
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
146
+ dependencies:
147
+ '@opentelemetry/api': 1.9.0
148
+ '@opentelemetry/semantic-conventions': 1.36.0
149
+ dev: false
150
+
151
+ /@opentelemetry/exporter-logs-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0):
152
+ resolution: {integrity: sha512-g/2Y2noc/l96zmM+g0LdeuyYKINyBwN6FJySoU15LHPLcMN/1a0wNk2SegwKcxrRdE7Xsm7fkIR5n6XFe3QpPw==}
153
+ engines: {node: ^18.19.0 || >=20.6.0}
154
+ peerDependencies:
155
+ '@opentelemetry/api': ^1.3.0
156
+ dependencies:
157
+ '@grpc/grpc-js': 1.13.4
158
+ '@opentelemetry/api': 1.9.0
159
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
160
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
161
+ '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
162
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
163
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
164
+ dev: false
165
+
166
+ /@opentelemetry/exporter-logs-otlp-http@0.203.0(@opentelemetry/api@1.9.0):
167
+ resolution: {integrity: sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==}
168
+ engines: {node: ^18.19.0 || >=20.6.0}
169
+ peerDependencies:
170
+ '@opentelemetry/api': ^1.3.0
171
+ dependencies:
172
+ '@opentelemetry/api': 1.9.0
173
+ '@opentelemetry/api-logs': 0.203.0
174
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
175
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
176
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
177
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
178
+ dev: false
179
+
180
+ /@opentelemetry/exporter-logs-otlp-proto@0.203.0(@opentelemetry/api@1.9.0):
181
+ resolution: {integrity: sha512-nl/7S91MXn5R1aIzoWtMKGvqxgJgepB/sH9qW0rZvZtabnsjbf8OQ1uSx3yogtvLr0GzwD596nQKz2fV7q2RBw==}
182
+ engines: {node: ^18.19.0 || >=20.6.0}
183
+ peerDependencies:
184
+ '@opentelemetry/api': ^1.3.0
185
+ dependencies:
186
+ '@opentelemetry/api': 1.9.0
187
+ '@opentelemetry/api-logs': 0.203.0
188
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
189
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
190
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
191
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
192
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
193
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
194
+ dev: false
195
+
196
+ /@opentelemetry/exporter-metrics-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0):
197
+ resolution: {integrity: sha512-FCCj9nVZpumPQSEI57jRAA89hQQgONuoC35Lt+rayWY/mzCAc6BQT7RFyFaZKJ2B7IQ8kYjOCPsF/HGFWjdQkQ==}
198
+ engines: {node: ^18.19.0 || >=20.6.0}
199
+ peerDependencies:
200
+ '@opentelemetry/api': ^1.3.0
201
+ dependencies:
202
+ '@grpc/grpc-js': 1.13.4
203
+ '@opentelemetry/api': 1.9.0
204
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
205
+ '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
206
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
207
+ '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
208
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
209
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
210
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
211
+ dev: false
212
+
213
+ /@opentelemetry/exporter-metrics-otlp-http@0.203.0(@opentelemetry/api@1.9.0):
214
+ resolution: {integrity: sha512-HFSW10y8lY6BTZecGNpV3GpoSy7eaO0Z6GATwZasnT4bEsILp8UJXNG5OmEsz4SdwCSYvyCbTJdNbZP3/8LGCQ==}
215
+ engines: {node: ^18.19.0 || >=20.6.0}
216
+ peerDependencies:
217
+ '@opentelemetry/api': ^1.3.0
218
+ dependencies:
219
+ '@opentelemetry/api': 1.9.0
220
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
221
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
222
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
223
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
224
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
225
+ dev: false
226
+
227
+ /@opentelemetry/exporter-metrics-otlp-proto@0.203.0(@opentelemetry/api@1.9.0):
228
+ resolution: {integrity: sha512-OZnhyd9npU7QbyuHXFEPVm3LnjZYifuKpT3kTnF84mXeEQ84pJJZgyLBpU4FSkSwUkt/zbMyNAI7y5+jYTWGIg==}
229
+ engines: {node: ^18.19.0 || >=20.6.0}
230
+ peerDependencies:
231
+ '@opentelemetry/api': ^1.3.0
232
+ dependencies:
233
+ '@opentelemetry/api': 1.9.0
234
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
235
+ '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
236
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
237
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
238
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
239
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
240
+ dev: false
241
+
242
+ /@opentelemetry/exporter-prometheus@0.203.0(@opentelemetry/api@1.9.0):
243
+ resolution: {integrity: sha512-2jLuNuw5m4sUj/SncDf/mFPabUxMZmmYetx5RKIMIQyPnl6G6ooFzfeE8aXNRf8YD1ZXNlCnRPcISxjveGJHNg==}
244
+ engines: {node: ^18.19.0 || >=20.6.0}
245
+ peerDependencies:
246
+ '@opentelemetry/api': ^1.3.0
247
+ dependencies:
248
+ '@opentelemetry/api': 1.9.0
249
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
250
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
251
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
252
+ dev: false
253
+
254
+ /@opentelemetry/exporter-trace-otlp-grpc@0.203.0(@opentelemetry/api@1.9.0):
255
+ resolution: {integrity: sha512-322coOTf81bm6cAA8+ML6A+m4r2xTCdmAZzGNTboPXRzhwPt4JEmovsFAs+grpdarObd68msOJ9FfH3jxM6wqA==}
256
+ engines: {node: ^18.19.0 || >=20.6.0}
257
+ peerDependencies:
258
+ '@opentelemetry/api': ^1.3.0
259
+ dependencies:
260
+ '@grpc/grpc-js': 1.13.4
261
+ '@opentelemetry/api': 1.9.0
262
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
263
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
264
+ '@opentelemetry/otlp-grpc-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
265
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
266
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
267
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
268
+ dev: false
269
+
270
+ /@opentelemetry/exporter-trace-otlp-http@0.203.0(@opentelemetry/api@1.9.0):
271
+ resolution: {integrity: sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==}
272
+ engines: {node: ^18.19.0 || >=20.6.0}
273
+ peerDependencies:
274
+ '@opentelemetry/api': ^1.3.0
275
+ dependencies:
276
+ '@opentelemetry/api': 1.9.0
277
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
278
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
279
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
280
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
281
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
282
+ dev: false
283
+
284
+ /@opentelemetry/exporter-trace-otlp-proto@0.203.0(@opentelemetry/api@1.9.0):
285
+ resolution: {integrity: sha512-1xwNTJ86L0aJmWRwENCJlH4LULMG2sOXWIVw+Szta4fkqKVY50Eo4HoVKKq6U9QEytrWCr8+zjw0q/ZOeXpcAQ==}
286
+ engines: {node: ^18.19.0 || >=20.6.0}
287
+ peerDependencies:
288
+ '@opentelemetry/api': ^1.3.0
289
+ dependencies:
290
+ '@opentelemetry/api': 1.9.0
291
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
292
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
293
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
294
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
295
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
296
+ dev: false
297
+
298
+ /@opentelemetry/exporter-zipkin@2.0.1(@opentelemetry/api@1.9.0):
299
+ resolution: {integrity: sha512-a9eeyHIipfdxzCfc2XPrE+/TI3wmrZUDFtG2RRXHSbZZULAny7SyybSvaDvS77a7iib5MPiAvluwVvbGTsHxsw==}
300
+ engines: {node: ^18.19.0 || >=20.6.0}
301
+ peerDependencies:
302
+ '@opentelemetry/api': ^1.0.0
303
+ dependencies:
304
+ '@opentelemetry/api': 1.9.0
305
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
306
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
307
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
308
+ '@opentelemetry/semantic-conventions': 1.36.0
309
+ dev: false
310
+
311
+ /@opentelemetry/instrumentation-express@0.52.0(@opentelemetry/api@1.9.0):
312
+ resolution: {integrity: sha512-W7pizN0Wh1/cbNhhTf7C62NpyYw7VfCFTYg0DYieSTrtPBT1vmoSZei19wfKLnrMsz3sHayCg0HxCVL2c+cz5w==}
313
+ engines: {node: ^18.19.0 || >=20.6.0}
314
+ peerDependencies:
315
+ '@opentelemetry/api': ^1.3.0
316
+ dependencies:
317
+ '@opentelemetry/api': 1.9.0
318
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
319
+ '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0)
320
+ '@opentelemetry/semantic-conventions': 1.36.0
321
+ transitivePeerDependencies:
322
+ - supports-color
323
+ dev: false
324
+
325
+ /@opentelemetry/instrumentation-http@0.203.0(@opentelemetry/api@1.9.0):
326
+ resolution: {integrity: sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==}
327
+ engines: {node: ^18.19.0 || >=20.6.0}
328
+ peerDependencies:
329
+ '@opentelemetry/api': ^1.3.0
330
+ dependencies:
331
+ '@opentelemetry/api': 1.9.0
332
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
333
+ '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0)
334
+ '@opentelemetry/semantic-conventions': 1.36.0
335
+ forwarded-parse: 2.1.2
336
+ transitivePeerDependencies:
337
+ - supports-color
338
+ dev: false
339
+
340
+ /@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0):
341
+ resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==}
342
+ engines: {node: ^18.19.0 || >=20.6.0}
343
+ peerDependencies:
344
+ '@opentelemetry/api': ^1.3.0
345
+ dependencies:
346
+ '@opentelemetry/api': 1.9.0
347
+ '@opentelemetry/api-logs': 0.203.0
348
+ import-in-the-middle: 1.14.2
349
+ require-in-the-middle: 7.5.2
350
+ transitivePeerDependencies:
351
+ - supports-color
352
+ dev: false
353
+
354
+ /@opentelemetry/otlp-exporter-base@0.203.0(@opentelemetry/api@1.9.0):
355
+ resolution: {integrity: sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==}
356
+ engines: {node: ^18.19.0 || >=20.6.0}
357
+ peerDependencies:
358
+ '@opentelemetry/api': ^1.3.0
359
+ dependencies:
360
+ '@opentelemetry/api': 1.9.0
361
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
362
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
363
+ dev: false
364
+
365
+ /@opentelemetry/otlp-grpc-exporter-base@0.203.0(@opentelemetry/api@1.9.0):
366
+ resolution: {integrity: sha512-te0Ze1ueJF+N/UOFl5jElJW4U0pZXQ8QklgSfJ2linHN0JJsuaHG8IabEUi2iqxY8ZBDlSiz1Trfv5JcjWWWwQ==}
367
+ engines: {node: ^18.19.0 || >=20.6.0}
368
+ peerDependencies:
369
+ '@opentelemetry/api': ^1.3.0
370
+ dependencies:
371
+ '@grpc/grpc-js': 1.13.4
372
+ '@opentelemetry/api': 1.9.0
373
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
374
+ '@opentelemetry/otlp-exporter-base': 0.203.0(@opentelemetry/api@1.9.0)
375
+ '@opentelemetry/otlp-transformer': 0.203.0(@opentelemetry/api@1.9.0)
376
+ dev: false
377
+
378
+ /@opentelemetry/otlp-transformer@0.203.0(@opentelemetry/api@1.9.0):
379
+ resolution: {integrity: sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==}
380
+ engines: {node: ^18.19.0 || >=20.6.0}
381
+ peerDependencies:
382
+ '@opentelemetry/api': ^1.3.0
383
+ dependencies:
384
+ '@opentelemetry/api': 1.9.0
385
+ '@opentelemetry/api-logs': 0.203.0
386
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
387
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
388
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
389
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
390
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
391
+ protobufjs: 7.5.4
392
+ dev: false
393
+
394
+ /@opentelemetry/propagator-b3@2.0.1(@opentelemetry/api@1.9.0):
395
+ resolution: {integrity: sha512-Hc09CaQ8Tf5AGLmf449H726uRoBNGPBL4bjr7AnnUpzWMvhdn61F78z9qb6IqB737TffBsokGAK1XykFEZ1igw==}
396
+ engines: {node: ^18.19.0 || >=20.6.0}
397
+ peerDependencies:
398
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
399
+ dependencies:
400
+ '@opentelemetry/api': 1.9.0
401
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
402
+ dev: false
403
+
404
+ /@opentelemetry/propagator-jaeger@2.0.1(@opentelemetry/api@1.9.0):
405
+ resolution: {integrity: sha512-7PMdPBmGVH2eQNb/AtSJizQNgeNTfh6jQFqys6lfhd6P4r+m/nTh3gKPPpaCXVdRQ+z93vfKk+4UGty390283w==}
406
+ engines: {node: ^18.19.0 || >=20.6.0}
407
+ peerDependencies:
408
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
409
+ dependencies:
410
+ '@opentelemetry/api': 1.9.0
411
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
412
+ dev: false
413
+
414
+ /@opentelemetry/resources@2.0.1(@opentelemetry/api@1.9.0):
415
+ resolution: {integrity: sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==}
416
+ engines: {node: ^18.19.0 || >=20.6.0}
417
+ peerDependencies:
418
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
419
+ dependencies:
420
+ '@opentelemetry/api': 1.9.0
421
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
422
+ '@opentelemetry/semantic-conventions': 1.36.0
423
+ dev: false
424
+
425
+ /@opentelemetry/sdk-logs@0.203.0(@opentelemetry/api@1.9.0):
426
+ resolution: {integrity: sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==}
427
+ engines: {node: ^18.19.0 || >=20.6.0}
428
+ peerDependencies:
429
+ '@opentelemetry/api': '>=1.4.0 <1.10.0'
430
+ dependencies:
431
+ '@opentelemetry/api': 1.9.0
432
+ '@opentelemetry/api-logs': 0.203.0
433
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
434
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
435
+ dev: false
436
+
437
+ /@opentelemetry/sdk-metrics@2.0.1(@opentelemetry/api@1.9.0):
438
+ resolution: {integrity: sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==}
439
+ engines: {node: ^18.19.0 || >=20.6.0}
440
+ peerDependencies:
441
+ '@opentelemetry/api': '>=1.9.0 <1.10.0'
442
+ dependencies:
443
+ '@opentelemetry/api': 1.9.0
444
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
445
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
446
+ dev: false
447
+
448
+ /@opentelemetry/sdk-node@0.203.0(@opentelemetry/api@1.9.0):
449
+ resolution: {integrity: sha512-zRMvrZGhGVMvAbbjiNQW3eKzW/073dlrSiAKPVWmkoQzah9wfynpVPeL55f9fVIm0GaBxTLcPeukWGy0/Wj7KQ==}
450
+ engines: {node: ^18.19.0 || >=20.6.0}
451
+ peerDependencies:
452
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
453
+ dependencies:
454
+ '@opentelemetry/api': 1.9.0
455
+ '@opentelemetry/api-logs': 0.203.0
456
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
457
+ '@opentelemetry/exporter-logs-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0)
458
+ '@opentelemetry/exporter-logs-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
459
+ '@opentelemetry/exporter-logs-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0)
460
+ '@opentelemetry/exporter-metrics-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0)
461
+ '@opentelemetry/exporter-metrics-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
462
+ '@opentelemetry/exporter-metrics-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0)
463
+ '@opentelemetry/exporter-prometheus': 0.203.0(@opentelemetry/api@1.9.0)
464
+ '@opentelemetry/exporter-trace-otlp-grpc': 0.203.0(@opentelemetry/api@1.9.0)
465
+ '@opentelemetry/exporter-trace-otlp-http': 0.203.0(@opentelemetry/api@1.9.0)
466
+ '@opentelemetry/exporter-trace-otlp-proto': 0.203.0(@opentelemetry/api@1.9.0)
467
+ '@opentelemetry/exporter-zipkin': 2.0.1(@opentelemetry/api@1.9.0)
468
+ '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0)
469
+ '@opentelemetry/propagator-b3': 2.0.1(@opentelemetry/api@1.9.0)
470
+ '@opentelemetry/propagator-jaeger': 2.0.1(@opentelemetry/api@1.9.0)
471
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
472
+ '@opentelemetry/sdk-logs': 0.203.0(@opentelemetry/api@1.9.0)
473
+ '@opentelemetry/sdk-metrics': 2.0.1(@opentelemetry/api@1.9.0)
474
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
475
+ '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0)
476
+ '@opentelemetry/semantic-conventions': 1.36.0
477
+ transitivePeerDependencies:
478
+ - supports-color
479
+ dev: false
480
+
481
+ /@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0):
482
+ resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==}
483
+ engines: {node: ^18.19.0 || >=20.6.0}
484
+ peerDependencies:
485
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
486
+ dependencies:
487
+ '@opentelemetry/api': 1.9.0
488
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
489
+ '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0)
490
+ '@opentelemetry/semantic-conventions': 1.36.0
491
+ dev: false
492
+
493
+ /@opentelemetry/sdk-trace-node@2.0.1(@opentelemetry/api@1.9.0):
494
+ resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==}
495
+ engines: {node: ^18.19.0 || >=20.6.0}
496
+ peerDependencies:
497
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
498
+ dependencies:
499
+ '@opentelemetry/api': 1.9.0
500
+ '@opentelemetry/context-async-hooks': 2.0.1(@opentelemetry/api@1.9.0)
501
+ '@opentelemetry/core': 2.0.1(@opentelemetry/api@1.9.0)
502
+ '@opentelemetry/sdk-trace-base': 2.0.1(@opentelemetry/api@1.9.0)
503
+ dev: false
504
+
505
+ /@opentelemetry/semantic-conventions@1.36.0:
506
+ resolution: {integrity: sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ==}
507
+ engines: {node: '>=14'}
508
+ dev: false
509
+
510
+ /@protobufjs/aspromise@1.1.2:
511
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
512
+ dev: false
513
+
514
+ /@protobufjs/base64@1.1.2:
515
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
516
+ dev: false
517
+
518
+ /@protobufjs/codegen@2.0.4:
519
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
520
+ dev: false
521
+
522
+ /@protobufjs/eventemitter@1.1.0:
523
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
524
+ dev: false
525
+
526
+ /@protobufjs/fetch@1.1.0:
527
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
528
+ dependencies:
529
+ '@protobufjs/aspromise': 1.1.2
530
+ '@protobufjs/inquire': 1.1.0
531
+ dev: false
532
+
533
+ /@protobufjs/float@1.0.2:
534
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
535
+ dev: false
536
+
537
+ /@protobufjs/inquire@1.1.0:
538
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
539
+ dev: false
540
+
541
+ /@protobufjs/path@1.1.2:
542
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
543
+ dev: false
544
+
545
+ /@protobufjs/pool@1.1.0:
546
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
547
+ dev: false
548
+
549
+ /@protobufjs/utf8@1.1.0:
550
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
551
+ dev: false
552
+
553
+ /@trpc/server@11.5.0(typescript@5.7.3):
554
+ resolution: {integrity: sha512-0IBtkmUCeO2ycn4K45/cqsujnlCQrSvkCo7lFDpg3kGMIPiLyLRciID5IiS7prEjRjeITa+od2aaHTIwONApVw==}
555
+ peerDependencies:
556
+ typescript: '>=5.7.2'
557
+ dependencies:
558
+ typescript: 5.7.3
559
+ dev: false
560
+
561
+ /@types/node@24.3.0:
562
+ resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
563
+ dependencies:
564
+ undici-types: 7.10.0
565
+ dev: false
566
+
567
+ /acorn-import-attributes@1.9.5(acorn@8.15.0):
568
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
569
+ peerDependencies:
570
+ acorn: ^8
571
+ dependencies:
572
+ acorn: 8.15.0
573
+ dev: false
574
+
575
+ /acorn@8.15.0:
576
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
577
+ engines: {node: '>=0.4.0'}
578
+ hasBin: true
579
+ dev: false
580
+
581
+ /ansi-regex@5.0.1:
582
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
583
+ engines: {node: '>=8'}
584
+ dev: false
585
+
586
+ /ansi-styles@4.3.0:
587
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
588
+ engines: {node: '>=8'}
589
+ dependencies:
590
+ color-convert: 2.0.1
591
+ dev: false
592
+
593
+ /cjs-module-lexer@1.4.3:
594
+ resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
595
+ dev: false
596
+
597
+ /cliui@8.0.1:
598
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
599
+ engines: {node: '>=12'}
600
+ dependencies:
601
+ string-width: 4.2.3
602
+ strip-ansi: 6.0.1
603
+ wrap-ansi: 7.0.0
604
+ dev: false
605
+
606
+ /color-convert@2.0.1:
607
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
608
+ engines: {node: '>=7.0.0'}
609
+ dependencies:
610
+ color-name: 1.1.4
611
+ dev: false
612
+
613
+ /color-name@1.1.4:
614
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
615
+ dev: false
616
+
617
+ /debug@4.4.1:
618
+ resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
619
+ engines: {node: '>=6.0'}
620
+ peerDependencies:
621
+ supports-color: '*'
622
+ peerDependenciesMeta:
623
+ supports-color:
624
+ optional: true
625
+ dependencies:
626
+ ms: 2.1.3
627
+ dev: false
628
+
629
+ /emoji-regex@8.0.0:
630
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
631
+ dev: false
632
+
633
+ /escalade@3.2.0:
634
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
635
+ engines: {node: '>=6'}
636
+ dev: false
637
+
638
+ /forwarded-parse@2.1.2:
639
+ resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==}
640
+ dev: false
641
+
642
+ /function-bind@1.1.2:
643
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
644
+ dev: false
645
+
646
+ /get-caller-file@2.0.5:
647
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
648
+ engines: {node: 6.* || 8.* || >= 10.*}
649
+ dev: false
650
+
651
+ /hasown@2.0.2:
652
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
653
+ engines: {node: '>= 0.4'}
654
+ dependencies:
655
+ function-bind: 1.1.2
656
+ dev: false
657
+
658
+ /import-in-the-middle@1.14.2:
659
+ resolution: {integrity: sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==}
660
+ dependencies:
661
+ acorn: 8.15.0
662
+ acorn-import-attributes: 1.9.5(acorn@8.15.0)
663
+ cjs-module-lexer: 1.4.3
664
+ module-details-from-path: 1.0.4
665
+ dev: false
666
+
667
+ /is-core-module@2.16.1:
668
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
669
+ engines: {node: '>= 0.4'}
670
+ dependencies:
671
+ hasown: 2.0.2
672
+ dev: false
673
+
674
+ /is-fullwidth-code-point@3.0.0:
675
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
676
+ engines: {node: '>=8'}
677
+ dev: false
678
+
679
+ /lodash.camelcase@4.3.0:
680
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
681
+ dev: false
682
+
683
+ /long@5.3.2:
684
+ resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
685
+ dev: false
686
+
687
+ /module-details-from-path@1.0.4:
688
+ resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==}
689
+ dev: false
690
+
691
+ /ms@2.1.3:
692
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
693
+ dev: false
694
+
695
+ /path-parse@1.0.7:
696
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
697
+ dev: false
698
+
699
+ /protobufjs@7.5.4:
700
+ resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
701
+ engines: {node: '>=12.0.0'}
702
+ requiresBuild: true
703
+ dependencies:
704
+ '@protobufjs/aspromise': 1.1.2
705
+ '@protobufjs/base64': 1.1.2
706
+ '@protobufjs/codegen': 2.0.4
707
+ '@protobufjs/eventemitter': 1.1.0
708
+ '@protobufjs/fetch': 1.1.0
709
+ '@protobufjs/float': 1.0.2
710
+ '@protobufjs/inquire': 1.1.0
711
+ '@protobufjs/path': 1.1.2
712
+ '@protobufjs/pool': 1.1.0
713
+ '@protobufjs/utf8': 1.1.0
714
+ '@types/node': 24.3.0
715
+ long: 5.3.2
716
+ dev: false
717
+
718
+ /require-directory@2.1.1:
719
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
720
+ engines: {node: '>=0.10.0'}
721
+ dev: false
722
+
723
+ /require-in-the-middle@7.5.2:
724
+ resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==}
725
+ engines: {node: '>=8.6.0'}
726
+ dependencies:
727
+ debug: 4.4.1
728
+ module-details-from-path: 1.0.4
729
+ resolve: 1.22.10
730
+ transitivePeerDependencies:
731
+ - supports-color
732
+ dev: false
733
+
734
+ /resolve@1.22.10:
735
+ resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
736
+ engines: {node: '>= 0.4'}
737
+ hasBin: true
738
+ dependencies:
739
+ is-core-module: 2.16.1
740
+ path-parse: 1.0.7
741
+ supports-preserve-symlinks-flag: 1.0.0
742
+ dev: false
743
+
744
+ /string-width@4.2.3:
745
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
746
+ engines: {node: '>=8'}
747
+ dependencies:
748
+ emoji-regex: 8.0.0
749
+ is-fullwidth-code-point: 3.0.0
750
+ strip-ansi: 6.0.1
751
+ dev: false
752
+
753
+ /strip-ansi@6.0.1:
754
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
755
+ engines: {node: '>=8'}
756
+ dependencies:
757
+ ansi-regex: 5.0.1
758
+ dev: false
759
+
760
+ /supports-preserve-symlinks-flag@1.0.0:
761
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
762
+ engines: {node: '>= 0.4'}
763
+ dev: false
764
+
765
+ /typescript@5.7.3:
766
+ resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
767
+ engines: {node: '>=14.17'}
768
+ hasBin: true
769
+ dev: false
770
+
771
+ /undici-types@7.10.0:
772
+ resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
773
+ dev: false
774
+
775
+ /wrap-ansi@7.0.0:
776
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
777
+ engines: {node: '>=10'}
778
+ dependencies:
779
+ ansi-styles: 4.3.0
780
+ string-width: 4.2.3
781
+ strip-ansi: 6.0.1
782
+ dev: false
783
+
784
+ /y18n@5.0.8:
785
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
786
+ engines: {node: '>=10'}
787
+ dev: false
788
+
789
+ /yargs-parser@21.1.1:
790
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
791
+ engines: {node: '>=12'}
792
+ dev: false
793
+
794
+ /yargs@17.7.2:
795
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
796
+ engines: {node: '>=12'}
797
+ dependencies:
798
+ cliui: 8.0.1
799
+ escalade: 3.2.0
800
+ get-caller-file: 2.0.5
801
+ require-directory: 2.1.1
802
+ string-width: 4.2.3
803
+ y18n: 5.0.8
804
+ yargs-parser: 21.1.1
805
+ dev: false
package/otel/src/index.ts CHANGED
@@ -1,12 +1,9 @@
1
- // SDK functions - auto-initialization handled internally
2
- export { isOtelInitialized, shutdownOtel } from './sdk';
1
+ // OpenTelemetry auto-initialization based on standard environment variables
2
+ // See: https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
3
3
 
4
- // Tracing utilities
5
- export * from './tracer';
6
- export * from './metrics';
7
- export * from './trpc-middleware';
8
- export * from './provider-instrumentation';
4
+ // Framework integration exports (internal use only)
5
+ export { createTRPCTracing } from './trpc-middleware';
6
+ export { createProviderInstrumentation } from './provider-instrumentation';
9
7
 
10
- // Re-export common OTEL types
11
- export { trace, context, SpanKind, SpanStatusCode } from '@opentelemetry/api';
12
- export type { Span, Tracer, SpanOptions, Attributes } from '@opentelemetry/api';
8
+ // Graceful shutdown for process termination
9
+ export { shutdownOtel } from './sdk';
package/otel/src/sdk.ts CHANGED
@@ -1,16 +1,4 @@
1
1
  import { NodeSDK } from '@opentelemetry/sdk-node';
2
- import { resourceFromAttributes, defaultResource } from '@opentelemetry/resources';
3
- import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION, SEMRESATTRS_DEPLOYMENT_ENVIRONMENT } from '@opentelemetry/semantic-conventions';
4
- import {
5
- BatchSpanProcessor,
6
- } from '@opentelemetry/sdk-trace-base';
7
- import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
8
- import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';
9
- import {
10
- getConfigFromEnv,
11
- createTraceExporter,
12
- createMetricReader,
13
- } from './config';
14
2
 
15
3
  let sdk: NodeSDK | null = null;
16
4
  let isInitialized = false;
@@ -35,59 +23,9 @@ function ensureInitialized(): void {
35
23
 
36
24
  // Prevent multiple initialization attempts
37
25
  initializationPromise = Promise.resolve().then(() => {
38
- const config = getConfigFromEnv();
39
-
40
- // Only log if explicitly requested via debug env var
41
- if (process.env['OTEL_LOG_LEVEL'] === 'debug') {
42
- console.log('OpenTelemetry auto-initializing with config:', {
43
- serviceName: config.serviceName,
44
- environment: config.environment,
45
- tracesExporter: process.env['OTEL_TRACES_EXPORTER'] || 'console',
46
- metricsExporter: process.env['OTEL_METRICS_EXPORTER'] || 'console',
47
- });
48
- }
49
-
50
- const attributes: Record<string, string> = {
51
- [SEMRESATTRS_SERVICE_NAME]: config.serviceName,
52
- };
53
-
54
- if (config.serviceVersion) {
55
- attributes[SEMRESATTRS_SERVICE_VERSION] = config.serviceVersion;
56
- }
57
- if (config.environment) {
58
- attributes[SEMRESATTRS_DEPLOYMENT_ENVIRONMENT] = config.environment;
59
- }
60
-
61
- const customResource = resourceFromAttributes(attributes);
62
- const resource = defaultResource().merge(customResource);
63
-
64
- const traceExporter = createTraceExporter(config);
65
- const metricReader = createMetricReader(config);
66
-
67
- const instrumentations = [
68
- new HttpInstrumentation({
69
- requestHook: (span, request: unknown) => {
70
- const req = request as { headers?: Record<string, string | number> };
71
- if (req.headers) {
72
- span.setAttribute('http.request.body.size', req.headers['content-length'] || 0);
73
- }
74
- },
75
- responseHook: (span, response: unknown) => {
76
- const res = response as { headers?: Record<string, string | number> };
77
- if (res.headers) {
78
- span.setAttribute('http.response.body.size', res.headers['content-length'] || 0);
79
- }
80
- },
81
- }),
82
- new ExpressInstrumentation(),
83
- ];
84
-
85
- sdk = new NodeSDK({
86
- resource,
87
- spanProcessors: traceExporter ? [new BatchSpanProcessor(traceExporter)] : [],
88
- metricReader,
89
- instrumentations,
90
- });
26
+ // Let NodeSDK handle everything automatically via env vars
27
+ // The SDK will automatically pick up OTEL_* environment variables
28
+ sdk = new NodeSDK();
91
29
 
92
30
  sdk.start();
93
31
  isInitialized = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reactionary/source",
3
- "version": "0.0.29",
3
+ "version": "0.0.30",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "dependencies": {
package/trpc/src/index.ts CHANGED
@@ -16,14 +16,11 @@ const t = initTRPC.context<{ client: Client; session: Session }>().create({
16
16
  export const router = t.router;
17
17
  export const mergeRouters = t.mergeRouters;
18
18
 
19
+ // Always apply tracing middleware - exporters controlled via OTEL env vars
19
20
  const basePublicProcedure = t.procedure;
20
21
  export const publicProcedure = basePublicProcedure.use(createTRPCTracing());
21
22
 
22
- export function createTracedProcedure(options?: Parameters<typeof createTRPCTracing>[0]) {
23
- return basePublicProcedure.use(createTRPCTracing(options));
24
- }
25
-
26
- export function createTRPCRouter<T extends Client = Client>(client: T, enableTracing = true) {
23
+ export function createTRPCRouter<T extends Client = Client>(client: T) {
27
24
  type BaseProviderKeys<T> = {
28
25
  [K in keyof T]: T[K] extends BaseProvider ? K : never;
29
26
  }[keyof T];
@@ -43,9 +40,8 @@ export function createTRPCRouter<T extends Client = Client>(client: T, enableTra
43
40
  };
44
41
 
45
42
  const routes: Record<string, any> = {};
46
- const procedure = enableTracing
47
- ? basePublicProcedure.use(createTRPCTracing())
48
- : basePublicProcedure;
43
+ // Always enable tracing - exporters are controlled via env vars
44
+ const procedure = basePublicProcedure.use(createTRPCTracing());
49
45
 
50
46
  for (const key in client) {
51
47
  const provider = client[key];
@@ -1,139 +0,0 @@
1
- import { SpanExporter } from '@opentelemetry/sdk-trace-base';
2
- import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base';
3
- import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
4
- import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
5
- import { MetricReader, PeriodicExportingMetricReader, ConsoleMetricExporter } from '@opentelemetry/sdk-metrics';
6
-
7
- // Internal config interface - not exported
8
- interface OtelConfig {
9
- serviceName: string;
10
- serviceVersion?: string;
11
- environment?: string;
12
- otlpEndpoint?: string;
13
- otlpHeaders?: Record<string, string>;
14
- traceEnabled: boolean;
15
- metricsEnabled: boolean;
16
- metricExportIntervalMillis: number;
17
- }
18
-
19
- // Detect if we're running in a browser environment
20
- function isBrowser(): boolean {
21
- return typeof window !== 'undefined' && typeof process === 'undefined';
22
- }
23
-
24
- // Parse config from standard OTEL environment variables
25
- // https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
26
- export function getConfigFromEnv(): OtelConfig {
27
- // In browser environments, return disabled config
28
- if (isBrowser()) {
29
- return {
30
- serviceName: 'browser-service',
31
- serviceVersion: undefined,
32
- environment: 'browser',
33
- otlpEndpoint: undefined,
34
- otlpHeaders: undefined,
35
- traceEnabled: false,
36
- metricsEnabled: false,
37
- metricExportIntervalMillis: 60000,
38
- };
39
- }
40
-
41
- // Determine exporter type from standard OTEL vars
42
- const tracesExporter = process.env['OTEL_TRACES_EXPORTER'] || 'console';
43
- const metricsExporter = process.env['OTEL_METRICS_EXPORTER'] || 'console';
44
-
45
- return {
46
- serviceName: process.env['OTEL_SERVICE_NAME'] || 'unknown_service',
47
- serviceVersion: process.env['OTEL_SERVICE_VERSION'],
48
- environment: process.env['DEPLOYMENT_ENVIRONMENT'] || process.env['NODE_ENV'] || 'development',
49
- otlpEndpoint: process.env['OTEL_EXPORTER_OTLP_ENDPOINT'],
50
- otlpHeaders: process.env['OTEL_EXPORTER_OTLP_HEADERS']
51
- ? parseHeaders(process.env['OTEL_EXPORTER_OTLP_HEADERS'])
52
- : undefined,
53
- traceEnabled: tracesExporter !== 'none',
54
- metricsEnabled: metricsExporter !== 'none',
55
- metricExportIntervalMillis: process.env['OTEL_METRIC_EXPORT_INTERVAL']
56
- ? parseInt(process.env['OTEL_METRIC_EXPORT_INTERVAL'], 10)
57
- : 60000, // Default 60 seconds per OTEL spec
58
- };
59
- }
60
-
61
- function parseHeaders(headerString: string): Record<string, string> {
62
- const headers: Record<string, string> = {};
63
- headerString.split(',').forEach(header => {
64
- const [key, value] = header.split('=');
65
- if (key && value) {
66
- headers[key.trim()] = value.trim();
67
- }
68
- });
69
- return headers;
70
- }
71
-
72
- export function createTraceExporter(config: OtelConfig): SpanExporter | undefined {
73
- if (!config.traceEnabled) {
74
- return undefined;
75
- }
76
-
77
- const tracesExporter = process.env['OTEL_TRACES_EXPORTER'] || 'console';
78
-
79
- switch (tracesExporter) {
80
- case 'otlp':
81
- case 'otlp/http': {
82
- if (!config.otlpEndpoint) {
83
- console.warn('OTEL_EXPORTER_OTLP_ENDPOINT not set, falling back to console');
84
- return new ConsoleSpanExporter();
85
- }
86
- // Use standard endpoint resolution
87
- const tracesEndpoint = process.env['OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'] ||
88
- `${config.otlpEndpoint}/v1/traces`;
89
- return new OTLPTraceExporter({
90
- url: tracesEndpoint,
91
- headers: config.otlpHeaders,
92
- });
93
- }
94
- case 'console':
95
- return new ConsoleSpanExporter();
96
- case 'none':
97
- default:
98
- return undefined;
99
- }
100
- }
101
-
102
- export function createMetricReader(config: OtelConfig): MetricReader | undefined {
103
- if (!config.metricsEnabled) {
104
- return undefined;
105
- }
106
-
107
- const metricsExporter = process.env['OTEL_METRICS_EXPORTER'] || 'console';
108
- let exporter;
109
-
110
- switch (metricsExporter) {
111
- case 'otlp':
112
- case 'otlp/http': {
113
- if (!config.otlpEndpoint) {
114
- console.warn('OTEL_EXPORTER_OTLP_ENDPOINT not set, falling back to console');
115
- exporter = new ConsoleMetricExporter();
116
- } else {
117
- // Use standard endpoint resolution
118
- const metricsEndpoint = process.env['OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'] ||
119
- `${config.otlpEndpoint}/v1/metrics`;
120
- exporter = new OTLPMetricExporter({
121
- url: metricsEndpoint,
122
- headers: config.otlpHeaders,
123
- });
124
- }
125
- break;
126
- }
127
- case 'console':
128
- exporter = new ConsoleMetricExporter();
129
- break;
130
- case 'none':
131
- default:
132
- return undefined;
133
- }
134
-
135
- return new PeriodicExportingMetricReader({
136
- exporter,
137
- exportIntervalMillis: config.metricExportIntervalMillis,
138
- });
139
- }