@dxos/observability 0.8.3 → 0.8.4-main.84f28bd

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 (62) hide show
  1. package/dist/lib/browser/{chunk-YQJELTRP.mjs → chunk-33TCMAUB.mjs} +18 -18
  2. package/dist/lib/browser/chunk-5OQYI27L.mjs +1 -0
  3. package/dist/lib/browser/{chunk-G6EE7HFV.mjs → chunk-MWTIKIBZ.mjs} +9 -9
  4. package/dist/lib/browser/{chunk-JA5VJRKF.mjs → chunk-YEPQFAES.mjs} +3 -3
  5. package/dist/lib/browser/index.mjs +4 -4
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/observability-EEM6BEY6.mjs +10 -0
  8. package/dist/lib/browser/{otel-LHAFLNBQ.mjs → otel-IRDZ7PES.mjs} +7 -7
  9. package/dist/lib/browser/segment/index.mjs +3 -3
  10. package/dist/lib/browser/sentry/index.mjs +2 -2
  11. package/dist/lib/browser/{sentry-log-processor-625AISXI.mjs → sentry-log-processor-3F3SBJXM.mjs} +3 -3
  12. package/dist/lib/node-esm/{chunk-AZMSBUWR.mjs → chunk-552KLA6Z.mjs} +9 -9
  13. package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs → chunk-EYW4X3O6.mjs} +18 -18
  14. package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs → chunk-MRAK2H7O.mjs} +1 -1
  15. package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs → chunk-TEH6VIKV.mjs} +3 -3
  16. package/dist/lib/node-esm/index.mjs +4 -4
  17. package/dist/lib/node-esm/meta.json +1 -1
  18. package/dist/lib/node-esm/observability-DAXZGOBS.mjs +11 -0
  19. package/dist/lib/node-esm/{otel-AF5TSABC.mjs → otel-62HYJETM.mjs} +6 -6
  20. package/dist/lib/node-esm/segment/index.mjs +3 -3
  21. package/dist/lib/node-esm/sentry/index.mjs +2 -2
  22. package/dist/lib/node-esm/{sentry-log-processor-HPUPCMRG.mjs → sentry-log-processor-JAYRA23C.mjs} +3 -3
  23. package/dist/types/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +15 -15
  25. package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
  26. package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
  27. package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
  28. package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
  29. package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
  30. package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
  31. package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
  32. package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
  33. package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
  34. package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
  35. package/dist/lib/node/index.cjs +0 -60
  36. package/dist/lib/node/index.cjs.map +0 -7
  37. package/dist/lib/node/meta.json +0 -1
  38. package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
  39. package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
  40. package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
  41. package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
  42. package/dist/lib/node/segment/index.cjs +0 -33
  43. package/dist/lib/node/segment/index.cjs.map +0 -7
  44. package/dist/lib/node/sentry/index.cjs +0 -46
  45. package/dist/lib/node/sentry/index.cjs.map +0 -7
  46. package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
  47. package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
  48. package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
  49. /package/dist/lib/browser/{chunk-YQJELTRP.mjs.map → chunk-33TCMAUB.mjs.map} +0 -0
  50. /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-5OQYI27L.mjs.map} +0 -0
  51. /package/dist/lib/browser/{chunk-G6EE7HFV.mjs.map → chunk-MWTIKIBZ.mjs.map} +0 -0
  52. /package/dist/lib/browser/{chunk-JA5VJRKF.mjs.map → chunk-YEPQFAES.mjs.map} +0 -0
  53. /package/dist/lib/browser/{observability-HDE3I7TA.mjs.map → observability-EEM6BEY6.mjs.map} +0 -0
  54. /package/dist/lib/browser/{otel-LHAFLNBQ.mjs.map → otel-IRDZ7PES.mjs.map} +0 -0
  55. /package/dist/lib/browser/{sentry-log-processor-625AISXI.mjs.map → sentry-log-processor-3F3SBJXM.mjs.map} +0 -0
  56. /package/dist/lib/node-esm/{chunk-AZMSBUWR.mjs.map → chunk-552KLA6Z.mjs.map} +0 -0
  57. /package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs.map → chunk-EYW4X3O6.mjs.map} +0 -0
  58. /package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs.map → chunk-MRAK2H7O.mjs.map} +0 -0
  59. /package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs.map → chunk-TEH6VIKV.mjs.map} +0 -0
  60. /package/dist/lib/node-esm/{observability-7BTI46NM.mjs.map → observability-DAXZGOBS.mjs.map} +0 -0
  61. /package/dist/lib/node-esm/{otel-AF5TSABC.mjs.map → otel-62HYJETM.mjs.map} +0 -0
  62. /package/dist/lib/node-esm/{sentry-log-processor-HPUPCMRG.mjs.map → sentry-log-processor-JAYRA23C.mjs.map} +0 -0
