@knapsack/logger 4.104.0-canary-20261006000119 → 4.104.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.
package/dist/datadog.cjs CHANGED
@@ -2,11 +2,38 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSendToDatadog = createSendToDatadog;
4
4
  const utils_1 = require("@knapsack/utils");
5
+ /** Deep enough for real wrap chains; stops runaway or circular `cause` links. */
6
+ const MAX_CAUSE_DEPTH = 10;
7
+ /**
8
+ * `JSON.stringify(new Error())` is `{}` because `message` and `stack` are
9
+ * non-enumerable. Map to Datadog's standard `error.kind` / `error.message` /
10
+ * `error.stack` attributes and keep the `cause` chain.
11
+ * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#source-code
12
+ */
13
+ function serializeError(error, depth = 0) {
14
+ const { cause } = error;
15
+ let serializedCause;
16
+ if (cause instanceof Error) {
17
+ if (depth < MAX_CAUSE_DEPTH) {
18
+ serializedCause = serializeError(cause, depth + 1);
19
+ }
20
+ }
21
+ else if (cause !== undefined) {
22
+ // e.g. `throw 'boom'`: keep it rather than dropping the root cause.
23
+ serializedCause = { kind: typeof cause, message: String(cause) };
24
+ }
25
+ return {
26
+ kind: error.name,
27
+ message: error.message,
28
+ stack: error.stack,
29
+ ...(serializedCause ? { cause: serializedCause } : {}),
30
+ };
31
+ }
5
32
  /**
6
33
  * Creates a function that can be used to send logs to Datadog.
7
34
  * https://docs.datadoghq.com/api/latest/logs/#send-logs
8
35
  */
9
- function createSendToDatadog({ ddsource, env, key, keyType, service, version, enabled, }) {
36
+ function createSendToDatadog({ ddsource, env, key, keyType, service, version, enabled, timeoutMs, }) {
10
37
  if (!key || !enabled) {
11
38
  return async (_log) => { };
12
39
  }
@@ -40,7 +67,16 @@ function createSendToDatadog({ ddsource, env, key, keyType, service, version, en
40
67
  return await (0, utils_1.fetcher)({
41
68
  url: ddLogUrl,
42
69
  headers,
43
- body: logs.map((l) => ({ ...base, ...l })),
70
+ body: logs.map((l) => ({
71
+ ...base,
72
+ ...l,
73
+ ...(l.error instanceof Error
74
+ ? { error: serializeError(l.error) }
75
+ : {}),
76
+ })),
77
+ signal: typeof timeoutMs === 'number'
78
+ ? AbortSignal.timeout(timeoutMs)
79
+ : undefined,
44
80
  });
45
81
  }
46
82
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"datadog.cjs","sourceRoot":"","sources":["../src/datadog.cts"],"names":[],"mappings":";;AASA,kDAsEC;AA/ED,2CAA0C;AAK1C;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,GAAG,EACH,GAAG,EACH,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GAgBR;IACC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,KAAK,EAAE,IAAiB,EAAE,EAAE,GAAE,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,oDAAoD,CACrD,CAAC;IACF,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,eAAe;YAClB,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;YAC5B,MAAM;QACR,KAAK,iBAAiB;YACpB,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM;QACR,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,MAAM,GAAU,OAAO,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,OAAO,GAAG,YAAY,OAAO,YAAY,OAAO,EAAE;QAC1D,QAAQ;QACR,OAAO;QACP,GAAG;QACH,OAAO;KACR,CAAC;IAEF,OAAO,KAAK,EAAE,GAAgB,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9C,OAAO,MAAM,IAAA,eAAO,EAAC;gBACnB,GAAG,EAAE,QAAQ;gBACb,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,cAAc,GAAG,IAAI,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"datadog.cjs","sourceRoot":"","sources":["../src/datadog.cts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ type SendPayload = LogMetadataFull | LogMetadataFull[];
4
4
  * Creates a function that can be used to send logs to Datadog.
5
5
  * https://docs.datadoghq.com/api/latest/logs/#send-logs
6
6
  */
7
- export declare function createSendToDatadog({ ddsource, env, key, keyType, service, version, enabled, }: {
7
+ export declare function createSendToDatadog({ ddsource, env, key, keyType, service, version, enabled, timeoutMs, }: {
8
8
  keyType: 'privateApiKey' | 'publicClientKey';
9
9
  /**
10
10
  * The API key or Client Key to use to send logs to Datadog.
@@ -19,6 +19,11 @@ export declare function createSendToDatadog({ ddsource, env, key, keyType, servi
19
19
  * If `false`, the function will return a no-op function.
20
20
  */
21
21
  enabled: boolean;
22
+ /**
23
+ * Abort the send after this many ms so a blocked intake cannot hang the
24
+ * process. `0` aborts immediately. Omit to wait without a timeout.
25
+ */
26
+ timeoutMs?: number;
22
27
  }): ((_log: SendPayload) => Promise<void>) | ((log: SendPayload) => Promise<Record<string, unknown> | undefined>);
23
28
  export {};
24
29
  //# sourceMappingURL=datadog.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datadog.d.cts","sourceRoot":"","sources":["../src/datadog.cts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,KAAK,WAAW,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,GAAG,EACH,GAAG,EACH,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAAC;IAC7C;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,WAEuB,WAAW,6BA8Bd,WAAW,mDAe/B"}
1
+ {"version":3,"file":"datadog.d.cts","sourceRoot":"","sources":["../src/datadog.cts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,KAAK,WAAW,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;AAqCvD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,GAAG,EACH,GAAG,EACH,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAAC;IAC7C;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,WAEuB,WAAW,6BA8Bd,WAAW,mDAyB/B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@knapsack/logger",
3
3
  "description": "Knapsack logger",
4
- "version": "4.104.0-canary-20261006000119",
4
+ "version": "4.104.0",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
@@ -22,18 +22,18 @@
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
24
  "@clack/prompts": "^0.11.0",
25
- "@knapsack/core": "4.104.0-canary-20261006000119",
26
- "@knapsack/utils": "4.104.0-canary-20261006000119",
25
+ "@knapsack/core": "4.104.0",
26
+ "@knapsack/utils": "4.104.0",
27
27
  "@vercel/functions": "^2.2.13",
28
28
  "picocolors": "^1.1.1",
29
29
  "pretty-error": "^4.0.0",
30
30
  "prettyjson": "^1.2.5"
31
31
  },
32
32
  "devDependencies": {
33
- "@knapsack/eslint-config-starter": "4.104.0-canary-20261006000119",
34
- "@knapsack/prettier-config": "4.104.0-canary-20261006000119",
35
- "@knapsack/types": "4.104.0-canary-20261006000119",
36
- "@knapsack/typescript-config-starter": "4.104.0-canary-20261006000119",
33
+ "@knapsack/eslint-config-starter": "4.104.0",
34
+ "@knapsack/prettier-config": "4.104.0",
35
+ "@knapsack/types": "4.104.0",
36
+ "@knapsack/typescript-config-starter": "4.104.0",
37
37
  "@types/node": "^24.13.2",
38
38
  "@types/prettyjson": "^0.0.33",
39
39
  "eslint": "^9.20.0",