logixia 1.13.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +72 -16
  2. package/dist/{azure-monitor.transport-BDFO4F-i.d.ts → azure-monitor.transport-Cn_3Usvu.d.ts} +2 -2
  3. package/dist/{azure-monitor.transport-BDFO4F-i.d.ts.map → azure-monitor.transport-Cn_3Usvu.d.ts.map} +1 -1
  4. package/dist/{azure-monitor.transport-D5wQEH04.d.mts → azure-monitor.transport-D7Da4RAb.d.mts} +2 -2
  5. package/dist/{azure-monitor.transport-D5wQEH04.d.mts.map → azure-monitor.transport-D7Da4RAb.d.mts.map} +1 -1
  6. package/dist/azure.d.mts +2 -2
  7. package/dist/azure.d.ts +2 -2
  8. package/dist/browser.d.mts +9 -0
  9. package/dist/browser.d.mts.map +1 -1
  10. package/dist/browser.d.ts +9 -0
  11. package/dist/browser.d.ts.map +1 -1
  12. package/dist/browser.js +43 -12
  13. package/dist/browser.js.map +1 -1
  14. package/dist/browser.mjs +43 -12
  15. package/dist/browser.mjs.map +1 -1
  16. package/dist/{nestjs-extras-ImbuDhs1.mjs → builder-0gEzRopq.mjs} +77 -871
  17. package/dist/builder-0gEzRopq.mjs.map +1 -0
  18. package/dist/{nestjs-extras-DnJ6vrIC.js → builder-D44QktIo.js} +81 -943
  19. package/dist/builder-D44QktIo.js.map +1 -0
  20. package/dist/cli/index.js +32 -13
  21. package/dist/cloudwatch.d.mts +2 -2
  22. package/dist/cloudwatch.d.ts +2 -2
  23. package/dist/{cloudwatch.transport-B00st6Xv.d.ts → cloudwatch.transport-DsEq633o.d.ts} +2 -2
  24. package/dist/{cloudwatch.transport-B00st6Xv.d.ts.map → cloudwatch.transport-DsEq633o.d.ts.map} +1 -1
  25. package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts → cloudwatch.transport-UlyZFWMn.d.mts} +2 -2
  26. package/dist/{cloudwatch.transport-Blc7Gtxt.d.mts.map → cloudwatch.transport-UlyZFWMn.d.mts.map} +1 -1
  27. package/dist/gcp.d.mts +2 -2
  28. package/dist/gcp.d.ts +2 -2
  29. package/dist/{gcp.transport-m4fVw0b1.d.ts → gcp.transport-B7oc97sG.d.ts} +2 -2
  30. package/dist/{gcp.transport-m4fVw0b1.d.ts.map → gcp.transport-B7oc97sG.d.ts.map} +1 -1
  31. package/dist/{gcp.transport-zzNyIoih.d.mts → gcp.transport-GrJurKo8.d.mts} +2 -2
  32. package/dist/{gcp.transport-zzNyIoih.d.mts.map → gcp.transport-GrJurKo8.d.mts.map} +1 -1
  33. package/dist/{index-BPwEisy4.d.mts → index-3mw5gaCw.d.mts} +2 -2
  34. package/dist/{index-BPwEisy4.d.mts.map → index-3mw5gaCw.d.mts.map} +1 -1
  35. package/dist/{index-nZEeCr3X.d.ts → index-DhIoploR.d.ts} +2 -2
  36. package/dist/{index-nZEeCr3X.d.ts.map → index-DhIoploR.d.ts.map} +1 -1
  37. package/dist/index.d.mts +44 -47
  38. package/dist/index.d.mts.map +1 -1
  39. package/dist/index.d.ts +44 -47
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +38 -126
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +5 -58
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/logitron-logger-BFDSO8Io.d.mts +257 -0
  46. package/dist/logitron-logger-BFDSO8Io.d.mts.map +1 -0
  47. package/dist/logitron-logger-UVeN-mQm.d.ts +257 -0
  48. package/dist/logitron-logger-UVeN-mQm.d.ts.map +1 -0
  49. package/dist/middleware.d.mts +2 -2
  50. package/dist/middleware.d.ts +2 -2
  51. package/dist/nest.d.mts +481 -6
  52. package/dist/nest.d.mts.map +1 -1
  53. package/dist/nest.d.ts +481 -6
  54. package/dist/nest.d.ts.map +1 -1
  55. package/dist/nest.js +877 -15
  56. package/dist/nest.js.map +1 -0
  57. package/dist/nest.mjs +861 -6
  58. package/dist/nest.mjs.map +1 -0
  59. package/dist/{search-DjXSn6v5.mjs → search-BFbu_oVn.mjs} +13 -3
  60. package/dist/{search-DjXSn6v5.mjs.map → search-BFbu_oVn.mjs.map} +1 -1
  61. package/dist/{search-B0MH1SJJ.js → search-C4V0OMEn.js} +13 -3
  62. package/dist/{search-B0MH1SJJ.js.map → search-C4V0OMEn.js.map} +1 -1
  63. package/dist/{search-CHUZPl0h.d.ts → search-CNh9uVwR.d.ts} +2 -2
  64. package/dist/search-CNh9uVwR.d.ts.map +1 -0
  65. package/dist/{search-BfBzDIT9.d.mts → search-DXANsQ2n.d.mts} +2 -2
  66. package/dist/{search-CHUZPl0h.d.ts.map → search-DXANsQ2n.d.mts.map} +1 -1
  67. package/dist/search.d.mts +3 -3
  68. package/dist/search.d.ts +3 -3
  69. package/dist/search.js +1 -1
  70. package/dist/search.mjs +1 -1
  71. package/dist/slack.transport-BZzoXDPn.d.mts +112 -0
  72. package/dist/slack.transport-BZzoXDPn.d.mts.map +1 -0
  73. package/dist/slack.transport-BfJRouB2.js +654 -0
  74. package/dist/slack.transport-BfJRouB2.js.map +1 -0
  75. package/dist/slack.transport-Bzw7sucI.mjs +643 -0
  76. package/dist/slack.transport-Bzw7sucI.mjs.map +1 -0
  77. package/dist/slack.transport-CXjQYOes.d.ts +112 -0
  78. package/dist/slack.transport-CXjQYOes.d.ts.map +1 -0
  79. package/dist/testing.d.mts +2 -2
  80. package/dist/testing.d.ts +2 -2
  81. package/dist/{transport.manager-CpdVHEGP.mjs → transport.manager-BiuCAJd2.mjs} +171 -84
  82. package/dist/transport.manager-BiuCAJd2.mjs.map +1 -0
  83. package/dist/{transport.manager-Crau3Rle.js → transport.manager-CXbKKdVE.js} +176 -83
  84. package/dist/transport.manager-CXbKKdVE.js.map +1 -0
  85. package/dist/{transport.types-CtNr3D7S.d.mts → transport.types-BMnurPcc.d.mts} +5 -2
  86. package/dist/transport.types-BMnurPcc.d.mts.map +1 -0
  87. package/dist/{transport.types-DqVLZTyf.d.ts → transport.types-CGoHpWQR.d.ts} +5 -2
  88. package/dist/transport.types-CGoHpWQR.d.ts.map +1 -0
  89. package/dist/transports.d.mts +18 -13
  90. package/dist/transports.d.mts.map +1 -1
  91. package/dist/transports.d.ts +18 -13
  92. package/dist/transports.d.ts.map +1 -1
  93. package/dist/transports.js +5 -2
  94. package/dist/transports.mjs +4 -3
  95. package/dist/worker.d.mts +2 -2
  96. package/dist/worker.d.ts +2 -2
  97. package/dist/worker.js +1 -1
  98. package/dist/worker.mjs +1 -1
  99. package/dist/{worker.transport-JP8YHBuU.js → worker.transport-BdPxu3PN.js} +1 -1
  100. package/dist/{worker.transport-JP8YHBuU.js.map → worker.transport-BdPxu3PN.js.map} +1 -1
  101. package/dist/{worker.transport-Bj-i0P9V.d.ts → worker.transport-CdzSZJmw.d.ts} +2 -2
  102. package/dist/{worker.transport-Bj-i0P9V.d.ts.map → worker.transport-CdzSZJmw.d.ts.map} +1 -1
  103. package/dist/{worker.transport-Bgv9heDI.d.mts → worker.transport-JvGPog3C.d.mts} +2 -2
  104. package/dist/{worker.transport-Bgv9heDI.d.mts.map → worker.transport-JvGPog3C.d.mts.map} +1 -1
  105. package/dist/{worker.transport-otwhJ_Et.mjs → worker.transport-lPxO2MVL.mjs} +1 -1
  106. package/dist/{worker.transport-otwhJ_Et.mjs.map → worker.transport-lPxO2MVL.mjs.map} +1 -1
  107. package/package.json +18 -9
  108. package/dist/nestjs-extras-DnJ6vrIC.js.map +0 -1
  109. package/dist/nestjs-extras-ImbuDhs1.mjs.map +0 -1
  110. package/dist/nestjs-extras-OkC796py.d.mts +0 -725
  111. package/dist/nestjs-extras-OkC796py.d.mts.map +0 -1
  112. package/dist/nestjs-extras-mKrHE9S6.d.ts +0 -725
  113. package/dist/nestjs-extras-mKrHE9S6.d.ts.map +0 -1
  114. package/dist/search-BfBzDIT9.d.mts.map +0 -1
  115. package/dist/transport.manager-CpdVHEGP.mjs.map +0 -1
  116. package/dist/transport.manager-Crau3Rle.js.map +0 -1
  117. package/dist/transport.types-CtNr3D7S.d.mts.map +0 -1
  118. package/dist/transport.types-DqVLZTyf.d.ts.map +0 -1
