@loglayer/transport-logflare 1.0.1 → 1.0.2

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,67 +1,72 @@
1
- "use strict";
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
8
  var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
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
17
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
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));
19
22
 
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- LogflareTransport: () => LogflareTransport
24
- });
25
- module.exports = __toCommonJS(index_exports);
23
+ //#endregion
24
+ let __loglayer_transport_http = require("@loglayer/transport-http");
25
+ __loglayer_transport_http = __toESM(__loglayer_transport_http);
26
26
 
27
- // src/LogflareTransport.ts
28
- var import_transport_http = require("@loglayer/transport-http");
29
- var LogflareTransport = class extends import_transport_http.HttpTransport {
30
- constructor(config) {
31
- const apiEndpoint = config.url ?? "https://api.logflare.app";
32
- const fullUrl = `${apiEndpoint}/logs/json?source=${config.sourceId}`;
33
- const payloadTemplate = config.payloadTemplate ?? (({ logLevel, message, data }) => {
34
- const logEntry = {
35
- message
36
- };
37
- if (data) {
38
- logEntry.metadata = data;
39
- }
40
- return JSON.stringify(logEntry);
41
- });
42
- const httpConfig = { ...config };
43
- delete httpConfig.sourceId;
44
- delete httpConfig.apiKey;
45
- delete httpConfig.url;
46
- delete httpConfig.payloadTemplate;
47
- super({
48
- url: fullUrl,
49
- method: "POST",
50
- headers: {
51
- "Content-Type": "application/json; charset=utf-8",
52
- "X-API-KEY": config.apiKey
53
- },
54
- payloadTemplate,
55
- batchMode: "field",
56
- // Use Logflare's batch format
57
- batchFieldName: "batch",
58
- // Use Logflare's batch field name
59
- ...httpConfig
60
- });
61
- }
27
+ //#region src/LogflareTransport.ts
28
+ /**
29
+ * LogflareTransport is responsible for sending logs to Logflare.
30
+ * It extends HttpTransport with Logflare-specific configuration.
31
+ *
32
+ * Features:
33
+ * - Automatic Logflare JSON format
34
+ * - Retry logic with exponential backoff (via HttpTransport)
35
+ * - Rate limiting support (via HttpTransport)
36
+ * - Batch sending with configurable size and timeout (via HttpTransport)
37
+ * - Error and debug callbacks
38
+ * - Support for self-hosted Logflare instances
39
+ */
40
+ var LogflareTransport = class extends __loglayer_transport_http.HttpTransport {
41
+ constructor(config) {
42
+ const fullUrl = `${config.url ?? "https://api.logflare.app"}/logs/json?source=${config.sourceId}`;
43
+ const payloadTemplate = config.payloadTemplate ?? (({ logLevel, message, data }) => {
44
+ const logEntry = { message };
45
+ const metadata = { level: logLevel };
46
+ if (data) Object.assign(metadata, data);
47
+ logEntry.metadata = metadata;
48
+ return JSON.stringify(logEntry);
49
+ });
50
+ const httpConfig = { ...config };
51
+ delete httpConfig.sourceId;
52
+ delete httpConfig.apiKey;
53
+ delete httpConfig.url;
54
+ delete httpConfig.payloadTemplate;
55
+ super({
56
+ url: fullUrl,
57
+ method: "POST",
58
+ headers: {
59
+ "Content-Type": "application/json; charset=utf-8",
60
+ "X-API-KEY": config.apiKey
61
+ },
62
+ payloadTemplate,
63
+ batchMode: "field",
64
+ batchFieldName: "batch",
65
+ ...httpConfig
66
+ });
67
+ }
62
68
  };
63
- // Annotate the CommonJS export names for ESM import in node:
64
- 0 && (module.exports = {
65
- LogflareTransport
66
- });
69
+
70
+ //#endregion
71
+ exports.LogflareTransport = LogflareTransport;
67
72
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/LogflareTransport.ts"],"sourcesContent":["export { LogflareTransport, type LogflareTransportConfig } from \"./LogflareTransport.js\";\n","import type { HttpTransportConfig } from \"@loglayer/transport-http\";\nimport { HttpTransport } from \"@loglayer/transport-http\";\n\n/**\n * Configuration options for the Logflare transport.\n * This is essentially a wrapper around HttpTransport with Logflare specific defaults.\n */\nexport interface LogflareTransportConfig extends Omit<HttpTransportConfig, \"url\" | \"headers\" | \"payloadTemplate\"> {\n /**\n * Your Logflare source ID\n */\n sourceId: string;\n /**\n * Your Logflare API key\n */\n apiKey: string;\n /**\n * Custom Logflare API endpoint (for self-hosted instances)\n * @default \"https://api.logflare.app\"\n */\n url?: string;\n /**\n * Function to transform log data into the payload format (optional, defaults to Logflare format)\n */\n payloadTemplate?: (data: { logLevel: string; message: string; data?: Record<string, any> }) => string;\n}\n\n/**\n * LogflareTransport is responsible for sending logs to Logflare.\n * It extends HttpTransport with Logflare-specific configuration.\n *\n * Features:\n * - Automatic Logflare JSON format\n * - Retry logic with exponential backoff (via HttpTransport)\n * - Rate limiting support (via HttpTransport)\n * - Batch sending with configurable size and timeout (via HttpTransport)\n * - Error and debug callbacks\n * - Support for self-hosted Logflare instances\n */\nexport class LogflareTransport extends HttpTransport {\n constructor(config: LogflareTransportConfig) {\n const apiEndpoint = config.url ?? \"https://api.logflare.app\";\n const fullUrl = `${apiEndpoint}/logs/json?source=${config.sourceId}`;\n\n const payloadTemplate =\n config.payloadTemplate ??\n (({ logLevel, message, data }) => {\n const logEntry: Record<string, any> = {\n message,\n };\n\n // Only add metadata if data is provided\n if (data) {\n logEntry.metadata = data;\n }\n\n return JSON.stringify(logEntry);\n });\n\n // Create HTTP transport config, excluding Logflare-specific properties\n const httpConfig = { ...config };\n delete httpConfig.sourceId;\n delete httpConfig.apiKey;\n delete httpConfig.url;\n delete httpConfig.payloadTemplate;\n\n super({\n url: fullUrl,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-API-KEY\": config.apiKey,\n },\n payloadTemplate,\n batchMode: \"field\", // Use Logflare's batch format\n batchFieldName: \"batch\", // Use Logflare's batch field name\n ...httpConfig,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,4BAA8B;AAsCvB,IAAM,oBAAN,cAAgC,oCAAc;AAAA,EACnD,YAAY,QAAiC;AAC3C,UAAM,cAAc,OAAO,OAAO;AAClC,UAAM,UAAU,GAAG,WAAW,qBAAqB,OAAO,QAAQ;AAElE,UAAM,kBACJ,OAAO,oBACN,CAAC,EAAE,UAAU,SAAS,KAAK,MAAM;AAChC,YAAM,WAAgC;AAAA,QACpC;AAAA,MACF;AAGA,UAAI,MAAM;AACR,iBAAS,WAAW;AAAA,MACtB;AAEA,aAAO,KAAK,UAAU,QAAQ;AAAA,IAChC;AAGF,UAAM,aAAa,EAAE,GAAG,OAAO;AAC/B,WAAO,WAAW;AAClB,WAAO,WAAW;AAClB,WAAO,WAAW;AAClB,WAAO,WAAW;AAElB,UAAM;AAAA,MACJ,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,aAAa,OAAO;AAAA,MACtB;AAAA,MACA;AAAA,MACA,WAAW;AAAA;AAAA,MACX,gBAAgB;AAAA;AAAA,MAChB,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"file":"index.cjs","names":["HttpTransport","logEntry: Record<string, any>","metadata: Record<string, any>"],"sources":["../src/LogflareTransport.ts"],"sourcesContent":["import type { HttpTransportConfig } from \"@loglayer/transport-http\";\nimport { HttpTransport } from \"@loglayer/transport-http\";\n\n/**\n * Configuration options for the Logflare transport.\n * This is essentially a wrapper around HttpTransport with Logflare specific defaults.\n */\nexport interface LogflareTransportConfig extends Omit<HttpTransportConfig, \"url\" | \"headers\" | \"payloadTemplate\"> {\n /**\n * Your Logflare source ID\n */\n sourceId: string;\n /**\n * Your Logflare API key\n */\n apiKey: string;\n /**\n * Custom Logflare API endpoint (for self-hosted instances)\n * @default \"https://api.logflare.app\"\n */\n url?: string;\n /**\n * Function to transform log data into the payload format (optional, defaults to Logflare format)\n */\n payloadTemplate?: (data: { logLevel: string; message: string; data?: Record<string, any> }) => string;\n}\n\n/**\n * LogflareTransport is responsible for sending logs to Logflare.\n * It extends HttpTransport with Logflare-specific configuration.\n *\n * Features:\n * - Automatic Logflare JSON format\n * - Retry logic with exponential backoff (via HttpTransport)\n * - Rate limiting support (via HttpTransport)\n * - Batch sending with configurable size and timeout (via HttpTransport)\n * - Error and debug callbacks\n * - Support for self-hosted Logflare instances\n */\nexport class LogflareTransport extends HttpTransport {\n constructor(config: LogflareTransportConfig) {\n const apiEndpoint = config.url ?? \"https://api.logflare.app\";\n const fullUrl = `${apiEndpoint}/logs/json?source=${config.sourceId}`;\n\n const payloadTemplate =\n config.payloadTemplate ??\n (({ logLevel, message, data }) => {\n const logEntry: Record<string, any> = {\n message,\n };\n\n // Always include level in metadata\n const metadata: Record<string, any> = {\n level: logLevel,\n };\n\n // Add additional metadata if data is provided\n if (data) {\n Object.assign(metadata, data);\n }\n\n logEntry.metadata = metadata;\n\n return JSON.stringify(logEntry);\n });\n\n // Create HTTP transport config, excluding Logflare-specific properties\n const httpConfig = { ...config };\n delete httpConfig.sourceId;\n delete httpConfig.apiKey;\n delete httpConfig.url;\n delete httpConfig.payloadTemplate;\n\n super({\n url: fullUrl,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-API-KEY\": config.apiKey,\n },\n payloadTemplate,\n batchMode: \"field\", // Use Logflare's batch format\n batchFieldName: \"batch\", // Use Logflare's batch field name\n ...httpConfig,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,IAAa,oBAAb,cAAuCA,wCAAc;CACnD,YAAY,QAAiC;EAE3C,MAAM,UAAU,GADI,OAAO,OAAO,2BACH,oBAAoB,OAAO;EAE1D,MAAM,kBACJ,OAAO,qBACL,EAAE,UAAU,SAAS,WAAW;GAChC,MAAMC,WAAgC,EACpC,SACD;GAGD,MAAMC,WAAgC,EACpC,OAAO,UACR;AAGD,OAAI,KACF,QAAO,OAAO,UAAU,KAAK;AAG/B,YAAS,WAAW;AAEpB,UAAO,KAAK,UAAU,SAAS;;EAInC,MAAM,aAAa,EAAE,GAAG,QAAQ;AAChC,SAAO,WAAW;AAClB,SAAO,WAAW;AAClB,SAAO,WAAW;AAClB,SAAO,WAAW;AAElB,QAAM;GACJ,KAAK;GACL,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,aAAa,OAAO;IACrB;GACD;GACA,WAAW;GACX,gBAAgB;GAChB,GAAG;GACJ,CAAC"}
package/dist/index.d.cts CHANGED
@@ -1,31 +1,33 @@
1
- import { HttpTransport, HttpTransportConfig } from '@loglayer/transport-http';
1
+ import { HttpTransport, HttpTransportConfig } from "@loglayer/transport-http";
2
+
3
+ //#region src/LogflareTransport.d.ts
2
4
 
