@dxos/observability 0.5.5-main.23d7ea6 → 0.5.5-main.2a3283d

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 (65) hide show
  1. package/dist/lib/browser/chunk-3LKCQYWD.mjs +159 -0
  2. package/dist/lib/browser/chunk-3LKCQYWD.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-KDP3SESE.mjs +1 -0
  4. package/dist/lib/browser/{chunk-5E3CR23D.mjs → chunk-KRN52DNQ.mjs} +5 -8
  5. package/dist/lib/browser/{chunk-5E3CR23D.mjs.map → chunk-KRN52DNQ.mjs.map} +3 -3
  6. package/dist/lib/browser/index.mjs +2 -2
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/observability-NTPJJQW5.mjs +8 -0
  9. package/dist/lib/browser/observability-NTPJJQW5.mjs.map +7 -0
  10. package/dist/lib/browser/segment/index.mjs +2 -1
  11. package/dist/lib/browser/segment/index.mjs.map +1 -1
  12. package/dist/lib/browser/sentry/index.mjs +2 -7
  13. package/dist/lib/node/{chunk-NFII7GBC.cjs → chunk-4RV4LMAG.cjs} +11 -14
  14. package/dist/lib/node/{chunk-NFII7GBC.cjs.map → chunk-4RV4LMAG.cjs.map} +3 -3
  15. package/dist/lib/node/chunk-GIYJMZEQ.cjs +2 -0
  16. package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +7 -0
  17. package/dist/lib/node/chunk-HKBUNAUG.cjs +161 -0
  18. package/dist/lib/node/chunk-HKBUNAUG.cjs.map +7 -0
  19. package/dist/lib/node/index.cjs +16 -16
  20. package/dist/lib/node/index.cjs.map +1 -1
  21. package/dist/lib/node/meta.json +1 -1
  22. package/dist/lib/node/{observability-6KNNVT6F.cjs → observability-234R4TZL.cjs} +7 -7
  23. package/dist/lib/node/{observability-6KNNVT6F.cjs.map → observability-234R4TZL.cjs.map} +2 -2
  24. package/dist/lib/node/segment/index.cjs +3 -2
  25. package/dist/lib/node/segment/index.cjs.map +1 -1
  26. package/dist/lib/node/sentry/index.cjs +11 -12
  27. package/dist/lib/node/sentry/index.cjs.map +2 -2
  28. package/dist/types/src/observability.d.ts.map +1 -1
  29. package/dist/types/src/observability.js +1 -5
  30. package/dist/types/src/observability.js.map +1 -1
  31. package/dist/types/src/sentry/browser.d.ts +1 -2
  32. package/dist/types/src/sentry/browser.d.ts.map +1 -1
  33. package/dist/types/src/sentry/browser.js +7 -19
  34. package/dist/types/src/sentry/browser.js.map +1 -1
  35. package/dist/types/src/sentry/index.d.ts +0 -1
  36. package/dist/types/src/sentry/index.d.ts.map +1 -1
  37. package/dist/types/src/sentry/index.js +0 -4
  38. package/dist/types/src/sentry/index.js.map +1 -1
  39. package/dist/types/src/sentry/node.d.ts.map +1 -1
  40. package/dist/types/src/sentry/node.js +6 -28
  41. package/dist/types/src/sentry/node.js.map +1 -1
  42. package/dist/types/src/sentry/sentry-log-processor.js +4 -4
  43. package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
  44. package/package.json +18 -19
  45. package/src/observability.ts +1 -4
  46. package/src/sentry/browser.ts +12 -7
  47. package/src/sentry/index.ts +0 -3
  48. package/src/sentry/node.ts +10 -7
  49. package/src/sentry/sentry-log-processor.ts +1 -1
  50. package/dist/lib/browser/chunk-I72ZJDDP.mjs +0 -328
  51. package/dist/lib/browser/chunk-I72ZJDDP.mjs.map +0 -7
  52. package/dist/lib/browser/observability-SGYNJETW.mjs +0 -8
  53. package/dist/lib/node/chunk-2F4DCY4M.cjs +0 -345
  54. package/dist/lib/node/chunk-2F4DCY4M.cjs.map +0 -7
  55. package/dist/types/src/sentry/tracing.d.ts +0 -5
  56. package/dist/types/src/sentry/tracing.d.ts.map +0 -1
  57. package/dist/types/src/sentry/tracing.js +0 -141
  58. package/dist/types/src/sentry/tracing.js.map +0 -1
  59. package/dist/types/src/sentry/tracing.test.d.ts +0 -2
  60. package/dist/types/src/sentry/tracing.test.d.ts.map +0 -1
  61. package/dist/types/src/sentry/tracing.test.js +0 -76
  62. package/dist/types/src/sentry/tracing.test.js.map +0 -1
  63. package/src/sentry/tracing.test.ts +0 -62
  64. package/src/sentry/tracing.ts +0 -153
  65. /package/dist/lib/browser/{observability-SGYNJETW.mjs.map → chunk-KDP3SESE.mjs.map} +0 -0
