@loglayer/transport-axiom 2.1.5 → 2.1.7

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/index.cjs CHANGED
@@ -1,187 +1,178 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;// src/AxiomTransport.ts
2
- var _transport = require('@loglayer/transport');
3
- var AxiomTransport = (_class = class extends _transport.BaseTransport {
4
-
5
-
6
-
7
-
8
- __init() {this.exitHandlers = []}
9
-
10
-
11
-
12
- constructor(config) {
13
- super(config);_class.prototype.__init.call(this);;
14
- this.dataset = config.dataset;
15
- this.fieldNames = {
16
- level: _nullishCoalesce(_optionalChain([config, 'access', _ => _.fieldNames, 'optionalAccess', _2 => _2.level]), () => ( "level")),
17
- message: _nullishCoalesce(_optionalChain([config, 'access', _3 => _3.fieldNames, 'optionalAccess', _4 => _4.message]), () => ( "message")),
18
- timestamp: _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.fieldNames, 'optionalAccess', _6 => _6.timestamp]), () => ( "timestamp"))
19
- };
20
- this.timestampFn = config.timestampFn;
21
- this.onError = config.onError;
22
- this.isDisposing = false;
23
- this.isFlushing = false;
24
- this.levelMap = config.levelMap;
25
- this.setupExitHandlers();
26
- }
27
- setupExitHandlers() {
28
- const beforeExitHandler = async () => {
29
- if (!this.isDisposing && !this.isFlushing) {
30
- try {
31
- await this.flush();
32
- } catch (error) {
33
- if (this.onError) {
34
- this.onError(error);
35
- }
36
- }
37
- }
38
- };
39
- process.on("beforeExit", beforeExitHandler);
40
- this.exitHandlers.push(() => process.off("beforeExit", beforeExitHandler));
41
- const sigintHandler = () => {
42
- if (!this.isDisposing && !this.isFlushing) {
43
- try {
44
- this.flushSync();
45
- } catch (error) {
46
- if (this.onError) {
47
- this.onError(error);
48
- }
49
- }
50
- process.exit(130);
51
- }
52
- };
53
- process.on("SIGINT", sigintHandler);
54
- this.exitHandlers.push(() => process.off("SIGINT", sigintHandler));
55
- const sigtermHandler = () => {
56
- if (!this.isDisposing && !this.isFlushing) {
57
- try {
58
- this.flushSync();
59
- } catch (error) {
60
- if (this.onError) {
61
- this.onError(error);
62
- }
63
- }
64
- process.exit(143);
65
- }
66
- };
67
- process.on("SIGTERM", sigtermHandler);
68
- this.exitHandlers.push(() => process.off("SIGTERM", sigtermHandler));
69
- const exitHandler = () => {
70
- if (!this.isDisposing && !this.isFlushing) {
71
- this.isFlushing = true;
72
- try {
73
- this.flushSync();
74
- } catch (error) {
75
- if (this.onError) {
76
- this.onError(error);
77
- }
78
- } finally {
79
- this.isFlushing = false;
80
- }
81
- }
82
- };
83
- process.on("exit", exitHandler);
84
- this.exitHandlers.push(() => process.off("exit", exitHandler));
85
- }
86
- shipToLogger({ logLevel, messages, data, hasData }) {
87
- if (this.isDisposing) {
88
- return messages;
89
- }
90
- const message = messages.join(" ");
91
- const mappedLevel = _nullishCoalesce(_optionalChain([this, 'access', _7 => _7.levelMap, 'optionalAccess', _8 => _8[logLevel]]), () => ( logLevel));
92
- const logEntry = {
93
- [this.fieldNames.message]: message,
94
- [this.fieldNames.level]: mappedLevel,
95
- [this.fieldNames.timestamp]: this.timestampFn ? this.timestampFn() : (/* @__PURE__ */ new Date()).toISOString()
96
- };
97
- if (data && hasData) {
98
- Object.assign(logEntry, data);
99
- }
100
- try {
101
- this.logger.ingest(this.dataset, [logEntry]);
102
- } catch (error) {
103
- if (this.onError) {
104
- this.onError(error);
105
- }
106
- }
107
- return messages;
108
- }
109
- /**
110
- * Manually flush logs to Axiom.
111
- * This is automatically called on process exit.
112
- */
113
- async flush() {
114
- if (this.isFlushing || this.isDisposing) {
115
- return;
116
- }
117
- this.isFlushing = true;
118
- try {
119
- await this.logger.flush();
120
- } catch (error) {
121
- if (this.onError) {
122
- this.onError(error);
123
- }
124
- } finally {
125
- this.isFlushing = false;
126
- }
127
- }
128
- /**
129
- * Synchronously flush logs to Axiom.
130
- * This is used during process termination (SIGINT/SIGTERM) to ensure logs are written
131
- * before the process exits.
132
- * @private
133
- */
134
- flushSync() {
135
- if (this.isFlushing || this.isDisposing) {
136
- return;
137
- }
138
- this.isFlushing = true;
139
- try {
140
- Promise.resolve(this.logger.flush()).catch((error) => {
141
- if (this.onError) {
142
- this.onError(error);
143
- }
144
- });
145
- } catch (error) {
146
- if (this.onError) {
147
- this.onError(error);
148
- }
149
- } finally {
150
- this.isFlushing = false;
151
- }
152
- }
153
- /**
154
- * Clean up resources and remove event listeners.
155
- * This method:
156
- * 1. Prevents new operations from starting
157
- * 2. Flushes any pending logs
158
- * 3. Removes event handlers
159
- * 4. Waits for any in-progress operations to complete
160
- */
161
- [Symbol.dispose]() {
162
- if (this.isDisposing) {
163
- return Promise.resolve();
164
- }
165
- this.isDisposing = true;
166
- for (const cleanup of this.exitHandlers) {
167
- cleanup();
168
- }
169
- this.exitHandlers = [];
170
- const checkAndFinish = async () => {
171
- if (!this.isFlushing) {
172
- return;
173
- }
174
- await new Promise((resolve) => setTimeout(resolve, 100));
175
- return checkAndFinish();
176
- };
177
- return this.flush().then(() => checkAndFinish()).catch((error) => {
178
- if (this.onError) {
179
- this.onError(error);
180
- }
181
- });
182
- }
183
- }, _class);
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
184
22
 