3
5
  /**
4
6
  * Configuration options for the Logflare transport.
5
7
  * This is essentially a wrapper around HttpTransport with Logflare specific defaults.
6
8
  */
7
9
  interface LogflareTransportConfig extends Omit<HttpTransportConfig, "url" | "headers" | "payloadTemplate"> {
8
- /**
9
- * Your Logflare source ID
10
- */
11
- sourceId: string;
12
- /**
13
- * Your Logflare API key
14
- */
15
- apiKey: string;
16
- /**
17
- * Custom Logflare API endpoint (for self-hosted instances)
18
- * @default "https://api.logflare.app"
19
- */
20
- url?: string;
21
- /**
22
- * Function to transform log data into the payload format (optional, defaults to Logflare format)
23
- */
24
- payloadTemplate?: (data: {
25
- logLevel: string;
26
- message: string;
27
- data?: Record<string, any>;
28
- }) => string;
10
+ /**
11
+ * Your Logflare source ID
12
+ */
13
+ sourceId: string;
14
+ /**
15
+ * Your Logflare API key
16
+ */
17
+ apiKey: string;
18
+ /**
19
+ * Custom Logflare API endpoint (for self-hosted instances)
20
+ * @default "https://api.logflare.app"
21
+ */
22
+ url?: string;
23
+ /**
24
+ * Function to transform log data into the payload format (optional, defaults to Logflare format)
25
+ */
26
+ payloadTemplate?: (data: {
27
+ logLevel: string;
28
+ message: string;
29
+ data?: Record<string, any>;
30
+ }) => string;
29
31
  }
