logixia 1.13.3 → 2.0.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 (118) hide show
  1. package/README.md +72 -16
  2. package/dist/{azure-monitor.transport-BDFO4F-i.d.ts → azure-monitor.transport-Cn_3Usvu.d.ts} +2 -2
  3. package/dist/{azure-monitor.transport-BDFO4F-i.d.ts.map → azure-monitor.transport-Cn_3Usvu.d.ts.map} +1 -1
  4. package/dist/{azure-monitor.transport-D5wQEH04.d.mts → azure-monitor.transport-D7Da4RAb.d.mts} +2 -2
  5. package/dist/{azure-monitor.transport-D5wQEH04.d.mts.map → azure-monitor.transport-D7Da4RAb.d.mts.map} +1 -1
  6. package/dist/azure.d.mts +2 -2
  7. package/dist/azure.d.ts +2 -2
  8. package/dist/browser.d.mts +9 -0
  9. package/dist/browser.d.mts.map +1 -1
  10. package/dist/browser.d.ts +9 -0
  11. package/dist/browser.d.ts.map +1 -1
  12. package/dist/browser.js +43 -12
  13. package/dist/browser.js.map +1 -1
  14. package/dist/browser.mjs +43 -12
  15. package/dist/browser.mjs.map +1 -1
  16. package/dist/{nestjs-extras-ImbuDhs1.mjs → builder-0gEzRopq.mjs} +77 -871
  17. package/dist/builder-0gEzRopq.mjs.map +1 -0
  18. package/dist/{nestjs-extras-DnJ6vrIC.js → builder-D44QktIo.js} +81 -943
  19. package/dist/builder-D44QktIo.js.map +1 -0
  20. package/dist/cli/index.js +32 -13
  21. package/dist/cloudwatch.d.mts +2 -2
  22. package/dist/cloudwatch.d.ts +2 -2
  23. package/dist/{cloudwatch.transport-B00st6Xv.d.ts → cloudwatch.transport-DsEq633o.d.ts} +2 -2
  24. package/dist/{cloudwatch.transport-B00st6Xv.d.ts.map → cloudwatch.transport-DsEq633o.d.ts.map} +1 -1
  25. package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts → cloudwatch.transport-UlyZFWMn.d.mts} +2 -2
  26. package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts.map → cloudwatch.transport-UlyZFWMn.d.mts.map} +1 -1
  27. package/dist/gcp.d.mts +2 -2
  28. package/dist/gcp.d.ts +2 -2
  29. package/dist/{gcp.transport-m4fVw0b1.d.ts → gcp.transport-B7oc97sG.d.ts} +2 -2
  30. package/dist/{gcp.transport-m4fVw0b1.d.ts.map → gcp.transport-B7oc97sG.d.ts.map} +1 -1
  31. package/dist/{gcp.transport-zzNyIoih.d.mts → gcp.transport-GrJurKo8.d.mts} +2 -2
  32. package/dist/{gcp.transport-zzNyIoih.d.mts.map → gcp.transport-GrJurKo8.d.mts.map} +1 -1
  33. package/dist/{index-BPwEisy4.d.mts → index-3mw5gaCw.d.mts} +2 -2
  34. package/dist/{index-BPwEisy4.d.mts.map → index-3mw5gaCw.d.mts.map} +1 -1
  35. package/dist/{index-nZEeCr3X.d.ts → index-DhIoploR.d.ts} +2 -2
  36. package/dist/{index-nZEeCr3X.d.ts.map → index-DhIoploR.d.ts.map} +1 -1
  37. package/dist/index.d.mts +44 -47
  38. package/dist/index.d.mts.map +1 -1
  39. package/dist/index.d.ts +44 -47
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +38 -126
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +5 -58
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/logitron-logger-BFDSO8Io.d.mts +257 -0
  46. package/dist/logitron-logger-BFDSO8Io.d.mts.map +1 -0
  47. package/dist/logitron-logger-UVeN-mQm.d.ts +257 -0
  48. package/dist/logitron-logger-UVeN-mQm.d.ts.map +1 -0
  49. package/dist/middleware.d.mts +2 -2
  50. package/dist/middleware.d.ts +2 -2
  51. package/dist/nest.d.mts +481 -6
  52. package/dist/nest.d.mts.map +1 -1
  53. package/dist/nest.d.ts +481 -6
  54. package/dist/nest.d.ts.map +1 -1
  55. package/dist/nest.js +877 -15
  56. package/dist/nest.js.map +1 -0
  57. package/dist/nest.mjs +861 -6
  58. package/dist/nest.mjs.map +1 -0
  59. package/dist/{search-DjXSn6v5.mjs → search-BFbu_oVn.mjs} +13 -3
  60. package/dist/{search-DjXSn6v5.mjs.map → search-BFbu_oVn.mjs.map} +1 -1
  61. package/dist/{search-B0MH1SJJ.js → search-C4V0OMEn.js} +13 -3
  62. package/dist/{search-B0MH1SJJ.js.map → search-C4V0OMEn.js.map} +1 -1
  63. package/dist/{search-CHUZPl0h.d.ts → search-CNh9uVwR.d.ts} +2 -2
  64. package/dist/search-CNh9uVwR.d.ts.map +1 -0
  65. package/dist/{search-BfBzDIT9.d.mts → search-DXANsQ2n.d.mts} +2 -2
  66. package/dist/{search-CHUZPl0h.d.ts.map → search-DXANsQ2n.d.mts.map} +1 -1
  67. package/dist/search.d.mts +3 -3
  68. package/dist/search.d.ts +3 -3
  69. package/dist/search.js +1 -1
  70. package/dist/search.mjs +1 -1
  71. package/dist/slack.transport-BZzoXDPn.d.mts +112 -0
  72. package/dist/slack.transport-BZzoXDPn.d.mts.map +1 -0
  73. package/dist/slack.transport-BfJRouB2.js +654 -0
  74. package/dist/slack.transport-BfJRouB2.js.map +1 -0
  75. package/dist/slack.transport-Bzw7sucI.mjs +643 -0
  76. package/dist/slack.transport-Bzw7sucI.mjs.map +1 -0
  77. package/dist/slack.transport-CXjQYOes.d.ts +112 -0
  78. package/dist/slack.transport-CXjQYOes.d.ts.map +1 -0
  79. package/dist/testing.d.mts +2 -2
  80. package/dist/testing.d.ts +2 -2
  81. package/dist/{transport.manager-CpdVHEGP.mjs → transport.manager-BiuCAJd2.mjs} +171 -84
  82. package/dist/transport.manager-BiuCAJd2.mjs.map +1 -0
  83. package/dist/{transport.manager-Crau3Rle.js → transport.manager-CXbKKdVE.js} +176 -83
  84. package/dist/transport.manager-CXbKKdVE.js.map +1 -0
  85. package/dist/{transport.types-CtNr3D7S.d.mts → transport.types-BMnurPcc.d.mts} +5 -2
  86. package/dist/transport.types-BMnurPcc.d.mts.map +1 -0
  87. package/dist/{transport.types-DqVLZTyf.d.ts → transport.types-CGoHpWQR.d.ts} +5 -2
  88. package/dist/transport.types-CGoHpWQR.d.ts.map +1 -0
  89. package/dist/transports.d.mts +18 -13
  90. package/dist/transports.d.mts.map +1 -1
  91. package/dist/transports.d.ts +18 -13
  92. package/dist/transports.d.ts.map +1 -1
  93. package/dist/transports.js +5 -2
  94. package/dist/transports.mjs +4 -3
  95. package/dist/worker.d.mts +2 -2
  96. package/dist/worker.d.ts +2 -2
  97. package/dist/worker.js +1 -1
  98. package/dist/worker.mjs +1 -1
  99. package/dist/{worker.transport-JP8YHBuU.js → worker.transport-BdPxu3PN.js} +1 -1
  100. package/dist/{worker.transport-JP8YHBuU.js.map → worker.transport-BdPxu3PN.js.map} +1 -1
  101. package/dist/{worker.transport-Bj-i0P9V.d.ts → worker.transport-CdzSZJmw.d.ts} +2 -2
  102. package/dist/{worker.transport-Bj-i0P9V.d.ts.map → worker.transport-CdzSZJmw.d.ts.map} +1 -1
  103. package/dist/{worker.transport-Bgv9heDI.d.mts → worker.transport-JvGPog3C.d.mts} +2 -2
  104. package/dist/{worker.transport-Bgv9heDI.d.mts.map → worker.transport-JvGPog3C.d.mts.map} +1 -1
  105. package/dist/{worker.transport-otwhJ_Et.mjs → worker.transport-lPxO2MVL.mjs} +1 -1
  106. package/dist/{worker.transport-otwhJ_Et.mjs.map → worker.transport-lPxO2MVL.mjs.map} +1 -1
  107. package/package.json +18 -9
  108. package/dist/nestjs-extras-DnJ6vrIC.js.map +0 -1
  109. package/dist/nestjs-extras-ImbuDhs1.mjs.map +0 -1
  110. package/dist/nestjs-extras-OkC796py.d.mts +0 -725
  111. package/dist/nestjs-extras-OkC796py.d.mts.map +0 -1
  112. package/dist/nestjs-extras-mKrHE9S6.d.ts +0 -725
  113. package/dist/nestjs-extras-mKrHE9S6.d.ts.map +0 -1
  114. package/dist/search-BfBzDIT9.d.mts.map +0 -1
  115. package/dist/transport.manager-CpdVHEGP.mjs.map +0 -1
  116. package/dist/transport.manager-Crau3Rle.js.map +0 -1
  117. package/dist/transport.types-CtNr3D7S.d.mts.map +0 -1
  118. package/dist/transport.types-DqVLZTyf.d.ts.map +0 -1
