@dxos/observability 0.3.11-main.2f1331c → 0.3.11-main.463e5cd

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 (89) hide show
  1. package/README.md +9 -4
  2. package/dist/lib/browser/{chunk-2J5YS65Q.mjs → chunk-6ZTMPKEG.mjs} +3 -3
  3. package/dist/lib/browser/{chunk-2J5YS65Q.mjs.map → chunk-6ZTMPKEG.mjs.map} +3 -3
  4. package/dist/lib/browser/chunk-HPGC4HC7.mjs +83 -0
  5. package/dist/lib/browser/chunk-HPGC4HC7.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-OCQVYNE3.mjs +842 -0
  7. package/dist/lib/browser/chunk-OCQVYNE3.mjs.map +7 -0
  8. package/dist/lib/browser/datadog/index.mjs +1 -1
  9. package/dist/lib/browser/index.mjs +32 -553
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/observability-QNG5QON4.mjs +10 -0
  13. package/dist/lib/browser/observability-QNG5QON4.mjs.map +7 -0
  14. package/dist/lib/browser/segment/index.mjs +8 -0
  15. package/dist/lib/browser/segment/index.mjs.map +7 -0
  16. package/dist/lib/node/chunk-BHF4PKAP.cjs +170 -0
  17. package/dist/lib/node/chunk-BHF4PKAP.cjs.map +7 -0
  18. package/dist/lib/node/chunk-CBMRJXSL.cjs +861 -0
  19. package/dist/lib/node/chunk-CBMRJXSL.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-VDBBIYH6.cjs → chunk-ZJRKFREX.cjs} +6 -6
  21. package/dist/lib/node/{chunk-VDBBIYH6.cjs.map → chunk-ZJRKFREX.cjs.map} +3 -3
  22. package/dist/lib/node/datadog/index.cjs +3 -3
  23. package/dist/lib/node/datadog/index.cjs.map +1 -1
  24. package/dist/lib/node/index.cjs +31 -603
  25. package/dist/lib/node/index.cjs.map +4 -4
  26. package/dist/lib/node/meta.json +1 -1
  27. package/dist/lib/node/observability-JMKBRR4L.cjs +32 -0
  28. package/dist/lib/node/observability-JMKBRR4L.cjs.map +7 -0
  29. package/dist/lib/node/segment/index.cjs +30 -0
  30. package/dist/lib/node/segment/index.cjs.map +7 -0
  31. package/dist/types/src/datadog/metrics.d.ts +3 -1
  32. package/dist/types/src/datadog/metrics.d.ts.map +1 -1
  33. package/dist/types/src/datadog/metrics.js +1 -1
  34. package/dist/types/src/datadog/metrics.js.map +1 -1
  35. package/dist/types/src/helpers/browser-observability.d.ts +17 -0
  36. package/dist/types/src/helpers/browser-observability.d.ts.map +1 -0
  37. package/dist/types/src/helpers/browser-observability.js +166 -0
  38. package/dist/types/src/helpers/browser-observability.js.map +1 -0
  39. package/dist/types/src/helpers/common.d.ts +10 -0
  40. package/dist/types/src/helpers/common.d.ts.map +1 -0
  41. package/dist/types/src/helpers/common.js +23 -0
  42. package/dist/types/src/helpers/common.js.map +1 -0
  43. package/dist/types/src/helpers/index.d.ts +6 -0
  44. package/dist/types/src/helpers/index.d.ts.map +1 -0
  45. package/dist/types/src/helpers/index.js +25 -0
  46. package/dist/types/src/helpers/index.js.map +1 -0
  47. package/dist/types/src/{util.d.ts → helpers/map-spaces.d.ts} +2 -3
  48. package/dist/types/src/helpers/map-spaces.d.ts.map +1 -0
  49. package/dist/types/src/{util.js → helpers/map-spaces.js} +1 -2
  50. package/dist/types/src/helpers/map-spaces.js.map +1 -0
  51. package/dist/types/src/helpers/node-observability.d.ts +34 -0
  52. package/dist/types/src/helpers/node-observability.d.ts.map +1 -0
  53. package/dist/types/src/helpers/node-observability.js +106 -0
  54. package/dist/types/src/helpers/node-observability.js.map +1 -0
  55. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts +4 -0
  56. package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -0
  57. package/dist/types/src/helpers/setup-telemetry-listeners.js +91 -0
  58. package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -0
  59. package/dist/types/src/index.d.ts +1 -0
  60. package/dist/types/src/index.d.ts.map +1 -1
  61. package/dist/types/src/index.js +1 -0
  62. package/dist/types/src/index.js.map +1 -1
  63. package/dist/types/src/observability.d.ts +8 -8
  64. package/dist/types/src/observability.d.ts.map +1 -1
  65. package/dist/types/src/observability.js +51 -37
  66. package/dist/types/src/observability.js.map +1 -1
  67. package/dist/types/src/segment/browser.d.ts.map +1 -1
  68. package/dist/types/src/segment/browser.js +2 -2
  69. package/dist/types/src/segment/browser.js.map +1 -1
  70. package/dist/types/src/segment/node.d.ts.map +1 -1
  71. package/dist/types/src/segment/node.js +2 -2
  72. package/dist/types/src/segment/node.js.map +1 -1
  73. package/dist/types/src/segment/types.d.ts +3 -1
  74. package/dist/types/src/segment/types.d.ts.map +1 -1
  75. package/package.json +18 -14
  76. package/src/datadog/metrics.ts +3 -5
  77. package/src/helpers/browser-observability.ts +177 -0
  78. package/src/helpers/common.ts +25 -0
  79. package/src/helpers/index.ts +9 -0
  80. package/src/{util.ts → helpers/map-spaces.ts} +1 -2
  81. package/src/helpers/node-observability.ts +151 -0
  82. package/src/helpers/setup-telemetry-listeners.ts +110 -0
  83. package/src/index.ts +1 -0
  84. package/src/observability.ts +61 -39
  85. package/src/segment/browser.ts +3 -3
  86. package/src/segment/node.ts +3 -3
  87. package/src/segment/types.ts +1 -1
  88. package/dist/types/src/util.d.ts.map +0 -1
  89. package/dist/types/src/util.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/observability.ts", "../../../src/cli-observability-secrets.json", "../../../src/segment/node.ts", "../../../src/util.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 { 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';\nimport { mapSpaces } from './util';\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 };\n logProcessor?: boolean;\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, logProcessor }: 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 = 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(nf): Combine with setDeviceTags.\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 // TODO(nf): check mode\n // TODO(nf): cardinality\n this.setTag('identityKey', idqr?.identity?.identityKey.truncate());\n if (idqr?.identity?.profile?.displayName) {\n this.setTag('username', idqr?.identity?.profile?.displayName);\n }\n });\n }\n\n async setDeviceTags(client: Client) {\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) {\n let 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 (space) => {\n log('send space update');\n for (const sp of mapSpaces(spaces, { truncateKeys: true })) {\n this.gauge('dxos.client.space.members', sp.members, { key: sp.key });\n this.gauge('dxos.client.space.objects', sp.objects, { key: sp.key });\n this.gauge('dxos.client.space.epoch', sp.epoch, { key: sp.key });\n this.gauge('dxos.client.space.currentDataMutations', sp.currentDataMutations, { key: sp.key });\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 () => {\n spaces = client.spaces.get();\n // spaces = await this.getSpaces(this._agent.client);\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\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", "//\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 name: space.properties.name,\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"],
5
- "mappings": "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",
6
- "names": ["import_invariant", "import_log", "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", "mapSpaces", "spaces", "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", "properties", "members", "get", "length", "objects", "db", "query", "progress", "Math", "min", "abs", "toFixed", "SPACE_METRICS_MIN_INTERVAL", "DATADOG_IDLE_INTERVAL", "ERROR_TAGS", "Observability", "namespace", "config", "secrets", "group", "mode", "telemetry", "errorLog", "logProcessor", "_mode", "Context", "_tags", "Map", "_namespace", "_config", "_group", "_secrets", "_loadSecrets", "_telemetryBatchSize", "_errorReportingOptions", "sentryInitOptions", "_errorLogProcessor", "setTag", "isNode", "buildSecrets", "rtc", "DX_ENVIRONMENT", "DX_RELEASE", "SENTRY_DESTINATION", "TELEMETRY_API_KEY", "IPDATA_API_KEY", "DATADOG_API_KEY", "DATADOG_APP_KEY", "initialize", "_initMetrics", "_initTelemetry", "_initErrorLogs", "close", "_ctx", "dispose", "setMode", "enabled", "value", "includes", "sentrySetTag", "set", "setIdentityTags", "client", "services", "IdentityService", "queryIdentity", "subscribe", "idqr", "identity", "identityKey", "profile", "displayName", "setDeviceTags", "DevicesService", "queryDevices", "dqr", "devices", "device", "thisDevice", "find", "kind", "DeviceKind", "CURRENT", "deviceKey", "label", "_metrics", "DatadogMetrics", "gauge", "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", "subscriptions", "onDispose", "subscription", "unsubscribe", "updateSpaceMetrics", "debounce", "sp", "subscribeToSpaceUpdate", "next", "toHex", "filter", "has", "scheduleTaskInterval", "startRuntimeMetrics", "frequency", "platform", "SystemService", "getPlatform", "Platform", "PLATFORM_TYPE", "type", "toLowerCase", "arch", "runtime", "then", "memory", "rss", "heapTotal", "heapUsed", "error", "_telemetry", "info", "dest", "sentryInit", "destination", "scrubFilenames", "tracing", "sentryConfigureTracing", "enableSentryLogProcessor", "v", "k", "sentryCaptureException"]
3
+ "sources": ["index.cjs"],
4
+ "sourcesContent": ["import {\n OBSERVABILITY_DISABLED_KEY,\n OBSERVABILITY_GROUP_KEY,\n Observability,\n getObservabilityGroup,\n getObservabilityState,\n getTelemetryIdentifier,\n initializeAppObservability,\n initializeNodeObservability,\n isObservabilityDisabled,\n mapSpaces,\n setupTelemetryListeners,\n showObservabilityBanner,\n storeObservabilityDisabled,\n storeObservabilityGroup\n} from \"./chunk-CBMRJXSL.cjs\";\nimport \"./chunk-ZJRKFREX.cjs\";\nimport \"./chunk-BHF4PKAP.cjs\";\nimport \"./chunk-FSAOBKO2.cjs\";\nexport {\n OBSERVABILITY_DISABLED_KEY,\n OBSERVABILITY_GROUP_KEY,\n Observability,\n getObservabilityGroup,\n getObservabilityState,\n getTelemetryIdentifier,\n initializeAppObservability,\n initializeNodeObservability,\n isObservabilityDisabled,\n mapSpaces,\n setupTelemetryListeners,\n showObservabilityBanner,\n storeObservabilityDisabled,\n storeObservabilityGroup\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAeO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;",
6
+ "names": []
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/observability/src/datadog/node.ts":{"bytes":1685,"imports":[{"path":"node:os","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/node.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/datadog/index.ts":{"bytes":553,"imports":[{"path":"packages/sdk/observability/src/datadog/node.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/node.ts":{"bytes":16627,"imports":[{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@sentry/tracing","kind":"dynamic-import","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1037,"imports":[],"format":"esm"},"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/index.ts":{"bytes":908,"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"},{"path":"packages/sdk/observability/src/sentry/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"packages/sdk/observability/src/segment/node.ts":{"bytes":9463,"imports":[{"path":"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":1034,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":547,"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/util.ts":{"bytes":6449,"imports":[],"format":"esm"},"packages/sdk/observability/src/observability.ts":{"bytes":49999,"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/segment/index.ts","kind":"import-statement","original":"./segment"},{"path":"packages/sdk/observability/src/sentry/index.ts","kind":"import-statement","original":"./sentry"},{"path":"packages/sdk/observability/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/sdk/observability/src/index.ts":{"bytes":483,"imports":[{"path":"packages/sdk/observability/src/observability.ts","kind":"import-statement","original":"./observability"}],"format":"esm"}},"outputs":{"packages/sdk/observability/dist/lib/node/datadog/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/datadog/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-VDBBIYH6.cjs","kind":"import-statement"}],"exports":["DatadogMetrics","defaultOptions"],"entryPoint":"packages/sdk/observability/src/datadog/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":31357},"packages/sdk/observability/dist/lib/node/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-VDBBIYH6.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","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":"analytics-node","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/index.ts","inputs":{"packages/sdk/observability/src/observability.ts":{"bytesInOutput":12683},"packages/sdk/observability/src/cli-observability-secrets.json":{"bytesInOutput":347},"packages/sdk/observability/src/segment/node.ts":{"bytesInOutput":2910},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/util.ts":{"bytesInOutput":1212},"packages/sdk/observability/src/index.ts":{"bytesInOutput":0}},"bytes":17661},"packages/sdk/observability/dist/lib/node/chunk-VDBBIYH6.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3081},"packages/sdk/observability/dist/lib/node/chunk-VDBBIYH6.cjs":{"imports":[{"path":"node:os","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/node.ts":{"bytesInOutput":450},"packages/sdk/observability/src/datadog/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/datadog/metrics.ts":{"bytesInOutput":1158}},"bytes":1804},"packages/sdk/observability/dist/lib/node/sentry/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/sentry/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","kind":"import-statement"}],"exports":["SENTRY_LOG_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","init","setTag","setTags","setUser"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":384},"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16118},"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs":{"imports":[{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@sentry/tracing","kind":"dynamic-import","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}],"exports":["SENTRY_LOG_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","init","setTag","setTags","setUser"],"inputs":{"packages/sdk/observability/src/sentry/node.ts":{"bytesInOutput":3654},"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/sentry/tracing.ts":{"bytesInOutput":4629}},"bytes":8601}}}
1
+ {"inputs":{"packages/sdk/observability/src/datadog/node.ts":{"bytes":1685,"imports":[{"path":"node:os","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/node.ts","kind":"import-statement","original":"./node"}],"format":"esm"},"packages/sdk/observability/src/datadog/index.ts":{"bytes":553,"imports":[{"path":"packages/sdk/observability/src/datadog/node.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/node.ts":{"bytes":16627,"imports":[{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@sentry/tracing","kind":"dynamic-import","external":true}],"format":"esm"},"packages/sdk/observability/src/sentry/types.ts":{"bytes":1037,"imports":[],"format":"esm"},"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/index.ts":{"bytes":908,"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"},{"path":"packages/sdk/observability/src/sentry/tracing.ts","kind":"import-statement","original":"./tracing"}],"format":"esm"},"packages/sdk/observability/src/segment/node.ts":{"bytes":9207,"imports":[{"path":"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":1042,"imports":[],"format":"esm"},"packages/sdk/observability/src/segment/index.ts":{"bytes":547,"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/observability.ts":{"bytes":53691,"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":14102,"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":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/node/datadog/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/datadog/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-ZJRKFREX.cjs","kind":"import-statement"}],"exports":["DatadogMetrics","defaultOptions"],"entryPoint":"packages/sdk/observability/src/datadog/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-CBMRJXSL.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-ZJRKFREX.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-BHF4PKAP.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","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/node/segment/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/segment/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-BHF4PKAP.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","kind":"import-statement"}],"exports":["SegmentTelemetry"],"entryPoint":"packages/sdk/observability/src/segment/index.ts","inputs":{},"bytes":158},"packages/sdk/observability/dist/lib/node/sentry/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/sentry/index.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","kind":"import-statement"}],"exports":["SENTRY_LOG_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","init","setTag","setTags","setUser"],"entryPoint":"packages/sdk/observability/src/sentry/index.ts","inputs":{},"bytes":384},"packages/sdk/observability/dist/lib/node/observability-JMKBRR4L.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/observability/dist/lib/node/observability-JMKBRR4L.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-CBMRJXSL.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-ZJRKFREX.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-BHF4PKAP.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","kind":"import-statement"}],"exports":["Observability"],"entryPoint":"packages/sdk/observability/src/observability.ts","inputs":{},"bytes":229},"packages/sdk/observability/dist/lib/node/chunk-CBMRJXSL.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":52990},"packages/sdk/observability/dist/lib/node/chunk-CBMRJXSL.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-ZJRKFREX.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-BHF4PKAP.cjs","kind":"import-statement"},{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","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/node/observability-JMKBRR4L.cjs","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}],"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":13583},"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":3419},"packages/sdk/observability/src/helpers/map-spaces.ts":{"bytesInOutput":1177},"packages/sdk/observability/src/helpers/setup-telemetry-listeners.ts":{"bytesInOutput":2736}},"bytes":27371},"packages/sdk/observability/dist/lib/node/chunk-ZJRKFREX.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3002},"packages/sdk/observability/dist/lib/node/chunk-ZJRKFREX.cjs":{"imports":[{"path":"node:os","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/node.ts":{"bytesInOutput":450},"packages/sdk/observability/src/datadog/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/datadog/metrics.ts":{"bytesInOutput":1128}},"bytes":1774},"packages/sdk/observability/dist/lib/node/chunk-BHF4PKAP.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3928},"packages/sdk/observability/dist/lib/node/chunk-BHF4PKAP.cjs":{"imports":[{"path":"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs","kind":"import-statement"},{"path":"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"],"inputs":{"packages/sdk/observability/src/segment/node.ts":{"bytesInOutput":2850},"packages/sdk/observability/src/segment/index.ts":{"bytesInOutput":0}},"bytes":3036},"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16118},"packages/sdk/observability/dist/lib/node/chunk-FSAOBKO2.cjs":{"imports":[{"path":"@sentry/integrations","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@sentry/node","kind":"import-statement","external":true},{"path":"@sentry/tracing","kind":"dynamic-import","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}],"exports":["SENTRY_LOG_PROCESSOR","addBreadcrumb","captureException","configureTracing","enableSentryLogProcessor","init","setTag","setTags","setUser"],"inputs":{"packages/sdk/observability/src/sentry/node.ts":{"bytesInOutput":3654},"packages/sdk/observability/src/sentry/index.ts":{"bytesInOutput":0},"packages/sdk/observability/src/sentry/tracing.ts":{"bytesInOutput":4629}},"bytes":8601}}}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var observability_JMKBRR4L_exports = {};
20
+ __export(observability_JMKBRR4L_exports, {
21
+ Observability: () => import_chunk_CBMRJXSL.Observability
22
+ });
23
+ module.exports = __toCommonJS(observability_JMKBRR4L_exports);
24
+ var import_chunk_CBMRJXSL = require("./chunk-CBMRJXSL.cjs");
25
+ var import_chunk_ZJRKFREX = require("./chunk-ZJRKFREX.cjs");
26
+ var import_chunk_BHF4PKAP = require("./chunk-BHF4PKAP.cjs");
27
+ var import_chunk_FSAOBKO2 = require("./chunk-FSAOBKO2.cjs");
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ Observability
31
+ });
32
+ //# sourceMappingURL=observability-JMKBRR4L.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["observability-JMKBRR4L.cjs"],
4
+ "sourcesContent": ["import {\n Observability\n} from \"./chunk-CBMRJXSL.cjs\";\nimport \"./chunk-ZJRKFREX.cjs\";\nimport \"./chunk-BHF4PKAP.cjs\";\nimport \"./chunk-FSAOBKO2.cjs\";\nexport {\n Observability\n};\n//# sourceMappingURL=observability-JMKBRR4L.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAEO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;",
6
+ "names": []
7
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var segment_exports = {};
20
+ __export(segment_exports, {
21
+ SegmentTelemetry: () => import_chunk_BHF4PKAP.SegmentTelemetry
22
+ });
23
+ module.exports = __toCommonJS(segment_exports);
24
+ var import_chunk_BHF4PKAP = require("../chunk-BHF4PKAP.cjs");
25
+ var import_chunk_FSAOBKO2 = require("../chunk-FSAOBKO2.cjs");
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ SegmentTelemetry
29
+ });
30
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["index.cjs"],
4
+ "sourcesContent": ["import {\n SegmentTelemetry\n} from \"../chunk-BHF4PKAP.cjs\";\nimport \"../chunk-FSAOBKO2.cjs\";\nexport {\n SegmentTelemetry\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAEO;AACP,4BAAO;",
6
+ "names": []
7
+ }
@@ -3,7 +3,9 @@ export type DatadogOptions = {
3
3
  apiKey: string;
4
4
  host?: string;
5
5
  site?: String;
6
- getTags: () => Map<string, string>;
6
+ getTags: () => {
7
+ [key: string]: string;
8
+ };
7
9
  config: Config;
8
10
  };
