@dxos/observability 0.3.11-main.fc97a54 → 0.3.11-next.e28df4f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +4 -9
  2. package/dist/lib/browser/{chunk-6ZTMPKEG.mjs → chunk-2J5YS65Q.mjs} +3 -3
  3. package/dist/lib/browser/{chunk-6ZTMPKEG.mjs.map → chunk-2J5YS65Q.mjs.map} +3 -3
  4. package/dist/lib/browser/{chunk-HPGC4HC7.mjs → chunk-ROSK6U3K.mjs} +3 -3
  5. package/dist/lib/browser/chunk-ROSK6U3K.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-JVT4FOCC.mjs → chunk-STWCJK52.mjs} +130 -238
  7. package/dist/lib/browser/chunk-STWCJK52.mjs.map +7 -0
  8. package/dist/lib/browser/datadog/index.mjs +1 -1
  9. package/dist/lib/browser/index.mjs +5 -9
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/observability-XIDFB6PJ.mjs +10 -0
  12. package/dist/lib/browser/segment/index.mjs +1 -1
  13. package/dist/lib/node/{chunk-BHF4PKAP.cjs → chunk-ARUBPK2W.cjs} +6 -6
  14. package/dist/lib/node/chunk-ARUBPK2W.cjs.map +7 -0
  15. package/dist/lib/node/{chunk-ED364ZBZ.cjs → chunk-DE7OVD7T.cjs} +120 -226
  16. package/dist/lib/node/chunk-DE7OVD7T.cjs.map +7 -0
  17. package/dist/lib/node/{chunk-ZJRKFREX.cjs → chunk-VDBBIYH6.cjs} +6 -6
  18. package/dist/lib/node/{chunk-ZJRKFREX.cjs.map → chunk-VDBBIYH6.cjs.map} +3 -3
  19. package/dist/lib/node/datadog/index.cjs +3 -3
  20. package/dist/lib/node/datadog/index.cjs.map +1 -1
  21. package/dist/lib/node/index.cjs +16 -20
  22. package/dist/lib/node/index.cjs.map +2 -2
  23. package/dist/lib/node/meta.json +1 -1
  24. package/dist/lib/node/{observability-MN7SJ7NA.cjs → observability-YMIQHLME.cjs} +8 -8
  25. package/dist/lib/node/observability-YMIQHLME.cjs.map +7 -0
  26. package/dist/lib/node/segment/index.cjs +2 -2
  27. package/dist/lib/node/segment/index.cjs.map +1 -1
  28. package/dist/types/src/datadog/metrics.d.ts +1 -3
  29. package/dist/types/src/datadog/metrics.d.ts.map +1 -1
  30. package/dist/types/src/datadog/metrics.js +1 -1
  31. package/dist/types/src/datadog/metrics.js.map +1 -1
  32. package/dist/types/src/helpers/{browser-observability.d.ts → app-observability.d.ts} +6 -4
  33. package/dist/types/src/helpers/app-observability.d.ts.map +1 -0
  34. package/dist/types/src/helpers/{browser-observability.js → app-observability.js} +51 -22
  35. package/dist/types/src/helpers/app-observability.js.map +1 -0
  36. package/dist/types/src/helpers/index.d.ts +1 -3
  37. package/dist/types/src/helpers/index.d.ts.map +1 -1
  38. package/dist/types/src/helpers/index.js +1 -3
  39. package/dist/types/src/helpers/index.js.map +1 -1
  40. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
  41. package/dist/types/src/helpers/setup-telemetry-listeners.js +12 -7
  42. package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
  43. package/dist/types/src/observability.d.ts +4 -9
  44. package/dist/types/src/observability.d.ts.map +1 -1
  45. package/dist/types/src/observability.js +17 -44
  46. package/dist/types/src/observability.js.map +1 -1
  47. package/dist/types/src/segment/browser.d.ts.map +1 -1
  48. package/dist/types/src/segment/browser.js +2 -2
  49. package/dist/types/src/segment/browser.js.map +1 -1
  50. package/dist/types/src/segment/node.d.ts.map +1 -1
  51. package/dist/types/src/segment/node.js +2 -2
  52. package/dist/types/src/segment/node.js.map +1 -1
  53. package/dist/types/src/segment/types.d.ts +1 -3
  54. package/dist/types/src/segment/types.d.ts.map +1 -1
  55. package/package.json +14 -17
  56. package/src/datadog/metrics.ts +5 -3
  57. package/src/helpers/{browser-observability.ts → app-observability.ts} +54 -26
  58. package/src/helpers/index.ts +1 -3
  59. package/src/helpers/setup-telemetry-listeners.ts +7 -2
  60. package/src/observability.ts +20 -57
  61. package/src/segment/browser.ts +3 -3
  62. package/src/segment/node.ts +3 -3
  63. package/src/segment/types.ts +1 -1
  64. package/dist/lib/browser/chunk-HPGC4HC7.mjs.map +0 -7
  65. package/dist/lib/browser/chunk-JVT4FOCC.mjs.map +0 -7
  66. package/dist/lib/browser/observability-3UVQW6ZL.mjs +0 -10
  67. package/dist/lib/node/chunk-BHF4PKAP.cjs.map +0 -7
  68. package/dist/lib/node/chunk-ED364ZBZ.cjs.map +0 -7
  69. package/dist/lib/node/observability-MN7SJ7NA.cjs.map +0 -7
  70. package/dist/types/src/helpers/browser-observability.d.ts.map +0 -1
  71. package/dist/types/src/helpers/browser-observability.js.map +0 -1
  72. package/dist/types/src/helpers/common.d.ts +0 -10
  73. package/dist/types/src/helpers/common.d.ts.map +0 -1
  74. package/dist/types/src/helpers/common.js +0 -23
  75. package/dist/types/src/helpers/common.js.map +0 -1
  76. package/dist/types/src/helpers/node-observability.d.ts +0 -34
  77. package/dist/types/src/helpers/node-observability.d.ts.map +0 -1
  78. package/dist/types/src/helpers/node-observability.js +0 -106
  79. package/dist/types/src/helpers/node-observability.js.map +0 -1
  80. package/src/helpers/common.ts +0 -25
  81. package/src/helpers/node-observability.ts +0 -151
  82. /package/dist/lib/browser/{observability-3UVQW6ZL.mjs.map → observability-XIDFB6PJ.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/observability.ts", "../../../src/cli-observability-secrets.json", "../../../src/helpers/app-observability.ts", "../../../src/helpers/map-spaces.ts", "../../../src/helpers/setup-telemetry-listeners.ts"],
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 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 { DatadogMetrics } from './datadog';\nimport { BASE_TELEMETRY_PROPERTIES, getTelemetryIdentifier, mapSpaces } from './helpers';\nimport { SegmentTelemetry, type EventOptions, type PageOptions } from './segment';\nimport {\n captureException as sentryCaptureException,\n enableSentryLogProcessor,\n configureTracing as sentryConfigureTracing,\n init as sentryInit,\n type InitOptions,\n setTag as sentrySetTag,\n} from './sentry';\n\nconst SPACE_METRICS_MIN_INTERVAL = 1000 * 60;\n// const DATADOG_IDLE_INTERVAL = 1000 * 60 * 5;\nconst DATADOG_IDLE_INTERVAL = 1000 * 60 * 1;\n\n// TODO(nf): add allowlist for telemetry tags?\nconst ERROR_TAGS = ['identityKey', 'username', 'deviceKey', 'group'];\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 DATADOG_API_KEY: string | null;\n DATADOG_APP_KEY: string | null;\n};\n\nexport type Mode = 'basic' | 'full' | 'disabled';\n\nexport type ObservabilityOptions = {\n /// The webapp (e.g. 'composer.dxos.org'), 'cli', or 'agent'.\n namespace: string;\n // TODO(nf): make platform a required extension?\n // platform: Platform;\n config?: Config;\n secrets?: Record<string, string>;\n group?: string;\n mode?: Mode;\n\n telemetry?: {\n batchSize?: number;\n };\n\n errorLog?: {\n sentryInitOptions?: InitOptions;\n logProcessor?: boolean;\n };\n};\n\n/*\n * Observability provides a common interface for error logging, metrics, and telemetry.\n * It currently provides these capabilities using Sentry, Datadog, and Segment.\n */\nexport class Observability {\n // TODO(wittjosiah): Generic metrics interface.\n private _metrics?: DatadogMetrics;\n // TODO(wittjosiah): Generic telemetry interface.\n private _telemetryBatchSize: number;\n private _telemetry?: SegmentTelemetry;\n // TODO(wittjosiah): Generic error logging interface.\n private _errorReportingOptions?: InitOptions;\n private _errorLogProcessor: boolean;\n\n private _secrets: ObservabilitySecrets;\n private _namespace: string;\n private _config?: Config;\n private _mode: Mode = 'disabled';\n private _group?: string;\n // TODO(nf): accept upstream context?\n private _ctx = new Context();\n private _tags = new Map<string, string>();\n\n // TODO(nf): make platform a required extension?\n constructor({ namespace, config, secrets, group, mode, telemetry, errorLog }: ObservabilityOptions) {\n this._namespace = namespace;\n this._config = config;\n this._mode = mode ?? 'disabled';\n this._group = group;\n this._secrets = this._loadSecrets(config, secrets);\n this._telemetryBatchSize = telemetry?.batchSize ?? 30;\n this._errorReportingOptions = errorLog?.sentryInitOptions;\n this._errorLogProcessor = errorLog?.logProcessor ?? false;\n\n if (this._group) {\n this.setTag('group', this._group);\n }\n this.setTag('namespace', this._namespace);\n\n if (this._mode === 'full') {\n // TODO(nf): set group and hostname?\n }\n }\n\n private _loadSecrets(config: Config | undefined, secrets?: Record<string, string>) {\n if (isNode()) {\n return buildSecrets as ObservabilitySecrets;\n } else {\n invariant(config, 'runtime config is required');\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 DATADOG_API_KEY: config.get('runtime.app.env.DX_DATADOG_API_KEY'),\n DATADOG_APP_KEY: config.get('runtime.app.env.DX_DATADOG_APP_KEY'),\n ...secrets,\n };\n }\n }\n\n initialize() {\n this._initMetrics();\n this._initTelemetry();\n this._initErrorLogs();\n }\n\n async close() {\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 get mode() {\n return this._mode;\n }\n\n get enabled() {\n return this._mode !== 'disabled';\n }\n\n //\n // Tags\n //\n\n /**\n * Set a tag for all observability services.\n */\n setTag(key: string, value: string) {\n if (this.enabled && ERROR_TAGS.includes(key)) {\n sentrySetTag(key, value);\n }\n\n this._tags.set(key, value);\n }\n\n // TODO(wittjosiah): Improve privacy of telemetry identifiers. See `getTelemetryIdentifier`.\n async setIdentityTags(client: Client) {\n client.services.services.IdentityService!.queryIdentity().subscribe((idqr) => {\n if (!idqr?.identity?.identityKey) {\n log('empty response from identity service', { idqr });\n return;\n }\n\n this.setTag('identityKey', idqr.identity.identityKey.truncate());\n });\n\n client.services.services.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 // Metrics\n //\n\n private _initMetrics() {\n if (this.enabled && this._secrets.DATADOG_API_KEY) {\n this._metrics = new DatadogMetrics({\n apiKey: this._secrets.DATADOG_API_KEY,\n getTags: () => this._tags,\n // TODO(nf): move/refactor from telementryContext, needed to read CORS proxy\n config: this._config!,\n });\n } else {\n log('datadog disabled');\n }\n }\n\n /**\n * Gauge metric.\n *\n * The default implementation uses Datadog.\n */\n gauge(name: string, value: number | any, extraTags?: any) {\n this._metrics?.gauge(name, value, extraTags);\n }\n\n // TODO(nf): Refactor into ObservabilityExtensions.\n\n startNetworkMetrics(client: Client) {\n const updateSignalMetrics = new Event<NetworkStatus>();\n\n // const lcsh = (csp as LocalClientServices).host;\n updateSignalMetrics.on(this._ctx, async (networkStatus) => {\n log('send signal metrics');\n (networkStatus.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 networkStatus.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('dxox.client.network.totalReadBufferSize', totalReadBufferSize);\n this.gauge('dxos.client.network.totalWriteBufferSize', totalWriteBufferSize);\n this.gauge('dxos.client.network.totalChannelBufferSize', totalChannelBufferSize);\n });\n });\n\n client.services.services.NetworkService?.queryStatus().subscribe((networkStatus) => {\n updateSignalMetrics.emit(networkStatus);\n });\n\n // scheduleTaskInterval(ctx, async () => updateSignalMetrics.emit(), DATADOG_IDLE_INTERVAL);\n }\n\n startSpacesMetrics(client: Client, namespace: string) {\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 update');\n for (const data of mapSpaces(spaces, { truncateKeys: true })) {\n // Metrics\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 // Telemetry\n this.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.space.update`,\n properties: {\n ...BASE_TELEMETRY_PROPERTIES,\n ...data,\n },\n });\n }\n });\n\n const subscribeToSpaceUpdate = (space: Space) =>\n space.pipeline.subscribe({\n next: () => {\n updateSpaceMetrics.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(), DATADOG_IDLE_INTERVAL);\n }\n\n async startRuntimeMetrics(client: Client, frequency: number = DATADOG_IDLE_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 scheduleTaskInterval(\n this._ctx,\n async () => {\n log('platform');\n client.services.services.SystemService?.getPlatform()\n .then((platform) => {\n log('platform', { platform });\n if (platform.memory) {\n this.gauge('dxos.client.runtime.rss', platform.memory.rss);\n this.gauge('dxos.client.runtime.heapTotal', platform.memory.heapTotal);\n this.gauge('dxos.client.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 _initTelemetry() {\n if (this._secrets.TELEMETRY_API_KEY && this._mode !== 'disabled') {\n this._telemetry = new SegmentTelemetry({\n apiKey: this._secrets.TELEMETRY_API_KEY,\n batchSize: this._telemetryBatchSize,\n getTags: () => this._tags,\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 _initErrorLogs() {\n if (this._secrets.SENTRY_DESTINATION && this._mode !== 'disabled') {\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 sentryInit({\n ...this._errorReportingOptions,\n destination: this._secrets.SENTRY_DESTINATION,\n scrubFilenames: this._mode !== 'full',\n });\n if (this._errorReportingOptions?.tracing) {\n sentryConfigureTracing();\n }\n // TODO(nf): set platform at instantiation? needed for node.\n if (this._errorLogProcessor) {\n enableSentryLogProcessor();\n }\n // TODO(nf): is this different than passing as properties in options?\n this._tags.forEach((v, k) => {\n if (ERROR_TAGS.includes(k)) {\n sentrySetTag(k, v);\n }\n });\n } else {\n log('sentry disabled');\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 sentryCaptureException(err);\n }\n }\n}\n", "{\n \"SENTRY_DESTINATION\": \"https://2647916221e643869965e78469479aa4@o4504012000067584.ingest.sentry.io/4504012027265029\",\n \"TELEMETRY_API_KEY\": \"B00QG6PtJJrJ0VVFe0H5a6bcUUShKyZM\",\n \"IPDATA_API_KEY\": \"73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786\",\n \"DATADOG_API_KEY\": null,\n \"DATADOG_APP_KEY\": 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';\nimport type { Client, Config } from '@dxos/client';\nimport { log } from '@dxos/log';\n// import { type InitOptions as TelemetryInitOptions } from '@dxos/telemetry';\n\nimport type { Mode, Observability } from '../observability';\n\nexport const BASE_TELEMETRY_PROPERTIES: any = {};\n// item name is 'telemetry' for backwards compatibility\nexport const OBSERVABILITY_DISABLED_KEY = 'telemetry-disabled';\nexport const OBSERVABILITY_GROUP_KEY = 'telemetry-group';\n\nif (typeof navigator !== 'undefined' && navigator.storage?.estimate) {\n setInterval(async () => {\n try {\n const storageEstimate = await navigator.storage.estimate();\n BASE_TELEMETRY_PROPERTIES.storageUsage = storageEstimate.usage;\n BASE_TELEMETRY_PROPERTIES.storageQuota = storageEstimate.quota;\n } catch (error) {\n log.warn('Failed to run estimate()', error);\n }\n }, 10e3);\n}\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 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\ntype IPData = { city: string; region: string; country: string; latitude: number; longitude: number };\n\n// TODO(wittjosiah): Store preference for disabling telemetry.\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 BASE_TELEMETRY_PROPERTIES.group = group;\n BASE_TELEMETRY_PROPERTIES.release = release;\n BASE_TELEMETRY_PROPERTIES.environment = environment;\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 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:telemetry:ipdata');\n if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {\n return cachedData.data;\n }\n\n // TODO(nf): move into observability\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:telemetry: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 const ipData = await getIPData(config);\n if (ipData && ipData.city) {\n BASE_TELEMETRY_PROPERTIES.city = ipData.city;\n BASE_TELEMETRY_PROPERTIES.region = ipData.region;\n BASE_TELEMETRY_PROPERTIES.country = ipData.country;\n BASE_TELEMETRY_PROPERTIES.latitude = ipData.latitude;\n BASE_TELEMETRY_PROPERTIES.longitude = ipData.longitude;\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 observability.initialize();\n } catch (err: any) {\n log.error('Failed to initialize app observability', err);\n }\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.query().objects.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 { BASE_TELEMETRY_PROPERTIES, getTelemetryIdentifier } from './app-observability';\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: any) => {\n if (BASE_TELEMETRY_PROPERTIES.group === 'dxos' && event.target && !event.target.id) {\n // TODO(wittjosiah): Use @dxos/log so these can be filtered.\n console.warn('Click event on element without id:', event.target);\n }\n\n setTimeout(() =>\n observability.event({\n identityId: getTelemetryIdentifier(client),\n name: `${namespace}.window.click`,\n properties: {\n ...BASE_TELEMETRY_PROPERTIES,\n href: window.location.href,\n id: (event.target as HTMLElement)?.id,\n path: (event.path 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 ...BASE_TELEMETRY_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 ...BASE_TELEMETRY_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 ...BASE_TELEMETRY_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 ...BASE_TELEMETRY_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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",
6
+ "names": ["Event", "scheduleTaskInterval", "Context", "invariant", "log", "ConnectionState", "DeviceKind", "Platform", "isNode", "localForage", "log", "BASE_TELEMETRY_PROPERTIES", "OBSERVABILITY_DISABLED_KEY", "OBSERVABILITY_GROUP_KEY", "navigator", "storage", "estimate", "setInterval", "storageEstimate", "storageUsage", "usage", "storageQuota", "quota", "error", "warn", "getTelemetryIdentifier", "client", "initialized", "undefined", "identity", "halo", "get", "identityKey", "truncate", "isObservabilityDisabled", "namespace", "getItem", "err", "catch", "storeObservabilityDisabled", "value", "setItem", "String", "getObservabilityGroup", "storeObservabilityGroup", "initializeAppObservability", "config", "mode", "tracingEnable", "replayEnable", "group", "release", "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", "ipData", "city", "region", "country", "latitude", "longitude", "initialize", "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", "query", "progress", "Math", "min", "abs", "toFixed", "lastFocusEvent", "Date", "totalTime", "setupTelemetryListeners", "namespace", "client", "observability", "clickCallback", "event", "BASE_TELEMETRY_PROPERTIES", "group", "target", "id", "console", "warn", "setTimeout", "identityId", "getTelemetryIdentifier", "name", "properties", "href", "window", "location", "path", "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", "DATADOG_IDLE_INTERVAL", "ERROR_TAGS", "Observability", "constructor", "namespace", "config", "secrets", "group", "mode", "telemetry", "errorLog", "_mode", "_ctx", "Context", "_tags", "Map", "_namespace", "_config", "_group", "_secrets", "_loadSecrets", "_telemetryBatchSize", "batchSize", "_errorReportingOptions", "sentryInitOptions", "_errorLogProcessor", "logProcessor", "setTag", "isNode", "buildSecrets", "invariant", "log", "rtc", "DX_ENVIRONMENT", "get", "DX_RELEASE", "SENTRY_DESTINATION", "TELEMETRY_API_KEY", "IPDATA_API_KEY", "DATADOG_API_KEY", "DATADOG_APP_KEY", "initialize", "_initMetrics", "_initTelemetry", "_initErrorLogs", "close", "dispose", "setMode", "enabled", "key", "value", "includes", "sentrySetTag", "set", "setIdentityTags", "client", "services", "IdentityService", "queryIdentity", "subscribe", "idqr", "identity", "identityKey", "truncate", "DevicesService", "queryDevices", "dqr", "devices", "length", "device", "thisDevice", "find", "kind", "DeviceKind", "CURRENT", "deviceKey", "profile", "label", "_metrics", "DatadogMetrics", "apiKey", "getTags", "gauge", "name", "extraTags", "startNetworkMetrics", "updateSignalMetrics", "Event", "on", "networkStatus", "signaling", "forEach", "server", "state", "swarmCount", "connectionStates", "ConnectionState", "totalReadBufferSize", "totalWriteBufferSize", "totalChannelBufferSize", "connectionInfo", "conn", "connections", "readBufferSize", "writeBufferSize", "stream", "streams", "NetworkService", "queryStatus", "emit", "startSpacesMetrics", "spaces", "subscriptions", "onDispose", "subscription", "unsubscribe", "updateSpaceMetrics", "debounce", "data", "mapSpaces", "truncateKeys", "members", "objects", "epoch", "currentDataMutations", "event", "identityId", "getTelemetryIdentifier", "properties", "BASE_TELEMETRY_PROPERTIES", "subscribeToSpaceUpdate", "space", "pipeline", "next", "toHex", "filter", "has", "scheduleTaskInterval", "startRuntimeMetrics", "frequency", "platform", "SystemService", "getPlatform", "Platform", "PLATFORM_TYPE", "type", "toLowerCase", "arch", "runtime", "then", "memory", "rss", "heapTotal", "heapUsed", "catch", "error", "_telemetry", "SegmentTelemetry", "options", "page", "info", "dest", "sentryInit", "destination", "scrubFilenames", "tracing", "sentryConfigureTracing", "enableSentryLogProcessor", "v", "k", "captureException", "err", "sentryCaptureException"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DatadogMetrics,
3
3
  defaultOptions
4
- } from "../chunk-6ZTMPKEG.mjs";
4
+ } from "../chunk-2J5YS65Q.mjs";
5
5
  export {
6
6
  DatadogMetrics,
7
7
  defaultOptions
@@ -1,35 +1,31 @@
1
1
  import {
2
+ BASE_TELEMETRY_PROPERTIES,
2
3
  OBSERVABILITY_DISABLED_KEY,
3
4
  OBSERVABILITY_GROUP_KEY,
4
5
  Observability,
5
6
  getObservabilityGroup,
6
- getObservabilityState,
7
7
  getTelemetryIdentifier,
8
8
  initializeAppObservability,
9
- initializeNodeObservability,
10
9
  isObservabilityDisabled,
11
10
  mapSpaces,
12
11
  setupTelemetryListeners,
13
- showObservabilityBanner,
14
12
  storeObservabilityDisabled,
15
13
  storeObservabilityGroup
16
- } from "./chunk-JVT4FOCC.mjs";
17
- import "./chunk-6ZTMPKEG.mjs";
18
- import "./chunk-HPGC4HC7.mjs";
14
+ } from "./chunk-STWCJK52.mjs";
15
+ import "./chunk-2J5YS65Q.mjs";
16
+ import "./chunk-ROSK6U3K.mjs";
19
17
  import "./chunk-6KUJPLEH.mjs";
