@omob/otel-kit 0.1.0

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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +398 -0
  3. package/dist/enums/exporter-type.enum.d.ts +7 -0
  4. package/dist/enums/exporter-type.enum.js +12 -0
  5. package/dist/enums/exporter-type.enum.js.map +1 -0
  6. package/dist/enums/instrumentation-name.enum.d.ts +43 -0
  7. package/dist/enums/instrumentation-name.enum.js +48 -0
  8. package/dist/enums/instrumentation-name.enum.js.map +1 -0
  9. package/dist/enums/otlp-protocol.enum.d.ts +5 -0
  10. package/dist/enums/otlp-protocol.enum.js +10 -0
  11. package/dist/enums/otlp-protocol.enum.js.map +1 -0
  12. package/dist/enums/propagator-type.enum.d.ts +7 -0
  13. package/dist/enums/propagator-type.enum.js +12 -0
  14. package/dist/enums/propagator-type.enum.js.map +1 -0
  15. package/dist/enums/telemetry-error-code.enum.d.ts +8 -0
  16. package/dist/enums/telemetry-error-code.enum.js +13 -0
  17. package/dist/enums/telemetry-error-code.enum.js.map +1 -0
  18. package/dist/enums/telemetry-signal.enum.d.ts +5 -0
  19. package/dist/enums/telemetry-signal.enum.js +10 -0
  20. package/dist/enums/telemetry-signal.enum.js.map +1 -0
  21. package/dist/errors/telemetry-config.error.d.ts +6 -0
  22. package/dist/errors/telemetry-config.error.js +12 -0
  23. package/dist/errors/telemetry-config.error.js.map +1 -0
  24. package/dist/factories/instrumentation.factory.d.ts +7 -0
  25. package/dist/factories/instrumentation.factory.js +30 -0
  26. package/dist/factories/instrumentation.factory.js.map +1 -0
  27. package/dist/factories/log-processor.factory.d.ts +6 -0
  28. package/dist/factories/log-processor.factory.js +31 -0
  29. package/dist/factories/log-processor.factory.js.map +1 -0
  30. package/dist/factories/metric-reader.factory.d.ts +7 -0
  31. package/dist/factories/metric-reader.factory.js +51 -0
  32. package/dist/factories/metric-reader.factory.js.map +1 -0
  33. package/dist/factories/otlp-exporter.factory.d.ts +6 -0
  34. package/dist/factories/otlp-exporter.factory.js +46 -0
  35. package/dist/factories/otlp-exporter.factory.js.map +1 -0
  36. package/dist/factories/propagator.factory.d.ts +7 -0
  37. package/dist/factories/propagator.factory.js +36 -0
  38. package/dist/factories/propagator.factory.js.map +1 -0
  39. package/dist/factories/resource.factory.d.ts +6 -0
  40. package/dist/factories/resource.factory.js +23 -0
  41. package/dist/factories/resource.factory.js.map +1 -0
  42. package/dist/factories/sampler.factory.d.ts +5 -0
  43. package/dist/factories/sampler.factory.js +21 -0
  44. package/dist/factories/sampler.factory.js.map +1 -0
  45. package/dist/factories/sdk.factory.d.ts +6 -0
  46. package/dist/factories/sdk.factory.js +46 -0
  47. package/dist/factories/sdk.factory.js.map +1 -0
  48. package/dist/factories/trace-exporter.factory.d.ts +7 -0
  49. package/dist/factories/trace-exporter.factory.js +36 -0
  50. package/dist/factories/trace-exporter.factory.js.map +1 -0
  51. package/dist/index.d.ts +11 -0
  52. package/dist/index.js +42 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/processors/attribute-sanitizer.processor.d.ts +8 -0
  55. package/dist/processors/attribute-sanitizer.processor.js +23 -0
  56. package/dist/processors/attribute-sanitizer.processor.js.map +1 -0
  57. package/dist/services/span.service.d.ts +6 -0
  58. package/dist/services/span.service.js +39 -0
  59. package/dist/services/span.service.js.map +1 -0
  60. package/dist/services/telemetry.service.d.ts +19 -0
  61. package/dist/services/telemetry.service.js +104 -0
  62. package/dist/services/telemetry.service.js.map +1 -0
  63. package/dist/telemetry.types.d.ts +100 -0
  64. package/dist/telemetry.types.js +3 -0
  65. package/dist/telemetry.types.js.map +1 -0
  66. package/dist/utils/gcp-credentials.d.ts +5 -0
  67. package/dist/utils/gcp-credentials.js +14 -0
  68. package/dist/utils/gcp-credentials.js.map +1 -0
  69. package/dist/utils/optional-dependency.d.ts +1 -0
  70. package/dist/utils/optional-dependency.js +19 -0
  71. package/dist/utils/optional-dependency.js.map +1 -0
  72. package/dist/utils/otlp-options.d.ts +6 -0
  73. package/dist/utils/otlp-options.js +11 -0
  74. package/dist/utils/otlp-options.js.map +1 -0
  75. package/package.json +97 -0
