@dxos/observability 0.8.4-main.b97322e → 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-MWTIKIBZ.mjs → chunk-5LN7D6GM.mjs} +14 -13
- package/dist/lib/browser/chunk-5LN7D6GM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UG3VTDOH.mjs → chunk-JJQT5TQH.mjs} +85 -409
- package/dist/lib/browser/chunk-JJQT5TQH.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YEPQFAES.mjs → chunk-O4BG5MRL.mjs} +2 -2
- package/dist/lib/browser/chunk-O4BG5MRL.mjs.map +7 -0
- 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-IRDZ7PES.mjs → otel-DI4ASU7Y.mjs} +44 -95
- package/dist/lib/browser/otel-DI4ASU7Y.mjs.map +7 -0
- 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-N3QNOQ2O.mjs → sentry-log-processor-W7LI6WXA.mjs} +50 -52
- package/dist/lib/browser/sentry-log-processor-W7LI6WXA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WLRNZ2S2.mjs → chunk-KKNY7TRV.mjs} +85 -409
- 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-KVJTNW3F.mjs +147 -0
- package/dist/lib/node-esm/chunk-KVJTNW3F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TEH6VIKV.mjs → chunk-M4627SMT.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-TEH6VIKV.mjs.map → chunk-M4627SMT.mjs.map} +3 -3
- 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-62HYJETM.mjs → otel-JFXO22WD.mjs} +43 -76
- package/dist/lib/node-esm/otel-JFXO22WD.mjs.map +7 -0
- 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-FN6Y5TNI.mjs → sentry-log-processor-W3SG4RQL.mjs} +50 -52
- package/dist/lib/node-esm/sentry-log-processor-W3SG4RQL.mjs.map +7 -0
- package/dist/types/src/helpers/browser-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/browser-observability.js +4 -6
- package/dist/types/src/helpers/browser-observability.js.map +1 -1
- package/dist/types/src/helpers/common.js +1 -1
- package/dist/types/src/helpers/common.js.map +1 -1
- package/dist/types/src/helpers/map-spaces.js +6 -7
- package/dist/types/src/helpers/map-spaces.js.map +1 -1
- package/dist/types/src/helpers/node-observability.d.ts +1 -1
- package/dist/types/src/helpers/node-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/node-observability.js +7 -11
- package/dist/types/src/helpers/node-observability.js.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.js +4 -7
- package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
- package/dist/types/src/observability.d.ts +1 -1
- package/dist/types/src/observability.d.ts.map +1 -1
- package/dist/types/src/observability.js +68 -59
- package/dist/types/src/observability.js.map +1 -1
- package/dist/types/src/otel/logs.d.ts.map +1 -1
- package/dist/types/src/otel/logs.js +26 -23
- package/dist/types/src/otel/logs.js.map +1 -1
- package/dist/types/src/otel/metrics.d.ts +0 -1
- package/dist/types/src/otel/metrics.d.ts.map +1 -1
- package/dist/types/src/otel/metrics.js +6 -4
- package/dist/types/src/otel/metrics.js.map +1 -1
- package/dist/types/src/otel/otel.js +1 -1
- package/dist/types/src/otel/otel.js.map +1 -1
- package/dist/types/src/otel/traces-browser.d.ts.map +1 -1
- package/dist/types/src/otel/traces-browser.js +19 -13
- package/dist/types/src/otel/traces-browser.js.map +1 -1
- package/dist/types/src/otel/traces.d.ts.map +1 -1
- package/dist/types/src/otel/traces.js +18 -12
- package/dist/types/src/otel/traces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +3 -3
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +4 -3
- package/dist/types/src/segment/base.js.map +1 -1
- package/dist/types/src/segment/browser.d.ts +1 -1
- package/dist/types/src/segment/browser.d.ts.map +1 -1
- package/dist/types/src/segment/browser.js +8 -12
- package/dist/types/src/segment/browser.js.map +1 -1
- package/dist/types/src/segment/node.d.ts +1 -1
- package/dist/types/src/segment/node.d.ts.map +1 -1
- package/dist/types/src/segment/node.js +4 -3
- package/dist/types/src/segment/node.js.map +1 -1
- package/dist/types/src/sentry/browser.d.ts.map +1 -1
- package/dist/types/src/sentry/browser.js +5 -7
- package/dist/types/src/sentry/browser.js.map +1 -1
- package/dist/types/src/sentry/node.d.ts.map +1 -1
- package/dist/types/src/sentry/node.js +8 -13
- package/dist/types/src/sentry/node.js.map +1 -1
- package/dist/types/src/sentry/node.node.test.js +3 -5
- package/dist/types/src/sentry/node.node.test.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 +56 -63
- package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
- package/dist/types/src/sentry/sentry.node.test.js +1 -1
- package/dist/types/src/sentry/sentry.node.test.js.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +35 -34
- package/src/helpers/browser-observability.ts +2 -1
- package/src/helpers/map-spaces.ts +1 -1
- package/src/helpers/node-observability.ts +3 -2
- package/src/helpers/setup-telemetry-listeners.ts +2 -1
- package/src/observability.ts +4 -4
- package/src/otel/logs.ts +9 -7
- package/src/otel/metrics.ts +5 -12
- package/src/otel/otel.ts +1 -1
- package/src/otel/traces-browser.ts +23 -20
- package/src/otel/traces.ts +22 -19
- package/src/segment/base.ts +3 -3
- package/src/segment/browser.ts +5 -4
- package/src/segment/node.ts +5 -4
- package/src/sentry/browser.ts +8 -8
- package/src/sentry/node.node.test.ts +2 -1
- package/src/sentry/node.ts +3 -3
- package/src/sentry/sentry-log-processor.ts +4 -2
- package/src/sentry/sentry.node.test.ts +2 -1
- package/dist/lib/browser/chunk-MWTIKIBZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-UG3VTDOH.mjs.map +0 -7
- package/dist/lib/browser/chunk-YEPQFAES.mjs.map +0 -7
- package/dist/lib/browser/observability-7LFMAZBF.mjs +0 -10
- package/dist/lib/browser/otel-IRDZ7PES.mjs.map +0 -7
- package/dist/lib/browser/sentry-log-processor-N3QNOQ2O.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-552KLA6Z.mjs +0 -202
- package/dist/lib/node-esm/chunk-552KLA6Z.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WLRNZ2S2.mjs.map +0 -7
- package/dist/lib/node-esm/observability-F2NNZIF6.mjs +0 -11
- package/dist/lib/node-esm/otel-62HYJETM.mjs.map +0 -7
- package/dist/lib/node-esm/sentry-log-processor-FN6Y5TNI.mjs.map +0 -7
- /package/dist/lib/browser/{observability-7LFMAZBF.mjs.map → chunk-U6JWT3E2.mjs.map} +0 -0
- /package/dist/lib/{node-esm/observability-F2NNZIF6.mjs.map → browser/observability-XK652NZG.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,7 +1,10 @@
|
|
|
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
|
-
import {
|
|
7
|
+
import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
|
|
5
8
|
var setDiagLogger = (level) => {
|
|
6
9
|
const logLevel = DiagLogLevel[level];
|
|
7
10
|
if (logLevel) {
|
|
@@ -12,37 +15,18 @@ var setDiagLogger = (level) => {
|
|
|
12
15
|
// src/otel/logs.ts
|
|
13
16
|
import { SeverityNumber } from "@opentelemetry/api-logs";
|
|
14
17
|
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
|
|
15
|
-
import {
|
|
18
|
+
import { defaultResource, resourceFromAttributes } from "@opentelemetry/resources";
|
|
16
19
|
import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
|
|
17
20
|
import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
18
|
-
import { getContextFromEntry, getRelativeFilename
|
|
21
|
+
import { LogLevel, getContextFromEntry, getRelativeFilename } from "@dxos/log";
|
|
19
22
|
import { jsonlogify } from "@dxos/util";
|
|
20
23
|
var OtelLogs = class {
|
|
24
|
+
options;
|
|
25
|
+
_loggerProvider;
|
|
21
26
|
constructor(options) {
|
|
22
27
|
this.options = options;
|
|
23
|
-
this.logProcessor = (config, entry) => {
|
|
24
|
-
const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
|
|
25
|
-
if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const record = {
|
|
29
|
-
...entry,
|
|
30
|
-
...entry.meta ? {
|
|
31
|
-
meta: {
|
|
32
|
-
file: getRelativeFilename(entry.meta.F),
|
|
33
|
-
line: entry.meta.L
|
|
34
|
-
}
|
|
35
|
-
} : {},
|
|
36
|
-
context: jsonlogify(getContextFromEntry(entry))
|
|
37
|
-
};
|
|
38
|
-
logger.emit({
|
|
39
|
-
severityNumber: convertLevel(entry.level),
|
|
40
|
-
body: JSON.stringify(record),
|
|
41
|
-
attributes: this.options.getTags()
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
28
|
setDiagLogger(options.consoleDiagLogLevel);
|
|
45
|
-
const resource =
|
|
29
|
+
const resource = defaultResource().merge(resourceFromAttributes({
|
|
46
30
|
[SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
47
31
|
[SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
|
|
48
32
|
}));
|
|
@@ -54,10 +38,33 @@ var OtelLogs = class {
|
|
|
54
38
|
concurrencyLimit: 10
|
|
55
39
|
});
|
|
56
40
|
this._loggerProvider = new LoggerProvider({
|
|
57
|
-
resource
|
|
41
|
+
resource,
|
|
42
|
+
processors: [
|
|
43
|
+
new BatchLogRecordProcessor(logExporter)
|
|
44
|
+
]
|
|
58
45
|
});
|
|
59
|
-
this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
|
|
60
46
|
}
|
|
47
|
+
logProcessor = (config, entry) => {
|
|
48
|
+
const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
|
|
49
|
+
if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const record = {
|
|
53
|
+
...entry,
|
|
54
|
+
...entry.meta ? {
|
|
55
|
+
meta: {
|
|
56
|
+
file: getRelativeFilename(entry.meta.F),
|
|
57
|
+
line: entry.meta.L
|
|
58
|
+
}
|
|
59
|
+
} : {},
|
|
60
|
+
context: jsonlogify(getContextFromEntry(entry))
|
|
61
|
+
};
|
|
62
|
+
logger.emit({
|
|
63
|
+
severityNumber: convertLevel(entry.level),
|
|
64
|
+
body: JSON.stringify(record),
|
|
65
|
+
attributes: this.options.getTags()
|
|
66
|
+
});
|
|
67
|
+
};
|
|
61
68
|
flush() {
|
|
62
69
|
return this._loggerProvider.forceFlush();
|
|
63
70
|
}
|
|
@@ -84,7 +91,7 @@ var convertLevel = (level) => {
|
|
|
84
91
|
|
|
85
92
|
// src/otel/metrics.ts
|
|
86
93
|
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
87
|
-
import {
|
|
94
|
+
import { defaultResource as defaultResource2, resourceFromAttributes as resourceFromAttributes2 } from "@opentelemetry/resources";
|
|
88
95
|
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
89
96
|
import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME2, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION2 } from "@opentelemetry/semantic-conventions";
|
|
90
97
|
import { log } from "@dxos/log";
|
|
@@ -92,11 +99,13 @@ import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
|
92
99
|
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/otel/metrics.ts";
|
|
93
100
|
var EXPORT_INTERVAL = 60 * 1e3;
|
|
94
101
|
var OtelMetrics = class {
|
|
102
|
+
options;
|
|
103
|
+
_meterProvider;
|
|
104
|
+
_meter;
|
|
95
105
|
constructor(options) {
|
|
96
106
|
this.options = options;
|
|
97
|
-
this._gauges = /* @__PURE__ */ new Map();
|
|
98
107
|
setDiagLogger(options.consoleDiagLogLevel);
|
|
99
|
-
const resource =
|
|
108
|
+
const resource = defaultResource2().merge(resourceFromAttributes2({
|
|
100
109
|
[SEMRESATTRS_SERVICE_NAME2]: this.options.serviceName,
|
|
101
110
|
[SEMRESATTRS_SERVICE_VERSION2]: this.options.serviceVersion
|
|
102
111
|
}));
|
|
@@ -143,7 +152,7 @@ var OtelMetrics = class {
|
|
|
143
152
|
}
|
|
144
153
|
}, {
|
|
145
154
|
F: __dxlog_file,
|
|
146
|
-
L:
|
|
155
|
+
L: 70,
|
|
147
156
|
S: this,
|
|
148
157
|
C: (f, a) => f(...a)
|
|
149
158
|
});
|
|
@@ -163,7 +172,7 @@ var OtelMetrics = class {
|
|
|
163
172
|
}
|
|
164
173
|
}, {
|
|
165
174
|
F: __dxlog_file,
|
|
166
|
-
L:
|
|
175
|
+
L: 76,
|
|
167
176
|
S: this,
|
|
168
177
|
C: (f, a) => f(...a)
|
|
169
178
|
});
|
|
@@ -183,7 +192,7 @@ var OtelMetrics = class {
|
|
|
183
192
|
}
|
|
184
193
|
}, {
|
|
185
194
|
F: __dxlog_file,
|
|
186
|
-
L:
|
|
195
|
+
L: 82,
|
|
187
196
|
S: this,
|
|
188
197
|
C: (f, a) => f(...a)
|
|
189
198
|
});
|
|
@@ -209,52 +218,10 @@ var convertTags = (data) => {
|
|
|
209
218
|
return {};
|
|
210
219
|
}
|
|
211
220
|
};
|
|
212
|
-
|
|
213
|
-
// src/otel/traces.ts
|
|
214
|
-
import { trace } from "@opentelemetry/api";
|
|
215
|
-
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
216
|
-
import { Resource as Resource3 } from "@opentelemetry/resources";
|
|
217
|
-
import { BasicTracerProvider, BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
218
|
-
import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME3, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION3 } from "@opentelemetry/semantic-conventions";
|
|
219
|
-
import { log as log2 } from "debug";
|
|
220
|
-
import { TRACE_PROCESSOR as TRACE_PROCESSOR2 } from "@dxos/tracing";
|
|
221
|
-
var OtelTraces = class {
|
|
222
|
-
constructor(options) {
|
|
223
|
-
this.options = options;
|
|
224
|
-
const resource = Resource3.default().merge(new Resource3({
|
|
225
|
-
[SEMRESATTRS_SERVICE_NAME3]: this.options.serviceName,
|
|
226
|
-
[SEMRESATTRS_SERVICE_VERSION3]: this.options.serviceVersion
|
|
227
|
-
}));
|
|
228
|
-
const tracerProvider = new BasicTracerProvider({
|
|
229
|
-
resource
|
|
230
|
-
});
|
|
231
|
-
tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
|
|
232
|
-
tracerProvider.addSpanProcessor(new BatchSpanProcessor(new OTLPTraceExporter({
|
|
233
|
-
url: this.options.endpoint + "/v1/traces",
|
|
234
|
-
headers: {
|
|
235
|
-
Authorization: this.options.authorizationHeader
|
|
236
|
-
},
|
|
237
|
-
concurrencyLimit: 10
|
|
238
|
-
})));
|
|
239
|
-
tracerProvider.register();
|
|
240
|
-
this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
241
|
-
}
|
|
242
|
-
start() {
|
|
243
|
-
log2("trace processor registered");
|
|
244
|
-
TRACE_PROCESSOR2.remoteTracing.registerProcessor({
|
|
245
|
-
startSpan: (options) => {
|
|
246
|
-
log2("begin otel trace", {
|
|
247
|
-
options
|
|
248
|
-
});
|
|
249
|
-
return this._tracer.startSpan(options.name, options);
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
221
|
export {
|
|
255
222
|
OtelLogs,
|
|
256
223
|
OtelMetrics,
|
|
257
224
|
OtelTraces,
|
|
258
225
|
setDiagLogger
|
|
259
226
|
};
|
|
260
|
-
//# sourceMappingURL=otel-
|
|
227
|
+
//# sourceMappingURL=otel-JFXO22WD.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
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": "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",
|
|
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
|
+
}
|
|
@@ -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
|