20
18
  export {
19
+ BASE_TELEMETRY_PROPERTIES,
21
20
  OBSERVABILITY_DISABLED_KEY,
22
21
  OBSERVABILITY_GROUP_KEY,
23
22
  Observability,
24
23
  getObservabilityGroup,
25
- getObservabilityState,
26
24
  getTelemetryIdentifier,
27
25
  initializeAppObservability,
28
- initializeNodeObservability,
29
26
  isObservabilityDisabled,
30
27
  mapSpaces,
31
28
  setupTelemetryListeners,
32
- showObservabilityBanner,
33
29
  storeObservabilityDisabled,
34
30
  storeObservabilityGroup
35
31
  };
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/observability/src/datadog/browser.ts":{"bytes":2364,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/datadog/metrics.ts":{"bytes":4585,"imports":[{"path":"datadog-metrics","kind":"import-statement","external":true},{"path":"debug","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/datadog/browser.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/datadog/index.ts":{"bytes":553,"imports":[{"path":"packages/sdk/observability/src/datadog/browser.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/datadog/metrics.ts","kind":"import-statement","original":"./metrics"}],"format":"esm"},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytes":315,"imports":[]},"packages/sdk/observability/src/sentry/tracing.ts":{"bytes":17365,"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"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}],"format":"esm"},"packages/sdk/observability/src/sentry/browser.ts":{"bytes":11844,"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/tracing.ts","kind":"import-statement","original":"./tracing"},{"path":"@sentry/browser","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1037,"imports":[],"format":"esm"},"packages/sdk/observability/src/sentry/index.ts":{"bytes":908,"imports":[{"path":"packages/sdk/observability/src/sentry/browser.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/sentry/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/sdk/observability/src/sentry/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"packages/sdk/observability/src/segment/browser.ts":{"bytes":6517,"imports":[{"path":"@segment/snippet","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":1042,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":547,"imports":[{"path":"packages/sdk/observability/src/segment/browser.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/observability.ts":{"bytes":56803,"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/datadog/index.ts","kind":"import-statement","original":"./datadog"},{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/segment/index.ts","kind":"import-statement","original":"./segment"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"import-statement","original":"./sentry"}],"format":"esm"},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytes":19235,"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":2622,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/node-observability.ts":{"bytes":14166,"imports":[{"path":"js-yaml","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs/promises","kind":"import-statement","external":true},{"path":"@dxos/node-std/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":6306,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytes":11655,"imports":[{"path":"packages/sdk/observability/src/helpers/common.ts","kind":"import-statement","original":"./common"}],"format":"esm"},"packages/sdk/observability/src/helpers/index.ts":{"bytes":930,"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":566,"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/browser/datadog/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/datadog/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-6ZTMPKEG.mjs","kind":"import-statement"}],"exports":["DatadogMetrics","defaultOptions"],"entryPoint":"packages/sdk/observability/src/datadog/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-JVT4FOCC.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6ZTMPKEG.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-HPGC4HC7.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.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":902},"packages/sdk/observability/dist/lib/browser/segment/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/segment/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-HPGC4HC7.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["SegmentTelemetry"],"entryPoint":"packages/sdk/observability/src/segment/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/browser/sentry/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/sentry/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["SENTRY_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","finish","init","setTag","setTags","setUser"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":396},"packages/sdk/observability/dist/lib/browser/observability-3UVQW6ZL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/observability-3UVQW6ZL.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-JVT4FOCC.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6ZTMPKEG.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-HPGC4HC7.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/observability.ts","inputs":{},"bytes":229},"packages/sdk/observability/dist/lib/browser/chunk-JVT4FOCC.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":54400},"packages/sdk/observability/dist/lib/browser/chunk-JVT4FOCC.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-6ZTMPKEG.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-HPGC4HC7.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"},{"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/browser/observability-3UVQW6ZL.mjs","kind":"dynamic-import"},{"path":"js-yaml","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs/promises","kind":"import-statement","external":true},{"path":"@dxos/node-std/path","kind":"import-statement","external":true},{"path":"uuid","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"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":14413},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytesInOutput":347},"packages/sdk/observability/src/helpers/browser-observability.ts":{"bytesInOutput":4736},"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":3469},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytesInOutput":1177},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytesInOutput":2736}},"bytes":28251},"packages/sdk/observability/dist/lib/browser/chunk-6ZTMPKEG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3273},"packages/sdk/observability/dist/lib/browser/chunk-6ZTMPKEG.mjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"datadog-metrics","kind":"import-statement","external":true},{"path":"debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["DatadogMetrics","defaultOptions"],"inputs":{"packages/sdk/observability/src/datadog/browser.ts":{"bytesInOutput":745},"packages/sdk/observability/src/datadog/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/datadog/metrics.ts":{"bytesInOutput":1143}},"bytes":2087},"packages/sdk/observability/dist/lib/browser/chunk-HPGC4HC7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3076},"packages/sdk/observability/dist/lib/browser/chunk-HPGC4HC7.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"},{"path":"@segment/snippet","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["SegmentTelemetry"],"inputs":{"packages/sdk/observability/src/segment/browser.ts":{"bytesInOutput":1738},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0}},"bytes":1927},"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13495},"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs":{"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@sentry/browser","kind":"import-statement","external":true},{"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":"@sentry/browser","kind":"import-statement","external":true}],"exports":["SENTRY_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","finish","init","setTag","setTags","setUser"],"inputs":{"packages/sdk/observability/src/sentry/browser.ts":{"bytesInOutput":2872},"packages/sdk/observability/src/sentry/tracing.ts":{"bytesInOutput":4592},"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0}},"bytes":7844}}}
1
+ {"inputs":{"packages/sdk/observability/src/datadog/browser.ts":{"bytes":2364,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/datadog/metrics.ts":{"bytes":4719,"imports":[{"path":"datadog-metrics","kind":"import-statement","external":true},{"path":"debug","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/datadog/browser.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/datadog/index.ts":{"bytes":553,"imports":[{"path":"packages/sdk/observability/src/datadog/browser.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/datadog/metrics.ts","kind":"import-statement","original":"./metrics"}],"format":"esm"},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytes":315,"imports":[]},"packages/sdk/observability/src/sentry/tracing.ts":{"bytes":17365,"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"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}],"format":"esm"},"packages/sdk/observability/src/sentry/browser.ts":{"bytes":11844,"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/sdk/observability/src/sentry/tracing.ts","kind":"import-statement","original":"./tracing"},{"path":"@sentry/browser","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1037,"imports":[],"format":"esm"},"packages/sdk/observability/src/sentry/index.ts":{"bytes":908,"imports":[{"path":"packages/sdk/observability/src/sentry/browser.ts","kind":"import-statement","original":"./node"},{"path":"packages/sdk/observability/src/sentry/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/sdk/observability/src/sentry/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"packages/sdk/observability/src/segment/browser.ts":{"bytes":6769,"imports":[{"path":"@segment/snippet","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":1034,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":547,"imports":[{"path":"packages/sdk/observability/src/segment/browser.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/observability.ts":{"bytes":50323,"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/datadog/index.ts","kind":"import-statement","original":"./datadog"},{"path":"packages/sdk/observability/src/helpers/index.ts","kind":"import-statement","original":"./helpers"},{"path":"packages/sdk/observability/src/segment/index.ts","kind":"import-statement","original":"./segment"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"import-statement","original":"./sentry"}],"format":"esm"},"packages/sdk/observability/src/helpers/app-observability.ts":{"bytes":22684,"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/map-spaces.ts":{"bytes":6306,"imports":[],"format":"esm"},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytes":12503,"imports":[{"path":"packages/sdk/observability/src/helpers/app-observability.ts","kind":"import-statement","original":"./app-observability"}],"format":"esm"},"packages/sdk/observability/src/helpers/index.ts":{"bytes":722,"imports":[{"path":"packages/sdk/observability/src/helpers/app-observability.ts","kind":"import-statement","original":"./app-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":566,"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/browser/datadog/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/datadog/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-2J5YS65Q.mjs","kind":"import-statement"}],"exports":["DatadogMetrics","defaultOptions"],"entryPoint":"packages/sdk/observability/src/datadog/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-STWCJK52.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-2J5YS65Q.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-ROSK6U3K.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["BASE_TELEMETRY_PROPERTIES","OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getTelemetryIdentifier","initializeAppObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","storeObservabilityDisabled","storeObservabilityGroup"],"entryPoint":"packages/sdk/observability/src/index.ts","inputs":{"packages/sdk/observability/src/index.ts":{"bytesInOutput":0}},"bytes":794},"packages/sdk/observability/dist/lib/browser/segment/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/segment/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-ROSK6U3K.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["SegmentTelemetry"],"entryPoint":"packages/sdk/observability/src/segment/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/browser/sentry/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/sentry/index.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["SENTRY_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","finish","init","setTag","setTags","setUser"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":396},"packages/sdk/observability/dist/lib/browser/observability-XIDFB6PJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/browser/observability-XIDFB6PJ.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-STWCJK52.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-2J5YS65Q.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-ROSK6U3K.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/observability.ts","inputs":{},"bytes":229},"packages/sdk/observability/dist/lib/browser/chunk-STWCJK52.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":44573},"packages/sdk/observability/dist/lib/browser/chunk-STWCJK52.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-2J5YS65Q.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-ROSK6U3K.mjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"},{"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/browser/observability-XIDFB6PJ.mjs","kind":"dynamic-import"}],"exports":["BASE_TELEMETRY_PROPERTIES","OBSERVABILITY_DISABLED_KEY","OBSERVABILITY_GROUP_KEY","Observability","getObservabilityGroup","getTelemetryIdentifier","initializeAppObservability","isObservabilityDisabled","mapSpaces","setupTelemetryListeners","storeObservabilityDisabled","storeObservabilityGroup"],"inputs":{"packages/sdk/observability/src/observability.ts":{"bytesInOutput":12773},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytesInOutput":347},"packages/sdk/observability/src/helpers/app-observability.ts":{"bytesInOutput":5237},"packages/sdk/observability/src/helpers/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytesInOutput":1177},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytesInOutput":2938}},"bytes":23440},"packages/sdk/observability/dist/lib/browser/chunk-2J5YS65Q.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3352},"packages/sdk/observability/dist/lib/browser/chunk-2J5YS65Q.mjs":{"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"datadog-metrics","kind":"import-statement","external":true},{"path":"debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["DatadogMetrics","defaultOptions"],"inputs":{"packages/sdk/observability/src/datadog/browser.ts":{"bytesInOutput":745},"packages/sdk/observability/src/datadog/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/datadog/metrics.ts":{"bytesInOutput":1173}},"bytes":2117},"packages/sdk/observability/dist/lib/browser/chunk-ROSK6U3K.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3226},"packages/sdk/observability/dist/lib/browser/chunk-ROSK6U3K.mjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs","kind":"import-statement"},{"path":"@segment/snippet","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["SegmentTelemetry"],"inputs":{"packages/sdk/observability/src/segment/browser.ts":{"bytesInOutput":1798},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0}},"bytes":1987},"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13495},"packages/sdk/observability/dist/lib/browser/chunk-6KUJPLEH.mjs":{"imports":[{"path":"@sentry/browser","kind":"import-statement","external":true},{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@sentry/browser","kind":"import-statement","external":true},{"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":"@sentry/browser","kind":"import-statement","external":true}],"exports":["SENTRY_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","finish","init","setTag","setTags","setUser"],"inputs":{"packages/sdk/observability/src/sentry/browser.ts":{"bytesInOutput":2872},"packages/sdk/observability/src/sentry/tracing.ts":{"bytesInOutput":4592},"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0}},"bytes":7844}}}
@@ -0,0 +1,10 @@
1
+ import {
2
+ Observability
3
+ } from "./chunk-STWCJK52.mjs";
4
+ import "./chunk-2J5YS65Q.mjs";
5
+ import "./chunk-ROSK6U3K.mjs";
6
+ import "./chunk-6KUJPLEH.mjs";
7
+ export {
8
+ Observability
9
+ };
10
+ //# sourceMappingURL=observability-XIDFB6PJ.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SegmentTelemetry
3
- } from "../chunk-HPGC4HC7.mjs";
3
+ } from "../chunk-ROSK6U3K.mjs";
4
4
  import "../chunk-6KUJPLEH.mjs";
