@dxos/observability 0.8.3 → 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.
Files changed (143) hide show
  1. package/dist/lib/browser/{chunk-G6EE7HFV.mjs → chunk-4PRNMJKD.mjs} +15 -14
  2. package/dist/lib/browser/chunk-4PRNMJKD.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-5ICT2XF2.mjs +1 -0
  4. package/dist/lib/browser/{chunk-YQJELTRP.mjs → chunk-I5VYFJ6C.mjs} +64 -41
  5. package/dist/lib/browser/chunk-I5VYFJ6C.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-JA5VJRKF.mjs → chunk-LJO63BXO.mjs} +4 -4
  7. package/dist/lib/browser/{chunk-JA5VJRKF.mjs.map → chunk-LJO63BXO.mjs.map} +3 -3
  8. package/dist/lib/browser/index.mjs +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/observability-VMNREW6G.mjs +10 -0
  11. package/dist/lib/browser/{otel-LHAFLNBQ.mjs → otel-VKOLQDIM.mjs} +19 -10
  12. package/dist/lib/browser/{otel-LHAFLNBQ.mjs.map → otel-VKOLQDIM.mjs.map} +3 -3
  13. package/dist/lib/browser/segment/index.mjs +3 -3
  14. package/dist/lib/browser/sentry/index.mjs +2 -2
  15. package/dist/lib/browser/{sentry-log-processor-625AISXI.mjs → sentry-log-processor-JLBMJ2SF.mjs} +54 -54
  16. package/dist/lib/browser/sentry-log-processor-JLBMJ2SF.mjs.map +7 -0
  17. package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs → chunk-4BWYXXFK.mjs} +64 -41
  18. package/dist/lib/{browser/chunk-YQJELTRP.mjs.map → node-esm/chunk-4BWYXXFK.mjs.map} +3 -3
  19. package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs → chunk-QK5IUYVA.mjs} +4 -4
  20. package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs.map → chunk-QK5IUYVA.mjs.map} +3 -3
  21. package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs → chunk-QUZL7LKE.mjs} +1 -1
  22. package/dist/lib/node-esm/{chunk-AZMSBUWR.mjs → chunk-RM3E3H7X.mjs} +21 -19
  23. package/dist/lib/node-esm/chunk-RM3E3H7X.mjs.map +7 -0
  24. package/dist/lib/node-esm/index.mjs +4 -4
  25. package/dist/lib/node-esm/meta.json +1 -1
  26. package/dist/lib/node-esm/observability-LKATG37M.mjs +11 -0
  27. package/dist/lib/node-esm/{otel-AF5TSABC.mjs → otel-SDH2ZRXT.mjs} +17 -8
  28. package/dist/lib/node-esm/{otel-AF5TSABC.mjs.map → otel-SDH2ZRXT.mjs.map} +3 -3
  29. package/dist/lib/node-esm/segment/index.mjs +3 -3
  30. package/dist/lib/node-esm/sentry/index.mjs +2 -2
  31. package/dist/lib/node-esm/{sentry-log-processor-HPUPCMRG.mjs → sentry-log-processor-C4UGMAMV.mjs} +54 -54
  32. package/dist/lib/node-esm/sentry-log-processor-C4UGMAMV.mjs.map +7 -0
  33. package/dist/types/src/helpers/browser-observability.d.ts.map +1 -1
  34. package/dist/types/src/helpers/browser-observability.js +4 -6
  35. package/dist/types/src/helpers/browser-observability.js.map +1 -1
  36. package/dist/types/src/helpers/common.js +1 -1
  37. package/dist/types/src/helpers/common.js.map +1 -1
  38. package/dist/types/src/helpers/map-spaces.js +5 -6
  39. package/dist/types/src/helpers/map-spaces.js.map +1 -1
  40. package/dist/types/src/helpers/node-observability.d.ts +1 -1
  41. package/dist/types/src/helpers/node-observability.d.ts.map +1 -1
  42. package/dist/types/src/helpers/node-observability.js +7 -11
  43. package/dist/types/src/helpers/node-observability.js.map +1 -1
  44. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
  45. package/dist/types/src/helpers/setup-telemetry-listeners.js +4 -7
  46. package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
  47. package/dist/types/src/observability.d.ts +1 -1
  48. package/dist/types/src/observability.d.ts.map +1 -1
  49. package/dist/types/src/observability.js +68 -59
  50. package/dist/types/src/observability.js.map +1 -1
  51. package/dist/types/src/otel/logs.d.ts.map +1 -1
  52. package/dist/types/src/otel/logs.js +20 -19
  53. package/dist/types/src/otel/logs.js.map +1 -1
  54. package/dist/types/src/otel/metrics.js +5 -2
  55. package/dist/types/src/otel/metrics.js.map +1 -1
  56. package/dist/types/src/otel/otel.js +1 -1
  57. package/dist/types/src/otel/otel.js.map +1 -1
  58. package/dist/types/src/otel/traces-browser.js +3 -1
  59. package/dist/types/src/otel/traces-browser.js.map +1 -1
  60. package/dist/types/src/otel/traces.js +2 -0
  61. package/dist/types/src/otel/traces.js.map +1 -1
  62. package/dist/types/src/segment/base.d.ts +1 -1
  63. package/dist/types/src/segment/base.d.ts.map +1 -1
  64. package/dist/types/src/segment/base.js +2 -1
  65. package/dist/types/src/segment/base.js.map +1 -1
  66. package/dist/types/src/segment/browser.d.ts +1 -1
  67. package/dist/types/src/segment/browser.d.ts.map +1 -1
  68. package/dist/types/src/segment/browser.js +6 -10
  69. package/dist/types/src/segment/browser.js.map +1 -1
  70. package/dist/types/src/segment/node.d.ts +1 -1
  71. package/dist/types/src/segment/node.d.ts.map +1 -1
  72. package/dist/types/src/segment/node.js +2 -1
  73. package/dist/types/src/segment/node.js.map +1 -1
  74. package/dist/types/src/sentry/browser.d.ts.map +1 -1
  75. package/dist/types/src/sentry/browser.js +4 -6
  76. package/dist/types/src/sentry/browser.js.map +1 -1
  77. package/dist/types/src/sentry/index.d.ts +1 -1
  78. package/dist/types/src/sentry/index.d.ts.map +1 -1
  79. package/dist/types/src/sentry/index.js +0 -1
  80. package/dist/types/src/sentry/index.js.map +1 -1
  81. package/dist/types/src/sentry/node.d.ts.map +1 -1
  82. package/dist/types/src/sentry/node.js +8 -13
  83. package/dist/types/src/sentry/node.js.map +1 -1
  84. package/dist/types/src/sentry/node.node.test.js +3 -5
  85. package/dist/types/src/sentry/node.node.test.js.map +1 -1
  86. package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
  87. package/dist/types/src/sentry/sentry-log-processor.js +58 -63
  88. package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
  89. package/dist/types/src/sentry/sentry.node.test.js +1 -1
  90. package/dist/types/src/sentry/sentry.node.test.js.map +1 -1
  91. package/dist/types/tsconfig.tsbuildinfo +1 -1
  92. package/package.json +18 -15
  93. package/src/helpers/browser-observability.ts +2 -1
  94. package/src/helpers/node-observability.ts +5 -4
  95. package/src/helpers/setup-telemetry-listeners.ts +2 -1
  96. package/src/observability.ts +4 -4
  97. package/src/otel/logs.ts +2 -2
  98. package/src/otel/metrics.ts +1 -1
  99. package/src/otel/otel.ts +1 -1
  100. package/src/otel/traces-browser.ts +3 -3
  101. package/src/otel/traces.ts +2 -2
  102. package/src/segment/base.ts +1 -1
  103. package/src/segment/browser.ts +3 -2
  104. package/src/segment/node.ts +3 -2
  105. package/src/sentry/browser.ts +7 -7
  106. package/src/sentry/index.ts +1 -1
  107. package/src/sentry/node.node.test.ts +2 -1
  108. package/src/sentry/node.ts +3 -3
  109. package/src/sentry/sentry-log-processor.ts +15 -7
  110. package/src/sentry/sentry.node.test.ts +2 -1
  111. package/dist/lib/browser/chunk-G6EE7HFV.mjs.map +0 -7
  112. package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
  113. package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
  114. package/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map +0 -7
  115. package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
  116. package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
  117. package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
  118. package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
  119. package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
  120. package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
  121. package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
  122. package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
  123. package/dist/lib/node/index.cjs +0 -60
  124. package/dist/lib/node/index.cjs.map +0 -7
  125. package/dist/lib/node/meta.json +0 -1
  126. package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
  127. package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
  128. package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
  129. package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
  130. package/dist/lib/node/segment/index.cjs +0 -33
  131. package/dist/lib/node/segment/index.cjs.map +0 -7
  132. package/dist/lib/node/sentry/index.cjs +0 -46
  133. package/dist/lib/node/sentry/index.cjs.map +0 -7
  134. package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
  135. package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
  136. package/dist/lib/node-esm/chunk-AZMSBUWR.mjs.map +0 -7
  137. package/dist/lib/node-esm/chunk-M7QJLFGR.mjs.map +0 -7
  138. package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
  139. package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs.map +0 -7
  140. /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-5ICT2XF2.mjs.map} +0 -0
  141. /package/dist/lib/browser/{observability-HDE3I7TA.mjs.map → observability-VMNREW6G.mjs.map} +0 -0
  142. /package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs.map → chunk-QUZL7LKE.mjs.map} +0 -0
  143. /package/dist/lib/node-esm/{observability-7BTI46NM.mjs.map → observability-LKATG37M.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/observability",
3
- "version": "0.8.3",
3
+ "version": "0.8.4-main.28f8d3d",
4
4
  "description": "Provides a common interface for app and platform observability",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,16 +10,19 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "browser": "./dist/lib/browser/index.mjs",
15
16
  "node": "./dist/lib/node-esm/index.mjs"
16
17
  },
