@dxos/observability 0.8.3-staging.0fa589b → 0.8.4-main.28f8d3d
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-G6EE7HFV.mjs → chunk-4PRNMJKD.mjs} +15 -14
- package/dist/lib/browser/chunk-4PRNMJKD.mjs.map +7 -0
- package/dist/lib/browser/chunk-5ICT2XF2.mjs +1 -0
- package/dist/lib/browser/{chunk-YQJELTRP.mjs → chunk-I5VYFJ6C.mjs} +64 -41
- package/dist/lib/browser/chunk-I5VYFJ6C.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JA5VJRKF.mjs → chunk-LJO63BXO.mjs} +4 -4
- package/dist/lib/browser/{chunk-JA5VJRKF.mjs.map → chunk-LJO63BXO.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-VMNREW6G.mjs +10 -0
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs → otel-VKOLQDIM.mjs} +19 -10
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs.map → otel-VKOLQDIM.mjs.map} +3 -3
- package/dist/lib/browser/segment/index.mjs +3 -3
- package/dist/lib/browser/sentry/index.mjs +2 -2
- package/dist/lib/browser/{sentry-log-processor-625AISXI.mjs → sentry-log-processor-JLBMJ2SF.mjs} +54 -54
- package/dist/lib/browser/sentry-log-processor-JLBMJ2SF.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs → chunk-4BWYXXFK.mjs} +64 -41
- package/dist/lib/{browser/chunk-YQJELTRP.mjs.map → node-esm/chunk-4BWYXXFK.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs → chunk-QK5IUYVA.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs.map → chunk-QK5IUYVA.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs → chunk-QUZL7LKE.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-AZMSBUWR.mjs → chunk-RM3E3H7X.mjs} +21 -19
- package/dist/lib/node-esm/chunk-RM3E3H7X.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-LKATG37M.mjs +11 -0
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs → otel-SDH2ZRXT.mjs} +17 -8
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs.map → otel-SDH2ZRXT.mjs.map} +3 -3
- package/dist/lib/node-esm/segment/index.mjs +3 -3
- package/dist/lib/node-esm/sentry/index.mjs +2 -2
- package/dist/lib/node-esm/{sentry-log-processor-HPUPCMRG.mjs → sentry-log-processor-C4UGMAMV.mjs} +54 -54
- package/dist/lib/node-esm/sentry-log-processor-C4UGMAMV.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 +5 -6
- 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 +20 -19
- package/dist/types/src/otel/logs.js.map +1 -1
- package/dist/types/src/otel/metrics.js +5 -2
- 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.js +3 -1
- package/dist/types/src/otel/traces-browser.js.map +1 -1
- package/dist/types/src/otel/traces.js +2 -0
- package/dist/types/src/otel/traces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +1 -1
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +2 -1
- 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 +6 -10
- 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 +2 -1
- 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 +4 -6
- package/dist/types/src/sentry/browser.js.map +1 -1
- package/dist/types/src/sentry/index.d.ts +1 -1
- package/dist/types/src/sentry/index.d.ts.map +1 -1
- package/dist/types/src/sentry/index.js +0 -1
- package/dist/types/src/sentry/index.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 +58 -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 +18 -15
- package/src/helpers/browser-observability.ts +2 -1
- package/src/helpers/node-observability.ts +5 -4
- package/src/helpers/setup-telemetry-listeners.ts +2 -1
- package/src/observability.ts +4 -4
- package/src/otel/logs.ts +2 -2
- package/src/otel/metrics.ts +1 -1
- package/src/otel/otel.ts +1 -1
- package/src/otel/traces-browser.ts +3 -3
- package/src/otel/traces.ts +2 -2
- package/src/segment/base.ts +1 -1
- package/src/segment/browser.ts +3 -2
- package/src/segment/node.ts +3 -2
- package/src/sentry/browser.ts +7 -7
- package/src/sentry/index.ts +1 -1
- package/src/sentry/node.node.test.ts +2 -1
- package/src/sentry/node.ts +3 -3
- package/src/sentry/sentry-log-processor.ts +15 -7
- package/src/sentry/sentry.node.test.ts +2 -1
- package/dist/lib/browser/chunk-G6EE7HFV.mjs.map +0 -7
- package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
- package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
- package/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map +0 -7
- package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
- package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
- package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
- package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
- package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
- package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
- package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
- package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -60
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
- package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
- package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
- package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
- package/dist/lib/node/segment/index.cjs +0 -33
- package/dist/lib/node/segment/index.cjs.map +0 -7
- package/dist/lib/node/sentry/index.cjs +0 -46
- package/dist/lib/node/sentry/index.cjs.map +0 -7
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-AZMSBUWR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-M7QJLFGR.mjs.map +0 -7
- package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
- package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-5ICT2XF2.mjs.map} +0 -0
- /package/dist/lib/browser/{observability-HDE3I7TA.mjs.map → observability-VMNREW6G.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs.map → chunk-QUZL7LKE.mjs.map} +0 -0
- /package/dist/lib/node-esm/{observability-7BTI46NM.mjs.map → observability-LKATG37M.mjs.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/sentry/sentry-log-processor.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Breadcrumb, Event, SeverityLevel } from '@sentry/types';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\nimport { CircularBuffer, getDebugName } from '@dxos/util';\n\nimport { captureException, captureMessage, withScope } from './node';\n\nconst MAX_LOG_BREADCRUMBS = 150;\n\nexport class SentryLogProcessor {\n private _breadcrumbs = new CircularBuffer<Breadcrumb>(MAX_LOG_BREADCRUMBS);\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const { level, meta, error } = entry;\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {\n if (entry.level > LogLevel.DEBUG) {\n this._addBreadcrumb(\n undefined,\n entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : ''),\n convertLevel(entry.level),\n undefined,\n );\n }\n return;\n }\n if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {\n return;\n }\n\n // TODO(nf): add rate limiting to avoid spamming Sentry/consuming excessive quota.\n withScope((scope) => {\n const severity = convertLevel(level);\n scope.setLevel(severity);\n scope.setContext('dxoslog', entry.context ?? null);\n if (meta) {\n scope.setTag('transaction', `${getRelativeFilename(meta.F)}:${meta.L}`);\n\n if (meta.S?.hostSessionId) {\n scope.setTags({\n service_host_issue: true,\n service_host_session: meta.S?.hostSessionId,\n });\n }\n\n if (!Number.isNaN(meta.S?.uptimeSeconds)) {\n scope.setExtra('uptime_seconds', meta.S?.uptimeSeconds);\n }\n }\n\n const extendedMessage = formatMessageForSentry(entry);\n let capturedError = error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n if (capturedError) {\n if (capturedError instanceof InvariantViolation) {\n scope.setExtra('invariant_violation', true);\n }\n const isMessageDifferentFromStackTrace = error == null;\n if (isMessageDifferentFromStackTrace) {\n scope.setExtra('message', extendedMessage);\n }\n const eventId = captureException(capturedError);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n return;\n }\n\n const message = entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : '');\n scope.setFingerprint([message]);\n const eventId = captureMessage(extendedMessage);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n });\n };\n\n public addLogBreadcrumbsTo(event: Event): void {\n event.breadcrumbs ??= [];\n for (const breadcrumb of this._breadcrumbs) {\n event.breadcrumbs.push(breadcrumb);\n }\n event.breadcrumbs.sort((b1, b2) => {\n if (b1.timestamp === undefined || b2.timestamp === undefined) {\n return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === undefined ? -1 : 1;\n }\n return b1.timestamp - b2.timestamp;\n });\n }\n\n private _addBreadcrumb(\n eventId: string | undefined,\n message: string,\n severity: SeverityLevel,\n context: { [key: string]: any } | undefined,\n ): void {\n const breadcrumb: Breadcrumb = {\n type: 'console',\n level: severity,\n event_id: eventId,\n category: 'log',\n message,\n data: context,\n timestamp: Math.floor(Date.now() / 1000),\n };\n const lastRecorded = this._breadcrumbs.getLast();\n if (lastRecorded && lastRecorded.message === breadcrumb.message) {\n const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};\n const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount)\n ? 1\n : Number(lastRecorded.data?.mergedBreadcrumbCount);\n lastRecorded.data = {\n mergedBreadcrumbCount: mergedBreadcrumbCount + 1,\n firstBreadcrumbData,\n lastBreadcrumbData: breadcrumb.data,\n };\n return;\n }\n this._breadcrumbs.push(breadcrumb);\n }\n}\n\nconst formatMessageForSentry = (entry: LogEntry): string => {\n const message = entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : '');\n\n let scopePrefix: string | undefined;\n if (entry.meta?.S) {\n const scope = entry.meta?.S;\n scopePrefix = scope.name || getDebugName(scope);\n }\n if (scopePrefix == null) {\n return message;\n }\n\n const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n return `${workerPrefix}${scopePrefix} ${message}`;\n};\n\nconst convertLevel = (level: LogLevel): SeverityLevel => {\n switch (level) {\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.VERBOSE:\n return 'info';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARN:\n return 'warning';\n case LogLevel.DEBUG:\n case LogLevel.TRACE:\n return 'debug';\n default:\n throw never(level);\n }\n};\n\nconst never = (_: never) => {\n return new Error('unhandled value');\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["InvariantViolation", "LogLevel", "shouldLog", "CircularBuffer", "getDebugName", "MAX_LOG_BREADCRUMBS", "SentryLogProcessor", "_breadcrumbs", "CircularBuffer", "logProcessor", "config", "entry", "level", "meta", "error", "shouldLog", "captureFilters", "S", "remoteSessionId", "LogLevel", "DEBUG", "_addBreadcrumb", "undefined", "message", "String", "convertLevel", "WARN", "ERROR", "withScope", "scope", "severity", "setLevel", "setContext", "context", "setTag", "getRelativeFilename", "F", "L", "hostSessionId", "setTags", "service_host_issue", "service_host_session", "Number", "isNaN", "uptimeSeconds", "setExtra", "extendedMessage", "formatMessageForSentry", "capturedError", "Object", "values", "find", "v", "Error", "InvariantViolation", "isMessageDifferentFromStackTrace", "eventId", "captureException", "setFingerprint", "captureMessage", "addLogBreadcrumbsTo", "event", "breadcrumbs", "breadcrumb", "push", "sort", "b1", "b2", "timestamp", "type", "event_id", "category", "data", "Math", "floor", "Date", "now", "lastRecorded", "getLast", "firstBreadcrumbData", "mergedBreadcrumbCount", "lastBreadcrumbData", "scopePrefix", "name", "getDebugName", "workerPrefix", "VERBOSE", "INFO", "TRACE", "never", "_", "filename", "match", "filePath"]
|
|
7
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
TelemetryEvent
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RM3E3H7X.mjs";
|
|
5
5
|
|
|
6
|
-
//
|
|
6
|
+
// src/observability.ts
|
|
7
7
|
import { Event, scheduleTaskInterval } from "@dxos/async";
|
|
8
8
|
import { PublicKey } from "@dxos/client";
|
|
9
9
|
import { Context } from "@dxos/context";
|
|
10
10
|
import { invariant } from "@dxos/invariant";
|
|
11
|
-
import { log as log3
|
|
11
|
+
import { LogLevel, log as log3 } from "@dxos/log";
|
|
12
12
|
import { ConnectionState } from "@dxos/network-manager";
|
|
13
13
|
import { DeviceKind, Platform } from "@dxos/protocols/proto/dxos/client/services";
|
|
14
14
|
import { isNode } from "@dxos/util";
|
|
15
15
|
|
|
16
|
-
//
|
|
16
|
+
// src/cli-observability-secrets.json
|
|
17
17
|
var cli_observability_secrets_default = {
|
|
18
18
|
SENTRY_DESTINATION: "https://2647916221e643869965e78469479aa4@o4504012000067584.ingest.sentry.io/4504012027265029",
|
|
19
19
|
TELEMETRY_API_KEY: "B00QG6PtJJrJ0VVFe0H5a6bcUUShKyZM",
|
|
@@ -22,10 +22,10 @@ var cli_observability_secrets_default = {
|
|
|
22
22
|
OTEL_AUTHORIZATION: "Basic OTA3MzIzOmdsY19leUp2SWpvaU1URXdNVEl6TnlJc0ltNGlPaUp6ZEdGamF5MDVNRGN6TWpNdGFXNTBaV2R5WVhScGIyNHRZMnh2ZFdSbWJHRnlaUzF2ZEd4d0xYQnliM2g1SWl3aWF5STZJalZ2Tkd4cFYydE5iRmszTlRNMGJUVXpTemRTVjNBeVNpSXNJbTBpT25zaWNpSTZJbkJ5YjJRdGRYTXRaV0Z6ZEMwd0luMTk="
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
//
|
|
25
|
+
// src/helpers/browser-observability.ts
|
|
26
26
|
import * as localForage from "localforage";
|
|
27
27
|
import { log } from "@dxos/log";
|
|
28
|
-
var __dxlog_file = "/
|
|
28
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/helpers/browser-observability.ts";
|
|
29
29
|
var OBSERVABILITY_DISABLED_KEY = "observability-disabled";
|
|
30
30
|
var OBSERVABILITY_GROUP_KEY = "observability-group";
|
|
31
31
|
var isObservabilityDisabled = async (namespace) => {
|
|
@@ -34,7 +34,7 @@ var isObservabilityDisabled = async (namespace) => {
|
|
|
34
34
|
} catch (err) {
|
|
35
35
|
log.catch("Failed to check if observability is disabled, assuming it is", err, {
|
|
36
36
|
F: __dxlog_file,
|
|
37
|
-
L:
|
|
37
|
+
L: 25,
|
|
38
38
|
S: void 0,
|
|
39
39
|
C: (f, a) => f(...a)
|
|
40
40
|
});
|
|
@@ -47,7 +47,7 @@ var storeObservabilityDisabled = async (namespace, value) => {
|
|
|
47
47
|
} catch (err) {
|
|
48
48
|
log.catch("Failed to store observability disabled", err, {
|
|
49
49
|
F: __dxlog_file,
|
|
50
|
-
L:
|
|
50
|
+
L: 34,
|
|
51
51
|
S: void 0,
|
|
52
52
|
C: (f, a) => f(...a)
|
|
53
53
|
});
|
|
@@ -59,7 +59,7 @@ var getObservabilityGroup = async (namespace) => {
|
|
|
59
59
|
} catch (err) {
|
|
60
60
|
log.catch("Failed to get observability group", err, {
|
|
61
61
|
F: __dxlog_file,
|
|
62
|
-
L:
|
|
62
|
+
L: 42,
|
|
63
63
|
S: void 0,
|
|
64
64
|
C: (f, a) => f(...a)
|
|
65
65
|
});
|
|
@@ -71,7 +71,7 @@ var storeObservabilityGroup = async (namespace, value) => {
|
|
|
71
71
|
} catch (err) {
|
|
72
72
|
log.catch("Failed to store observability group", err, {
|
|
73
73
|
F: __dxlog_file,
|
|
74
|
-
L:
|
|
74
|
+
L: 50,
|
|
75
75
|
S: void 0,
|
|
76
76
|
C: (f, a) => f(...a)
|
|
77
77
|
});
|
|
@@ -89,14 +89,14 @@ var initializeAppObservability = async ({
|
|
|
89
89
|
config
|
|
90
90
|
}, {
|
|
91
91
|
F: __dxlog_file,
|
|
92
|
-
L:
|
|
92
|
+
L: 74,
|
|
93
93
|
S: void 0,
|
|
94
94
|
C: (f, a) => f(...a)
|
|
95
95
|
});
|
|
96
96
|
const group = await getObservabilityGroup(namespace) ?? void 0;
|
|
97
97
|
const release = `${namespace}@${config.get("runtime.app.build.version")}`;
|
|
98
98
|
const environment = config.get("runtime.app.env.DX_ENVIRONMENT");
|
|
99
|
-
const { Observability: Observability2 } = await import("./observability-
|
|
99
|
+
const { Observability: Observability2 } = await import("./observability-LKATG37M.mjs");
|
|
100
100
|
const observability = new Observability2({
|
|
101
101
|
namespace,
|
|
102
102
|
release,
|
|
@@ -124,7 +124,7 @@ var initializeAppObservability = async ({
|
|
|
124
124
|
observability.setMode("disabled");
|
|
125
125
|
log.info("observability disabled", void 0, {
|
|
126
126
|
F: __dxlog_file,
|
|
127
|
-
L:
|
|
127
|
+
L: 114,
|
|
128
128
|
S: void 0,
|
|
129
129
|
C: (f, a) => f(...a)
|
|
130
130
|
});
|
|
@@ -161,7 +161,7 @@ var initializeAppObservability = async ({
|
|
|
161
161
|
} catch (error) {
|
|
162
162
|
log.warn("Failed to run estimate()", error, {
|
|
163
163
|
F: __dxlog_file,
|
|
164
|
-
L:
|
|
164
|
+
L: 169,
|
|
165
165
|
S: void 0,
|
|
166
166
|
C: (f, a) => f(...a)
|
|
167
167
|
});
|
|
@@ -171,7 +171,7 @@ var initializeAppObservability = async ({
|
|
|
171
171
|
} catch (err) {
|
|
172
172
|
log.error("Failed to initialize app observability", err, {
|
|
173
173
|
F: __dxlog_file,
|
|
174
|
-
L:
|
|
174
|
+
L: 174,
|
|
175
175
|
S: void 0,
|
|
176
176
|
C: (f, a) => f(...a)
|
|
177
177
|
});
|
|
@@ -179,7 +179,7 @@ var initializeAppObservability = async ({
|
|
|
179
179
|
return observability;
|
|
180
180
|
};
|
|
181
181
|
|
|
182
|
-
//
|
|
182
|
+
// src/helpers/common.ts
|
|
183
183
|
var getTelemetryIdentifier = (client) => {
|
|
184
184
|
if (!client?.initialized) {
|
|
185
185
|
return void 0;
|
|
@@ -197,14 +197,14 @@ var getTelemetryIdentity = (client) => {
|
|
|
197
197
|
};
|
|
198
198
|
};
|
|
199
199
|
|
|
200
|
-
//
|
|
201
|
-
import yaml from "js-yaml";
|
|
200
|
+
// src/helpers/node-observability.ts
|
|
202
201
|
import { existsSync, statSync } from "node:fs";
|
|
203
202
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
204
203
|
import { join } from "node:path";
|
|
204
|
+
import yaml from "js-yaml";
|
|
205
205
|
import { v4 as uuid, validate as validateUuid } from "uuid";
|
|
206
206
|
import { log as log2 } from "@dxos/log";
|
|
207
|
-
var __dxlog_file2 = "/
|
|
207
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/observability/src/helpers/node-observability.ts";
|
|
208
208
|
var showObservabilityBanner = async (configDir, bannercb) => {
|
|
209
209
|
const path = join(configDir, ".observability-banner-printed");
|
|
210
210
|
if (existsSync(path)) {
|
|
@@ -256,7 +256,7 @@ var initializeNodeObservability = async ({ namespace, version, config, installat
|
|
|
256
256
|
config
|
|
257
257
|
}, {
|
|
258
258
|
F: __dxlog_file2,
|
|
259
|
-
L:
|
|
259
|
+
L: 111,
|
|
260
260
|
S: void 0,
|
|
261
261
|
C: (f, a) => f(...a)
|
|
262
262
|
});
|
|
@@ -289,7 +289,7 @@ var initializeNodeObservability = async ({ namespace, version, config, installat
|
|
|
289
289
|
return observability;
|
|
290
290
|
};
|
|
291
291
|
|
|
292
|
-
//
|
|
292
|
+
// src/helpers/map-spaces.ts
|
|
293
293
|
var mapSpaces = (spaces, options = {
|
|
294
294
|
verbose: false,
|
|
295
295
|
truncateKeys: false
|
|
@@ -320,7 +320,7 @@ var mapSpaces = (spaces, options = {
|
|
|
320
320
|
});
|
|
321
321
|
};
|
|
322
322
|
|
|
323
|
-
//
|
|
323
|
+
// src/helpers/setup-telemetry-listeners.ts
|
|
324
324
|
var lastFocusEvent = /* @__PURE__ */ new Date();
|
|
325
325
|
var totalTime = 0;
|
|
326
326
|
var setupTelemetryListeners = (namespace, client, observability) => {
|
|
@@ -407,26 +407,37 @@ var setupTelemetryListeners = (namespace, client, observability) => {
|
|
|
407
407
|
};
|
|
408
408
|
};
|
|
409
409
|
|
|
410
|
-
//
|
|
411
|
-
var __dxlog_file3 = "/
|
|
410
|
+
// src/observability.ts
|
|
411
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/observability/src/observability.ts";
|
|
412
412
|
var SPACE_METRICS_MIN_INTERVAL = 1e3 * 60;
|
|
413
413
|
var SPACE_TELEMETRY_MIN_INTERVAL = 1e3 * 60 * 60;
|
|
414
414
|
var NETWORK_METRICS_MIN_INTERVAL = 1e3 * 60 * 5;
|
|
415
415
|
var Observability = class {
|
|
416
|
+
_mode;
|
|
417
|
+
_namespace;
|
|
418
|
+
_config;
|
|
419
|
+
_group;
|
|
420
|
+
_secrets;
|
|
421
|
+
_tags = /* @__PURE__ */ new Map();
|
|
422
|
+
// TODO(wittjosiah): Generic metrics interface.
|
|
423
|
+
_otelMetrics;
|
|
424
|
+
_otelTraces;
|
|
425
|
+
// TODO(wittjosiah): Generic telemetry interface.
|
|
426
|
+
_telemetryBatchSize;
|
|
427
|
+
_telemetry;
|
|
428
|
+
// TODO(wittjosiah): Generic error logging interface.
|
|
429
|
+
_sentryLogProcessor;
|
|
430
|
+
_otelLogs;
|
|
431
|
+
_errorReportingOptions;
|
|
432
|
+
_captureException;
|
|
433
|
+
_captureUserFeedback;
|
|
434
|
+
_lastNetworkStatus;
|
|
435
|
+
_ctx = new Context(void 0, {
|
|
436
|
+
F: __dxlog_file3,
|
|
437
|
+
L: 115
|
|
438
|
+
});
|
|
416
439
|
// TODO(nf): make platform a required extension?
|
|
417
440
|
constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog }) {
|
|
418
|
-
this._tags = /* @__PURE__ */ new Map();
|
|
419
|
-
this._ctx = new Context(void 0, {
|
|
420
|
-
F: __dxlog_file3,
|
|
421
|
-
L: 115
|
|
422
|
-
});
|
|
423
|
-
this.setIPDataTelemetryTags = (ipData) => {
|
|
424
|
-
this.setTag("city", ipData.city, "telemetry");
|
|
425
|
-
this.setTag("region", ipData.region, "telemetry");
|
|
426
|
-
this.setTag("country", ipData.country, "telemetry");
|
|
427
|
-
ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
|
|
428
|
-
ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
|
|
429
|
-
};
|
|
430
441
|
this._mode = mode;
|
|
431
442
|
this._namespace = namespace;
|
|
432
443
|
this._config = config;
|
|
@@ -516,6 +527,11 @@ var Observability = class {
|
|
|
516
527
|
setMode(mode) {
|
|
517
528
|
this._mode = mode;
|
|
518
529
|
}
|
|
530
|
+
//
|
|
531
|
+
// Tags
|
|
532
|
+
//
|
|
533
|
+
/** Callback (e.g., to share tags with Sentry.) */
|
|
534
|
+
_setTag;
|
|
519
535
|
/**
|
|
520
536
|
* camelCase keys are converted to snake_case in Segment.
|
|
521
537
|
*/
|
|
@@ -599,12 +615,19 @@ var Observability = class {
|
|
|
599
615
|
});
|
|
600
616
|
}
|
|
601
617
|
}
|
|
618
|
+
setIPDataTelemetryTags = (ipData) => {
|
|
619
|
+
this.setTag("city", ipData.city, "telemetry");
|
|
620
|
+
this.setTag("region", ipData.region, "telemetry");
|
|
621
|
+
this.setTag("country", ipData.country, "telemetry");
|
|
622
|
+
ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
|
|
623
|
+
ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
|
|
624
|
+
};
|
|
602
625
|
//
|
|
603
626
|
// Logs
|
|
604
627
|
//
|
|
605
628
|
async _initLogs() {
|
|
606
629
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
607
|
-
const { OtelLogs } = await import("./otel-
|
|
630
|
+
const { OtelLogs } = await import("./otel-SDH2ZRXT.mjs");
|
|
608
631
|
this._otelLogs = new OtelLogs({
|
|
609
632
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
610
633
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -642,7 +665,7 @@ var Observability = class {
|
|
|
642
665
|
//
|
|
643
666
|
async _initMetrics() {
|
|
644
667
|
if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {
|
|
645
|
-
const { OtelMetrics } = await import("./otel-
|
|
668
|
+
const { OtelMetrics } = await import("./otel-SDH2ZRXT.mjs");
|
|
646
669
|
this._otelMetrics = new OtelMetrics({
|
|
647
670
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
648
671
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -890,7 +913,7 @@ var Observability = class {
|
|
|
890
913
|
async _initErrorLogs() {
|
|
891
914
|
if (this._secrets.SENTRY_DESTINATION && this._mode !== "disabled") {
|
|
892
915
|
const { captureException, captureUserFeedback, init, setTag } = await import("./sentry/index.mjs");
|
|
893
|
-
const { SentryLogProcessor } = await import("./sentry-log-processor-
|
|
916
|
+
const { SentryLogProcessor } = await import("./sentry-log-processor-C4UGMAMV.mjs");
|
|
894
917
|
this._captureException = captureException;
|
|
895
918
|
this._captureUserFeedback = captureUserFeedback;
|
|
896
919
|
this._setTag = setTag;
|
|
@@ -933,7 +956,7 @@ var Observability = class {
|
|
|
933
956
|
// TODO(nf): Refactor init based on providers and their capabilities.
|
|
934
957
|
async _initTraces() {
|
|
935
958
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
936
|
-
const { OtelTraces } = await import("./otel-
|
|
959
|
+
const { OtelTraces } = await import("./otel-SDH2ZRXT.mjs");
|
|
937
960
|
this._otelTraces = new OtelTraces({
|
|
938
961
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
939
962
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -994,4 +1017,4 @@ export {
|
|
|
994
1017
|
mapSpaces,
|
|
995
1018
|
setupTelemetryListeners
|
|
996
1019
|
};
|
|
997
|
-
//# sourceMappingURL=chunk-
|
|
1020
|
+
//# sourceMappingURL=chunk-4BWYXXFK.mjs.map
|