30
32
  /**
31
33
  * LogflareTransport is responsible for sending logs to Logflare.
@@ -40,7 +42,8 @@ interface LogflareTransportConfig extends Omit<HttpTransportConfig, "url" | "hea
40
42
  * - Support for self-hosted Logflare instances
41
43
  */
42
44
  declare class LogflareTransport extends HttpTransport {
43
- constructor(config: LogflareTransportConfig);
45
+ constructor(config: LogflareTransportConfig);
44
46
  }
45
-
47
+ //#endregion
46
48
  export { LogflareTransport, type LogflareTransportConfig };
49
+ //# sourceMappingURL=index.d.cts.map
package/dist/index.d.ts CHANGED
@@ -1,31 +1,33 @@
1
- import { HttpTransport, HttpTransportConfig } from '@loglayer/transport-http';
1
+ import { HttpTransport, HttpTransportConfig } from "@loglayer/transport-http";
2
+
3
+ //#region src/LogflareTransport.d.ts
2
4
 
3
5
  /**
4
6
  * Configuration options for the Logflare transport.
5
7
  * This is essentially a wrapper around HttpTransport with Logflare specific defaults.
6
8
  */
7
9
  interface LogflareTransportConfig extends Omit<HttpTransportConfig, "url" | "headers" | "payloadTemplate"> {
8
- /**
9
- * Your Logflare source ID
10
- */
11
- sourceId: string;
12
- /**
13
- * Your Logflare API key
14
- */
15
- apiKey: string;
16
- /**
17
- * Custom Logflare API endpoint (for self-hosted instances)
18
- * @default "https://api.logflare.app"
19
- */
20
- url?: string;
21
- /**
22
- * Function to transform log data into the payload format (optional, defaults to Logflare format)
23
- */
24
- payloadTemplate?: (data: {
25
- logLevel: string;
26
- message: string;
27
- data?: Record<string, any>;
28
- }) => string;
10
+ /**
11
+ * Your Logflare source ID
12
+ */
13
+ sourceId: string;
14
+ /**
15
+ * Your Logflare API key
16
+ */
17
+ apiKey: string;
18
+ /**
19
+ * Custom Logflare API endpoint (for self-hosted instances)
20
+ * @default "https://api.logflare.app"
21
+ */
22
+ url?: string;
23
+ /**
24
+ * Function to transform log data into the payload format (optional, defaults to Logflare format)
25
+ */
26
+ payloadTemplate?: (data: {
27
+ logLevel: string;
28
+ message: string;
29
+ data?: Record<string, any>;
30
+ }) => string;
29
31
  }