9
11
  export declare class DatadogMetrics {
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/datadog/metrics.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAC,CAAM;IAC9B,OAAO,CAAC,QAAQ,CAA4B;gBAEhC,OAAO,EAAE,cAAc;IAOnC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAS7C,KAAK;CAGN"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/datadog/metrics.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAEzC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAC,CAAM;IAC9B,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,OAAO,EAAE,cAAc;IAOnC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAO7C,KAAK;CAGN"}
@@ -44,7 +44,7 @@ class DatadogMetrics {
44
44
  }
45
45
  gauge(name, value, tags) {
46
46
  (0, invariant_1.invariant)(this._datadogmetrics, 'Datadog not initialized');
47
- const mergedTags = Object.entries({ ...Object.fromEntries(this._getTags().entries()), ...tags }).map(([key, value]) => `${key}:${value}`);
47
+ const mergedTags = Object.entries({ ...this._getTags(), ...tags }).map(([key, value]) => `${key}:${value}`);
48
48
  (0, log_1.log)('datadog gauge', { name, value, tags: mergedTags });
49
49
  this._datadogmetrics.gauge(name, value, mergedTags);
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../src/datadog/metrics.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,yDAA2C;AAC3C,kDAA0B;AAG1B,+CAA4C;AAC5C,mCAAgC;AAEhC,iCAAwC;AAYxC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAExB,MAAa,cAAc;IAIzB,YAAY,OAAuB;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,KAAa,EAAE,IAAU;QAC3C,IAAA,qBAAS,EAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAClG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CACpC,CAAC;QACF,IAAA,SAAG,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF;AAvBD,wCAuBC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../src/datadog/metrics.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,yDAA2C;AAC3C,kDAA0B;AAG1B,+CAA4C;AAC5C,mCAAgC;AAEhC,iCAAwC;AAYxC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAExB,MAAa,cAAc;IAIzB,YAAY,OAAuB;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,KAAa,EAAE,IAAU;QAC3C,IAAA,qBAAS,EAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5G,IAAA,SAAG,EAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF;AArBD,wCAqBC"}
@@ -0,0 +1,17 @@
1
+ import type { Config } from '@dxos/client';
2
+ import type { Mode, Observability } from '../observability';
3
+ export declare const OBSERVABILITY_DISABLED_KEY = "observability-disabled";
4
+ export declare const OBSERVABILITY_GROUP_KEY = "observability-group";
5
+ export declare const isObservabilityDisabled: (namespace: string) => Promise<boolean>;
6
+ export declare const storeObservabilityDisabled: (namespace: string, value: boolean) => Promise<void>;
7
+ export declare const getObservabilityGroup: (namespace: string) => Promise<string | undefined>;
8
+ export declare const storeObservabilityGroup: (namespace: string, value: string) => Promise<void>;
9
+ export type AppObservabilityOptions = {
10
+ namespace: string;
11
+ config: Config;
12
+ mode?: Mode;
13
+ tracingEnable?: boolean;
14
+ replayEnable?: boolean;
15
+ };
16
+ export declare const initializeAppObservability: ({ namespace, config, mode, tracingEnable, replayEnable, }: AppObservabilityOptions) => Promise<Observability>;
17
+ //# sourceMappingURL=browser-observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-observability.d.ts","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5D,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,cAAqB,MAAM,KAAG,QAAQ,OAAO,CAOhF,CAAC;AAEF,eAAO,MAAM,0BAA0B,cAAqB,MAAM,SAAS,OAAO,kBAMjF,CAAC;AAEF,eAAO,MAAM,qBAAqB,cAAqB,MAAM,KAAG,QAAQ,MAAM,GAAG,SAAS,CAMzF,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAAqB,MAAM,SAAS,MAAM,kBAM7E,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CAExB,CAAC;AAKF,eAAO,MAAM,0BAA0B,8DAMpC,uBAAuB,2BA0GzB,CAAC"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.initializeAppObservability = exports.storeObservabilityGroup = exports.getObservabilityGroup = exports.storeObservabilityDisabled = exports.isObservabilityDisabled = exports.OBSERVABILITY_GROUP_KEY = exports.OBSERVABILITY_DISABLED_KEY = void 0;
30
+ // NOTE: localStorage is not available in web workers.
31
+ const localForage = __importStar(require("localforage"));
32
+ const log_1 = require("@dxos/log");
33
+ exports.OBSERVABILITY_DISABLED_KEY = 'observability-disabled';
34
+ exports.OBSERVABILITY_GROUP_KEY = 'observability-group';
35
+ const isObservabilityDisabled = async (namespace) => {
36
+ try {
37
+ return (await localForage.getItem(`${namespace}:${exports.OBSERVABILITY_DISABLED_KEY}`)) === 'true';
38
+ }
39
+ catch (err) {
40
+ log_1.log.catch('Failed to check if observability is disabled, assuming it is', err);
41
+ return true;
42
+ }
43
+ };
44
+ exports.isObservabilityDisabled = isObservabilityDisabled;
45
+ const storeObservabilityDisabled = async (namespace, value) => {
46
+ try {
47
+ await localForage.setItem(`${namespace}:${exports.OBSERVABILITY_DISABLED_KEY}`, String(value));
48
+ }
49
+ catch (err) {
50
+ log_1.log.catch('Failed to store observability disabled', err);
51
+ }
52
+ };
53
+ exports.storeObservabilityDisabled = storeObservabilityDisabled;
54
+ const getObservabilityGroup = async (namespace) => {
55
+ var _a;
56
+ try {
57
+ return (_a = (await localForage.getItem(`${namespace}:${exports.OBSERVABILITY_GROUP_KEY}`))) !== null && _a !== void 0 ? _a : undefined;
58
+ }
59
+ catch (err) {
60
+ log_1.log.catch('Failed to get observability group', err);
61
+ }
62
+ };
63
+ exports.getObservabilityGroup = getObservabilityGroup;
64
+ const storeObservabilityGroup = async (namespace, value) => {
65
+ try {
66
+ await localForage.setItem(`${namespace}:${exports.OBSERVABILITY_GROUP_KEY}`, value);
67
+ }
68
+ catch (err) {
69
+ log_1.log.catch('Failed to store observability group', err);
70
+ }
71
+ };
72
+ exports.storeObservabilityGroup = storeObservabilityGroup;
73
+ // TODO(wittjosiah): Store preference for disabling observability.
74
+ // At minimum should be stored locally (i.e., localstorage), possibly in halo preference.
75
+ // Needs to be hooked up to settings page for user visibility.
76
+ const initializeAppObservability = async ({ namespace, config, mode = 'basic', tracingEnable = true, replayEnable = true, }) => {
77
+ var _a, _b;
78
+ (0, log_1.log)('initializeAppObservability', { config });
79
+ /*
80
+ const platform = (await client.services.services.SystemService?.getPlatform()) as Platform;
81
+ if (!platform) {
82
+ log.error('failed to get platform, could not initialize observability');
83
+ return undefined;
84
+ }
85
+ */
86
+ const group = (_a = (await (0, exports.getObservabilityGroup)(namespace))) !== null && _a !== void 0 ? _a : undefined;
87
+ const release = `${namespace}@${config.get('runtime.app.build.version')}`;
88
+ const environment = config.get('runtime.app.env.DX_ENVIRONMENT');
89
+ const observabilityDisabled = await (0, exports.isObservabilityDisabled)(namespace);
90
+ const { Observability } = await Promise.resolve().then(() => __importStar(require('../observability')));
91
+ // TODO(nf): configure mode
92
+ const observability = new Observability({
93
+ namespace,
94
+ group,
95
+ mode,
96
+ config,
97
+ errorLog: {
98
+ sentryInitOptions: {
99
+ environment,
100
+ release,
101
+ tracing: tracingEnable,
102
+ replay: replayEnable,
103
+ // TODO(wittjosiah): Configure these.
104
+ sampleRate: 1.0,
105
+ replaySampleRate: 0.1,
106
+ replaySampleRateOnError: 1.0,
107
+ },
108
+ },
109
+ });
110
+ // global kill switch
111
+ if (observabilityDisabled) {
112
+ observability.setMode('disabled');
113
+ log_1.log.info('observability disabled');
114
+ return observability;
115
+ }
116
+ try {
117
+ const getIPData = async (config) => {
118
+ const IP_DATA_CACHE_TIMEOUT = 6 * 60 * 60 * 1000; // 6 hours
119
+ // Check cache first.
120
+ const cachedData = await localForage.getItem('dxos:observability:ipdata');
121
+ if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {
122
+ return cachedData.data;
123
+ }
124
+ // Fetch data if not cached.
125
+ const IPDATA_API_KEY = config.get('runtime.app.env.DX_IPDATA_API_KEY');
126
+ if (IPDATA_API_KEY) {
127
+ return fetch(`https://api.ipdata.co?api-key=${IPDATA_API_KEY}`)
128
+ .then((res) => res.json())
129
+ .then((data) => {
130
+ // Cache data.
131
+ localForage
132
+ .setItem('dxos:observability:ipdata', {
133
+ data,
134
+ timestamp: Date.now(),
135
+ })
136
+ .catch((err) => observability.captureException(err));
137
+ return data;
138
+ })
139
+ .catch((err) => observability.captureException(err));
140
+ }
141
+ };
142
+ // TODO(nf): plugin state?
143
+ // TODO(nf): should provide capability to init Sentry earlier in booting process to capture errors during initialization.
144
+ observability.initialize();
145
+ const ipData = await getIPData(config);
146
+ ipData && observability.addIPDataTelemetryTags(ipData);
147
+ if (typeof navigator !== 'undefined' && ((_b = navigator.storage) === null || _b === void 0 ? void 0 : _b.estimate)) {
148
+ setInterval(async () => {
149
+ try {
150
+ const storageEstimate = await navigator.storage.estimate();
151
+ storageEstimate.usage && observability.setTag('storageUsage', storageEstimate.usage.toString(), 'telemetry');
152
+ storageEstimate.quota && observability.setTag('storageQuota', storageEstimate.quota.toString(), 'telemetry');
153
+ }
154
+ catch (error) {
155
+ log_1.log.warn('Failed to run estimate()', error);
156
+ }
157
+ }, 10e3);
158
+ }
159
+ }
160
+ catch (err) {
161
+ log_1.log.error('Failed to initialize app observability', err);
162
+ }
163
+ return observability;
164
+ };
165
+ exports.initializeAppObservability = initializeAppObservability;
166
+ //# sourceMappingURL=browser-observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-observability.js","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Client } from '@dxos/client';
2
+ export declare const getTelemetryIdentifier: (client: Client) => string | undefined;
3
+ export type IPData = {
4
+ city: string;
5
+ region: string;
6
+ country: string;
7
+ latitude: number;
8
+ longitude: number;
9
+ };
10
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/helpers/common.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,eAAO,MAAM,sBAAsB,WAAY,MAAM,uBAWpD,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getTelemetryIdentifier = void 0;
7
+ // TODO(wittjosiah): Improve privacy of telemetry identifiers.
8
+ // - Identifier should be generated client-side with no attachment to identity.
9
+ // - Identifier can then be reset by user.
10
+ // - Identifier can be synced via HALO to allow for correlation of events bewteen devices.
11
+ // - Identifier should also be stored outside of HALO such that it is available immediately on startup.
12
+ const getTelemetryIdentifier = (client) => {
13
+ if (!(client === null || client === void 0 ? void 0 : client.initialized)) {
14
+ return undefined;
15
+ }
16
+ const identity = client.halo.identity.get();
17
+ if (identity) {
18
+ return identity.identityKey.truncate();
19
+ }
20
+ return undefined;
21
+ };
22
+ exports.getTelemetryIdentifier = getTelemetryIdentifier;
23
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/helpers/common.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAIF,8DAA8D;AAC9D,gFAAgF;AAChF,2CAA2C;AAC3C,2FAA2F;AAC3F,wGAAwG;AACjG,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAE,EAAE;IACvD,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC5C,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KACxC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,sBAAsB,0BAWjC"}
@@ -0,0 +1,6 @@
1
+ export * from './browser-observability';
2
+ export * from './common';
3
+ export * from './node-observability';
4
+ export * from './map-spaces';
5
+ export * from './setup-telemetry-listeners';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/helpers/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./browser-observability"), exports);
21
+ __exportStar(require("./common"), exports);
22
+ __exportStar(require("./node-observability"), exports);
23
+ __exportStar(require("./map-spaces"), exports);
24
+ __exportStar(require("./setup-telemetry-listeners"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,0DAAwC;AACxC,2CAAyB;AACzB,uDAAqC;AACrC,+CAA6B;AAC7B,8DAA4C"}
@@ -1,4 +1,4 @@
1
- import { type Space } from '@dxos/client-protocol';
1
+ import type { Space } from '@dxos/client-protocol';
2
2
  export type MapSpacesOptions = {
3
3
  verbose?: boolean;
4
4
  truncateKeys?: boolean;
@@ -6,7 +6,6 @@ export type MapSpacesOptions = {
6
6
  export declare const mapSpaces: (spaces: Space[], options?: MapSpacesOptions) => {
7
7
  key: string;
8
8
  open: boolean;
9
- name: any;
10
9
  members: number;
11
10
  objects: number;
12
11
  startup: number | undefined;
@@ -16,4 +15,4 @@ export declare const mapSpaces: (spaces: Space[], options?: MapSpacesOptions) =>
16
15
  totalDataMutations: number;
17
16
  progress: string;
18
17
  }[];
19
- //# sourceMappingURL=util.d.ts.map
18
+ //# sourceMappingURL=map-spaces.d.ts.map