@dxos/observability 0.8.4-main.1da679c → 0.8.4-main.21d9917
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-ICKR6U3G.mjs → chunk-5LN7D6GM.mjs} +29 -42
- package/dist/lib/browser/chunk-5LN7D6GM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-OO2RDFNE.mjs → chunk-JJQT5TQH.mjs} +101 -454
- package/dist/lib/browser/chunk-JJQT5TQH.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LJO63BXO.mjs → chunk-O4BG5MRL.mjs} +1 -1
- package/dist/lib/browser/{chunk-LJO63BXO.mjs.map → chunk-O4BG5MRL.mjs.map} +1 -1
- package/dist/lib/browser/chunk-U6JWT3E2.mjs +1 -0
- package/dist/lib/browser/chunk-VL6LVQPU.mjs +69 -0
- package/dist/lib/browser/chunk-VL6LVQPU.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +341 -15
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-XK652NZG.mjs +11 -0
- package/dist/lib/browser/otel/traces-browser.mjs +7 -0
- package/dist/lib/browser/otel/traces-browser.mjs.map +7 -0
- package/dist/lib/browser/otel/traces.mjs +7 -0
- package/dist/lib/browser/otel/traces.mjs.map +7 -0
- package/dist/lib/browser/{otel-UHLVSR24.mjs → otel-DI4ASU7Y.mjs} +86 -185
- 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-RG4CFVGL.mjs → sentry-log-processor-W7LI6WXA.mjs} +56 -72
- package/dist/lib/browser/sentry-log-processor-W7LI6WXA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-Q2I5AUBI.mjs → chunk-KKNY7TRV.mjs} +101 -454
- 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-QK5IUYVA.mjs → chunk-M4627SMT.mjs} +1 -1
- package/dist/lib/node-esm/chunk-UIVXGEGJ.mjs +62 -0
- package/dist/lib/node-esm/chunk-UIVXGEGJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WAGGA7IT.mjs +52 -0
- package/dist/lib/node-esm/chunk-WAGGA7IT.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +342 -15
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-CXQ3CZGB.mjs +13 -0
- package/dist/lib/node-esm/observability-CXQ3CZGB.mjs.map +7 -0
- package/dist/lib/node-esm/otel/traces-browser.mjs +70 -0
- package/dist/lib/node-esm/otel/traces-browser.mjs.map +7 -0
- package/dist/lib/node-esm/otel/traces.mjs +8 -0
- package/dist/lib/node-esm/otel/traces.mjs.map +7 -0
- package/dist/lib/node-esm/{otel-W6KWKVW5.mjs → otel-JFXO22WD.mjs} +85 -166
- 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-3BDS4BB4.mjs → sentry-log-processor-W3SG4RQL.mjs} +56 -72
- package/dist/lib/node-esm/sentry-log-processor-W3SG4RQL.mjs.map +7 -0
- package/dist/types/src/helpers/map-spaces.js +1 -1
- package/dist/types/src/helpers/map-spaces.js.map +1 -1
- package/dist/types/src/otel/logs.d.ts.map +1 -1
- package/dist/types/src/otel/logs.js +6 -4
- 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 +2 -3
- package/dist/types/src/otel/metrics.js.map +1 -1
- package/dist/types/src/otel/traces-browser.d.ts.map +1 -1
- package/dist/types/src/otel/traces-browser.js +16 -12
- 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 +16 -12
- package/dist/types/src/otel/traces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +2 -2
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +2 -2
- package/dist/types/src/segment/base.js.map +1 -1
- package/dist/types/src/segment/browser.js +2 -2
- package/dist/types/src/segment/browser.js.map +1 -1
- package/dist/types/src/segment/node.js +2 -2
- package/dist/types/src/segment/node.js.map +1 -1
- package/dist/types/src/sentry/browser.js +1 -1
- package/dist/types/src/sentry/browser.js.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +35 -34
- package/src/helpers/map-spaces.ts +1 -1
- package/src/otel/logs.ts +7 -5
- package/src/otel/metrics.ts +4 -11
- package/src/otel/traces-browser.ts +20 -17
- package/src/otel/traces.ts +20 -17
- package/src/segment/base.ts +2 -2
- package/src/segment/browser.ts +2 -2
- package/src/segment/node.ts +2 -2
- package/src/sentry/browser.ts +1 -1
- package/src/sentry/sentry-log-processor.ts +2 -0
- package/dist/lib/browser/chunk-ICKR6U3G.mjs.map +0 -7
- package/dist/lib/browser/chunk-OO2RDFNE.mjs.map +0 -7
- package/dist/lib/browser/observability-ZVQ2YD62.mjs +0 -10
- package/dist/lib/browser/otel-UHLVSR24.mjs.map +0 -7
- package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs +0 -229
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q2I5AUBI.mjs.map +0 -7
- package/dist/lib/node-esm/observability-DHZIWGLJ.mjs +0 -11
- package/dist/lib/node-esm/otel-W6KWKVW5.mjs.map +0 -7
- package/dist/lib/node-esm/sentry-log-processor-3BDS4BB4.mjs.map +0 -7
- /package/dist/lib/browser/{observability-ZVQ2YD62.mjs.map → chunk-U6JWT3E2.mjs.map} +0 -0
- /package/dist/lib/{node-esm/observability-DHZIWGLJ.mjs.map → browser/observability-XK652NZG.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-QK5IUYVA.mjs.map → chunk-M4627SMT.mjs.map} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TelemetryEvent
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5LN7D6GM.mjs";
|
|
4
4
|
|
|
5
5
|
// src/observability.ts
|
|
6
6
|
import { Event, scheduleTaskInterval } from "@dxos/async";
|
|
7
7
|
import { PublicKey } from "@dxos/client";
|
|
8
8
|
import { Context } from "@dxos/context";
|
|
9
9
|
import { invariant } from "@dxos/invariant";
|
|
10
|
-
import { LogLevel, log
|
|
10
|
+
import { LogLevel, log } from "@dxos/log";
|
|
11
11
|
import { ConnectionState } from "@dxos/network-manager";
|
|
12
12
|
import { DeviceKind, Platform } from "@dxos/protocols/proto/dxos/client/services";
|
|
13
13
|
import { isNode } from "@dxos/util";
|
|
@@ -21,163 +21,6 @@ var cli_observability_secrets_default = {
|
|
|
21
21
|
OTEL_AUTHORIZATION: "Basic OTA3MzIzOmdsY19leUp2SWpvaU1URXdNVEl6TnlJc0ltNGlPaUp6ZEdGamF5MDVNRGN6TWpNdGFXNTBaV2R5WVhScGIyNHRZMnh2ZFdSbWJHRnlaUzF2ZEd4d0xYQnliM2g1SWl3aWF5STZJalZ2Tkd4cFYydE5iRmszTlRNMGJUVXpTemRTVjNBeVNpSXNJbTBpT25zaWNpSTZJbkJ5YjJRdGRYTXRaV0Z6ZEMwd0luMTk="
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
// src/helpers/browser-observability.ts
|
|
25
|
-
import * as localForage from "localforage";
|
|
26
|
-
import { log } from "@dxos/log";
|
|
27
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/helpers/browser-observability.ts";
|
|
28
|
-
var OBSERVABILITY_DISABLED_KEY = "observability-disabled";
|
|
29
|
-
var OBSERVABILITY_GROUP_KEY = "observability-group";
|
|
30
|
-
var isObservabilityDisabled = async (namespace) => {
|
|
31
|
-
try {
|
|
32
|
-
return await localForage.getItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`) === "true";
|
|
33
|
-
} catch (err) {
|
|
34
|
-
log.catch("Failed to check if observability is disabled, assuming it is", err, {
|
|
35
|
-
F: __dxlog_file,
|
|
36
|
-
L: 25,
|
|
37
|
-
S: void 0,
|
|
38
|
-
C: (f, a) => f(...a)
|
|
39
|
-
});
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
var storeObservabilityDisabled = async (namespace, value) => {
|
|
44
|
-
try {
|
|
45
|
-
await localForage.setItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`, String(value));
|
|
46
|
-
} catch (err) {
|
|
47
|
-
log.catch("Failed to store observability disabled", err, {
|
|
48
|
-
F: __dxlog_file,
|
|
49
|
-
L: 34,
|
|
50
|
-
S: void 0,
|
|
51
|
-
C: (f, a) => f(...a)
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
var getObservabilityGroup = async (namespace) => {
|
|
56
|
-
try {
|
|
57
|
-
return await localForage.getItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`) ?? void 0;
|
|
58
|
-
} catch (err) {
|
|
59
|
-
log.catch("Failed to get observability group", err, {
|
|
60
|
-
F: __dxlog_file,
|
|
61
|
-
L: 42,
|
|
62
|
-
S: void 0,
|
|
63
|
-
C: (f, a) => f(...a)
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
var storeObservabilityGroup = async (namespace, value) => {
|
|
68
|
-
try {
|
|
69
|
-
await localForage.setItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`, value);
|
|
70
|
-
} catch (err) {
|
|
71
|
-
log.catch("Failed to store observability group", err, {
|
|
72
|
-
F: __dxlog_file,
|
|
73
|
-
L: 50,
|
|
74
|
-
S: void 0,
|
|
75
|
-
C: (f, a) => f(...a)
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
var initializeAppObservability = async ({
|
|
80
|
-
namespace,
|
|
81
|
-
config,
|
|
82
|
-
// TODO(nf): Configure mode.
|
|
83
|
-
mode = "basic",
|
|
84
|
-
tracingEnable = false,
|
|
85
|
-
replayEnable = false
|
|
86
|
-
}) => {
|
|
87
|
-
log("initializeAppObservability", {
|
|
88
|
-
config
|
|
89
|
-
}, {
|
|
90
|
-
F: __dxlog_file,
|
|
91
|
-
L: 74,
|
|
92
|
-
S: void 0,
|
|
93
|
-
C: (f, a) => f(...a)
|
|
94
|
-
});
|
|
95
|
-
const group = await getObservabilityGroup(namespace) ?? void 0;
|
|
96
|
-
const release = `${namespace}@${config.get("runtime.app.build.version")}`;
|
|
97
|
-
const environment = config.get("runtime.app.env.DX_ENVIRONMENT");
|
|
98
|
-
const { Observability: Observability2 } = await import("./observability-ZVQ2YD62.mjs");
|
|
99
|
-
const observability = new Observability2({
|
|
100
|
-
namespace,
|
|
101
|
-
release,
|
|
102
|
-
environment,
|
|
103
|
-
group,
|
|
104
|
-
mode,
|
|
105
|
-
config,
|
|
106
|
-
errorLog: {
|
|
107
|
-
sentryInitOptions: {
|
|
108
|
-
environment,
|
|
109
|
-
release,
|
|
110
|
-
tracing: tracingEnable,
|
|
111
|
-
replay: replayEnable,
|
|
112
|
-
// TODO(wittjosiah): Configure these.
|
|
113
|
-
// Consider using a sampling function to dynamically configure these values.
|
|
114
|
-
// https://docs.sentry.io/platforms/javascript/configuration/sampling/#setting-a-sampling-function
|
|
115
|
-
sampleRate: 1,
|
|
116
|
-
replaySampleRate: 1,
|
|
117
|
-
replaySampleRateOnError: 1
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
const observabilityDisabled = await isObservabilityDisabled(namespace);
|
|
122
|
-
if (observabilityDisabled) {
|
|
123
|
-
observability.setMode("disabled");
|
|
124
|
-
log.info("observability disabled", void 0, {
|
|
125
|
-
F: __dxlog_file,
|
|
126
|
-
L: 114,
|
|
127
|
-
S: void 0,
|
|
128
|
-
C: (f, a) => f(...a)
|
|
129
|
-
});
|
|
130
|
-
return observability;
|
|
131
|
-
}
|
|
132
|
-
try {
|
|
133
|
-
const getIPData = async (config2) => {
|
|
134
|
-
const IP_DATA_CACHE_TIMEOUT = 6 * 60 * 60 * 1e3;
|
|
135
|
-
const cachedData = await localForage.getItem("dxos:observability:ipdata");
|
|
136
|
-
if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {
|
|
137
|
-
return cachedData.data;
|
|
138
|
-
}
|
|
139
|
-
const IPDATA_API_KEY = config2.get("runtime.app.env.DX_IPDATA_API_KEY");
|
|
140
|
-
if (IPDATA_API_KEY) {
|
|
141
|
-
return fetch(`https://api.ipdata.co?api-key=${IPDATA_API_KEY}`).then((res) => res.json()).then((data) => {
|
|
142
|
-
localForage.setItem("dxos:observability:ipdata", {
|
|
143
|
-
data,
|
|
144
|
-
timestamp: Date.now()
|
|
145
|
-
}).catch((err) => observability.captureException(err));
|
|
146
|
-
return data;
|
|
147
|
-
}).catch((err) => observability.captureException(err));
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
await observability.initialize();
|
|
151
|
-
observability.startErrorLogs();
|
|
152
|
-
const ipData = await getIPData(config);
|
|
153
|
-
ipData && observability.setIPDataTelemetryTags(ipData);
|
|
154
|
-
if (typeof navigator !== "undefined" && navigator.storage?.estimate) {
|
|
155
|
-
setInterval(async () => {
|
|
156
|
-
try {
|
|
157
|
-
const storageEstimate = await navigator.storage.estimate();
|
|
158
|
-
storageEstimate.usage && observability.setTag("storageUsage", storageEstimate.usage.toString(), "telemetry");
|
|
159
|
-
storageEstimate.quota && observability.setTag("storageQuota", storageEstimate.quota.toString(), "telemetry");
|
|
160
|
-
} catch (error) {
|
|
161
|
-
log.warn("Failed to run estimate()", error, {
|
|
162
|
-
F: __dxlog_file,
|
|
163
|
-
L: 169,
|
|
164
|
-
S: void 0,
|
|
165
|
-
C: (f, a) => f(...a)
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
}, 1e4);
|
|
169
|
-
}
|
|
170
|
-
} catch (err) {
|
|
171
|
-
log.error("Failed to initialize app observability", err, {
|
|
172
|
-
F: __dxlog_file,
|
|
173
|
-
L: 174,
|
|
174
|
-
S: void 0,
|
|
175
|
-
C: (f, a) => f(...a)
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
return observability;
|
|
179
|
-
};
|
|
180
|
-
|
|
181
24
|
// src/helpers/common.ts
|
|
182
25
|
var getTelemetryIdentifier = (client) => {
|
|
183
26
|
if (!client?.initialized) {
|
|
@@ -196,98 +39,6 @@ var getTelemetryIdentity = (client) => {
|
|
|
196
39
|
};
|
|
197
40
|
};
|
|
198
41
|
|
|
199
|
-
// src/helpers/node-observability.ts
|
|
200
|
-
import { existsSync, statSync } from "@dxos/node-std/fs";
|
|
201
|
-
import { mkdir, readFile, writeFile } from "@dxos/node-std/fs/promises";
|
|
202
|
-
import { join } from "@dxos/node-std/path";
|
|
203
|
-
import yaml from "js-yaml";
|
|
204
|
-
import { v4 as uuid, validate as validateUuid } from "uuid";
|
|
205
|
-
import { log as log2 } from "@dxos/log";
|
|
206
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/observability/src/helpers/node-observability.ts";
|
|
207
|
-
var showObservabilityBanner = async (configDir, bannercb) => {
|
|
208
|
-
const path = join(configDir, ".observability-banner-printed");
|
|
209
|
-
if (existsSync(path)) {
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
bannercb(
|
|
213
|
-
// eslint-disable-next-line no-multi-str
|
|
214
|
-
"Basic observability data will be sent to the DXOS team in order to improve the product. This includes performance metrics, error logs, and usage data. No personally identifiable information, other than your public key, is included with this data and no private data ever leaves your devices. To disable sending observability data, set the environment variable DX_DISABLE_OBSERVABILITY=true."
|
|
215
|
-
);
|
|
216
|
-
await writeFile(path, "", "utf-8");
|
|
217
|
-
};
|
|
218
|
-
var getObservabilityState = async (configDir) => {
|
|
219
|
-
if (existsSync(configDir)) {
|
|
220
|
-
if (!statSync(configDir).isDirectory()) {
|
|
221
|
-
throw new Error(`Config directory ${configDir} exists but is not a directory`);
|
|
222
|
-
}
|
|
223
|
-
} else {
|
|
224
|
-
await mkdir(configDir, {
|
|
225
|
-
recursive: true
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
const idPath = join(configDir, "observability.yml");
|
|
229
|
-
if (existsSync(idPath)) {
|
|
230
|
-
const context = await readFile(idPath, "utf-8");
|
|
231
|
-
return validate(context) ?? initializeState(idPath);
|
|
232
|
-
}
|
|
233
|
-
return initializeState(idPath);
|
|
234
|
-
};
|
|
235
|
-
var initializeState = async (idPath) => {
|
|
236
|
-
const observabilityState = {
|
|
237
|
-
installationId: uuid(),
|
|
238
|
-
group: process.env.DX_OBSERVABILITY_GROUP ?? void 0,
|
|
239
|
-
mode: process.env.DX_DISABLE_OBSERVABILITY ? "disabled" : process.env.DX_OBSERVABILITY_MODE ?? "basic"
|
|
240
|
-
};
|
|
241
|
-
await writeFile(idPath, "# This file is automatically generated by the @dxos/cli.\n" + yaml.dump(observabilityState), "utf-8");
|
|
242
|
-
return observabilityState;
|
|
243
|
-
};
|
|
244
|
-
var validate = (contextString) => {
|
|
245
|
-
const context = yaml.load(contextString);
|
|
246
|
-
if (Boolean(context.installationId) && validateUuid(context.installationId)) {
|
|
247
|
-
return {
|
|
248
|
-
...context,
|
|
249
|
-
mode: process.env.DX_DISABLE_OBSERVABILITY ? "disabled" : context.mode ?? "basic"
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
};
|
|
253
|
-
var initializeNodeObservability = async ({ namespace, version, config, installationId, group, mode = "basic", tracingEnable = true, replayEnable = true }) => {
|
|
254
|
-
log2("initializeCliObservability", {
|
|
255
|
-
config
|
|
256
|
-
}, {
|
|
257
|
-
F: __dxlog_file2,
|
|
258
|
-
L: 111,
|
|
259
|
-
S: void 0,
|
|
260
|
-
C: (f, a) => f(...a)
|
|
261
|
-
});
|
|
262
|
-
const release = `${namespace}@${version}`;
|
|
263
|
-
const environment = process.env.DX_ENVIRONMENT ?? "unknown";
|
|
264
|
-
const observability = new Observability({
|
|
265
|
-
mode,
|
|
266
|
-
namespace,
|
|
267
|
-
release,
|
|
268
|
-
environment,
|
|
269
|
-
group,
|
|
270
|
-
errorLog: {
|
|
271
|
-
sentryInitOptions: {
|
|
272
|
-
environment,
|
|
273
|
-
release,
|
|
274
|
-
// TODO(wittjosiah): Configure this.
|
|
275
|
-
sampleRate: 1
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
observability.setTag("installationId", installationId);
|
|
280
|
-
const IPDATA_API_KEY = config.get("runtime.app.env.DX_IPDATA_API_KEY");
|
|
281
|
-
try {
|
|
282
|
-
const res = await fetch(`https://api.ipdata.co/?api-key=${IPDATA_API_KEY}`);
|
|
283
|
-
const ipData = await res.json();
|
|
284
|
-
ipData && observability.setIPDataTelemetryTags(ipData);
|
|
285
|
-
} catch (err) {
|
|
286
|
-
observability?.captureException(err);
|
|
287
|
-
}
|
|
288
|
-
return observability;
|
|
289
|
-
};
|
|
290
|
-
|
|
291
42
|
// src/helpers/map-spaces.ts
|
|
292
43
|
var mapSpaces = (spaces, options = {
|
|
293
44
|
verbose: false,
|
|
@@ -306,7 +57,7 @@ var mapSpaces = (spaces, options = {
|
|
|
306
57
|
key: space.key.truncate(),
|
|
307
58
|
open: space.isOpen,
|
|
308
59
|
members: space.members.get().length,
|
|
309
|
-
objects: space.db.coreDatabase.getAllObjectIds().length,
|
|
60
|
+
objects: space.internal.db.coreDatabase.getAllObjectIds().length,
|
|
310
61
|
startup,
|
|
311
62
|
epoch,
|
|
312
63
|
// appliedEpoch,
|
|
@@ -319,112 +70,51 @@ var mapSpaces = (spaces, options = {
|
|
|
319
70
|
});
|
|
320
71
|
};
|
|
321
72
|
|
|
322
|
-
// src/helpers/setup-telemetry-listeners.ts
|
|
323
|
-
var lastFocusEvent = /* @__PURE__ */ new Date();
|
|
324
|
-
var totalTime = 0;
|
|
325
|
-
var setupTelemetryListeners = (namespace, client, observability) => {
|
|
326
|
-
const clickCallback = (event) => {
|
|
327
|
-
const id = event.target?.id;
|
|
328
|
-
if (!id) {
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
setTimeout(() => {
|
|
332
|
-
observability.track({
|
|
333
|
-
...getTelemetryIdentity(client),
|
|
334
|
-
action: "window.click",
|
|
335
|
-
properties: {
|
|
336
|
-
id: event.target?.id,
|
|
337
|
-
path: event.composedPath().filter((el) => Boolean(el.tagName)).map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ""}`).reverse().join(">")
|
|
338
|
-
}
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
};
|
|
342
|
-
const focusCallback = () => {
|
|
343
|
-
const now = /* @__PURE__ */ new Date();
|
|
344
|
-
setTimeout(() => {
|
|
345
|
-
observability.track({
|
|
346
|
-
...getTelemetryIdentity(client),
|
|
347
|
-
action: "window.focus",
|
|
348
|
-
properties: {
|
|
349
|
-
timeAway: now.getTime() - lastFocusEvent.getTime()
|
|
350
|
-
}
|
|
351
|
-
});
|
|
352
|
-
});
|
|
353
|
-
lastFocusEvent = now;
|
|
354
|
-
};
|
|
355
|
-
const blurCallback = () => {
|
|
356
|
-
const now = /* @__PURE__ */ new Date();
|
|
357
|
-
const duration = now.getTime() - lastFocusEvent.getTime();
|
|
358
|
-
setTimeout(() => {
|
|
359
|
-
observability.track({
|
|
360
|
-
...getTelemetryIdentity(client),
|
|
361
|
-
action: "window.blur",
|
|
362
|
-
properties: {
|
|
363
|
-
duration
|
|
364
|
-
}
|
|
365
|
-
});
|
|
366
|
-
});
|
|
367
|
-
lastFocusEvent = now;
|
|
368
|
-
totalTime = totalTime + duration;
|
|
369
|
-
};
|
|
370
|
-
const unloadCallback = () => {
|
|
371
|
-
setTimeout(() => {
|
|
372
|
-
observability.track({
|
|
373
|
-
...getTelemetryIdentity(client),
|
|
374
|
-
action: "page.unload",
|
|
375
|
-
properties: {
|
|
376
|
-
duration: totalTime
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
});
|
|
380
|
-
};
|
|
381
|
-
const errorCallback = (event) => {
|
|
382
|
-
setTimeout(() => {
|
|
383
|
-
observability.track({
|
|
384
|
-
...getTelemetryIdentity(client),
|
|
385
|
-
action: "window.error",
|
|
386
|
-
properties: {
|
|
387
|
-
message: event.message,
|
|
388
|
-
filename: event.filename,
|
|
389
|
-
stack: event.error?.stack,
|
|
390
|
-
cause: event.error?.cause
|
|
391
|
-
}
|
|
392
|
-
});
|
|
393
|
-
});
|
|
394
|
-
};
|
|
395
|
-
window.addEventListener("click", clickCallback, true);
|
|
396
|
-
window.addEventListener("focus", focusCallback);
|
|
397
|
-
window.addEventListener("blur", blurCallback);
|
|
398
|
-
window.addEventListener("beforeunload", unloadCallback);
|
|
399
|
-
window.addEventListener("error", errorCallback);
|
|
400
|
-
return () => {
|
|
401
|
-
window.removeEventListener("click", clickCallback, true);
|
|
402
|
-
window.removeEventListener("focus", focusCallback);
|
|
403
|
-
window.removeEventListener("blur", blurCallback);
|
|
404
|
-
window.removeEventListener("beforeunload", unloadCallback);
|
|
405
|
-
window.removeEventListener("error", errorCallback);
|
|
406
|
-
};
|
|
407
|
-
};
|
|
408
|
-
|
|
409
73
|
// src/observability.ts
|
|
410
|
-
|
|
411
|
-
if (key in obj) {
|
|
412
|
-
Object.defineProperty(obj, key, {
|
|
413
|
-
value,
|
|
414
|
-
enumerable: true,
|
|
415
|
-
configurable: true,
|
|
416
|
-
writable: true
|
|
417
|
-
});
|
|
418
|
-
} else {
|
|
419
|
-
obj[key] = value;
|
|
420
|
-
}
|
|
421
|
-
return obj;
|
|
422
|
-
}
|
|
423
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/sdk/observability/src/observability.ts";
|
|
74
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/observability.ts";
|
|
424
75
|
var SPACE_METRICS_MIN_INTERVAL = 1e3 * 60;
|
|
425
76
|
var SPACE_TELEMETRY_MIN_INTERVAL = 1e3 * 60 * 60;
|
|
426
77
|
var NETWORK_METRICS_MIN_INTERVAL = 1e3 * 60 * 5;
|
|
427
78
|
var Observability = class {
|
|
79
|
+
_mode;
|
|
80
|
+
_namespace;
|
|
81
|
+
_config;
|
|
82
|
+
_group;
|
|
83
|
+
_secrets;
|
|
84
|
+
_tags = /* @__PURE__ */ new Map();
|
|
85
|
+
// TODO(wittjosiah): Generic metrics interface.
|
|
86
|
+
_otelMetrics;
|
|
87
|
+
_otelTraces;
|
|
88
|
+
// TODO(wittjosiah): Generic telemetry interface.
|
|
89
|
+
_telemetryBatchSize;
|
|
90
|
+
_telemetry;
|
|
91
|
+
// TODO(wittjosiah): Generic error logging interface.
|
|
92
|
+
_sentryLogProcessor;
|
|
93
|
+
_otelLogs;
|
|
94
|
+
_errorReportingOptions;
|
|
95
|
+
_captureException;
|
|
96
|
+
_captureUserFeedback;
|
|
97
|
+
_lastNetworkStatus;
|
|
98
|
+
_ctx = new Context(void 0, {
|
|
99
|
+
F: __dxlog_file,
|
|
100
|
+
L: 115
|
|
101
|
+
});
|
|
102
|
+
// TODO(nf): make platform a required extension?
|
|
103
|
+
constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog }) {
|
|
104
|
+
this._mode = mode;
|
|
105
|
+
this._namespace = namespace;
|
|
106
|
+
this._config = config;
|
|
107
|
+
this._group = group;
|
|
108
|
+
this._secrets = this._loadSecrets(config, secrets);
|
|
109
|
+
this._telemetryBatchSize = telemetry?.batchSize ?? 30;
|
|
110
|
+
this._errorReportingOptions = errorLog?.sentryInitOptions;
|
|
111
|
+
this.setTag("mode", this._mode);
|
|
112
|
+
this.setTag("namespace", this._namespace);
|
|
113
|
+
this.setTag("environment", environment);
|
|
114
|
+
this.setTag("release", release);
|
|
115
|
+
this.setTag("session", PublicKey.random().toHex());
|
|
116
|
+
this.setTag("group", this._group);
|
|
117
|
+
}
|
|
428
118
|
get mode() {
|
|
429
119
|
return this._mode;
|
|
430
120
|
}
|
|
@@ -449,11 +139,11 @@ var Observability = class {
|
|
|
449
139
|
process.env.DX_OTEL_AUTHORIZATION && (mergedSecrets.OTEL_AUTHORIZATION = process.env.DX_OTEL_AUTHORIZATION);
|
|
450
140
|
return mergedSecrets;
|
|
451
141
|
} else {
|
|
452
|
-
|
|
142
|
+
log("config", {
|
|
453
143
|
rtc: this._secrets,
|
|
454
144
|
config
|
|
455
145
|
}, {
|
|
456
|
-
F:
|
|
146
|
+
F: __dxlog_file,
|
|
457
147
|
L: 176,
|
|
458
148
|
S: this,
|
|
459
149
|
C: (f, a) => f(...a)
|
|
@@ -471,8 +161,8 @@ var Observability = class {
|
|
|
471
161
|
}
|
|
472
162
|
}
|
|
473
163
|
async initialize() {
|
|
474
|
-
|
|
475
|
-
F:
|
|
164
|
+
log("initializing...", void 0, {
|
|
165
|
+
F: __dxlog_file,
|
|
476
166
|
L: 191,
|
|
477
167
|
S: this,
|
|
478
168
|
C: (f, a) => f(...a)
|
|
@@ -484,8 +174,8 @@ var Observability = class {
|
|
|
484
174
|
await this._initTraces();
|
|
485
175
|
}
|
|
486
176
|
async close() {
|
|
487
|
-
|
|
488
|
-
F:
|
|
177
|
+
log("closing...", void 0, {
|
|
178
|
+
F: __dxlog_file,
|
|
489
179
|
L: 200,
|
|
490
180
|
S: this,
|
|
491
181
|
C: (f, a) => f(...a)
|
|
@@ -500,6 +190,11 @@ var Observability = class {
|
|
|
500
190
|
setMode(mode) {
|
|
501
191
|
this._mode = mode;
|
|
502
192
|
}
|
|
193
|
+
//
|
|
194
|
+
// Tags
|
|
195
|
+
//
|
|
196
|
+
/** Callback (e.g., to share tags with Sentry.) */
|
|
197
|
+
_setTag;
|
|
503
198
|
/**
|
|
504
199
|
* camelCase keys are converted to snake_case in Segment.
|
|
505
200
|
*/
|
|
@@ -526,10 +221,10 @@ var Observability = class {
|
|
|
526
221
|
if (clientServices.IdentityService) {
|
|
527
222
|
clientServices.IdentityService.queryIdentity().subscribe((idqr) => {
|
|
528
223
|
if (!idqr?.identity?.did) {
|
|
529
|
-
|
|
224
|
+
log("empty response from identity service", {
|
|
530
225
|
idqr
|
|
531
226
|
}, {
|
|
532
|
-
F:
|
|
227
|
+
F: __dxlog_file,
|
|
533
228
|
L: 247,
|
|
534
229
|
S: this,
|
|
535
230
|
C: (f, a) => f(...a)
|
|
@@ -545,10 +240,10 @@ var Observability = class {
|
|
|
545
240
|
if (clientServices.DevicesService) {
|
|
546
241
|
clientServices.DevicesService.queryDevices().subscribe((dqr) => {
|
|
547
242
|
if (!dqr || !dqr.devices || dqr.devices.length === 0) {
|
|
548
|
-
|
|
243
|
+
log("empty response from device service", {
|
|
549
244
|
device: dqr
|
|
550
245
|
}, {
|
|
551
|
-
F:
|
|
246
|
+
F: __dxlog_file,
|
|
552
247
|
L: 259,
|
|
553
248
|
S: this,
|
|
554
249
|
C: (f, a) => f(...a)
|
|
@@ -556,7 +251,7 @@ var Observability = class {
|
|
|
556
251
|
return;
|
|
557
252
|
}
|
|
558
253
|
invariant(dqr, "empty response from device service", {
|
|
559
|
-
F:
|
|
254
|
+
F: __dxlog_file,
|
|
560
255
|
L: 263,
|
|
561
256
|
S: this,
|
|
562
257
|
A: [
|
|
@@ -566,10 +261,10 @@ var Observability = class {
|
|
|
566
261
|
});
|
|
567
262
|
const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);
|
|
568
263
|
if (!thisDevice) {
|
|
569
|
-
|
|
264
|
+
log("no current device", {
|
|
570
265
|
device: dqr
|
|
571
266
|
}, {
|
|
572
|
-
F:
|
|
267
|
+
F: __dxlog_file,
|
|
573
268
|
L: 266,
|
|
574
269
|
S: this,
|
|
575
270
|
C: (f, a) => f(...a)
|
|
@@ -583,12 +278,19 @@ var Observability = class {
|
|
|
583
278
|
});
|
|
584
279
|
}
|
|
585
280
|
}
|
|
281
|
+
setIPDataTelemetryTags = (ipData) => {
|
|
282
|
+
this.setTag("city", ipData.city, "telemetry");
|
|
283
|
+
this.setTag("region", ipData.region, "telemetry");
|
|
284
|
+
this.setTag("country", ipData.country, "telemetry");
|
|
285
|
+
ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
|
|
286
|
+
ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
|
|
287
|
+
};
|
|
586
288
|
//
|
|
587
289
|
// Logs
|
|
588
290
|
//
|
|
589
291
|
async _initLogs() {
|
|
590
292
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
591
|
-
const { OtelLogs } = await import("./otel-
|
|
293
|
+
const { OtelLogs } = await import("./otel-DI4ASU7Y.mjs");
|
|
592
294
|
this._otelLogs = new OtelLogs({
|
|
593
295
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
594
296
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -603,18 +305,18 @@ var Observability = class {
|
|
|
603
305
|
logLevel: LogLevel.VERBOSE,
|
|
604
306
|
includeSharedWorkerLogs: false
|
|
605
307
|
});
|
|
606
|
-
this._otelLogs &&
|
|
607
|
-
|
|
308
|
+
this._otelLogs && log.runtimeConfig.processors.push(this._otelLogs.logProcessor);
|
|
309
|
+
log("otel logs enabled", {
|
|
608
310
|
namespace: this._namespace
|
|
609
311
|
}, {
|
|
610
|
-
F:
|
|
312
|
+
F: __dxlog_file,
|
|
611
313
|
L: 310,
|
|
612
314
|
S: this,
|
|
613
315
|
C: (f, a) => f(...a)
|
|
614
316
|
});
|
|
615
317
|
} else {
|
|
616
|
-
|
|
617
|
-
F:
|
|
318
|
+
log("otel logs disabled", void 0, {
|
|
319
|
+
F: __dxlog_file,
|
|
618
320
|
L: 312,
|
|
619
321
|
S: this,
|
|
620
322
|
C: (f, a) => f(...a)
|
|
@@ -626,7 +328,7 @@ var Observability = class {
|
|
|
626
328
|
//
|
|
627
329
|
async _initMetrics() {
|
|
628
330
|
if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {
|
|
629
|
-
const { OtelMetrics } = await import("./otel-
|
|
331
|
+
const { OtelMetrics } = await import("./otel-DI4ASU7Y.mjs");
|
|
630
332
|
this._otelMetrics = new OtelMetrics({
|
|
631
333
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
632
334
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -639,15 +341,15 @@ var Observability = class {
|
|
|
639
341
|
value.value
|
|
640
342
|
]))
|
|
641
343
|
});
|
|
642
|
-
|
|
643
|
-
F:
|
|
344
|
+
log("otel metrics enabled", void 0, {
|
|
345
|
+
F: __dxlog_file,
|
|
644
346
|
L: 337,
|
|
645
347
|
S: this,
|
|
646
348
|
C: (f, a) => f(...a)
|
|
647
349
|
});
|
|
648
350
|
} else {
|
|
649
|
-
|
|
650
|
-
F:
|
|
351
|
+
log("otel metrics disabled", void 0, {
|
|
352
|
+
F: __dxlog_file,
|
|
651
353
|
L: 339,
|
|
652
354
|
S: this,
|
|
653
355
|
C: (f, a) => f(...a)
|
|
@@ -669,8 +371,8 @@ var Observability = class {
|
|
|
669
371
|
}
|
|
670
372
|
const updateSignalMetrics = new Event().debounce(NETWORK_METRICS_MIN_INTERVAL);
|
|
671
373
|
updateSignalMetrics.on(this._ctx, async () => {
|
|
672
|
-
|
|
673
|
-
F:
|
|
374
|
+
log("send signal metrics", void 0, {
|
|
375
|
+
F: __dxlog_file,
|
|
674
376
|
L: 361,
|
|
675
377
|
S: this,
|
|
676
378
|
C: (f, a) => f(...a)
|
|
@@ -721,8 +423,8 @@ var Observability = class {
|
|
|
721
423
|
this._ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));
|
|
722
424
|
const updateSpaceMetrics = new Event().debounce(SPACE_METRICS_MIN_INTERVAL);
|
|
723
425
|
updateSpaceMetrics.on(this._ctx, async () => {
|
|
724
|
-
|
|
725
|
-
F:
|
|
426
|
+
log("send space metrics", void 0, {
|
|
427
|
+
F: __dxlog_file,
|
|
726
428
|
L: 414,
|
|
727
429
|
S: this,
|
|
728
430
|
C: (f, a) => f(...a)
|
|
@@ -746,8 +448,8 @@ var Observability = class {
|
|
|
746
448
|
});
|
|
747
449
|
const updateSpaceTelemetry = new Event().debounce(SPACE_TELEMETRY_MIN_INTERVAL);
|
|
748
450
|
updateSpaceTelemetry.on(this._ctx, async () => {
|
|
749
|
-
|
|
750
|
-
F:
|
|
451
|
+
log("send space telemetry", void 0, {
|
|
452
|
+
F: __dxlog_file,
|
|
751
453
|
L: 425,
|
|
752
454
|
S: this,
|
|
753
455
|
C: (f, a) => f(...a)
|
|
@@ -784,7 +486,7 @@ var Observability = class {
|
|
|
784
486
|
async startRuntimeMetrics(client, frequency = NETWORK_METRICS_MIN_INTERVAL) {
|
|
785
487
|
const platform = await client.services.services.SystemService?.getPlatform();
|
|
786
488
|
invariant(platform, "platform is required", {
|
|
787
|
-
F:
|
|
489
|
+
F: __dxlog_file,
|
|
788
490
|
L: 463,
|
|
789
491
|
S: this,
|
|
790
492
|
A: [
|
|
@@ -819,10 +521,10 @@ var Observability = class {
|
|
|
819
521
|
this.gauge("dxos.client.services.runtime.heapTotal", platform2.memory.heapTotal);
|
|
820
522
|
this.gauge("dxos.client.services.runtime.heapUsed", platform2.memory.heapUsed);
|
|
821
523
|
}
|
|
822
|
-
}).catch((error) =>
|
|
524
|
+
}).catch((error) => log("platform error", {
|
|
823
525
|
error
|
|
824
526
|
}, {
|
|
825
|
-
F:
|
|
527
|
+
F: __dxlog_file,
|
|
826
528
|
L: 497,
|
|
827
529
|
S: this,
|
|
828
530
|
C: (f, a) => f(...a)
|
|
@@ -846,8 +548,8 @@ var Observability = class {
|
|
|
846
548
|
]))
|
|
847
549
|
});
|
|
848
550
|
} else {
|
|
849
|
-
|
|
850
|
-
F:
|
|
551
|
+
log("segment disabled", void 0, {
|
|
552
|
+
F: __dxlog_file,
|
|
851
553
|
L: 523,
|
|
852
554
|
S: this,
|
|
853
555
|
C: (f, a) => f(...a)
|
|
@@ -874,15 +576,15 @@ var Observability = class {
|
|
|
874
576
|
async _initErrorLogs() {
|
|
875
577
|
if (this._secrets.SENTRY_DESTINATION && this._mode !== "disabled") {
|
|
876
578
|
const { captureException, captureUserFeedback, init, setTag } = await import("./sentry/index.mjs");
|
|
877
|
-
const { SentryLogProcessor } = await import("./sentry-log-processor-
|
|
579
|
+
const { SentryLogProcessor } = await import("./sentry-log-processor-W7LI6WXA.mjs");
|
|
878
580
|
this._captureException = captureException;
|
|
879
581
|
this._captureUserFeedback = captureUserFeedback;
|
|
880
582
|
this._setTag = setTag;
|
|
881
|
-
|
|
583
|
+
log.info("Initializing Sentry", {
|
|
882
584
|
dest: this._secrets.SENTRY_DESTINATION,
|
|
883
585
|
options: this._errorReportingOptions
|
|
884
586
|
}, {
|
|
885
|
-
F:
|
|
587
|
+
F: __dxlog_file,
|
|
886
588
|
L: 556,
|
|
887
589
|
S: this,
|
|
888
590
|
C: (f, a) => f(...a)
|
|
@@ -900,8 +602,8 @@ var Observability = class {
|
|
|
900
602
|
}
|
|
901
603
|
});
|
|
902
604
|
} else {
|
|
903
|
-
|
|
904
|
-
F:
|
|
605
|
+
log("sentry disabled", void 0, {
|
|
606
|
+
F: __dxlog_file,
|
|
905
607
|
L: 576,
|
|
906
608
|
S: this,
|
|
907
609
|
C: (f, a) => f(...a)
|
|
@@ -909,7 +611,7 @@ var Observability = class {
|
|
|
909
611
|
}
|
|
910
612
|
}
|
|
911
613
|
startErrorLogs() {
|
|
912
|
-
this._sentryLogProcessor &&
|
|
614
|
+
this._sentryLogProcessor && log.runtimeConfig.processors.push(this._sentryLogProcessor.logProcessor);
|
|
913
615
|
}
|
|
914
616
|
startTraces() {
|
|
915
617
|
this._otelTraces && this._otelTraces.start();
|
|
@@ -917,7 +619,7 @@ var Observability = class {
|
|
|
917
619
|
// TODO(nf): Refactor init based on providers and their capabilities.
|
|
918
620
|
async _initTraces() {
|
|
919
621
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
920
|
-
const { OtelTraces } = await import("./otel-
|
|
622
|
+
const { OtelTraces } = await import("./otel-DI4ASU7Y.mjs");
|
|
921
623
|
this._otelTraces = new OtelTraces({
|
|
922
624
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
923
625
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -947,10 +649,10 @@ var Observability = class {
|
|
|
947
649
|
*/
|
|
948
650
|
captureUserFeedback(message) {
|
|
949
651
|
if (!this._secrets.SENTRY_DESTINATION) {
|
|
950
|
-
|
|
652
|
+
log.info("Feedback submitted without Sentry destination", {
|
|
951
653
|
message
|
|
952
654
|
}, {
|
|
953
|
-
F:
|
|
655
|
+
F: __dxlog_file,
|
|
954
656
|
L: 625,
|
|
955
657
|
S: this,
|
|
956
658
|
C: (f, a) => f(...a)
|
|
@@ -959,67 +661,12 @@ var Observability = class {
|
|
|
959
661
|
}
|
|
960
662
|
void this._captureUserFeedback?.(message);
|
|
961
663
|
}
|
|
962
|
-
// TODO(nf): make platform a required extension?
|
|
963
|
-
constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog }) {
|
|
964
|
-
_define_property(this, "_mode", void 0);
|
|
965
|
-
_define_property(this, "_namespace", void 0);
|
|
966
|
-
_define_property(this, "_config", void 0);
|
|
967
|
-
_define_property(this, "_group", void 0);
|
|
968
|
-
_define_property(this, "_secrets", void 0);
|
|
969
|
-
_define_property(this, "_tags", /* @__PURE__ */ new Map());
|
|
970
|
-
_define_property(this, "_otelMetrics", void 0);
|
|
971
|
-
_define_property(this, "_otelTraces", void 0);
|
|
972
|
-
_define_property(this, "_telemetryBatchSize", void 0);
|
|
973
|
-
_define_property(this, "_telemetry", void 0);
|
|
974
|
-
_define_property(this, "_sentryLogProcessor", void 0);
|
|
975
|
-
_define_property(this, "_otelLogs", void 0);
|
|
976
|
-
_define_property(this, "_errorReportingOptions", void 0);
|
|
977
|
-
_define_property(this, "_captureException", void 0);
|
|
978
|
-
_define_property(this, "_captureUserFeedback", void 0);
|
|
979
|
-
_define_property(this, "_lastNetworkStatus", void 0);
|
|
980
|
-
_define_property(this, "_ctx", new Context(void 0, {
|
|
981
|
-
F: __dxlog_file3,
|
|
982
|
-
L: 115
|
|
983
|
-
}));
|
|
984
|
-
_define_property(this, "_setTag", void 0);
|
|
985
|
-
_define_property(this, "setIPDataTelemetryTags", (ipData) => {
|
|
986
|
-
this.setTag("city", ipData.city, "telemetry");
|
|
987
|
-
this.setTag("region", ipData.region, "telemetry");
|
|
988
|
-
this.setTag("country", ipData.country, "telemetry");
|
|
989
|
-
ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
|
|
990
|
-
ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
|
|
991
|
-
});
|
|
992
|
-
this._mode = mode;
|
|
993
|
-
this._namespace = namespace;
|
|
994
|
-
this._config = config;
|
|
995
|
-
this._group = group;
|
|
996
|
-
this._secrets = this._loadSecrets(config, secrets);
|
|
997
|
-
this._telemetryBatchSize = telemetry?.batchSize ?? 30;
|
|
998
|
-
this._errorReportingOptions = errorLog?.sentryInitOptions;
|
|
999
|
-
this.setTag("mode", this._mode);
|
|
1000
|
-
this.setTag("namespace", this._namespace);
|
|
1001
|
-
this.setTag("environment", environment);
|
|
1002
|
-
this.setTag("release", release);
|
|
1003
|
-
this.setTag("session", PublicKey.random().toHex());
|
|
1004
|
-
this.setTag("group", this._group);
|
|
1005
|
-
}
|
|
1006
664
|
};
|
|
1007
665
|
|
|
1008
666
|
export {
|
|
1009
667
|
Observability,
|
|
1010
|
-
OBSERVABILITY_DISABLED_KEY,
|
|
1011
|
-
OBSERVABILITY_GROUP_KEY,
|
|
1012
|
-
isObservabilityDisabled,
|
|
1013
|
-
storeObservabilityDisabled,
|
|
1014
|
-
getObservabilityGroup,
|
|
1015
|
-
storeObservabilityGroup,
|
|
1016
|
-
initializeAppObservability,
|
|
1017
668
|
getTelemetryIdentifier,
|
|
1018
669
|
getTelemetryIdentity,
|
|
1019
|
-
|
|
1020
|
-
getObservabilityState,
|
|
1021
|
-
initializeNodeObservability,
|
|
1022
|
-
mapSpaces,
|
|
1023
|
-
setupTelemetryListeners
|
|
670
|
+
mapSpaces
|
|
1024
671
|
};
|
|
1025
|
-
//# sourceMappingURL=chunk-
|
|
672
|
+
//# sourceMappingURL=chunk-JJQT5TQH.mjs.map
|