5
5
  export {
6
6
  SegmentTelemetry
@@ -26,11 +26,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_BHF4PKAP_exports = {};
30
- __export(chunk_BHF4PKAP_exports, {
29
+ var chunk_ARUBPK2W_exports = {};
30
+ __export(chunk_ARUBPK2W_exports, {
31
31
  SegmentTelemetry: () => SegmentTelemetry
32
32
  });
33
- module.exports = __toCommonJS(chunk_BHF4PKAP_exports);
33
+ module.exports = __toCommonJS(chunk_ARUBPK2W_exports);
34
34
  var import_chunk_FSAOBKO2 = require("./chunk-FSAOBKO2.cjs");
35
35
  var import_analytics_node = __toESM(require("analytics-node"));
36
36
  var import_invariant = require("@dxos/invariant");
@@ -99,7 +99,7 @@ var SegmentTelemetry = class {
99
99
  (0, import_log.log)("sending event to telemetry", {
100
100
  event,
101
101
  options,
102
- tags: this._getTags()
102
+ tags: Object.fromEntries(this._getTags().entries())
103
103
  }, {
104
104
  F: __dxlog_file,
105
105
  L: 55,
@@ -120,7 +120,7 @@ var SegmentTelemetry = class {
120
120
  try {
121
121
  this._analytics.track({
122
122
  ...options,
123
- context: this._getTags(),
123
+ context: Object.fromEntries(this._getTags().entries()),
124
124
  userId,
125
125
  anonymousId,
126
126
  event
@@ -167,4 +167,4 @@ var SegmentTelemetry = class {
167
167
  0 && (module.exports = {
168
168
  SegmentTelemetry
169
169
  });
170
- //# sourceMappingURL=chunk-BHF4PKAP.cjs.map
170
+ //# sourceMappingURL=chunk-ARUBPK2W.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/segment/node.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport Analytics from '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: () => Map<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(apiKey, {\n flushAt: batchSize,\n enable: true,\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: Object.fromEntries(this._getTags().entries()) });\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'event' });\n return;\n }\n\n try {\n this._analytics.track({\n ...options,\n context: Object.fromEntries(this._getTags().entries()),\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((err) => {\n captureException(err);\n });\n } catch (err) {\n log.catch('Failed to flush', err);\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4BAAsB;AAEtB,uBAA0B;AAC1B,iBAAoB;;AAKb,IAAMA,mBAAN,MAAMA;EAIXC,YAAY,EAAEC,QAAQC,WAAWC,QAAO,GAA6B;AACnE,SAAKC,WAAWD;AAChB,QAAI;AACFE,sCAAUJ,QAAQ,kCAAA;;;;;;;;;AAElB,WAAKK,aAAa,IAAIC,sBAAAA,QAAUN,QAAQ;QACtCO,SAASN;QACTO,QAAQ;MACV,CAAA;IACF,SAASC,KAAK;AACZC,qBAAIC,MAAM,kCAAkCF,KAAAA;;;;;;IAC9C;EACF;;;;EAKAG,KAAK,EAAEC,gBAAgBC,aAAaC,YAAYC,QAAQ,GAAGC,QAAAA,IAAyB,CAAC,GAAG;AACtF,QAAI,CAAC,KAAKZ,YAAY;AACpBK,0BAAI,6BAA6B;QAAEQ,QAAQ;MAAO,GAAA;;;;;;AAClD;IACF;AAEA,QAAI;AACF,WAAKb,WAAWO,KAAK;QACnB,GAAGK;QACHD;QACAF;MACF,CAAA;IACF,SAASL,KAAK;AACZC,qBAAIC,MAAM,wBAAwBF,KAAAA;;;;;;IACpC;EACF;;;;EAKAU,MAAM,EAAEN,gBAAgBC,aAAaC,YAAYC,QAAQI,MAAMD,OAAO,GAAGF,QAAAA,GAAyB;AAChGP,wBAAI,8BAA8B;MAAES;MAAOF;MAASI,MAAMC,OAAOC,YAAY,KAAKpB,SAAQ,EAAGqB,QAAO,CAAA;IAAI,GAAA;;;;;;AACxG,QAAI,CAAC,KAAKnB,YAAY;AACpBK,0BAAI,6BAA6B;QAAEQ,QAAQ;MAAQ,GAAA;;;;;;AACnD;IACF;AAEA,QAAI;AACF,WAAKb,WAAWoB,MAAM;QACpB,GAAGR;QACHS,SAASJ,OAAOC,YAAY,KAAKpB,SAAQ,EAAGqB,QAAO,CAAA;QACnDR;QACAF;QACAK;MACF,CAAA;IACF,SAASV,KAAK;AACZC,qBAAIC,MAAM,yBAAyBF,KAAAA;;;;;;IACrC;EACF;;;;EAKA,MAAMkB,QAAQ;AACZ,QAAI,CAAC,KAAKtB,YAAY;AACpBK,0BAAI,6BAA6B;QAAEQ,QAAQ;MAAQ,GAAA;;;;;;AACnD;IACF;AAEA,QAAI;AACF,YAAM,KAAKb,WAAWsB,MAAM,CAAClB,QAAAA;AAC3BmB,oDAAiBnB,GAAAA;MACnB,CAAA;IACF,SAASA,KAAK;AACZC,qBAAIC,MAAM,mBAAmBF,KAAAA;;;;;;IAC/B;EACF;AACF;",
6
+ "names": ["SegmentTelemetry", "constructor", "apiKey", "batchSize", "getTags", "_getTags", "invariant", "_analytics", "Analytics", "flushAt", "enable", "err", "log", "catch", "page", "installationId", "anonymousId", "identityId", "userId", "options", "action", "event", "name", "tags", "Object", "fromEntries", "entries", "track", "context", "flush", "captureException"]
7
+ }