@@ -0,0 +1,6 @@
1
+ import { TelemetryErrorCode } from "../enums/telemetry-error-code.enum";
2
+ declare class TelemetryConfigError extends Error {
3
+ readonly errorCode: TelemetryErrorCode;
4
+ constructor(errorCode: TelemetryErrorCode, message: string);
5
+ }
6
+ export default TelemetryConfigError;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class TelemetryConfigError extends Error {
4
+ constructor(errorCode, message) {
5
+ super(message);
6
+ this.name = "TelemetryConfigError";
7
+ this.errorCode = errorCode;
8
+ Error.captureStackTrace(this, this.constructor);
9
+ }
10
+ }
11
+ exports.default = TelemetryConfigError;
12
+ //# sourceMappingURL=telemetry-config.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-config.error.js","sourceRoot":"","sources":["../../src/errors/telemetry-config.error.ts"],"names":[],"mappings":";;AAEA,MAAM,oBAAqB,SAAQ,KAAK;IAGtC,YAAY,SAA6B,EAAE,OAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Instrumentation } from "@opentelemetry/instrumentation";
2
+ import { IInstrumentationConfig } from "../telemetry.types";
3
+ declare class InstrumentationFactory {
4
+ static createInstrumentations(config?: IInstrumentationConfig): Instrumentation[];
5
+ private static createIgnorePathHook;
6
+ }
7
+ export default InstrumentationFactory;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
4
+ const instrumentation_name_enum_1 = require("../enums/instrumentation-name.enum");
5
+ class InstrumentationFactory {
6
+ static createInstrumentations(config = {}) {
7
+ const options = { ...config.config };
8
+ for (const name of config.disable ?? []) {
9
+ options[name] = { ...options[name], enabled: false };
10
+ }
11
+ for (const name of config.enable ?? []) {
12
+ options[name] = { ...options[name], enabled: true };
13
+ }
14
+ if (config.ignoreIncomingPaths?.length) {
15
+ options[instrumentation_name_enum_1.InstrumentationName.HTTP] = {
16
+ ...options[instrumentation_name_enum_1.InstrumentationName.HTTP],
17
+ ignoreIncomingRequestHook: InstrumentationFactory.createIgnorePathHook(config.ignoreIncomingPaths),
18
+ };
19
+ }
20
+ return [...(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)(options), ...(config.additional ?? [])];
21
+ }
22
+ static createIgnorePathHook(ignoredPaths) {
23
+ return (request) => {
24
+ const path = (request.url ?? "").split("?")[0];
25
+ return ignoredPaths.some((ignored) => path === ignored || path.startsWith(`${ignored}/`));
26
+ };
27
+ }
28
+ }
29
+ exports.default = InstrumentationFactory;
30
+ //# sourceMappingURL=instrumentation.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.factory.js","sourceRoot":"","sources":["../../src/factories/instrumentation.factory.ts"],"names":[],"mappings":";;AAAA,0FAAkH;AAGlH,kFAAyE;AAGzE,MAAM,sBAAsB;IAC1B,MAAM,CAAC,sBAAsB,CAAC,SAAiC,EAAE;QAC/D,MAAM,OAAO,GAA4B,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAE9D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAI,OAAO,CAAC,IAAI,CAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnE,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAI,OAAO,CAAC,IAAI,CAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACvC,OAAO,CAAC,+CAAmB,CAAC,IAAI,CAAC,GAAG;gBAClC,GAAI,OAAO,CAAC,+CAAmB,CAAC,IAAI,CAAY;gBAChD,yBAAyB,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,MAAM,CAAC,mBAAmB,CAAC;aACnG,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,IAAA,wDAA2B,EAAC,OAAmC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7G,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,YAAsB;QACxD,OAAO,CAAC,OAAwB,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;QAC5F,CAAC,CAAC;IACJ,CAAC;CACF;AAED,kBAAe,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { LogRecordProcessor } from "@opentelemetry/sdk-logs";
2
+ import { ILogConfig } from "../telemetry.types";
3
+ declare class LogProcessorFactory {
4
+ static createProcessors(config: ILogConfig): LogRecordProcessor[];
5
+ }
6
+ export default LogProcessorFactory;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const sdk_logs_1 = require("@opentelemetry/sdk-logs");
7
+ const exporter_type_enum_1 = require("../enums/exporter-type.enum");
8
+ const telemetry_error_code_enum_1 = require("../enums/telemetry-error-code.enum");
9
+ const telemetry_config_error_1 = __importDefault(require("../errors/telemetry-config.error"));
10
+ const telemetry_signal_enum_1 = require("../enums/telemetry-signal.enum");
11
+ const otlp_exporter_factory_1 = __importDefault(require("./otlp-exporter.factory"));
12
+ class LogProcessorFactory {
13
+ static createProcessors(config) {
14
+ switch (config.exporter) {
15
+ case exporter_type_enum_1.ExporterType.NONE:
16
+ return [];
17
+ case exporter_type_enum_1.ExporterType.CONSOLE:
18
+ return [new sdk_logs_1.SimpleLogRecordProcessor({ exporter: new sdk_logs_1.ConsoleLogRecordExporter() })];
19
+ case exporter_type_enum_1.ExporterType.OTLP:
20
+ return [
21
+ new sdk_logs_1.BatchLogRecordProcessor({
22
+ exporter: otlp_exporter_factory_1.default.createExporter(telemetry_signal_enum_1.TelemetrySignal.LOGS, config.otlp),
23
+ }),
24
+ ];
25
+ default:
26
+ throw new telemetry_config_error_1.default(telemetry_error_code_enum_1.TelemetryErrorCode.UNSUPPORTED_EXPORTER, `${config.exporter} is not a supported log exporter`);
27
+ }
28
+ }
29
+ }
30
+ exports.default = LogProcessorFactory;
31
+ //# sourceMappingURL=log-processor.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-processor.factory.js","sourceRoot":"","sources":["../../src/factories/log-processor.factory.ts"],"names":[],"mappings":";;;;;AACA,sDAKiC;AACjC,oEAA2D;AAC3D,kFAAwE;AACxE,8FAAoE;AAEpE,0EAAiE;AACjE,oFAA0D;AAE1D,MAAM,mBAAmB;IACvB,MAAM,CAAC,gBAAgB,CAAC,MAAkB;QACxC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,iCAAY,CAAC,IAAI;gBACpB,OAAO,EAAE,CAAC;YACZ,KAAK,iCAAY,CAAC,OAAO;gBACvB,OAAO,CAAC,IAAI,mCAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,mCAAwB,EAAE,EAAE,CAAC,CAAC,CAAC;YACtF,KAAK,iCAAY,CAAC,IAAI;gBACpB,OAAO;oBACL,IAAI,kCAAuB,CAAC;wBAC1B,QAAQ,EAAE,+BAAmB,CAAC,cAAc,CAAoB,uCAAe,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;qBACnG,CAAC;iBACH,CAAC;YACJ;gBACE,MAAM,IAAI,gCAAoB,CAC5B,8CAAkB,CAAC,oBAAoB,EACvC,GAAG,MAAM,CAAC,QAAQ,kCAAkC,CACrD,CAAC;QACN,CAAC;IACH,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { MetricReader } from "@opentelemetry/sdk-metrics";
2
+ import { IMetricConfig } from "../telemetry.types";
3
+ declare class MetricReaderFactory {
4
+ static createReader(config: IMetricConfig): MetricReader | undefined;
5
+ private static createExporter;
6
+ }
7
+ export default MetricReaderFactory;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
7
+ const exporter_type_enum_1 = require("../enums/exporter-type.enum");
8
+ const telemetry_error_code_enum_1 = require("../enums/telemetry-error-code.enum");
9
+ const telemetry_config_error_1 = __importDefault(require("../errors/telemetry-config.error"));
10
+ const telemetry_signal_enum_1 = require("../enums/telemetry-signal.enum");
11
+ const optional_dependency_1 = require("../utils/optional-dependency");
12
+ const otlp_exporter_factory_1 = __importDefault(require("./otlp-exporter.factory"));
13
+ const gcp_credentials_1 = require("../utils/gcp-credentials");
14
+ const DEFAULT_EXPORT_INTERVAL_MILLIS = 60000;
15
+ const GCP_MONITORING_MODULE = "@google-cloud/opentelemetry-cloud-monitoring-exporter";
16
+ const PROMETHEUS_MODULE = "@opentelemetry/exporter-prometheus";
17
+ // the exporter binds every interface when host is unset, exposing an unauthenticated scrape endpoint
18
+ const DEFAULT_PROMETHEUS_HOST = "127.0.0.1";
19
+ class MetricReaderFactory {
20
+ static createReader(config) {
21
+ if (config.exporter === exporter_type_enum_1.ExporterType.NONE) {
22
+ return undefined;
23
+ }
24
+ if (config.exporter === exporter_type_enum_1.ExporterType.PROMETHEUS) {
25
+ const { PrometheusExporter } = (0, optional_dependency_1.loadOptionalDependency)(PROMETHEUS_MODULE);
26
+ return new PrometheusExporter({
27
+ host: config.prometheus?.host ?? DEFAULT_PROMETHEUS_HOST,
28
+ port: config.prometheus?.port,
29
+ endpoint: config.prometheus?.endpoint,
30
+ });
31
+ }
32
+ return new sdk_metrics_1.PeriodicExportingMetricReader({
33
+ exporter: MetricReaderFactory.createExporter(config),
34
+ exportIntervalMillis: config.exportIntervalMillis ?? DEFAULT_EXPORT_INTERVAL_MILLIS,
35
+ });
36
+ }
37
+ static createExporter(config) {
38
+ switch (config.exporter) {
39
+ case exporter_type_enum_1.ExporterType.CONSOLE:
40
+ return new sdk_metrics_1.ConsoleMetricExporter();
41
+ case exporter_type_enum_1.ExporterType.OTLP:
42
+ return otlp_exporter_factory_1.default.createExporter(telemetry_signal_enum_1.TelemetrySignal.METRICS, config.otlp);
43
+ case exporter_type_enum_1.ExporterType.GCP:
44
+ return new ((0, optional_dependency_1.loadOptionalDependency)(GCP_MONITORING_MODULE).MetricExporter)((0, gcp_credentials_1.toGcpExporterOptions)(config.gcp));
45
+ default:
46
+ throw new telemetry_config_error_1.default(telemetry_error_code_enum_1.TelemetryErrorCode.UNSUPPORTED_EXPORTER, `${config.exporter} is not a supported metric exporter`);
47
+ }
48
+ }
49
+ }
50
+ exports.default = MetricReaderFactory;
51
+ //# sourceMappingURL=metric-reader.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-reader.factory.js","sourceRoot":"","sources":["../../src/factories/metric-reader.factory.ts"],"names":[],"mappings":";;;;;AAAA,4DAKoC;AACpC,oEAA2D;AAC3D,kFAAwE;AACxE,8FAAoE;AAEpE,0EAAiE;AACjE,sEAAsE;AACtE,oFAA0D;AAC1D,8DAAgE;AAEhE,MAAM,8BAA8B,GAAG,KAAM,CAAC;AAC9C,MAAM,qBAAqB,GAAG,uDAAuD,CAAC;AACtF,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;AAC/D,qGAAqG;AACrG,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAE5C,MAAM,mBAAmB;IACvB,MAAM,CAAC,YAAY,CAAC,MAAqB;QACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,iCAAY,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,iCAAY,CAAC,UAAU,EAAE,CAAC;YAChD,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAA,4CAAsB,EAAoB,iBAAiB,CAAC,CAAC;YAE5F,OAAO,IAAI,kBAAkB,CAAC;gBAC5B,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,uBAAuB;gBACxD,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI;gBAC7B,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ;aACtC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,2CAA6B,CAAC;YACvC,QAAQ,EAAE,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC;YACpD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,8BAA8B;SACpF,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,MAAqB;QACjD,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,iCAAY,CAAC,OAAO;gBACvB,OAAO,IAAI,mCAAqB,EAAE,CAAC;YACrC,KAAK,iCAAY,CAAC,IAAI;gBACpB,OAAO,+BAAmB,CAAC,cAAc,CAAqB,uCAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACtG,KAAK,iCAAY,CAAC,GAAG;gBACnB,OAAO,IAAI,CAAC,IAAA,4CAAsB,EAAuB,qBAAqB,CAAC,CAAC,cAAc,CAAC,CAC7F,IAAA,sCAAoB,EAAC,MAAM,CAAC,GAAG,CAAC,CACjC,CAAC;YACJ;gBACE,MAAM,IAAI,gCAAoB,CAC5B,8CAAkB,CAAC,oBAAoB,EACvC,GAAG,MAAM,CAAC,QAAQ,qCAAqC,CACxD,CAAC;QACN,CAAC;IACH,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TelemetrySignal } from "../enums/telemetry-signal.enum";
2
+ import { IOtlpOptions } from "../telemetry.types";
3
+ declare class OtlpExporterFactory {
4
+ static createExporter<T>(signal: TelemetrySignal, options?: IOtlpOptions): T;
5
+ }
6
+ export default OtlpExporterFactory;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const otlp_protocol_enum_1 = require("../enums/otlp-protocol.enum");
7
+ const telemetry_error_code_enum_1 = require("../enums/telemetry-error-code.enum");
8
+ const telemetry_signal_enum_1 = require("../enums/telemetry-signal.enum");
9
+ const telemetry_config_error_1 = __importDefault(require("../errors/telemetry-config.error"));
10
+ const optional_dependency_1 = require("../utils/optional-dependency");
11
+ const otlp_options_1 = require("../utils/otlp-options");
12
+ const MODULES = {
13
+ [telemetry_signal_enum_1.TelemetrySignal.TRACES]: {
14
+ [otlp_protocol_enum_1.OtlpProtocol.HTTP_PROTOBUF]: "@opentelemetry/exporter-trace-otlp-proto",
15
+ [otlp_protocol_enum_1.OtlpProtocol.HTTP_JSON]: "@opentelemetry/exporter-trace-otlp-http",
16
+ [otlp_protocol_enum_1.OtlpProtocol.GRPC]: "@opentelemetry/exporter-trace-otlp-grpc",
17
+ },
18
+ [telemetry_signal_enum_1.TelemetrySignal.METRICS]: {
19
+ [otlp_protocol_enum_1.OtlpProtocol.HTTP_PROTOBUF]: "@opentelemetry/exporter-metrics-otlp-proto",
20
+ [otlp_protocol_enum_1.OtlpProtocol.HTTP_JSON]: "@opentelemetry/exporter-metrics-otlp-http",
21
+ [otlp_protocol_enum_1.OtlpProtocol.GRPC]: "@opentelemetry/exporter-metrics-otlp-grpc",
22
+ },
23
+ [telemetry_signal_enum_1.TelemetrySignal.LOGS]: {
24
+ [otlp_protocol_enum_1.OtlpProtocol.HTTP_PROTOBUF]: "@opentelemetry/exporter-logs-otlp-proto",
25
+ [otlp_protocol_enum_1.OtlpProtocol.HTTP_JSON]: "@opentelemetry/exporter-logs-otlp-http",
26
+ [otlp_protocol_enum_1.OtlpProtocol.GRPC]: "@opentelemetry/exporter-logs-otlp-grpc",
27
+ },
28
+ };
29
+ const EXPORT_NAMES = {
30
+ [telemetry_signal_enum_1.TelemetrySignal.TRACES]: "OTLPTraceExporter",
31
+ [telemetry_signal_enum_1.TelemetrySignal.METRICS]: "OTLPMetricExporter",
32
+ [telemetry_signal_enum_1.TelemetrySignal.LOGS]: "OTLPLogExporter",
33
+ };
34
+ class OtlpExporterFactory {
35
+ static createExporter(signal, options = {}) {
36
+ const protocol = options.protocol ?? otlp_protocol_enum_1.OtlpProtocol.HTTP_PROTOBUF;
37
+ const moduleName = MODULES[signal][protocol];
38
+ if (!moduleName) {
39
+ throw new telemetry_config_error_1.default(telemetry_error_code_enum_1.TelemetryErrorCode.UNSUPPORTED_PROTOCOL, `${protocol} is not a supported otlp protocol`);
40
+ }
41
+ const exporters = (0, optional_dependency_1.loadOptionalDependency)(moduleName);
42
+ return new exporters[EXPORT_NAMES[signal]]((0, otlp_options_1.toOtlpExporterOptions)(options));
43
+ }
44
+ }
45
+ exports.default = OtlpExporterFactory;
46
+ //# sourceMappingURL=otlp-exporter.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otlp-exporter.factory.js","sourceRoot":"","sources":["../../src/factories/otlp-exporter.factory.ts"],"names":[],"mappings":";;;;;AAAA,oEAA2D;AAC3D,kFAAwE;AACxE,0EAAiE;AACjE,8FAAoE;AAEpE,sEAAsE;AACtE,wDAA8D;AAE9D,MAAM,OAAO,GAA0D;IACrE,CAAC,uCAAe,CAAC,MAAM,CAAC,EAAE;QACxB,CAAC,iCAAY,CAAC,aAAa,CAAC,EAAE,0CAA0C;QACxE,CAAC,iCAAY,CAAC,SAAS,CAAC,EAAE,yCAAyC;QACnE,CAAC,iCAAY,CAAC,IAAI,CAAC,EAAE,yCAAyC;KAC/D;IACD,CAAC,uCAAe,CAAC,OAAO,CAAC,EAAE;QACzB,CAAC,iCAAY,CAAC,aAAa,CAAC,EAAE,4CAA4C;QAC1E,CAAC,iCAAY,CAAC,SAAS,CAAC,EAAE,2CAA2C;QACrE,CAAC,iCAAY,CAAC,IAAI,CAAC,EAAE,2CAA2C;KACjE;IACD,CAAC,uCAAe,CAAC,IAAI,CAAC,EAAE;QACtB,CAAC,iCAAY,CAAC,aAAa,CAAC,EAAE,yCAAyC;QACvE,CAAC,iCAAY,CAAC,SAAS,CAAC,EAAE,wCAAwC;QAClE,CAAC,iCAAY,CAAC,IAAI,CAAC,EAAE,wCAAwC;KAC9D;CACF,CAAC;AAEF,MAAM,YAAY,GAAoC;IACpD,CAAC,uCAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB;IAC7C,CAAC,uCAAe,CAAC,OAAO,CAAC,EAAE,oBAAoB;IAC/C,CAAC,uCAAe,CAAC,IAAI,CAAC,EAAE,iBAAiB;CAC1C,CAAC;AAEF,MAAM,mBAAmB;IACvB,MAAM,CAAC,cAAc,CAAI,MAAuB,EAAE,UAAwB,EAAE;QAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iCAAY,CAAC,aAAa,CAAC;QAChE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,gCAAoB,CAC5B,8CAAkB,CAAC,oBAAoB,EACvC,GAAG,QAAQ,mCAAmC,CAC/C,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,4CAAsB,EAA6C,UAAU,CAAC,CAAC;QAEjG,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,oCAAqB,EAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { TextMapPropagator } from "@opentelemetry/api";
2
+ import { PropagatorType } from "../enums/propagator-type.enum";
3
+ declare class PropagatorFactory {
4
+ static createPropagator(propagators?: PropagatorType[]): TextMapPropagator;
5
+ private static createOne;
6
+ }
7
+ export default PropagatorFactory;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_1 = require("@opentelemetry/core");
7
+ const propagator_b3_1 = require("@opentelemetry/propagator-b3");
8
+ const propagator_jaeger_1 = require("@opentelemetry/propagator-jaeger");
9
+ const propagator_type_enum_1 = require("../enums/propagator-type.enum");
10
+ const telemetry_error_code_enum_1 = require("../enums/telemetry-error-code.enum");
11
+ const telemetry_config_error_1 = __importDefault(require("../errors/telemetry-config.error"));
12
+ const DEFAULT_PROPAGATORS = [propagator_type_enum_1.PropagatorType.TRACE_CONTEXT, propagator_type_enum_1.PropagatorType.BAGGAGE];
13
+ class PropagatorFactory {
14
+ static createPropagator(propagators) {
15
+ const selected = propagators?.length ? propagators : DEFAULT_PROPAGATORS;
16
+ return new core_1.CompositePropagator({ propagators: selected.map(PropagatorFactory.createOne) });
17
+ }
18
+ static createOne(propagator) {
19
+ switch (propagator) {
20
+ case propagator_type_enum_1.PropagatorType.TRACE_CONTEXT:
21
+ return new core_1.W3CTraceContextPropagator();
22
+ case propagator_type_enum_1.PropagatorType.BAGGAGE:
23
+ return new core_1.W3CBaggagePropagator();
24
+ case propagator_type_enum_1.PropagatorType.B3:
25
+ return new propagator_b3_1.B3Propagator({ injectEncoding: propagator_b3_1.B3InjectEncoding.SINGLE_HEADER });
26
+ case propagator_type_enum_1.PropagatorType.B3_MULTI:
27
+ return new propagator_b3_1.B3Propagator({ injectEncoding: propagator_b3_1.B3InjectEncoding.MULTI_HEADER });
28
+ case propagator_type_enum_1.PropagatorType.JAEGER:
29
+ return new propagator_jaeger_1.JaegerPropagator();
30
+ default:
31
+ throw new telemetry_config_error_1.default(telemetry_error_code_enum_1.TelemetryErrorCode.UNSUPPORTED_PROPAGATOR, `${propagator} is not a supported propagator`);
32
+ }
33
+ }
34
+ }
35
+ exports.default = PropagatorFactory;
36
+ //# sourceMappingURL=propagator.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propagator.factory.js","sourceRoot":"","sources":["../../src/factories/propagator.factory.ts"],"names":[],"mappings":";;;;;AACA,8CAA2G;AAC3G,gEAA8E;AAC9E,wEAAoE;AACpE,wEAA+D;AAC/D,kFAAwE;AACxE,8FAAoE;AAEpE,MAAM,mBAAmB,GAAG,CAAC,qCAAc,CAAC,aAAa,EAAE,qCAAc,CAAC,OAAO,CAAC,CAAC;AAEnF,MAAM,iBAAiB;IACrB,MAAM,CAAC,gBAAgB,CAAC,WAA8B;QACpD,MAAM,QAAQ,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAEzE,OAAO,IAAI,0BAAmB,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,UAA0B;QACjD,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,qCAAc,CAAC,aAAa;gBAC/B,OAAO,IAAI,gCAAyB,EAAE,CAAC;YACzC,KAAK,qCAAc,CAAC,OAAO;gBACzB,OAAO,IAAI,2BAAoB,EAAE,CAAC;YACpC,KAAK,qCAAc,CAAC,EAAE;gBACpB,OAAO,IAAI,4BAAY,CAAC,EAAE,cAAc,EAAE,gCAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9E,KAAK,qCAAc,CAAC,QAAQ;gBAC1B,OAAO,IAAI,4BAAY,CAAC,EAAE,cAAc,EAAE,gCAAgB,CAAC,YAAY,EAAE,CAAC,CAAC;YAC7E,KAAK,qCAAc,CAAC,MAAM;gBACxB,OAAO,IAAI,oCAAgB,EAAE,CAAC;YAChC;gBACE,MAAM,IAAI,gCAAoB,CAC5B,8CAAkB,CAAC,sBAAsB,EACzC,GAAG,UAAU,gCAAgC,CAC9C,CAAC;QACN,CAAC;IACH,CAAC;CACF;AAED,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Resource } from "@opentelemetry/resources";
2
+ import { ITelemetryConfig } from "../telemetry.types";
3
+ declare class ResourceFactory {
4
+ static createResource(config: ITelemetryConfig): Resource;
5
+ }
6
+ export default ResourceFactory;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resources_1 = require("@opentelemetry/resources");
4
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
5
+ // still an incubating convention, whose subpath export only resolves under node16 module resolution
6
+ const ATTR_DEPLOYMENT_ENVIRONMENT_NAME = "deployment.environment.name";
7
+ class ResourceFactory {
8
+ static createResource(config) {
9
+ const attributes = {
10
+ ...config.resourceAttributes,
11
+ [semantic_conventions_1.ATTR_SERVICE_NAME]: config.serviceName,
12
+ };
13
+ if (config.serviceVersion) {
14
+ attributes[semantic_conventions_1.ATTR_SERVICE_VERSION] = config.serviceVersion;
15
+ }
16
+ if (config.environment) {
17
+ attributes[ATTR_DEPLOYMENT_ENVIRONMENT_NAME] = config.environment;
18
+ }
19
+ return (0, resources_1.resourceFromAttributes)(attributes);
20
+ }
21
+ }
22
+ exports.default = ResourceFactory;
23
+ //# sourceMappingURL=resource.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.factory.js","sourceRoot":"","sources":["../../src/factories/resource.factory.ts"],"names":[],"mappings":";;AAAA,wDAAkE;AAClE,8EAA8F;AAI9F,oGAAoG;AACpG,MAAM,gCAAgC,GAAG,6BAA6B,CAAC;AAEvE,MAAM,eAAe;IACnB,MAAM,CAAC,cAAc,CAAC,MAAwB;QAC5C,MAAM,UAAU,GAA2C;YACzD,GAAG,MAAM,CAAC,kBAAkB;YAC5B,CAAC,wCAAiB,CAAC,EAAE,MAAM,CAAC,WAAW;SACxC,CAAC;QAEF,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,UAAU,CAAC,2CAAoB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;QAC3D,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,UAAU,CAAC,gCAAgC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QACpE,CAAC;QAED,OAAO,IAAA,kCAAsB,EAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Sampler } from "@opentelemetry/sdk-trace-node";
2
+ declare class SamplerFactory {
3
+ static createSampler(sampleRatio?: number): Sampler;
4
+ }
5
+ export default SamplerFactory;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
7
+ const telemetry_config_error_1 = __importDefault(require("../errors/telemetry-config.error"));
8
+ const telemetry_error_code_enum_1 = require("../enums/telemetry-error-code.enum");
9
+ class SamplerFactory {
10
+ static createSampler(sampleRatio) {
11
+ if (sampleRatio === undefined) {
12
+ return new sdk_trace_node_1.ParentBasedSampler({ root: new sdk_trace_node_1.AlwaysOnSampler() });
13
+ }
14
+ if (Number.isNaN(sampleRatio) || sampleRatio < 0 || sampleRatio > 1) {
15
+ throw new telemetry_config_error_1.default(telemetry_error_code_enum_1.TelemetryErrorCode.INVALID_SAMPLE_RATIO, `traces.sampleRatio must be between 0 and 1, received ${sampleRatio}`);
16
+ }
17
+ return new sdk_trace_node_1.ParentBasedSampler({ root: new sdk_trace_node_1.TraceIdRatioBasedSampler(sampleRatio) });
18
+ }
19
+ }
20
+ exports.default = SamplerFactory;
21
+ //# sourceMappingURL=sampler.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.factory.js","sourceRoot":"","sources":["../../src/factories/sampler.factory.ts"],"names":[],"mappings":";;;;;AAAA,kEAAuH;AACvH,8FAAoE;AACpE,kFAAwE;AAExE,MAAM,cAAc;IAClB,MAAM,CAAC,aAAa,CAAC,WAAoB;QACvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,mCAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,gCAAe,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,gCAAoB,CAC5B,8CAAkB,CAAC,oBAAoB,EACvC,wDAAwD,WAAW,EAAE,CACtE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,mCAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,yCAAwB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;CACF;AAED,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { NodeSDK } from "@opentelemetry/sdk-node";
2
+ import { ITelemetryConfig } from "../telemetry.types";
3
+ declare class SdkFactory {
4
+ static createSdk(config: ITelemetryConfig): NodeSDK;
5
+ }
6
+ export default SdkFactory;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const sdk_node_1 = require("@opentelemetry/sdk-node");
7
+ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
8
+ const exporter_type_enum_1 = require("../enums/exporter-type.enum");
9
+ const instrumentation_factory_1 = __importDefault(require("./instrumentation.factory"));
10
+ const log_processor_factory_1 = __importDefault(require("./log-processor.factory"));
11
+ const metric_reader_factory_1 = __importDefault(require("./metric-reader.factory"));
12
+ const attribute_sanitizer_processor_1 = __importDefault(require("../processors/attribute-sanitizer.processor"));
13
+ const propagator_factory_1 = __importDefault(require("./propagator.factory"));
14
+ const resource_factory_1 = __importDefault(require("./resource.factory"));
15
+ const sampler_factory_1 = __importDefault(require("./sampler.factory"));
16
+ const trace_exporter_factory_1 = __importDefault(require("./trace-exporter.factory"));
17
+ const DISABLED_SIGNAL = { exporter: exporter_type_enum_1.ExporterType.NONE };
18
+ const DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = 4096;
19
+ class SdkFactory {
20
+ static createSdk(config) {
21
+ const traces = config.traces ?? DISABLED_SIGNAL;
22
+ const metrics = config.metrics ?? DISABLED_SIGNAL;
23
+ const traceExporter = trace_exporter_factory_1.default.createExporter(traces);
24
+ const metricReader = metric_reader_factory_1.default.createReader(metrics);
25
+ const spanProcessors = [
26
+ ...(traces.sanitizeAttributes === false ? [] : [new attribute_sanitizer_processor_1.default()]),
27
+ ...(traceExporter ? [new sdk_trace_node_1.BatchSpanProcessor(traceExporter, traces.batch)] : []),
28
+ ...(traces.additionalProcessors ?? []),
29
+ ];
30
+ // empty arrays keep NodeSDK from falling back to its OTEL_* environment defaults, which export to localhost:4318
31
+ return new sdk_node_1.NodeSDK({
32
+ resource: resource_factory_1.default.createResource(config),
33
+ autoDetectResources: config.resourceDetection ?? true,
34
+ sampler: traces.sampler ?? sampler_factory_1.default.createSampler(traces.sampleRatio),
35
+ spanLimits: { attributeValueLengthLimit: DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT, ...config.spanLimits },
36
+ spanProcessors,
37
+ metricReaders: metricReader ? [metricReader] : [],
38
+ views: metrics.views ?? [],
39
+ logRecordProcessors: log_processor_factory_1.default.createProcessors(config.logs ?? DISABLED_SIGNAL),
40
+ instrumentations: instrumentation_factory_1.default.createInstrumentations(config.instrumentation),
41
+ textMapPropagator: propagator_factory_1.default.createPropagator(config.propagators),
42
+ });
43
+ }
44
+ }
45
+ exports.default = SdkFactory;
46
+ //# sourceMappingURL=sdk.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.factory.js","sourceRoot":"","sources":["../../src/factories/sdk.factory.ts"],"names":[],"mappings":";;;;;AAAA,sDAAkD;AAClD,kEAAkF;AAClF,oEAA2D;AAE3D,wFAA+D;AAC/D,oFAA0D;AAC1D,oFAA0D;AAC1D,gHAAsF;AACtF,8EAAqD;AACrD,0EAAiD;AACjD,wEAA+C;AAC/C,sFAA4D;AAE5D,MAAM,eAAe,GAA8C,EAAE,QAAQ,EAAE,iCAAY,CAAC,IAAI,EAAE,CAAC;AACnG,MAAM,oCAAoC,GAAG,IAAK,CAAC;AAEnD,MAAM,UAAU;IACd,MAAM,CAAC,SAAS,CAAC,MAAwB;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;QAClD,MAAM,aAAa,GAAG,gCAAoB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,+BAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAoB;YACtC,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,uCAA2B,EAAE,CAAC,CAAC;YACnF,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,mCAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;SACvC,CAAC;QAEF,iHAAiH;QACjH,OAAO,IAAI,kBAAO,CAAC;YACjB,QAAQ,EAAE,0BAAe,CAAC,cAAc,CAAC,MAAM,CAAC;YAChD,mBAAmB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;YACrD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,yBAAc,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3E,UAAU,EAAE,EAAE,yBAAyB,EAAE,oCAAoC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;YACrG,cAAc;YACd,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;YACjD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,mBAAmB,EAAE,+BAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,eAAe,CAAC;YACzF,gBAAgB,EAAE,iCAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC;YACvF,iBAAiB,EAAE,4BAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;CACF;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { SpanExporter } from "@opentelemetry/sdk-trace-node";
2
+ import { ITraceConfig } from "../telemetry.types";
3
+ declare class TraceExporterFactory {
4
+ static createExporter(config: ITraceConfig): SpanExporter | undefined;
5
+ private static createGcpExporter;
6
+ }
7
+ export default TraceExporterFactory;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
7
+ const exporter_type_enum_1 = require("../enums/exporter-type.enum");
8
+ const telemetry_error_code_enum_1 = require("../enums/telemetry-error-code.enum");
9
+ const telemetry_config_error_1 = __importDefault(require("../errors/telemetry-config.error"));
10
+ const telemetry_signal_enum_1 = require("../enums/telemetry-signal.enum");
11
+ const optional_dependency_1 = require("../utils/optional-dependency");
12
+ const otlp_exporter_factory_1 = __importDefault(require("./otlp-exporter.factory"));
13
+ const gcp_credentials_1 = require("../utils/gcp-credentials");
14
+ const GCP_TRACE_MODULE = "@google-cloud/opentelemetry-cloud-trace-exporter";
15
+ class TraceExporterFactory {
16
+ static createExporter(config) {
17
+ switch (config.exporter) {
18
+ case exporter_type_enum_1.ExporterType.NONE:
19
+ return undefined;
20
+ case exporter_type_enum_1.ExporterType.CONSOLE:
21
+ return new sdk_trace_node_1.ConsoleSpanExporter();
22
+ case exporter_type_enum_1.ExporterType.OTLP:
23
+ return otlp_exporter_factory_1.default.createExporter(telemetry_signal_enum_1.TelemetrySignal.TRACES, config.otlp);
24
+ case exporter_type_enum_1.ExporterType.GCP:
25
+ return TraceExporterFactory.createGcpExporter(config);
26
+ default:
27
+ throw new telemetry_config_error_1.default(telemetry_error_code_enum_1.TelemetryErrorCode.UNSUPPORTED_EXPORTER, `${config.exporter} is not a supported trace exporter`);
28
+ }
29
+ }
30
+ static createGcpExporter(config) {
31
+ const { TraceExporter } = (0, optional_dependency_1.loadOptionalDependency)(GCP_TRACE_MODULE);
32
+ return new TraceExporter((0, gcp_credentials_1.toGcpExporterOptions)(config.gcp));
33
+ }
34
+ }
35
+ exports.default = TraceExporterFactory;
36
+ //# sourceMappingURL=trace-exporter.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-exporter.factory.js","sourceRoot":"","sources":["../../src/factories/trace-exporter.factory.ts"],"names":[],"mappings":";;;;;AAAA,kEAAkF;AAClF,oEAA2D;AAC3D,kFAAwE;AACxE,8FAAoE;AAEpE,0EAAiE;AACjE,sEAAsE;AACtE,oFAA0D;AAC1D,8DAAgE;AAEhE,MAAM,gBAAgB,GAAG,kDAAkD,CAAC;AAE5E,MAAM,oBAAoB;IACxB,MAAM,CAAC,cAAc,CAAC,MAAoB;QACxC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,iCAAY,CAAC,IAAI;gBACpB,OAAO,SAAS,CAAC;YACnB,KAAK,iCAAY,CAAC,OAAO;gBACvB,OAAO,IAAI,oCAAmB,EAAE,CAAC;YACnC,KAAK,iCAAY,CAAC,IAAI;gBACpB,OAAO,+BAAmB,CAAC,cAAc,CAAe,uCAAe,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/F,KAAK,iCAAY,CAAC,GAAG;gBACnB,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACxD;gBACE,MAAM,IAAI,gCAAoB,CAC5B,8CAAkB,CAAC,oBAAoB,EACvC,GAAG,MAAM,CAAC,QAAQ,oCAAoC,CACvD,CAAC;QACN,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,MAAoB;QACnD,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,4CAAsB,EAAkB,gBAAgB,CAAC,CAAC;QAEpF,OAAO,IAAI,aAAa,CAAC,IAAA,sCAAoB,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ExporterType } from "./enums/exporter-type.enum";
2
+ import { InstrumentationName } from "./enums/instrumentation-name.enum";
3
+ import { OtlpProtocol } from "./enums/otlp-protocol.enum";
4
+ import { PropagatorType } from "./enums/propagator-type.enum";
5
+ import { TelemetryErrorCode } from "./enums/telemetry-error-code.enum";
6
+ import { TelemetrySignal } from "./enums/telemetry-signal.enum";
7
+ import TelemetryConfigError from "./errors/telemetry-config.error";
8
+ import { currentTraceId, getTracer, withSpan } from "./services/span.service";
9
+ import Telemetry from "./services/telemetry.service";
10
+ export { currentTraceId, ExporterType, getTracer, InstrumentationName, OtlpProtocol, PropagatorType, Telemetry, TelemetryConfigError, TelemetryErrorCode, TelemetrySignal, withSpan, };
11
+ export * from "./telemetry.types";
package/dist/index.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.withSpan = exports.TelemetrySignal = exports.TelemetryErrorCode = exports.TelemetryConfigError = exports.Telemetry = exports.PropagatorType = exports.OtlpProtocol = exports.InstrumentationName = exports.getTracer = exports.ExporterType = exports.currentTraceId = void 0;
21
+ const exporter_type_enum_1 = require("./enums/exporter-type.enum");
22
+ Object.defineProperty(exports, "ExporterType", { enumerable: true, get: function () { return exporter_type_enum_1.ExporterType; } });
23
+ const instrumentation_name_enum_1 = require("./enums/instrumentation-name.enum");
24
+ Object.defineProperty(exports, "InstrumentationName", { enumerable: true, get: function () { return instrumentation_name_enum_1.InstrumentationName; } });
25
+ const otlp_protocol_enum_1 = require("./enums/otlp-protocol.enum");
26
+ Object.defineProperty(exports, "OtlpProtocol", { enumerable: true, get: function () { return otlp_protocol_enum_1.OtlpProtocol; } });
27
+ const propagator_type_enum_1 = require("./enums/propagator-type.enum");
28
+ Object.defineProperty(exports, "PropagatorType", { enumerable: true, get: function () { return propagator_type_enum_1.PropagatorType; } });
29
+ const telemetry_error_code_enum_1 = require("./enums/telemetry-error-code.enum");
30
+ Object.defineProperty(exports, "TelemetryErrorCode", { enumerable: true, get: function () { return telemetry_error_code_enum_1.TelemetryErrorCode; } });
31
+ const telemetry_signal_enum_1 = require("./enums/telemetry-signal.enum");
32
+ Object.defineProperty(exports, "TelemetrySignal", { enumerable: true, get: function () { return telemetry_signal_enum_1.TelemetrySignal; } });
33
+ const telemetry_config_error_1 = __importDefault(require("./errors/telemetry-config.error"));
34
+ exports.TelemetryConfigError = telemetry_config_error_1.default;
35
+ const span_service_1 = require("./services/span.service");
36
+ Object.defineProperty(exports, "currentTraceId", { enumerable: true, get: function () { return span_service_1.currentTraceId; } });
37
+ Object.defineProperty(exports, "getTracer", { enumerable: true, get: function () { return span_service_1.getTracer; } });
38
+ Object.defineProperty(exports, "withSpan", { enumerable: true, get: function () { return span_service_1.withSpan; } });
39
+ const telemetry_service_1 = __importDefault(require("./services/telemetry.service"));
40
+ exports.Telemetry = telemetry_service_1.default;
41
+ __exportStar(require("./telemetry.types"), exports);
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mEAA0D;AAYxD,6FAZO,iCAAY,OAYP;AAXd,iFAAwE;AAatE,oGAbO,+CAAmB,OAaP;AAZrB,mEAA0D;AAaxD,6FAbO,iCAAY,OAaP;AAZd,uEAA8D;AAa5D,+FAbO,qCAAc,OAaP;AAZhB,iFAAuE;AAerE,mGAfO,8CAAkB,OAeP;AAdpB,yEAAgE;AAe9D,gGAfO,uCAAe,OAeP;AAdjB,6FAAmE;AAYjE,+BAZK,gCAAoB,CAYL;AAXtB,0DAA8E;AAI5E,+FAJO,6BAAc,OAIP;AAEd,0FANuB,wBAAS,OAMvB;AAQT,yFAdkC,uBAAQ,OAclC;AAbV,qFAAqD;AASnD,oBATK,2BAAS,CASL;AAOX,oDAAkC"}
@@ -0,0 +1,8 @@
1
+ import type { ReadableSpan, SpanProcessor } from "@opentelemetry/sdk-trace-node";
2
+ declare class AttributeSanitizerProcessor implements SpanProcessor {
3
+ onStart(): void;
4
+ onEnd(span: ReadableSpan): void;
5
+ forceFlush(): Promise<void>;
6
+ shutdown(): Promise<void>;
7
+ }
8
+ export default AttributeSanitizerProcessor;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // a single NaN makes Jaeger fail to marshal the whole trace, and no backend can represent one usefully
4
+ class AttributeSanitizerProcessor {
5
+ onStart() {
6
+ return undefined;
7
+ }
8
+ onEnd(span) {
9
+ for (const [key, value] of Object.entries(span.attributes)) {
10
+ if (typeof value === "number" && !Number.isFinite(value)) {
11
+ delete span.attributes[key];
12
+ }
13
+ }
14
+ }
15
+ forceFlush() {
16
+ return Promise.resolve();
17
+ }
18
+ shutdown() {
19
+ return Promise.resolve();
20
+ }
21
+ }
22
+ exports.default = AttributeSanitizerProcessor;
23
+ //# sourceMappingURL=attribute-sanitizer.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-sanitizer.processor.js","sourceRoot":"","sources":["../../src/processors/attribute-sanitizer.processor.ts"],"names":[],"mappings":";;AAEA,uGAAuG;AACvG,MAAM,2BAA2B;IAC/B,OAAO;QACL,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,kBAAe,2BAA2B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Tracer } from "@opentelemetry/api";
2
+ import { IWithSpanOptions, SpanHandler } from "../telemetry.types";
3
+ export declare function getTracer(name: string, version?: string): Tracer;
4
+ export declare function currentTraceId(): string | undefined;
5
+ export declare function withSpan<T>(name: string, handler: SpanHandler<T>): Promise<T>;
6
+ export declare function withSpan<T>(name: string, options: IWithSpanOptions, handler: SpanHandler<T>): Promise<T>;