@dxos/observability 0.8.3 → 0.8.4-main.1068cf700f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-K4VFBKST.mjs +13 -0
- package/dist/lib/browser/chunk-K4VFBKST.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1066 -34
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/log-processor-FDLTDQEM.mjs +45 -0
- package/dist/lib/browser/log-processor-FDLTDQEM.mjs.map +7 -0
- package/dist/lib/browser/logs-ATTRIUTL.mjs +113 -0
- package/dist/lib/browser/logs-ATTRIUTL.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/metrics-PKTV6IGF.mjs +130 -0
- package/dist/lib/browser/metrics-PKTV6IGF.mjs.map +7 -0
- package/dist/lib/browser/traces-browser-XYXBF5ZX.mjs +62 -0
- package/dist/lib/browser/traces-browser-XYXBF5ZX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FEVP3MK4.mjs +15 -0
- package/dist/lib/node-esm/chunk-FEVP3MK4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/index.mjs +1070 -34
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/log-processor-TKJVJJSJ.mjs +46 -0
- package/dist/lib/node-esm/log-processor-TKJVJJSJ.mjs.map +7 -0
- package/dist/lib/node-esm/logs-7J45KLM7.mjs +114 -0
- package/dist/lib/node-esm/logs-7J45KLM7.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/metrics-H7DDLYSG.mjs +131 -0
- package/dist/lib/node-esm/metrics-H7DDLYSG.mjs.map +7 -0
- package/dist/lib/node-esm/traces-KMTHMYFX.mjs +44 -0
- package/dist/lib/node-esm/traces-KMTHMYFX.mjs.map +7 -0
- package/dist/types/src/cli-observability-secrets.json +3 -4
- package/dist/types/src/extensions/index.d.ts +3 -0
- package/dist/types/src/extensions/index.d.ts.map +1 -0
- package/dist/types/src/extensions/index.js +6 -0
- package/dist/types/src/extensions/index.js.map +1 -0
- package/dist/types/src/extensions/otel/extension.d.ts +23 -0
- package/dist/types/src/extensions/otel/extension.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/extension.js +124 -0
- package/dist/types/src/extensions/otel/extension.js.map +1 -0
- package/dist/types/src/extensions/otel/index.d.ts +2 -0
- package/dist/types/src/extensions/otel/index.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/index.js +5 -0
- package/dist/types/src/extensions/otel/index.js.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/logs.d.ts +4 -3
- package/dist/types/src/extensions/otel/logs.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/logs.js +104 -0
- package/dist/types/src/extensions/otel/logs.js.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/metrics.d.ts +0 -1
- package/dist/types/src/extensions/otel/metrics.d.ts.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/metrics.js +6 -12
- package/dist/types/src/extensions/otel/metrics.js.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/otel.d.ts +3 -3
- package/dist/types/src/extensions/otel/otel.d.ts.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/otel.js +1 -1
- package/dist/types/src/extensions/otel/otel.js.map +1 -0
- package/dist/types/src/extensions/otel/traces-browser.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/traces-browser.js +44 -0
- package/dist/types/src/extensions/otel/traces-browser.js.map +1 -0
- package/dist/types/src/extensions/otel/traces.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/traces.js +38 -0
- package/dist/types/src/extensions/otel/traces.js.map +1 -0
- package/dist/types/src/extensions/posthog/extension.d.ts +15 -0
- package/dist/types/src/extensions/posthog/extension.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/extension.js +143 -0
- package/dist/types/src/extensions/posthog/extension.js.map +1 -0
- package/dist/types/src/extensions/posthog/index.d.ts +2 -0
- package/dist/types/src/extensions/posthog/index.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/index.js +5 -0
- package/dist/types/src/extensions/posthog/index.js.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.d.ts +3 -0
- package/dist/types/src/extensions/posthog/log-processor.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.js +45 -0
- package/dist/types/src/extensions/posthog/log-processor.js.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.test.d.ts +2 -0
- package/dist/types/src/extensions/posthog/log-processor.test.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.test.js +146 -0
- package/dist/types/src/extensions/posthog/log-processor.test.js.map +1 -0
- package/dist/types/src/extensions/stub.d.ts +3 -0
- package/dist/types/src/extensions/stub.d.ts.map +1 -0
- package/dist/types/src/extensions/stub.js +16 -0
- package/dist/types/src/extensions/stub.js.map +1 -0
- package/dist/types/src/index.d.ts +4 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/index.js +5 -3
- package/dist/types/src/index.js.map +1 -1
- package/dist/types/src/log-buffer.d.ts +34 -0
- package/dist/types/src/log-buffer.d.ts.map +1 -0
- package/dist/types/src/log-buffer.js +70 -0
- package/dist/types/src/log-buffer.js.map +1 -0
- package/dist/types/src/log-buffer.test.d.ts +2 -0
- package/dist/types/src/log-buffer.test.d.ts.map +1 -0
- package/dist/types/src/log-buffer.test.js +107 -0
- package/dist/types/src/log-buffer.test.js.map +1 -0
- package/dist/types/src/observability-extension.d.ts +74 -0
- package/dist/types/src/observability-extension.d.ts.map +1 -0
- package/dist/types/src/observability-extension.js +5 -0
- package/dist/types/src/observability-extension.js.map +1 -0
- package/dist/types/src/observability.d.ts +32 -110
- package/dist/types/src/observability.d.ts.map +1 -1
- package/dist/types/src/observability.js +176 -455
- package/dist/types/src/observability.js.map +1 -1
- package/dist/types/src/observability.test.d.ts +2 -0
- package/dist/types/src/observability.test.d.ts.map +1 -0
- package/dist/types/src/observability.test.js +312 -0
- package/dist/types/src/observability.test.js.map +1 -0
- package/dist/types/src/providers/client-observability.d.ts +11 -0
- package/dist/types/src/providers/client-observability.d.ts.map +1 -0
- package/dist/types/src/providers/client-observability.js +200 -0
- package/dist/types/src/providers/client-observability.js.map +1 -0
- package/dist/types/src/providers/index.d.ts +4 -0
- package/dist/types/src/providers/index.d.ts.map +1 -0
- package/dist/types/src/providers/index.js +7 -0
- package/dist/types/src/providers/index.js.map +1 -0
- package/dist/types/src/providers/ip-data.d.ts +5 -0
- package/dist/types/src/providers/ip-data.d.ts.map +1 -0
- package/dist/types/src/providers/ip-data.js +55 -0
- package/dist/types/src/providers/ip-data.js.map +1 -0
- package/dist/types/src/providers/storage.d.ts +3 -0
- package/dist/types/src/providers/storage.d.ts.map +1 -0
- package/dist/types/src/providers/storage.js +19 -0
- package/dist/types/src/providers/storage.js.map +1 -0
- package/dist/types/src/storage/browser.d.ts +19 -0
- package/dist/types/src/storage/browser.d.ts.map +1 -0
- package/dist/types/src/storage/browser.js +58 -0
- package/dist/types/src/storage/browser.js.map +1 -0
- package/dist/types/src/storage/index.d.ts +2 -0
- package/dist/types/src/storage/index.d.ts.map +1 -0
- package/{src/segment/index.ts → dist/types/src/storage/index.js} +1 -2
- package/dist/types/src/storage/index.js.map +1 -0
- package/dist/types/src/storage/node.d.ts +26 -0
- package/dist/types/src/storage/node.d.ts.map +1 -0
- package/dist/types/src/storage/node.js +92 -0
- package/dist/types/src/storage/node.js.map +1 -0
- package/dist/types/src/storage/node.test.d.ts +2 -0
- package/dist/types/src/storage/node.test.d.ts.map +1 -0
- package/dist/types/src/storage/node.test.js +103 -0
- package/dist/types/src/storage/node.test.js.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +42 -63
- package/src/cli-observability-secrets.json +3 -4
- package/src/extensions/index.ts +6 -0
- package/src/extensions/otel/extension.ts +178 -0
- package/src/extensions/otel/index.ts +5 -0
- package/src/extensions/otel/logs.ts +134 -0
- package/src/{otel → extensions/otel}/metrics.ts +4 -21
- package/src/{otel → extensions/otel}/otel.ts +4 -4
- package/src/extensions/otel/traces-browser.ts +57 -0
- package/src/extensions/otel/traces.ts +49 -0
- package/src/extensions/posthog/extension.ts +172 -0
- package/src/extensions/posthog/index.ts +5 -0
- package/src/extensions/posthog/log-processor.test.ts +185 -0
- package/src/extensions/posthog/log-processor.ts +54 -0
- package/src/extensions/stub.ts +19 -0
- package/src/index.ts +5 -3
- package/src/log-buffer.test.ts +134 -0
- package/src/log-buffer.ts +101 -0
- package/src/observability-extension.ts +94 -0
- package/src/observability.test.ts +531 -0
- package/src/observability.ts +236 -577
- package/src/providers/client-observability.ts +253 -0
- package/src/providers/index.ts +7 -0
- package/src/providers/ip-data.ts +88 -0
- package/src/providers/storage.ts +23 -0
- package/src/storage/browser.ts +61 -0
- package/src/{sentry → storage}/index.ts +0 -1
- package/src/storage/node.test.ts +130 -0
- package/src/{helpers/node-observability.ts → storage/node.ts} +42 -70
- package/dist/lib/browser/chunk-G6EE7HFV.mjs +0 -147
- package/dist/lib/browser/chunk-G6EE7HFV.mjs.map +0 -7
- package/dist/lib/browser/chunk-JA5VJRKF.mjs +0 -164
- package/dist/lib/browser/chunk-JA5VJRKF.mjs.map +0 -7
- package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
- package/dist/lib/browser/chunk-YQJELTRP.mjs +0 -996
- package/dist/lib/browser/chunk-YQJELTRP.mjs.map +0 -7
- package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
- package/dist/lib/browser/otel-LHAFLNBQ.mjs +0 -277
- package/dist/lib/browser/otel-LHAFLNBQ.mjs.map +0 -7
- package/dist/lib/browser/segment/index.mjs +0 -11
- package/dist/lib/browser/segment/index.mjs.map +0 -7
- package/dist/lib/browser/sentry/index.mjs +0 -24
- package/dist/lib/browser/sentry/index.mjs.map +0 -7
- package/dist/lib/browser/sentry-log-processor-625AISXI.mjs +0 -146
- package/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map +0 -7
- package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
- package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
- package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
- package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
- package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
- package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
- package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
- package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -60
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
- package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
- package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
- package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
- package/dist/lib/node/segment/index.cjs +0 -33
- package/dist/lib/node/segment/index.cjs.map +0 -7
- package/dist/lib/node/sentry/index.cjs +0 -46
- package/dist/lib/node/sentry/index.cjs.map +0 -7
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-AZMSBUWR.mjs +0 -202
- package/dist/lib/node-esm/chunk-AZMSBUWR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-H7Y2DDUN.mjs +0 -135
- package/dist/lib/node-esm/chunk-H7Y2DDUN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-M7QJLFGR.mjs +0 -997
- package/dist/lib/node-esm/chunk-M7QJLFGR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs +0 -2
- package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs.map +0 -7
- package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
- package/dist/lib/node-esm/observability-7BTI46NM.mjs.map +0 -7
- package/dist/lib/node-esm/otel-AF5TSABC.mjs +0 -260
- package/dist/lib/node-esm/otel-AF5TSABC.mjs.map +0 -7
- package/dist/lib/node-esm/segment/index.mjs +0 -12
- package/dist/lib/node-esm/segment/index.mjs.map +0 -7
- package/dist/lib/node-esm/sentry/index.mjs +0 -25
- package/dist/lib/node-esm/sentry/index.mjs.map +0 -7
- package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs +0 -147
- package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs.map +0 -7
- package/dist/types/src/helpers/browser-observability.d.ts +0 -17
- package/dist/types/src/helpers/browser-observability.d.ts.map +0 -1
- package/dist/types/src/helpers/browser-observability.js +0 -140
- package/dist/types/src/helpers/browser-observability.js.map +0 -1
- package/dist/types/src/helpers/common.d.ts +0 -12
- package/dist/types/src/helpers/common.d.ts.map +0 -1
- package/dist/types/src/helpers/common.js +0 -23
- package/dist/types/src/helpers/common.js.map +0 -1
- package/dist/types/src/helpers/index.d.ts +0 -6
- package/dist/types/src/helpers/index.d.ts.map +0 -1
- package/dist/types/src/helpers/index.js +0 -9
- package/dist/types/src/helpers/index.js.map +0 -1
- package/dist/types/src/helpers/map-spaces.d.ts +0 -18
- package/dist/types/src/helpers/map-spaces.d.ts.map +0 -1
- package/dist/types/src/helpers/map-spaces.js +0 -37
- package/dist/types/src/helpers/map-spaces.js.map +0 -1
- package/dist/types/src/helpers/node-observability.d.ts +0 -24
- package/dist/types/src/helpers/node-observability.d.ts.map +0 -1
- package/dist/types/src/helpers/node-observability.js +0 -101
- package/dist/types/src/helpers/node-observability.js.map +0 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts +0 -4
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +0 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.js +0 -97
- package/dist/types/src/helpers/setup-telemetry-listeners.js.map +0 -1
- package/dist/types/src/otel/index.d.ts +0 -5
- package/dist/types/src/otel/index.d.ts.map +0 -1
- package/dist/types/src/otel/index.js +0 -8
- package/dist/types/src/otel/index.js.map +0 -1
- package/dist/types/src/otel/logs.d.ts.map +0 -1
- package/dist/types/src/otel/logs.js +0 -71
- package/dist/types/src/otel/logs.js.map +0 -1
- package/dist/types/src/otel/metrics.d.ts.map +0 -1
- package/dist/types/src/otel/metrics.js.map +0 -1
- package/dist/types/src/otel/otel.d.ts.map +0 -1
- package/dist/types/src/otel/otel.js.map +0 -1
- package/dist/types/src/otel/traces-browser.d.ts.map +0 -1
- package/dist/types/src/otel/traces-browser.js +0 -47
- package/dist/types/src/otel/traces-browser.js.map +0 -1
- package/dist/types/src/otel/traces.d.ts.map +0 -1
- package/dist/types/src/otel/traces.js +0 -40
- package/dist/types/src/otel/traces.js.map +0 -1
- package/dist/types/src/segment/base.d.ts +0 -15
- package/dist/types/src/segment/base.d.ts.map +0 -1
- package/dist/types/src/segment/base.js +0 -50
- package/dist/types/src/segment/base.js.map +0 -1
- package/dist/types/src/segment/browser.d.ts +0 -15
- package/dist/types/src/segment/browser.d.ts.map +0 -1
- package/dist/types/src/segment/browser.js +0 -67
- package/dist/types/src/segment/browser.js.map +0 -1
- package/dist/types/src/segment/index.d.ts +0 -3
- package/dist/types/src/segment/index.d.ts.map +0 -1
- package/dist/types/src/segment/index.js +0 -6
- package/dist/types/src/segment/index.js.map +0 -1
- package/dist/types/src/segment/node.d.ts +0 -16
- package/dist/types/src/segment/node.d.ts.map +0 -1
- package/dist/types/src/segment/node.js +0 -83
- package/dist/types/src/segment/node.js.map +0 -1
- package/dist/types/src/segment/types.d.ts +0 -52
- package/dist/types/src/segment/types.d.ts.map +0 -1
- package/dist/types/src/segment/types.js +0 -18
- package/dist/types/src/segment/types.js.map +0 -1
- package/dist/types/src/sentry/browser.d.ts +0 -32
- package/dist/types/src/sentry/browser.d.ts.map +0 -1
- package/dist/types/src/sentry/browser.js +0 -112
- package/dist/types/src/sentry/browser.js.map +0 -1
- package/dist/types/src/sentry/index.d.ts +0 -3
- package/dist/types/src/sentry/index.d.ts.map +0 -1
- package/dist/types/src/sentry/index.js +0 -6
- package/dist/types/src/sentry/index.js.map +0 -1
- package/dist/types/src/sentry/node.d.ts +0 -32
- package/dist/types/src/sentry/node.d.ts.map +0 -1
- package/dist/types/src/sentry/node.js +0 -111
- package/dist/types/src/sentry/node.js.map +0 -1
- package/dist/types/src/sentry/node.node.test.d.ts +0 -2
- package/dist/types/src/sentry/node.node.test.d.ts.map +0 -1
- package/dist/types/src/sentry/node.node.test.js +0 -34
- package/dist/types/src/sentry/node.node.test.js.map +0 -1
- package/dist/types/src/sentry/sentry-log-processor.d.ts +0 -9
- package/dist/types/src/sentry/sentry-log-processor.d.ts.map +0 -1
- package/dist/types/src/sentry/sentry-log-processor.js +0 -149
- package/dist/types/src/sentry/sentry-log-processor.js.map +0 -1
- package/dist/types/src/sentry/sentry.node.test.d.ts +0 -2
- package/dist/types/src/sentry/sentry.node.test.d.ts.map +0 -1
- package/dist/types/src/sentry/sentry.node.test.js +0 -28
- package/dist/types/src/sentry/sentry.node.test.js.map +0 -1
- package/dist/types/src/sentry/types.d.ts +0 -18
- package/dist/types/src/sentry/types.d.ts.map +0 -1
- package/dist/types/src/sentry/types.js +0 -4
- package/dist/types/src/sentry/types.js.map +0 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +0 -1
- package/dist/types/src/testing/index.js +0 -5
- package/dist/types/src/testing/index.js.map +0 -1
- package/dist/types/src/testing/testkit/browser.d.ts +0 -2
- package/dist/types/src/testing/testkit/browser.d.ts.map +0 -1
- package/dist/types/src/testing/testkit/browser.js +0 -7
- package/dist/types/src/testing/testkit/browser.js.map +0 -1
- package/dist/types/src/testing/testkit/index.d.ts +0 -2
- package/dist/types/src/testing/testkit/index.d.ts.map +0 -1
- package/dist/types/src/testing/testkit/index.js +0 -6
- package/dist/types/src/testing/testkit/index.js.map +0 -1
- package/src/helpers/browser-observability.ts +0 -177
- package/src/helpers/common.ts +0 -38
- package/src/helpers/index.ts +0 -9
- package/src/helpers/map-spaces.ts +0 -48
- package/src/helpers/setup-telemetry-listeners.ts +0 -108
- package/src/otel/index.ts +0 -8
- package/src/otel/logs.ts +0 -100
- package/src/otel/traces-browser.ts +0 -59
- package/src/otel/traces.ts +0 -57
- package/src/segment/base.ts +0 -69
- package/src/segment/browser.ts +0 -68
- package/src/segment/node.ts +0 -94
- package/src/segment/types.ts +0 -57
- package/src/sentry/browser.ts +0 -133
- package/src/sentry/node.node.test.ts +0 -39
- package/src/sentry/node.ts +0 -126
- package/src/sentry/sentry-log-processor.ts +0 -166
- package/src/sentry/sentry.node.test.ts +0 -34
- package/src/sentry/types.ts +0 -22
- package/src/testing/index.ts +0 -5
- package/src/testing/testkit/browser.ts +0 -8
- package/src/testing/testkit/index.ts +0 -7
- package/src/testing/testkit/shims.d.ts +0 -5
- /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{browser/observability-HDE3I7TA.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
- /package/dist/types/src/{otel → extensions/otel}/traces-browser.d.ts +0 -0
- /package/dist/types/src/{otel → extensions/otel}/traces.d.ts +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
setDiagLogger
|
|
4
|
+
} from "./chunk-FEVP3MK4.mjs";
|
|
5
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
6
|
+
|
|
7
|
+
// src/extensions/otel/metrics.ts
|
|
8
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
9
|
+
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
10
|
+
import { log } from "@dxos/log";
|
|
11
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
12
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/metrics.ts";
|
|
13
|
+
var EXPORT_INTERVAL = 60 * 1e3;
|
|
14
|
+
var OtelMetrics = class {
|
|
15
|
+
options;
|
|
16
|
+
_meterProvider;
|
|
17
|
+
_meter;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
setDiagLogger(options.consoleDiagLogLevel);
|
|
21
|
+
const grafanaMetricReader = new PeriodicExportingMetricReader({
|
|
22
|
+
exporter: new OTLPMetricExporter({
|
|
23
|
+
url: this.options.endpoint + "/v1/metrics",
|
|
24
|
+
headers: this.options.headers
|
|
25
|
+
}),
|
|
26
|
+
exportIntervalMillis: EXPORT_INTERVAL
|
|
27
|
+
});
|
|
28
|
+
this._meterProvider = new MeterProvider({
|
|
29
|
+
resource: this.options.resource,
|
|
30
|
+
readers: [
|
|
31
|
+
grafanaMetricReader
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
this._meter = this._meterProvider.getMeter("dxos-observability");
|
|
35
|
+
const metrics = {
|
|
36
|
+
// TODO: update metrics names and remove prefix?
|
|
37
|
+
increment: (name, value, data) => {
|
|
38
|
+
this.increment(name, value, convertTags(data));
|
|
39
|
+
},
|
|
40
|
+
distribution: (name, value, data) => {
|
|
41
|
+
this.distribution(name, value, convertTags(data));
|
|
42
|
+
},
|
|
43
|
+
set: (name, value, data) => {
|
|
44
|
+
},
|
|
45
|
+
gauge: (name, value, data) => {
|
|
46
|
+
this.gauge(name, value, convertTags(data));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
50
|
+
}
|
|
51
|
+
gauge(name, value, tags) {
|
|
52
|
+
const gauge = this._meter.createGauge(name);
|
|
53
|
+
log("otel gauge", {
|
|
54
|
+
name,
|
|
55
|
+
value,
|
|
56
|
+
tags: {
|
|
57
|
+
...this.options.getTags(),
|
|
58
|
+
...tags
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
F: __dxlog_file,
|
|
62
|
+
L: 60,
|
|
63
|
+
S: this,
|
|
64
|
+
C: (f, a) => f(...a)
|
|
65
|
+
});
|
|
66
|
+
gauge.record(value, {
|
|
67
|
+
...this.options.getTags(),
|
|
68
|
+
...tags
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
increment(name, value, tags) {
|
|
72
|
+
const counter = this._meter.createCounter(name);
|
|
73
|
+
log("otel counter", {
|
|
74
|
+
name,
|
|
75
|
+
value,
|
|
76
|
+
tags: {
|
|
77
|
+
...this.options.getTags(),
|
|
78
|
+
...tags
|
|
79
|
+
}
|
|
80
|
+
}, {
|
|
81
|
+
F: __dxlog_file,
|
|
82
|
+
L: 66,
|
|
83
|
+
S: this,
|
|
84
|
+
C: (f, a) => f(...a)
|
|
85
|
+
});
|
|
86
|
+
counter.add(value ?? 1, {
|
|
87
|
+
...this.options.getTags(),
|
|
88
|
+
...tags
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
distribution(name, value, tags) {
|
|
92
|
+
const distribution = this._meter.createHistogram(name);
|
|
93
|
+
log("otel distribution", {
|
|
94
|
+
name,
|
|
95
|
+
value,
|
|
96
|
+
tags: {
|
|
97
|
+
...this.options.getTags(),
|
|
98
|
+
...tags
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
F: __dxlog_file,
|
|
102
|
+
L: 72,
|
|
103
|
+
S: this,
|
|
104
|
+
C: (f, a) => f(...a)
|
|
105
|
+
});
|
|
106
|
+
distribution.record(value, {
|
|
107
|
+
...this.options.getTags(),
|
|
108
|
+
...tags
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
flush() {
|
|
112
|
+
return this._meterProvider.forceFlush();
|
|
113
|
+
}
|
|
114
|
+
close() {
|
|
115
|
+
return this._meterProvider.shutdown();
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
var convertTags = (data) => {
|
|
119
|
+
if (data && data.tags) {
|
|
120
|
+
return Object.entries(data.tags).reduce((obj, [key, value]) => {
|
|
121
|
+
obj[key] = value;
|
|
122
|
+
return obj;
|
|
123
|
+
}, {});
|
|
124
|
+
} else {
|
|
125
|
+
return {};
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
export {
|
|
129
|
+
OtelMetrics
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=metrics-H7DDLYSG.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/otel/metrics.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Meter } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\n\nimport { log } from '@dxos/log';\nimport { type MetricData, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\n\n constructor(private readonly options: OtelOptions) {\n // TODO: improve error handling/logging\n // https://github.com/open-telemetry/opentelemetry-js/issues/4823\n setDiagLogger(options.consoleDiagLogLevel);\n\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: this.options.headers,\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource: this.options.resource,\n readers: [grafanaMetricReader],\n });\n this._meter = this._meterProvider.getMeter('dxos-observability');\n\n const metrics = {\n // TODO: update metrics names and remove prefix?\n increment: (name: string, value?: number, data?: MetricData) => {\n this.increment(name, value, convertTags(data));\n },\n distribution: (name: string, value: number, data?: MetricData) => {\n this.distribution(name, value, convertTags(data));\n },\n set: (name: string, value: number | string, data?: MetricData) => {\n // Not implemented, not part of Otel spec.\n },\n gauge: (name: string, value: number, data?: MetricData) => {\n this.gauge(name, value, convertTags(data));\n },\n };\n\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n }\n\n gauge(name: string, value: number, tags?: any): void {\n const gauge = this._meter.createGauge(name);\n log('otel gauge', { name, value, tags: { ...this.options.getTags(), ...tags } });\n gauge.record(value, { ...this.options.getTags(), ...tags });\n }\n\n increment(name: string, value?: number, tags?: any): void {\n const counter = this._meter.createCounter(name);\n log('otel counter', { name, value, tags: { ...this.options.getTags(), ...tags } });\n counter.add(value ?? 1, { ...this.options.getTags(), ...tags });\n }\n\n distribution(name: string, value: number, tags?: any): void {\n const distribution = this._meter.createHistogram(name);\n log('otel distribution', { name, value, tags: { ...this.options.getTags(), ...tags } });\n distribution.record(value, { ...this.options.getTags(), ...tags });\n }\n\n flush(): Promise<void> {\n return this._meterProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._meterProvider.shutdown();\n }\n}\n\nconst convertTags = (data?: MetricData) => {\n if (data && data.tags) {\n return Object.entries(data.tags).reduce<{ [key: string]: any }>((obj, [key, value]) => {\n obj[key] = value;\n return obj;\n }, {});\n } else {\n return {};\n }\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAKA,SAASA,0BAA0B;AACnC,SAASC,eAAeC,qCAAqC;AAE7D,SAASC,WAAW;AACpB,SAA0BC,uBAAuB;;AAIjD,IAAMC,kBAAkB,KAAK;AAEtB,IAAMC,cAAN,MAAMA;;EACHC;EACAC;EAER,YAA6BC,SAAsB;SAAtBA,UAAAA;AAG3BC,kBAAcD,QAAQE,mBAAmB;AAEzC,UAAMC,sBAAsB,IAAIC,8BAA8B;MAC5DC,UAAU,IAAIC,mBAAmB;QAC/BC,KAAK,KAAKP,QAAQQ,WAAW;QAC7BC,SAAS,KAAKT,QAAQS;MACxB,CAAA;MACAC,sBAAsBd;IACxB,CAAA;AAEA,SAAKE,iBAAiB,IAAIa,cAAc;MACtCC,UAAU,KAAKZ,QAAQY;MACvBC,SAAS;QAACV;;IACZ,CAAA;AACA,SAAKJ,SAAS,KAAKD,eAAegB,SAAS,oBAAA;AAE3C,UAAMC,UAAU;;MAEdC,WAAW,CAACC,MAAcC,OAAgBC,SAAAA;AACxC,aAAKH,UAAUC,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MAC1C;MACAE,cAAc,CAACJ,MAAcC,OAAeC,SAAAA;AAC1C,aAAKE,aAAaJ,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MAC7C;MACAG,KAAK,CAACL,MAAcC,OAAwBC,SAAAA;MAE5C;MACAI,OAAO,CAACN,MAAcC,OAAeC,SAAAA;AACnC,aAAKI,MAAMN,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MACtC;IACF;AAEAK,oBAAgBC,cAAcC,kBAAkBX,OAAAA;EAClD;EAEAQ,MAAMN,MAAcC,OAAeS,MAAkB;AACnD,UAAMJ,QAAQ,KAAKxB,OAAO6B,YAAYX,IAAAA;AACtCY,QAAI,cAAc;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAK3B,QAAQ8B,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AAC9EJ,UAAMQ,OAAOb,OAAO;MAAE,GAAG,KAAKlB,QAAQ8B,QAAO;MAAI,GAAGH;IAAK,CAAA;EAC3D;EAEAX,UAAUC,MAAcC,OAAgBS,MAAkB;AACxD,UAAMK,UAAU,KAAKjC,OAAOkC,cAAchB,IAAAA;AAC1CY,QAAI,gBAAgB;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAK3B,QAAQ8B,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AAChFK,YAAQE,IAAIhB,SAAS,GAAG;MAAE,GAAG,KAAKlB,QAAQ8B,QAAO;MAAI,GAAGH;IAAK,CAAA;EAC/D;EAEAN,aAAaJ,MAAcC,OAAeS,MAAkB;AAC1D,UAAMN,eAAe,KAAKtB,OAAOoC,gBAAgBlB,IAAAA;AACjDY,QAAI,qBAAqB;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAK3B,QAAQ8B,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AACrFN,iBAAaU,OAAOb,OAAO;MAAE,GAAG,KAAKlB,QAAQ8B,QAAO;MAAI,GAAGH;IAAK,CAAA;EAClE;EAEAS,QAAuB;AACrB,WAAO,KAAKtC,eAAeuC,WAAU;EACvC;EAEAC,QAAuB;AACrB,WAAO,KAAKxC,eAAeyC,SAAQ;EACrC;AACF;AAEA,IAAMnB,cAAc,CAACD,SAAAA;AACnB,MAAIA,QAAQA,KAAKQ,MAAM;AACrB,WAAOa,OAAOC,QAAQtB,KAAKQ,IAAI,EAAEe,OAA+B,CAACC,KAAK,CAACC,KAAK1B,KAAAA,MAAM;AAChFyB,UAAIC,GAAAA,IAAO1B;AACX,aAAOyB;IACT,GAAG,CAAC,CAAA;EACN,OAAO;AACL,WAAO,CAAC;EACV;AACF;",
|
|
6
|
+
"names": ["OTLPMetricExporter", "MeterProvider", "PeriodicExportingMetricReader", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "OtelMetrics", "_meterProvider", "_meter", "options", "setDiagLogger", "consoleDiagLogLevel", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "url", "endpoint", "headers", "exportIntervalMillis", "MeterProvider", "resource", "readers", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "getTags", "record", "counter", "createCounter", "add", "createHistogram", "flush", "forceFlush", "close", "shutdown", "Object", "entries", "reduce", "obj", "key"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
3
|
+
|
|
4
|
+
// src/extensions/otel/traces.ts
|
|
5
|
+
import { trace } from "@opentelemetry/api";
|
|
6
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
7
|
+
import { BasicTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
8
|
+
import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
9
|
+
import { log } from "debug";
|
|
10
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
11
|
+
var OtelTraces = class {
|
|
12
|
+
options;
|
|
13
|
+
_tracer;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
const tracerProvider = new BasicTracerProvider({
|
|
17
|
+
resource: this.options.resource,
|
|
18
|
+
spanProcessors: [
|
|
19
|
+
new BatchSpanProcessor(new OTLPTraceExporter({
|
|
20
|
+
url: this.options.endpoint + "/v1/traces",
|
|
21
|
+
headers: this.options.headers,
|
|
22
|
+
concurrencyLimit: 10
|
|
23
|
+
}))
|
|
24
|
+
]
|
|
25
|
+
});
|
|
26
|
+
trace.setGlobalTracerProvider(tracerProvider);
|
|
27
|
+
this._tracer = trace.getTracer("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
|
|
28
|
+
}
|
|
29
|
+
start() {
|
|
30
|
+
log("trace processor registered");
|
|
31
|
+
TRACE_PROCESSOR.remoteTracing.registerProcessor({
|
|
32
|
+
startSpan: (options) => {
|
|
33
|
+
log("begin otel trace", {
|
|
34
|
+
options
|
|
35
|
+
});
|
|
36
|
+
return this._tracer.startSpan(options.name, options);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
OtelTraces
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=traces-KMTHMYFX.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/otel/traces.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Tracer, trace } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { BasicTracerProvider, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { log } from 'debug';\n\nimport { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n\n constructor(private readonly options: OtelOptions) {\n const tracerProvider = new BasicTracerProvider({\n resource: this.options.resource,\n spanProcessors: [\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: this.options.headers,\n concurrencyLimit: 10, // an optional limit on pending requests\n }),\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(tracerProvider);\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n public start(): void {\n log('trace processor registered');\n\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n return this._tracer.startSpan(options.name, options);\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;AAIA,SAAsBA,aAAa;AACnC,SAASC,yBAAyB;AAClC,SAASC,qBAAqBC,0BAA0B;AACxD,SAASC,4BAA4B;AACrC,SAASC,WAAW;AAEpB,SAAgCC,uBAAuB;AAIhD,IAAMC,aAAN,MAAMA;;EACHC;EAER,YAA6BC,SAAsB;SAAtBA,UAAAA;AAC3B,UAAMC,iBAAiB,IAAIC,oBAAoB;MAC7CC,UAAU,KAAKH,QAAQG;MACvBC,gBAAgB;QACd,IAAIC,mBACF,IAAIC,kBAAkB;UACpBC,KAAK,KAAKP,QAAQQ,WAAW;UAC7BC,SAAS,KAAKT,QAAQS;UACtBC,kBAAkB;QACpB,CAAA,CAAA;;IAGN,CAAA;AAEAC,UAAMC,wBAAwBX,cAAAA;AAC9B,SAAKF,UAAUY,MAAME,UACnB,sBACA,KAAKb,QAAQG,SAASW,WAAWC,oBAAAA,GAAuBC,SAAAA,CAAAA;EAE5D;EAEOC,QAAc;AACnBC,QAAI,4BAAA;AAEJC,oBAAgBC,cAAcC,kBAAkB;MAC9CC,WAAW,CAACtB,YAAAA;AACVkB,YAAI,oBAAoB;UAAElB;QAAQ,CAAA;AAClC,eAAO,KAAKD,QAAQuB,UAAUtB,QAAQuB,MAAMvB,OAAAA;MAC9C;IACF,CAAA;EACF;AACF;",
|
|
6
|
+
"names": ["trace", "OTLPTraceExporter", "BasicTracerProvider", "BatchSpanProcessor", "ATTR_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "OtelTraces", "_tracer", "options", "tracerProvider", "BasicTracerProvider", "resource", "spanProcessors", "BatchSpanProcessor", "OTLPTraceExporter", "url", "endpoint", "headers", "concurrencyLimit", "trace", "setGlobalTracerProvider", "getTracer", "attributes", "ATTR_SERVICE_VERSION", "toString", "start", "log", "TRACE_PROCESSOR", "remoteTracing", "registerProcessor", "startSpan", "name"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"TELEMETRY_API_KEY": "B00QG6PtJJrJ0VVFe0H5a6bcUUShKyZM",
|
|
2
|
+
"POSTHOG_API_KEY": null,
|
|
4
3
|
"IPDATA_API_KEY": "73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786",
|
|
5
|
-
"OTEL_ENDPOINT": "https://
|
|
6
|
-
"
|
|
4
|
+
"OTEL_ENDPOINT": "https://ingest.eu.signoz.cloud:443",
|
|
5
|
+
"OTEL_HEADERS": "signoz-ingestion-key: 5300e0c9-a5e8-4a10-9c61-f473e539c0b7"
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { type Config } from '@dxos/config';
|
|
3
|
+
import { LogLevel } from '@dxos/log';
|
|
4
|
+
import { type Extension } from '../../observability-extension';
|
|
5
|
+
export type ExtensionsOptions = {
|
|
6
|
+
/** For the OTEL, the name of the entity for which signals (metrics or trace) are collected. */
|
|
7
|
+
serviceName: string;
|
|
8
|
+
/** For the OTEL, the version of the entity for which signals (metrics or trace) are collected. */
|
|
9
|
+
serviceVersion: string;
|
|
10
|
+
/** For the OTEL, the environment of the entity for which signals (metrics or trace) are collected. */
|
|
11
|
+
environment: string;
|
|
12
|
+
config: Config;
|
|
13
|
+
endpoint?: string;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
logs?: boolean;
|
|
16
|
+
/** Minimum log level to export. Defaults to INFO (i.e. info, warn, error). */
|
|
17
|
+
logLevel?: LogLevel;
|
|
18
|
+
metrics?: boolean;
|
|
19
|
+
traces?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/** Create an OTEL-backed observability extension for logs, metrics, and/or traces. */
|
|
22
|
+
export declare const extensions: (options: ExtensionsOptions) => Effect.Effect<Extension>;
|
|
23
|
+
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/extension.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAO,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,+BAA+B,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+FAA+F;IAC/F,WAAW,EAAE,MAAM,CAAC;IACpB,kGAAkG;IAClG,cAAc,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAgI9E,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';
|
|
5
|
+
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import * as Match from 'effect/Match';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
9
|
+
import * as Ref from 'effect/Ref';
|
|
10
|
+
import { LogLevel, log } from '@dxos/log';
|
|
11
|
+
import { isNode, isNonNullable } from '@dxos/util';
|
|
12
|
+
import buildSecrets from '../../cli-observability-secrets.json';
|
|
13
|
+
import { isObservabilityDisabled, storeObservabilityDisabled } from '../../storage';
|
|
14
|
+
import { stubExtension } from '../stub';
|
|
15
|
+
/** Create an OTEL-backed observability extension for logs, metrics, and/or traces. */
|
|
16
|
+
export const extensions = Effect.fn(function* ({ serviceName, serviceVersion, environment, config, endpoint: _endpoint, headers: _headers,
|
|
17
|
+
// TODO(wittjosiah): Logging integration.
|
|
18
|
+
// - logger should run even if observability is disabled
|
|
19
|
+
// - logs should be cached locally in a circular buffer
|
|
20
|
+
// - logs should be flushed to the server if user opts to include them in a bug report
|
|
21
|
+
logs: logsEnabled = false, logLevel = LogLevel.INFO, metrics: metricsEnabled = false, traces: tracesEnabled = false, }) {
|
|
22
|
+
const { OtelLogs } = yield* Effect.promise(() => import('./logs'));
|
|
23
|
+
const { OtelMetrics } = yield* Effect.promise(() => import('./metrics'));
|
|
24
|
+
const { OtelTraces } = yield* Effect.promise(() => import('./traces'));
|
|
25
|
+
const cachedDisabled = yield* Effect.promise(() => isObservabilityDisabled(serviceName));
|
|
26
|
+
const enabledRef = yield* Ref.make(!cachedDisabled);
|
|
27
|
+
const tags = new Map();
|
|
28
|
+
const endpoint = isNode()
|
|
29
|
+
? (process.env.DX_OTEL_ENDPOINT ?? _endpoint ?? buildSecrets.OTEL_ENDPOINT)
|
|
30
|
+
: config.values.runtime?.app?.env?.DX_OTEL_ENDPOINT;
|
|
31
|
+
const headers = _headers ??
|
|
32
|
+
Match.value(isNode()).pipe(Match.when(true, () => Option.fromNullable(process.env.DX_OTEL_HEADERS ?? buildSecrets.OTEL_HEADERS)), Match.when(false, () => Option.fromNullable(config.values.runtime?.app?.env?.DX_OTEL_HEADERS)), Match.exhaustive, Option.map((raw) => parseHeaders(raw)), Option.getOrElse(() => undefined));
|
|
33
|
+
if (!endpoint || !headers) {
|
|
34
|
+
log.info('Missing OTEL_ENDPOINT or OTEL_HEADERS');
|
|
35
|
+
return stubExtension;
|
|
36
|
+
}
|
|
37
|
+
const resource = defaultResource().merge(resourceFromAttributes({
|
|
38
|
+
[ATTR_SERVICE_NAME]: serviceName,
|
|
39
|
+
[ATTR_SERVICE_VERSION]: serviceVersion,
|
|
40
|
+
'deployment.environment': environment,
|
|
41
|
+
}));
|
|
42
|
+
const logs = logsEnabled
|
|
43
|
+
? new OtelLogs({
|
|
44
|
+
endpoint,
|
|
45
|
+
headers,
|
|
46
|
+
resource,
|
|
47
|
+
getTags: () => Object.fromEntries(tags),
|
|
48
|
+
logLevel,
|
|
49
|
+
})
|
|
50
|
+
: undefined;
|
|
51
|
+
const metrics = metricsEnabled
|
|
52
|
+
? new OtelMetrics({
|
|
53
|
+
endpoint,
|
|
54
|
+
headers,
|
|
55
|
+
resource,
|
|
56
|
+
getTags: () => Object.fromEntries(tags),
|
|
57
|
+
})
|
|
58
|
+
: undefined;
|
|
59
|
+
const traces = tracesEnabled
|
|
60
|
+
? new OtelTraces({
|
|
61
|
+
endpoint,
|
|
62
|
+
headers,
|
|
63
|
+
resource,
|
|
64
|
+
getTags: () => Object.fromEntries(tags),
|
|
65
|
+
})
|
|
66
|
+
: undefined;
|
|
67
|
+
return {
|
|
68
|
+
initialize: () => Effect.sync(() => {
|
|
69
|
+
if (logs) {
|
|
70
|
+
log.runtimeConfig.processors.push(logs.logProcessor);
|
|
71
|
+
}
|
|
72
|
+
if (traces) {
|
|
73
|
+
traces.start();
|
|
74
|
+
}
|
|
75
|
+
}),
|
|
76
|
+
enable: Effect.fn(function* () {
|
|
77
|
+
yield* Effect.promise(() => storeObservabilityDisabled(serviceName, false));
|
|
78
|
+
yield* Ref.update(enabledRef, () => true);
|
|
79
|
+
}),
|
|
80
|
+
disable: Effect.fn(function* () {
|
|
81
|
+
yield* Effect.promise(() => storeObservabilityDisabled(serviceName, true));
|
|
82
|
+
yield* Ref.update(enabledRef, () => false);
|
|
83
|
+
}),
|
|
84
|
+
close: () => Effect.promise(async () => {
|
|
85
|
+
await logs?.close();
|
|
86
|
+
await metrics?.close();
|
|
87
|
+
}),
|
|
88
|
+
flush: () => Effect.promise(async () => {
|
|
89
|
+
await logs?.flush();
|
|
90
|
+
await metrics?.flush();
|
|
91
|
+
}),
|
|
92
|
+
setTags: (incomingTags) => {
|
|
93
|
+
for (const [key, value] of Object.entries(incomingTags)) {
|
|
94
|
+
tags.set(key, value);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
get enabled() {
|
|
98
|
+
return Ref.get(enabledRef).pipe(Effect.runSync);
|
|
99
|
+
},
|
|
100
|
+
apis: [
|
|
101
|
+
{ kind: 'logs', isAvailable: () => Effect.succeed(!!logs) },
|
|
102
|
+
metrics
|
|
103
|
+
? {
|
|
104
|
+
kind: 'metrics',
|
|
105
|
+
isAvailable: () => Effect.succeed(true),
|
|
106
|
+
gauge: (name, value, tags) => metrics.gauge(name, value, tags),
|
|
107
|
+
increment: (name, value, tags) => metrics.increment(name, value, tags),
|
|
108
|
+
distribution: (name, value, tags) => metrics.distribution(name, value, tags),
|
|
109
|
+
}
|
|
110
|
+
: undefined,
|
|
111
|
+
traces ? { kind: 'traces', isAvailable: () => Effect.succeed(true) } : undefined,
|
|
112
|
+
].filter(isNonNullable),
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
const parseHeaders = (unparsedHeaders) => {
|
|
116
|
+
return unparsedHeaders.split(';').reduce((acc, header) => {
|
|
117
|
+
const [key, ...rest] = header.split(':');
|
|
118
|
+
if (key && rest.length > 0) {
|
|
119
|
+
acc[key.trim().toLowerCase()] = rest.join(':').trim();
|
|
120
|
+
}
|
|
121
|
+
return acc;
|
|
122
|
+
}, {});
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,cAAc,aAAa,CAAC"}
|
|
@@ -3,10 +3,11 @@ import { type OtelOptions } from './otel';
|
|
|
3
3
|
export type OtelLogOptions = OtelOptions & {
|
|
4
4
|
logLevel: LogLevel;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Include logs forwarded from the shared worker via LoggingService.
|
|
7
|
+
*
|
|
8
|
+
* @deprecated
|
|
8
9
|
*/
|
|
9
|
-
includeSharedWorkerLogs
|
|
10
|
+
includeSharedWorkerLogs?: boolean;
|
|
10
11
|
};
|
|
11
12
|
export declare class OtelLogs {
|
|
12
13
|
private readonly options;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/logs.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,QAAQ,EACR,KAAK,YAAY,EAGlB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAIzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,qBAAa,QAAQ;IAEP,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,eAAe,CAAiB;gBACX,OAAO,EAAE,cAAc;IAapD,SAAgB,YAAY,EAAE,YAAY,CAyBxC;IAEF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import { SeverityNumber } from '@opentelemetry/api-logs';
|
|
5
|
+
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
6
|
+
import { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';
|
|
7
|
+
import { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
8
|
+
import { LogLevel, getContextFromEntry, getRelativeFilename, } from '@dxos/log';
|
|
9
|
+
import { setDiagLogger } from './otel';
|
|
10
|
+
const FLATTEN_DEPTH = 1;
|
|
11
|
+
export class OtelLogs {
|
|
12
|
+
options;
|
|
13
|
+
_loggerProvider;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
setDiagLogger(options.consoleDiagLogLevel);
|
|
17
|
+
const logExporter = new OTLPLogExporter({
|
|
18
|
+
url: this.options.endpoint + '/v1/logs',
|
|
19
|
+
headers: this.options.headers,
|
|
20
|
+
concurrencyLimit: 10, // an optional limit on pending requests
|
|
21
|
+
});
|
|
22
|
+
this._loggerProvider = new LoggerProvider({
|
|
23
|
+
resource: this.options.resource,
|
|
24
|
+
processors: [new BatchLogRecordProcessor(logExporter)],
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
logProcessor = (_config, entry) => {
|
|
28
|
+
const logger = this._loggerProvider.getLogger('dxos-observability', this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
|
|
29
|
+
if (entry.level < this.options.logLevel ||
|
|
30
|
+
(!this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const attributes = {
|
|
34
|
+
...this.options.getTags(),
|
|
35
|
+
...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),
|
|
36
|
+
...(entry.error ? { error: entry.error.stack } : {}),
|
|
37
|
+
...stringifyValues(getContextFromEntry(entry), 'ctx_'),
|
|
38
|
+
};
|
|
39
|
+
logger.emit({
|
|
40
|
+
severityNumber: convertLevel(entry.level),
|
|
41
|
+
body: entry.message,
|
|
42
|
+
attributes,
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
flush() {
|
|
46
|
+
return this._loggerProvider.forceFlush();
|
|
47
|
+
}
|
|
48
|
+
close() {
|
|
49
|
+
return this._loggerProvider.shutdown();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const convertLevel = (level) => {
|
|
53
|
+
switch (level) {
|
|
54
|
+
case LogLevel.DEBUG:
|
|
55
|
+
return SeverityNumber.DEBUG;
|
|
56
|
+
case LogLevel.VERBOSE:
|
|
57
|
+
return SeverityNumber.INFO;
|
|
58
|
+
case LogLevel.INFO:
|
|
59
|
+
return SeverityNumber.INFO;
|
|
60
|
+
case LogLevel.WARN:
|
|
61
|
+
return SeverityNumber.WARN;
|
|
62
|
+
case LogLevel.ERROR:
|
|
63
|
+
return SeverityNumber.ERROR;
|
|
64
|
+
default:
|
|
65
|
+
return SeverityNumber.ERROR;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const safeStringify = (value) => {
|
|
69
|
+
try {
|
|
70
|
+
return JSON.stringify(value);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return '[Circular]';
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
// TODO(wittjosiah): Reconcile logging utils w/ EDGE.
|
|
77
|
+
const stringifyValues = (object, keyPrefix, depth = 1) => {
|
|
78
|
+
if (!object) {
|
|
79
|
+
return {};
|
|
80
|
+
}
|
|
81
|
+
const result = {};
|
|
82
|
+
for (const [key, value] of Object.entries(object)) {
|
|
83
|
+
if (value === undefined) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const newKey = keyPrefix ? `${keyPrefix}${key}` : key;
|
|
87
|
+
if (typeof value === 'object') {
|
|
88
|
+
if (!value || Array.isArray(value) || depth > FLATTEN_DEPTH) {
|
|
89
|
+
result[newKey] = safeStringify(value);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
const flattened = stringifyValues(value, `${newKey}_`, depth + 1);
|
|
93
|
+
for (const [flattenedKey, flattenedValue] of Object.entries(flattened)) {
|
|
94
|
+
result[flattenedKey] = flattenedValue;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
result[newKey] = String(value);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ export declare class OtelMetrics {
|
|
|
3
3
|
private readonly options;
|
|
4
4
|
private _meterProvider;
|
|
5
5
|
private _meter;
|
|
6
|
-
private _gauges;
|
|
7
6
|
constructor(options: OtelOptions);
|
|
8
7
|
gauge(name: string, value: number, tags?: any): void;
|
|
9
8
|
increment(name: string, value?: number, tags?: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/metrics.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAIzD,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAQ;gBAEO,OAAO,EAAE,WAAW;IAsCjD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMpD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMzD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAM3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|
|
@@ -2,35 +2,29 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
5
|
-
import { Resource } from '@opentelemetry/resources';
|
|
6
5
|
import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
7
|
-
import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
8
6
|
import { log } from '@dxos/log';
|
|
9
7
|
import { TRACE_PROCESSOR } from '@dxos/tracing';
|
|
10
8
|
import { setDiagLogger } from './otel';
|
|
11
9
|
const EXPORT_INTERVAL = 60 * 1000;
|
|
12
10
|
export class OtelMetrics {
|
|
11
|
+
options;
|
|
12
|
+
_meterProvider;
|
|
13
|
+
_meter;
|
|
13
14
|
constructor(options) {
|
|
14
15
|
this.options = options;
|
|
15
|
-
this._gauges = new Map();
|
|
16
16
|
// TODO: improve error handling/logging
|
|
17
17
|
// https://github.com/open-telemetry/opentelemetry-js/issues/4823
|
|
18
18
|
setDiagLogger(options.consoleDiagLogLevel);
|
|
19
|
-
const resource = Resource.default().merge(new Resource({
|
|
20
|
-
[SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
21
|
-
[SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,
|
|
22
|
-
}));
|
|
23
19
|
const grafanaMetricReader = new PeriodicExportingMetricReader({
|
|
24
20
|
exporter: new OTLPMetricExporter({
|
|
25
21
|
url: this.options.endpoint + '/v1/metrics',
|
|
26
|
-
headers:
|
|
27
|
-
Authorization: this.options.authorizationHeader,
|
|
28
|
-
},
|
|
22
|
+
headers: this.options.headers,
|
|
29
23
|
}),
|
|
30
24
|
exportIntervalMillis: EXPORT_INTERVAL,
|
|
31
25
|
});
|
|
32
26
|
this._meterProvider = new MeterProvider({
|
|
33
|
-
resource,
|
|
27
|
+
resource: this.options.resource,
|
|
34
28
|
readers: [grafanaMetricReader],
|
|
35
29
|
});
|
|
36
30
|
this._meter = this._meterProvider.getMeter('dxos-observability');
|
|
@@ -59,7 +53,7 @@ export class OtelMetrics {
|
|
|
59
53
|
increment(name, value, tags) {
|
|
60
54
|
const counter = this._meter.createCounter(name);
|
|
61
55
|
log('otel counter', { name, value, tags: { ...this.options.getTags(), ...tags } });
|
|
62
|
-
counter.add(value
|
|
56
|
+
counter.add(value ?? 1, { ...this.options.getTags(), ...tags });
|
|
63
57
|
}
|
|
64
58
|
distribution(name, value, tags) {
|
|
65
59
|
const distribution = this._meter.createHistogram(name);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { type Resource } from '@opentelemetry/resources';
|
|
1
2
|
export type OtelOptions = {
|
|
2
3
|
endpoint: string;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
serviceVersion: string;
|
|
4
|
+
headers: Record<string, string>;
|
|
5
|
+
resource: Resource;
|
|
6
6
|
getTags: () => {
|
|
7
7
|
[key: string]: string;
|
|
8
8
|
};
|