@@ -1,62 +0,0 @@
1
- //
2
- // Copyright 2022 DXOS.org
3
- //
4
-
5
- // @dxos/test platform=browser
6
-
7
- import { expect } from 'chai';
8
-
9
- import { sleep } from '@dxos/async';
10
- import { log } from '@dxos/log';
11
- import { afterAll, beforeAll, describe, test } from '@dxos/test';
12
-
13
- import * as Sentry from './browser';
14
- import * as Tracing from './tracing';
15
- import { sentryTestkit } from '../testing';
16
-
17
- const { testkit, sentryTransport } = sentryTestkit();
18
-
19
- // TODO(burdon): https://example.com?
20
- const MOCK_DESTINATION = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001';
21
-
22
- describe('Logger tracing', () => {
23
- beforeAll(() => {
24
- Sentry.init({
25
- destination: MOCK_DESTINATION,
26
- release: 'test',
27
- scrubFilenames: true,
28
- tracing: true,
29
- transport: sentryTransport,
30
- });
31
-
32
- Tracing.configureTracing();
33
- });
34
-
35
- afterAll(() => {
36
- Tracing.finish();
37
- });
38
-
39
- test('begin and end span', async () => {
40
- log.trace('test.trace', {
41
- span: {
42
- command: 'begin',
43
- id: 'test',
44
- },
45
- });
46
-
47
- log.trace('test.trace', {
48
- span: {
49
- command: 'end',
50
- id: 'test',
51
- status: 'error',
52
- },
53
- error: new Error('test'),
54
- });
55
- // Sleep to allow Sentry tracing to flush.
56
- await sleep(10);
57
- Tracing.finish();
58
-
59
- expect(testkit.transactions().length).to.eq(1);
60
- expect(testkit.transactions()[0].spans[0].op).to.eq('test.trace');
61
- });
62
- });
@@ -1,153 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- // NOTE: Browser only API. There is no node polyfill.
6
-
7
- import { getCurrentHub } from '@sentry/browser';
8
- import { type Transaction, type Span } from '@sentry/types';
9
-
10
- import { runInContext, scheduleMicroTask, Trigger } from '@dxos/async';
11
- import { Context } from '@dxos/context';
12
- import { invariant } from '@dxos/invariant';
13
- import { getContextFromEntry, log, LogLevel, type LogProcessor } from '@dxos/log';
14
-
15
- const REPORT_SPANS = false;
16
-
17
- let TX!: Transaction;
18
- const SPAN_MAP = new Map<string, Span>();
19
- const SENTRY_INITIALIZED = new Trigger();
20
- const ctx = new Context({ onError: (err) => log.warn('Unhandled error in Sentry context', err) });
21
- ctx.maxSafeDisposeCallbacks = 10_000;
22
-
23
- let tracingConfigured = false;
24
-
25
- export const configureTracing = () => {
26
- tracingConfigured = true;
27
- runInContext(ctx, () => {
28
- // Configure root transaction.
29
- TX = getCurrentHub().startTransaction({
30
- name: 'DXOS Core Tracing',
31
- op: 'dxos',
32
- });
33
- invariant(TX, 'Failed to create trace');
34
- if (typeof window !== 'undefined') {
35
- window.addEventListener('beforeunload', () => {
36
- finish();
37
- });
38
- }
39
- if (typeof process !== 'undefined') {
40
- process.on('exit', () => {
41
- finish();
42
- });
43
- }
44
-
45
- SENTRY_INITIALIZED.wake();
46
- });
47
- };
48
-
49
- export const finish = () => {
50
- for (const span of Array.from(SPAN_MAP.values()).reverse()) {
51
- try {
52
- span.finish();
53
- } catch (err) {
54
- log.warn('Failed to finish span', err);
55
- }
56
- }
57
- TX.finish();
58
- };
59
-
60
- export const SENTRY_PROCESSOR: LogProcessor = (config, entry) => {
61
- if (!tracingConfigured) {
62
- return;
63
- }
64
-
65
- const { message, level, error } = entry;
66
- const context = getContextFromEntry(entry);
67
-
68
- if (level !== LogLevel.TRACE) {
69
- return;
70
- }
71
-
72
- // NOTE: Make sure `entry` is not captured in this closure to avoid a memory leak.
73
- scheduleMicroTask(ctx, async () => {
74
- await SENTRY_INITIALIZED.wait();
75
-
76
- if (REPORT_SPANS && context?.span) {
77
- switch (context.span.command) {
78
- case 'begin': {
79
- const id = context.span.id;
80
-
81
- if (!id || SPAN_MAP.has(id)) {
82
- log.warn('Cannot begin span', id);
83
- return;
84
- }
85
-
86
- let parentSpan: Span = TX;
87
- if (context.span.parent) {
88
- parentSpan = SPAN_MAP.get(context.span.parent) ?? TX;
89
- }
90
-
91
- let logContext: string;
92
- try {
93
- logContext = JSON.stringify({ ...context, message, level, error });
94
- } catch (err) {
95
- logContext = JSON.stringify(context);
96
- }
97
-
98
- const span = parentSpan.startChild({
99
- op: message,
100
- data: {
101
- ...context.span.data,
102
- '@dxos/log': logContext,
103
- },
104
- });
105
- SPAN_MAP.set(context.span.id, span);
106
- break;
107
- }
108
-
109
- case 'end': {
110
- const span = SPAN_MAP.get(context.span.id);
111
- if (span) {
112
- span.setStatus(getSpanStatus(context.span.status));
113
- context.span.data && Object.entries(context.span.data).forEach(([key, value]) => span.setData(key, value));
114
- span.finish();
115
- SPAN_MAP.delete(context.span.id);
116
- } else {
117
- log.warn('Cannot end span', context.span.id);
118
- }
119
- break;
120
- }
121
-
122
- case 'update': {
123
- const span = SPAN_MAP.get(context.span.id);
124
- if (span) {
125
- context.span.data && Object.entries(context.span.data).forEach(([key, value]) => span.setData(key, value));
126
- } else {
127
- log.warn('Cannot update span', context.span.id);
128
- }
129
- break;
130
- }
131
-
132
- default: {
133
- log.warn('Unknown span command', context.span.command);
134
- }
135
- }
136
- }
137
- });
138
- };
139
-
140
- log.runtimeConfig.processors.push(SENTRY_PROCESSOR);
141
-
142
- /**
143
- * @see https://develop.sentry.dev/sdk/event-payloads/span/#:~:text=this%20value%20explicitly.-,status,-Optional.%20Describes%20the
144
- */
145
- const getSpanStatus = (status?: 'ok' | 'error') => {
146
- switch (status) {
147
- case 'ok':
148
- return 'ok';
149
- case 'error':
150
- return 'not_found';
151
- }
152
- return status ?? 'ok';
153
- };