17
18
  "./segment": {
19
+ "source": "./src/segment/index.ts",
18
20
  "types": "./dist/types/src/segment/index.d.ts",
19
21
  "browser": "./dist/lib/browser/segment/index.mjs",
20
22
  "node": "./dist/lib/node-esm/segment/index.mjs"
21
23
  },
22
24
  "./sentry": {
25
+ "source": "./src/sentry/index.ts",
23
26
  "types": "./dist/types/src/sentry/index.d.ts",
24
27
  "browser": "./dist/lib/browser/sentry/index.mjs",
25
28
  "node": "./dist/lib/node-esm/sentry/index.mjs"
@@ -68,20 +71,20 @@
68
71
  "js-yaml": "^4.1.0",
69
72
  "localforage": "^1.10.0",
70
73
  "uuid": "^9.0.0",
71
- "@dxos/async": "0.8.3",
72
- "@dxos/client-protocol": "0.8.3",
73
- "@dxos/config": "0.8.3",
74
- "@dxos/client": "0.8.3",
75
- "@dxos/client-services": "0.8.3",
76
- "@dxos/context": "0.8.3",
77
- "@dxos/log": "0.8.3",
78
- "@dxos/debug": "0.8.3",
79
- "@dxos/network-manager": "0.8.3",
80
- "@dxos/invariant": "0.8.3",
81
- "@dxos/node-std": "0.8.3",
82
- "@dxos/protocols": "0.8.3",
83
- "@dxos/tracing": "0.8.3",
84
- "@dxos/util": "0.8.3"
74
+ "@dxos/async": "0.8.4-main.28f8d3d",
75
+ "@dxos/client": "0.8.4-main.28f8d3d",
76
+ "@dxos/client-protocol": "0.8.4-main.28f8d3d",
77
+ "@dxos/client-services": "0.8.4-main.28f8d3d",
78
+ "@dxos/config": "0.8.4-main.28f8d3d",
79
+ "@dxos/context": "0.8.4-main.28f8d3d",
80
+ "@dxos/debug": "0.8.4-main.28f8d3d",
81
+ "@dxos/invariant": "0.8.4-main.28f8d3d",
82
+ "@dxos/log": "0.8.4-main.28f8d3d",
83
+ "@dxos/network-manager": "0.8.4-main.28f8d3d",
84
+ "@dxos/node-std": "0.8.4-main.28f8d3d",
85
+ "@dxos/protocols": "0.8.4-main.28f8d3d",
86
+ "@dxos/tracing": "0.8.4-main.28f8d3d",
87
+ "@dxos/util": "0.8.4-main.28f8d3d"
85
88
  },