30
32
  /**
31
33
  * LogflareTransport is responsible for sending logs to Logflare.
@@ -40,7 +42,8 @@ interface LogflareTransportConfig extends Omit<HttpTransportConfig, "url" | "hea
40
42
  * - Support for self-hosted Logflare instances
41
43
  */
42
44
  declare class LogflareTransport extends HttpTransport {
43
- constructor(config: LogflareTransportConfig);
45
+ constructor(config: LogflareTransportConfig);
44
46
  }
45
-
47
+ //#endregion
46
48
  export { LogflareTransport, type LogflareTransportConfig };
49
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,40 +1,48 @@
1
- // src/LogflareTransport.ts
2
1
  import { HttpTransport } from "@loglayer/transport-http";
2
+
3
+ //#region src/LogflareTransport.ts
4
+ /**
5
+ * LogflareTransport is responsible for sending logs to Logflare.
6
+ * It extends HttpTransport with Logflare-specific configuration.
7
+ *
8
+ * Features:
9
+ * - Automatic Logflare JSON format
10
+ * - Retry logic with exponential backoff (via HttpTransport)
11
+ * - Rate limiting support (via HttpTransport)
12
+ * - Batch sending with configurable size and timeout (via HttpTransport)
13
+ * - Error and debug callbacks
14
+ * - Support for self-hosted Logflare instances
15
+ */
3
16
  var LogflareTransport = class extends HttpTransport {
4
- constructor(config) {
5
- const apiEndpoint = config.url ?? "https://api.logflare.app";
6
- const fullUrl = `${apiEndpoint}/logs/json?source=${config.sourceId}`;
7
- const payloadTemplate = config.payloadTemplate ?? (({ logLevel, message, data }) => {
8
- const logEntry = {
9
- message
10
- };
11
- if (data) {
12
- logEntry.metadata = data;
13
- }
14
- return JSON.stringify(logEntry);
15
- });
16
- const httpConfig = { ...config };
17
- delete httpConfig.sourceId;
18
- delete httpConfig.apiKey;
19
- delete httpConfig.url;
20
- delete httpConfig.payloadTemplate;
21
- super({
22
- url: fullUrl,
23
- method: "POST",
24
- headers: {
25
- "Content-Type": "application/json; charset=utf-8",
26
- "X-API-KEY": config.apiKey
27
- },
28
- payloadTemplate,
29
- batchMode: "field",
30
- // Use Logflare's batch format
31
- batchFieldName: "batch",
32
- // Use Logflare's batch field name
33
- ...httpConfig
34
- });
35
- }
36
- };
37
- export {
38
- LogflareTransport
17
+ constructor(config) {
18
+ const fullUrl = `${config.url ?? "https://api.logflare.app"}/logs/json?source=${config.sourceId}`;
19
+ const payloadTemplate = config.payloadTemplate ?? (({ logLevel, message, data }) => {
20
+ const logEntry = { message };
21
+ const metadata = { level: logLevel };
22
+ if (data) Object.assign(metadata, data);
23
+ logEntry.metadata = metadata;
24
+ return JSON.stringify(logEntry);
25
+ });
26
+ const httpConfig = { ...config };
27
+ delete httpConfig.sourceId;
28
+ delete httpConfig.apiKey;
29
+ delete httpConfig.url;
30
+ delete httpConfig.payloadTemplate;
31
+ super({
32
+ url: fullUrl,
33
+ method: "POST",
34
+ headers: {
35
+ "Content-Type": "application/json; charset=utf-8",
36
+ "X-API-KEY": config.apiKey
37
+ },
38
+ payloadTemplate,
39
+ batchMode: "field",
40
+ batchFieldName: "batch",
41
+ ...httpConfig
42
+ });
43
+ }
39
44
  };
