@dxos/observability 0.6.12-main.5cc132e → 0.6.12-main.89e9959
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/node-esm/{chunk-6DGCS5IE.mjs → chunk-BHETLWXO.mjs} +8 -6
- package/dist/lib/node-esm/{chunk-6DGCS5IE.mjs.map → chunk-BHETLWXO.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-YEQOSJSQ.mjs → chunk-CMDADTM3.mjs} +3 -1
- package/dist/lib/node-esm/{chunk-YEQOSJSQ.mjs.map → chunk-CMDADTM3.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs +2 -0
- package/dist/lib/node-esm/index.mjs +2 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-QJFZLUL4.mjs +8 -0
- package/dist/lib/node-esm/{otel-DJUW53OF.mjs → otel-YI7HAFOG.mjs} +3 -1
- package/dist/lib/node-esm/{otel-DJUW53OF.mjs.map → otel-YI7HAFOG.mjs.map} +1 -1
- package/dist/lib/node-esm/segment/index.mjs +3 -2
- package/dist/lib/node-esm/segment/index.mjs.map +1 -1
- package/dist/lib/node-esm/sentry/index.mjs +3 -2
- package/dist/lib/node-esm/{sentry-log-processor-HEWW7T3S.mjs → sentry-log-processor-JYJH3AMG.mjs} +3 -2
- package/dist/lib/node-esm/{sentry-log-processor-HEWW7T3S.mjs.map → sentry-log-processor-JYJH3AMG.mjs.map} +1 -1
- package/package.json +15 -15
- package/dist/lib/node-esm/chunk-KDP3SESE.mjs +0 -1
- package/dist/lib/node-esm/observability-UQRA6FNY.mjs +0 -7
- /package/dist/lib/node-esm/{chunk-KDP3SESE.mjs.map → chunk-YJ4KVBWC.mjs.map} +0 -0
- /package/dist/lib/node-esm/{observability-UQRA6FNY.mjs.map → observability-QJFZLUL4.mjs.map} +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
1
3
|
// packages/sdk/observability/src/observability.ts
|
|
2
4
|
import { Event, scheduleTaskInterval } from "@dxos/async";
|
|
3
5
|
import { Context } from "@dxos/context";
|
|
@@ -84,7 +86,7 @@ var initializeAppObservability = async ({ namespace, config, mode = "basic", tra
|
|
|
84
86
|
const release = `${namespace}@${config.get("runtime.app.build.version")}`;
|
|
85
87
|
const environment = config.get("runtime.app.env.DX_ENVIRONMENT");
|
|
86
88
|
const observabilityDisabled = await isObservabilityDisabled(namespace);
|
|
87
|
-
const { Observability: Observability2 } = await import("./observability-
|
|
89
|
+
const { Observability: Observability2 } = await import("./observability-QJFZLUL4.mjs");
|
|
88
90
|
const observability = new Observability2({
|
|
89
91
|
namespace,
|
|
90
92
|
release,
|
|
@@ -560,7 +562,7 @@ var Observability = class {
|
|
|
560
562
|
//
|
|
561
563
|
async _initMetrics() {
|
|
562
564
|
if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {
|
|
563
|
-
const { OtelMetrics } = await import("./otel-
|
|
565
|
+
const { OtelMetrics } = await import("./otel-YI7HAFOG.mjs");
|
|
564
566
|
this._otelMetrics = new OtelMetrics({
|
|
565
567
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
566
568
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -809,7 +811,7 @@ var Observability = class {
|
|
|
809
811
|
async _initErrorLogs() {
|
|
810
812
|
if (this._secrets.SENTRY_DESTINATION && this._mode !== "disabled") {
|
|
811
813
|
const { captureException, captureUserFeedback, init, setTag } = await import("./sentry/index.mjs");
|
|
812
|
-
const { SentryLogProcessor } = await import("./sentry-log-processor-
|
|
814
|
+
const { SentryLogProcessor } = await import("./sentry-log-processor-JYJH3AMG.mjs");
|
|
813
815
|
this._captureException = captureException;
|
|
814
816
|
this._captureUserFeedback = captureUserFeedback;
|
|
815
817
|
this._setTag = setTag;
|
|
@@ -843,7 +845,7 @@ var Observability = class {
|
|
|
843
845
|
});
|
|
844
846
|
}
|
|
845
847
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
846
|
-
const { OtelLogs } = await import("./otel-
|
|
848
|
+
const { OtelLogs } = await import("./otel-YI7HAFOG.mjs");
|
|
847
849
|
this._otelLogs = new OtelLogs({
|
|
848
850
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
849
851
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -883,7 +885,7 @@ var Observability = class {
|
|
|
883
885
|
// TODO(nf): refactor init based on providers and their capabilities
|
|
884
886
|
async _initTraces() {
|
|
885
887
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
886
|
-
const { OtelTraces } = await import("./otel-
|
|
888
|
+
const { OtelTraces } = await import("./otel-YI7HAFOG.mjs");
|
|
887
889
|
this._otelTraces = new OtelTraces({
|
|
888
890
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
889
891
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -934,4 +936,4 @@ export {
|
|
|
934
936
|
mapSpaces,
|
|
935
937
|
setupTelemetryListeners
|
|
936
938
|
};
|
|
937
|
-
//# sourceMappingURL=chunk-
|
|
939
|
+
//# sourceMappingURL=chunk-BHETLWXO.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/observability.ts", "../../../src/cli-observability-secrets.json", "../../../src/helpers/browser-observability.ts", "../../../src/helpers/common.ts", "../../../src/helpers/node-observability.ts", "../../../src/helpers/map-spaces.ts", "../../../src/helpers/setup-telemetry-listeners.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Event, scheduleTaskInterval } from '@dxos/async';\nimport { type Client, type Config } from '@dxos/client';\nimport { type ClientServices, type Space } from '@dxos/client-protocol';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { ConnectionState } from '@dxos/network-manager';\nimport { DeviceKind, type NetworkStatus, Platform } from '@dxos/protocols/proto/dxos/client/services';\nimport { isNode } from '@dxos/util';\n\nimport buildSecrets from './cli-observability-secrets.json';\nimport { type IPData, getTelemetryIdentifier, mapSpaces } from './helpers';\nimport { type OtelLogs, type OtelMetrics, type OtelTraces } from './otel';\nimport { type SegmentTelemetry, type EventOptions, type PageOptions } from './segment';\nimport { type InitOptions, type captureException as SentryCaptureException } from './sentry';\nimport { type SentryLogProcessor } from './sentry/sentry-log-processor';\n\nconst SPACE_METRICS_MIN_INTERVAL = 1000 * 60; // 1 minute\nconst SPACE_TELEMETRY_MIN_INTERVAL = 1000 * 60 * 60; // 1 hour\nconst NETWORK_METRICS_MIN_INTERVAL = 1000 * 60 * 5; // 5 minutes\n\n// Secrets? EnvironmentConfig?\n\nexport type ObservabilitySecrets = {\n DX_ENVIRONMENT: string | null;\n DX_RELEASE: string | null;\n SENTRY_DESTINATION: string | null;\n TELEMETRY_API_KEY: string | null;\n IPDATA_API_KEY: string | null;\n OTEL_ENDPOINT: string | null;\n OTEL_AUTHORIZATION: string | null;\n};\n\nexport type Mode = 'basic' | 'full' | 'disabled';\nexport type TagScope = 'errors' | 'telemetry' | 'metrics' | 'all';\n\nexport type ObservabilityOptions = {\n /// The webapp (e.g. 'composer.dxos.org'), 'cli', or 'agent'.\n namespace: string;\n mode: Mode;\n // TODO(nf): make platform a required extension?\n // platform: Platform;\n release?: string;\n environment?: string;\n config?: Config;\n secrets?: Record<string, string>;\n group?: string;\n\n telemetry?: {\n batchSize?: number;\n };\n\n errorLog?: {\n sentryInitOptions?: InitOptions;\n };\n};\n\n/*\n * Observability provides a common interface for error logging, metrics, and telemetry.\n * It currently provides these capabilities using Sentry, OpenTelemetry, and Segment.\n */\nexport class Observability {\n // TODO(wittjosiah): Generic metrics interface.\n private _otelMetrics?: OtelMetrics;\n private _otelTraces?: OtelTraces;\n // TODO(wittjosiah): Generic telemetry interface.\n private _telemetryBatchSize: number;\n private _telemetry?: SegmentTelemetry;\n // TODO(wittjosiah): Generic error logging interface.\n private _sentryLogProcessor?: SentryLogProcessor;\n private _otelLogs?: OtelLogs;\n private _errorReportingOptions?: InitOptions;\n private _captureException?: typeof SentryCaptureException;\n private _captureUserFeedback?: (name: string, email: string, message: string) => Promise<void>;\n private _setTag?: (key: string, value: string) => void;\n\n private _secrets: ObservabilitySecrets;\n private _namespace: string;\n private _mode: Mode;\n private _config?: Config;\n private _group?: string;\n // TODO(nf): accept upstream context?\n private _ctx = new Context();\n private _tags = new Map<string, { value: string; scope: TagScope }>();\n private _lastNetworkStatus?: NetworkStatus;\n\n // TODO(nf): make platform a required extension?\n constructor({\n namespace,\n environment,\n release,\n config,\n secrets,\n group,\n mode,\n telemetry,\n errorLog,\n }: ObservabilityOptions) {\n this._namespace = namespace;\n this._mode = mode;\n this._config = config;\n this._group = group;\n this._secrets = this._loadSecrets(config, secrets);\n this._telemetryBatchSize = telemetry?.batchSize ?? 30;\n this._errorReportingOptions = errorLog?.sentryInitOptions;\n\n if (this._group) {\n this.setTag('group', this._group);\n }\n this.setTag('namespace', this._namespace);\n environment && this.setTag('environment', environment);\n release && this.setTag('release', release);\n this.setTag('mode', this._mode);\n }\n\n get mode() {\n return this._mode;\n }\n\n get group() {\n return this._group;\n }\n\n get enabled() {\n return this._mode !== 'disabled';\n }\n\n private _loadSecrets(config: Config | undefined, secrets?: Record<string, string>) {\n if (isNode()) {\n const mergedSecrets = {\n ...(buildSecrets as ObservabilitySecrets),\n ...secrets,\n };\n\n process.env.DX_ENVIRONMENT && (mergedSecrets.DX_ENVIRONMENT = process.env.DX_ENVIRONMENT);\n process.env.DX_RELEASE && (mergedSecrets.DX_RELEASE = process.env.DX_RELEASE);\n // TODO: prefix these with DX_?\n process.env.SENTRY_DESTINATION && (mergedSecrets.SENTRY_DESTINATION = process.env.SENTRY_DESTINATION);\n process.env.TELEMETRY_API_KEY && (mergedSecrets.TELEMETRY_API_KEY = process.env.TELEMETRY_API_KEY);\n process.env.IPDATA_API_KEY && (mergedSecrets.IPDATA_API_KEY = process.env.IPDATA_API_KEY);\n process.env.DX_OTEL_ENDPOINT && (mergedSecrets.OTEL_ENDPOINT = process.env.DX_OTEL_ENDPOINT);\n process.env.DX_OTEL_AUTHORIZATION && (mergedSecrets.OTEL_AUTHORIZATION = process.env.DX_OTEL_AUTHORIZATION);\n\n return mergedSecrets;\n } else {\n log('config', { rtc: this._secrets, config });\n return {\n DX_ENVIRONMENT: config?.get('runtime.app.env.DX_ENVIRONMENT'),\n DX_RELEASE: config?.get('runtime.app.env.DX_RELEASE'),\n SENTRY_DESTINATION: config?.get('runtime.app.env.DX_SENTRY_DESTINATION'),\n TELEMETRY_API_KEY: config?.get('runtime.app.env.DX_TELEMETRY_API_KEY'),\n IPDATA_API_KEY: config?.get('runtime.app.env.DX_IPDATA_API_KEY'),\n OTEL_ENDPOINT: config?.get('runtime.app.env.DX_OTEL_ENDPOINT'),\n OTEL_AUTHORIZATION: config?.get('runtime.app.env.DX_OTEL_AUTHORIZATION'),\n ...secrets,\n };\n }\n }\n\n async initialize() {\n await this._initMetrics();\n await this._initTelemetry();\n await this._initErrorLogs();\n await this._initTraces();\n }\n\n async close() {\n const closes: Promise<void>[] = [];\n this._telemetry && closes.push(this._telemetry.close());\n this._otelMetrics && closes.push(this._otelMetrics.close());\n this._otelLogs && closes.push(this._otelLogs.close());\n\n await Promise.all(closes);\n await this._ctx.dispose();\n\n // TODO(wittjosiah): Remove telemetry, etc. scripts.\n }\n\n setMode(mode: Mode) {\n this._mode = mode;\n }\n\n //\n // Tags\n //\n\n setTag(key: string, value: string, scope?: TagScope) {\n if (this.enabled && (scope === undefined || scope === 'all' || scope === 'errors')) {\n this._setTag?.(key, value);\n }\n if (!scope) {\n scope = 'all';\n }\n this._tags.set(key, { value, scope });\n }\n\n getTag(key: string) {\n return this._tags.get(key);\n }\n\n addIPDataTelemetryTags = (ipData: IPData) => {\n this.setTag('city', ipData.city, 'telemetry');\n this.setTag('region', ipData.region, 'telemetry');\n this.setTag('country', ipData.country, 'telemetry');\n ipData.latitude && this.setTag('latitude', ipData.latitude.toString(), 'telemetry');\n ipData.longitude && this.setTag('longitude', ipData.longitude.toString(), 'telemetry');\n };\n\n // TODO(wittjosiah): Improve privacy of telemetry identifiers. See `getTelemetryIdentifier`.\n async setIdentityTags(clientServices: Partial<ClientServices>) {\n if (clientServices.IdentityService) {\n clientServices.IdentityService.queryIdentity().subscribe((idqr) => {\n if (!idqr?.identity?.identityKey) {\n log('empty response from identity service', { idqr });\n return;\n }\n this.setTag('identityKey', idqr.identity.identityKey.truncate());\n });\n }\n\n if (clientServices.DevicesService) {\n clientServices.DevicesService.queryDevices().subscribe((dqr) => {\n if (!dqr || !dqr.devices || dqr.devices.length === 0) {\n log('empty response from device service', { device: dqr });\n return;\n }\n invariant(dqr, 'empty response from device service');\n\n const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);\n if (!thisDevice) {\n log('no current device', { device: dqr });\n return;\n }\n this.setTag('deviceKey', thisDevice.deviceKey.truncate());\n if (thisDevice.profile?.label) {\n this.setTag('deviceProfile', thisDevice.profile.label);\n }\n });\n }\n }\n\n //\n // Metrics\n //\n\n private async _initMetrics() {\n if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {\n const { OtelMetrics } = await import('./otel');\n this._otelMetrics = new OtelMetrics({\n endpoint: this._secrets.OTEL_ENDPOINT,\n authorizationHeader: this._secrets.OTEL_AUTHORIZATION,\n serviceName: this._namespace,\n serviceVersion: this.getTag('release')?.value ?? '0.0.0',\n getTags: () =>\n Object.fromEntries(\n Array.from(this._tags)\n .filter(([key, value]) => {\n return value.scope === 'all' || value.scope === 'metrics';\n })\n .map(([key, value]) => [key, value.value]),\n ),\n });\n log('otel metrics enabled');\n } else {\n log('otel metrics disabled');\n }\n }\n\n /**\n * Gauge metric.\n *\n * The default implementation uses OpenTelemetry\n */\n gauge(name: string, value: number | any, extraTags?: any) {\n this._otelMetrics?.gauge(name, value, extraTags);\n }\n\n // TODO(nf): Refactor into ObservabilityExtensions.\n\n startNetworkMetrics(clientServices: Partial<ClientServices>) {\n if (!clientServices.NetworkService) {\n return;\n }\n // TODO(nf): support type in debounce()\n const updateSignalMetrics = new Event<NetworkStatus>().debounce(NETWORK_METRICS_MIN_INTERVAL);\n updateSignalMetrics.on(this._ctx, async () => {\n log('send signal metrics');\n (this._lastNetworkStatus?.signaling as NetworkStatus.Signal[]).forEach(({ server, state }) => {\n this.gauge('dxos.client.network.signal.connectionState', state, { server });\n });\n\n let swarmCount = 0;\n const connectionStates = new Map<string, number>();\n for (const state in ConnectionState) {\n connectionStates.set(state, 0);\n }\n\n let totalReadBufferSize = 0;\n let totalWriteBufferSize = 0;\n let totalChannelBufferSize = 0;\n\n this._lastNetworkStatus?.connectionInfo?.forEach((connectionInfo) => {\n swarmCount++;\n\n for (const conn of connectionInfo.connections ?? []) {\n connectionStates.set(conn.state, (connectionStates.get(conn.state) ?? 0) + 1);\n totalReadBufferSize += conn.readBufferSize ?? 0;\n totalWriteBufferSize += conn.writeBufferSize ?? 0;\n\n for (const stream of conn.streams ?? []) {\n totalChannelBufferSize += stream.writeBufferSize ?? 0;\n }\n }\n\n this.gauge('dxos.client.network.swarm.count', swarmCount);\n for (const state in ConnectionState) {\n this.gauge('dxos.client.network.connection.count', connectionStates.get(state) ?? 0, { state });\n }\n this.gauge('dxos.client.network.totalReadBufferSize', totalReadBufferSize);\n this.gauge('dxos.client.network.totalWriteBufferSize', totalWriteBufferSize);\n this.gauge('dxos.client.network.totalChannelBufferSize', totalChannelBufferSize);\n });\n });\n\n clientServices.NetworkService.queryStatus().subscribe((networkStatus) => {\n this._lastNetworkStatus = networkStatus;\n updateSignalMetrics.emit();\n });\n\n scheduleTaskInterval(this._ctx, async () => updateSignalMetrics.emit(), NETWORK_METRICS_MIN_INTERVAL);\n }\n\n startSpacesMetrics(client: Client, namespace: string) {\n // TODO(nf): update subscription on new spaces\n const spaces = client.spaces.get();\n const subscriptions = new Map<string, { unsubscribe: () => void }>();\n this._ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));\n\n const updateSpaceMetrics = new Event<Space>().debounce(SPACE_METRICS_MIN_INTERVAL);\n updateSpaceMetrics.on(this._ctx, async () => {\n log('send space metrics');\n for (const data of mapSpaces(spaces, { truncateKeys: true })) {\n this.gauge('dxos.client.space.members', data.members, { key: data.key });\n this.gauge('dxos.client.space.objects', data.objects, { key: data.key });\n this.gauge('dxos.client.space.epoch', data.epoch, { key: data.key });\n this.gauge('dxos.client.space.currentDataMutations', data.currentDataMutations, { key: data.key });\n }\n });\n\n const updateSpaceTelemetry = new Event<Space>().debounce(SPACE_TELEMETRY_MIN_INTERVAL);\n updateSpaceTelemetry.on(this._ctx, async () => {\n log('send space telemetry');\n for (const data of mapSpaces(spaces, { truncateKeys: true })) {\n this.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.space.update`,\n properties: data,\n });\n }\n });\n\n const subscribeToSpaceUpdate = (space: Space) =>\n space.pipeline.subscribe({\n next: () => {\n updateSpaceMetrics.emit();\n updateSpaceTelemetry.emit();\n },\n });\n\n spaces.forEach((space) => {\n subscriptions.set(space.key.toHex(), subscribeToSpaceUpdate(space));\n });\n\n client.spaces.subscribe({\n next: async (spaces) => {\n spaces\n .filter((space) => !subscriptions.has(space.key.toHex()))\n .forEach((space) => {\n subscriptions.set(space.key.toHex(), subscribeToSpaceUpdate(space));\n });\n },\n });\n\n scheduleTaskInterval(this._ctx, async () => updateSpaceMetrics.emit(), NETWORK_METRICS_MIN_INTERVAL);\n }\n\n async startRuntimeMetrics(client: Client, frequency: number = NETWORK_METRICS_MIN_INTERVAL) {\n const platform = await client.services.services.SystemService?.getPlatform();\n invariant(platform, 'platform is required');\n\n this.setTag('platform_type', Platform.PLATFORM_TYPE[platform.type as number].toLowerCase());\n if (this._mode === 'full') {\n // platform[foo] does not work?\n if (platform.platform) {\n this.setTag('platform', platform.platform);\n }\n if (platform.arch) {\n this.setTag('arch', platform.arch);\n }\n if (platform.runtime) {\n this.setTag('runtime', platform.runtime);\n }\n }\n\n scheduleTaskInterval(\n this._ctx,\n async () => {\n if (client.services.constructor.name === 'WorkerClientServices') {\n const memory = (window.performance as any).memory;\n if (memory) {\n this.gauge('dxos.client.runtime.heapTotal', memory.totalJSHeapSize);\n this.gauge('dxos.client.runtime.heapUsed', memory.usedJSHeapSize);\n this.gauge('dxos.client.runtime.heapSizeLimit', memory.jsHeapSizeLimit);\n }\n }\n client.services.services.SystemService?.getPlatform()\n .then((platform) => {\n if (platform.memory) {\n this.gauge('dxos.client.services.runtime.rss', platform.memory.rss);\n this.gauge('dxos.client.services.runtime.heapTotal', platform.memory.heapTotal);\n this.gauge('dxos.client.services.runtime.heapUsed', platform.memory.heapUsed);\n }\n })\n .catch((error) => log('platform error', { error }));\n },\n frequency,\n );\n }\n\n //\n // Telemetry\n //\n\n private async _initTelemetry() {\n if (this._secrets.TELEMETRY_API_KEY && this._mode !== 'disabled') {\n const { SegmentTelemetry } = await import('./segment');\n this._telemetry = new SegmentTelemetry({\n apiKey: this._secrets.TELEMETRY_API_KEY,\n batchSize: this._telemetryBatchSize,\n getTags: () =>\n Object.fromEntries(\n Array.from(this._tags)\n .filter(([key, value]) => {\n return value.scope === 'all' || value.scope === 'telemetry';\n })\n .map(([key, value]) => [key, value.value]),\n ),\n });\n } else {\n log('segment disabled');\n }\n }\n\n /**\n * A telemetry event.\n *\n * The default implementation uses Segment.\n */\n event(options: EventOptions) {\n this._telemetry?.event(options);\n }\n\n /**\n * A telemetry page view.\n *\n * The default implementation uses Segment.\n */\n page(options: PageOptions) {\n this._telemetry?.page(options);\n }\n\n //\n // Error Logs\n //\n\n private async _initErrorLogs() {\n if (this._secrets.SENTRY_DESTINATION && this._mode !== 'disabled') {\n const { captureException, captureUserFeedback, init, setTag } = await import('./sentry');\n const { SentryLogProcessor } = await import('./sentry/sentry-log-processor');\n this._captureException = captureException;\n this._captureUserFeedback = captureUserFeedback;\n\n this._setTag = setTag;\n\n // TODO(nf): refactor package into this one?\n log.info('Initializing Sentry', {\n dest: this._secrets.SENTRY_DESTINATION,\n options: this._errorReportingOptions,\n });\n this._sentryLogProcessor = new SentryLogProcessor();\n init({\n ...this._errorReportingOptions,\n destination: this._secrets.SENTRY_DESTINATION,\n scrubFilenames: this._mode !== 'full',\n onError: (event) => this._sentryLogProcessor!.addLogBreadcrumbsTo(event),\n });\n // TODO(nf): set platform at instantiation? needed for node.\n\n // TODO(nf): is this different than passing as properties in options?\n this._tags.forEach((v, k) => {\n if (v.scope === 'all' || v.scope === 'errors') {\n setTag(k, v.value);\n }\n });\n } else {\n log('sentry disabled');\n }\n\n if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== 'disabled') {\n const { OtelLogs } = await import('./otel');\n this._otelLogs = new OtelLogs({\n endpoint: this._secrets.OTEL_ENDPOINT,\n authorizationHeader: this._secrets.OTEL_AUTHORIZATION,\n serviceName: this._namespace,\n serviceVersion: this.getTag('release')?.value ?? '0.0.0',\n getTags: () =>\n Object.fromEntries(\n Array.from(this._tags)\n .filter(([key, value]) => {\n return value.scope === 'all' || value.scope === 'errors';\n })\n .map(([key, value]) => [key, value.value]),\n ),\n });\n log('otel logs enabled', { namespace: this._namespace });\n } else {\n log('otel logs disabled');\n }\n }\n\n startErrorLogs() {\n this._sentryLogProcessor && log.runtimeConfig.processors.push(this._sentryLogProcessor.logProcessor);\n this._otelLogs && log.runtimeConfig.processors.push(this._otelLogs.logProcessor);\n }\n\n startTraces() {\n this._otelTraces && this._otelTraces.start();\n }\n\n // TODO(nf): refactor init based on providers and their capabilities\n private async _initTraces() {\n if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== 'disabled') {\n const { OtelTraces } = await import('./otel');\n this._otelTraces = new OtelTraces({\n endpoint: this._secrets.OTEL_ENDPOINT,\n authorizationHeader: this._secrets.OTEL_AUTHORIZATION,\n serviceName: this._namespace,\n serviceVersion: this.getTag('release')?.value ?? '0.0.0',\n getTags: () =>\n Object.fromEntries(\n Array.from(this._tags)\n .filter(([key, value]) => {\n return value.scope === 'all' || value.scope === 'metrics';\n })\n .map(([key, value]) => [key, value.value]),\n ),\n });\n }\n }\n\n /**\n * Manually capture an exception.\n *\n * The default implementation uses Sentry.\n */\n captureException(err: any) {\n if (this.enabled) {\n this._captureException?.(err);\n }\n }\n\n /**\n * Manually capture user feedback.\n *\n * The default implementation uses Sentry.\n */\n captureUserFeedback(name: string, email: string, message: string) {\n // TODO(Zan): Should this respect telemetry mode? Sending feedback is explicitly user-initiated.\n // - Maybe if telemetry is disable we shouldn't enable replay.\n // - (Check the browser.ts implementation for reference).\n void this._captureUserFeedback?.(name, email, message);\n }\n}\n", "{\n \"SENTRY_DESTINATION\": \"https://2647916221e643869965e78469479aa4@o4504012000067584.ingest.sentry.io/4504012027265029\",\n \"TELEMETRY_API_KEY\": \"B00QG6PtJJrJ0VVFe0H5a6bcUUShKyZM\",\n \"IPDATA_API_KEY\": \"73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786\",\n \"OTEL_ENDPOINT\": null,\n \"OTEL_AUTHORIZATION\": null\n}", "//\n// Copyright 2022 DXOS.org\n//\n\n// NOTE: localStorage is not available in web workers.\nimport * as localForage from 'localforage';\n\n// import { type Platform } from '@dxos/client-services';\n// import { type InitOptions as TelemetryInitOptions } from '@dxos/telemetry';\n\nimport type { Config } from '@dxos/client';\nimport { log } from '@dxos/log';\n\nimport type { IPData } from './common';\nimport type { Mode, Observability } from '../observability';\n\nexport const OBSERVABILITY_DISABLED_KEY = 'observability-disabled';\nexport const OBSERVABILITY_GROUP_KEY = 'observability-group';\n\nexport const isObservabilityDisabled = async (namespace: string): Promise<boolean> => {\n try {\n return (await localForage.getItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`)) === 'true';\n } catch (err) {\n log.catch('Failed to check if observability is disabled, assuming it is', err);\n return true;\n }\n};\n\nexport const storeObservabilityDisabled = async (namespace: string, value: boolean) => {\n try {\n await localForage.setItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`, String(value));\n } catch (err) {\n log.catch('Failed to store observability disabled', err);\n }\n};\n\nexport const getObservabilityGroup = async (namespace: string): Promise<string | undefined> => {\n try {\n return (await localForage.getItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`)) ?? undefined;\n } catch (err) {\n log.catch('Failed to get observability group', err);\n }\n};\n\nexport const storeObservabilityGroup = async (namespace: string, value: string) => {\n try {\n await localForage.setItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`, value);\n } catch (err) {\n log.catch('Failed to store observability group', err);\n }\n};\n\nexport type AppObservabilityOptions = {\n namespace: string;\n config: Config;\n mode?: Mode;\n tracingEnable?: boolean;\n replayEnable?: boolean;\n // TODO(nf): options for providers?\n};\n\n// TODO(wittjosiah): Store preference for disabling observability.\n// At minimum should be stored locally (i.e., localstorage), possibly in halo preference.\n// Needs to be hooked up to settings page for user visibility.\nexport const initializeAppObservability = async ({\n namespace,\n config,\n mode = 'basic',\n tracingEnable = true,\n replayEnable = true,\n}: AppObservabilityOptions): Promise<Observability> => {\n log('initializeAppObservability', { config });\n\n /*\n const platform = (await client.services.services.SystemService?.getPlatform()) as Platform;\n if (!platform) {\n log.error('failed to get platform, could not initialize observability');\n return undefined;\n }\n */\n\n const group = (await getObservabilityGroup(namespace)) ?? undefined;\n const release = `${namespace}@${config.get('runtime.app.build.version')}`;\n const environment = config.get('runtime.app.env.DX_ENVIRONMENT');\n\n const observabilityDisabled = await isObservabilityDisabled(namespace);\n\n const { Observability } = await import('../observability');\n\n // TODO(nf): configure mode\n const observability = new Observability({\n namespace,\n release,\n environment,\n group,\n mode,\n config,\n errorLog: {\n sentryInitOptions: {\n environment,\n release,\n tracing: tracingEnable,\n replay: replayEnable,\n // TODO(wittjosiah): Configure these.\n sampleRate: 1.0,\n replaySampleRate: 0.1,\n replaySampleRateOnError: 1.0,\n },\n },\n });\n\n // global kill switch\n if (observabilityDisabled) {\n observability.setMode('disabled');\n log.info('observability disabled');\n return observability;\n }\n\n try {\n const getIPData = async (config: Config): Promise<IPData | void> => {\n const IP_DATA_CACHE_TIMEOUT = 6 * 60 * 60 * 1000; // 6 hours\n type CachedIPData = {\n data: IPData;\n timestamp: number;\n };\n\n // Check cache first.\n const cachedData: null | CachedIPData = await localForage.getItem('dxos:observability:ipdata');\n if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {\n return cachedData.data;\n }\n\n // Fetch data if not cached.\n const IPDATA_API_KEY = config.get('runtime.app.env.DX_IPDATA_API_KEY');\n if (IPDATA_API_KEY) {\n return fetch(`https://api.ipdata.co?api-key=${IPDATA_API_KEY}`)\n .then((res) => res.json())\n .then((data) => {\n // Cache data.\n localForage\n .setItem('dxos:observability:ipdata', {\n data,\n timestamp: Date.now(),\n })\n .catch((err) => observability.captureException(err));\n\n return data;\n })\n .catch((err) => observability.captureException(err));\n }\n };\n\n // TODO(nf): plugin state?\n\n // TODO(nf): should provide capability to init Sentry earlier in booting process to capture errors during initialization.\n\n await observability.initialize();\n observability.startErrorLogs();\n\n const ipData = await getIPData(config);\n\n ipData && observability.addIPDataTelemetryTags(ipData);\n\n if (typeof navigator !== 'undefined' && navigator.storage?.estimate) {\n setInterval(async () => {\n try {\n const storageEstimate = await navigator.storage.estimate();\n storageEstimate.usage && observability.setTag('storageUsage', storageEstimate.usage.toString(), 'telemetry');\n storageEstimate.quota && observability.setTag('storageQuota', storageEstimate.quota.toString(), 'telemetry');\n } catch (error) {\n log.warn('Failed to run estimate()', error);\n }\n }, 10e3);\n }\n } catch (err: any) {\n log.error('Failed to initialize app observability', err);\n }\n\n return observability;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { Client } from '@dxos/client';\n\n// TODO(wittjosiah): Improve privacy of telemetry identifiers.\n// - Identifier should be generated client-side with no attachment to identity.\n// - Identifier can then be reset by user.\n// - Identifier can be synced via HALO to allow for correlation of events bewteen devices.\n// - Identifier should also be stored outside of HALO such that it is available immediately on startup.\nexport const getTelemetryIdentifier = (client: Client) => {\n if (!client?.initialized) {\n return undefined;\n }\n\n const identity = client.halo.identity.get();\n if (identity) {\n return identity.identityKey.truncate();\n }\n\n return undefined;\n};\n\nexport type IPData = { city: string; region: string; country: string; latitude: number; longitude: number };\n", "//\n// Copyright 2022 DXOS.org\n//\nimport yaml from 'js-yaml';\nimport { existsSync, statSync } from 'node:fs';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { v4 as uuid, validate as validateUuid } from 'uuid';\n\nimport type { Config } from '@dxos/client';\nimport { log } from '@dxos/log';\n\nimport { Observability, type Mode } from '../observability';\n\n/**\n * Print observability banner once per installation.\n */\nexport const showObservabilityBanner = async (configDir: string, bannercb: (input: string) => void) => {\n const path = join(configDir, '.observability-banner-printed');\n if (existsSync(path)) {\n return;\n }\n bannercb(\n // eslint-disable-next-line no-multi-str\n 'Basic observability data will be sent to the DXOS team in order to improve the product. This includes \\\n performance metrics, error logs, and usage data. No personally identifiable information, other than your \\\n public key, is included with this data and no private data ever leaves your devices. To disable sending \\\n observability data, set the environment variable DX_DISABLE_OBSERVABILITY=true.',\n );\n\n await writeFile(path, '', 'utf-8');\n};\n\nexport const getObservabilityState = async (configDir: string): Promise<PersistentObservabilityState> => {\n // check whether configDir exists and if it's a directory\n\n if (existsSync(configDir)) {\n if (!statSync(configDir).isDirectory()) {\n throw new Error(`Config directory ${configDir} exists but is not a directory`);\n }\n } else {\n await mkdir(configDir, { recursive: true });\n }\n\n const idPath = join(configDir, 'observability.yml');\n if (existsSync(idPath)) {\n const context = await readFile(idPath, 'utf-8');\n return validate(context) ?? initializeState(idPath);\n }\n\n return initializeState(idPath);\n};\n\nexport type PersistentObservabilityState = {\n installationId: string;\n group?: string;\n mode: Mode;\n};\n\n// create initial state and write to file, using environment variables to override defaults.\nconst initializeState = async (idPath: string): Promise<PersistentObservabilityState> => {\n // TODO(nf): read initial values from config or seed file\n const observabilityState = {\n installationId: uuid(),\n group: process.env.DX_OBSERVABILITY_GROUP ?? undefined,\n mode: (process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : process.env.DX_OBSERVABILITY_MODE ?? 'basic') as Mode,\n };\n\n await writeFile(\n idPath,\n '# This file is automatically generated by the @dxos/cli.\\n' + yaml.dump(observabilityState),\n 'utf-8',\n );\n\n return observabilityState;\n};\n\nconst validate = (contextString: string) => {\n const context = yaml.load(contextString) as PersistentObservabilityState;\n if (Boolean(context.installationId) && validateUuid(context.installationId!)) {\n return {\n ...context,\n mode: process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : context.mode ?? 'basic',\n };\n }\n};\n\nexport type NodeObservabilityOptions = {\n installationId: string;\n group?: string;\n namespace: string;\n version: string;\n config: Config;\n mode?: Mode;\n tracingEnable?: boolean;\n replayEnable?: boolean;\n // TODO(nf): options for providers?\n};\n\nexport const initializeNodeObservability = async ({\n namespace,\n version,\n config,\n installationId,\n group,\n mode = 'basic',\n tracingEnable = true,\n replayEnable = true,\n}: NodeObservabilityOptions): Promise<Observability> => {\n log('initializeCliObservability', { config });\n\n // TODO(nf): make CLI build populate runtime.app.build config?\n const release = `${namespace}@${version}`;\n const environment = process.env.DX_ENVIRONMENT ?? 'unknown';\n\n const observability = new Observability({\n namespace,\n release,\n environment,\n group,\n mode,\n errorLog: {\n sentryInitOptions: {\n environment,\n release,\n // TODO(wittjosiah): Configure this.\n sampleRate: 1.0,\n },\n },\n });\n\n observability.setTag('installationId', installationId);\n\n // TODO(nf): cache ipdata to avoid repeated requests\n const IPDATA_API_KEY = config.get('runtime.app.env.DX_IPDATA_API_KEY');\n try {\n const res = await fetch(`https://api.ipdata.co/?api-key=${IPDATA_API_KEY}`);\n const ipData = await res.json();\n ipData && observability.addIPDataTelemetryTags(ipData);\n } catch (err) {\n observability?.captureException(err);\n }\n return observability;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { Space } from '@dxos/client-protocol';\n\nexport type MapSpacesOptions = {\n verbose?: boolean;\n truncateKeys?: boolean;\n};\n\nexport const mapSpaces = (spaces: Space[], options: MapSpacesOptions = { verbose: false, truncateKeys: false }) => {\n return spaces.map((space) => {\n // TODO(burdon): Factor out.\n // TODO(burdon): Agent needs to restart before `ready` is available.\n const { open, ready } = space.internal.data.metrics ?? {};\n const startup = open && ready && ready.getTime() - open.getTime();\n\n // TODO(burdon): Get feeds from client-services if verbose (factor out from devtools/diagnostics).\n // const host = client.services.services.DevtoolsHost!;\n const pipeline = space.internal.data.pipeline;\n const startDataMutations = pipeline?.currentEpoch?.subject.assertion.timeframe.totalMessages() ?? 0;\n const epoch = pipeline?.currentEpoch?.subject.assertion.number;\n // const appliedEpoch = pipeline?.appliedEpoch?.subject.assertion.number;\n const currentDataMutations = pipeline?.currentDataTimeframe?.totalMessages() ?? 0;\n const totalDataMutations = pipeline?.targetDataTimeframe?.totalMessages() ?? 0;\n\n return {\n // TODO(nf): truncate keys for DD?\n key: space.key.truncate(),\n open: space.isOpen,\n members: space.members.get().length,\n objects: space.db.coreDatabase.getAllObjectIds().length,\n startup,\n epoch,\n // appliedEpoch,\n startDataMutations,\n currentDataMutations,\n totalDataMutations,\n\n // TODO(burdon): Negative?\n progress: (\n Math.min(Math.abs((currentDataMutations - startDataMutations) / (totalDataMutations - startDataMutations)), 1) *\n 100\n ).toFixed(0),\n };\n });\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { Client } from '@dxos/client';\n\nimport { getTelemetryIdentifier } from './common';\nimport type { Observability } from '../observability';\n\nlet lastFocusEvent = new Date();\nlet totalTime = 0;\n\nexport const setupTelemetryListeners = (namespace: string, client: Client, observability: Observability) => {\n const clickCallback = (event: Event) => {\n const id = (event.target as HTMLElement)?.id;\n if (!id) {\n return;\n }\n\n setTimeout(() =>\n observability.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.window.click`,\n properties: {\n href: window.location.href,\n id: (event.target as HTMLElement)?.id,\n path: (event.composedPath() as HTMLElement[])\n .filter((el) => Boolean(el.tagName))\n .map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ''}`)\n .reverse()\n .join('>'),\n },\n }),\n );\n };\n\n const focusCallback = () => {\n const now = new Date();\n setTimeout(() =>\n observability.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.window.focus`,\n properties: {\n href: window.location.href,\n timeAway: now.getTime() - lastFocusEvent.getTime(),\n },\n }),\n );\n lastFocusEvent = now;\n };\n\n const blurCallback = () => {\n const now = new Date();\n const timeSpent = now.getTime() - lastFocusEvent.getTime();\n setTimeout(() =>\n observability.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.window.blur`,\n properties: {\n href: window.location.href,\n timeSpent,\n },\n }),\n );\n lastFocusEvent = now;\n totalTime = totalTime + timeSpent;\n };\n\n const unloadCallback = () => {\n setTimeout(() =>\n observability.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.page.unload`,\n properties: {\n href: window.location.href,\n timeSpent: totalTime,\n },\n }),\n );\n };\n\n const errorCallback = (event: ErrorEvent) => {\n setTimeout(() =>\n observability.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.window.error`,\n properties: {\n href: window.location.href,\n message: event.message,\n filename: event.filename,\n stack: (event.error as Error).stack,\n },\n }),\n );\n };\n\n window.addEventListener('click', clickCallback, true);\n window.addEventListener('focus', focusCallback);\n window.addEventListener('blur', blurCallback);\n window.addEventListener('beforeunload', unloadCallback);\n window.addEventListener('error', errorCallback);\n\n return () => {\n window.removeEventListener('click', clickCallback, true);\n window.removeEventListener('focus', focusCallback);\n window.removeEventListener('blur', blurCallback);\n window.removeEventListener('beforeunload', unloadCallback);\n window.removeEventListener('error', errorCallback);\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Event", "scheduleTaskInterval", "Context", "invariant", "log", "ConnectionState", "DeviceKind", "Platform", "isNode", "localForage", "log", "OBSERVABILITY_DISABLED_KEY", "OBSERVABILITY_GROUP_KEY", "isObservabilityDisabled", "namespace", "getItem", "err", "catch", "storeObservabilityDisabled", "value", "setItem", "String", "getObservabilityGroup", "undefined", "storeObservabilityGroup", "initializeAppObservability", "config", "mode", "tracingEnable", "replayEnable", "group", "release", "get", "environment", "observabilityDisabled", "Observability", "observability", "errorLog", "sentryInitOptions", "tracing", "replay", "sampleRate", "replaySampleRate", "replaySampleRateOnError", "setMode", "info", "getIPData", "IP_DATA_CACHE_TIMEOUT", "cachedData", "timestamp", "Date", "now", "data", "IPDATA_API_KEY", "fetch", "then", "res", "json", "captureException", "initialize", "startErrorLogs", "ipData", "addIPDataTelemetryTags", "navigator", "storage", "estimate", "setInterval", "storageEstimate", "usage", "setTag", "toString", "quota", "error", "warn", "getTelemetryIdentifier", "client", "initialized", "undefined", "identity", "halo", "get", "identityKey", "truncate", "yaml", "existsSync", "statSync", "mkdir", "readFile", "writeFile", "join", "v4", "uuid", "validate", "validateUuid", "log", "showObservabilityBanner", "configDir", "bannercb", "path", "join", "existsSync", "writeFile", "getObservabilityState", "statSync", "isDirectory", "Error", "mkdir", "recursive", "idPath", "context", "readFile", "validate", "initializeState", "observabilityState", "installationId", "uuid", "group", "process", "env", "DX_OBSERVABILITY_GROUP", "undefined", "mode", "DX_DISABLE_OBSERVABILITY", "DX_OBSERVABILITY_MODE", "yaml", "dump", "contextString", "load", "Boolean", "validateUuid", "initializeNodeObservability", "namespace", "version", "config", "tracingEnable", "replayEnable", "log", "release", "environment", "DX_ENVIRONMENT", "observability", "Observability", "errorLog", "sentryInitOptions", "sampleRate", "setTag", "IPDATA_API_KEY", "get", "res", "fetch", "ipData", "json", "addIPDataTelemetryTags", "err", "captureException", "mapSpaces", "spaces", "options", "verbose", "truncateKeys", "map", "space", "open", "ready", "internal", "data", "metrics", "startup", "getTime", "pipeline", "startDataMutations", "currentEpoch", "subject", "assertion", "timeframe", "totalMessages", "epoch", "number", "currentDataMutations", "currentDataTimeframe", "totalDataMutations", "targetDataTimeframe", "key", "truncate", "isOpen", "members", "get", "length", "objects", "db", "coreDatabase", "getAllObjectIds", "progress", "Math", "min", "abs", "toFixed", "lastFocusEvent", "Date", "totalTime", "setupTelemetryListeners", "namespace", "client", "observability", "clickCallback", "event", "id", "target", "setTimeout", "identityId", "getTelemetryIdentifier", "name", "properties", "href", "window", "location", "path", "composedPath", "filter", "el", "Boolean", "tagName", "map", "toLowerCase", "reverse", "join", "focusCallback", "now", "timeAway", "getTime", "blurCallback", "timeSpent", "unloadCallback", "errorCallback", "message", "filename", "stack", "error", "addEventListener", "removeEventListener", "SPACE_METRICS_MIN_INTERVAL", "SPACE_TELEMETRY_MIN_INTERVAL", "NETWORK_METRICS_MIN_INTERVAL", "Observability", "constructor", "namespace", "environment", "release", "config", "secrets", "group", "mode", "telemetry", "errorLog", "_ctx", "Context", "_tags", "Map", "addIPDataTelemetryTags", "ipData", "setTag", "city", "region", "country", "latitude", "toString", "longitude", "_namespace", "_mode", "_config", "_group", "_secrets", "_loadSecrets", "_telemetryBatchSize", "batchSize", "_errorReportingOptions", "sentryInitOptions", "enabled", "isNode", "mergedSecrets", "buildSecrets", "process", "env", "DX_ENVIRONMENT", "DX_RELEASE", "SENTRY_DESTINATION", "TELEMETRY_API_KEY", "IPDATA_API_KEY", "DX_OTEL_ENDPOINT", "OTEL_ENDPOINT", "DX_OTEL_AUTHORIZATION", "OTEL_AUTHORIZATION", "log", "rtc", "get", "initialize", "_initMetrics", "_initTelemetry", "_initErrorLogs", "_initTraces", "close", "closes", "_telemetry", "push", "_otelMetrics", "_otelLogs", "Promise", "all", "dispose", "setMode", "key", "value", "scope", "undefined", "_setTag", "set", "getTag", "setIdentityTags", "clientServices", "IdentityService", "queryIdentity", "subscribe", "idqr", "identity", "identityKey", "truncate", "DevicesService", "queryDevices", "dqr", "devices", "length", "device", "invariant", "thisDevice", "find", "kind", "DeviceKind", "CURRENT", "deviceKey", "profile", "label", "OtelMetrics", "endpoint", "authorizationHeader", "serviceName", "serviceVersion", "getTags", "Object", "fromEntries", "Array", "from", "filter", "map", "gauge", "name", "extraTags", "startNetworkMetrics", "NetworkService", "updateSignalMetrics", "Event", "debounce", "on", "_lastNetworkStatus", "signaling", "forEach", "server", "state", "swarmCount", "connectionStates", "ConnectionState", "totalReadBufferSize", "totalWriteBufferSize", "totalChannelBufferSize", "connectionInfo", "conn", "connections", "readBufferSize", "writeBufferSize", "stream", "streams", "queryStatus", "networkStatus", "emit", "scheduleTaskInterval", "startSpacesMetrics", "client", "spaces", "subscriptions", "onDispose", "subscription", "unsubscribe", "updateSpaceMetrics", "data", "mapSpaces", "truncateKeys", "members", "objects", "epoch", "currentDataMutations", "updateSpaceTelemetry", "event", "identityId", "getTelemetryIdentifier", "properties", "subscribeToSpaceUpdate", "space", "pipeline", "next", "toHex", "has", "startRuntimeMetrics", "frequency", "platform", "services", "SystemService", "getPlatform", "Platform", "PLATFORM_TYPE", "type", "toLowerCase", "arch", "runtime", "memory", "window", "performance", "totalJSHeapSize", "usedJSHeapSize", "jsHeapSizeLimit", "then", "rss", "heapTotal", "heapUsed", "catch", "error", "SegmentTelemetry", "apiKey", "options", "page", "captureException", "captureUserFeedback", "init", "SentryLogProcessor", "_captureException", "_captureUserFeedback", "info", "dest", "_sentryLogProcessor", "destination", "scrubFilenames", "onError", "addLogBreadcrumbsTo", "v", "k", "OtelLogs", "startErrorLogs", "runtimeConfig", "processors", "logProcessor", "startTraces", "_otelTraces", "start", "OtelTraces", "err", "email", "message"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
1
3
|
// packages/sdk/observability/src/sentry/node.ts
|
|
2
4
|
import { init as naturalInit, setTag, addBreadcrumb as naturalAddBreadcrumb, captureException as naturalCaptureException, captureMessage as naturalCaptureMessage, withScope as naturalWithScope, metrics, startInactiveSpan } from "@sentry/node";
|
|
3
5
|
import { log } from "@dxos/log";
|
|
@@ -128,4 +130,4 @@ export {
|
|
|
128
130
|
setTags,
|
|
129
131
|
setUser
|
|
130
132
|
};
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
133
|
+
//# sourceMappingURL=chunk-CMDADTM3.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/sentry/node.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport {\n type Event,\n init as naturalInit,\n setTag,\n addBreadcrumb as naturalAddBreadcrumb,\n captureException as naturalCaptureException,\n captureMessage as naturalCaptureMessage,\n withScope as naturalWithScope,\n metrics,\n startInactiveSpan,\n} from '@sentry/node';\n\nimport { log } from '@dxos/log';\nimport { TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type InitOptions } from './types';\n\n// Polyfill export.\nexport { setTag, setTags, setUser } from '@sentry/node';\n\n/**\n * To use this SDK, call the init function as early as possible in the main entry module.\n * To set context information or send manual events, use the provided methods.\n *\n * @param options {InitOptions}\n */\nexport const init = (options: InitOptions) => {\n try {\n naturalInit({\n enabled: options.enable ?? true,\n dsn: options.destination,\n serverName: options.installationId,\n release: options.release,\n environment: options.environment ?? process.env.DX_ENVIRONMENT,\n integrations: [],\n tracesSampleRate: options.sampleRate,\n transport: options.transport,\n beforeSend: (event) => {\n options.scrubFilenames && scrub(event);\n options.onError?.(event);\n\n return event;\n },\n });\n\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: startInactiveSpan,\n });\n\n Object.entries(options.properties ?? {}).forEach(([key, value]) => {\n setTag(key, value);\n });\n } catch (err) {\n log.catch('Failed to initialize sentry', err);\n }\n};\n\nconst scrub = (event: Event) => {\n event.exception?.values?.forEach((value) => {\n value.stacktrace?.frames?.forEach((frame) => {\n const filename = frame.filename?.split('/');\n frame.filename = filename && filename[filename.length - 1];\n });\n });\n};\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on user's actions prior to an error or crash.\n *\n * https://docs.sentry.io/platforms/javascript/enriching-events/breadcrumbs/\n *\n * @param breadcrumb — The breadcrumb to record.\n */\nexport const addBreadcrumb: typeof naturalAddBreadcrumb = (breadcrumb) => {\n try {\n naturalAddBreadcrumb(breadcrumb);\n log('add breadcrumb', breadcrumb);\n } catch (err) {\n log.catch('Failed to add breadcrumb', err);\n }\n};\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception — An exception-like object.\n * @param captureContext — Additional scope data to apply to exception event.\n * @returns — The generated eventId.\n */\nexport const captureException: typeof naturalCaptureException = (exception, captureContext) => {\n try {\n const eventId = naturalCaptureException(exception, captureContext);\n log('capture exception', { exception, eventId, ...captureContext });\n return eventId;\n } catch (err) {\n log.catch('Failed to capture exception', err);\n return 'unknown';\n }\n};\n\nexport const captureMessage: typeof naturalCaptureMessage = (exception, captureContext) => {\n try {\n const eventId = naturalCaptureMessage(exception, captureContext);\n log('capture message', { exception, eventId, captureContext });\n return eventId;\n } catch (err) {\n log.catch('Failed to capture message', err);\n return 'unknown';\n }\n};\n\nexport const captureUserFeedback = (name: string, email: string, message: string): Promise<void> => {\n const feedback = `User feedback: ${name} ${email} ${message}`;\n throw new Error(`Capture user feedback not implemented in node. Use @sentry/browser. Message: ${feedback}`);\n};\n\nexport const withScope = naturalWithScope;\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;AAIA,SAEEA,QAAQC,aACRC,QACAC,iBAAiBC,sBACjBC,oBAAoBC,yBACpBC,kBAAkBC,uBAClBC,aAAaC,kBACbC,SACAC,yBACK;AAEP,SAASC,WAAW;AACpB,SAASC,uBAAuB;AAKhC,SAASZ,UAAAA,SAAQa,SAASC,eAAe;;AAQlC,IAAMhB,OAAO,CAACiB,YAAAA;AACnB,MAAI;AACFhB,gBAAY;MACViB,SAASD,QAAQE,UAAU;MAC3BC,KAAKH,QAAQI;MACbC,YAAYL,QAAQM;MACpBC,SAASP,QAAQO;MACjBC,aAAaR,QAAQQ,eAAeC,QAAQC,IAAIC;MAChDC,cAAc,CAAA;MACdC,kBAAkBb,QAAQc;MAC1BC,WAAWf,QAAQe;MACnBC,YAAY,CAACC,UAAAA;AACXjB,gBAAQkB,kBAAkBC,MAAMF,KAAAA;AAChCjB,gBAAQoB,UAAUH,KAAAA;AAElB,eAAOA;MACT;IACF,CAAA;AAEApB,oBAAgBwB,cAAcC,kBAAkB5B,OAAAA;AAChDG,oBAAgB0B,cAAcD,kBAAkB;MAC9CE,WAAW7B;IACb,CAAA;AAEA8B,WAAOC,QAAQ1B,QAAQ2B,cAAc,CAAC,CAAA,EAAGC,QAAQ,CAAC,CAACC,KAAKC,KAAAA,MAAM;AAC5D7C,aAAO4C,KAAKC,KAAAA;IACd,CAAA;EACF,SAASC,KAAK;AACZnC,QAAIoC,MAAM,+BAA+BD,KAAAA;;;;;;EAC3C;AACF;AAEA,IAAMZ,QAAQ,CAACF,UAAAA;AACbA,QAAMgB,WAAWC,QAAQN,QAAQ,CAACE,UAAAA;AAChCA,UAAMK,YAAYC,QAAQR,QAAQ,CAACS,UAAAA;AACjC,YAAMC,WAAWD,MAAMC,UAAUC,MAAM,GAAA;AACvCF,YAAMC,WAAWA,YAAYA,SAASA,SAASE,SAAS,CAAA;IAC1D,CAAA;EACF,CAAA;AACF;AAWO,IAAMtD,gBAA6C,CAACuD,eAAAA;AACzD,MAAI;AACFtD,yBAAqBsD,UAAAA;AACrB7C,QAAI,kBAAkB6C,YAAAA;;;;;;EACxB,SAASV,KAAK;AACZnC,QAAIoC,MAAM,4BAA4BD,KAAAA;;;;;;EACxC;AACF;AASO,IAAM3C,mBAAmD,CAAC6C,WAAWS,mBAAAA;AAC1E,MAAI;AACF,UAAMC,UAAUtD,wBAAwB4C,WAAWS,cAAAA;AACnD9C,QAAI,qBAAqB;MAAEqC;MAAWU;MAAS,GAAGD;IAAe,GAAA;;;;;;AACjE,WAAOC;EACT,SAASZ,KAAK;AACZnC,QAAIoC,MAAM,+BAA+BD,KAAAA;;;;;;AACzC,WAAO;EACT;AACF;AAEO,IAAMzC,iBAA+C,CAAC2C,WAAWS,mBAAAA;AACtE,MAAI;AACF,UAAMC,UAAUpD,sBAAsB0C,WAAWS,cAAAA;AACjD9C,QAAI,mBAAmB;MAAEqC;MAAWU;MAASD;IAAe,GAAA;;;;;;AAC5D,WAAOC;EACT,SAASZ,KAAK;AACZnC,QAAIoC,MAAM,6BAA6BD,KAAAA;;;;;;AACvC,WAAO;EACT;AACF;AAEO,IAAMa,sBAAsB,CAACC,MAAcC,OAAeC,YAAAA;AAC/D,QAAMC,WAAW,kBAAkBH,IAAAA,IAAQC,KAAAA,IAASC,OAAAA;AACpD,QAAM,IAAIE,MAAM,gFAAgFD,QAAAA,EAAU;AAC5G;AAEO,IAAMxD,YAAYC;",
|
|
6
6
|
"names": ["init", "naturalInit", "setTag", "addBreadcrumb", "naturalAddBreadcrumb", "captureException", "naturalCaptureException", "captureMessage", "naturalCaptureMessage", "withScope", "naturalWithScope", "metrics", "startInactiveSpan", "log", "TRACE_PROCESSOR", "setTags", "setUser", "options", "enabled", "enable", "dsn", "destination", "serverName", "installationId", "release", "environment", "process", "env", "DX_ENVIRONMENT", "integrations", "tracesSampleRate", "sampleRate", "transport", "beforeSend", "event", "scrubFilenames", "scrub", "onError", "remoteMetrics", "registerProcessor", "remoteTracing", "startSpan", "Object", "entries", "properties", "forEach", "key", "value", "err", "catch", "exception", "values", "stacktrace", "frames", "frame", "filename", "split", "length", "breadcrumb", "captureContext", "eventId", "captureUserFeedback", "name", "email", "message", "feedback", "Error"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
1
2
|
import {
|
|
2
3
|
OBSERVABILITY_DISABLED_KEY,
|
|
3
4
|
OBSERVABILITY_GROUP_KEY,
|
|
@@ -13,7 +14,7 @@ import {
|
|
|
13
14
|
showObservabilityBanner,
|
|
14
15
|
storeObservabilityDisabled,
|
|
15
16
|
storeObservabilityGroup
|
|
16
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-BHETLWXO.mjs";
|
|
17
18
|
export {
|
|
18
19
|
OBSERVABILITY_DISABLED_KEY,
|
|
19
20
|
OBSERVABILITY_GROUP_KEY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/sdk/observability/src/cli-observability-secrets.json":{"bytes":316,"imports":[]},"packages/sdk/observability/src/otel/otel.ts":{"bytes":1960,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/otel/logs.ts":{"bytes":10297,"imports":[{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/otel/metrics.ts":{"bytes":14358,"imports":[{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/otel/traces.ts":{"bytes":6856,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"debug","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/otel/index.ts":{"bytes":744,"imports":[{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"},{"path":"packages/sdk/observability/src/otel/logs.ts","kind":"import-statement","original":"./logs"},{"path":"packages/sdk/observability/src/otel/metrics.ts","kind":"import-statement","original":"./metrics"},{"path":"packages/sdk/observability/src/otel/traces.ts","kind":"import-statement","original":"./traces"}],"format":"esm"},"packages/sdk/observability/src/sentry/node.ts":{"bytes":14071,"imports":[{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1065,"imports":[],"format":"esm"},"packages/sdk/observability/src/sentry/index.ts":{"bytes":578,"imports":[{"path":"packages/sdk/observability/src/sentry/node.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/sentry/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/segment/node.ts":{"bytes":9871,"imports":[{"path":"@segment/analytics-node","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"import-statement","original":"../sentry"}],"format":"esm"},"packages/sdk/observability/src/segment/types.ts":{"bytes":1070,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":579,"imports":[{"path":"packages/sdk/observability/src/segment/node.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/segment/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/sentry/sentry-log-processor.ts":{"bytes":18274,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/node.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/observability.ts":{"bytes":73787,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/cli-observability-secrets.json","kind":"import-statement","original":"./cli-observability-secrets.json"},{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"},{"path":"packages/sdk/observability/src/segment/index.ts","kind":"dynamic-import","original":"./segment"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"dynamic-import","original":"./sentry"},{"path":"packages/sdk/observability/src/sentry/sentry-log-processor.ts","kind":"dynamic-import","original":"./sentry/sentry-log-processor"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytes":19735,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/observability.ts","kind":"dynamic-import","original":"../observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/common.ts":{"bytes":2674,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytes":14364,"imports":[{"path":"js-yaml","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"../observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytes":6449,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytes":11391,"imports":[{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"}],"format":"esm"},"packages/sdk/observability/src/helpers/index.ts":{"bytes":966,"imports":[{"path":"packages/sdk/observability/src/helpers/browser-observability.ts","kind":"import-statement","original":"./browser-observability"},{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/observability/src/helpers/node-observability.ts","kind":"import-statement","original":"./node-observability"},{"path":"packages/sdk/observability/src/helpers/map-spaces.ts","kind":"import-statement","original":"./map-spaces"},{"path":"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts","kind":"import-statement","original":"./setup-telemetry-listeners"}],"format":"esm"},"packages/sdk/observability/src/index.ts":{"bytes":598,"imports":[{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"./observability"}],"format":"esm"}},"outputs":{"packages/sdk/observability/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-6DGCS5IE.mjs","kind":"import-statement"}],"exports":["OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getObservabilityState","getTelemetryIdentifier","initializeAppObservability","initializeNodeObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","showObservabilityBanner","storeObservabilityDisabled","storeObservabilityGroup"],"entryPoint":"packages/sdk/observability/src/index.ts","inputs":{"packages/sdk/observability/src/index.ts":{"bytesInOutput":0}},"bytes":809},"packages/sdk/observability/dist/lib/node-esm/segment/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4166},"packages/sdk/observability/dist/lib/node-esm/segment/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-KDP3SESE.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-YEQOSJSQ.mjs","kind":"import-statement"},{"path":"@segment/analytics-node","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["SegmentTelemetry"],"entryPoint":"packages/sdk/observability/src/segment/index.ts","inputs":{"packages/sdk/observability/src/segment/node.ts":{"bytesInOutput":2875},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0}},"bytes":3084},"packages/sdk/observability/dist/lib/node-esm/sentry/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/sentry/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-KDP3SESE.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-YEQOSJSQ.mjs","kind":"import-statement"}],"exports":["addBreadcrumb","captureException","captureMessage","captureUserFeedback","init","setTag","setTags","setUser","withScope"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":380},"packages/sdk/observability/dist/lib/node-esm/chunk-KDP3SESE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/chunk-KDP3SESE.mjs":{"imports":[],"exports":[],"inputs":{"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0}},"bytes":44},"packages/sdk/observability/dist/lib/node-esm/otel-DJUW53OF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17168},"packages/sdk/observability/dist/lib/node-esm/otel-DJUW53OF.mjs":{"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"debug","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"exports":["OtelLogs","OtelMetrics","OtelTraces","setDiagLogger"],"entryPoint":"packages/sdk/observability/src/otel/index.ts","inputs":{"packages/sdk/observability/src/otel/otel.ts":{"bytesInOutput":229},"packages/sdk/observability/src/otel/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/otel/logs.ts":{"bytesInOutput":2362},"packages/sdk/observability/src/otel/metrics.ts":{"bytesInOutput":3528},"packages/sdk/observability/src/otel/traces.ts":{"bytesInOutput":1698}},"bytes":8125},"packages/sdk/observability/dist/lib/node-esm/sentry-log-processor-HEWW7T3S.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9374},"packages/sdk/observability/dist/lib/node-esm/sentry-log-processor-HEWW7T3S.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-YEQOSJSQ.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SentryLogProcessor"],"entryPoint":"packages/sdk/observability/src/sentry/sentry-log-processor.ts","inputs":{"packages/sdk/observability/src/sentry/sentry-log-processor.ts":{"bytesInOutput":4262}},"bytes":4510},"packages/sdk/observability/dist/lib/node-esm/chunk-YEQOSJSQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6690},"packages/sdk/observability/dist/lib/node-esm/chunk-YEQOSJSQ.mjs":{"imports":[{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true}],"exports":["addBreadcrumb","captureException","captureMessage","captureUserFeedback","init","setTag","setTags","setUser","withScope"],"inputs":{"packages/sdk/observability/src/sentry/node.ts":{"bytesInOutput":3389}},"bytes":3636},"packages/sdk/observability/dist/lib/node-esm/observability-UQRA6FNY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/observability-UQRA6FNY.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-6DGCS5IE.mjs","kind":"import-statement"}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/observability.ts","inputs":{},"bytes":136},"packages/sdk/observability/dist/lib/node-esm/chunk-6DGCS5IE.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":62329},"packages/sdk/observability/dist/lib/node-esm/chunk-6DGCS5IE.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/dist/lib/node-esm/observability-UQRA6FNY.mjs","kind":"dynamic-import"},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/dist/lib/node-esm/otel-DJUW53OF.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/segment/index.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/sentry/index.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/sentry-log-processor-HEWW7T3S.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/otel-DJUW53OF.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/otel-DJUW53OF.mjs","kind":"dynamic-import"}],"exports":["OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getObservabilityState","getTelemetryIdentifier","initializeAppObservability","initializeNodeObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","showObservabilityBanner","storeObservabilityDisabled","storeObservabilityGroup"],"inputs":{"packages/sdk/observability/src/observability.ts":{"bytesInOutput":18654},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytesInOutput":348},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytesInOutput":4808},"packages/sdk/observability/src/helpers/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/helpers/common.ts":{"bytesInOutput":229},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytesInOutput":3415},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytesInOutput":1192},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytesInOutput":2657}},"bytes":32205}}}
|
|
1
|
+
{"inputs":{"packages/sdk/observability/src/cli-observability-secrets.json":{"bytes":316,"imports":[]},"packages/sdk/observability/src/otel/otel.ts":{"bytes":1960,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/otel/logs.ts":{"bytes":10297,"imports":[{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/otel/metrics.ts":{"bytes":14358,"imports":[{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/otel/traces.ts":{"bytes":6856,"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"debug","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/otel/index.ts":{"bytes":744,"imports":[{"path":"packages/sdk/observability/src/otel/otel.ts","kind":"import-statement","original":"./otel"},{"path":"packages/sdk/observability/src/otel/logs.ts","kind":"import-statement","original":"./logs"},{"path":"packages/sdk/observability/src/otel/metrics.ts","kind":"import-statement","original":"./metrics"},{"path":"packages/sdk/observability/src/otel/traces.ts","kind":"import-statement","original":"./traces"}],"format":"esm"},"packages/sdk/observability/src/sentry/node.ts":{"bytes":14071,"imports":[{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1065,"imports":[],"format":"esm"},"packages/sdk/observability/src/sentry/index.ts":{"bytes":578,"imports":[{"path":"packages/sdk/observability/src/sentry/node.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/sentry/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/segment/node.ts":{"bytes":9871,"imports":[{"path":"@segment/analytics-node","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"import-statement","original":"../sentry"}],"format":"esm"},"packages/sdk/observability/src/segment/types.ts":{"bytes":1070,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":579,"imports":[{"path":"packages/sdk/observability/src/segment/node.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/segment/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/sdk/observability/src/sentry/sentry-log-processor.ts":{"bytes":18274,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/node.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/observability.ts":{"bytes":73787,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/cli-observability-secrets.json","kind":"import-statement","original":"./cli-observability-secrets.json"},{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"},{"path":"packages/sdk/observability/src/segment/index.ts","kind":"dynamic-import","original":"./segment"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"dynamic-import","original":"./sentry"},{"path":"packages/sdk/observability/src/sentry/sentry-log-processor.ts","kind":"dynamic-import","original":"./sentry/sentry-log-processor"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"},{"path":"packages/sdk/observability/src/otel/index.ts","kind":"dynamic-import","original":"./otel"}],"format":"esm"},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytes":19735,"imports":[{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/observability.ts","kind":"dynamic-import","original":"../observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/common.ts":{"bytes":2674,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytes":14364,"imports":[{"path":"js-yaml","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"../observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytes":6449,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytes":11391,"imports":[{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"}],"format":"esm"},"packages/sdk/observability/src/helpers/index.ts":{"bytes":966,"imports":[{"path":"packages/sdk/observability/src/helpers/browser-observability.ts","kind":"import-statement","original":"./browser-observability"},{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"},{"path":"packages/sdk/observability/src/helpers/node-observability.ts","kind":"import-statement","original":"./node-observability"},{"path":"packages/sdk/observability/src/helpers/map-spaces.ts","kind":"import-statement","original":"./map-spaces"},{"path":"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts","kind":"import-statement","original":"./setup-telemetry-listeners"}],"format":"esm"},"packages/sdk/observability/src/index.ts":{"bytes":598,"imports":[{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"./observability"}],"format":"esm"}},"outputs":{"packages/sdk/observability/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-BHETLWXO.mjs","kind":"import-statement"}],"exports":["OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getObservabilityState","getTelemetryIdentifier","initializeAppObservability","initializeNodeObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","showObservabilityBanner","storeObservabilityDisabled","storeObservabilityGroup"],"entryPoint":"packages/sdk/observability/src/index.ts","inputs":{"packages/sdk/observability/src/index.ts":{"bytesInOutput":0}},"bytes":901},"packages/sdk/observability/dist/lib/node-esm/segment/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4167},"packages/sdk/observability/dist/lib/node-esm/segment/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-YJ4KVBWC.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-CMDADTM3.mjs","kind":"import-statement"},{"path":"@segment/analytics-node","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["SegmentTelemetry"],"entryPoint":"packages/sdk/observability/src/segment/index.ts","inputs":{"packages/sdk/observability/src/segment/node.ts":{"bytesInOutput":2875},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0}},"bytes":3176},"packages/sdk/observability/dist/lib/node-esm/sentry/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/sentry/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-YJ4KVBWC.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-CMDADTM3.mjs","kind":"import-statement"}],"exports":["addBreadcrumb","captureException","captureMessage","captureUserFeedback","init","setTag","setTags","setUser","withScope"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":472},"packages/sdk/observability/dist/lib/node-esm/chunk-YJ4KVBWC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/chunk-YJ4KVBWC.mjs":{"imports":[],"exports":[],"inputs":{"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0}},"bytes":136},"packages/sdk/observability/dist/lib/node-esm/otel-YI7HAFOG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17170},"packages/sdk/observability/dist/lib/node-esm/otel-YI7HAFOG.mjs":{"imports":[{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/api-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-logs-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-logs","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-metrics-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-metrics","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@opentelemetry/api","kind":"import-statement","external":true},{"path":"@opentelemetry/exporter-trace-otlp-http","kind":"import-statement","external":true},{"path":"@opentelemetry/resources","kind":"import-statement","external":true},{"path":"@opentelemetry/sdk-trace-base","kind":"import-statement","external":true},{"path":"@opentelemetry/semantic-conventions","kind":"import-statement","external":true},{"path":"debug","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true}],"exports":["OtelLogs","OtelMetrics","OtelTraces","setDiagLogger"],"entryPoint":"packages/sdk/observability/src/otel/index.ts","inputs":{"packages/sdk/observability/src/otel/otel.ts":{"bytesInOutput":229},"packages/sdk/observability/src/otel/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/otel/logs.ts":{"bytesInOutput":2362},"packages/sdk/observability/src/otel/metrics.ts":{"bytesInOutput":3528},"packages/sdk/observability/src/otel/traces.ts":{"bytesInOutput":1698}},"bytes":8218},"packages/sdk/observability/dist/lib/node-esm/sentry-log-processor-JYJH3AMG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9375},"packages/sdk/observability/dist/lib/node-esm/sentry-log-processor-JYJH3AMG.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-CMDADTM3.mjs","kind":"import-statement"},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SentryLogProcessor"],"entryPoint":"packages/sdk/observability/src/sentry/sentry-log-processor.ts","inputs":{"packages/sdk/observability/src/sentry/sentry-log-processor.ts":{"bytesInOutput":4262}},"bytes":4602},"packages/sdk/observability/dist/lib/node-esm/chunk-CMDADTM3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6692},"packages/sdk/observability/dist/lib/node-esm/chunk-CMDADTM3.mjs":{"imports":[{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true}],"exports":["addBreadcrumb","captureException","captureMessage","captureUserFeedback","init","setTag","setTags","setUser","withScope"],"inputs":{"packages/sdk/observability/src/sentry/node.ts":{"bytesInOutput":3389}},"bytes":3729},"packages/sdk/observability/dist/lib/node-esm/observability-QJFZLUL4.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node-esm/observability-QJFZLUL4.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node-esm/chunk-BHETLWXO.mjs","kind":"import-statement"}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/observability.ts","inputs":{},"bytes":228},"packages/sdk/observability/dist/lib/node-esm/chunk-BHETLWXO.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":62331},"packages/sdk/observability/dist/lib/node-esm/chunk-BHETLWXO.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/network-manager","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"localforage","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/dist/lib/node-esm/observability-QJFZLUL4.mjs","kind":"dynamic-import"},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"node:fs","kind":"import-statement","external":true},{"path":"node:fs/promises","kind":"import-statement","external":true},{"path":"node:path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/dist/lib/node-esm/otel-YI7HAFOG.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/segment/index.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/sentry/index.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/sentry-log-processor-JYJH3AMG.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/otel-YI7HAFOG.mjs","kind":"dynamic-import"},{"path":"packages/sdk/observability/dist/lib/node-esm/otel-YI7HAFOG.mjs","kind":"dynamic-import"}],"exports":["OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getObservabilityState","getTelemetryIdentifier","initializeAppObservability","initializeNodeObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","showObservabilityBanner","storeObservabilityDisabled","storeObservabilityGroup"],"inputs":{"packages/sdk/observability/src/observability.ts":{"bytesInOutput":18654},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytesInOutput":348},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytesInOutput":4808},"packages/sdk/observability/src/helpers/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/helpers/common.ts":{"bytesInOutput":229},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytesInOutput":3415},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytesInOutput":1192},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytesInOutput":2657}},"bytes":32298}}}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
1
3
|
// packages/sdk/observability/src/otel/otel.ts
|
|
2
4
|
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
|
|
3
5
|
var setDiagLogger = (level) => {
|
|
@@ -253,4 +255,4 @@ export {
|
|
|
253
255
|
OtelTraces,
|
|
254
256
|
setDiagLogger
|
|
255
257
|
};
|
|
256
|
-
//# sourceMappingURL=otel-
|
|
258
|
+
//# sourceMappingURL=otel-YI7HAFOG.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/otel/otel.ts", "../../../src/otel/logs.ts", "../../../src/otel/metrics.ts", "../../../src/otel/traces.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api';\n\nexport type OtelOptions = {\n endpoint: string;\n authorizationHeader: string;\n serviceName: string; // For the Otel API, the name of the entity for which signals (metrics or trace) are collected.\n serviceVersion: string; // For the Otel API, The name of the entity for which signals (metrics or trace) are collected.\n getTags: () => { [key: string]: string };\n consoleDiagLogLevel?: string;\n};\n\nexport const setDiagLogger = (level?: string) => {\n const logLevel = DiagLogLevel[level as keyof typeof DiagLogLevel];\n if (logLevel) {\n diag.setLogger(new DiagConsoleLogger(), logLevel);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n getContextFromEntry,\n getRelativeFilename,\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n shouldLog,\n} from '@dxos/log';\nimport { jsonlogify } from '@dxos/util';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nexport class OtelLogs {\n private _loggerProvider: LoggerProvider;\n constructor(private readonly options: OtelOptions) {\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n const logExporter = new OTLPLogExporter({\n url: this.options.endpoint + '/v1/logs',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n });\n this._loggerProvider = new LoggerProvider({ resource });\n this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));\n }\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const logger = this._loggerProvider.getLogger('dxos-observability', this.options.serviceVersion);\n\n if (!shouldLog(entry, config.captureFilters) || entry.meta?.S?.remoteSessionId) {\n return;\n }\n const record = {\n ...entry,\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n context: jsonlogify(getContextFromEntry(entry)),\n };\n\n logger.emit({\n severityNumber: convertLevel(entry.level),\n body: JSON.stringify(record),\n attributes: this.options.getTags(),\n });\n };\n\n flush() {\n return this._loggerProvider.forceFlush();\n }\n\n close() {\n return this._loggerProvider.shutdown();\n }\n}\n\nconst convertLevel = (level: LogLevel): SeverityNumber => {\n switch (level) {\n case LogLevel.DEBUG:\n return SeverityNumber.DEBUG;\n case LogLevel.INFO:\n return SeverityNumber.INFO;\n case LogLevel.WARN:\n return SeverityNumber.WARN;\n case LogLevel.ERROR:\n return SeverityNumber.ERROR;\n default:\n return SeverityNumber.ERROR;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Attributes, type Meter, type ObservableGauge } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { TRACE_PROCESSOR, type MetricData } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\ntype SynchronousGauge = {\n gauge: ObservableGauge<Attributes>;\n nextValue: number;\n nextTags?: any;\n};\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\n private _gauges = new Map<string, SynchronousGauge>();\n\n constructor(private readonly options: OtelOptions) {\n // TODO: improve error handling/logging\n // https://github.com/open-telemetry/opentelemetry-js/issues/4823\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource,\n readers: [grafanaMetricReader],\n });\n this._meter = this._meterProvider.getMeter('dxos-observability');\n\n const metrics = {\n // TODO: update metrics names and remove prefix?\n increment: (name: string, value?: number, data?: MetricData) => {\n this.increment(name, value, convertTags(data));\n },\n distribution: (name: string, value: number, data?: MetricData) => {\n this.distribution(name, value, convertTags(data));\n },\n set: (name: string, value: number | string, data?: MetricData) => {\n // Not implemented, not part of Otel spec.\n },\n gauge: (name: string, value: number, data?: MetricData) => {\n this.gauge(name, value, convertTags(data));\n },\n };\n\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n }\n\n gauge(name: string, value: number, tags?: any) {\n const gauge = this._meter.createGauge(name);\n log('otel gauge', { name, value, tags: { ...this.options.getTags(), ...tags } });\n gauge.record(value, { ...this.options.getTags(), ...tags });\n }\n\n increment(name: string, value?: number, tags?: any) {\n const counter = this._meter.createCounter(name);\n log('otel counter', { name, value, tags: { ...this.options.getTags(), ...tags } });\n counter.add(value ?? 1, { ...this.options.getTags(), ...tags });\n }\n\n distribution(name: string, value: number, tags?: any) {\n const distribution = this._meter.createHistogram(name);\n log('otel distribution', { name, value, tags: { ...this.options.getTags(), ...tags } });\n distribution.record(value, { ...this.options.getTags(), ...tags });\n }\n\n flush() {\n return this._meterProvider.forceFlush();\n }\n\n close() {\n return this._meterProvider.shutdown();\n }\n}\n\nconst convertTags = (data?: MetricData) => {\n if (data && data.tags) {\n return Object.entries(data.tags).reduce<{ [key: string]: any }>((obj, [key, value]) => {\n obj[key] = value;\n return obj;\n }, {});\n } else {\n return {};\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { trace, type Tracer } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { Resource } from '@opentelemetry/resources';\nimport {\n BasicTracerProvider,\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { log } from 'debug';\n\nimport { TRACE_PROCESSOR, type StartSpanOptions } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n constructor(private readonly options: OtelOptions) {\n const resource = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const tracerProvider = new BasicTracerProvider({ resource });\n tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));\n tracerProvider.addSpanProcessor(\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n }),\n ),\n );\n tracerProvider.register();\n this._tracer = trace.getTracer('dxos-observability', this.options.serviceVersion);\n }\n\n public start() {\n log('trace processor registered');\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n return this._tracer.startSpan(options.name, options);\n },\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["diag", "DiagConsoleLogger", "DiagLogLevel", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "SeverityNumber", "OTLPLogExporter", "Resource", "BatchLogRecordProcessor", "LoggerProvider", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "getContextFromEntry", "getRelativeFilename", "LogLevel", "shouldLog", "jsonlogify", "OtelLogs", "constructor", "options", "logProcessor", "config", "entry", "logger", "_loggerProvider", "getLogger", "serviceVersion", "shouldLog", "captureFilters", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "level", "body", "JSON", "stringify", "attributes", "getTags", "setDiagLogger", "consoleDiagLogLevel", "resource", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "addLogRecordProcessor", "BatchLogRecordProcessor", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "INFO", "WARN", "ERROR", "OTLPMetricExporter", "Resource", "MeterProvider", "PeriodicExportingMetricReader", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "OtelMetrics", "constructor", "options", "_gauges", "Map", "setDiagLogger", "consoleDiagLogLevel", "resource", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "exportIntervalMillis", "_meterProvider", "MeterProvider", "readers", "_meter", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "getTags", "record", "counter", "createCounter", "add", "createHistogram", "flush", "forceFlush", "close", "shutdown", "Object", "entries", "reduce", "obj", "key", "trace", "OTLPTraceExporter", "Resource", "BasicTracerProvider", "BatchSpanProcessor", "ConsoleSpanExporter", "SimpleSpanProcessor", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "OtelTraces", "constructor", "options", "resource", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "tracerProvider", "BasicTracerProvider", "addSpanProcessor", "SimpleSpanProcessor", "ConsoleSpanExporter", "BatchSpanProcessor", "OTLPTraceExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "register", "_tracer", "trace", "getTracer", "start", "log", "TRACE_PROCESSOR", "remoteTracing", "registerProcessor", "startSpan", "name"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import "../chunk-YJ4KVBWC.mjs";
|
|
2
3
|
import {
|
|
3
4
|
captureException
|
|
4
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-CMDADTM3.mjs";
|
|
5
6
|
|
|
6
7
|
// packages/sdk/observability/src/segment/node.ts
|
|
7
8
|
import { Analytics } from "@segment/analytics-node";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/segment/node.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Analytics } from '@segment/analytics-node';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport type { EventOptions, SegmentTelemetryOptions, PageOptions } from './types';\nimport { captureException } from '../sentry';\n\nexport class SegmentTelemetry {\n private _analytics?: Analytics;\n private _getTags: () => { [key: string]: string };\n\n constructor({ apiKey, batchSize, getTags }: SegmentTelemetryOptions) {\n this._getTags = getTags;\n try {\n invariant(apiKey, 'Key required to send telemetry');\n\n this._analytics = new Analytics({\n writeKey: apiKey,\n flushAt: batchSize,\n });\n } catch (err) {\n log.catch('Failed to initialize telemetry', err);\n }\n }\n\n /**\n * Track a page view.\n */\n page({ installationId: anonymousId, identityId: userId, ...options }: PageOptions = {}) {\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'page' });\n return;\n }\n\n try {\n this._analytics.page({\n ...options,\n userId,\n anonymousId: anonymousId!,\n });\n } catch (err) {\n log.catch('Failed to track page', err);\n }\n }\n\n /**\n * Track an event.\n */\n event({ installationId: anonymousId, identityId: userId, name: event, ...options }: EventOptions) {\n log('sending event to telemetry', { event, options, tags: this._getTags() });\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'event' });\n return;\n }\n\n try {\n this._analytics.track({\n ...options,\n properties: { ...options.properties, ...this._getTags() },\n userId,\n anonymousId: anonymousId!,\n event,\n });\n } catch (err) {\n log.catch('Failed to track event', err);\n }\n }\n\n /**\n * Flush the event queue.\n */\n async flush() {\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'flush' });\n return;\n }\n\n try {\n await this._analytics.flush();\n } catch (err) {\n // are these errors worth capturing?\n captureException(err);\n }\n }\n\n async close() {\n if (!this._analytics) {\n return;\n }\n await this._analytics.closeAndFlush();\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;AAIA,SAASA,iBAAiB;AAE1B,SAASC,iBAAiB;AAC1B,SAASC,WAAW;;AAKb,IAAMC,mBAAN,MAAMA;EAIXC,YAAY,EAAEC,QAAQC,WAAWC,QAAO,GAA6B;AACnE,SAAKC,WAAWD;AAChB,QAAI;AACFE,gBAAUJ,QAAQ,kCAAA;;;;;;;;;AAElB,WAAKK,aAAa,IAAIC,UAAU;QAC9BC,UAAUP;QACVQ,SAASP;MACX,CAAA;IACF,SAASQ,KAAK;AACZC,UAAIC,MAAM,kCAAkCF,KAAAA;;;;;;IAC9C;EACF;;;;EAKAG,KAAK,EAAEC,gBAAgBC,aAAaC,YAAYC,QAAQ,GAAGC,QAAAA,IAAyB,CAAC,GAAG;AACtF,QAAI,CAAC,KAAKZ,YAAY;AACpBK,UAAI,6BAA6B;QAAEQ,QAAQ;MAAO,GAAA;;;;;;AAClD;IACF;AAEA,QAAI;AACF,WAAKb,WAAWO,KAAK;QACnB,GAAGK;QACHD;QACAF;MACF,CAAA;IACF,SAASL,KAAK;AACZC,UAAIC,MAAM,wBAAwBF,KAAAA;;;;;;IACpC;EACF;;;;EAKAU,MAAM,EAAEN,gBAAgBC,aAAaC,YAAYC,QAAQI,MAAMD,OAAO,GAAGF,QAAAA,GAAyB;AAChGP,QAAI,8BAA8B;MAAES;MAAOF;MAASI,MAAM,KAAKlB,SAAQ;IAAG,GAAA;;;;;;AAC1E,QAAI,CAAC,KAAKE,YAAY;AACpBK,UAAI,6BAA6B;QAAEQ,QAAQ;MAAQ,GAAA;;;;;;AACnD;IACF;AAEA,QAAI;AACF,WAAKb,WAAWiB,MAAM;QACpB,GAAGL;QACHM,YAAY;UAAE,GAAGN,QAAQM;UAAY,GAAG,KAAKpB,SAAQ;QAAG;QACxDa;QACAF;QACAK;MACF,CAAA;IACF,SAASV,KAAK;AACZC,UAAIC,MAAM,yBAAyBF,KAAAA;;;;;;IACrC;EACF;;;;EAKA,MAAMe,QAAQ;AACZ,QAAI,CAAC,KAAKnB,YAAY;AACpBK,UAAI,6BAA6B;QAAEQ,QAAQ;MAAQ,GAAA;;;;;;AACnD;IACF;AAEA,QAAI;AACF,YAAM,KAAKb,WAAWmB,MAAK;IAC7B,SAASf,KAAK;AAEZgB,uBAAiBhB,GAAAA;IACnB;EACF;EAEA,MAAMiB,QAAQ;AACZ,QAAI,CAAC,KAAKrB,YAAY;AACpB;IACF;AACA,UAAM,KAAKA,WAAWsB,cAAa;EACrC;AACF;",
|
|
6
6
|
"names": ["Analytics", "invariant", "log", "SegmentTelemetry", "constructor", "apiKey", "batchSize", "getTags", "_getTags", "invariant", "_analytics", "Analytics", "writeKey", "flushAt", "err", "log", "catch", "page", "installationId", "anonymousId", "identityId", "userId", "options", "action", "event", "name", "tags", "track", "properties", "flush", "captureException", "close", "closeAndFlush"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import "../chunk-YJ4KVBWC.mjs";
|
|
2
3
|
import {
|
|
3
4
|
addBreadcrumb,
|
|
4
5
|
captureException,
|
|
@@ -9,7 +10,7 @@ import {
|
|
|
9
10
|
setTags,
|
|
10
11
|
setUser,
|
|
11
12
|
withScope
|
|
12
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-CMDADTM3.mjs";
|
|
13
14
|
export {
|
|
14
15
|
addBreadcrumb,
|
|
15
16
|
captureException,
|
package/dist/lib/node-esm/{sentry-log-processor-HEWW7T3S.mjs → sentry-log-processor-JYJH3AMG.mjs}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
1
2
|
import {
|
|
2
3
|
captureException,
|
|
3
4
|
captureMessage,
|
|
4
5
|
withScope
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-CMDADTM3.mjs";
|
|
6
7
|
|
|
7
8
|
// packages/sdk/observability/src/sentry/sentry-log-processor.ts
|
|
8
9
|
import { InvariantViolation } from "@dxos/invariant";
|
|
@@ -129,4 +130,4 @@ var getRelativeFilename = (filename) => {
|
|
|
129
130
|
export {
|
|
130
131
|
SentryLogProcessor
|
|
131
132
|
};
|
|
132
|
-
//# sourceMappingURL=sentry-log-processor-
|
|
133
|
+
//# sourceMappingURL=sentry-log-processor-JYJH3AMG.mjs.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/sentry/sentry-log-processor.ts"],
|
|
4
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 = 80;\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 return;\n }\n if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {\n return;\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) {\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,\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 const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n return `${workerPrefix}${scopePrefix} ${entry.message}`;\n};\n\nconst convertLevel = (level: LogLevel): SeverityLevel => {\n if (level === LogLevel.TRACE) {\n return 'debug';\n }\n if (level === LogLevel.WARN) {\n return 'warning';\n }\n return LogLevel[level].toLowerCase() as SeverityLevel;\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": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["InvariantViolation", "LogLevel", "shouldLog", "CircularBuffer", "getDebugName", "MAX_LOG_BREADCRUMBS", "SentryLogProcessor", "_breadcrumbs", "CircularBuffer", "logProcessor", "config", "entry", "level", "meta", "error", "shouldLog", "captureFilters", "S", "remoteSessionId", "LogLevel", "WARN", "ERROR", "withScope", "scope", "severity", "convertLevel", "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", "_addBreadcrumb", "setFingerprint", "message", "captureMessage", "addLogBreadcrumbsTo", "event", "breadcrumbs", "breadcrumb", "push", "sort", "b1", "b2", "timestamp", "undefined", "type", "event_id", "category", "data", "Math", "floor", "Date", "now", "lastRecorded", "getLast", "firstBreadcrumbData", "mergedBreadcrumbCount", "lastBreadcrumbData", "scopePrefix", "name", "getDebugName", "workerPrefix", "TRACE", "toLowerCase", "filename", "match", "filePath"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/observability",
|
|
3
|
-
"version": "0.6.12-main.
|
|
3
|
+
"version": "0.6.12-main.89e9959",
|
|
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",
|
|
@@ -75,20 +75,20 @@
|
|
|
75
75
|
"js-yaml": "^4.1.0",
|
|
76
76
|
"localforage": "^1.10.0",
|
|
77
77
|
"uuid": "^9.0.0",
|
|
78
|
-
"@dxos/async": "0.6.12-main.
|
|
79
|
-
"@dxos/client": "0.6.12-main.
|
|
80
|
-
"@dxos/client
|
|
81
|
-
"@dxos/client-services": "0.6.12-main.
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/debug": "0.6.12-main.
|
|
85
|
-
"@dxos/invariant": "0.6.12-main.
|
|
86
|
-
"@dxos/log": "0.6.12-main.
|
|
87
|
-
"@dxos/network-manager": "0.6.12-main.
|
|
88
|
-
"@dxos/
|
|
89
|
-
"@dxos/
|
|
90
|
-
"@dxos/tracing": "0.6.12-main.
|
|
91
|
-
"@dxos/util": "0.6.12-main.
|
|
78
|
+
"@dxos/async": "0.6.12-main.89e9959",
|
|
79
|
+
"@dxos/client-protocol": "0.6.12-main.89e9959",
|
|
80
|
+
"@dxos/client": "0.6.12-main.89e9959",
|
|
81
|
+
"@dxos/client-services": "0.6.12-main.89e9959",
|
|
82
|
+
"@dxos/context": "0.6.12-main.89e9959",
|
|
83
|
+
"@dxos/config": "0.6.12-main.89e9959",
|
|
84
|
+
"@dxos/debug": "0.6.12-main.89e9959",
|
|
85
|
+
"@dxos/invariant": "0.6.12-main.89e9959",
|
|
86
|
+
"@dxos/log": "0.6.12-main.89e9959",
|
|
87
|
+
"@dxos/network-manager": "0.6.12-main.89e9959",
|
|
88
|
+
"@dxos/node-std": "0.6.12-main.89e9959",
|
|
89
|
+
"@dxos/protocols": "0.6.12-main.89e9959",
|
|
90
|
+
"@dxos/tracing": "0.6.12-main.89e9959",
|
|
91
|
+
"@dxos/util": "0.6.12-main.89e9959"
|
|
92
92
|
},
|
|
93
93
|
"devDependencies": {
|
|
94
94
|
"@sentry/types": "^8.8.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-KDP3SESE.mjs.map
|
|
File without changes
|
/package/dist/lib/node-esm/{observability-UQRA6FNY.mjs.map → observability-QJFZLUL4.mjs.map}
RENAMED
|
File without changes
|