86
89
  "devDependencies": {
87
90
  "@sentry/types": "^8.8.0",
@@ -11,9 +11,10 @@ import * as localForage from 'localforage';
11
11
  import type { Config } from '@dxos/client';
12
12
  import { log } from '@dxos/log';
13
13
 
14
- import type { IPData } from './common';
15
14
  import type { Mode, Observability } from '../observability';
16
15
 
16
+ import type { IPData } from './common';
17
+
17
18
  export const OBSERVABILITY_DISABLED_KEY = 'observability-disabled';
18
19
  export const OBSERVABILITY_GROUP_KEY = 'observability-group';
19
20
 
@@ -1,16 +1,17 @@
1
1
  //
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
- import yaml from 'js-yaml';
5
4
  import { existsSync, statSync } from 'node:fs';
6
5
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
7
6
  import { join } from 'node:path';
7
+
8
+ import yaml from 'js-yaml';
8
9
  import { v4 as uuid, validate as validateUuid } from 'uuid';
9
10
 
10
11
  import type { Config } from '@dxos/client';
11
12
  import { log } from '@dxos/log';
12
13
 
13
- import { Observability, type Mode } from '../observability';
14
+ import { type Mode, Observability } from '../observability';
14
15
 
15
16
  /**
16
17
  * Print observability banner once per installation.
@@ -63,7 +64,7 @@ const initializeState = async (idPath: string): Promise<PersistentObservabilityS
63
64
  const observabilityState = {
64
65
  installationId: uuid(),
65
66
  group: process.env.DX_OBSERVABILITY_GROUP ?? undefined,
66
- mode: (process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : process.env.DX_OBSERVABILITY_MODE ?? 'basic') as Mode,
67
+ mode: (process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : (process.env.DX_OBSERVABILITY_MODE ?? 'basic')) as Mode,
67
68
  };
68
69
 
69
70
  await writeFile(
@@ -80,7 +81,7 @@ const validate = (contextString: string) => {
80
81
  if (Boolean(context.installationId) && validateUuid(context.installationId!)) {
81
82
  return {
82
83
  ...context,
83
- mode: process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : context.mode ?? 'basic',
84
+ mode: process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : (context.mode ?? 'basic'),
84
85
  };
85
86
  }
86
87
  };
@@ -4,9 +4,10 @@
4
4
 
5
5
  import type { Client } from '@dxos/client';
6
6
 
7
- import { getTelemetryIdentity } from './common';
8
7
  import { type Observability } from '../observability';
9
8
 
9
+ import { getTelemetryIdentity } from './common';
10
+
10
11
  let lastFocusEvent = new Date();
11
12
  let totalTime = 0;
12
13
 
@@ -3,19 +3,19 @@
3
3
  //
4
4
 
5
5
  import { Event, scheduleTaskInterval } from '@dxos/async';
6
- import { PublicKey, type Client, type Config } from '@dxos/client';
6
+ import { type Client, type Config, PublicKey } from '@dxos/client';
7
7
  import { type ClientServices, type Space } from '@dxos/client-protocol';
8
8
  import { Context } from '@dxos/context';
9
9
  import { invariant } from '@dxos/invariant';
10
- import { log, LogLevel } from '@dxos/log';
10
+ import { LogLevel, log } from '@dxos/log';
11
11
  import { ConnectionState } from '@dxos/network-manager';
12
12
  import { DeviceKind, type NetworkStatus, Platform } from '@dxos/protocols/proto/dxos/client/services';
13
13
  import { isNode } from '@dxos/util';
14
14
 
15
15
  import buildSecrets from './cli-observability-secrets.json';
16
- import { getTelemetryIdentity, type IPData, mapSpaces } from './helpers';
16
+ import { type IPData, getTelemetryIdentity, mapSpaces } from './helpers';
17
17
  import { type OtelLogs, type OtelMetrics, type OtelTraces } from './otel';
18
- import { type SegmentTelemetry, type TrackOptions, type PageOptions, TelemetryEvent } from './segment';
18
+ import { type PageOptions, type SegmentTelemetry, TelemetryEvent, type TrackOptions } from './segment';
19
19
  import { type InitOptions, type captureException as SentryCaptureException } from './sentry';
20
20
  import { type SentryLogProcessor } from './sentry/sentry-log-processor';
21
21
 
package/src/otel/logs.ts CHANGED
@@ -9,12 +9,12 @@ import { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs
9
9
  import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
10
10
 
11
11
  import {
12
- getContextFromEntry,
13
- getRelativeFilename,
14
12
  type LogConfig,
15
13
  type LogEntry,
16
14
  LogLevel,
17
15
  type LogProcessor,
16
+ getContextFromEntry,
17
+ getRelativeFilename,
18
18
  } from '@dxos/log';
19
19
  import { jsonlogify } from '@dxos/util';
20
20
 
@@ -9,7 +9,7 @@ import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk
9
9
  import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
10
10
 
11
11
  import { log } from '@dxos/log';
12
- import { TRACE_PROCESSOR, type MetricData } from '@dxos/tracing';
12
+ import { type MetricData, TRACE_PROCESSOR } from '@dxos/tracing';
13
13
 
14
14
  import { type OtelOptions, setDiagLogger } from './otel';
15
15
 
package/src/otel/otel.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';
5
+ import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';
6
6
 
7
7
  export type OtelOptions = {
8
8
  endpoint: string;
@@ -2,17 +2,17 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { trace, type Tracer } from '@opentelemetry/api';
5
+ import { type Tracer, trace } from '@opentelemetry/api';
6
6
  import { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';
7
7
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
8
8
  import { registerInstrumentations } from '@opentelemetry/instrumentation';
9
9
  import { Resource } from '@opentelemetry/resources';
10
- import { ConsoleSpanExporter, SimpleSpanProcessor, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
10
+ import { BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
11
11
  import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
12
12
  import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
13
13
 
14
14
  import { log } from '@dxos/log';
15
- import { TRACE_PROCESSOR, type StartSpanOptions } from '@dxos/tracing';
15
+ import { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';
16
16
 
17
17
  import { type OtelOptions } from './otel';
18
18
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { trace, type Tracer } from '@opentelemetry/api';
5
+ import { type Tracer, trace } from '@opentelemetry/api';
6
6
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
7
7
  import { Resource } from '@opentelemetry/resources';
8
8
  import {
@@ -14,7 +14,7 @@ import {
14
14
  import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
15
15
  import { log } from 'debug';
16
16
 
17
- import { TRACE_PROCESSOR, type StartSpanOptions } from '@dxos/tracing';
17
+ import { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';
18
18
 
19
19
  import { type OtelOptions } from './otel';
20
20
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type TrackParams, type PageParams, type IdentifyParams } from '@segment/analytics-node';
5
+ import { type IdentifyParams, type PageParams, type TrackParams } from '@segment/analytics-node';
6
6
 
7
7
  import { log } from '@dxos/log';
8
8
 
@@ -7,10 +7,11 @@ import snippet from '@segment/snippet';
7
7
 
8
8
  import { log } from '@dxos/log';
9
9
 
10
- import { AbstractSegmentTelemetry } from './base';
11
- import type { TrackOptions, SegmentTelemetryOptions, PageOptions } from './types';
12
10
  import { captureException } from '../sentry';
13
11
 
12
+ import { AbstractSegmentTelemetry } from './base';
13
+ import type { PageOptions, SegmentTelemetryOptions, TrackOptions } from './types';
14
+
14
15
  /**
15
16
  * Browser telemetry.
16
17
  */
@@ -7,10 +7,11 @@ import { Analytics, type IdentifyParams } from '@segment/analytics-node';
7
7
  import { invariant } from '@dxos/invariant';
8
8
  import { log } from '@dxos/log';
9
9
 
10
- import { AbstractSegmentTelemetry } from './base';
11
- import type { SegmentTelemetryOptions, PageOptions, TrackOptions } from './types';
12
10
  import { captureException } from '../sentry';
13
11
 
12
+ import { AbstractSegmentTelemetry } from './base';
13
+ import type { PageOptions, SegmentTelemetryOptions, TrackOptions } from './types';
14
+
14
15
  /**
15
16
  * Node telemetry.
16
17
  */
@@ -3,19 +3,19 @@
3
3
  //
4
4
 
5
5
  import {
6
- init as naturalInit,
7
- setTag,
6
+ breadcrumbsIntegration,
7
+ browserTracingIntegration,
8
+ feedbackIntegration,
9
+ httpClientIntegration,
10
+ metrics,
8
11
  addBreadcrumb as naturalAddBreadcrumb,
9
12
  captureException as naturalCaptureException,
10
13
  captureMessage as naturalCaptureMessage,
14
+ init as naturalInit,
11
15
  sendFeedback as naturalSendFeedback,
12
16
  withScope as naturalWithScope,
13
- breadcrumbsIntegration,
14
- browserTracingIntegration,
15
- feedbackIntegration,
16
- httpClientIntegration,
17
17
  replayIntegration,
18
- metrics,
18
+ setTag,
19
19
  startInactiveSpan,
20
20
  } from '@sentry/browser';
21
21
 
@@ -3,4 +3,4 @@
3
3
  //
4
4
 
5
5
  export * from './node';
6
- export * from './types';
6
+ export type * from './types';
@@ -5,9 +5,10 @@
5
5
  import type { Stacktrace } from '@sentry/types';
6
6
  import { beforeAll, beforeEach, describe, expect, test } from 'vitest';
7
7
 
8
- import * as Sentry from './node';
9
8
  import { sentryTestkit } from '../testing';
10
9
 
10
+ import * as Sentry from './node';
11
+
11
12
  const { testkit, sentryTransport } = sentryTestkit();
12
13
 
13
14
  // TODO(burdon): https://example.com?
@@ -4,13 +4,13 @@
4
4
 
5
5
  import {
6
6
  type Event,
7
- init as naturalInit,
8
- setTag,
7
+ metrics,
9
8
  addBreadcrumb as naturalAddBreadcrumb,
10
9
  captureException as naturalCaptureException,
11
10
  captureMessage as naturalCaptureMessage,
11
+ init as naturalInit,
12
12
  withScope as naturalWithScope,
13
- metrics,
13
+ setTag,
14
14
  startInactiveSpan,
15
15
  } from '@sentry/node';
16
16
 
@@ -2,13 +2,13 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import type { Breadcrumb, SeverityLevel, Event } from '@sentry/types';
5
+ import type { Breadcrumb, Event, SeverityLevel } from '@sentry/types';
6
6
 
7
7
  import { InvariantViolation } from '@dxos/invariant';
8
8
  import { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';
9
9
  import { CircularBuffer, getDebugName } from '@dxos/util';
10
10
 
11
- import { withScope, captureException, captureMessage } from './node';
11
+ import { captureException, captureMessage, withScope } from './node';
12
12
 
13
13
  const MAX_LOG_BREADCRUMBS = 150;
14
14
 
@@ -20,7 +20,12 @@ export class SentryLogProcessor {
20
20
  // Don't forward logs from remote sessions.
21
21
  if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {
22
22
  if (entry.level > LogLevel.DEBUG) {
23
- this._addBreadcrumb(undefined, entry.message, convertLevel(entry.level), undefined);
23
+ this._addBreadcrumb(
24
+ undefined,
25
+ entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : ''),
26
+ convertLevel(entry.level),
27
+ undefined,
28
+ );
24
29
  }
25
30
  return;
26
31
  }
@@ -66,7 +71,8 @@ export class SentryLogProcessor {
66
71
  return;
67
72
  }
68
73
 
69
- scope.setFingerprint([entry.message]);
74
+ const message = entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : '');
75
+ scope.setFingerprint([message]);
70
76
  const eventId = captureMessage(extendedMessage);
71
77
  this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);