45
+
46
+ //#endregion
47
+ export { LogflareTransport };
40
48
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/LogflareTransport.ts"],"sourcesContent":["import type { HttpTransportConfig } from \"@loglayer/transport-http\";\nimport { HttpTransport } from \"@loglayer/transport-http\";\n\n/**\n * Configuration options for the Logflare transport.\n * This is essentially a wrapper around HttpTransport with Logflare specific defaults.\n */\nexport interface LogflareTransportConfig extends Omit<HttpTransportConfig, \"url\" | \"headers\" | \"payloadTemplate\"> {\n /**\n * Your Logflare source ID\n */\n sourceId: string;\n /**\n * Your Logflare API key\n */\n apiKey: string;\n /**\n * Custom Logflare API endpoint (for self-hosted instances)\n * @default \"https://api.logflare.app\"\n */\n url?: string;\n /**\n * Function to transform log data into the payload format (optional, defaults to Logflare format)\n */\n payloadTemplate?: (data: { logLevel: string; message: string; data?: Record<string, any> }) => string;\n}\n\n/**\n * LogflareTransport is responsible for sending logs to Logflare.\n * It extends HttpTransport with Logflare-specific configuration.\n *\n * Features:\n * - Automatic Logflare JSON format\n * - Retry logic with exponential backoff (via HttpTransport)\n * - Rate limiting support (via HttpTransport)\n * - Batch sending with configurable size and timeout (via HttpTransport)\n * - Error and debug callbacks\n * - Support for self-hosted Logflare instances\n */\nexport class LogflareTransport extends HttpTransport {\n constructor(config: LogflareTransportConfig) {\n const apiEndpoint = config.url ?? \"https://api.logflare.app\";\n const fullUrl = `${apiEndpoint}/logs/json?source=${config.sourceId}`;\n\n const payloadTemplate =\n config.payloadTemplate ??\n (({ logLevel, message, data }) => {\n const logEntry: Record<string, any> = {\n message,\n };\n\n // Only add metadata if data is provided\n if (data) {\n logEntry.metadata = data;\n }\n\n return JSON.stringify(logEntry);\n });\n\n // Create HTTP transport config, excluding Logflare-specific properties\n const httpConfig = { ...config };\n delete httpConfig.sourceId;\n delete httpConfig.apiKey;\n delete httpConfig.url;\n delete httpConfig.payloadTemplate;\n\n super({\n url: fullUrl,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-API-KEY\": config.apiKey,\n },\n payloadTemplate,\n batchMode: \"field\", // Use Logflare's batch format\n batchFieldName: \"batch\", // Use Logflare's batch field name\n ...httpConfig,\n });\n }\n}\n"],"mappings":";AACA,SAAS,qBAAqB;AAsCvB,IAAM,oBAAN,cAAgC,cAAc;AAAA,EACnD,YAAY,QAAiC;AAC3C,UAAM,cAAc,OAAO,OAAO;AAClC,UAAM,UAAU,GAAG,WAAW,qBAAqB,OAAO,QAAQ;AAElE,UAAM,kBACJ,OAAO,oBACN,CAAC,EAAE,UAAU,SAAS,KAAK,MAAM;AAChC,YAAM,WAAgC;AAAA,QACpC;AAAA,MACF;AAGA,UAAI,MAAM;AACR,iBAAS,WAAW;AAAA,MACtB;AAEA,aAAO,KAAK,UAAU,QAAQ;AAAA,IAChC;AAGF,UAAM,aAAa,EAAE,GAAG,OAAO;AAC/B,WAAO,WAAW;AAClB,WAAO,WAAW;AAClB,WAAO,WAAW;AAClB,WAAO,WAAW;AAElB,UAAM;AAAA,MACJ,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,aAAa,OAAO;AAAA,MACtB;AAAA,MACA;AAAA,MACA,WAAW;AAAA;AAAA,MACX,gBAAgB;AAAA;AAAA,MAChB,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"file":"index.js","names":["logEntry: Record<string, any>","metadata: Record<string, any>"],"sources":["../src/LogflareTransport.ts"],"sourcesContent":["import type { HttpTransportConfig } from \"@loglayer/transport-http\";\nimport { HttpTransport } from \"@loglayer/transport-http\";\n\n/**\n * Configuration options for the Logflare transport.\n * This is essentially a wrapper around HttpTransport with Logflare specific defaults.\n */\nexport interface LogflareTransportConfig extends Omit<HttpTransportConfig, \"url\" | \"headers\" | \"payloadTemplate\"> {\n /**\n * Your Logflare source ID\n */\n sourceId: string;\n /**\n * Your Logflare API key\n */\n apiKey: string;\n /**\n * Custom Logflare API endpoint (for self-hosted instances)\n * @default \"https://api.logflare.app\"\n */\n url?: string;\n /**\n * Function to transform log data into the payload format (optional, defaults to Logflare format)\n */\n payloadTemplate?: (data: { logLevel: string; message: string; data?: Record<string, any> }) => string;\n}\n\n/**\n * LogflareTransport is responsible for sending logs to Logflare.\n * It extends HttpTransport with Logflare-specific configuration.\n *\n * Features:\n * - Automatic Logflare JSON format\n * - Retry logic with exponential backoff (via HttpTransport)\n * - Rate limiting support (via HttpTransport)\n * - Batch sending with configurable size and timeout (via HttpTransport)\n * - Error and debug callbacks\n * - Support for self-hosted Logflare instances\n */\nexport class LogflareTransport extends HttpTransport {\n constructor(config: LogflareTransportConfig) {\n const apiEndpoint = config.url ?? \"https://api.logflare.app\";\n const fullUrl = `${apiEndpoint}/logs/json?source=${config.sourceId}`;\n\n const payloadTemplate =\n config.payloadTemplate ??\n (({ logLevel, message, data }) => {\n const logEntry: Record<string, any> = {\n message,\n };\n\n // Always include level in metadata\n const metadata: Record<string, any> = {\n level: logLevel,\n };\n\n // Add additional metadata if data is provided\n if (data) {\n Object.assign(metadata, data);\n }\n\n logEntry.metadata = metadata;\n\n return JSON.stringify(logEntry);\n });\n\n // Create HTTP transport config, excluding Logflare-specific properties\n const httpConfig = { ...config };\n delete httpConfig.sourceId;\n delete httpConfig.apiKey;\n delete httpConfig.url;\n delete httpConfig.payloadTemplate;\n\n super({\n url: fullUrl,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"X-API-KEY\": config.apiKey,\n },\n payloadTemplate,\n batchMode: \"field\", // Use Logflare's batch format\n batchFieldName: \"batch\", // Use Logflare's batch field name\n ...httpConfig,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAuCA,IAAa,oBAAb,cAAuC,cAAc;CACnD,YAAY,QAAiC;EAE3C,MAAM,UAAU,GADI,OAAO,OAAO,2BACH,oBAAoB,OAAO;EAE1D,MAAM,kBACJ,OAAO,qBACL,EAAE,UAAU,SAAS,WAAW;GAChC,MAAMA,WAAgC,EACpC,SACD;GAGD,MAAMC,WAAgC,EACpC,OAAO,UACR;AAGD,OAAI,KACF,QAAO,OAAO,UAAU,KAAK;AAG/B,YAAS,WAAW;AAEpB,UAAO,KAAK,UAAU,SAAS;;EAInC,MAAM,aAAa,EAAE,GAAG,QAAQ;AAChC,SAAO,WAAW;AAClB,SAAO,WAAW;AAClB,SAAO,WAAW;AAClB,SAAO,WAAW;AAElB,QAAM;GACJ,KAAK;GACL,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,aAAa,OAAO;IACrB;GACD;GACA,WAAW;GACX,gBAAgB;GAChB,GAAG;GACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loglayer/transport-logflare",
3
3
  "description": "Logflare transport for the LogLayer logging library.",
