@abbacchio/transport 0.1.3 → 0.1.5

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/README.md CHANGED
@@ -26,6 +26,7 @@ const logger = pino({
26
26
  options: {
27
27
  url: "http://localhost:4000/api/logs",
28
28
  channel: "my-app",
29
+ namespace: "auth-service",
29
30
  },
30
31
  },
31
32
  ],
@@ -74,32 +75,64 @@ const logger = bunyan.createLogger({
74
75
  logger.info({ user: "john" }, "User logged in");
75
76
  ```
76
77
 
77
- ### Console
78
+
79
+ ### Dynamic Control (Pino)
80
+
81
+ Use `createPinoStream` for runtime control over channel, namespace, and enabled state:
78
82
 
79
83
  ```typescript
80
- import { interceptConsole, restoreConsole } from "@abbacchio/transport/transports/console";
84
+ import pino from "pino";
85
+ import { createPinoStream } from "@abbacchio/transport/transports/pino";
81
86
 
82
- interceptConsole({
87
+ const stream = createPinoStream({
83
88
  url: "http://localhost:4000/api/logs",
84
89
  channel: "my-app",
85
- passthrough: true,
90
+ namespace: "api",
91
+ enabled: process.env.ABBACCHIO_ENABLED === "true",
86
92
  });
87
93
 
88
- console.log("This will be sent to Abbacchio!");
94
+ const logger = pino(stream);
95
+
96
+ // Toggle at runtime
97
+ stream.disable(); // stop sending logs
98
+ stream.enable(); // resume sending logs
89
99
 
90
- restoreConsole();
100
+ // Change namespace dynamically
101
+ stream.setNamespace("worker");
91
102
  ```
92
103
 
93
104
  ## Options
94
105
 
95
- | Option | Type | Default | Description |
96
- | ----------- | ------ | -------------------------------- | --------------------------------------- |
97
- | `url` | string | `http://localhost:4000/api/logs` | Abbacchio server URL |
98
- | `channel` | string | `default` | Channel name for multi-app support |
99
- | `secretKey` | string | - | Encryption key (enables E2E encryption) |
100
- | `batchSize` | number | `10` | Send batch when this many logs accumulate |
101
- | `interval` | number | `1000` | Send batch after this many ms |
102
- | `headers` | object | `{}` | Additional HTTP headers |
106
+ | Option | Type | Default | Description |
107
+ | ----------- | ------- | -------------------------------- | ---------------------------------------------- |
108
+ | `url` | string | `http://localhost:4000/api/logs` | Abbacchio server URL |
109
+ | `channel` | string | `default` | Channel name for multi-app support |
110
+ | `namespace` | string | - | Default namespace (overridden by per-log values)|
111
+ | `enabled` | boolean | `true` | Whether to send logs to the server |
112
+ | `secretKey` | string | - | Encryption key (enables E2E encryption) |
113
+ | `batchSize` | number | `10` | Send batch when this many logs accumulate |
114
+ | `interval` | number | `1000` | Send batch after this many ms |
115
+ | `headers` | object | `{}` | Additional HTTP headers |
116
+
117
+ ### Namespace
118
+
119
+ The `namespace` option sets a default namespace for all logs. Per-log `namespace` or `name` fields (e.g. from Pino child loggers) take precedence:
120
+
121
+ ```typescript
122
+ const logger = pino({
123
+ transport: {
124
+ target: "@abbacchio/transport/transports/pino",
125
+ options: { namespace: "api" },
126
+ },
127
+ });
128
+
129
+ logger.info("hello"); // namespace = "api"
130
+ logger.child({ name: "db" }).info("query"); // namespace = "db" (overrides)
131
+ ```
132
+
133
+ ### Enabled Toggle
134
+
135
+ Set `enabled: false` to prevent logs from being sent to the server. Logs are silently dropped (not buffered). All transports expose `enable()`, `disable()`, and `isEnabled()` methods for runtime control.
103
136
 
104
137
  ## End-to-End Encryption
105
138
 
package/dist/client.d.ts CHANGED
@@ -5,12 +5,16 @@ export interface AbbacchioClientOptions {
5
5
  secretKey?: string;
6
6
  /** Channel/app name for multi-app support. Defaults to 'default' */
7
7
  channel?: string;
8
+ /** Default namespace for all logs. Per-log namespace/name fields take precedence */
9
+ namespace?: string;
8
10
  /** Number of logs to batch before sending. Defaults to 10 */
9
11
  batchSize?: number;
10
12
  /** Interval in ms between flushes. Defaults to 1000 */
11
13
  interval?: number;
12
14
  /** Additional headers to send with requests */
13
15
  headers?: Record<string, string>;
16
+ /** Whether to send logs to the server. Defaults to true */
17
+ enabled?: boolean;
14
18
  }
15
19
  /**
16
20
  * Shared HTTP client for all Abbacchio transports.
@@ -20,14 +24,44 @@ export declare class AbbacchioClient {
20
24
  private url;
21
25
  private secretKey?;
22
26
  private channel?;
27
+ private namespace?;
23
28
  private batchSize;
24
29
  private interval;
25
30
  private headers;
31
+ private enabled;
26
32
  private buffer;
27
33
  private timer;
28
34
  constructor(options?: AbbacchioClientOptions);
29
35
  /**
30
- * Process a log entry (encrypt if secretKey is provided)
36
+ * Change the channel dynamically after initialization
37
+ */
38
+ setChannel(channel: string | undefined): void;
39
+ /**
40
+ * Get the current channel
41
+ */
42
+ getChannel(): string | undefined;
43
+ /**
44
+ * Change the namespace dynamically after initialization
45
+ */
46
+ setNamespace(namespace: string | undefined): void;
47
+ /**
48
+ * Get the current namespace
49
+ */
50
+ getNamespace(): string | undefined;
51
+ /**
52
+ * Enable sending logs to the server
53
+ */
54
+ enable(): void;
55
+ /**
56
+ * Disable sending logs to the server. Logs will be silently dropped.
57
+ */
58
+ disable(): void;
59
+ /**
60
+ * Check if the client is currently enabled
61
+ */
62
+ isEnabled(): boolean;
63
+ /**
64
+ * Process a log entry: inject default namespace, then encrypt if needed
31
65
  */
32
66
  private processLog;
33
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAyB;IAExC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAA8C;gBAE/C,OAAO,GAAE,sBAA2B;IAShD;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAUvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAY/B;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;YACW,YAAY;IAiB1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAE9E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAA8C;gBAE/C,OAAO,GAAE,sBAA2B;IAWhD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAWvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAa/B;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;YACW,YAAY;IAiB1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAE9E"}
package/dist/client.js CHANGED
@@ -7,32 +7,87 @@ export class AbbacchioClient {
7
7
  url;
8
8
  secretKey;
9
9
  channel;
10
+ namespace;
10
11
  batchSize;
11
12
  interval;
12
13
  headers;
14
+ enabled;
13
15
  buffer = [];
14
16
  timer = null;
15
17
  constructor(options = {}) {
16
18
  this.url = options.url || "http://localhost:4000/api/logs";
17
19
  this.secretKey = options.secretKey;
18
20
  this.channel = options.channel;
21
+ this.namespace = options.namespace;
19
22
  this.batchSize = options.batchSize || 10;
20
23
  this.interval = options.interval || 1000;
21
24
  this.headers = options.headers || {};
25
+ this.enabled = options.enabled ?? true;
22
26
  }
23
27
  /**
24
- * Process a log entry (encrypt if secretKey is provided)
28
+ * Change the channel dynamically after initialization
29
+ */
30
+ setChannel(channel) {
31
+ this.channel = channel;
32
+ }
33
+ /**
34
+ * Get the current channel
35
+ */
36
+ getChannel() {
37
+ return this.channel;
38
+ }
39
+ /**
40
+ * Change the namespace dynamically after initialization
41
+ */
42
+ setNamespace(namespace) {
43
+ this.namespace = namespace;
44
+ }
45
+ /**
46
+ * Get the current namespace
47
+ */
48
+ getNamespace() {
49
+ return this.namespace;
50
+ }
51
+ /**
52
+ * Enable sending logs to the server
53
+ */
54
+ enable() {
55
+ this.enabled = true;
56
+ }
57
+ /**
58
+ * Disable sending logs to the server. Logs will be silently dropped.
59
+ */
60
+ disable() {
61
+ this.enabled = false;
62
+ }
63
+ /**
64
+ * Check if the client is currently enabled
65
+ */
66
+ isEnabled() {
67
+ return this.enabled;
68
+ }
69
+ /**
70
+ * Process a log entry: inject default namespace, then encrypt if needed
25
71
  */
26
72
  processLog(log) {
73
+ let processed = log;
74
+ if (this.namespace && typeof processed === 'object' && processed !== null) {
75
+ const obj = processed;
76
+ if (!obj.namespace && !obj.name) {
77
+ processed = { ...obj, namespace: this.namespace };
78
+ }
79
+ }
27
80
  if (this.secretKey) {
28
- return { encrypted: encrypt(JSON.stringify(log), this.secretKey) };
81
+ return { encrypted: encrypt(JSON.stringify(processed), this.secretKey) };
29
82
  }
30
- return log;
83
+ return processed;
31
84
  }
32
85
  /**
33
86
  * Add a log to the buffer and trigger send if needed
34
87
  */
35
88
  add(log) {
89
+ if (!this.enabled)
90
+ return;
36
91
  this.buffer.push(this.processLog(log));
37
92
  if (this.buffer.length >= this.batchSize) {
38
93
  this.flush();
@@ -45,6 +100,8 @@ export class AbbacchioClient {
45
100
  * Add multiple logs at once
46
101
  */
47
102
  addBatch(logs) {
103
+ if (!this.enabled)
104
+ return;
48
105
  for (const log of logs) {
49
106
  this.buffer.push(this.processLog(log));
50
107
  }
@@ -59,6 +116,8 @@ export class AbbacchioClient {
59
116
  * Send logs immediately without batching
60
117
  */
61
118
  async send(logs) {
119
+ if (!this.enabled)
120
+ return;
62
121
  const processedLogs = logs.map(log => this.processLog(log));
63
122
  await this.sendToServer(processedLogs);
64
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAiBvC;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,GAAG,CAAS;IACZ,SAAS,CAAU;IACnB,OAAO,CAAU;IACjB,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,OAAO,CAAyB;IAEhC,MAAM,GAAc,EAAE,CAAC;IACvB,KAAK,GAAyC,IAAI,CAAC;IAE3D,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gCAAgC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAY;QAC7B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAY;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAe;QACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAe;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAe;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACpB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBAChD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,IAAI,CAAC,OAAO;iBAChB;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgC;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAqBvC;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,GAAG,CAAS;IACZ,SAAS,CAAU;IACnB,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,OAAO,CAAyB;IAChC,OAAO,CAAU;IAEjB,MAAM,GAAc,EAAE,CAAC;IACvB,KAAK,GAAyC,IAAI,CAAC;IAE3D,YAAY,UAAkC,EAAE;QAC9C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,gCAAgC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAA2B;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAY;QAC7B,IAAI,SAAS,GAAG,GAAG,CAAC;QAEpB,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAC1E,MAAM,GAAG,GAAG,SAAoC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChC,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAY;QACd,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAe;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAe;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAe;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACpB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBAChD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,GAAG,IAAI,CAAC,OAAO;iBAChB;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgC;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,6 @@ export { winstonTransport, AbbacchioWinstonTransport } from "./transports/winsto
7
7
  export type { WinstonTransportOptions } from "./transports/winston.js";
8
8
  export { bunyanStream, AbbacchioBunyanStream } from "./transports/bunyan.js";
9
9
  export type { BunyanStreamOptions } from "./transports/bunyan.js";
10
- export { interceptConsole, restoreConsole, getActiveClient } from "./transports/console.js";
11
- export type { ConsoleInterceptorOptions } from "./transports/console.js";
10
+ export { createPinoStream } from "./transports/pino.js";
11
+ export type { AbbacchioPinoStream } from "./transports/pino.js";
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5F,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -6,5 +6,5 @@ export { generateKey, encrypt, decrypt, encryptLog, decryptLog } from "./encrypt
6
6
  export { default as pinoTransport } from "./transports/pino.js";
7
7
  export { winstonTransport, AbbacchioWinstonTransport } from "./transports/winston.js";
8
8
  export { bunyanStream, AbbacchioBunyanStream } from "./transports/bunyan.js";
9
- export { interceptConsole, restoreConsole, getActiveClient } from "./transports/console.js";
9
+ export { createPinoStream } from "./transports/pino.js";
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG5D,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErF,uCAAuC;AACvC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGtF,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG5D,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAErF,uCAAuC;AACvC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGtF,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -40,6 +40,34 @@ export declare class AbbacchioBunyanStream extends Writable {
40
40
  * Transform Bunyan log format to a normalized format
41
41
  */
42
42
  private transformLog;
43
+ /**
44
+ * Change the channel dynamically
45
+ */
46
+ setChannel(channel: string | undefined): void;
47
+ /**
48
+ * Get the current channel
49
+ */
50
+ getChannel(): string | undefined;
51
+ /**
52
+ * Change the namespace dynamically
53
+ */
54
+ setNamespace(namespace: string | undefined): void;
55
+ /**
56
+ * Get the current namespace
57
+ */
58
+ getNamespace(): string | undefined;
59
+ /**
60
+ * Enable sending logs to the server
61
+ */
62
+ enable(): void;
63
+ /**
64
+ * Disable sending logs to the server
65
+ */
66
+ disable(): void;
67
+ /**
68
+ * Check if the client is currently enabled
69
+ */
70
+ isEnabled(): boolean;
43
71
  /**
44
72
  * Close the stream
45
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bunyan.d.ts","sourceRoot":"","sources":["../../src/transports/bunyan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,OAAO,CAAC,MAAM,CAAkB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;gBAEnB,IAAI,GAAE,mBAAwB;IAM1C;;OAEG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GACvC,IAAI;IAWP;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;CAGvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAOhI;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"bunyan.d.ts","sourceRoot":"","sources":["../../src/transports/bunyan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,OAAO,CAAC,MAAM,CAAkB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;gBAEnB,IAAI,GAAE,mBAAwB;IAM1C;;OAEG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,cAAc,EACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GACvC,IAAI;IAWP;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;CAGvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAOhI;AAED,eAAe,YAAY,CAAC"}
@@ -61,6 +61,48 @@ export class AbbacchioBunyanStream extends Writable {
61
61
  ...rest,
62
62
  };
63
63
  }
64
+ /**
65
+ * Change the channel dynamically
66
+ */
67
+ setChannel(channel) {
68
+ this.client.setChannel(channel);
69
+ }
70
+ /**
71
+ * Get the current channel
72
+ */
73
+ getChannel() {
74
+ return this.client.getChannel();
75
+ }
76
+ /**
77
+ * Change the namespace dynamically
78
+ */
79
+ setNamespace(namespace) {
80
+ this.client.setNamespace(namespace);
81
+ }
82
+ /**
83
+ * Get the current namespace
84
+ */
85
+ getNamespace() {
86
+ return this.client.getNamespace();
87
+ }
88
+ /**
89
+ * Enable sending logs to the server
90
+ */
91
+ enable() {
92
+ this.client.enable();
93
+ }
94
+ /**
95
+ * Disable sending logs to the server
96
+ */
97
+ disable() {
98
+ this.client.disable();
99
+ }
100
+ /**
101
+ * Check if the client is currently enabled
102
+ */
103
+ isEnabled() {
104
+ return this.client.isEnabled();
105
+ }
64
106
  /**
65
107
  * Close the stream
66
108
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bunyan.js","sourceRoot":"","sources":["../../src/transports/bunyan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAO5E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACzC,MAAM,CAAkB;IACzB,KAAK,CAAmB;IAE/B,YAAY,OAA4B,EAAE;QACxC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,KAA8B,EAC9B,SAAyB,EACzB,QAAwC;QAExC,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,QAAQ,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAY,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAA+B;QAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAErE,OAAO;YACL,KAAK,EAAE,KAAe;YACtB,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAc,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5D,IAAI;YACJ,QAAQ;YACR,GAAG;YACH,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAwC;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAA0B;IACrD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO;QACL,MAAM;QACN,KAAK,EAAE,IAAI,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"bunyan.js","sourceRoot":"","sources":["../../src/transports/bunyan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAO5E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACzC,MAAM,CAAkB;IACzB,KAAK,CAAmB;IAE/B,YAAY,OAA4B,EAAE;QACxC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,KAA8B,EAC9B,SAAyB,EACzB,QAAwC;QAExC,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,QAAQ,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAY,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAA+B;QAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAErE,OAAO;YACL,KAAK,EAAE,KAAe;YACtB,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAc,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5D,IAAI;YACJ,QAAQ;YACR,GAAG;YACH,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAA2B;QACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAwC;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAA0B;IACrD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO;QACL,MAAM;QACN,KAAK,EAAE,IAAI,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
@@ -14,7 +14,7 @@ export declare function interceptConsole(opts?: ConsoleInterceptorOptions): void
14
14
  */
15
15
  export declare function restoreConsole(): void;
16
16
  /**
17
- * Get the active client (for testing)
17
+ * Get the active client (for testing/runtime control)
18
18
  */
19
19
  export declare function getActiveClient(): AbbacchioClient | null;
20
20
  export default interceptConsole;
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/transports/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC1D,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA0FD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,yBAA8B,GAAG,IAAI,CAoB3E;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAYrC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,GAAG,IAAI,CAExD;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/transports/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC1D,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA4FD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,yBAA8B,GAAG,IAAI,CAoB3E;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAYrC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,eAAe,GAAG,IAAI,CAExD;AAED,eAAe,gBAAgB,CAAC"}
@@ -12,14 +12,16 @@ const methodToLevel = {
12
12
  *
13
13
  * @example
14
14
  * ```typescript
15
- * import { interceptConsole, restoreConsole } from "@abbacchio/client/transports/console";
15
+ * import { interceptConsole, restoreConsole } from "@abbacchio/transport/transports/console";
16
16
  *
17
17
  * // Start intercepting console calls
18
18
  * interceptConsole({
19
19
  * url: "http://localhost:4000/api/logs",
20
20
  * channel: "my-app",
21
+ * namespace: "my-namespace",
21
22
  * secretKey: "optional-encryption-key",
22
23
  * passthrough: true, // Still log to console
24
+ * enabled: true, // Can be toggled at runtime
23
25
  * });
24
26
  *
25
27
  * console.log("This will be sent to Abbacchio!");
@@ -110,7 +112,7 @@ export function restoreConsole() {
110
112
  }
111
113
  }
112
114
  /**
113
- * Get the active client (for testing)
115
+ * Get the active client (for testing/runtime control)
114
116
  */
115
117
  export function getActiveClient() {
116
118
  return activeClient;
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/transports/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/transports/console.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,6 @@ export { winstonTransport, AbbacchioWinstonTransport } from "./winston.js";
4
4
  export type { WinstonTransportOptions } from "./winston.js";
5
5
  export { bunyanStream, AbbacchioBunyanStream } from "./bunyan.js";
6
6
  export type { BunyanStreamOptions } from "./bunyan.js";
7
- export { interceptConsole, restoreConsole, getActiveClient } from "./console.js";
8
- export type { ConsoleInterceptorOptions } from "./console.js";
7
+ export { createPinoStream } from "./pino.js";
8
+ export type { AbbacchioPinoStream } from "./pino.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjF,YAAY,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
@@ -4,6 +4,6 @@ export { default as pinoTransport } from "./pino.js";
4
4
  export { winstonTransport, AbbacchioWinstonTransport } from "./winston.js";
5
5
  // Bunyan stream
6
6
  export { bunyanStream, AbbacchioBunyanStream } from "./bunyan.js";
7
- // Console interceptor
8
- export { interceptConsole, restoreConsole, getActiveClient } from "./console.js";
7
+ // Pino stream with dynamic channel support
8
+ export { createPinoStream } from "./pino.js";
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AAGrD,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAG3E,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGlE,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AAGrD,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAG3E,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGlE,2CAA2C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,7 +1,26 @@
1
1
  import build from "pino-abstract-transport";
2
2
  import { type AbbacchioClientOptions } from "../client.js";
3
+ import { Transform } from "stream";
3
4
  export interface PinoTransportOptions extends AbbacchioClientOptions {
4
5
  }
6
+ export interface AbbacchioPinoStream extends Transform {
7
+ /** Change the channel dynamically */
8
+ setChannel(channel: string | undefined): void;
9
+ /** Get the current channel */
10
+ getChannel(): string | undefined;
11
+ /** Change the namespace dynamically */
12
+ setNamespace(namespace: string | undefined): void;
13
+ /** Get the current namespace */
14
+ getNamespace(): string | undefined;
15
+ /** Enable sending logs to the server */
16
+ enable(): void;
17
+ /** Disable sending logs to the server */
18
+ disable(): void;
19
+ /** Check if the client is currently enabled */
20
+ isEnabled(): boolean;
21
+ /** Flush pending logs and close the client */
22
+ close(): Promise<void>;
23
+ }
5
24
  /**
6
25
  * Pino transport for Abbacchio.
7
26
  *
@@ -15,6 +34,7 @@ export interface PinoTransportOptions extends AbbacchioClientOptions {
15
34
  * options: {
16
35
  * url: "http://localhost:4000/api/logs",
17
36
  * channel: "my-app",
37
+ * namespace: "auth-service",
18
38
  * secretKey: "optional-encryption-key",
19
39
  * },
20
40
  * },
@@ -23,9 +43,34 @@ export interface PinoTransportOptions extends AbbacchioClientOptions {
23
43
  * logger.info("Hello from Pino!");
24
44
  * ```
25
45
  */
26
- export default function pinoTransport(opts?: PinoTransportOptions): Promise<import("stream").Transform & build.OnUnknown>;
46
+ export default function pinoTransport(opts?: PinoTransportOptions): Promise<Transform & build.OnUnknown>;
27
47
  /**
28
48
  * Named export for programmatic usage
29
49
  */
30
50
  export { pinoTransport };
51
+ /**
52
+ * Create a Pino destination stream with direct access to the client.
53
+ * Use this when you need to change the channel dynamically.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import pino from "pino";
58
+ * import { createPinoStream } from "@abbacchio/transport/transports/pino";
59
+ *
60
+ * const stream = createPinoStream({
61
+ * url: "http://localhost:4000/api/logs",
62
+ * channel: "initial-channel",
63
+ * });
64
+ *
65
+ * const logger = pino(stream);
66
+ *
67
+ * logger.info("Log to initial channel");
68
+ *
69
+ * // Change channel dynamically
70
+ * stream.setChannel("new-channel");
71
+ *
72
+ * logger.info("Log to new channel");
73
+ * ```
74
+ */
75
+ export declare function createPinoStream(opts?: PinoTransportOptions): AbbacchioPinoStream;
31
76
  //# sourceMappingURL=pino.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pino.d.ts","sourceRoot":"","sources":["../../src/transports/pino.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;CAAG;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAA8B,aAAa,CAAC,IAAI,GAAE,oBAAyB,yDAiB1E;AAED;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"pino.d.ts","sourceRoot":"","sources":["../../src/transports/pino.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;CAAG;AAEvE,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,qCAAqC;IACrC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9C,8BAA8B;IAC9B,UAAU,IAAI,MAAM,GAAG,SAAS,CAAC;IACjC,uCAAuC;IACvC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAClD,gCAAgC;IAChC,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC,wCAAwC;IACxC,MAAM,IAAI,IAAI,CAAC;IACf,yCAAyC;IACzC,OAAO,IAAI,IAAI,CAAC;IAChB,+CAA+C;IAC/C,SAAS,IAAI,OAAO,CAAC;IACrB,8CAA8C;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAA8B,aAAa,CAAC,IAAI,GAAE,oBAAyB,wCAiB1E;AAED;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,oBAAyB,GAAG,mBAAmB,CAoDrF"}
@@ -1,5 +1,6 @@
1
1
  import build from "pino-abstract-transport";
2
2
  import { AbbacchioClient } from "../client.js";
3
+ import { Transform } from "stream";
3
4
  /**
4
5
  * Pino transport for Abbacchio.
5
6
  *
@@ -13,6 +14,7 @@ import { AbbacchioClient } from "../client.js";
13
14
  * options: {
14
15
  * url: "http://localhost:4000/api/logs",
15
16
  * channel: "my-app",
17
+ * namespace: "auth-service",
16
18
  * secretKey: "optional-encryption-key",
17
19
  * },
18
20
  * },
@@ -39,4 +41,72 @@ export default async function pinoTransport(opts = {}) {
39
41
  * Named export for programmatic usage
40
42
  */
41
43
  export { pinoTransport };
44
+ /**
45
+ * Create a Pino destination stream with direct access to the client.
46
+ * Use this when you need to change the channel dynamically.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * import pino from "pino";
51
+ * import { createPinoStream } from "@abbacchio/transport/transports/pino";
52
+ *
53
+ * const stream = createPinoStream({
54
+ * url: "http://localhost:4000/api/logs",
55
+ * channel: "initial-channel",
56
+ * });
57
+ *
58
+ * const logger = pino(stream);
59
+ *
60
+ * logger.info("Log to initial channel");
61
+ *
62
+ * // Change channel dynamically
63
+ * stream.setChannel("new-channel");
64
+ *
65
+ * logger.info("Log to new channel");
66
+ * ```
67
+ */
68
+ export function createPinoStream(opts = {}) {
69
+ const client = new AbbacchioClient(opts);
70
+ const stream = new Transform({
71
+ objectMode: true,
72
+ transform(chunk, _encoding, callback) {
73
+ try {
74
+ const log = typeof chunk === "string" ? JSON.parse(chunk) : chunk;
75
+ client.add(log);
76
+ callback();
77
+ }
78
+ catch (err) {
79
+ callback(err);
80
+ }
81
+ },
82
+ flush(callback) {
83
+ client.flush().then(() => callback()).catch(callback);
84
+ },
85
+ });
86
+ stream.setChannel = (channel) => {
87
+ client.setChannel(channel);
88
+ };
89
+ stream.getChannel = () => {
90
+ return client.getChannel();
91
+ };
92
+ stream.setNamespace = (namespace) => {
93
+ client.setNamespace(namespace);
94
+ };
95
+ stream.getNamespace = () => {
96
+ return client.getNamespace();
97
+ };
98
+ stream.enable = () => {
99
+ client.enable();
100
+ };
101
+ stream.disable = () => {
102
+ client.disable();
103
+ };
104
+ stream.isEnabled = () => {
105
+ return client.isEnabled();
106
+ };
107
+ stream.close = async () => {
108
+ await client.close();
109
+ };
110
+ return stream;
111
+ }
42
112
  //# sourceMappingURL=pino.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/transports/pino.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAI5E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B,EAAE;IACzE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,KAAK,CACV,KAAK,WAAW,MAAM;QACpB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,2BAA2B;QAC3B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,EACD;QACE,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACF,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/transports/pino.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAuBnC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B,EAAE;IACzE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,KAAK,CACV,KAAK,WAAW,MAAM;QACpB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,2BAA2B;QAC3B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,EACD;QACE,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACF,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA6B,EAAE;IAC9D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,UAAU,EAAE,IAAI;QAChB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ;YAClC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAClE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAY,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,CAAC;KACF,CAAwB,CAAC;IAE1B,MAAM,CAAC,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;QAClD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;QACvB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,YAAY,GAAG,CAAC,SAA6B,EAAE,EAAE;QACtD,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,CAAC,YAAY,GAAG,GAAG,EAAE;QACzB,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;QACnB,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;QACpB,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;QACtB,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -42,6 +42,34 @@ export declare class AbbacchioWinstonTransport extends TransportStream {
42
42
  * Convert Winston level string to Pino-style number
43
43
  */
44
44
  private levelToNumber;
45
+ /**
46
+ * Change the channel dynamically
47
+ */
48
+ setChannel(channel: string | undefined): void;
49
+ /**
50
+ * Get the current channel
51
+ */
52
+ getChannel(): string | undefined;
53
+ /**
54
+ * Change the namespace dynamically
55
+ */
56
+ setNamespace(namespace: string | undefined): void;
57
+ /**
58
+ * Get the current namespace
59
+ */
60
+ getNamespace(): string | undefined;
61
+ /**
62
+ * Enable sending logs to the server
63
+ */
64
+ enable(): void;
65
+ /**
66
+ * Disable sending logs to the server
67
+ */
68
+ disable(): void;
69
+ /**
70
+ * Check if the client is currently enabled
71
+ */
72
+ isEnabled(): boolean;
45
73
  /**
46
74
  * Close the transport
47
75
  */
@@ -1 +1 @@
1
- {"version":3,"file":"winston.d.ts","sourceRoot":"","sources":["../../src/transports/winston.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,yBAA0B,SAAQ,eAAe;IAC5D,OAAO,CAAC,MAAM,CAAkB;gBAEpB,IAAI,GAAE,uBAA4B;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAY9D;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,uBAAuB,GAAG,yBAAyB,CAE1F;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"winston.d.ts","sourceRoot":"","sources":["../../src/transports/winston.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,yBAA0B,SAAQ,eAAe;IAC5D,OAAO,CAAC,MAAM,CAAkB;gBAEpB,IAAI,GAAE,uBAA4B;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAY9D;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,uBAAuB,GAAG,yBAAyB,CAE1F;AAED,eAAe,gBAAgB,CAAC"}
@@ -68,6 +68,48 @@ export class AbbacchioWinstonTransport extends TransportStream {
68
68
  };
69
69
  return levels[level] || 30;
70
70
  }
71
+ /**
72
+ * Change the channel dynamically
73
+ */
74
+ setChannel(channel) {
75
+ this.client.setChannel(channel);
76
+ }
77
+ /**
78
+ * Get the current channel
79
+ */
80
+ getChannel() {
81
+ return this.client.getChannel();
82
+ }
83
+ /**
84
+ * Change the namespace dynamically
85
+ */
86
+ setNamespace(namespace) {
87
+ this.client.setNamespace(namespace);
88
+ }
89
+ /**
90
+ * Get the current namespace
91
+ */
92
+ getNamespace() {
93
+ return this.client.getNamespace();
94
+ }
95
+ /**
96
+ * Enable sending logs to the server
97
+ */
98
+ enable() {
99
+ this.client.enable();
100
+ }
101
+ /**
102
+ * Disable sending logs to the server
103
+ */
104
+ disable() {
105
+ this.client.disable();
106
+ }
107
+ /**
108
+ * Check if the client is currently enabled
109
+ */
110
+ isEnabled() {
111
+ return this.client.isEnabled();
112
+ }
71
113
  /**
72
114
  * Close the transport
73
115
  */
@@ -1 +1 @@
1
- {"version":3,"file":"winston.js","sourceRoot":"","sources":["../../src/transports/winston.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAO5E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IACpD,MAAM,CAAkB;IAEhC,YAAY,OAAgC,EAAE;QAC5C,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAA6B,EAAE,QAAoB;QACrD,YAAY,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAA6B;QAChD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAEpD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAe,CAAC;YAC1C,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAmB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACtE,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAa;QACjC,MAAM,MAAM,GAA2B;YACrC,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;SACV,CAAC;QACF,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA8B;IAC7D,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"winston.js","sourceRoot":"","sources":["../../src/transports/winston.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AAO5E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IACpD,MAAM,CAAkB;IAEhC,YAAY,OAAgC,EAAE;QAC5C,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAA6B,EAAE,QAAoB;QACrD,YAAY,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAErB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAA6B;QAChD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAEpD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAe,CAAC;YAC1C,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAmB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACtE,GAAG,IAAI;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAa;QACjC,MAAM,MAAM,GAA2B;YACrC,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;SACV,CAAC;QACF,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAA2B;QACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA6B;QACxC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA8B;IAC7D,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,eAAe,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abbacchio/transport",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Node.js log transports for Pino, Winston, and Bunyan - send logs to Abbacchio",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/client.ts CHANGED
@@ -7,12 +7,16 @@ export interface AbbacchioClientOptions {
7
7
  secretKey?: string;
8
8
  /** Channel/app name for multi-app support. Defaults to 'default' */
9
9
  channel?: string;
10
+ /** Default namespace for all logs. Per-log namespace/name fields take precedence */
11
+ namespace?: string;
10
12
  /** Number of logs to batch before sending. Defaults to 10 */
11
13
  batchSize?: number;
12
14
  /** Interval in ms between flushes. Defaults to 1000 */
13
15
  interval?: number;
14
16
  /** Additional headers to send with requests */
15
17
  headers?: Record<string, string>;
18
+ /** Whether to send logs to the server. Defaults to true */
19
+ enabled?: boolean;
16
20
  }
17
21
 
18
22
  /**
@@ -23,9 +27,11 @@ export class AbbacchioClient {
23
27
  private url: string;
24
28
  private secretKey?: string;
25
29
  private channel?: string;
30
+ private namespace?: string;
26
31
  private batchSize: number;
27
32
  private interval: number;
28
33
  private headers: Record<string, string>;
34
+ private enabled: boolean;
29
35
 
30
36
  private buffer: unknown[] = [];
31
37
  private timer: ReturnType<typeof setTimeout> | null = null;
@@ -34,25 +40,86 @@ export class AbbacchioClient {
34
40
  this.url = options.url || "http://localhost:4000/api/logs";
35
41
  this.secretKey = options.secretKey;
36
42
  this.channel = options.channel;
43
+ this.namespace = options.namespace;
37
44
  this.batchSize = options.batchSize || 10;
38
45
  this.interval = options.interval || 1000;
39
46
  this.headers = options.headers || {};
47
+ this.enabled = options.enabled ?? true;
40
48
  }
41
49
 
42
50
  /**
43
- * Process a log entry (encrypt if secretKey is provided)
51
+ * Change the channel dynamically after initialization
52
+ */
53
+ setChannel(channel: string | undefined): void {
54
+ this.channel = channel;
55
+ }
56
+
57
+ /**
58
+ * Get the current channel
59
+ */
60
+ getChannel(): string | undefined {
61
+ return this.channel;
62
+ }
63
+
64
+ /**
65
+ * Change the namespace dynamically after initialization
66
+ */
67
+ setNamespace(namespace: string | undefined): void {
68
+ this.namespace = namespace;
69
+ }
70
+
71
+ /**
72
+ * Get the current namespace
73
+ */
74
+ getNamespace(): string | undefined {
75
+ return this.namespace;
76
+ }
77
+
78
+ /**
79
+ * Enable sending logs to the server
80
+ */
81
+ enable(): void {
82
+ this.enabled = true;
83
+ }
84
+
85
+ /**
86
+ * Disable sending logs to the server. Logs will be silently dropped.
87
+ */
88
+ disable(): void {
89
+ this.enabled = false;
90
+ }
91
+
92
+ /**
93
+ * Check if the client is currently enabled
94
+ */
95
+ isEnabled(): boolean {
96
+ return this.enabled;
97
+ }
98
+
99
+ /**
100
+ * Process a log entry: inject default namespace, then encrypt if needed
44
101
  */
45
102
  private processLog(log: unknown): unknown {
103
+ let processed = log;
104
+
105
+ if (this.namespace && typeof processed === 'object' && processed !== null) {
106
+ const obj = processed as Record<string, unknown>;
107
+ if (!obj.namespace && !obj.name) {
108
+ processed = { ...obj, namespace: this.namespace };
109
+ }
110
+ }
111
+
46
112
  if (this.secretKey) {
47
- return { encrypted: encrypt(JSON.stringify(log), this.secretKey) };
113
+ return { encrypted: encrypt(JSON.stringify(processed), this.secretKey) };
48
114
  }
49
- return log;
115
+ return processed;
50
116
  }
51
117
 
52
118
  /**
53
119
  * Add a log to the buffer and trigger send if needed
54
120
  */
55
121
  add(log: unknown): void {
122
+ if (!this.enabled) return;
56
123
  this.buffer.push(this.processLog(log));
57
124
 
58
125
  if (this.buffer.length >= this.batchSize) {
@@ -66,6 +133,7 @@ export class AbbacchioClient {
66
133
  * Add multiple logs at once
67
134
  */
68
135
  addBatch(logs: unknown[]): void {
136
+ if (!this.enabled) return;
69
137
  for (const log of logs) {
70
138
  this.buffer.push(this.processLog(log));
71
139
  }
@@ -81,6 +149,7 @@ export class AbbacchioClient {
81
149
  * Send logs immediately without batching
82
150
  */
83
151
  async send(logs: unknown[]): Promise<void> {
152
+ if (!this.enabled) return;
84
153
  const processedLogs = logs.map(log => this.processLog(log));
85
154
  await this.sendToServer(processedLogs);
86
155
  }
package/src/index.ts CHANGED
@@ -15,5 +15,5 @@ export type { WinstonTransportOptions } from "./transports/winston.js";
15
15
  export { bunyanStream, AbbacchioBunyanStream } from "./transports/bunyan.js";
16
16
  export type { BunyanStreamOptions } from "./transports/bunyan.js";
17
17
 
18
- export { interceptConsole, restoreConsole, getActiveClient } from "./transports/console.js";
19
- export type { ConsoleInterceptorOptions } from "./transports/console.js";
18
+ export { createPinoStream } from "./transports/pino.js";
19
+ export type { AbbacchioPinoStream } from "./transports/pino.js";
@@ -75,6 +75,55 @@ export class AbbacchioBunyanStream extends Writable {
75
75
  };
76
76
  }
77
77
 
78
+ /**
79
+ * Change the channel dynamically
80
+ */
81
+ setChannel(channel: string | undefined): void {
82
+ this.client.setChannel(channel);
83
+ }
84
+
85
+ /**
86
+ * Get the current channel
87
+ */
88
+ getChannel(): string | undefined {
89
+ return this.client.getChannel();
90
+ }
91
+
92
+ /**
93
+ * Change the namespace dynamically
94
+ */
95
+ setNamespace(namespace: string | undefined): void {
96
+ this.client.setNamespace(namespace);
97
+ }
98
+
99
+ /**
100
+ * Get the current namespace
101
+ */
102
+ getNamespace(): string | undefined {
103
+ return this.client.getNamespace();
104
+ }
105
+
106
+ /**
107
+ * Enable sending logs to the server
108
+ */
109
+ enable(): void {
110
+ this.client.enable();
111
+ }
112
+
113
+ /**
114
+ * Disable sending logs to the server
115
+ */
116
+ disable(): void {
117
+ this.client.disable();
118
+ }
119
+
120
+ /**
121
+ * Check if the client is currently enabled
122
+ */
123
+ isEnabled(): boolean {
124
+ return this.client.isEnabled();
125
+ }
126
+
78
127
  /**
79
128
  * Close the stream
80
129
  */
@@ -23,14 +23,16 @@ const methodToLevel: Record<ConsoleMethod, number> = {
23
23
  *
24
24
  * @example
25
25
  * ```typescript
26
- * import { interceptConsole, restoreConsole } from "@abbacchio/client/transports/console";
26
+ * import { interceptConsole, restoreConsole } from "@abbacchio/transport/transports/console";
27
27
  *
28
28
  * // Start intercepting console calls
29
29
  * interceptConsole({
30
30
  * url: "http://localhost:4000/api/logs",
31
31
  * channel: "my-app",
32
+ * namespace: "my-namespace",
32
33
  * secretKey: "optional-encryption-key",
33
34
  * passthrough: true, // Still log to console
35
+ * enabled: true, // Can be toggled at runtime
34
36
  * });
35
37
  *
36
38
  * console.log("This will be sent to Abbacchio!");
@@ -138,7 +140,7 @@ export function restoreConsole(): void {
138
140
  }
139
141
 
140
142
  /**
141
- * Get the active client (for testing)
143
+ * Get the active client (for testing/runtime control)
142
144
  */
143
145
  export function getActiveClient(): AbbacchioClient | null {
144
146
  return activeClient;
@@ -10,6 +10,6 @@ export type { WinstonTransportOptions } from "./winston.js";
10
10
  export { bunyanStream, AbbacchioBunyanStream } from "./bunyan.js";
11
11
  export type { BunyanStreamOptions } from "./bunyan.js";
12
12
 
13
- // Console interceptor
14
- export { interceptConsole, restoreConsole, getActiveClient } from "./console.js";
15
- export type { ConsoleInterceptorOptions } from "./console.js";
13
+ // Pino stream with dynamic channel support
14
+ export { createPinoStream } from "./pino.js";
15
+ export type { AbbacchioPinoStream } from "./pino.js";
@@ -1,8 +1,28 @@
1
1
  import build from "pino-abstract-transport";
2
2
  import { AbbacchioClient, type AbbacchioClientOptions } from "../client.js";
3
+ import { Transform } from "stream";
3
4
 
4
5
  export interface PinoTransportOptions extends AbbacchioClientOptions {}
5
6
 
7
+ export interface AbbacchioPinoStream extends Transform {
8
+ /** Change the channel dynamically */
9
+ setChannel(channel: string | undefined): void;
10
+ /** Get the current channel */
11
+ getChannel(): string | undefined;
12
+ /** Change the namespace dynamically */
13
+ setNamespace(namespace: string | undefined): void;
14
+ /** Get the current namespace */
15
+ getNamespace(): string | undefined;
16
+ /** Enable sending logs to the server */
17
+ enable(): void;
18
+ /** Disable sending logs to the server */
19
+ disable(): void;
20
+ /** Check if the client is currently enabled */
21
+ isEnabled(): boolean;
22
+ /** Flush pending logs and close the client */
23
+ close(): Promise<void>;
24
+ }
25
+
6
26
  /**
7
27
  * Pino transport for Abbacchio.
8
28
  *
@@ -16,6 +36,7 @@ export interface PinoTransportOptions extends AbbacchioClientOptions {}
16
36
  * options: {
17
37
  * url: "http://localhost:4000/api/logs",
18
38
  * channel: "my-app",
39
+ * namespace: "auth-service",
19
40
  * secretKey: "optional-encryption-key",
20
41
  * },
21
42
  * },
@@ -47,3 +68,81 @@ export default async function pinoTransport(opts: PinoTransportOptions = {}) {
47
68
  * Named export for programmatic usage
48
69
  */
49
70
  export { pinoTransport };
71
+
72
+ /**
73
+ * Create a Pino destination stream with direct access to the client.
74
+ * Use this when you need to change the channel dynamically.
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * import pino from "pino";
79
+ * import { createPinoStream } from "@abbacchio/transport/transports/pino";
80
+ *
81
+ * const stream = createPinoStream({
82
+ * url: "http://localhost:4000/api/logs",
83
+ * channel: "initial-channel",
84
+ * });
85
+ *
86
+ * const logger = pino(stream);
87
+ *
88
+ * logger.info("Log to initial channel");
89
+ *
90
+ * // Change channel dynamically
91
+ * stream.setChannel("new-channel");
92
+ *
93
+ * logger.info("Log to new channel");
94
+ * ```
95
+ */
96
+ export function createPinoStream(opts: PinoTransportOptions = {}): AbbacchioPinoStream {
97
+ const client = new AbbacchioClient(opts);
98
+
99
+ const stream = new Transform({
100
+ objectMode: true,
101
+ transform(chunk, _encoding, callback) {
102
+ try {
103
+ const log = typeof chunk === "string" ? JSON.parse(chunk) : chunk;
104
+ client.add(log);
105
+ callback();
106
+ } catch (err) {
107
+ callback(err as Error);
108
+ }
109
+ },
110
+ flush(callback) {
111
+ client.flush().then(() => callback()).catch(callback);
112
+ },
113
+ }) as AbbacchioPinoStream;
114
+
115
+ stream.setChannel = (channel: string | undefined) => {
116
+ client.setChannel(channel);
117
+ };
118
+
119
+ stream.getChannel = () => {
120
+ return client.getChannel();
121
+ };
122
+
123
+ stream.setNamespace = (namespace: string | undefined) => {
124
+ client.setNamespace(namespace);
125
+ };
126
+
127
+ stream.getNamespace = () => {
128
+ return client.getNamespace();
129
+ };
130
+
131
+ stream.enable = () => {
132
+ client.enable();
133
+ };
134
+
135
+ stream.disable = () => {
136
+ client.disable();
137
+ };
138
+
139
+ stream.isEnabled = () => {
140
+ return client.isEnabled();
141
+ };
142
+
143
+ stream.close = async () => {
144
+ await client.close();
145
+ };
146
+
147
+ return stream;
148
+ }
@@ -82,6 +82,55 @@ export class AbbacchioWinstonTransport extends TransportStream {
82
82
  return levels[level] || 30;
83
83
  }
84
84
 
85
+ /**
86
+ * Change the channel dynamically
87
+ */
88
+ setChannel(channel: string | undefined): void {
89
+ this.client.setChannel(channel);
90
+ }
91
+
92
+ /**
93
+ * Get the current channel
94
+ */
95
+ getChannel(): string | undefined {
96
+ return this.client.getChannel();
97
+ }
98
+
99
+ /**
100
+ * Change the namespace dynamically
101
+ */
102
+ setNamespace(namespace: string | undefined): void {
103
+ this.client.setNamespace(namespace);
104
+ }
105
+
106
+ /**
107
+ * Get the current namespace
108
+ */
109
+ getNamespace(): string | undefined {
110
+ return this.client.getNamespace();
111
+ }
112
+
113
+ /**
114
+ * Enable sending logs to the server
115
+ */
116
+ enable(): void {
117
+ this.client.enable();
118
+ }
119
+
120
+ /**
121
+ * Disable sending logs to the server
122
+ */
123
+ disable(): void {
124
+ this.client.disable();
125
+ }
126
+
127
+ /**
128
+ * Check if the client is currently enabled
129
+ */
130
+ isEnabled(): boolean {
131
+ return this.client.isEnabled();
132
+ }
133
+
85
134
  /**
86
135
  * Close the transport
87
136
  */