72
78
  });
@@ -117,18 +123,20 @@ export class SentryLogProcessor {
117
123
  }
118
124
  }
119
125
 
120
- const formatMessageForSentry = (entry: LogEntry) => {
126
+ const formatMessageForSentry = (entry: LogEntry): string => {
127
+ const message = entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : '');
128
+
121
129
  let scopePrefix: string | undefined;
122
130
  if (entry.meta?.S) {
123
131
  const scope = entry.meta?.S;
124
132
  scopePrefix = scope.name || getDebugName(scope);
125
133
  }
126
134
  if (scopePrefix == null) {
127
- return entry.message;
135
+ return message;
128
136
  }
129
137
 
130
138
  const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';
131
- return `${workerPrefix}${scopePrefix} ${entry.message}`;
139
+ return `${workerPrefix}${scopePrefix} ${message}`;
132
140
  };
133
141
 
134
142
  const convertLevel = (level: LogLevel): SeverityLevel => {
@@ -4,9 +4,10 @@
4
4
 
5
5
  import { beforeAll, beforeEach, describe, expect, test } from 'vitest';
6
6
 
7
- import * as Sentry from './node';
8
7
  import { sentryTestkit } from '../testing';
9
8
 
9
+ import * as Sentry from './node';
10
+
10
11
  const { testkit, sentryTransport } = sentryTestkit();
11
12
 
12
13
  const MOCK_DESTINATION = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001';
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/segment/browser.ts", "../../../src/segment/base.ts", "../../../src/segment/types.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 { AbstractSegmentTelemetry } from './base';\nimport type { TrackOptions, SegmentTelemetryOptions, PageOptions } from './types';\nimport { captureException } from '../sentry';\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.createPageProps(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.createTrackProps(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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type TrackParams, type PageParams, type IdentifyParams } from '@segment/analytics-node';\n\nimport { log } from '@dxos/log';\n\nimport {\n type IdentityOptions,\n type PageOptions,\n type SegmentIdentityOptions,\n type Tags,\n TelemetryEvent,\n type TrackOptions,\n} from './types';\n\n/**\n * NOTE: Segment provides a default ID if we don't provide one.\n */\nconst getIdentityOptions = ({ did, installationId }: IdentityOptions): SegmentIdentityOptions => {\n if (!did && !installationId) {\n log.warn('No telemetry identifier provided.');\n }\n\n return {\n userId: did,\n anonymousId: installationId,\n } as SegmentIdentityOptions;\n};\n\n/**\n * Base class for Node and BrowserSegment telemetry.\n */\nexport abstract class AbstractSegmentTelemetry {\n constructor(private readonly _getTags: () => Tags) {}\n\n abstract identify(options: IdentifyParams): void;\n\n abstract page(options: PageOptions): void;\n\n abstract track(options: TrackOptions): void;\n\n protected createPageProps(options: PageOptions): PageParams {\n const { properties, ...rest } = options;\n return {\n ...getIdentityOptions(options),\n ...rest,\n properties: {\n common: this._getTags(),\n custom: properties,\n },\n };\n }\n\n protected createTrackProps(options: TrackOptions): TrackParams {\n const { event, action, properties, ...rest } = options;\n return {\n ...getIdentityOptions(options),\n ...rest,\n event: event ?? TelemetryEvent.ACTION,\n properties: {\n action,\n common: this._getTags(),\n custom: properties,\n },\n };\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nexport type Tags = Record<string, string>;\n\nexport type SegmentTelemetryOptions = {\n apiKey?: string;\n batchSize?: number;\n enable?: boolean;\n getTags: () => Tags;\n};\n\n// Copied from @segment/analytics-node.\nexport type SegmentIdentityOptions =\n | { userId: string; anonymousId?: string }\n | { userId?: string; anonymousId: string };\n\n// TODO(burdon): Should require one or the other.\nexport type IdentityOptions = { did?: string; installationId?: string };\n\nexport type CommonOptions = IdentityOptions & {\n timestamp?: Date;\n properties?: Record<string, unknown>;\n};\n\n/**\n * Page views.\n * https://segment.com/docs/connections/sources/catalog/libraries/server/node/#page\n */\nexport type PageOptions = CommonOptions & {\n category?: string;\n name?: string;\n};\n\n/**\n * Track actions.\n * https://segment.com/docs/connections/sources/catalog/libraries/server/node/#track\n */\nexport type TrackOptions = CommonOptions & {\n event?: TelemetryEvent;\n action: string;\n};\n\n/**\n * Each event will be mapped to a different Postgres table via segment.\n */\nexport enum TelemetryEvent {\n /**\n * Use actions.\n */\n ACTION = 'action',\n /**\n * High-volume technical metrics.\n */\n METRICS = 'metrics',\n}\n"],
5
- "mappings": ";;;;;AAKA,OAAOA,aAAa;AAEpB,SAASC,OAAAA,YAAW;;;ACDpB,SAASC,WAAW;;;ACyCb,IAAKC,iBAAAA,yBAAAA,iBAAAA;AAGT,EAAAA,gBAAA,QAAA,IAAA;AAIA,EAAAA,gBAAA,SAAA,IAAA;SAPSA;;;;;AD3BZ,IAAMC,qBAAqB,CAAC,EAAEC,KAAKC,eAAc,MAAmB;AAClE,MAAI,CAACD,OAAO,CAACC,gBAAgB;AAC3BC,QAAIC,KAAK,qCAAA,QAAA;;;;;;EACX;AAEA,SAAO;IACLC,QAAQJ;IACRK,aAAaJ;EACf;AACF;AAKO,IAAeK,2BAAf,MAAeA;EACpB,YAA6BC,UAAsB;SAAtBA,WAAAA;EAAuB;EAQ1CC,gBAAgBC,SAAkC;AAC1D,UAAM,EAAEC,YAAY,GAAGC,KAAAA,IAASF;AAChC,WAAO;MACL,GAAGV,mBAAmBU,OAAAA;MACtB,GAAGE;MACHD,YAAY;QACVE,QAAQ,KAAKL,SAAQ;QACrBM,QAAQH;MACV;IACF;EACF;EAEUI,iBAAiBL,SAAoC;AAC7D,UAAM,EAAEM,OAAOC,QAAQN,YAAY,GAAGC,KAAAA,IAASF;AAC/C,WAAO;MACL,GAAGV,mBAAmBU,OAAAA;MACtB,GAAGE;MACHI,OAAOA,SAASE,eAAeC;MAC/BR,YAAY;QACVM;QACAJ,QAAQ,KAAKL,SAAQ;QACrBM,QAAQH;MACV;IACF;EACF;AACF;;;;ADnDO,IAAMS,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,MAAAA,KAAIC,MAAM,kCAAkCF,KAAAA;;;;;;IAC9C;EACF;EAEAG,SAASC,SAA+B;AACtC,QAAI;AACDC,aAAeC,WAAWH,SAASC,QAAQG,QAAQH,QAAQI,MAAM;IACpE,SAASR,KAAK;AACZC,MAAAA,KAAIC,MAAM,sBAAsBF,KAAAA;;;;;;IAClC;EACF;EAEAP,KAAKW,SAA4B;AAC/B,QAAI;AACF,YAAMK,QAAQ,KAAKC,gBAAgBN,OAAAA;AAClCC,aAAeC,WAAWb,KAAKgB,MAAME,UAAUF,MAAMG,MAAMH,MAAMI,UAAU;IAC9E,SAASb,KAAK;AACZC,MAAAA,KAAIC,MAAM,wBAAwBF,KAAAA;;;;;;IACpC;EACF;EAEAc,MAAMV,SAA6B;AACjC,QAAI;AACF,YAAMK,QAAQ,KAAKM,iBAAiBX,OAAAA;AACnCC,aAAeC,WAAWQ,MAAML,MAAMO,OAAOP,MAAMI,UAAU;IAChE,SAASb,KAAK;AACZC,MAAAA,KAAIC,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,MAAAA,KAAIC,MAAM,6BAA6BF,KAAAA;;;;;;IACzC;EACF;EAEA,MAAMmB,QAAuB;EAAC;AAChC;",
6
- "names": ["snippet", "log", "log", "TelemetryEvent", "getIdentityOptions", "did", "installationId", "log", "warn", "userId", "anonymousId", "AbstractSegmentTelemetry", "_getTags", "createPageProps", "options", "properties", "rest", "common", "custom", "createTrackProps", "event", "action", "TelemetryEvent", "ACTION", "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", "createPageProps", "category", "name", "properties", "track", "createTrackProps", "event", "flush", "captureException", "close"]
7
- }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-KDP3SESE.mjs.map
@@ -1,10 +0,0 @@
1
- import {
2
- Observability
3
- } from "./chunk-YQJELTRP.mjs";
4
- import "./chunk-G6EE7HFV.mjs";
5
- import "./chunk-KDP3SESE.mjs";
6
- import "./chunk-JA5VJRKF.mjs";
7
- export {
8
- Observability
9
- };
10
- //# sourceMappingURL=observability-HDE3I7TA.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/sentry/sentry-log-processor.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Breadcrumb, SeverityLevel, Event } from '@sentry/types';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\nimport { CircularBuffer, getDebugName } from '@dxos/util';\n\nimport { withScope, captureException, captureMessage } from './node';\n\nconst MAX_LOG_BREADCRUMBS = 150;\n\nexport class SentryLogProcessor {\n private _breadcrumbs = new CircularBuffer<Breadcrumb>(MAX_LOG_BREADCRUMBS);\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const { level, meta, error } = entry;\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {\n if (entry.level > LogLevel.DEBUG) {\n this._addBreadcrumb(undefined, entry.message, convertLevel(entry.level), undefined);\n }\n return;\n }\n if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {\n return;\n }\n\n // TODO(nf): add rate limiting to avoid spamming Sentry/consuming excessive quota.\n withScope((scope) => {\n const severity = convertLevel(level);\n scope.setLevel(severity);\n scope.setContext('dxoslog', entry.context ?? null);\n if (meta) {\n scope.setTag('transaction', `${getRelativeFilename(meta.F)}:${meta.L}`);\n\n if (meta.S?.hostSessionId) {\n scope.setTags({\n service_host_issue: true,\n service_host_session: meta.S?.hostSessionId,\n });\n }\n\n if (!Number.isNaN(meta.S?.uptimeSeconds)) {\n scope.setExtra('uptime_seconds', meta.S?.uptimeSeconds);\n }\n }\n\n const extendedMessage = formatMessageForSentry(entry);\n let capturedError = error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n if (capturedError) {\n if (capturedError instanceof InvariantViolation) {\n scope.setExtra('invariant_violation', true);\n }\n const isMessageDifferentFromStackTrace = error == null;\n if (isMessageDifferentFromStackTrace) {\n scope.setExtra('message', extendedMessage);\n }\n const eventId = captureException(capturedError);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n return;\n }\n\n scope.setFingerprint([entry.message]);\n const eventId = captureMessage(extendedMessage);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n });\n };\n\n public addLogBreadcrumbsTo(event: Event): void {\n event.breadcrumbs ??= [];\n for (const breadcrumb of this._breadcrumbs) {\n event.breadcrumbs.push(breadcrumb);\n }\n event.breadcrumbs.sort((b1, b2) => {\n if (b1.timestamp === undefined || b2.timestamp === undefined) {\n return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === undefined ? -1 : 1;\n }\n return b1.timestamp - b2.timestamp;\n });\n }\n\n private _addBreadcrumb(\n eventId: string | undefined,\n message: string,\n severity: SeverityLevel,\n context: { [key: string]: any } | undefined,\n ): void {\n const breadcrumb: Breadcrumb = {\n type: 'console',\n level: severity,\n event_id: eventId,\n category: 'log',\n message,\n data: context,\n timestamp: Math.floor(Date.now() / 1000),\n };\n const lastRecorded = this._breadcrumbs.getLast();\n if (lastRecorded && lastRecorded.message === breadcrumb.message) {\n const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};\n const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount)\n ? 1\n : Number(lastRecorded.data?.mergedBreadcrumbCount);\n lastRecorded.data = {\n mergedBreadcrumbCount: mergedBreadcrumbCount + 1,\n firstBreadcrumbData,\n lastBreadcrumbData: breadcrumb.data,\n };\n return;\n }\n this._breadcrumbs.push(breadcrumb);\n }\n}\n\nconst formatMessageForSentry = (entry: LogEntry) => {\n let scopePrefix: string | undefined;\n if (entry.meta?.S) {\n const scope = entry.meta?.S;\n scopePrefix = scope.name || getDebugName(scope);\n }\n if (scopePrefix == null) {\n return entry.message;\n }\n\n const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n return `${workerPrefix}${scopePrefix} ${entry.message}`;\n};\n\nconst convertLevel = (level: LogLevel): SeverityLevel => {\n switch (level) {\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.VERBOSE:\n return 'info';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARN:\n return 'warning';\n case LogLevel.DEBUG:\n case LogLevel.TRACE:\n return 'debug';\n default:\n throw never(level);\n }\n};\n\nconst never = (_: never) => {\n return new Error('unhandled value');\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
5
- "mappings": "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",
6
- "names": ["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", "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
- }