23
+ //#endregion
24
+ let __loglayer_transport = require("@loglayer/transport");
25
+ __loglayer_transport = __toESM(__loglayer_transport);
185
26
 
27
+ //#region src/AxiomTransport.ts
28
+ var AxiomTransport = class extends __loglayer_transport.BaseTransport {
29
+ dataset;
30
+ fieldNames;
31
+ timestampFn;
32
+ onError;
33
+ exitHandlers = [];
34
+ isDisposing;
35
+ isFlushing;
36
+ levelMap;
37
+ constructor(config) {
38
+ super(config);
39
+ this.dataset = config.dataset;
40
+ this.fieldNames = {
41
+ level: config.fieldNames?.level ?? "level",
42
+ message: config.fieldNames?.message ?? "message",
43
+ timestamp: config.fieldNames?.timestamp ?? "timestamp"
44
+ };
45
+ this.timestampFn = config.timestampFn;
46
+ this.onError = config.onError;
47
+ this.isDisposing = false;
48
+ this.isFlushing = false;
49
+ this.levelMap = config.levelMap;
50
+ this.setupExitHandlers();
51
+ }
52
+ setupExitHandlers() {
53
+ const beforeExitHandler = async () => {
54
+ if (!this.isDisposing && !this.isFlushing) try {
55
+ await this.flush();
56
+ } catch (error) {
57
+ if (this.onError) this.onError(error);
58
+ }
59
+ };
60
+ process.on("beforeExit", beforeExitHandler);
61
+ this.exitHandlers.push(() => process.off("beforeExit", beforeExitHandler));
62
+ const sigintHandler = () => {
63
+ if (!this.isDisposing && !this.isFlushing) {
64
+ try {
65
+ this.flushSync();
66
+ } catch (error) {
67
+ if (this.onError) this.onError(error);
68
+ }
69
+ process.exit(130);
70
+ }
71
+ };
72
+ process.on("SIGINT", sigintHandler);
73
+ this.exitHandlers.push(() => process.off("SIGINT", sigintHandler));
74
+ const sigtermHandler = () => {
75
+ if (!this.isDisposing && !this.isFlushing) {
76
+ try {
77
+ this.flushSync();
78
+ } catch (error) {
79
+ if (this.onError) this.onError(error);
80
+ }
81
+ process.exit(143);
82
+ }
83
+ };
84
+ process.on("SIGTERM", sigtermHandler);
85
+ this.exitHandlers.push(() => process.off("SIGTERM", sigtermHandler));
86
+ const exitHandler = () => {
87
+ if (!this.isDisposing && !this.isFlushing) {
88
+ this.isFlushing = true;
89
+ try {
90
+ this.flushSync();
91
+ } catch (error) {
92
+ if (this.onError) this.onError(error);
93
+ } finally {
94
+ this.isFlushing = false;
95
+ }
96
+ }
97
+ };
98
+ process.on("exit", exitHandler);
99
+ this.exitHandlers.push(() => process.off("exit", exitHandler));
100
+ }
101
+ shipToLogger({ logLevel, messages, data, hasData }) {
102
+ if (this.isDisposing) return messages;
103
+ const message = messages.join(" ");
104
+ const mappedLevel = this.levelMap?.[logLevel] ?? logLevel;
105
+ const logEntry = {
106
+ [this.fieldNames.message]: message,
107
+ [this.fieldNames.level]: mappedLevel,
108
+ [this.fieldNames.timestamp]: this.timestampFn ? this.timestampFn() : (/* @__PURE__ */ new Date()).toISOString()
109
+ };
110
+ if (data && hasData) Object.assign(logEntry, data);
111
+ try {
112
+ this.logger.ingest(this.dataset, [logEntry]);
113
+ } catch (error) {
114
+ if (this.onError) this.onError(error);
115
+ }
116
+ return messages;
117
+ }
118
+ /**
119
+ * Manually flush logs to Axiom.
120
+ * This is automatically called on process exit.
121
+ */
122
+ async flush() {
123
+ if (this.isFlushing || this.isDisposing) return;
124
+ this.isFlushing = true;
125
+ try {
126
+ await this.logger.flush();
127
+ } catch (error) {
128
+ if (this.onError) this.onError(error);
129
+ } finally {
130
+ this.isFlushing = false;
131
+ }
132
+ }
133
+ /**
134
+ * Synchronously flush logs to Axiom.
135
+ * This is used during process termination (SIGINT/SIGTERM) to ensure logs are written
136
+ * before the process exits.
137
+ * @private
138
+ */
139
+ flushSync() {
140
+ if (this.isFlushing || this.isDisposing) return;
141
+ this.isFlushing = true;
142
+ try {
143
+ Promise.resolve(this.logger.flush()).catch((error) => {
144
+ if (this.onError) this.onError(error);
145
+ });
146
+ } catch (error) {
147
+ if (this.onError) this.onError(error);
148
+ } finally {
149
+ this.isFlushing = false;
150
+ }
151
+ }
152
+ /**
153
+ * Clean up resources and remove event listeners.
154
+ * This method:
155
+ * 1. Prevents new operations from starting
156
+ * 2. Flushes any pending logs
157
+ * 3. Removes event handlers
158
+ * 4. Waits for any in-progress operations to complete
159
+ */
160
+ [Symbol.dispose]() {
161
+ if (this.isDisposing) return Promise.resolve();
162
+ this.isDisposing = true;
163
+ for (const cleanup of this.exitHandlers) cleanup();
164
+ this.exitHandlers = [];
165
+ const checkAndFinish = async () => {
166
+ if (!this.isFlushing) return;
167
+ await new Promise((resolve) => setTimeout(resolve, 100));
168
+ return checkAndFinish();
169
+ };
170
+ return this.flush().then(() => checkAndFinish()).catch((error) => {
171
+ if (this.onError) this.onError(error);
172
+ });
173
+ }
174
+ };
175
+
176
+ //#endregion
186
177
  exports.AxiomTransport = AxiomTransport;