package/README.md CHANGED
@@ -673,7 +673,7 @@ const logger = createLogger({
673
673
  analytics: {
674
674
  datadog: {
675
675
  apiKey: process.env.DD_API_KEY!,
676
- site: 'datadoghq.com', // or 'datadoghq.eu', 'us3.datadoghq.com'
676
+ site: 'datadoghq.com', // or 'datadoghq.eu', 'us3.datadoghq.com', 'us5.datadoghq.com', 'ap1.datadoghq.com', 'ddog-gov.com'
677
677
  service: 'api',
678
678
  env: 'production',
679
679
  enableLogs: true,
@@ -758,6 +758,31 @@ const logger = createLogger({
758
758
  await logger.info('Order placed', { orderId: 'ord_789' });
759
759
  ```
760
760
 
761
+ ### Slack and Discord webhook transports
762
+
763
+ Send alerts to a chat channel. Both default to `level: 'error'`, batch entries that arrive within `minIntervalMs` (default 1000) into one message, and cap a message at 10 entries (the rest are dropped and counted in the message).
764
+
765
+ ```typescript
766
+ import { createLogger } from 'logixia';
767
+ import { DiscordTransport, SlackTransport } from 'logixia';
768
+
769
+ const logger = createLogger({
770
+ appName: 'api',
771
+ transports: {
772
+ custom: [
773
+ new SlackTransport({ webhookUrl: process.env.SLACK_WEBHOOK_URL!, level: 'error' }),
774
+ new DiscordTransport({ webhookUrl: process.env.DISCORD_WEBHOOK_URL!, level: 'warn' }),
775
+ ],
776
+ },
777
+ });
778
+ ```
779
+
780
+ - The webhook URL is a secret. It must be `https:` on `hooks.slack.com` (Slack) or `discord.com` / `discordapp.com` (Discord) unless you pass `allowCustomUrl: true`. It is never logged and never appears in error messages (only the host does).
781
+ - Logged text is escaped: Slack `&`, `<`, `>` (so `<!channel>` and `<@U123>` in log data cannot ping anyone); Discord markdown, plus `allowed_mentions: { parse: [] }` on every request.
782
+ - Platform limits are enforced by truncation (Slack header 150 and data 2,500 chars; Discord title 256, description 4,096, 25 fields, 6,000 per message).
783
+ - HTTP 429 waits for `Retry-After` (Discord: `retry_after`), then retries up to `maxRetries` (default 1). Other failures keep the batch queued with backoff; `flush()` rejects with a host-only error. The queue is bounded by `maxBufferSize` (default 1000, oldest dropped).
784
+ - Also available: `username`, `iconEmoji` (Slack), `avatarUrl` (Discord), `filter`, `formatter`, `flush()` and `close()` (flushes pending entries).
785
+
761
786
  ### Custom transport
762
787
 
763
788
  Implement `ITransport` to send logs anywhere — Slack, PagerDuty, S3, an internal queue:
@@ -992,6 +1017,25 @@ class OrderService {
992
1017
 
993
1018
  The default headers checked for an incoming trace ID (in priority order) are: `traceparent`, `x-trace-id`, `x-request-id`, `x-correlation-id`, `trace-id`.
994
1019
 
1020
+ ### Hono
1021
+
1022
+ On Node, Hono needs nothing beyond `runWithTraceId()` — wrap `await next()` and every log line in the request carries the trace ID:
1023
+
1024
+ ```typescript
1025
+ app.use(async (c, next) => {
1026
+ const traceId =
1027
+ extractTraceId({ headers: c.req.header() }, { header: DEFAULT_TRACE_HEADERS }) ??
1028
+ generateTraceId();
1029
+ await runWithTraceId(traceId, next);
1030
+ });
1031
+ ```
1032
+
1033
+ See [`examples/hono-example.ts`](./examples/hono-example.ts) (`npm run dev:hono`) for the full version.
1034
+
1035
+ ### Next.js (App Router)
1036
+
1037
+ In a route handler on the Node.js runtime (`export const runtime = 'nodejs'`) the regular `logixia` entry works: wrap the handler body in `runWithTraceId(traceId, ...)`. See [`examples/nextjs/`](./examples/nextjs/) for a copy-paste route handler.
1038
+
995
1039
  ### NestJS trace middleware
996
1040
 
997
1041
  The `TraceMiddleware` class integrates directly with NestJS's middleware system. `LogixiaLoggerModule.forRoot()` applies it automatically across all routes — no manual wiring needed:
@@ -1001,7 +1045,7 @@ The `TraceMiddleware` class integrates directly with NestJS's middleware system.
1001
1045
  // For manual use in a custom module:
1002
1046
 
1003
1047
  import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
1004
- import { TraceMiddleware } from 'logixia';
1048
+ import { TraceMiddleware } from 'logixia/nest';
1005
1049
 
1006
1050
  @Module({})
1007
1051
  export class AppModule implements NestModule {
@@ -1016,7 +1060,7 @@ export class AppModule implements NestModule {
1016
1060
  Propagates trace IDs through Kafka message handlers. Reads `traceId` / `trace_id` / `x-trace-id` from the message body or headers and runs the handler inside that trace context:
1017
1061
 
1018
1062
  ```typescript
1019
- import { KafkaTraceInterceptor } from 'logixia';
1063
+ import { KafkaTraceInterceptor } from 'logixia/nest';
1020
1064
  import { UseInterceptors, Controller } from '@nestjs/common';
1021
1065
  import { MessagePattern } from '@nestjs/microservices';
1022
1066
 
@@ -1038,7 +1082,7 @@ export class OrdersConsumer {
1038
1082
  Propagates trace IDs through WebSocket event handlers. Reads `traceId` from the message body, event payload, or handshake query:
1039
1083
 
1040
1084
  ```typescript
1041
- import { WebSocketTraceInterceptor } from 'logixia';
1085
+ import { WebSocketTraceInterceptor } from 'logixia/nest';
1042
1086
  import { UseInterceptors, WebSocketGateway, SubscribeMessage } from '@nestjs/websockets';
1043
1087
 
1044
1088
  @UseInterceptors(new WebSocketTraceInterceptor())
@@ -1060,6 +1104,11 @@ export class EventsGateway {
1060
1104
 
1061
1105
  ## NestJS integration
1062
1106
 
1107
+ > **Upgrading from 1.x:** since 2.0.0, everything NestJS-specific lives in `logixia/nest` only.
1108
+ > Change `import { LogixiaLoggerModule, LogixiaLoggerService, LogixiaExceptionFilter, InjectLogger, LogMethod } from 'logixia'`
1109
+ > to `... from 'logixia/nest'`. The root `logixia` entry no longer loads `@nestjs/common`, so plain Node, Express and Fastify apps
1110
+ > work without NestJS installed.
1111
+
1063
1112
  Drop-in module with zero boilerplate. Registers `TraceMiddleware` for all routes, provides `LogixiaLoggerService`, `KafkaTraceInterceptor`, and `WebSocketTraceInterceptor` via the global DI container.
1064
1113
 
1065
1114
  > **Full working example** — see [`examples/nestjs-app/`](./examples/nestjs-app/) for a complete NestJS app with Docker Compose (Postgres, MongoDB, Kafka, Kafdrop) that exercises every feature: `LogixiaLoggerModule`, `TraceMiddleware`, `LogixiaExceptionFilter`, `HttpLoggingInterceptor`, `WebSocketTraceInterceptor`, `KafkaTraceInterceptor`, `@LogMethod`, `child()` loggers, `timeAsync`, real Kafka producer + consumer.
@@ -1074,7 +1123,7 @@ Drop-in module with zero boilerplate. Registers `TraceMiddleware` for all routes
1074
1123
  ```typescript
1075
1124
  // app.module.ts
1076
1125
  import { Module } from '@nestjs/common';
1077
- import { LogixiaLoggerModule } from 'logixia';
1126
+ import { LogixiaLoggerModule } from 'logixia/nest';
1078
1127
 
1079
1128
  @Module({
1080
1129
  imports: [
@@ -1120,7 +1169,7 @@ LogixiaLoggerModule.forRootAsync({
1120
1169
  ```typescript
1121
1170
  // orders.service.ts
1122
1171
  import { Injectable } from '@nestjs/common';
1123
- import { LogixiaLoggerService } from 'logixia';
1172
+ import { LogixiaLoggerService } from 'logixia/nest';
1124
1173
 
1125
1174
  @Injectable()
1126
1175
  export class OrdersService {
@@ -1138,7 +1187,7 @@ export class OrdersService {
1138
1187
  ```typescript
1139
1188
  // orders.module.ts
1140
1189
  import { Module } from '@nestjs/common';
1141
- import { LogixiaLoggerModule } from 'logixia';
1190
+ import { LogixiaLoggerModule } from 'logixia/nest';
1142
1191
  import { OrdersService } from './orders.service';
1143
1192
 
1144
1193
  @Module({
@@ -1151,7 +1200,7 @@ export class OrdersModule {}
1151
1200
  ```typescript
1152
1201
  // orders.service.ts — inject the feature-scoped token
1153
1202
  import { Inject, Injectable } from '@nestjs/common';
1154
- import { LOGIXIA_LOGGER_PREFIX, LogixiaLoggerService } from 'logixia';
1203
+ import { LOGIXIA_LOGGER_PREFIX, LogixiaLoggerService } from 'logixia/nest';
1155
1204
 
1156
1205
  @Injectable()
1157
1206
  export class OrdersService {
@@ -1186,12 +1235,12 @@ await logger.mysql('Slow query detected', { query, ms: 1240 });
1186
1235
  await logger.payment('Charge captured', { txnId, amount: 99.99 });
1187
1236
  ```
1188
1237
 
1189
- **TraceId** — with `traceId: true`, every log line carries a correlation ID automatically. Use `LogixiaContext.run()` to scope a trace to a block (the `TraceMiddleware` does this per-request automatically):
1238
+ **TraceId** — with `traceId: true`, every log line carries a correlation ID automatically. Use `runWithTraceId()` to scope a trace to a block (the `TraceMiddleware` does this per-request automatically):
1190
1239
 
1191
1240
  ```typescript
1192
- import { LogixiaContext } from 'logixia';
1241
+ import { runWithTraceId } from 'logixia';
1193
1242
 
1194
- await LogixiaContext.run({ traceId: req.headers['x-request-id'] }, async () => {
1243
+ await runWithTraceId(String(req.headers['x-request-id']), async () => {
1195
1244
  await logger.info('Request received'); // traceId: "abc-123" in every line
1196
1245
  await logger.kafka('Event published'); // same traceId
1197
1246
  });
@@ -1206,7 +1255,7 @@ Automatically logs method entry, exit, duration, and errors — no manual `try/c
1206
1255
 
1207
1256
  ```typescript
1208
1257
  import { Injectable } from '@nestjs/common';
1209
- import { LogixiaLoggerService, LogMethod } from 'logixia';
1258
+ import { LogixiaLoggerService, LogMethod } from 'logixia/nest';
1210
1259
 
1211
1260
  @Injectable()
1212
1261
  export class PaymentService {
@@ -1243,7 +1292,7 @@ A global NestJS exception filter that automatically logs unhandled exceptions
1243
1292
  ```typescript
1244
1293
  // main.ts
1245
1294
  import { NestFactory } from '@nestjs/core';
1246
- import { LogixiaExceptionFilter } from 'logixia';
1295
+ import { LogixiaExceptionFilter } from 'logixia/nest';
1247
1296
  import { AppModule } from './app.module';
1248
1297
 
1249
1298
  async function bootstrap() {
@@ -1258,7 +1307,7 @@ With `LogixiaLoggerModule` set up, inject the service directly so it logs to you
1258
1307
 
1259
1308
  ```typescript
1260
1309
  import { APP_FILTER } from '@nestjs/core';
1261
- import { LogixiaExceptionFilter, LogixiaLoggerService } from 'logixia';
1310
+ import { LogixiaExceptionFilter, LogixiaLoggerService } from 'logixia/nest';
1262
1311
 
1263
1312
  // In AppModule providers:
1264
1313
  {
@@ -1357,6 +1406,8 @@ const app = Fastify();
1357
1406
  app.addHook('onRequest', correlationFastifyHook());
1358
1407
  ```
1359
1408
 
1409
+ > **Full working example** — see [`examples/fastify-example.ts`](./examples/fastify-example.ts) (`npm run dev:fastify`) for request logging, trace IDs and redaction on Fastify.
1410
+
1360
1411
  ### Outbound fetch / axios
1361
1412
 
1362
1413
  Every outbound HTTP call made inside a correlated context automatically carries the `X-Correlation-ID` header.
@@ -1480,6 +1531,8 @@ const logger = new BrowserLogger({
1480
1531
  });
1481
1532
  ```
1482
1533
 
1534
+ **Cloudflare Workers** — see [`examples/cloudflare-worker/`](./examples/cloudflare-worker/) for a Worker that logs JSON, tags each request with `child({ requestId })` and flushes a `BrowserRemoteTransport` with `ctx.waitUntil()`. Pass `flushIntervalMs: 0` to the transport: Workers don't allow timers at global scope.
1535
+
1483
1536
  The following utilities from the main package are also re-exported from `logixia/browser` (safe for non-Node runtimes):
1484
1537
 
1485
1538
  ```typescript
@@ -2256,11 +2309,14 @@ import {
2256
2309
  registerForShutdown, // (logger) => void
2257
2310
  deregisterFromShutdown, // (logger) => void
2258
2311
  resetShutdownHandlers, // () => void — useful in tests
2259
- // NestJS extras
2312
+ } from 'logixia';
2313
+
2314
+ // NestJS extras (requires @nestjs/common):
2315
+ import {
2260
2316
  InjectLogger, // @InjectLogger() parameter decorator
2261
2317
  LogMethod, // @LogMethod() method decorator
2262
2318
  LogixiaExceptionFilter, // global exception filter
2263
- } from 'logixia';
2319
+ } from 'logixia/nest';
2264
2320
 
2265
2321
  // Cloud transports (subpath imports):
2266
2322
  import { CloudWatchTransport } from 'logixia/cloudwatch';
@@ -1,4 +1,4 @@
1
- import { p as TransportLogEntry, s as IAsyncTransport } from "./transport.types-DqVLZTyf.js";
1
+ import { p as TransportLogEntry, s as IAsyncTransport } from "./transport.types-CGoHpWQR.js";
2
2
 
3
3
  //#region src/transports/azure-monitor.transport.d.ts
4
4
 
@@ -59,4 +59,4 @@ declare class AzureMonitorTransport implements IAsyncTransport {
59
59
  }
60
60
  //#endregion
61
61
  export { AzureMonitorTransportConfig as n, AzureMonitorTransport as t };
62
- //# sourceMappingURL=azure-monitor.transport-BDFO4F-i.d.ts.map
62
+ //# sourceMappingURL=azure-monitor.transport-Cn_3Usvu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-monitor.transport-BDFO4F-i.d.ts","names":[],"sources":["../src/transports/azure-monitor.transport.ts"],"sourcesContent":[],"mappings":";;;;UAkDiB,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCJ,qBAAA,YAAiC;;;;;;;;;;;;;;;;sBAmBxB;eAwBP;WAKJ;;;;;;WASM"}
1
+ {"version":3,"file":"azure-monitor.transport-Cn_3Usvu.d.ts","names":[],"sources":["../src/transports/azure-monitor.transport.ts"],"sourcesContent":[],"mappings":";;;;UAkDiB,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCJ,qBAAA,YAAiC;;;;;;;;;;;;;;;;sBAmBxB;eAwBP;WAKJ;;;;;;WASM"}
@@ -1,4 +1,4 @@
1
- import { p as TransportLogEntry, s as IAsyncTransport } from "./transport.types-CtNr3D7S.mjs";
1
+ import { p as TransportLogEntry, s as IAsyncTransport } from "./transport.types-BMnurPcc.mjs";
2
2
 
3
3
  //#region src/transports/azure-monitor.transport.d.ts
4
4
 
@@ -59,4 +59,4 @@ declare class AzureMonitorTransport implements IAsyncTransport {
59
59
  }
60
60
  //#endregion
61
61
  export { AzureMonitorTransportConfig as n, AzureMonitorTransport as t };
62
- //# sourceMappingURL=azure-monitor.transport-D5wQEH04.d.mts.map
62
+ //# sourceMappingURL=azure-monitor.transport-D7Da4RAb.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-monitor.transport-D5wQEH04.d.mts","names":[],"sources":["../src/transports/azure-monitor.transport.ts"],"sourcesContent":[],"mappings":";;;;UAkDiB,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCJ,qBAAA,YAAiC;;;;;;;;;;;;;;;;sBAmBxB;eAwBP;WAKJ;;;;;;WASM"}
1
+ {"version":3,"file":"azure-monitor.transport-D7Da4RAb.d.mts","names":[],"sources":["../src/transports/azure-monitor.transport.ts"],"sourcesContent":[],"mappings":";;;;UAkDiB,2BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCJ,qBAAA,YAAiC;;;;;;;;;;;;;;;;sBAmBxB;eAwBP;WAKJ;;;;;;WASM"}
package/dist/azure.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import "./transport.types-CtNr3D7S.mjs";
2
- import { n as AzureMonitorTransportConfig, t as AzureMonitorTransport } from "./azure-monitor.transport-D5wQEH04.mjs";
1
+ import "./transport.types-BMnurPcc.mjs";
2
+ import { n as AzureMonitorTransportConfig, t as AzureMonitorTransport } from "./azure-monitor.transport-D7Da4RAb.mjs";
3
3
  export { AzureMonitorTransport, AzureMonitorTransportConfig };
package/dist/azure.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import "./transport.types-DqVLZTyf.js";
2
- import { n as AzureMonitorTransportConfig, t as AzureMonitorTransport } from "./azure-monitor.transport-BDFO4F-i.js";
1
+ import "./transport.types-CGoHpWQR.js";
2
+ import { n as AzureMonitorTransportConfig, t as AzureMonitorTransport } from "./azure-monitor.transport-Cn_3Usvu.js";
3
3
  export { AzureMonitorTransport, AzureMonitorTransportConfig };
@@ -332,6 +332,9 @@ declare class BrowserRemoteTransport implements IBrowserTransport {
332
332
  private readonly maxBufferSize;
333
333
  private readonly headers;
334
334
  private batch;
335
+ private keepaliveSupported;
336
+ private failedFlushCount;
337
+ private lastFlushError;
335
338
  private timer;
336
339
  private droppedEntries;
337
340
  constructor(options: {
@@ -360,8 +363,14 @@ declare class BrowserRemoteTransport implements IBrowserTransport {
360
363
  * non-retryable HTTP status (a 4xx other than 429).
361
364
  */
362
365
  get dropped(): number;
366
+ /** Number of flush attempts that failed with a network error and were re-buffered. */
367
+ get failedFlushes(): number;
368
+ /** The most recent network error from a failed flush, if any. */
369
+ get lastError(): unknown;
363
370
  write(entry: BrowserLogEntry): void;
364
371
  flush(): Promise<void>;
372
+ private send;
373
+ private recordFailure;
365
374
  private scheduleFlush;
366
375
  /**
367
376
  * Stop the flush timer and flush remaining entries. Without the final flush,
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/utils/otel.ts","../src/utils/typed-logger.ts","../src/browser.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/utils/otel.ts","../src/utils/typed-logger.ts","../src/browser.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/browser.d.ts CHANGED
@@ -332,6 +332,9 @@ declare class BrowserRemoteTransport implements IBrowserTransport {
332
332
  private readonly maxBufferSize;
333
333
  private readonly headers;
334
334
  private batch;
335
+ private keepaliveSupported;
336
+ private failedFlushCount;
337
+ private lastFlushError;
335
338
  private timer;
336
339
  private droppedEntries;
337
340
  constructor(options: {
@@ -360,8 +363,14 @@ declare class BrowserRemoteTransport implements IBrowserTransport {
360
363
  * non-retryable HTTP status (a 4xx other than 429).
361
364
  */
362
365
  get dropped(): number;
366
+ /** Number of flush attempts that failed with a network error and were re-buffered. */
367
+ get failedFlushes(): number;
368
+ /** The most recent network error from a failed flush, if any. */
369
+ get lastError(): unknown;
363
370
  write(entry: BrowserLogEntry): void;
364
371
  flush(): Promise<void>;
372
+ private send;
373
+ private recordFailure;
365
374
  private scheduleFlush;
366
375
  /**
367
376
  * Stop the flush timer and flush remaining entries. Without the final flush,
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","names":[],"sources":["../src/utils/otel.ts","../src/utils/typed-logger.ts","../src/browser.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","names":[],"sources":["../src/utils/otel.ts","../src/utils/typed-logger.ts","../src/browser.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -377,6 +377,9 @@ function validateRemoteUrl(raw) {
377
377
  function byteLength(s) {
378
378
  return new TextEncoder().encode(s).length;
379
379
  }
380
+ function isKeepaliveError(error) {
381
+ return error instanceof Error && /keepalive/i.test(error.message);
382
+ }
380
383
  /**
381
384
  * Browser transport that batches log entries and sends them to a remote
382
385
  * HTTP endpoint via `fetch` (available in all modern browsers and Edge runtimes).
@@ -398,6 +401,8 @@ var BrowserRemoteTransport = class {
398
401
  constructor(options) {
399
402
  this.name = "browser-remote";
400
403
  this.batch = [];
404
+ this.keepaliveSupported = true;
405
+ this.failedFlushCount = 0;
401
406
  this.timer = null;
402
407
  this.droppedEntries = 0;
403
408
  this.url = validateRemoteUrl(options.url);
@@ -416,6 +421,14 @@ var BrowserRemoteTransport = class {
416
421
  get dropped() {
417
422
  return this.droppedEntries;
418
423
  }
424
+ /** Number of flush attempts that failed with a network error and were re-buffered. */
425
+ get failedFlushes() {
426
+ return this.failedFlushCount;
427
+ }
428
+ /** The most recent network error from a failed flush, if any. */
429
+ get lastError() {
430
+ return this.lastFlushError;
431
+ }
419
432
  write(entry) {
420
433
  this.batch.push(entry);
421
434
  while (this.batch.length > this.maxBufferSize) {
@@ -431,18 +444,20 @@ var BrowserRemoteTransport = class {
431
444
  const keepalive = byteLength(body) < 6e4;
432
445
  let res;
433
446
  try {
434
- res = await fetch(this.url, {
435
- method: "POST",
436
- headers: {
437
- "Content-Type": "application/json",
438
- ...this.headers
439
- },
440
- body,
441
- keepalive
442
- });
443
- } catch {
444
- this.batch.unshift(...entries);
445
- return;
447
+ res = await this.send(body, this.keepaliveSupported ? keepalive : void 0);
448
+ } catch (error) {
449
+ if (this.keepaliveSupported && isKeepaliveError(error)) {
450
+ this.keepaliveSupported = false;
451
+ try {
452
+ res = await this.send(body);
453
+ } catch (retryError) {
454
+ this.recordFailure(entries, retryError);
455
+ return;
456
+ }
457
+ } else {
458
+ this.recordFailure(entries, error);
459
+ return;
460
+ }
446
461
  }
447
462
  if (!res.ok) {
448
463
  if (res.status >= 500 || res.status === 429) this.batch.unshift(...entries);
@@ -451,6 +466,22 @@ var BrowserRemoteTransport = class {
451
466
  }
452
467
  }
453
468
  }
469
+ send(body, keepalive) {
470
+ return fetch(this.url, {
471
+ method: "POST",
472
+ headers: {
473
+ "Content-Type": "application/json",
474
+ ...this.headers
475
+ },
476
+ body,
477
+ ...keepalive !== void 0 ? { keepalive } : {}
478
+ });
479
+ }
480
+ recordFailure(entries, error) {
481
+ this.batch.unshift(...entries);
482
+ this.failedFlushCount += 1;
483
+ this.lastFlushError = error;
484
+ }
454
485
  scheduleFlush() {
455
486
  if (this.flushIntervalMs <= 0) return;
456
487
  if (typeof globalThis !== "undefined" && typeof globalThis["setInterval"] === "function") this.timer = setInterval(() => {