@dxos/observability 0.8.4-main.ae835ea → 0.8.4-main.bc674ce
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-XNAF22QM.mjs → chunk-5LN7D6GM.mjs} +6 -6
- package/dist/lib/browser/chunk-5LN7D6GM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-USIB5JOP.mjs → chunk-JJQT5TQH.mjs} +51 -398
- package/dist/lib/browser/chunk-JJQT5TQH.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZI3ZS3PA.mjs → chunk-O4BG5MRL.mjs} +1 -1
- package/dist/lib/browser/chunk-U6JWT3E2.mjs +1 -0
- package/dist/lib/browser/chunk-VL6LVQPU.mjs +69 -0
- package/dist/lib/browser/chunk-VL6LVQPU.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +341 -15
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-XK652NZG.mjs +11 -0
- package/dist/lib/browser/otel/traces-browser.mjs +7 -0
- package/dist/lib/browser/otel/traces-browser.mjs.map +7 -0
- package/dist/lib/browser/otel/traces.mjs +7 -0
- package/dist/lib/browser/otel/traces.mjs.map +7 -0
- package/dist/lib/browser/{otel-UH7ZRWC2.mjs → otel-DI4ASU7Y.mjs} +5 -66
- package/dist/lib/{node-esm/otel-7PUCFSTY.mjs.map → browser/otel-DI4ASU7Y.mjs.map} +4 -4
- package/dist/lib/browser/segment/browser.mjs +9 -0
- package/dist/lib/browser/segment/browser.mjs.map +7 -0
- package/dist/lib/browser/segment/index.mjs +3 -2
- package/dist/lib/browser/segment/node.mjs +9 -0
- package/dist/lib/browser/segment/node.mjs.map +7 -0
- package/dist/lib/browser/sentry/browser.mjs +23 -0
- package/dist/lib/browser/sentry/browser.mjs.map +7 -0
- package/dist/lib/browser/sentry/index.mjs +1 -1
- package/dist/lib/browser/sentry/node.mjs +23 -0
- package/dist/lib/browser/sentry/node.mjs.map +7 -0
- package/dist/lib/browser/{sentry-log-processor-5LSQJMIO.mjs → sentry-log-processor-W7LI6WXA.mjs} +2 -2
- package/dist/lib/browser/sentry-log-processor-W7LI6WXA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JJS4CBLT.mjs → chunk-KKNY7TRV.mjs} +51 -398
- package/dist/lib/node-esm/chunk-KKNY7TRV.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-KLJGCUYA.mjs +2 -0
- package/dist/lib/node-esm/chunk-KLJGCUYA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OJV247NY.mjs → chunk-KVJTNW3F.mjs} +27 -84
- package/dist/lib/node-esm/chunk-KVJTNW3F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-QK5IUYVA.mjs → chunk-M4627SMT.mjs} +1 -1
- package/dist/lib/node-esm/chunk-UIVXGEGJ.mjs +62 -0
- package/dist/lib/node-esm/chunk-UIVXGEGJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WAGGA7IT.mjs +52 -0
- package/dist/lib/node-esm/chunk-WAGGA7IT.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +342 -15
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-CXQ3CZGB.mjs +13 -0
- package/dist/lib/node-esm/observability-CXQ3CZGB.mjs.map +7 -0
- package/dist/lib/node-esm/otel/traces-browser.mjs +70 -0
- package/dist/lib/node-esm/otel/traces-browser.mjs.map +7 -0
- package/dist/lib/node-esm/otel/traces.mjs +8 -0
- package/dist/lib/node-esm/otel/traces.mjs.map +7 -0
- package/dist/lib/node-esm/{otel-7PUCFSTY.mjs → otel-JFXO22WD.mjs} +4 -47
- package/dist/lib/{browser/otel-UH7ZRWC2.mjs.map → node-esm/otel-JFXO22WD.mjs.map} +4 -4
- package/dist/lib/node-esm/segment/browser.mjs +92 -0
- package/dist/lib/node-esm/segment/browser.mjs.map +7 -0
- package/dist/lib/node-esm/segment/index.mjs +6 -3
- package/dist/lib/node-esm/segment/node.mjs +11 -0
- package/dist/lib/node-esm/segment/node.mjs.map +7 -0
- package/dist/lib/node-esm/sentry/browser.mjs +165 -0
- package/dist/lib/node-esm/sentry/browser.mjs.map +7 -0
- package/dist/lib/node-esm/sentry/index.mjs +1 -1
- package/dist/lib/node-esm/sentry/node.mjs +24 -0
- package/dist/lib/node-esm/sentry/node.mjs.map +7 -0
- package/dist/lib/node-esm/{sentry-log-processor-C4UGMAMV.mjs → sentry-log-processor-W3SG4RQL.mjs} +2 -2
- package/dist/lib/node-esm/sentry-log-processor-W3SG4RQL.mjs.map +7 -0
- package/dist/types/src/helpers/map-spaces.js +1 -1
- package/dist/types/src/helpers/map-spaces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +2 -2
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +2 -2
- package/dist/types/src/segment/base.js.map +1 -1
- package/dist/types/src/segment/browser.js +2 -2
- package/dist/types/src/segment/browser.js.map +1 -1
- package/dist/types/src/segment/node.js +2 -2
- package/dist/types/src/segment/node.js.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +23 -22
- package/src/helpers/map-spaces.ts +1 -1
- package/src/segment/base.ts +2 -2
- package/src/segment/browser.ts +2 -2
- package/src/segment/node.ts +2 -2
- package/src/sentry/sentry-log-processor.ts +2 -0
- package/dist/lib/browser/chunk-USIB5JOP.mjs.map +0 -7
- package/dist/lib/browser/chunk-XNAF22QM.mjs.map +0 -7
- package/dist/lib/browser/observability-AOZNUWZS.mjs +0 -10
- package/dist/lib/browser/sentry-log-processor-5LSQJMIO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JJS4CBLT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OJV247NY.mjs.map +0 -7
- package/dist/lib/node-esm/observability-UWX2LAYX.mjs +0 -11
- package/dist/lib/node-esm/sentry-log-processor-C4UGMAMV.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-ZI3ZS3PA.mjs.map → chunk-O4BG5MRL.mjs.map} +0 -0
- /package/dist/lib/browser/{observability-AOZNUWZS.mjs.map → chunk-U6JWT3E2.mjs.map} +0 -0
- /package/dist/lib/{node-esm/observability-UWX2LAYX.mjs.map → browser/observability-XK652NZG.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-QK5IUYVA.mjs.map → chunk-M4627SMT.mjs.map} +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// src/otel/traces-browser.ts
|
|
4
|
+
import { trace } from "@opentelemetry/api";
|
|
5
|
+
import { getWebAutoInstrumentations } from "@opentelemetry/auto-instrumentations-web";
|
|
6
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
7
|
+
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
8
|
+
import { defaultResource, resourceFromAttributes } from "@opentelemetry/resources";
|
|
9
|
+
import { BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
10
|
+
import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
|
|
11
|
+
import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
12
|
+
import { log } from "@dxos/log";
|
|
13
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
14
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/otel/traces-browser.ts";
|
|
15
|
+
var OtelTraces = class {
|
|
16
|
+
options;
|
|
17
|
+
_tracer;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
const resource = defaultResource().merge(resourceFromAttributes({
|
|
21
|
+
[SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
22
|
+
[SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
|
|
23
|
+
}));
|
|
24
|
+
const tracerProvider = new WebTracerProvider({
|
|
25
|
+
resource,
|
|
26
|
+
spanProcessors: [
|
|
27
|
+
new SimpleSpanProcessor(new ConsoleSpanExporter()),
|
|
28
|
+
new BatchSpanProcessor(new OTLPTraceExporter({
|
|
29
|
+
url: this.options.endpoint + "/v1/traces",
|
|
30
|
+
headers: {
|
|
31
|
+
Authorization: this.options.authorizationHeader
|
|
32
|
+
},
|
|
33
|
+
concurrencyLimit: 10
|
|
34
|
+
}))
|
|
35
|
+
]
|
|
36
|
+
});
|
|
37
|
+
trace.setGlobalTracerProvider(tracerProvider);
|
|
38
|
+
this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
39
|
+
}
|
|
40
|
+
start() {
|
|
41
|
+
registerInstrumentations({
|
|
42
|
+
instrumentations: [
|
|
43
|
+
getWebAutoInstrumentations()
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
log("trace processor registered", void 0, {
|
|
47
|
+
F: __dxlog_file,
|
|
48
|
+
L: 54,
|
|
49
|
+
S: this,
|
|
50
|
+
C: (f, a) => f(...a)
|
|
51
|
+
});
|
|
52
|
+
TRACE_PROCESSOR.remoteTracing.registerProcessor({
|
|
53
|
+
startSpan: (options) => {
|
|
54
|
+
log("begin otel trace", {
|
|
55
|
+
options
|
|
56
|
+
}, {
|
|
57
|
+
F: __dxlog_file,
|
|
58
|
+
L: 57,
|
|
59
|
+
S: this,
|
|
60
|
+
C: (f, a) => f(...a)
|
|
61
|
+
});
|
|
62
|
+
return this._tracer.startSpan(options.name, options);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export {
|
|
68
|
+
OtelTraces
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=traces-browser.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/otel/traces-browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Tracer, trace } from '@opentelemetry/api';\nimport { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type StartSpanOptions, TRACE_PROCESSOR } 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 = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const tracerProvider = new WebTracerProvider({\n resource,\n spanProcessors: [\n new SimpleSpanProcessor(new ConsoleSpanExporter()),\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 });\n\n // TODO(nf): ContextManager? Propogator?\n trace.setGlobalTracerProvider(tracerProvider);\n this._tracer = trace.getTracer('dxos-observability', this.options.serviceVersion);\n }\n\n public start(): void {\n registerInstrumentations({\n instrumentations: [getWebAutoInstrumentations()],\n });\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": ";;;AAIA,SAAsBA,aAAa;AACnC,SAASC,kCAAkC;AAC3C,SAASC,yBAAyB;AAClC,SAASC,gCAAgC;AACzC,SAASC,iBAAiBC,8BAA8B;AACxD,SAASC,oBAAoBC,qBAAqBC,2BAA2B;AAC7E,SAASC,yBAAyB;AAClC,SAASC,0BAA0BC,mCAAmC;AAEtE,SAASC,WAAW;AACpB,SAAgCC,uBAAuB;;AAIhD,IAAMC,aAAN,MAAMA;;EACHC;EACR,YAA6BC,SAAsB;SAAtBA,UAAAA;AAC3B,UAAMC,WAAWb,gBAAAA,EAAkBc,MACjCb,uBAAuB;MACrB,CAACK,wBAAAA,GAA2B,KAAKM,QAAQG;MACzC,CAACR,2BAAAA,GAA8B,KAAKK,QAAQI;IAC9C,CAAA,CAAA;AAGF,UAAMC,iBAAiB,IAAIZ,kBAAkB;MAC3CQ;MACAK,gBAAgB;QACd,IAAId,oBAAoB,IAAID,oBAAAA,CAAAA;QAC5B,IAAID,mBACF,IAAIJ,kBAAkB;UACpBqB,KAAK,KAAKP,QAAQQ,WAAW;UAC7BC,SAAS;YACPC,eAAe,KAAKV,QAAQW;UAC9B;UACAC,kBAAkB;QACpB,CAAA,CAAA;;IAGN,CAAA;AAGA5B,UAAM6B,wBAAwBR,cAAAA;AAC9B,SAAKN,UAAUf,MAAM8B,UAAU,sBAAsB,KAAKd,QAAQI,cAAc;EAClF;EAEOW,QAAc;AACnB5B,6BAAyB;MACvB6B,kBAAkB;QAAC/B,2BAAAA;;IACrB,CAAA;AACAW,QAAI,8BAAA,QAAA;;;;;;AACJC,oBAAgBoB,cAAcC,kBAAkB;MAC9CC,WAAW,CAACnB,YAAAA;AACVJ,YAAI,oBAAoB;UAAEI;QAAQ,GAAA;;;;;;AAClC,eAAO,KAAKD,QAAQoB,UAAUnB,QAAQoB,MAAMpB,OAAAA;MAC9C;IACF,CAAA;EACF;AACF;",
|
|
6
|
+
"names": ["trace", "getWebAutoInstrumentations", "OTLPTraceExporter", "registerInstrumentations", "defaultResource", "resourceFromAttributes", "BatchSpanProcessor", "ConsoleSpanExporter", "SimpleSpanProcessor", "WebTracerProvider", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "OtelTraces", "_tracer", "options", "resource", "merge", "serviceName", "serviceVersion", "tracerProvider", "spanProcessors", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "setGlobalTracerProvider", "getTracer", "start", "instrumentations", "remoteTracing", "registerProcessor", "startSpan", "name"]
|
|
7
|
+
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
OtelTraces
|
|
4
|
+
} from "./chunk-WAGGA7IT.mjs";
|
|
2
5
|
|
|
3
6
|
// src/otel/otel.ts
|
|
4
7
|
import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
|
|
@@ -215,56 +218,10 @@ var convertTags = (data) => {
|
|
|
215
218
|
return {};
|
|
216
219
|
}
|
|
217
220
|
};
|
|
218
|
-
|
|
219
|
-
// src/otel/traces.ts
|
|
220
|
-
import { trace } from "@opentelemetry/api";
|
|
221
|
-
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
222
|
-
import { defaultResource as defaultResource3, resourceFromAttributes as resourceFromAttributes3 } from "@opentelemetry/resources";
|
|
223
|
-
import { BasicTracerProvider, BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
224
|
-
import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME3, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION3 } from "@opentelemetry/semantic-conventions";
|
|
225
|
-
import { log as log2 } from "debug";
|
|
226
|
-
import { TRACE_PROCESSOR as TRACE_PROCESSOR2 } from "@dxos/tracing";
|
|
227
|
-
var OtelTraces = class {
|
|
228
|
-
options;
|
|
229
|
-
_tracer;
|
|
230
|
-
constructor(options) {
|
|
231
|
-
this.options = options;
|
|
232
|
-
const resource = defaultResource3().merge(resourceFromAttributes3({
|
|
233
|
-
[SEMRESATTRS_SERVICE_NAME3]: this.options.serviceName,
|
|
234
|
-
[SEMRESATTRS_SERVICE_VERSION3]: this.options.serviceVersion
|
|
235
|
-
}));
|
|
236
|
-
const tracerProvider = new BasicTracerProvider({
|
|
237
|
-
resource,
|
|
238
|
-
spanProcessors: [
|
|
239
|
-
new SimpleSpanProcessor(new ConsoleSpanExporter()),
|
|
240
|
-
new BatchSpanProcessor(new OTLPTraceExporter({
|
|
241
|
-
url: this.options.endpoint + "/v1/traces",
|
|
242
|
-
headers: {
|
|
243
|
-
Authorization: this.options.authorizationHeader
|
|
244
|
-
},
|
|
245
|
-
concurrencyLimit: 10
|
|
246
|
-
}))
|
|
247
|
-
]
|
|
248
|
-
});
|
|
249
|
-
trace.setGlobalTracerProvider(tracerProvider);
|
|
250
|
-
this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
251
|
-
}
|
|
252
|
-
start() {
|
|
253
|
-
log2("trace processor registered");
|
|
254
|
-
TRACE_PROCESSOR2.remoteTracing.registerProcessor({
|
|
255
|
-
startSpan: (options) => {
|
|
256
|
-
log2("begin otel trace", {
|
|
257
|
-
options
|
|
258
|
-
});
|
|
259
|
-
return this._tracer.startSpan(options.name, options);
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
221
|
export {
|
|
265
222
|
OtelLogs,
|
|
266
223
|
OtelMetrics,
|
|
267
224
|
OtelTraces,
|
|
268
225
|
setDiagLogger
|
|
269
226
|
};
|
|
270
|
-
//# sourceMappingURL=otel-
|
|
227
|
+
//# sourceMappingURL=otel-JFXO22WD.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/otel/otel.ts", "../../../src/otel/logs.ts", "../../../src/otel/metrics.ts"
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { DiagConsoleLogger, DiagLogLevel, diag } 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 { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n getContextFromEntry,\n getRelativeFilename,\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 = defaultResource().merge(\n resourceFromAttributes({\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({\n resource,\n processors: [new BatchLogRecordProcessor(logExporter)],\n });\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 Meter } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { defaultResource, resourceFromAttributes } 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 { type MetricData, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\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 = defaultResource().merge(\n resourceFromAttributes({\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"
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "SeverityNumber", "OTLPLogExporter", "defaultResource", "resourceFromAttributes", "BatchLogRecordProcessor", "LoggerProvider", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "LogLevel", "getContextFromEntry", "getRelativeFilename", "jsonlogify", "OtelLogs", "_loggerProvider", "options", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "processors", "BatchLogRecordProcessor", "logProcessor", "config", "entry", "logger", "getLogger", "level", "logLevel", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "JSON", "stringify", "attributes", "getTags", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "OTLPMetricExporter", "defaultResource", "resourceFromAttributes", "MeterProvider", "PeriodicExportingMetricReader", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "OtelMetrics", "_meterProvider", "_meter", "options", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "exportIntervalMillis", "MeterProvider", "readers", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "getTags", "record", "counter", "createCounter", "add", "createHistogram", "flush", "forceFlush", "close", "shutdown", "Object", "entries", "reduce", "obj", "key"
|
|
3
|
+
"sources": ["../../../src/otel/otel.ts", "../../../src/otel/logs.ts", "../../../src/otel/metrics.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { DiagConsoleLogger, DiagLogLevel, diag } 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 { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n getContextFromEntry,\n getRelativeFilename,\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 = defaultResource().merge(\n resourceFromAttributes({\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({\n resource,\n processors: [new BatchLogRecordProcessor(logExporter)],\n });\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 Meter } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { defaultResource, resourceFromAttributes } 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 { type MetricData, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\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 = defaultResource().merge(\n resourceFromAttributes({\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"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,SAASA,mBAAmBC,cAAcC,YAAY;AAW/C,IAAMC,gBAAgB,CAACC,UAAAA;AAC5B,QAAMC,WAAWC,aAAaF,KAAAA;AAC9B,MAAIC,UAAU;AACZE,SAAKC,UAAU,IAAIC,kBAAAA,GAAqBJ,QAAAA;EAC1C;AACF;;;AChBA,SAASK,sBAAsB;AAC/B,SAASC,uBAAuB;AAChC,SAASC,iBAAiBC,8BAA8B;AACxD,SAASC,yBAAyBC,sBAAsB;AACxD,SAASC,0BAA0BC,mCAAmC;AAEtE,SAGEC,UAEAC,qBACAC,2BACK;AACP,SAASC,kBAAkB;AAapB,IAAMC,WAAN,MAAMA;;EACHC;EACR,YAA6BC,SAAyB;SAAzBA,UAAAA;AAC3BC,kBAAcD,QAAQE,mBAAmB;AACzC,UAAMC,WAAWC,gBAAAA,EAAkBC,MACjCC,uBAAuB;MACrB,CAACC,wBAAAA,GAA2B,KAAKP,QAAQQ;MACzC,CAACC,2BAAAA,GAA8B,KAAKT,QAAQU;IAC9C,CAAA,CAAA;AAEF,UAAMC,cAAc,IAAIC,gBAAgB;MACtCC,KAAK,KAAKb,QAAQc,WAAW;MAC7BC,SAAS;QACPC,eAAe,KAAKhB,QAAQiB;MAC9B;MACAC,kBAAkB;IACpB,CAAA;AACA,SAAKnB,kBAAkB,IAAIoB,eAAe;MACxChB;MACAiB,YAAY;QAAC,IAAIC,wBAAwBV,WAAAA;;IAC3C,CAAA;EACF;EAEgBW,eAA6B,CAACC,QAAmBC,UAAAA;AAC/D,UAAMC,SAAS,KAAK1B,gBAAgB2B,UAAU,sBAAsB,KAAK1B,QAAQU,cAAc;AAE/F,QACEc,MAAMG,QAAQ,KAAK3B,QAAQ4B,YAC1B,CAAC,KAAK5B,QAAQ6B,2BAA2BL,MAAMM,MAAMC,GAAGC,iBACzD;AACA;IACF;AAEA,UAAMC,SAAS;MACb,GAAGT;MACH,GAAIA,MAAMM,OAAO;QAAEA,MAAM;UAAEI,MAAMC,oBAAoBX,MAAMM,KAAKM,CAAC;UAAGC,MAAMb,MAAMM,KAAKQ;QAAE;MAAE,IAAI,CAAC;MAC9FC,SAASC,WAAWC,oBAAoBjB,KAAAA,CAAAA;IAC1C;AAEAC,WAAOiB,KAAK;MACVC,gBAAgBC,aAAapB,MAAMG,KAAK;MACxCkB,MAAMC,KAAKC,UAAUd,MAAAA;MACrBe,YAAY,KAAKhD,QAAQiD,QAAO;IAClC,CAAA;EACF;EAEAC,QAAuB;AACrB,WAAO,KAAKnD,gBAAgBoD,WAAU;EACxC;EAEAC,QAAuB;AACrB,WAAO,KAAKrD,gBAAgBsD,SAAQ;EACtC;AACF;AAEA,IAAMT,eAAe,CAACjB,UAAAA;AACpB,UAAQA,OAAAA;IACN,KAAK2B,SAASC;AACZ,aAAOC,eAAeD;IACxB,KAAKD,SAASG;AACZ,aAAOD,eAAeE;IACxB,KAAKJ,SAASI;AACZ,aAAOF,eAAeE;IACxB,KAAKJ,SAASK;AACZ,aAAOH,eAAeG;IACxB,KAAKL,SAASM;AACZ,aAAOJ,eAAeI;IACxB;AACE,aAAOJ,eAAeI;EAC1B;AACF;;;AChGA,SAASC,0BAA0B;AACnC,SAASC,mBAAAA,kBAAiBC,0BAAAA,+BAA8B;AACxD,SAASC,eAAeC,qCAAqC;AAC7D,SAASC,4BAAAA,2BAA0BC,+BAAAA,oCAAmC;AAEtE,SAASC,WAAW;AACpB,SAA0BC,uBAAuB;;AAIjD,IAAMC,kBAAkB,KAAK;AAEtB,IAAMC,cAAN,MAAMA;;EACHC;EACAC;EAER,YAA6BC,SAAsB;SAAtBA,UAAAA;AAG3BC,kBAAcD,QAAQE,mBAAmB;AACzC,UAAMC,WAAWC,iBAAAA,EAAkBC,MACjCC,wBAAuB;MACrB,CAACC,yBAAAA,GAA2B,KAAKP,QAAQQ;MACzC,CAACC,4BAAAA,GAA8B,KAAKT,QAAQU;IAC9C,CAAA,CAAA;AAGF,UAAMC,sBAAsB,IAAIC,8BAA8B;MAC5DC,UAAU,IAAIC,mBAAmB;QAC/BC,KAAK,KAAKf,QAAQgB,WAAW;QAC7BC,SAAS;UACPC,eAAe,KAAKlB,QAAQmB;QAC9B;MACF,CAAA;MACAC,sBAAsBxB;IACxB,CAAA;AAEA,SAAKE,iBAAiB,IAAIuB,cAAc;MACtClB;MACAmB,SAAS;QAACX;;IACZ,CAAA;AACA,SAAKZ,SAAS,KAAKD,eAAeyB,SAAS,oBAAA;AAE3C,UAAMC,UAAU;;MAEdC,WAAW,CAACC,MAAcC,OAAgBC,SAAAA;AACxC,aAAKH,UAAUC,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MAC1C;MACAE,cAAc,CAACJ,MAAcC,OAAeC,SAAAA;AAC1C,aAAKE,aAAaJ,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MAC7C;MACAG,KAAK,CAACL,MAAcC,OAAwBC,SAAAA;MAE5C;MACAI,OAAO,CAACN,MAAcC,OAAeC,SAAAA;AACnC,aAAKI,MAAMN,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MACtC;IACF;AAEAK,oBAAgBC,cAAcC,kBAAkBX,OAAAA;EAClD;EAEAQ,MAAMN,MAAcC,OAAeS,MAAkB;AACnD,UAAMJ,QAAQ,KAAKjC,OAAOsC,YAAYX,IAAAA;AACtCY,QAAI,cAAc;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAKpC,QAAQuC,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AAC9EJ,UAAMQ,OAAOb,OAAO;MAAE,GAAG,KAAK3B,QAAQuC,QAAO;MAAI,GAAGH;IAAK,CAAA;EAC3D;EAEAX,UAAUC,MAAcC,OAAgBS,MAAkB;AACxD,UAAMK,UAAU,KAAK1C,OAAO2C,cAAchB,IAAAA;AAC1CY,QAAI,gBAAgB;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAKpC,QAAQuC,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AAChFK,YAAQE,IAAIhB,SAAS,GAAG;MAAE,GAAG,KAAK3B,QAAQuC,QAAO;MAAI,GAAGH;IAAK,CAAA;EAC/D;EAEAN,aAAaJ,MAAcC,OAAeS,MAAkB;AAC1D,UAAMN,eAAe,KAAK/B,OAAO6C,gBAAgBlB,IAAAA;AACjDY,QAAI,qBAAqB;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAKpC,QAAQuC,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AACrFN,iBAAaU,OAAOb,OAAO;MAAE,GAAG,KAAK3B,QAAQuC,QAAO;MAAI,GAAGH;IAAK,CAAA;EAClE;EAEAS,QAAuB;AACrB,WAAO,KAAK/C,eAAegD,WAAU;EACvC;EAEAC,QAAuB;AACrB,WAAO,KAAKjD,eAAekD,SAAQ;EACrC;AACF;AAEA,IAAMnB,cAAc,CAACD,SAAAA;AACnB,MAAIA,QAAQA,KAAKQ,MAAM;AACrB,WAAOa,OAAOC,QAAQtB,KAAKQ,IAAI,EAAEe,OAA+B,CAACC,KAAK,CAACC,KAAK1B,KAAAA,MAAM;AAChFyB,UAAIC,GAAAA,IAAO1B;AACX,aAAOyB;IACT,GAAG,CAAC,CAAA;EACN,OAAO;AACL,WAAO,CAAC;EACV;AACF;",
|
|
6
|
+
"names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "SeverityNumber", "OTLPLogExporter", "defaultResource", "resourceFromAttributes", "BatchLogRecordProcessor", "LoggerProvider", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "LogLevel", "getContextFromEntry", "getRelativeFilename", "jsonlogify", "OtelLogs", "_loggerProvider", "options", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "processors", "BatchLogRecordProcessor", "logProcessor", "config", "entry", "logger", "getLogger", "level", "logLevel", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "JSON", "stringify", "attributes", "getTags", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "OTLPMetricExporter", "defaultResource", "resourceFromAttributes", "MeterProvider", "PeriodicExportingMetricReader", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "OtelMetrics", "_meterProvider", "_meter", "options", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "exportIntervalMillis", "MeterProvider", "readers", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "getTags", "record", "counter", "createCounter", "add", "createHistogram", "flush", "forceFlush", "close", "shutdown", "Object", "entries", "reduce", "obj", "key"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
AbstractSegmentTelemetry
|
|
4
|
+
} from "../chunk-UIVXGEGJ.mjs";
|
|
5
|
+
import "../chunk-QUZL7LKE.mjs";
|
|
6
|
+
import {
|
|
7
|
+
captureException
|
|
8
|
+
} from "../chunk-M4627SMT.mjs";
|
|
9
|
+
|
|
10
|
+
// src/segment/browser.ts
|
|
11
|
+
import snippet from "@segment/snippet";
|
|
12
|
+
import { log } from "@dxos/log";
|
|
13
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/segment/browser.ts";
|
|
14
|
+
var SegmentTelemetry = class extends AbstractSegmentTelemetry {
|
|
15
|
+
constructor({ apiKey, batchSize, getTags }) {
|
|
16
|
+
super(getTags);
|
|
17
|
+
try {
|
|
18
|
+
const contents = snippet.min({
|
|
19
|
+
apiKey,
|
|
20
|
+
page: false
|
|
21
|
+
});
|
|
22
|
+
const script = document.createElement("script");
|
|
23
|
+
script.innerHTML = contents;
|
|
24
|
+
document.body.append(script);
|
|
25
|
+
} catch (err) {
|
|
26
|
+
log.catch("failed to initialize telemetry", err, {
|
|
27
|
+
F: __dxlog_file,
|
|
28
|
+
L: 28,
|
|
29
|
+
S: this,
|
|
30
|
+
C: (f, a) => f(...a)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
identify(options) {
|
|
35
|
+
try {
|
|
36
|
+
window.analytics?.identify(options.userId, options.traits);
|
|
37
|
+
} catch (err) {
|
|
38
|
+
log.catch("failed to identify", err, {
|
|
39
|
+
F: __dxlog_file,
|
|
40
|
+
L: 36,
|
|
41
|
+
S: this,
|
|
42
|
+
C: (f, a) => f(...a)
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
page(options) {
|
|
47
|
+
try {
|
|
48
|
+
const props = this.createPageParams(options);
|
|
49
|
+
window.analytics?.page(props.category, props.name, props.properties);
|
|
50
|
+
} catch (err) {
|
|
51
|
+
log.catch("failed to track page", err, {
|
|
52
|
+
F: __dxlog_file,
|
|
53
|
+
L: 45,
|
|
54
|
+
S: this,
|
|
55
|
+
C: (f, a) => f(...a)
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
track(options) {
|
|
60
|
+
try {
|
|
61
|
+
const props = this.createTrackParams(options);
|
|
62
|
+
window.analytics?.track(props.event, props.properties);
|
|
63
|
+
} catch (err) {
|
|
64
|
+
log.catch("failed to track event", err, {
|
|
65
|
+
F: __dxlog_file,
|
|
66
|
+
L: 54,
|
|
67
|
+
S: this,
|
|
68
|
+
C: (f, a) => f(...a)
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async flush() {
|
|
73
|
+
try {
|
|
74
|
+
await window.analytics?.flush((err) => {
|
|
75
|
+
captureException(err);
|
|
76
|
+
});
|
|
77
|
+
} catch (err) {
|
|
78
|
+
log.catch("failed to flush telemetry", err, {
|
|
79
|
+
F: __dxlog_file,
|
|
80
|
+
L: 64,
|
|
81
|
+
S: this,
|
|
82
|
+
C: (f, a) => f(...a)
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async close() {
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
export {
|
|
90
|
+
SegmentTelemetry
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=browser.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/segment/browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { type IdentifyParams } from '@segment/analytics-node';\nimport snippet from '@segment/snippet';\n\nimport { log } from '@dxos/log';\n\nimport { captureException } from '../sentry';\n\nimport { AbstractSegmentTelemetry } from './base';\nimport type { PageOptions, SegmentTelemetryOptions, TrackOptions } from './types';\n\n/**\n * Browser telemetry.\n */\n// https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/#basic-tracking-methods\nexport class SegmentTelemetry extends AbstractSegmentTelemetry {\n constructor({ apiKey, batchSize, getTags }: SegmentTelemetryOptions) {\n super(getTags);\n try {\n const contents = snippet.min({ apiKey, page: false });\n const script = document.createElement('script');\n script.innerHTML = contents;\n document.body.append(script);\n } catch (err) {\n log.catch('failed to initialize telemetry', err);\n }\n }\n\n identify(options: IdentifyParams): void {\n try {\n (window as any).analytics?.identify(options.userId, options.traits);\n } catch (err) {\n log.catch('failed to identify', err);\n }\n }\n\n page(options: PageOptions): void {\n try {\n const props = this.createPageParams(options);\n (window as any).analytics?.page(props.category, props.name, props.properties);\n } catch (err) {\n log.catch('failed to track page', err);\n }\n }\n\n track(options: TrackOptions): void {\n try {\n const props = this.createTrackParams(options);\n (window as any).analytics?.track(props.event, props.properties);\n } catch (err) {\n log.catch('failed to track event', err);\n }\n }\n\n async flush(): Promise<void> {\n try {\n await (window as any).analytics?.flush((err: any) => {\n captureException(err);\n });\n } catch (err) {\n log.catch('failed to flush telemetry', err);\n }\n }\n\n async close(): Promise<void> {}\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;AAKA,OAAOA,aAAa;AAEpB,SAASC,WAAW;;AAWb,IAAMC,mBAAN,cAA+BC,yBAAAA;EACpC,YAAY,EAAEC,QAAQC,WAAWC,QAAO,GAA6B;AACnE,UAAMA,OAAAA;AACN,QAAI;AACF,YAAMC,WAAWC,QAAQC,IAAI;QAAEL;QAAQM,MAAM;MAAM,CAAA;AACnD,YAAMC,SAASC,SAASC,cAAc,QAAA;AACtCF,aAAOG,YAAYP;AACnBK,eAASG,KAAKC,OAAOL,MAAAA;IACvB,SAASM,KAAK;AACZC,UAAIC,MAAM,kCAAkCF,KAAAA;;;;;;IAC9C;EACF;EAEAG,SAASC,SAA+B;AACtC,QAAI;AACDC,aAAeC,WAAWH,SAASC,QAAQG,QAAQH,QAAQI,MAAM;IACpE,SAASR,KAAK;AACZC,UAAIC,MAAM,sBAAsBF,KAAAA;;;;;;IAClC;EACF;EAEAP,KAAKW,SAA4B;AAC/B,QAAI;AACF,YAAMK,QAAQ,KAAKC,iBAAiBN,OAAAA;AACnCC,aAAeC,WAAWb,KAAKgB,MAAME,UAAUF,MAAMG,MAAMH,MAAMI,UAAU;IAC9E,SAASb,KAAK;AACZC,UAAIC,MAAM,wBAAwBF,KAAAA;;;;;;IACpC;EACF;EAEAc,MAAMV,SAA6B;AACjC,QAAI;AACF,YAAMK,QAAQ,KAAKM,kBAAkBX,OAAAA;AACpCC,aAAeC,WAAWQ,MAAML,MAAMO,OAAOP,MAAMI,UAAU;IAChE,SAASb,KAAK;AACZC,UAAIC,MAAM,yBAAyBF,KAAAA;;;;;;IACrC;EACF;EAEA,MAAMiB,QAAuB;AAC3B,QAAI;AACF,YAAOZ,OAAeC,WAAWW,MAAM,CAACjB,QAAAA;AACtCkB,yBAAiBlB,GAAAA;MACnB,CAAA;IACF,SAASA,KAAK;AACZC,UAAIC,MAAM,6BAA6BF,KAAAA;;;;;;IACzC;EACF;EAEA,MAAMmB,QAAuB;EAAC;AAChC;",
|
|
6
|
+
"names": ["snippet", "log", "SegmentTelemetry", "AbstractSegmentTelemetry", "apiKey", "batchSize", "getTags", "contents", "snippet", "min", "page", "script", "document", "createElement", "innerHTML", "body", "append", "err", "log", "catch", "identify", "options", "window", "analytics", "userId", "traits", "props", "createPageParams", "category", "name", "properties", "track", "createTrackParams", "event", "flush", "captureException", "close"]
|
|
7
|
+
}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import "../chunk-KLJGCUYA.mjs";
|
|
3
|
+
import {
|
|
4
|
+
SegmentTelemetry
|
|
5
|
+
} from "../chunk-KVJTNW3F.mjs";
|
|
2
6
|
import {
|
|
3
|
-
SegmentTelemetry,
|
|
4
7
|
TelemetryEvent
|
|
5
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-UIVXGEGJ.mjs";
|
|
6
9
|
import "../chunk-QUZL7LKE.mjs";
|
|
7
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-M4627SMT.mjs";
|
|
8
11
|
export {
|
|
9
12
|
SegmentTelemetry,
|
|
10
13
|
TelemetryEvent
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
SegmentTelemetry
|
|
4
|
+
} from "../chunk-KVJTNW3F.mjs";
|
|
5
|
+
import "../chunk-UIVXGEGJ.mjs";
|
|
6
|
+
import "../chunk-QUZL7LKE.mjs";
|
|
7
|
+
import "../chunk-M4627SMT.mjs";
|
|
8
|
+
export {
|
|
9
|
+
SegmentTelemetry
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=node.mjs.map
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// src/sentry/browser.ts
|
|
4
|
+
import { breadcrumbsIntegration, browserTracingIntegration, feedbackIntegration, httpClientIntegration, metrics, addBreadcrumb as naturalAddBreadcrumb, captureException as naturalCaptureException, captureMessage as naturalCaptureMessage, init as naturalInit, sendFeedback as naturalSendFeedback, withScope as naturalWithScope, replayIntegration, setTag, startInactiveSpan } from "@sentry/browser";
|
|
5
|
+
import { log } from "@dxos/log";
|
|
6
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
7
|
+
import { setTag as setTag2, setTags, setUser } from "@sentry/browser";
|
|
8
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/sentry/browser.ts";
|
|
9
|
+
var init = (options) => {
|
|
10
|
+
try {
|
|
11
|
+
log("sentry init", options, {
|
|
12
|
+
F: __dxlog_file,
|
|
13
|
+
L: 38,
|
|
14
|
+
S: void 0,
|
|
15
|
+
C: (f, a) => f(...a)
|
|
16
|
+
});
|
|
17
|
+
naturalInit({
|
|
18
|
+
enabled: options.enable ?? true,
|
|
19
|
+
dsn: options.destination,
|
|
20
|
+
release: options.release,
|
|
21
|
+
environment: options.environment,
|
|
22
|
+
integrations: [
|
|
23
|
+
breadcrumbsIntegration({
|
|
24
|
+
console: false,
|
|
25
|
+
fetch: false
|
|
26
|
+
}),
|
|
27
|
+
httpClientIntegration({
|
|
28
|
+
failedRequestStatusCodes: [
|
|
29
|
+
// 401 errors are omitted as they happen as a part of the EDGE authentication flow.
|
|
30
|
+
[
|
|
31
|
+
400,
|
|
32
|
+
400
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
402,
|
|
36
|
+
599
|
|
37
|
+
]
|
|
38
|
+
]
|
|
39
|
+
}),
|
|
40
|
+
feedbackIntegration({
|
|
41
|
+
autoInject: false
|
|
42
|
+
}),
|
|
43
|
+
...options.tracing ? [
|
|
44
|
+
browserTracingIntegration()
|
|
45
|
+
] : [],
|
|
46
|
+
...options.replay ? [
|
|
47
|
+
replayIntegration({
|
|
48
|
+
blockAllMedia: true,
|
|
49
|
+
maskAllText: true
|
|
50
|
+
})
|
|
51
|
+
] : []
|
|
52
|
+
],
|
|
53
|
+
replaysSessionSampleRate: options.replaySampleRate,
|
|
54
|
+
replaysOnErrorSampleRate: options.replaySampleRateOnError,
|
|
55
|
+
tracesSampleRate: options.sampleRate,
|
|
56
|
+
transport: options.transport,
|
|
57
|
+
beforeSend: (event) => {
|
|
58
|
+
options.onError?.(event);
|
|
59
|
+
return event;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
if (options.tracing) {
|
|
63
|
+
TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
64
|
+
TRACE_PROCESSOR.remoteTracing.registerProcessor({
|
|
65
|
+
startSpan: startInactiveSpan
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
Object.entries(options.properties ?? {}).forEach(([key, value]) => {
|
|
69
|
+
setTag(key, value);
|
|
70
|
+
});
|
|
71
|
+
} catch (err) {
|
|
72
|
+
log.catch("Failed to initialize sentry", err, {
|
|
73
|
+
F: __dxlog_file,
|
|
74
|
+
L: 78,
|
|
75
|
+
S: void 0,
|
|
76
|
+
C: (f, a) => f(...a)
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var addBreadcrumb = (breadcrumb) => {
|
|
81
|
+
try {
|
|
82
|
+
naturalAddBreadcrumb(breadcrumb);
|
|
83
|
+
log("add breadcrumb", breadcrumb, {
|
|
84
|
+
F: __dxlog_file,
|
|
85
|
+
L: 94,
|
|
86
|
+
S: void 0,
|
|
87
|
+
C: (f, a) => f(...a)
|
|
88
|
+
});
|
|
89
|
+
} catch (err) {
|
|
90
|
+
log.catch("Failed to add breadcrumb", err, {
|
|
91
|
+
F: __dxlog_file,
|
|
92
|
+
L: 96,
|
|
93
|
+
S: void 0,
|
|
94
|
+
C: (f, a) => f(...a)
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
var captureException = (exception, captureContext) => {
|
|
99
|
+
try {
|
|
100
|
+
const eventId = naturalCaptureException(exception, captureContext);
|
|
101
|
+
log("capture exception", {
|
|
102
|
+
exception,
|
|
103
|
+
eventId,
|
|
104
|
+
...captureContext
|
|
105
|
+
}, {
|
|
106
|
+
F: __dxlog_file,
|
|
107
|
+
L: 110,
|
|
108
|
+
S: void 0,
|
|
109
|
+
C: (f, a) => f(...a)
|
|
110
|
+
});
|
|
111
|
+
return eventId;
|
|
112
|
+
} catch (err) {
|
|
113
|
+
log.catch("Failed to capture exception", err, {
|
|
114
|
+
F: __dxlog_file,
|
|
115
|
+
L: 113,
|
|
116
|
+
S: void 0,
|
|
117
|
+
C: (f, a) => f(...a)
|
|
118
|
+
});
|
|
119
|
+
return "unknown";
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
var captureMessage = (exception, captureContext) => {
|
|
123
|
+
try {
|
|
124
|
+
const eventId = naturalCaptureMessage(exception, captureContext);
|
|
125
|
+
log("capture message", {
|
|
126
|
+
exception,
|
|
127
|
+
eventId,
|
|
128
|
+
captureContext
|
|
129
|
+
}, {
|
|
130
|
+
F: __dxlog_file,
|
|
131
|
+
L: 121,
|
|
132
|
+
S: void 0,
|
|
133
|
+
C: (f, a) => f(...a)
|
|
134
|
+
});
|
|
135
|
+
return eventId;
|
|
136
|
+
} catch (err) {
|
|
137
|
+
log.catch("Failed to capture message", err, {
|
|
138
|
+
F: __dxlog_file,
|
|
139
|
+
L: 124,
|
|
140
|
+
S: void 0,
|
|
141
|
+
C: (f, a) => f(...a)
|
|
142
|
+
});
|
|
143
|
+
return "unknown";
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
var captureUserFeedback = (message) => {
|
|
147
|
+
return naturalSendFeedback({
|
|
148
|
+
message
|
|
149
|
+
}, {
|
|
150
|
+
includeReplay: true
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
var withScope = naturalWithScope;
|
|
154
|
+
export {
|
|
155
|
+
addBreadcrumb,
|
|
156
|
+
captureException,
|
|
157
|
+
captureMessage,
|
|
158
|
+
captureUserFeedback,
|
|
159
|
+
init,
|
|
160
|
+
setTag2 as setTag,
|
|
161
|
+
setTags,
|
|
162
|
+
setUser,
|
|
163
|
+
withScope
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=browser.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/sentry/browser.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport {\n breadcrumbsIntegration,\n browserTracingIntegration,\n feedbackIntegration,\n httpClientIntegration,\n metrics,\n addBreadcrumb as naturalAddBreadcrumb,\n captureException as naturalCaptureException,\n captureMessage as naturalCaptureMessage,\n init as naturalInit,\n sendFeedback as naturalSendFeedback,\n withScope as naturalWithScope,\n replayIntegration,\n setTag,\n startInactiveSpan,\n} from '@sentry/browser';\n\nimport { log } from '@dxos/log';\nimport { TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type InitOptions } from './types';\n\n// Polyfill export.\nexport { setTag, setTags, setUser } from '@sentry/browser';\n\n/**\n * To use this SDK, call the init function as early as possible when loading the web page.\n * To set context information or send manual events, use the provided methods.\n *\n * @param options {InitOptions}\n */\nexport const init = (options: InitOptions) => {\n try {\n log('sentry init', options);\n naturalInit({\n enabled: options.enable ?? true,\n dsn: options.destination,\n release: options.release,\n environment: options.environment,\n integrations: [\n breadcrumbsIntegration({ console: false, fetch: false }),\n httpClientIntegration({\n failedRequestStatusCodes: [\n // 401 errors are omitted as they happen as a part of the EDGE authentication flow.\n [400, 400],\n [402, 599],\n ],\n }),\n feedbackIntegration({ autoInject: false }),\n ...(options.tracing ? [browserTracingIntegration()] : []),\n ...(options.replay ? [replayIntegration({ blockAllMedia: true, maskAllText: true })] : []),\n ],\n replaysSessionSampleRate: options.replaySampleRate,\n replaysOnErrorSampleRate: options.replaySampleRateOnError,\n tracesSampleRate: options.sampleRate,\n transport: options.transport as any, // TODO(dmaretskyi): Fix\n beforeSend: (event) => {\n options.onError?.(event);\n return event;\n },\n });\n\n if (options.tracing) {\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: startInactiveSpan,\n });\n }\n\n Object.entries(options.properties ?? {}).forEach(([key, value]) => {\n setTag(key, value);\n });\n } catch (err) {\n log.catch('Failed to initialize sentry', err);\n }\n};\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on user's actions prior to an error or crash.\n *\n * https://docs.sentry.io/platforms/javascript/enriching-events/breadcrumbs/\n *\n * @param breadcrumb — The breadcrumb to record.\n */\nexport const addBreadcrumb: typeof naturalAddBreadcrumb = (breadcrumb) => {\n try {\n naturalAddBreadcrumb(breadcrumb);\n log('add breadcrumb', breadcrumb);\n } catch (err) {\n log.catch('Failed to add breadcrumb', err);\n }\n};\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception — An exception-like object.\n * @param captureContext — Additional scope data to apply to exception event.\n * @returns — The generated eventId.\n */\nexport const captureException: typeof naturalCaptureException = (exception, captureContext) => {\n try {\n const eventId = naturalCaptureException(exception, captureContext);\n log('capture exception', { exception, eventId, ...captureContext });\n return eventId;\n } catch (err) {\n log.catch('Failed to capture exception', err);\n return 'unknown';\n }\n};\n\nexport const captureMessage: typeof naturalCaptureMessage = (exception, captureContext) => {\n try {\n const eventId = naturalCaptureMessage(exception, captureContext);\n log('capture message', { exception, eventId, captureContext });\n return eventId;\n } catch (err) {\n log.catch('Failed to capture message', err);\n return 'unknown';\n }\n};\n\nexport const captureUserFeedback = (message: string) => {\n return naturalSendFeedback({ message }, { includeReplay: true });\n};\n\nexport const withScope = naturalWithScope;\n"],
|
|
5
|
+
"mappings": ";;;AAIA,SACEA,wBACAC,2BACAC,qBACAC,uBACAC,SACAC,iBAAiBC,sBACjBC,oBAAoBC,yBACpBC,kBAAkBC,uBAClBC,QAAQC,aACRC,gBAAgBC,qBAChBC,aAAaC,kBACbC,mBACAC,QACAC,yBACK;AAEP,SAASC,WAAW;AACpB,SAASC,uBAAuB;AAKhC,SAASH,UAAAA,SAAQI,SAASC,eAAe;;AAQlC,IAAMZ,OAAO,CAACa,YAAAA;AACnB,MAAI;AACFJ,QAAI,eAAeI,SAAAA;;;;;;AACnBZ,gBAAY;MACVa,SAASD,QAAQE,UAAU;MAC3BC,KAAKH,QAAQI;MACbC,SAASL,QAAQK;MACjBC,aAAaN,QAAQM;MACrBC,cAAc;QACZ/B,uBAAuB;UAAEgC,SAAS;UAAOC,OAAO;QAAM,CAAA;QACtD9B,sBAAsB;UACpB+B,0BAA0B;;YAExB;cAAC;cAAK;;YACN;cAAC;cAAK;;;QAEV,CAAA;QACAhC,oBAAoB;UAAEiC,YAAY;QAAM,CAAA;WACpCX,QAAQY,UAAU;UAACnC,0BAAAA;YAA+B,CAAA;WAClDuB,QAAQa,SAAS;UAACpB,kBAAkB;YAAEqB,eAAe;YAAMC,aAAa;UAAK,CAAA;YAAM,CAAA;;MAEzFC,0BAA0BhB,QAAQiB;MAClCC,0BAA0BlB,QAAQmB;MAClCC,kBAAkBpB,QAAQqB;MAC1BC,WAAWtB,QAAQsB;MACnBC,YAAY,CAACC,UAAAA;AACXxB,gBAAQyB,UAAUD,KAAAA;AAClB,eAAOA;MACT;IACF,CAAA;AAEA,QAAIxB,QAAQY,SAAS;AACnBf,sBAAgB6B,cAAcC,kBAAkB/C,OAAAA;AAChDiB,sBAAgB+B,cAAcD,kBAAkB;QAC9CE,WAAWlC;MACb,CAAA;IACF;AAEAmC,WAAOC,QAAQ/B,QAAQgC,cAAc,CAAC,CAAA,EAAGC,QAAQ,CAAC,CAACC,KAAKC,KAAAA,MAAM;AAC5DzC,aAAOwC,KAAKC,KAAAA;IACd,CAAA;EACF,SAASC,KAAK;AACZxC,QAAIyC,MAAM,+BAA+BD,KAAAA;;;;;;EAC3C;AACF;AAWO,IAAMvD,gBAA6C,CAACyD,eAAAA;AACzD,MAAI;AACFxD,yBAAqBwD,UAAAA;AACrB1C,QAAI,kBAAkB0C,YAAAA;;;;;;EACxB,SAASF,KAAK;AACZxC,QAAIyC,MAAM,4BAA4BD,KAAAA;;;;;;EACxC;AACF;AASO,IAAMrD,mBAAmD,CAACwD,WAAWC,mBAAAA;AAC1E,MAAI;AACF,UAAMC,UAAUzD,wBAAwBuD,WAAWC,cAAAA;AACnD5C,QAAI,qBAAqB;MAAE2C;MAAWE;MAAS,GAAGD;IAAe,GAAA;;;;;;AACjE,WAAOC;EACT,SAASL,KAAK;AACZxC,QAAIyC,MAAM,+BAA+BD,KAAAA;;;;;;AACzC,WAAO;EACT;AACF;AAEO,IAAMnD,iBAA+C,CAACsD,WAAWC,mBAAAA;AACtE,MAAI;AACF,UAAMC,UAAUvD,sBAAsBqD,WAAWC,cAAAA;AACjD5C,QAAI,mBAAmB;MAAE2C;MAAWE;MAASD;IAAe,GAAA;;;;;;AAC5D,WAAOC;EACT,SAASL,KAAK;AACZxC,QAAIyC,MAAM,6BAA6BD,KAAAA;;;;;;AACvC,WAAO;EACT;AACF;AAEO,IAAMM,sBAAsB,CAACC,YAAAA;AAClC,SAAOrD,oBAAoB;IAAEqD;EAAQ,GAAG;IAAEC,eAAe;EAAK,CAAA;AAChE;AAEO,IAAMrD,YAAYC;",
|
|
6
|
+
"names": ["breadcrumbsIntegration", "browserTracingIntegration", "feedbackIntegration", "httpClientIntegration", "metrics", "addBreadcrumb", "naturalAddBreadcrumb", "captureException", "naturalCaptureException", "captureMessage", "naturalCaptureMessage", "init", "naturalInit", "sendFeedback", "naturalSendFeedback", "withScope", "naturalWithScope", "replayIntegration", "setTag", "startInactiveSpan", "log", "TRACE_PROCESSOR", "setTags", "setUser", "options", "enabled", "enable", "dsn", "destination", "release", "environment", "integrations", "console", "fetch", "failedRequestStatusCodes", "autoInject", "tracing", "replay", "blockAllMedia", "maskAllText", "replaysSessionSampleRate", "replaySampleRate", "replaysOnErrorSampleRate", "replaySampleRateOnError", "tracesSampleRate", "sampleRate", "transport", "beforeSend", "event", "onError", "remoteMetrics", "registerProcessor", "remoteTracing", "startSpan", "Object", "entries", "properties", "forEach", "key", "value", "err", "catch", "breadcrumb", "exception", "captureContext", "eventId", "captureUserFeedback", "message", "includeReplay"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
addBreadcrumb,
|
|
4
|
+
captureException,
|
|
5
|
+
captureMessage,
|
|
6
|
+
captureUserFeedback,
|
|
7
|
+
init,
|
|
8
|
+
setTag,
|
|
9
|
+
setTags,
|
|
10
|
+
setUser,
|
|
11
|
+
withScope
|
|
12
|
+
} from "../chunk-M4627SMT.mjs";
|
|
13
|
+
export {
|
|
14
|
+
addBreadcrumb,
|
|
15
|
+
captureException,
|
|
16
|
+
captureMessage,
|
|
17
|
+
captureUserFeedback,
|
|
18
|
+
init,
|
|
19
|
+
setTag,
|
|
20
|
+
setTags,
|
|
21
|
+
setUser,
|
|
22
|
+
withScope
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=node.mjs.map
|