187
178
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/loglayer/loglayer/packages/transports/axiom/dist/index.cjs","../src/AxiomTransport.ts"],"names":[],"mappings":"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","file":"/home/runner/work/loglayer/loglayer/packages/transports/axiom/dist/index.cjs","sourcesContent":[null,"import type { Axiom } from \"@axiomhq/js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport } from \"@loglayer/transport\";\n\nexport interface AxiomFieldNames {\n /**\n * Field name for the log level\n * @default \"level\"\n */\n level?: string;\n /**\n * Field name for the log message\n * @default \"message\"\n */\n message?: string;\n /**\n * Field name for the timestamp\n * @default \"timestamp\"\n */\n timestamp?: string;\n}\n\nexport interface AxiomLevelMap {\n /**\n * Mapping for the 'fatal' log level\n * @example 60 or \"FATAL\"\n */\n fatal?: string | number;\n /**\n * Mapping for the 'error' log level\n * @example 50 or \"ERROR\"\n */\n error?: string | number;\n /**\n * Mapping for the 'warn' log level\n * @example 40 or \"WARN\"\n */\n warn?: string | number;\n /**\n * Mapping for the 'info' log level\n * @example 30 or \"INFO\"\n */\n info?: string | number;\n /**\n * Mapping for the 'debug' log level\n * @example 20 or \"DEBUG\"\n */\n debug?: string | number;\n /**\n * Mapping for the 'trace' log level\n * @example 10 or \"TRACE\"\n */\n trace?: string | number;\n}\n\nexport interface AxiomTransportConfig extends LogLayerTransportConfig<Axiom> {\n /**\n * The Axiom dataset name to send logs to\n */\n dataset: string;\n\n /**\n * Custom field names for the log entry JSON\n * Default: { level: \"level\", message: \"message\", timestamp: \"timestamp\" }\n */\n fieldNames?: AxiomFieldNames;\n\n /**\n * Optional function to generate timestamps.\n * If not provided, defaults to ISO string from new Date()\n */\n timestampFn?: () => string | number;\n\n /**\n * Optional callback for error handling\n */\n onError?: (error: Error) => void;\n\n /**\n * Custom mapping for log levels.\n * Each log level can be mapped to either a string or number.\n * Example: { error: 50, warn: 40, info: 30, debug: 20, trace: 10, fatal: 60 }\n * Example: { error: \"ERROR\", warn: \"WARN\", info: \"INFO\", debug: \"DEBUG\", trace: \"TRACE\", fatal: \"FATAL\" }\n */\n levelMap?: AxiomLevelMap;\n}\n\nexport class AxiomTransport extends BaseTransport<Axiom> implements Disposable {\n private dataset: string;\n private fieldNames: Required<AxiomFieldNames>;\n private timestampFn?: () => string | number;\n private onError?: (error: Error) => void;\n private exitHandlers: Array<() => void> = [];\n private isDisposing: boolean;\n private isFlushing: boolean;\n private levelMap?: AxiomLevelMap;\n\n constructor(config: AxiomTransportConfig) {\n super(config);\n this.dataset = config.dataset;\n this.fieldNames = {\n level: config.fieldNames?.level ?? \"level\",\n message: config.fieldNames?.message ?? \"message\",\n timestamp: config.fieldNames?.timestamp ?? \"timestamp\",\n };\n this.timestampFn = config.timestampFn;\n this.onError = config.onError;\n this.isDisposing = false;\n this.isFlushing = false;\n this.levelMap = config.levelMap;\n\n this.setupExitHandlers();\n }\n\n private setupExitHandlers() {\n // Handle graceful shutdowns (allows async operations)\n const beforeExitHandler = async () => {\n if (!this.isDisposing && !this.isFlushing) {\n try {\n await this.flush();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n }\n };\n process.on(\"beforeExit\", beforeExitHandler);\n this.exitHandlers.push(() => process.off(\"beforeExit\", beforeExitHandler));\n\n // Handle SIGINT (Ctrl+C)\n const sigintHandler = () => {\n if (!this.isDisposing && !this.isFlushing) {\n // Synchronously flush logs to ensure they're written before exit\n try {\n this.flushSync();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n process.exit(130); // 128 + SIGINT(2)\n }\n };\n process.on(\"SIGINT\", sigintHandler);\n this.exitHandlers.push(() => process.off(\"SIGINT\", sigintHandler));\n\n // Handle SIGTERM\n const sigtermHandler = () => {\n if (!this.isDisposing && !this.isFlushing) {\n // Synchronously flush logs to ensure they're written before exit\n try {\n this.flushSync();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n process.exit(143); // 128 + SIGTERM(15)\n }\n };\n process.on(\"SIGTERM\", sigtermHandler);\n this.exitHandlers.push(() => process.off(\"SIGTERM\", sigtermHandler));\n\n // Handle exit (must be synchronous)\n const exitHandler = () => {\n if (!this.isDisposing && !this.isFlushing) {\n this.isFlushing = true;\n try {\n // Call flush synchronously since we're in the exit handler\n this.flushSync();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n } finally {\n this.isFlushing = false;\n }\n }\n };\n process.on(\"exit\", exitHandler);\n this.exitHandlers.push(() => process.off(\"exit\", exitHandler));\n }\n\n shipToLogger({ logLevel, messages, data, hasData }: LogLayerTransportParams): any[] {\n // Don't accept new logs if we're disposing\n if (this.isDisposing) {\n return messages;\n }\n\n // Combine all messages into a single string\n const message = messages.join(\" \");\n\n // Map the log level if a mapping exists\n const mappedLevel = this.levelMap?.[logLevel] ?? logLevel;\n\n // Create the log entry\n const logEntry: Record<string, any> = {\n [this.fieldNames.message]: message,\n [this.fieldNames.level]: mappedLevel,\n [this.fieldNames.timestamp]: this.timestampFn ? this.timestampFn() : new Date().toISOString(),\n };\n\n // Add any additional data\n if (data && hasData) {\n Object.assign(logEntry, data);\n }\n\n // Send to Axiom\n try {\n this.logger.ingest(this.dataset, [logEntry]);\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n\n return messages;\n }\n\n /**\n * Manually flush logs to Axiom.\n * This is automatically called on process exit.\n */\n private async flush(): Promise<void> {\n if (this.isFlushing || this.isDisposing) {\n return;\n }\n\n this.isFlushing = true;\n\n try {\n await this.logger.flush();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n } finally {\n this.isFlushing = false;\n }\n }\n\n /**\n * Synchronously flush logs to Axiom.\n * This is used during process termination (SIGINT/SIGTERM) to ensure logs are written\n * before the process exits.\n * @private\n */\n private flushSync(): void {\n if (this.isFlushing || this.isDisposing) {\n return;\n }\n\n this.isFlushing = true;\n try {\n // Call flush synchronously and handle the promise immediately\n Promise.resolve(this.logger.flush()).catch((error) => {\n if (this.onError) {\n this.onError(error as Error);\n }\n });\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n } finally {\n this.isFlushing = false;\n }\n }\n\n /**\n * Clean up resources and remove event listeners.\n * This method:\n * 1. Prevents new operations from starting\n * 2. Flushes any pending logs\n * 3. Removes event handlers\n * 4. Waits for any in-progress operations to complete\n */\n [Symbol.dispose](): Promise<void> {\n if (this.isDisposing) {\n return Promise.resolve();\n }\n\n this.isDisposing = true;\n\n // Remove all event listeners\n for (const cleanup of this.exitHandlers) {\n cleanup();\n }\n this.exitHandlers = [];\n\n const checkAndFinish = async () => {\n if (!this.isFlushing) {\n return;\n }\n // Wait a bit and check again if still flushing\n await new Promise((resolve) => setTimeout(resolve, 100));\n return checkAndFinish();\n };\n\n // Flush any remaining logs and wait for completion\n return this.flush()\n .then(() => checkAndFinish())\n .catch((error) => {\n if (this.onError) {\n this.onError(error as Error);\n }\n });\n }\n}\n"]}
1
+ {"version":3,"file":"index.cjs","names":["BaseTransport","logEntry: Record<string, any>"],"sources":["../src/AxiomTransport.ts"],"sourcesContent":["import type { Axiom } from \"@axiomhq/js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport } from \"@loglayer/transport\";\n\nexport interface AxiomFieldNames {\n /**\n * Field name for the log level\n * @default \"level\"\n */\n level?: string;\n /**\n * Field name for the log message\n * @default \"message\"\n */\n message?: string;\n /**\n * Field name for the timestamp\n * @default \"timestamp\"\n */\n timestamp?: string;\n}\n\nexport interface AxiomLevelMap {\n /**\n * Mapping for the 'fatal' log level\n * @example 60 or \"FATAL\"\n */\n fatal?: string | number;\n /**\n * Mapping for the 'error' log level\n * @example 50 or \"ERROR\"\n */\n error?: string | number;\n /**\n * Mapping for the 'warn' log level\n * @example 40 or \"WARN\"\n */\n warn?: string | number;\n /**\n * Mapping for the 'info' log level\n * @example 30 or \"INFO\"\n */\n info?: string | number;\n /**\n * Mapping for the 'debug' log level\n * @example 20 or \"DEBUG\"\n */\n debug?: string | number;\n /**\n * Mapping for the 'trace' log level\n * @example 10 or \"TRACE\"\n */\n trace?: string | number;\n}\n\nexport interface AxiomTransportConfig extends LogLayerTransportConfig<Axiom> {\n /**\n * The Axiom dataset name to send logs to\n */\n dataset: string;\n\n /**\n * Custom field names for the log entry JSON\n * Default: { level: \"level\", message: \"message\", timestamp: \"timestamp\" }\n */\n fieldNames?: AxiomFieldNames;\n\n /**\n * Optional function to generate timestamps.\n * If not provided, defaults to ISO string from new Date()\n */\n timestampFn?: () => string | number;\n\n /**\n * Optional callback for error handling\n */\n onError?: (error: Error) => void;\n\n /**\n * Custom mapping for log levels.\n * Each log level can be mapped to either a string or number.\n * Example: { error: 50, warn: 40, info: 30, debug: 20, trace: 10, fatal: 60 }\n * Example: { error: \"ERROR\", warn: \"WARN\", info: \"INFO\", debug: \"DEBUG\", trace: \"TRACE\", fatal: \"FATAL\" }\n */\n levelMap?: AxiomLevelMap;\n}\n\nexport class AxiomTransport extends BaseTransport<Axiom> implements Disposable {\n private dataset: string;\n private fieldNames: Required<AxiomFieldNames>;\n private timestampFn?: () => string | number;\n private onError?: (error: Error) => void;\n private exitHandlers: Array<() => void> = [];\n private isDisposing: boolean;\n private isFlushing: boolean;\n private levelMap?: AxiomLevelMap;\n\n constructor(config: AxiomTransportConfig) {\n super(config);\n this.dataset = config.dataset;\n this.fieldNames = {\n level: config.fieldNames?.level ?? \"level\",\n message: config.fieldNames?.message ?? \"message\",\n timestamp: config.fieldNames?.timestamp ?? \"timestamp\",\n };\n this.timestampFn = config.timestampFn;\n this.onError = config.onError;\n this.isDisposing = false;\n this.isFlushing = false;\n this.levelMap = config.levelMap;\n\n this.setupExitHandlers();\n }\n\n private setupExitHandlers() {\n // Handle graceful shutdowns (allows async operations)\n const beforeExitHandler = async () => {\n if (!this.isDisposing && !this.isFlushing) {\n try {\n await this.flush();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n }\n };\n process.on(\"beforeExit\", beforeExitHandler);\n this.exitHandlers.push(() => process.off(\"beforeExit\", beforeExitHandler));\n\n // Handle SIGINT (Ctrl+C)\n const sigintHandler = () => {\n if (!this.isDisposing && !this.isFlushing) {\n // Synchronously flush logs to ensure they're written before exit\n try {\n this.flushSync();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n process.exit(130); // 128 + SIGINT(2)\n }\n };\n process.on(\"SIGINT\", sigintHandler);\n this.exitHandlers.push(() => process.off(\"SIGINT\", sigintHandler));\n\n // Handle SIGTERM\n const sigtermHandler = () => {\n if (!this.isDisposing && !this.isFlushing) {\n // Synchronously flush logs to ensure they're written before exit\n try {\n this.flushSync();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n process.exit(143); // 128 + SIGTERM(15)\n }\n };\n process.on(\"SIGTERM\", sigtermHandler);\n this.exitHandlers.push(() => process.off(\"SIGTERM\", sigtermHandler));\n\n // Handle exit (must be synchronous)\n const exitHandler = () => {\n if (!this.isDisposing && !this.isFlushing) {\n this.isFlushing = true;\n try {\n // Call flush synchronously since we're in the exit handler\n this.flushSync();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n } finally {\n this.isFlushing = false;\n }\n }\n };\n process.on(\"exit\", exitHandler);\n this.exitHandlers.push(() => process.off(\"exit\", exitHandler));\n }\n\n shipToLogger({ logLevel, messages, data, hasData }: LogLayerTransportParams): any[] {\n // Don't accept new logs if we're disposing\n if (this.isDisposing) {\n return messages;\n }\n\n // Combine all messages into a single string\n const message = messages.join(\" \");\n\n // Map the log level if a mapping exists\n const mappedLevel = this.levelMap?.[logLevel] ?? logLevel;\n\n // Create the log entry\n const logEntry: Record<string, any> = {\n [this.fieldNames.message]: message,\n [this.fieldNames.level]: mappedLevel,\n [this.fieldNames.timestamp]: this.timestampFn ? this.timestampFn() : new Date().toISOString(),\n };\n\n // Add any additional data\n if (data && hasData) {\n Object.assign(logEntry, data);\n }\n\n // Send to Axiom\n try {\n this.logger.ingest(this.dataset, [logEntry]);\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n }\n\n return messages;\n }\n\n /**\n * Manually flush logs to Axiom.\n * This is automatically called on process exit.\n */\n private async flush(): Promise<void> {\n if (this.isFlushing || this.isDisposing) {\n return;\n }\n\n this.isFlushing = true;\n\n try {\n await this.logger.flush();\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n } finally {\n this.isFlushing = false;\n }\n }\n\n /**\n * Synchronously flush logs to Axiom.\n * This is used during process termination (SIGINT/SIGTERM) to ensure logs are written\n * before the process exits.\n * @private\n */\n private flushSync(): void {\n if (this.isFlushing || this.isDisposing) {\n return;\n }\n\n this.isFlushing = true;\n try {\n // Call flush synchronously and handle the promise immediately\n Promise.resolve(this.logger.flush()).catch((error) => {\n if (this.onError) {\n this.onError(error as Error);\n }\n });\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error);\n }\n } finally {\n this.isFlushing = false;\n }\n }\n\n /**\n * Clean up resources and remove event listeners.\n * This method:\n * 1. Prevents new operations from starting\n * 2. Flushes any pending logs\n * 3. Removes event handlers\n * 4. Waits for any in-progress operations to complete\n */\n [Symbol.dispose](): Promise<void> {\n if (this.isDisposing) {\n return Promise.resolve();\n }\n\n this.isDisposing = true;\n\n // Remove all event listeners\n for (const cleanup of this.exitHandlers) {\n cleanup();\n }\n this.exitHandlers = [];\n\n const checkAndFinish = async () => {\n if (!this.isFlushing) {\n return;\n }\n // Wait a bit and check again if still flushing\n await new Promise((resolve) => setTimeout(resolve, 100));\n return checkAndFinish();\n };\n\n // Flush any remaining logs and wait for completion\n return this.flush()\n .then(() => checkAndFinish())\n .catch((error) => {\n if (this.onError) {\n this.onError(error as Error);\n }\n });\n }\n}\n"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -1,115 +1,122 @@
1
- import { Axiom } from '@axiomhq/js';
2
- import { BaseTransport, LogLayerTransportConfig, LogLayerTransportParams } from '@loglayer/transport';
1
+ import { Axiom } from "@axiomhq/js";
2
+ import { BaseTransport, LogLayerTransportConfig, LogLayerTransportParams } from "@loglayer/transport";
3
3
 
4
+ //#region src/AxiomTransport.d.ts
4
5
  interface AxiomFieldNames {
5
- /**
6
- * Field name for the log level
7
- * @default "level"
8
- */
9
- level?: string;
10
- /**
11
- * Field name for the log message
12
- * @default "message"
13
- */
14
- message?: string;
15
- /**
16
- * Field name for the timestamp
17
- * @default "timestamp"
18
- */
19
- timestamp?: string;
6
+ /**
7
+ * Field name for the log level
8
+ * @default "level"
9
+ */
10
+ level?: string;
11
+ /**
12
+ * Field name for the log message
13
+ * @default "message"
14
+ */
15
+ message?: string;
16
+ /**
17
+ * Field name for the timestamp
18
+ * @default "timestamp"
19
+ */
20
+ timestamp?: string;
20
21
  }
21
22
  interface AxiomLevelMap {
22
- /**
23
- * Mapping for the 'fatal' log level
24
- * @example 60 or "FATAL"
25
- */
26
- fatal?: string | number;
27
- /**
28
- * Mapping for the 'error' log level
29
- * @example 50 or "ERROR"
30
- */
31
- error?: string | number;
32
- /**
33
- * Mapping for the 'warn' log level
34
- * @example 40 or "WARN"
35
- */
36
- warn?: string | number;
37
- /**
38
- * Mapping for the 'info' log level
39
- * @example 30 or "INFO"
40
- */
41
- info?: string | number;
42
- /**
43
- * Mapping for the 'debug' log level
44
- * @example 20 or "DEBUG"
45
- */
46
- debug?: string | number;
47
- /**
48
- * Mapping for the 'trace' log level
49
- * @example 10 or "TRACE"
50
- */
51
- trace?: string | number;
23
+ /**
24
+ * Mapping for the 'fatal' log level
25
+ * @example 60 or "FATAL"
26
+ */
27
+ fatal?: string | number;
28
+ /**
29
+ * Mapping for the 'error' log level
30
+ * @example 50 or "ERROR"
31
+ */
32
+ error?: string | number;
33
+ /**
34
+ * Mapping for the 'warn' log level
35
+ * @example 40 or "WARN"
36
+ */
37
+ warn?: string | number;
38
+ /**
39
+ * Mapping for the 'info' log level
40
+ * @example 30 or "INFO"
41
+ */
42
+ info?: string | number;
43
+ /**
44
+ * Mapping for the 'debug' log level
45
+ * @example 20 or "DEBUG"
46
+ */
47
+ debug?: string | number;
48
+ /**
49
+ * Mapping for the 'trace' log level
50
+ * @example 10 or "TRACE"
51
+ */
52
+ trace?: string | number;
52
53
  }
53
54
  interface AxiomTransportConfig extends LogLayerTransportConfig<Axiom> {
54
- /**
55
- * The Axiom dataset name to send logs to
56
- */
57
- dataset: string;
58
- /**
59
- * Custom field names for the log entry JSON
60
- * Default: { level: "level", message: "message", timestamp: "timestamp" }
61
- */
62
- fieldNames?: AxiomFieldNames;
63
- /**
64
- * Optional function to generate timestamps.
65
- * If not provided, defaults to ISO string from new Date()
66
- */
67
- timestampFn?: () => string | number;
68
- /**
69
- * Optional callback for error handling
70
- */
71
- onError?: (error: Error) => void;
72
- /**
73
- * Custom mapping for log levels.
74
- * Each log level can be mapped to either a string or number.
75
- * Example: { error: 50, warn: 40, info: 30, debug: 20, trace: 10, fatal: 60 }
76
- * Example: { error: "ERROR", warn: "WARN", info: "INFO", debug: "DEBUG", trace: "TRACE", fatal: "FATAL" }
77
- */
78
- levelMap?: AxiomLevelMap;
55
+ /**
56
+ * The Axiom dataset name to send logs to
57
+ */
58
+ dataset: string;
59
+ /**
60
+ * Custom field names for the log entry JSON
61
+ * Default: { level: "level", message: "message", timestamp: "timestamp" }
62
+ */
63
+ fieldNames?: AxiomFieldNames;
64
+ /**
65
+ * Optional function to generate timestamps.
66
+ * If not provided, defaults to ISO string from new Date()
67
+ */
68
+ timestampFn?: () => string | number;
69
+ /**
70
+ * Optional callback for error handling
71
+ */
72
+ onError?: (error: Error) => void;
73
+ /**
74
+ * Custom mapping for log levels.
75
+ * Each log level can be mapped to either a string or number.
76
+ * Example: { error: 50, warn: 40, info: 30, debug: 20, trace: 10, fatal: 60 }
77
+ * Example: { error: "ERROR", warn: "WARN", info: "INFO", debug: "DEBUG", trace: "TRACE", fatal: "FATAL" }
78
+ */
79
+ levelMap?: AxiomLevelMap;
79
80
  }
80
81
  declare class AxiomTransport extends BaseTransport<Axiom> implements Disposable {
81
- private dataset;
82
- private fieldNames;
83
- private timestampFn?;
84
- private onError?;
85
- private exitHandlers;
86
- private isDisposing;
87
- private isFlushing;
88
- private levelMap?;
89
- constructor(config: AxiomTransportConfig);
90
- private setupExitHandlers;
91
- shipToLogger({ logLevel, messages, data, hasData }: LogLayerTransportParams): any[];
92
- /**
93
- * Manually flush logs to Axiom.
94
- * This is automatically called on process exit.
95
- */
96
- private flush;
97
- /**
98
- * Synchronously flush logs to Axiom.
99
- * This is used during process termination (SIGINT/SIGTERM) to ensure logs are written
100
- * before the process exits.
101
- * @private
102
- */
103
- private flushSync;
104
- /**
105
- * Clean up resources and remove event listeners.
106
- * This method:
107
- * 1. Prevents new operations from starting
108
- * 2. Flushes any pending logs
109
- * 3. Removes event handlers
110
- * 4. Waits for any in-progress operations to complete
111
- */
112
- [Symbol.dispose](): Promise<void>;
82
+ private dataset;
83
+ private fieldNames;
84
+ private timestampFn?;
85
+ private onError?;
86
+ private exitHandlers;
87
+ private isDisposing;
88
+ private isFlushing;
89
+ private levelMap?;
90
+ constructor(config: AxiomTransportConfig);
91
+ private setupExitHandlers;
92
+ shipToLogger({
93
+ logLevel,
94
+ messages,
95
+ data,
96
+ hasData
97
+ }: LogLayerTransportParams): any[];
98
+ /**
99
+ * Manually flush logs to Axiom.
100
+ * This is automatically called on process exit.
101
+ */
102
+ private flush;
103
+ /**
104
+ * Synchronously flush logs to Axiom.
105
+ * This is used during process termination (SIGINT/SIGTERM) to ensure logs are written
106
+ * before the process exits.
107
+ * @private
108
+ */
109
+ private flushSync;
110
+ /**
111
+ * Clean up resources and remove event listeners.
112
+ * This method:
113
+ * 1. Prevents new operations from starting
114
+ * 2. Flushes any pending logs
115
+ * 3. Removes event handlers
116
+ * 4. Waits for any in-progress operations to complete
117
+ */
118
+ [Symbol.dispose](): Promise<void>;
113
119
  }
114
-
120
+ //#endregion
115
121
  export { AxiomTransport, type AxiomTransportConfig };
122
+ //# sourceMappingURL=index.d.cts.map