4
- "version": "1.0.1",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
7
7
  "module": "./dist/index.js",
@@ -31,19 +31,19 @@
31
31
  "transport"
32
32
  ],
33
33
  "dependencies": {
34
- "@loglayer/transport-http": "1.1.1"
34
+ "@loglayer/transport-http": "1.1.2"
35
35
  },
36
36
  "devDependencies": {
37
+ "@types/node": "24.7.2",
37
38
  "dotenv": "17.2.3",
38
- "@types/node": "24.6.1",
39
39
  "serialize-error": "12.0.0",
40
+ "tsdown": "0.15.7",
40
41
  "tsx": "4.20.6",
41
- "tsup": "8.5.0",
42
42
  "typescript": "5.9.3",
43
43
  "vitest": "3.2.4",
44
- "@loglayer/transport": "2.3.3",
45
- "loglayer": "6.8.3",
46
- "@internal/tsconfig": "2.1.0"
44
+ "@internal/tsconfig": "2.1.0",
45
+ "@loglayer/transport": "2.3.4",
46
+ "loglayer": "6.9.1"
47
47
  },
48
48
  "bugs": "https://github.com/loglayer/loglayer/issues",
49
49
  "engines": {
@@ -54,7 +54,7 @@
54
54
  ],
55
55
  "homepage": "https://loglayer.dev",
56
56
  "scripts": {
57
- "build": "tsup src/index.ts",
57
+ "build": "tsdown src/index.ts",
58
58
  "test": "vitest --run",
59
59
  "clean": "rm -rf .turbo node_modules dist",
60
60
  "lint": "biome check --no-errors-on-unmatched --write --unsafe src",