@@ -9,12 +9,12 @@ let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
10
10
  let node_events = require("node:events");
11
11
  node_events = require_chunk.__toESM(node_events);
12
- let node_stream_promises = require("node:stream/promises");
13
- node_stream_promises = require_chunk.__toESM(node_stream_promises);
14
12
  let node_util = require("node:util");
15
13
  node_util = require_chunk.__toESM(node_util);
16
14
  let node_zlib = require("node:zlib");
17
15
  node_zlib = require_chunk.__toESM(node_zlib);
16
+ let node_stream_promises = require("node:stream/promises");
17
+ node_stream_promises = require_chunk.__toESM(node_stream_promises);
18
18
 
19
19
  //#region src/utils/sanitize.utils.ts
20
20
  /**
@@ -772,6 +772,17 @@ var DatabaseTransport = class {
772
772
 
773
773
  //#endregion
774
774
  //#region src/transports/analytics.transport.ts
775
+ /**
776
+ * Thrown by sendBatch() when part of a batch was already delivered. drain()
777
+ * requeues only `unsent`, so delivered entries are not sent twice.
778
+ */
779
+ var PartialBatchError = class extends Error {
780
+ constructor(message, unsent, options) {
781
+ super(message, options);
782
+ this.unsent = unsent;
783
+ this.name = "PartialBatchError";
784
+ }
785
+ };
775
786
  var AnalyticsTransport = class {
776
787
  constructor(name, config) {
777
788
  this.batch = [];
@@ -832,7 +843,7 @@ var AnalyticsTransport = class {
832
843
  await this.sendBatch(entriesToSend);
833
844
  } catch (error) {
834
845
  require_internal_log.internalError(`Analytics transport ${this.name} flush failed`, error);
835
- this.batch.unshift(...entriesToSend);
846
+ this.batch.unshift(...error instanceof PartialBatchError ? error.unsent : entriesToSend);
836
847
  this.cap.enforce(this.batch);
837
848
  return;
838
849
  }
@@ -895,8 +906,71 @@ var AnalyticsTransport = class {
895
906
 
896
907
  //#endregion
897
908
  //#region src/transports/datadog.transport.ts
909
+ const gzipAsync = (0, node_util.promisify)(node_zlib.gzip);
910
+ const MAX_LOGS_PER_REQUEST = 1e3;
911
+ const MAX_LOGS_PAYLOAD_BYTES = 5e6;
912
+ const MAX_LOG_BYTES = 1e6;
913
+ const MAX_TRUNCATED_MESSAGE_CHARS = 15e4;
914
+ const TRUNCATED_LOG_KEYS = [
915
+ "ddsource",
916
+ "ddtags",
917
+ "hostname",
918
+ "service",
919
+ "status",
920
+ "timestamp",
921
+ "level",
922
+ "context",
923
+ "traceId",
924
+ "appName",
925
+ "environment",
926
+ "env",
927
+ "version",
928
+ "logger",
929
+ "dd.trace_id",
930
+ "dd.span_id"
931
+ ];
932
+ const STATUS_MAP = {
933
+ fatal: "critical",
934
+ critical: "critical",
935
+ error: "error",
936
+ warn: "warn",
937
+ warning: "warn",
938
+ info: "info",
939
+ debug: "debug",
940
+ trace: "debug",
941
+ verbose: "debug"
942
+ };
943
+ const MAX_UINT64 = (1n << 64n) - 1n;
944
+ const DASHED_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
945
+ const HEX = /^[0-9a-f]+$/i;
946
+ const DIGITS = /^\d+$/;
947
+ /**
948
+ * Datadog correlates on a decimal 64-bit id. Accepts:
949
+ * - a dashed UUID (logixia's default trace id): dashes stripped, then 32-hex;
950
+ * - 32 hex chars (W3C trace id) or 16 hex chars containing a-f: low 64 bits as decimal;
951
+ * - an all-digit string: already decimal (dd-trace's native format), passed through.
952
+ * An all-digit string is ambiguous when it is 16 or 32 long: 32 is read as hex (a
953
+ * decimal id has at most 20 digits), 16 is read as decimal.
954
+ * Anything else yields the raw string for trace ids (`passthrough`) and nothing for span ids.
955
+ */
956
+ function toDatadogId(id, passthrough) {
957
+ if (typeof id !== "string" || id === "") return void 0;
958
+ const fallback = passthrough ? id : void 0;
959
+ const compact = DASHED_UUID.test(id) ? id.replaceAll("-", "") : id;
960
+ const isHexId = HEX.test(compact) && (compact.length === 32 || compact.length === 16);
961
+ if (DIGITS.test(compact) && compact.length !== 32) {
962
+ const value = BigInt(compact);
963
+ return value <= MAX_UINT64 ? value.toString() : fallback;
964
+ }
965
+ if (isHexId) return BigInt(`0x${compact.slice(-16)}`).toString();
966
+ return fallback;
967
+ }
968
+ /** Datadog tags: no commas or whitespace, lowercase, at most 200 chars. */
969
+ function tag(key, value) {
970
+ return `${key}:${value}`.replaceAll(/[\s,]+/g, "_").toLowerCase().slice(0, 200);
971
+ }
898
972
  /**
899
- * Sends log entries and metrics to Datadog via the Logs and Metrics HTTP APIs.
973
+ * Sends log entries and metrics to Datadog via the Logs (v2) and Metrics HTTP APIs.
900
974
  *
901
975
  * The API key is transmitted via the `DD-API-KEY` request header — never in the URL.
902
976
  *
@@ -922,29 +996,68 @@ var DataDogTransport = class extends AnalyticsTransport {
922
996
  }
923
997
  }
924
998
  async sendEntry(entry) {
925
- const promises = [];
926
- if (this.datadogConfig.enableLogs !== false) promises.push(this.sendLog(entry));
927
- if (this.datadogConfig.enableMetrics) promises.push(this.sendMetric(entry));
928
- if (this.datadogConfig.enableTraces && entry.traceId) promises.push(this.sendTrace(entry));
929
- await Promise.all(promises);
999
+ await this.sendBatch([entry]);
930
1000
  }
1001
+ /**
1002
+ * Logs go first, chunk by chunk; metrics follow once every log chunk is out.
1003
+ * A failure part-way throws PartialBatchError naming only the entries that were
1004
+ * not delivered, so a retry never re-posts a chunk Datadog already accepted.
1005
+ */
931
1006
  async sendBatch(entries) {
932
- const promises = [];
933
- if (this.datadogConfig.enableLogs !== false) promises.push(this.sendLogBatch(entries));
934
- if (this.datadogConfig.enableMetrics) promises.push(this.sendMetricBatch(entries));
935
- if (this.datadogConfig.enableTraces) {
936
- const entriesWithTraces = entries.filter((e) => e.traceId);
937
- if (entriesWithTraces.length > 0) promises.push(this.sendTraceBatch(entriesWithTraces));
1007
+ if (this.datadogConfig.enableLogs !== false) await this.sendLogBatch(entries);
1008
+ if (this.datadogConfig.enableMetrics) try {
1009
+ await this.sendMetricBatch(entries);
1010
+ } catch (error) {
1011
+ if (this.datadogConfig.enableLogs === false) throw error;
1012
+ throw new PartialBatchError(error.message, [], { cause: error });
938
1013
  }
939
- await Promise.all(promises);
940
1014
  }
941
1015
  async cleanup() {}
942
- async sendLog(entry) {
943
- await this.sendLogBatch([entry]);
944
- }
945
1016
  async sendLogBatch(entries) {
946
- const payload = { logs: entries.map((entry) => this.transformToDataDogLog(entry)) };
947
- await this.makeLogsRequest("/v1/input", payload);
1017
+ const items = entries.map((entry) => ({
1018
+ entry,
1019
+ json: this.serializeLog(entry)
1020
+ }));
1021
+ const chunks = this.chunkLogs(items);
1022
+ for (let i = 0; i < chunks.length; i += 1) {
1023
+ const chunk$1 = chunks[i];
1024
+ try {
1025
+ await this.makeLogsRequest("/api/v2/logs", `[${chunk$1.map((item) => item.json).join(",")}]`);
1026
+ } catch (error) {
1027
+ if (i === 0) throw error;
1028
+ const unsent = chunks.slice(i).flatMap((c) => c.map((item) => item.entry));
1029
+ throw new PartialBatchError(error.message, unsent, { cause: error });
1030
+ }
1031
+ }
1032
+ }
1033
+ /** Splits into requests of at most 1000 entries and about 5MB of JSON. */
1034
+ chunkLogs(items) {
1035
+ const chunks = [];
1036
+ let current = [];
1037
+ let currentBytes = 2;
1038
+ for (const item of items) {
1039
+ const bytes = Buffer.byteLength(item.json) + 1;
1040
+ if (current.length > 0 && (current.length >= MAX_LOGS_PER_REQUEST || currentBytes + bytes > MAX_LOGS_PAYLOAD_BYTES)) {
1041
+ chunks.push(current);
1042
+ current = [];
1043
+ currentBytes = 2;
1044
+ }
1045
+ current.push(item);
1046
+ currentBytes += bytes;
1047
+ }
1048
+ if (current.length > 0) chunks.push(current);
1049
+ return chunks;
1050
+ }
1051
+ /** Serializes once. A log over 1MB keeps its identity and correlation fields but loses its attributes and most of its message. */
1052
+ serializeLog(entry) {
1053
+ const log = this.transformToDataDogLog(entry);
1054
+ const json = require_safe_stringify.stringifyForLog(log);
1055
+ if (Buffer.byteLength(json) <= MAX_LOG_BYTES) return json;
1056
+ const kept = {};
1057
+ for (const key of TRUNCATED_LOG_KEYS) if (log[key] !== void 0) kept[key] = log[key];
1058
+ kept["message"] = String(log["message"]).slice(0, MAX_TRUNCATED_MESSAGE_CHARS);
1059
+ kept["truncated"] = true;
1060
+ return require_safe_stringify.stringifyForLog(kept);
948
1061
  }
949
1062
  async sendMetric(entry) {
950
1063
  await this.sendMetricBatch([entry]);
@@ -953,29 +1066,35 @@ var DataDogTransport = class extends AnalyticsTransport {
953
1066
  const payload = { series: entries.map((entry) => this.transformToDataDogMetric(entry)) };
954
1067
  await this.makeMetricsRequest("/api/v1/series", payload);
955
1068
  }
956
- async sendTrace(entry) {
957
- await this.sendLog(entry);
958
- }
959
- async sendTraceBatch(entries) {
960
- await this.sendLogBatch(entries);
961
- }
962
1069
  transformToDataDogLog(entry) {
1070
+ var _entry$data, _entry$data2;
1071
+ const transformed = this.transformEntry(entry);
1072
+ const service = this.datadogConfig.service || "logixia";
1073
+ const env = this.datadogConfig.env || "production";
1074
+ const version = this.datadogConfig.version;
1075
+ const tags = [
1076
+ tag("env", env),
1077
+ tag("service", service),
1078
+ ...version ? [tag("version", version)] : []
1079
+ ];
1080
+ const spanId = toDatadogId(((_entry$data = entry.data) === null || _entry$data === void 0 ? void 0 : _entry$data["spanId"]) ?? ((_entry$data2 = entry.data) === null || _entry$data2 === void 0 ? void 0 : _entry$data2["span_id"]), false);
1081
+ const traceId = toDatadogId(entry.traceId, true);
963
1082
  return {
964
- ...this.transformEntry(entry),
965
- "dd.trace_id": entry.traceId,
966
- "dd.span_id": this.generateSpanId(),
967
- host: this.getHostname(),
968
- source: "nodejs",
969
- timestamp: entry.timestamp.toISOString(),
970
- level: this.mapLogLevel(entry.level),
1083
+ ...transformed,
1084
+ ddsource: "nodejs",
1085
+ ddtags: tags.join(","),
1086
+ hostname: this.getHostname(),
1087
+ service,
1088
+ status: this.mapLogLevel(entry.level),
971
1089
  message: entry.message,
972
- service: this.datadogConfig.service || "logixia",
973
- version: this.datadogConfig.version,
974
- env: this.datadogConfig.env || "production",
1090
+ env,
1091
+ version,
975
1092
  logger: {
976
1093
  name: "logixia",
977
1094
  thread_name: "main"
978
- }
1095
+ },
1096
+ ...traceId && { "dd.trace_id": traceId },
1097
+ ...traceId && spanId && { "dd.span_id": spanId }
979
1098
  };
980
1099
  }
981
1100
  reservedKeys() {
@@ -1001,58 +1120,29 @@ var DataDogTransport = class extends AnalyticsTransport {
1001
1120
  type: "count",
1002
1121
  host: this.getHostname(),
1003
1122
  tags: [
1004
- `level:${entry.level}`,
1005
- `service:${this.datadogConfig.service || "logixia"}`,
1006
- `env:${this.datadogConfig.env || "production"}`,
1007
- ...entry.context ? [`context:${entry.context}`] : [],
1008
- ...entry.appName ? [`app:${entry.appName}`] : []
1123
+ tag("level", entry.level),
1124
+ tag("service", this.datadogConfig.service || "logixia"),
1125
+ tag("env", this.datadogConfig.env || "production"),
1126
+ ...entry.context ? [tag("context", entry.context)] : [],
1127
+ ...entry.appName ? [tag("app", entry.appName)] : []
1009
1128
  ]
1010
1129
  };
1011
1130
  }
1012
- transformToDataDogTrace(entry) {
1013
- return {
1014
- trace_id: entry.traceId,
1015
- span_id: this.generateSpanId(),
1016
- parent_id: null,
1017
- name: "log.entry",
1018
- service: this.datadogConfig.service || "logixia",
1019
- resource: entry.message,
1020
- type: "log",
1021
- start: entry.timestamp.getTime() * 1e6,
1022
- duration: 1e6,
1023
- meta: {
1024
- "log.level": entry.level,
1025
- "log.message": entry.message,
1026
- ...entry.context && { "log.context": entry.context },
1027
- ...entry.data && Object.keys(entry.data).reduce((acc, key) => {
1028
- acc[`log.${key}`] = String(entry.data[key]);
1029
- return acc;
1030
- }, {})
1031
- },
1032
- metrics: { _sampling_priority_v1: 1 }
1033
- };
1034
- }
1035
1131
  mapLogLevel(level) {
1036
- return {
1037
- error: "error",
1038
- warn: "warn",
1039
- warning: "warn",
1040
- info: "info",
1041
- debug: "debug",
1042
- trace: "trace",
1043
- verbose: "debug"
1044
- }[level.toLowerCase()] || "info";
1045
- }
1046
- async makeLogsRequest(endpoint, data) {
1132
+ return STATUS_MAP[level.toLowerCase()] || "info";
1133
+ }
1134
+ async makeLogsRequest(endpoint, json) {
1047
1135
  const url = `${this.logsUrl}${endpoint}`;
1048
1136
  try {
1137
+ const compress = this.datadogConfig.compress === true;
1049
1138
  const response = await fetch(url, {
1050
1139
  method: "POST",
1051
1140
  headers: {
1052
1141
  "Content-Type": "application/json",
1053
- "DD-API-KEY": this.datadogConfig.apiKey
1142
+ "DD-API-KEY": this.datadogConfig.apiKey,
1143
+ ...compress && { "Content-Encoding": "gzip" }
1054
1144
  },
1055
- body: require_safe_stringify.stringifyForLog(data)
1145
+ body: compress ? await gzipAsync(json) : json
1056
1146
  });
1057
1147
  if (!response.ok) throw new Error(`DataDog Logs API error: ${response.status} ${response.statusText}`);
1058
1148
  } catch (error) {
@@ -1075,9 +1165,6 @@ var DataDogTransport = class extends AnalyticsTransport {
1075
1165
  throw new Error(`Failed to send metrics to DataDog: ${error.message}`, { cause: error });
1076
1166
  }
1077
1167
  }
1078
- generateSpanId() {
1079
- return Math.floor(Math.random() * 0xffffffffffff).toString(16);
1080
- }
1081
1168
  getHostname() {
1082
1169
  try {
1083
1170
  return require("node:os").hostname();
@@ -2576,6 +2663,12 @@ Object.defineProperty(exports, 'AnalyticsTransport', {
2576
2663
  return AnalyticsTransport;
2577
2664
  }
2578
2665
  });
2666
+ Object.defineProperty(exports, 'BufferCap', {
2667
+ enumerable: true,
2668
+ get: function () {
2669
+ return BufferCap;
2670
+ }
2671
+ });
2579
2672
  Object.defineProperty(exports, 'ConsoleTransport', {
2580
2673
  enumerable: true,
2581
2674
  get: function () {
@@ -2630,4 +2723,4 @@ Object.defineProperty(exports, 'stripControlChars', {
2630
2723
  return stripControlChars;
2631
2724
  }
2632
2725
  });
2633
- //# sourceMappingURL=transport.manager-Crau3Rle.js.map
2726
+ //# sourceMappingURL=transport.manager-CXbKKdVE.js.map