@@ -1,278 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var otel_VF5YNCR3_exports = {};
20
- __export(otel_VF5YNCR3_exports, {
21
- OtelLogs: () => OtelLogs,
22
- OtelMetrics: () => OtelMetrics,
23
- OtelTraces: () => OtelTraces,
24
- setDiagLogger: () => setDiagLogger
25
- });
26
- module.exports = __toCommonJS(otel_VF5YNCR3_exports);
27
- var import_api = require("@opentelemetry/api");
28
- var import_api_logs = require("@opentelemetry/api-logs");
29
- var import_exporter_logs_otlp_http = require("@opentelemetry/exporter-logs-otlp-http");
30
- var import_resources = require("@opentelemetry/resources");
31
- var import_sdk_logs = require("@opentelemetry/sdk-logs");
32
- var import_semantic_conventions = require("@opentelemetry/semantic-conventions");
33
- var import_log = require("@dxos/log");
34
- var import_util = require("@dxos/util");
35
- var import_exporter_metrics_otlp_http = require("@opentelemetry/exporter-metrics-otlp-http");
36
- var import_resources2 = require("@opentelemetry/resources");
37
- var import_sdk_metrics = require("@opentelemetry/sdk-metrics");
38
- var import_semantic_conventions2 = require("@opentelemetry/semantic-conventions");
39
- var import_log2 = require("@dxos/log");
40
- var import_tracing = require("@dxos/tracing");
41
- var import_api2 = require("@opentelemetry/api");
42
- var import_exporter_trace_otlp_http = require("@opentelemetry/exporter-trace-otlp-http");
43
- var import_resources3 = require("@opentelemetry/resources");
44
- var import_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
45
- var import_semantic_conventions3 = require("@opentelemetry/semantic-conventions");
46
- var import_debug = require("debug");
47
- var import_tracing2 = require("@dxos/tracing");
48
- var setDiagLogger = (level) => {
49
- const logLevel = import_api.DiagLogLevel[level];
50
- if (logLevel) {
51
- import_api.diag.setLogger(new import_api.DiagConsoleLogger(), logLevel);
52
- }
53
- };
54
- var OtelLogs = class {
55
- constructor(options) {
56
- this.options = options;
57
- this.logProcessor = (config, entry) => {
58
- const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
59
- if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
60
- return;
61
- }
62
- const record = {
63
- ...entry,
64
- ...entry.meta ? {
65
- meta: {
66
- file: (0, import_log.getRelativeFilename)(entry.meta.F),
67
- line: entry.meta.L
68
- }
69
- } : {},
70
- context: (0, import_util.jsonlogify)((0, import_log.getContextFromEntry)(entry))
71
- };
72
- logger.emit({
73
- severityNumber: convertLevel(entry.level),
74
- body: JSON.stringify(record),
75
- attributes: this.options.getTags()
76
- });
77
- };
78
- setDiagLogger(options.consoleDiagLogLevel);
79
- const resource = import_resources.Resource.default().merge(new import_resources.Resource({
80
- [import_semantic_conventions.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
81
- [import_semantic_conventions.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
82
- }));
83
- const logExporter = new import_exporter_logs_otlp_http.OTLPLogExporter({
84
- url: this.options.endpoint + "/v1/logs",
85
- headers: {
86
- Authorization: this.options.authorizationHeader
87
- },
88
- concurrencyLimit: 10
89
- });
90
- this._loggerProvider = new import_sdk_logs.LoggerProvider({
91
- resource
92
- });
93
- this._loggerProvider.addLogRecordProcessor(new import_sdk_logs.BatchLogRecordProcessor(logExporter));
94
- }
95
- flush() {
96
- return this._loggerProvider.forceFlush();
97
- }
98
- close() {
99
- return this._loggerProvider.shutdown();
100
- }
101
- };
102
- var convertLevel = (level) => {
103
- switch (level) {
104
- case import_log.LogLevel.DEBUG:
105
- return import_api_logs.SeverityNumber.DEBUG;
106
- case import_log.LogLevel.VERBOSE:
107
- return import_api_logs.SeverityNumber.INFO;
108
- case import_log.LogLevel.INFO:
109
- return import_api_logs.SeverityNumber.INFO;
110
- case import_log.LogLevel.WARN:
111
- return import_api_logs.SeverityNumber.WARN;
112
- case import_log.LogLevel.ERROR:
113
- return import_api_logs.SeverityNumber.ERROR;
114
- default:
115
- return import_api_logs.SeverityNumber.ERROR;
116
- }
117
- };
118
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/observability/src/otel/metrics.ts";
119
- var EXPORT_INTERVAL = 60 * 1e3;
120
- var OtelMetrics = class {
121
- constructor(options) {
122
- this.options = options;
123
- this._gauges = /* @__PURE__ */ new Map();
124
- setDiagLogger(options.consoleDiagLogLevel);
125
- const resource = import_resources2.Resource.default().merge(new import_resources2.Resource({
126
- [import_semantic_conventions2.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
127
- [import_semantic_conventions2.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
128
- }));
129
- const grafanaMetricReader = new import_sdk_metrics.PeriodicExportingMetricReader({
130
- exporter: new import_exporter_metrics_otlp_http.OTLPMetricExporter({
131
- url: this.options.endpoint + "/v1/metrics",
132
- headers: {
133
- Authorization: this.options.authorizationHeader
134
- }
135
- }),
136
- exportIntervalMillis: EXPORT_INTERVAL
137
- });
138
- this._meterProvider = new import_sdk_metrics.MeterProvider({
139
- resource,
140
- readers: [
141
- grafanaMetricReader
142
- ]
143
- });
144
- this._meter = this._meterProvider.getMeter("dxos-observability");
145
- const metrics = {
146
- // TODO: update metrics names and remove prefix?
147
- increment: (name, value, data) => {
148
- this.increment(name, value, convertTags(data));
149
- },
150
- distribution: (name, value, data) => {
151
- this.distribution(name, value, convertTags(data));
152
- },
153
- set: (name, value, data) => {
154
- },
155
- gauge: (name, value, data) => {
156
- this.gauge(name, value, convertTags(data));
157
- }
158
- };
159
- import_tracing.TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
160
- }
161
- gauge(name, value, tags) {
162
- const gauge = this._meter.createGauge(name);
163
- (0, import_log2.log)("otel gauge", {
164
- name,
165
- value,
166
- tags: {
167
- ...this.options.getTags(),
168
- ...tags
169
- }
170
- }, {
171
- F: __dxlog_file,
172
- L: 77,
173
- S: this,
174
- C: (f, a) => f(...a)
175
- });
176
- gauge.record(value, {
177
- ...this.options.getTags(),
178
- ...tags
179
- });
180
- }
181
- increment(name, value, tags) {
182
- const counter = this._meter.createCounter(name);
183
- (0, import_log2.log)("otel counter", {
184
- name,
185
- value,
186
- tags: {
187
- ...this.options.getTags(),
188
- ...tags
189
- }
190
- }, {
191
- F: __dxlog_file,
192
- L: 83,
193
- S: this,
194
- C: (f, a) => f(...a)
195
- });
196
- counter.add(value ?? 1, {
197
- ...this.options.getTags(),
198
- ...tags
199
- });
200
- }
201
- distribution(name, value, tags) {
202
- const distribution = this._meter.createHistogram(name);
203
- (0, import_log2.log)("otel distribution", {
204
- name,
205
- value,
206
- tags: {
207
- ...this.options.getTags(),
208
- ...tags
209
- }
210
- }, {
211
- F: __dxlog_file,
212
- L: 89,
213
- S: this,
214
- C: (f, a) => f(...a)
215
- });
216
- distribution.record(value, {
217
- ...this.options.getTags(),
218
- ...tags
219
- });
220
- }
221
- flush() {
222
- return this._meterProvider.forceFlush();
223
- }
224
- close() {
225
- return this._meterProvider.shutdown();
226
- }
227
- };
228
- var convertTags = (data) => {
229
- if (data && data.tags) {
230
- return Object.entries(data.tags).reduce((obj, [key, value]) => {
231
- obj[key] = value;
232
- return obj;
233
- }, {});
234
- } else {
235
- return {};
236
- }
237
- };
238
- var OtelTraces = class {
239
- constructor(options) {
240
- this.options = options;
241
- const resource = import_resources3.Resource.default().merge(new import_resources3.Resource({
242
- [import_semantic_conventions3.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
243
- [import_semantic_conventions3.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
244
- }));
245
- const tracerProvider = new import_sdk_trace_base.BasicTracerProvider({
246
- resource
247
- });
248
- tracerProvider.addSpanProcessor(new import_sdk_trace_base.SimpleSpanProcessor(new import_sdk_trace_base.ConsoleSpanExporter()));
249
- tracerProvider.addSpanProcessor(new import_sdk_trace_base.BatchSpanProcessor(new import_exporter_trace_otlp_http.OTLPTraceExporter({
250
- url: this.options.endpoint + "/v1/traces",
251
- headers: {
252
- Authorization: this.options.authorizationHeader
253
- },
254
- concurrencyLimit: 10
255
- })));
256
- tracerProvider.register();
257
- this._tracer = import_api2.trace.getTracer("dxos-observability", this.options.serviceVersion);
258
- }
259
- start() {
260
- (0, import_debug.log)("trace processor registered");
261
- import_tracing2.TRACE_PROCESSOR.remoteTracing.registerProcessor({
262
- startSpan: (options) => {
263
- (0, import_debug.log)("begin otel trace", {
264
- options
265
- });
266
- return this._tracer.startSpan(options.name, options);
267
- }
268
- });
269
- }
270
- };
271
- // Annotate the CommonJS export names for ESM import in node:
272
- 0 && (module.exports = {
273
- OtelLogs,
274
- OtelMetrics,
275
- OtelTraces,
276
- setDiagLogger
277
- });
278
- //# sourceMappingURL=otel-VF5YNCR3.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/otel/otel.ts", "../../../src/otel/logs.ts", "../../../src/otel/metrics.ts", "../../../src/otel/traces.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';\n\nexport type OtelOptions = {\n endpoint: string;\n authorizationHeader: string;\n serviceName: string; // For the Otel API, the name of the entity for which signals (metrics or trace) are collected.\n serviceVersion: string; // For the Otel API, The name of the entity for which signals (metrics or trace) are collected.\n getTags: () => { [key: string]: string };\n consoleDiagLogLevel?: string;\n};\n\nexport const setDiagLogger = (level?: string) => {\n const logLevel = DiagLogLevel[level as keyof typeof DiagLogLevel];\n if (logLevel) {\n diag.setLogger(new DiagConsoleLogger(), logLevel);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n getContextFromEntry,\n getRelativeFilename,\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n} from '@dxos/log';\nimport { jsonlogify } from '@dxos/util';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nexport type OtelLogOptions = OtelOptions & {\n logLevel: LogLevel;\n /**\n * Set `true` to capture logs sent through LoggingService from shared worker.\n * Better to set to `false` because shared worker is initializing its own logger.\n */\n includeSharedWorkerLogs: boolean;\n};\n\nexport class OtelLogs {\n private _loggerProvider: LoggerProvider;\n constructor(private readonly options: OtelLogOptions) {\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n const logExporter = new OTLPLogExporter({\n url: this.options.endpoint + '/v1/logs',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n });\n this._loggerProvider = new LoggerProvider({ resource });\n this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));\n }\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const logger = this._loggerProvider.getLogger('dxos-observability', this.options.serviceVersion);\n\n if (\n entry.level < this.options.logLevel ||\n (!this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId)\n ) {\n return;\n }\n\n const record = {\n ...entry,\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n context: jsonlogify(getContextFromEntry(entry)),\n };\n\n logger.emit({\n severityNumber: convertLevel(entry.level),\n body: JSON.stringify(record),\n attributes: this.options.getTags(),\n });\n };\n\n flush(): Promise<void> {\n return this._loggerProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._loggerProvider.shutdown();\n }\n}\n\nconst convertLevel = (level: LogLevel): SeverityNumber => {\n switch (level) {\n case LogLevel.DEBUG:\n return SeverityNumber.DEBUG;\n case LogLevel.VERBOSE:\n return SeverityNumber.INFO;\n case LogLevel.INFO:\n return SeverityNumber.INFO;\n case LogLevel.WARN:\n return SeverityNumber.WARN;\n case LogLevel.ERROR:\n return SeverityNumber.ERROR;\n default:\n return SeverityNumber.ERROR;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Attributes, type Meter, type ObservableGauge } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { TRACE_PROCESSOR, type MetricData } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\ntype SynchronousGauge = {\n gauge: ObservableGauge<Attributes>;\n nextValue: number;\n nextTags?: any;\n};\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\n private _gauges = new Map<string, SynchronousGauge>();\n\n constructor(private readonly options: OtelOptions) {\n // TODO: improve error handling/logging\n // https://github.com/open-telemetry/opentelemetry-js/issues/4823\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource,\n readers: [grafanaMetricReader],\n });\n this._meter = this._meterProvider.getMeter('dxos-observability');\n\n const metrics = {\n // TODO: update metrics names and remove prefix?\n increment: (name: string, value?: number, data?: MetricData) => {\n this.increment(name, value, convertTags(data));\n },\n distribution: (name: string, value: number, data?: MetricData) => {\n this.distribution(name, value, convertTags(data));\n },\n set: (name: string, value: number | string, data?: MetricData) => {\n // Not implemented, not part of Otel spec.\n },\n gauge: (name: string, value: number, data?: MetricData) => {\n this.gauge(name, value, convertTags(data));\n },\n };\n\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n }\n\n gauge(name: string, value: number, tags?: any): void {\n const gauge = this._meter.createGauge(name);\n log('otel gauge', { name, value, tags: { ...this.options.getTags(), ...tags } });\n gauge.record(value, { ...this.options.getTags(), ...tags });\n }\n\n increment(name: string, value?: number, tags?: any): void {\n const counter = this._meter.createCounter(name);\n log('otel counter', { name, value, tags: { ...this.options.getTags(), ...tags } });\n counter.add(value ?? 1, { ...this.options.getTags(), ...tags });\n }\n\n distribution(name: string, value: number, tags?: any): void {\n const distribution = this._meter.createHistogram(name);\n log('otel distribution', { name, value, tags: { ...this.options.getTags(), ...tags } });\n distribution.record(value, { ...this.options.getTags(), ...tags });\n }\n\n flush(): Promise<void> {\n return this._meterProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._meterProvider.shutdown();\n }\n}\n\nconst convertTags = (data?: MetricData) => {\n if (data && data.tags) {\n return Object.entries(data.tags).reduce<{ [key: string]: any }>((obj, [key, value]) => {\n obj[key] = value;\n return obj;\n }, {});\n } else {\n return {};\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace, type Tracer } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n BasicTracerProvider,\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { log } from 'debug';\n\nimport { TRACE_PROCESSOR, type StartSpanOptions } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n constructor(private readonly options: OtelOptions) {\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const tracerProvider = new BasicTracerProvider({ resource });\n tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));\n tracerProvider.addSpanProcessor(\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n }),\n ),\n );\n tracerProvider.register();\n this._tracer = trace.getTracer('dxos-observability', this.options.serviceVersion);\n }\n\n public start(): void {\n log('trace processor registered');\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n return this._tracer.startSpan(options.name, options);\n },\n });\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_resources", "import_semantic_conventions", "import_log", "import_api", "import_tracing", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "OtelLogs", "options", "logProcessor", "config", "entry", "logger", "_loggerProvider", "getLogger", "serviceVersion", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "JSON", "stringify", "attributes", "getTags", "consoleDiagLogLevel", "resource", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "addLogRecordProcessor", "BatchLogRecordProcessor", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "EXPORT_INTERVAL", "OtelMetrics", "_gauges", "Map", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "exportIntervalMillis", "_meterProvider", "MeterProvider", "readers", "_meter", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "counter", "createCounter", "add", "createHistogram", "Object", "entries", "reduce", "obj", "key", "OtelTraces", "tracerProvider", "BasicTracerProvider", "addSpanProcessor", "SimpleSpanProcessor", "ConsoleSpanExporter", "BatchSpanProcessor", "OTLPTraceExporter", "register", "_tracer", "trace", "getTracer", "start", "remoteTracing", "startSpan"]
7
- }
@@ -1,33 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var segment_exports = {};
20
- __export(segment_exports, {
21
- SegmentTelemetry: () => import_chunk_325GAGFA.SegmentTelemetry,
22
- TelemetryEvent: () => import_chunk_325GAGFA.TelemetryEvent
23
- });
24
- module.exports = __toCommonJS(segment_exports);
25
- var import_chunk_325GAGFA = require("../chunk-325GAGFA.cjs");
26
- var import_chunk_GIYJMZEQ = require("../chunk-GIYJMZEQ.cjs");
27
- var import_chunk_MZ3PMDTP = require("../chunk-MZ3PMDTP.cjs");
28
- // Annotate the CommonJS export names for ESM import in node:
29
- 0 && (module.exports = {
30
- SegmentTelemetry,
31
- TelemetryEvent
32
- });
33
- //# sourceMappingURL=index.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n SegmentTelemetry,\n TelemetryEvent\n} from \"../chunk-325GAGFA.cjs\";\nimport \"../chunk-GIYJMZEQ.cjs\";\nimport \"../chunk-MZ3PMDTP.cjs\";\nexport {\n SegmentTelemetry,\n TelemetryEvent\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;AACP,4BAAO;",
6
- "names": []
7
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var sentry_exports = {};
20
- __export(sentry_exports, {
21
- addBreadcrumb: () => import_chunk_MZ3PMDTP.addBreadcrumb,
22
- captureException: () => import_chunk_MZ3PMDTP.captureException,
23
- captureMessage: () => import_chunk_MZ3PMDTP.captureMessage,
24
- captureUserFeedback: () => import_chunk_MZ3PMDTP.captureUserFeedback,
25
- init: () => import_chunk_MZ3PMDTP.init,
26
- setTag: () => import_chunk_MZ3PMDTP.setTag,
27
- setTags: () => import_chunk_MZ3PMDTP.setTags,
28
- setUser: () => import_chunk_MZ3PMDTP.setUser,
29
- withScope: () => import_chunk_MZ3PMDTP.withScope
30
- });
31
- module.exports = __toCommonJS(sentry_exports);
32
- var import_chunk_GIYJMZEQ = require("../chunk-GIYJMZEQ.cjs");
33
- var import_chunk_MZ3PMDTP = require("../chunk-MZ3PMDTP.cjs");
34
- // Annotate the CommonJS export names for ESM import in node:
35
- 0 && (module.exports = {
36
- addBreadcrumb,
37
- captureException,
38
- captureMessage,
39
- captureUserFeedback,
40
- init,
41
- setTag,
42
- setTags,
43
- setUser,
44
- withScope
45
- });
46
- //# sourceMappingURL=index.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["index.cjs"],
4
- "sourcesContent": ["import \"../chunk-GIYJMZEQ.cjs\";\nimport {\n addBreadcrumb,\n captureException,\n captureMessage,\n captureUserFeedback,\n init,\n setTag,\n setTags,\n setUser,\n withScope\n} from \"../chunk-MZ3PMDTP.cjs\";\nexport {\n addBreadcrumb,\n captureException,\n captureMessage,\n captureUserFeedback,\n init,\n setTag,\n setTags,\n setUser,\n withScope\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAO;AACP,4BAUO;",
6
- "names": []
7
- }
@@ -1,164 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var sentry_log_processor_CCV4RL7N_exports = {};
20
- __export(sentry_log_processor_CCV4RL7N_exports, {
21
- SentryLogProcessor: () => SentryLogProcessor
22
- });
23
- module.exports = __toCommonJS(sentry_log_processor_CCV4RL7N_exports);
24
- var import_chunk_MZ3PMDTP = require("./chunk-MZ3PMDTP.cjs");
25
- var import_invariant = require("@dxos/invariant");
26
- var import_log = require("@dxos/log");
27
- var import_util = require("@dxos/util");
28
- var MAX_LOG_BREADCRUMBS = 150;
29
- var SentryLogProcessor = class {
30
- constructor() {
31
- this._breadcrumbs = new import_util.CircularBuffer(MAX_LOG_BREADCRUMBS);
32
- this.logProcessor = (config, entry) => {
33
- const { level, meta, error } = entry;
34
- if (!(0, import_log.shouldLog)(entry, config.captureFilters) || meta?.S?.remoteSessionId) {
35
- if (entry.level > import_log.LogLevel.DEBUG) {
36
- this._addBreadcrumb(void 0, entry.message, convertLevel(entry.level), void 0);
37
- }
38
- return;
39
- }
40
- if (entry.level !== import_log.LogLevel.WARN && entry.level !== import_log.LogLevel.ERROR) {
41
- return;
42
- }
43
- (0, import_chunk_MZ3PMDTP.withScope)((scope) => {
44
- const severity = convertLevel(level);
45
- scope.setLevel(severity);
46
- scope.setContext("dxoslog", entry.context ?? null);
47
- if (meta) {
48
- scope.setTag("transaction", `${getRelativeFilename(meta.F)}:${meta.L}`);
49
- if (meta.S?.hostSessionId) {
50
- scope.setTags({
51
- service_host_issue: true,
52
- service_host_session: meta.S?.hostSessionId
53
- });
54
- }
55
- if (!Number.isNaN(meta.S?.uptimeSeconds)) {
56
- scope.setExtra("uptime_seconds", meta.S?.uptimeSeconds);
57
- }
58
- }
59
- const extendedMessage = formatMessageForSentry(entry);
60
- let capturedError = error;
61
- if (capturedError == null && entry.level === import_log.LogLevel.ERROR) {
62
- capturedError = Object.values(entry.context ?? {}).find((v) => v instanceof Error);
63
- }
64
- if (capturedError) {
65
- if (capturedError instanceof import_invariant.InvariantViolation) {
66
- scope.setExtra("invariant_violation", true);
67
- }
68
- const isMessageDifferentFromStackTrace = error == null;
69
- if (isMessageDifferentFromStackTrace) {
70
- scope.setExtra("message", extendedMessage);
71
- }
72
- const eventId2 = (0, import_chunk_MZ3PMDTP.captureException)(capturedError);
73
- this._addBreadcrumb(eventId2, extendedMessage, severity, entry.context);
74
- return;
75
- }
76
- scope.setFingerprint([
77
- entry.message
78
- ]);
79
- const eventId = (0, import_chunk_MZ3PMDTP.captureMessage)(extendedMessage);
80
- this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);
81
- });
82
- };
83
- }
84
- addLogBreadcrumbsTo(event) {
85
- event.breadcrumbs ??= [];
86
- for (const breadcrumb of this._breadcrumbs) {
87
- event.breadcrumbs.push(breadcrumb);
88
- }
89
- event.breadcrumbs.sort((b1, b2) => {
90
- if (b1.timestamp === void 0 || b2.timestamp === void 0) {
91
- return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === void 0 ? -1 : 1;
92
- }
93
- return b1.timestamp - b2.timestamp;
94
- });
95
- }
96
- _addBreadcrumb(eventId, message, severity, context) {
97
- const breadcrumb = {
98
- type: "console",
99
- level: severity,
100
- event_id: eventId,
101
- category: "log",
102
- message,
103
- data: context,
104
- timestamp: Math.floor(Date.now() / 1e3)
105
- };
106
- const lastRecorded = this._breadcrumbs.getLast();
107
- if (lastRecorded && lastRecorded.message === breadcrumb.message) {
108
- const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};
109
- const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount) ? 1 : Number(lastRecorded.data?.mergedBreadcrumbCount);
110
- lastRecorded.data = {
111
- mergedBreadcrumbCount: mergedBreadcrumbCount + 1,
112
- firstBreadcrumbData,
113
- lastBreadcrumbData: breadcrumb.data
114
- };
115
- return;
116
- }
117
- this._breadcrumbs.push(breadcrumb);
118
- }
119
- };
120
- var formatMessageForSentry = (entry) => {
121
- let scopePrefix;
122
- if (entry.meta?.S) {
123
- const scope = entry.meta?.S;
124
- scopePrefix = scope.name || (0, import_util.getDebugName)(scope);
125
- }
126
- if (scopePrefix == null) {
127
- return entry.message;
128
- }
129
- const workerPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
130
- return `${workerPrefix}${scopePrefix} ${entry.message}`;
131
- };
132
- var convertLevel = (level) => {
133
- switch (level) {
134
- case import_log.LogLevel.ERROR:
135
- return "error";
136
- case import_log.LogLevel.VERBOSE:
137
- return "info";
138
- case import_log.LogLevel.INFO:
139
- return "info";
140
- case import_log.LogLevel.WARN:
141
- return "warning";
142
- case import_log.LogLevel.DEBUG:
143
- case import_log.LogLevel.TRACE:
144
- return "debug";
145
- default:
146
- throw never(level);
147
- }
148
- };
149
- var never = (_) => {
150
- return new Error("unhandled value");
151
- };
152
- var getRelativeFilename = (filename) => {
153
- const match = filename.match(/.+\/(packages\/.+\/.+)/);
154
- if (match) {
155
- const [, filePath] = match;
156
- return filePath;
157
- }
158
- return filename;
159
- };
160
- // Annotate the CommonJS export names for ESM import in node:
161
- 0 && (module.exports = {
162
- SentryLogProcessor
163
- });
164
- //# sourceMappingURL=sentry-log-processor-CCV4RL7N.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/sentry/sentry-log-processor.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Breadcrumb, SeverityLevel, Event } from '@sentry/types';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\nimport { CircularBuffer, getDebugName } from '@dxos/util';\n\nimport { withScope, captureException, captureMessage } from './node';\n\nconst MAX_LOG_BREADCRUMBS = 150;\n\nexport class SentryLogProcessor {\n private _breadcrumbs = new CircularBuffer<Breadcrumb>(MAX_LOG_BREADCRUMBS);\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const { level, meta, error } = entry;\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {\n if (entry.level > LogLevel.DEBUG) {\n this._addBreadcrumb(undefined, entry.message, convertLevel(entry.level), undefined);\n }\n return;\n }\n if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {\n return;\n }\n\n // TODO(nf): add rate limiting to avoid spamming Sentry/consuming excessive quota.\n withScope((scope) => {\n const severity = convertLevel(level);\n scope.setLevel(severity);\n scope.setContext('dxoslog', entry.context ?? null);\n if (meta) {\n scope.setTag('transaction', `${getRelativeFilename(meta.F)}:${meta.L}`);\n\n if (meta.S?.hostSessionId) {\n scope.setTags({\n service_host_issue: true,\n service_host_session: meta.S?.hostSessionId,\n });\n }\n\n if (!Number.isNaN(meta.S?.uptimeSeconds)) {\n scope.setExtra('uptime_seconds', meta.S?.uptimeSeconds);\n }\n }\n\n const extendedMessage = formatMessageForSentry(entry);\n let capturedError = error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n if (capturedError) {\n if (capturedError instanceof InvariantViolation) {\n scope.setExtra('invariant_violation', true);\n }\n const isMessageDifferentFromStackTrace = error == null;\n if (isMessageDifferentFromStackTrace) {\n scope.setExtra('message', extendedMessage);\n }\n const eventId = captureException(capturedError);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n return;\n }\n\n scope.setFingerprint([entry.message]);\n const eventId = captureMessage(extendedMessage);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n });\n };\n\n public addLogBreadcrumbsTo(event: Event): void {\n event.breadcrumbs ??= [];\n for (const breadcrumb of this._breadcrumbs) {\n event.breadcrumbs.push(breadcrumb);\n }\n event.breadcrumbs.sort((b1, b2) => {\n if (b1.timestamp === undefined || b2.timestamp === undefined) {\n return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === undefined ? -1 : 1;\n }\n return b1.timestamp - b2.timestamp;\n });\n }\n\n private _addBreadcrumb(\n eventId: string | undefined,\n message: string,\n severity: SeverityLevel,\n context: { [key: string]: any } | undefined,\n ): void {\n const breadcrumb: Breadcrumb = {\n type: 'console',\n level: severity,\n event_id: eventId,\n category: 'log',\n message,\n data: context,\n timestamp: Math.floor(Date.now() / 1000),\n };\n const lastRecorded = this._breadcrumbs.getLast();\n if (lastRecorded && lastRecorded.message === breadcrumb.message) {\n const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};\n const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount)\n ? 1\n : Number(lastRecorded.data?.mergedBreadcrumbCount);\n lastRecorded.data = {\n mergedBreadcrumbCount: mergedBreadcrumbCount + 1,\n firstBreadcrumbData,\n lastBreadcrumbData: breadcrumb.data,\n };\n return;\n }\n this._breadcrumbs.push(breadcrumb);\n }\n}\n\nconst formatMessageForSentry = (entry: LogEntry) => {\n let scopePrefix: string | undefined;\n if (entry.meta?.S) {\n const scope = entry.meta?.S;\n scopePrefix = scope.name || getDebugName(scope);\n }\n if (scopePrefix == null) {\n return entry.message;\n }\n\n const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n return `${workerPrefix}${scopePrefix} ${entry.message}`;\n};\n\nconst convertLevel = (level: LogLevel): SeverityLevel => {\n switch (level) {\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.VERBOSE:\n return 'info';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARN:\n return 'warning';\n case LogLevel.DEBUG:\n case LogLevel.TRACE:\n return 'debug';\n default:\n throw never(level);\n }\n};\n\nconst never = (_: never) => {\n return new Error('unhandled value');\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
5
- "mappings": "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",
6
- "names": ["MAX_LOG_BREADCRUMBS", "SentryLogProcessor", "_breadcrumbs", "CircularBuffer", "logProcessor", "config", "entry", "level", "meta", "error", "shouldLog", "captureFilters", "S", "remoteSessionId", "LogLevel", "DEBUG", "_addBreadcrumb", "undefined", "message", "convertLevel", "WARN", "ERROR", "withScope", "scope", "severity", "setLevel", "setContext", "context", "setTag", "getRelativeFilename", "F", "L", "hostSessionId", "setTags", "service_host_issue", "service_host_session", "Number", "isNaN", "uptimeSeconds", "setExtra", "extendedMessage", "formatMessageForSentry", "capturedError", "Object", "values", "find", "v", "Error", "InvariantViolation", "isMessageDifferentFromStackTrace", "eventId", "captureException", "setFingerprint", "captureMessage", "addLogBreadcrumbsTo", "event", "breadcrumbs", "breadcrumb", "push", "sort", "b1", "b2", "timestamp", "type", "event_id", "category", "data", "Math", "floor", "Date", "now", "lastRecorded", "getLast", "firstBreadcrumbData", "mergedBreadcrumbCount", "lastBreadcrumbData", "scopePrefix", "name", "getDebugName", "workerPrefix", "VERBOSE", "INFO", "TRACE", "never", "_", "filename", "match", "filePath"]
7
- }
@@ -1,11 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- Observability
4
- } from "./chunk-M7QJLFGR.mjs";
5
- import "./chunk-AZMSBUWR.mjs";
6
- import "./chunk-YJ4KVBWC.mjs";
7
- import "./chunk-H7Y2DDUN.mjs";
8
- export {
9
- Observability
10
- };
11
- //# sourceMappingURL=observability-7BTI46NM.mjs.map