logixia 2.0.9 → 2.0.11

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 (125) hide show
  1. package/dist/{async-context-COuvmwsS.mjs → async-context-BGUCdYAa.mjs} +3 -3
  2. package/dist/{async-context-COuvmwsS.mjs.map → async-context-BGUCdYAa.mjs.map} +1 -1
  3. package/dist/{async-context-Dv0bmPC-.js → async-context-D8um9I5V.js} +3 -3
  4. package/dist/{async-context-Dv0bmPC-.js.map → async-context-D8um9I5V.js.map} +1 -1
  5. package/dist/{azure-monitor.transport-D6ryi8rA.js → azure-monitor.transport-C8KdmsSw.js} +19 -8
  6. package/dist/{azure-monitor.transport-D6ryi8rA.js.map → azure-monitor.transport-C8KdmsSw.js.map} +1 -1
  7. package/dist/{azure-monitor.transport-Coz5Gesu.mjs → azure-monitor.transport-CTnfwA0F.mjs} +19 -8
  8. package/dist/{azure-monitor.transport-Coz5Gesu.mjs.map → azure-monitor.transport-CTnfwA0F.mjs.map} +1 -1
  9. package/dist/azure.js +1 -1
  10. package/dist/azure.mjs +1 -1
  11. package/dist/{batch-buffer-CQUWDMYq.mjs → batch-buffer-BJqzpfpT.mjs} +11 -7
  12. package/dist/{batch-buffer-CQUWDMYq.mjs.map → batch-buffer-BJqzpfpT.mjs.map} +1 -1
  13. package/dist/{batch-buffer-CFzKnuNZ.js → batch-buffer-BTQdAXwC.js} +11 -7
  14. package/dist/{batch-buffer-CFzKnuNZ.js.map → batch-buffer-BTQdAXwC.js.map} +1 -1
  15. package/dist/browser.js +24 -9
  16. package/dist/browser.js.map +1 -1
  17. package/dist/browser.mjs +24 -9
  18. package/dist/browser.mjs.map +1 -1
  19. package/dist/{builder-BlIJNIuk.mjs → builder-C6kKEVrU.mjs} +154 -52
  20. package/dist/builder-C6kKEVrU.mjs.map +1 -0
  21. package/dist/{builder-Bs0qkfkY.js → builder-Up4YxX7l.js} +157 -55
  22. package/dist/builder-Up4YxX7l.js.map +1 -0
  23. package/dist/cli/index.js +21 -16
  24. package/dist/cloudwatch.js +1 -1
  25. package/dist/cloudwatch.mjs +1 -1
  26. package/dist/{cloudwatch.transport-Cr1aeTGj.mjs → cloudwatch.transport-Bl1qzdBx.mjs} +24 -9
  27. package/dist/{cloudwatch.transport-Cr1aeTGj.mjs.map → cloudwatch.transport-Bl1qzdBx.mjs.map} +1 -1
  28. package/dist/{cloudwatch.transport-D4G5xYfG.js → cloudwatch.transport-BoCyxNKO.js} +24 -9
  29. package/dist/{cloudwatch.transport-D4G5xYfG.js.map → cloudwatch.transport-BoCyxNKO.js.map} +1 -1
  30. package/dist/correlation.js +3 -3
  31. package/dist/correlation.mjs +3 -3
  32. package/dist/{coerce.utils-C1C5sIX0.js → csv.utils-CbVHY1pd.js} +24 -1
  33. package/dist/csv.utils-CbVHY1pd.js.map +1 -0
  34. package/dist/{coerce.utils-B_rEudCn.mjs → csv.utils-ZdxSod5g.mjs} +19 -2
  35. package/dist/csv.utils-ZdxSod5g.mjs.map +1 -0
  36. package/dist/{entry-fields-CVwoQplO.js → entry-fields-CJbeaoBs.js} +2 -2
  37. package/dist/{entry-fields-CVwoQplO.js.map → entry-fields-CJbeaoBs.js.map} +1 -1
  38. package/dist/{entry-fields-DNTKQxoU.mjs → entry-fields-D_aNnjg0.mjs} +2 -2
  39. package/dist/{entry-fields-DNTKQxoU.mjs.map → entry-fields-D_aNnjg0.mjs.map} +1 -1
  40. package/dist/gcp.js +1 -1
  41. package/dist/gcp.mjs +1 -1
  42. package/dist/{gcp.transport-LLK2bw2-.mjs → gcp.transport-DOH4bpWM.mjs} +18 -9
  43. package/dist/{gcp.transport-LLK2bw2-.mjs.map → gcp.transport-DOH4bpWM.mjs.map} +1 -1
  44. package/dist/{gcp.transport-CVuRpchl.js → gcp.transport-D_NHVZrw.js} +18 -9
  45. package/dist/{gcp.transport-CVuRpchl.js.map → gcp.transport-D_NHVZrw.js.map} +1 -1
  46. package/dist/index.d.mts +1 -1
  47. package/dist/index.d.mts.map +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +35 -19
  51. package/dist/index.js.map +1 -1
  52. package/dist/index.mjs +32 -16
  53. package/dist/index.mjs.map +1 -1
  54. package/dist/logitron-logger-DVUdgmBY.d.ts.map +1 -1
  55. package/dist/logitron-logger-DoWmMjYB.d.mts.map +1 -1
  56. package/dist/middleware.d.mts.map +1 -1
  57. package/dist/middleware.d.ts.map +1 -1
  58. package/dist/middleware.js +10 -6
  59. package/dist/middleware.js.map +1 -1
  60. package/dist/middleware.mjs +10 -6
  61. package/dist/middleware.mjs.map +1 -1
  62. package/dist/nest.d.mts +4 -3
  63. package/dist/nest.d.mts.map +1 -1
  64. package/dist/nest.d.ts +4 -3
  65. package/dist/nest.d.ts.map +1 -1
  66. package/dist/nest.js +41 -20
  67. package/dist/nest.js.map +1 -1
  68. package/dist/nest.mjs +39 -18
  69. package/dist/nest.mjs.map +1 -1
  70. package/dist/{otel-DOuwGPCd.mjs → otel-DAVxpArV.mjs} +135 -56
  71. package/dist/otel-DAVxpArV.mjs.map +1 -0
  72. package/dist/{otel-ChnVYRLA.js → otel-DH6-G6DR.js} +137 -58
  73. package/dist/otel-DH6-G6DR.js.map +1 -0
  74. package/dist/{request-trace-ByujsUZk.js → request-trace-C7kXMjx5.js} +5 -6
  75. package/dist/{request-trace-ByujsUZk.js.map → request-trace-C7kXMjx5.js.map} +1 -1
  76. package/dist/{request-trace-BgNykH9M.mjs → request-trace-Dekcnenb.mjs} +5 -6
  77. package/dist/{request-trace-BgNykH9M.mjs.map → request-trace-Dekcnenb.mjs.map} +1 -1
  78. package/dist/{safe-stringify-CN7icp8S.js → safe-stringify-CJisLyZ3.js} +2 -2
  79. package/dist/{safe-stringify-CN7icp8S.js.map → safe-stringify-CJisLyZ3.js.map} +1 -1
  80. package/dist/{safe-stringify--7gbe95n.mjs → safe-stringify-pZOnzGRJ.mjs} +2 -2
  81. package/dist/{safe-stringify--7gbe95n.mjs.map → safe-stringify-pZOnzGRJ.mjs.map} +1 -1
  82. package/dist/{search-DPwTKPve.d.ts → search-B4eEzrhM.d.ts} +3 -6
  83. package/dist/{search-DPwTKPve.d.ts.map → search-B4eEzrhM.d.ts.map} +1 -1
  84. package/dist/{search-CRjhHxe9.js → search-CJw_xoQl.js} +44 -35
  85. package/dist/search-CJw_xoQl.js.map +1 -0
  86. package/dist/{search-DAXKE-P9.mjs → search-CjYl-mo5.mjs} +41 -32
  87. package/dist/search-CjYl-mo5.mjs.map +1 -0
  88. package/dist/{search-D-8HJADE.d.mts → search-Crf2IEoA.d.mts} +3 -6
  89. package/dist/{search-D-8HJADE.d.mts.map → search-Crf2IEoA.d.mts.map} +1 -1
  90. package/dist/search.d.mts +1 -1
  91. package/dist/search.d.ts +1 -1
  92. package/dist/search.js +1 -1
  93. package/dist/search.mjs +1 -1
  94. package/dist/{secret-config-BvFl2dC8.js → secret-config-6hdODxBb.js} +2 -2
  95. package/dist/{secret-config-BvFl2dC8.js.map → secret-config-6hdODxBb.js.map} +1 -1
  96. package/dist/{secret-config-ByGq7kJd.mjs → secret-config-D1F4MW69.mjs} +2 -2
  97. package/dist/{secret-config-ByGq7kJd.mjs.map → secret-config-D1F4MW69.mjs.map} +1 -1
  98. package/dist/{sensitive-names-CHMowujD.js → sensitive-names-CNgHaqv9.js} +7 -1
  99. package/dist/{sensitive-names-CHMowujD.js.map → sensitive-names-CNgHaqv9.js.map} +1 -1
  100. package/dist/{sensitive-names-o__1PUUR.mjs → sensitive-names-wv27qBQC.mjs} +2 -2
  101. package/dist/{sensitive-names-o__1PUUR.mjs.map → sensitive-names-wv27qBQC.mjs.map} +1 -1
  102. package/dist/{slack.transport-zLQ9MGxS.js → slack.transport-CEYBVzUj.js} +46 -18
  103. package/dist/{slack.transport-zLQ9MGxS.js.map → slack.transport-CEYBVzUj.js.map} +1 -1
  104. package/dist/{slack.transport-CSj1j0_X.mjs → slack.transport-YvaLJxNv.mjs} +46 -18
  105. package/dist/{slack.transport-CSj1j0_X.mjs.map → slack.transport-YvaLJxNv.mjs.map} +1 -1
  106. package/dist/transports.d.mts.map +1 -1
  107. package/dist/transports.d.ts.map +1 -1
  108. package/dist/transports.js +6 -6
  109. package/dist/transports.mjs +6 -6
  110. package/dist/worker-entry.js +109 -41
  111. package/dist/worker.js +1 -1
  112. package/dist/worker.mjs +1 -1
  113. package/dist/{worker.transport-DQDv1nAJ.js → worker.transport-CwNpH98o.js} +21 -13
  114. package/dist/{worker.transport-DQDv1nAJ.js.map → worker.transport-CwNpH98o.js.map} +1 -1
  115. package/dist/{worker.transport-D78xhNhB.mjs → worker.transport-DgK_ZXlB.mjs} +21 -13
  116. package/dist/{worker.transport-D78xhNhB.mjs.map → worker.transport-DgK_ZXlB.mjs.map} +1 -1
  117. package/package.json +10 -3
  118. package/dist/builder-BlIJNIuk.mjs.map +0 -1
  119. package/dist/builder-Bs0qkfkY.js.map +0 -1
  120. package/dist/coerce.utils-B_rEudCn.mjs.map +0 -1
  121. package/dist/coerce.utils-C1C5sIX0.js.map +0 -1
  122. package/dist/otel-ChnVYRLA.js.map +0 -1
  123. package/dist/otel-DOuwGPCd.mjs.map +0 -1
  124. package/dist/search-CRjhHxe9.js.map +0 -1
  125. package/dist/search-DAXKE-P9.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gcp.transport-LLK2bw2-.mjs","names":[],"sources":["../src/transports/gcp.transport.ts"],"sourcesContent":["/**\n * logixia — Google Cloud Logging (Stackdriver) transport\n *\n * Maps logixia log entries to the GCP Logging REST API format:\n * - Maps `level` → `severity` (INFO, WARNING, ERROR, CRITICAL…)\n * - Injects `logging.googleapis.com/trace` for Cloud Trace correlation\n * - Sets `traceSampled: true` whenever a trace id is present\n * (`logging.googleapis.com/spanId` and `sourceLocation` are not populated)\n * - Supports structured `jsonPayload` and plain `textPayload`\n *\n * Auth: the metadata server on GCE/GKE/Cloud Run, or a service-account key passed\n * as `credentials`. The `GOOGLE_APPLICATION_CREDENTIALS` key-file variable is not\n * read; full ADC is not supported.\n *\n * @example\n * ```ts\n * import { createLogger } from 'logixia';\n * import { GCPTransport } from 'logixia/gcp';\n *\n * const logger = createLogger({\n * transports: {\n * custom: [\n * new GCPTransport({\n * projectId: process.env.GOOGLE_CLOUD_PROJECT,\n * logName: 'projects/my-project/logs/api',\n * resource: { type: 'gce_instance', labels: { instance_id: '123' } },\n * }),\n * ],\n * },\n * });\n * ```\n */\n\nimport * as https from 'node:https';\n\nimport type { IAsyncTransport, TransportLogEntry } from '../types/transport.types';\nimport { internalError } from '../utils/internal-log';\nimport { stringifyForLog } from '../utils/safe-stringify';\nimport {\n BatchBuffer,\n DEFAULT_MAX_BUFFER_SIZE,\n DEFAULT_REQUEST_TIMEOUT_MS,\n httpRequest,\n} from './batch-buffer';\nimport { mergeCoreFields } from './entry-fields';\nimport { protectSecrets } from './secret-config';\n\nexport interface GCPMonitoredResource {\n type: string;\n labels?: Record<string, string>;\n}\n\nexport interface GCPTransportConfig {\n /** GCP project ID. Falls back to `GOOGLE_CLOUD_PROJECT` or `GCLOUD_PROJECT` env vars. */\n projectId?: string;\n /**\n * Full log name, e.g. `'projects/my-project/logs/api'`.\n * If omitted, defaults to `projects/{projectId}/logs/logixia`.\n */\n logName?: string;\n /** Monitored resource descriptor. Defaults to `global`. */\n resource?: GCPMonitoredResource;\n /**\n * Service account key JSON (parsed). If omitted, only the metadata server\n * (GCE/GKE/Cloud Run) is tried; the key-file env var is not read.\n */\n credentials?: {\n client_email: string;\n private_key: string;\n };\n /** Number of entries to batch. @default 200 */\n batchSize?: number;\n /** Flush interval in ms. @default 5000 */\n flushIntervalMs?: number;\n /** Abort a request that has not finished after this many ms. @default 10000 */\n requestTimeoutMs?: number;\n /** Max buffered entries; the oldest are dropped past this. @default 10000 */\n maxBufferSize?: number;\n level?: string;\n}\n\ntype GcpSeverity =\n | 'DEFAULT'\n | 'DEBUG'\n | 'INFO'\n | 'NOTICE'\n | 'WARNING'\n | 'ERROR'\n | 'CRITICAL'\n | 'ALERT'\n | 'EMERGENCY';\n\nfunction toGcpSeverity(level: string): GcpSeverity {\n switch (level.toLowerCase()) {\n case 'trace':\n case 'verbose':\n case 'debug':\n return 'DEBUG';\n case 'info':\n case 'log':\n return 'INFO';\n case 'warn':\n case 'warning':\n return 'WARNING';\n case 'error':\n return 'ERROR';\n case 'critical':\n case 'fatal':\n return 'CRITICAL';\n default:\n return 'DEFAULT';\n }\n}\n\n/**\n * Google Cloud Logging transport with trace correlation and GCP severity mapping.\n */\nexport class GCPTransport implements IAsyncTransport {\n public readonly name = 'gcp';\n public readonly batchSize: number;\n public readonly flushInterval: number;\n public readonly level: string | undefined;\n\n private readonly buffer: BatchBuffer<TransportLogEntry>;\n private readonly requestTimeoutMs: number;\n private flushTimer: NodeJS.Timeout | null = null;\n private accessToken: string | null = null;\n private tokenExpiry = 0;\n\n private readonly projectId: string;\n private readonly logName: string;\n private readonly resource: GCPMonitoredResource;\n private readonly credentials: { client_email: string; private_key: string } | undefined;\n\n constructor(config: GCPTransportConfig) {\n protectSecrets(this, ['credentials', 'accessToken']);\n this.projectId =\n config.projectId ??\n process.env['GOOGLE_CLOUD_PROJECT'] ??\n process.env['GCLOUD_PROJECT'] ??\n 'unknown-project';\n this.logName = config.logName ?? `projects/${this.projectId}/logs/logixia`;\n this.resource = config.resource ?? { type: 'global' };\n this.credentials = config.credentials;\n this.batchSize = config.batchSize ?? 200;\n this.flushInterval = config.flushIntervalMs ?? 5000;\n this.level = config.level;\n this.requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n this.buffer = new BatchBuffer<TransportLogEntry>({\n name: 'GCPTransport',\n batchSize: this.batchSize,\n maxBufferSize: config.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE,\n send: (entries) => this.writeEntries(entries),\n secrets: () => this.secretValues(),\n });\n\n this.flushTimer = setInterval(() => {\n this.flush().catch(() => {});\n }, this.flushInterval);\n if (this.flushTimer.unref) this.flushTimer.unref();\n }\n\n write(entry: TransportLogEntry): void {\n this.buffer.push(entry);\n this.buffer.flushIfFull();\n }\n\n flush(): Promise<void> {\n return this.buffer.flush();\n }\n\n /**\n * Flush remaining entries and stop the interval timer on shutdown. Without\n * this the manager's close() skipped the transport (close was undefined) and\n * buffered entries were lost on deploy. Waits for any in-flight send first.\n */\n async close(): Promise<void> {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n await this.buffer.close();\n }\n\n private buildLogEntry(entry: TransportLogEntry): Record<string, unknown> {\n const gcpEntry: Record<string, unknown> = {\n logName: this.logName,\n resource: this.resource,\n severity: toGcpSeverity(entry.level),\n timestamp: entry.timestamp ?? new Date().toISOString(),\n jsonPayload: mergeCoreFields(\n { message: entry.message, appName: entry.appName, context: entry.context },\n entry.data\n ),\n };\n\n // GCP Cloud Trace correlation\n if (entry.traceId) {\n gcpEntry['trace'] = `projects/${this.projectId}/traces/${entry.traceId}`;\n gcpEntry['traceSampled'] = true;\n }\n\n return gcpEntry;\n }\n\n private async getAccessToken(): Promise<string | null> {\n if (this.accessToken && Date.now() < this.tokenExpiry) return this.accessToken;\n\n // Try ADC metadata server (GCE/GKE/Cloud Run)\n try {\n const token = await this.fetchFromMetadataServer();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000; // 55 minutes\n return this.accessToken;\n }\n } catch {\n /* fall through to service account */\n }\n\n // Try service account key\n if (this.credentials) {\n try {\n const token = await this.fetchServiceAccountToken();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000;\n return this.accessToken;\n }\n } catch (err) {\n internalError('GCPTransport service account token error', err);\n }\n }\n\n return null;\n }\n\n private fetchFromMetadataServer(): Promise<string | null> {\n return new Promise((resolve, reject) => {\n const req = https.request(\n {\n hostname: 'metadata.google.internal',\n path: '/computeMetadata/v1/instance/service-accounts/default/token',\n headers: { 'Metadata-Flavor': 'Google' },\n timeout: 3000,\n },\n (res) => {\n let raw = '';\n res.on('data', (c: Buffer) => (raw += c.toString()));\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(raw) as { access_token?: string };\n resolve(parsed.access_token ?? null);\n } catch {\n resolve(null);\n }\n } else {\n resolve(null);\n }\n });\n }\n );\n req.on('error', reject);\n req.on('timeout', () => {\n req.destroy();\n reject(new Error('metadata timeout'));\n });\n req.end();\n });\n }\n\n private fetchServiceAccountToken(): Promise<string | null> {\n // Minimal JWT creation for service account — only for environments without\n // the full Google Auth Library. For production workloads, prefer ADC.\n if (!this.credentials) return Promise.resolve(null);\n\n const iat = Math.floor(Date.now() / 1000);\n const exp = iat + 3600;\n const scope = 'https://www.googleapis.com/auth/logging.write';\n\n const header = Buffer.from(JSON.stringify({ alg: 'RS256', typ: 'JWT' })).toString('base64url');\n const payload = Buffer.from(\n JSON.stringify({\n iss: this.credentials.client_email,\n scope,\n aud: 'https://oauth2.googleapis.com/token',\n exp,\n iat,\n })\n ).toString('base64url');\n\n const signingInput = `${header}.${payload}`;\n\n let signature: string;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const sign = require('node:crypto').createSign('RSA-SHA256');\n sign.update(signingInput);\n signature = sign.sign(this.credentials.private_key, 'base64url') as string;\n } catch {\n return Promise.resolve(null);\n }\n\n const jwt = `${signingInput}.${signature}`;\n const body = `grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=${jwt}`;\n\n return httpRequest({\n url: new URL('https://oauth2.googleapis.com/token'),\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP token request',\n }).then(\n (res) => (JSON.parse(res.body) as { access_token?: string }).access_token ?? null,\n () => null\n );\n }\n\n private secretValues(token?: string): (string | undefined)[] {\n return [\n ...(this.credentials?.private_key.split('\\n') ?? []),\n this.credentials?.private_key,\n this.accessToken ?? undefined,\n token,\n ];\n }\n\n private async writeEntries(entries: TransportLogEntry[]): Promise<void> {\n const token = await this.getAccessToken();\n if (!token) {\n throw new Error('GCPTransport: no access token available');\n }\n\n const body = stringifyForLog({\n logName: this.logName,\n resource: this.resource,\n entries: entries.map((e) => this.buildLogEntry(e)),\n });\n\n await httpRequest({\n url: new URL('https://logging.googleapis.com/v2/entries:write'),\n headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP Logging API',\n secrets: () => this.secretValues(token),\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"gcp.transport-DOH4bpWM.mjs","names":[],"sources":["../src/transports/gcp.transport.ts"],"sourcesContent":["/**\n * logixia — Google Cloud Logging (Stackdriver) transport\n *\n * Maps logixia log entries to the GCP Logging REST API format:\n * - Maps `level` → `severity` (INFO, WARNING, ERROR, CRITICAL…)\n * - Injects `logging.googleapis.com/trace` for Cloud Trace correlation\n * - Sets `traceSampled: true` whenever a trace id is present\n * (`logging.googleapis.com/spanId` and `sourceLocation` are not populated)\n * - Supports structured `jsonPayload` and plain `textPayload`\n *\n * Auth: the metadata server on GCE/GKE/Cloud Run, or a service-account key passed\n * as `credentials`. The `GOOGLE_APPLICATION_CREDENTIALS` key-file variable is not\n * read; full ADC is not supported.\n *\n * @example\n * ```ts\n * import { createLogger } from 'logixia';\n * import { GCPTransport } from 'logixia/gcp';\n *\n * const logger = createLogger({\n * transports: {\n * custom: [\n * new GCPTransport({\n * projectId: process.env.GOOGLE_CLOUD_PROJECT,\n * logName: 'projects/my-project/logs/api',\n * resource: { type: 'gce_instance', labels: { instance_id: '123' } },\n * }),\n * ],\n * },\n * });\n * ```\n */\n\nimport * as https from 'node:https';\n\nimport type { IAsyncTransport, TransportLogEntry } from '../types/transport.types';\nimport { internalError } from '../utils/internal-log';\nimport { stringifyForLog } from '../utils/safe-stringify';\nimport {\n BatchBuffer,\n DEFAULT_MAX_BUFFER_SIZE,\n DEFAULT_REQUEST_TIMEOUT_MS,\n httpRequest,\n} from './batch-buffer';\nimport { mergeCoreFields } from './entry-fields';\nimport { protectSecrets } from './secret-config';\n\nexport interface GCPMonitoredResource {\n type: string;\n labels?: Record<string, string>;\n}\n\nexport interface GCPTransportConfig {\n /** GCP project ID. Falls back to `GOOGLE_CLOUD_PROJECT` or `GCLOUD_PROJECT` env vars. */\n projectId?: string;\n /**\n * Full log name, e.g. `'projects/my-project/logs/api'`.\n * If omitted, defaults to `projects/{projectId}/logs/logixia`.\n */\n logName?: string;\n /** Monitored resource descriptor. Defaults to `global`. */\n resource?: GCPMonitoredResource;\n /**\n * Service account key JSON (parsed). If omitted, only the metadata server\n * (GCE/GKE/Cloud Run) is tried; the key-file env var is not read.\n */\n credentials?: {\n client_email: string;\n private_key: string;\n };\n /** Number of entries to batch. @default 200 */\n batchSize?: number;\n /** Flush interval in ms. @default 5000 */\n flushIntervalMs?: number;\n /** Abort a request that has not finished after this many ms. @default 10000 */\n requestTimeoutMs?: number;\n /** Max buffered entries; the oldest are dropped past this. @default 10000 */\n maxBufferSize?: number;\n level?: string;\n}\n\ntype GcpSeverity =\n | 'DEFAULT'\n | 'DEBUG'\n | 'INFO'\n | 'NOTICE'\n | 'WARNING'\n | 'ERROR'\n | 'CRITICAL'\n | 'ALERT'\n | 'EMERGENCY';\n\nfunction toGcpSeverity(level: string): GcpSeverity {\n switch (level.toLowerCase()) {\n case 'trace':\n case 'verbose':\n case 'debug':\n return 'DEBUG';\n case 'info':\n case 'log':\n return 'INFO';\n case 'warn':\n case 'warning':\n return 'WARNING';\n case 'error':\n return 'ERROR';\n case 'critical':\n case 'fatal':\n return 'CRITICAL';\n default:\n return 'DEFAULT';\n }\n}\n\n/**\n * Google Cloud Logging transport with trace correlation and GCP severity mapping.\n */\nexport class GCPTransport implements IAsyncTransport {\n public readonly name = 'gcp';\n public readonly batchSize: number;\n public readonly flushInterval: number;\n public readonly level: string | undefined;\n\n private readonly buffer: BatchBuffer<TransportLogEntry>;\n private readonly requestTimeoutMs: number;\n private flushTimer: NodeJS.Timeout | null = null;\n private accessToken: string | null = null;\n private tokenExpiry = 0;\n\n private readonly projectId: string;\n private readonly logName: string;\n private readonly resource: GCPMonitoredResource;\n private readonly credentials: { client_email: string; private_key: string } | undefined;\n\n constructor(config: GCPTransportConfig) {\n protectSecrets(this, ['credentials', 'accessToken']);\n this.projectId =\n config.projectId ??\n process.env['GOOGLE_CLOUD_PROJECT'] ??\n process.env['GCLOUD_PROJECT'] ??\n 'unknown-project';\n this.logName = config.logName ?? `projects/${this.projectId}/logs/logixia`;\n this.resource = config.resource ?? { type: 'global' };\n this.credentials = config.credentials;\n this.batchSize = config.batchSize ?? 200;\n this.flushInterval = config.flushIntervalMs ?? 5000;\n this.level = config.level;\n this.requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n this.buffer = new BatchBuffer<TransportLogEntry>({\n name: 'GCPTransport',\n batchSize: this.batchSize,\n maxBufferSize: config.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE,\n send: (entries) => this.writeEntries(entries),\n secrets: () => this.secretValues(),\n });\n\n this.flushTimer = setInterval(() => {\n this.flush().catch(() => {});\n }, this.flushInterval);\n if (this.flushTimer.unref) this.flushTimer.unref();\n }\n\n write(entry: TransportLogEntry): void {\n this.buffer.push(entry);\n this.buffer.flushIfFull();\n }\n\n flush(): Promise<void> {\n return this.buffer.flush();\n }\n\n /**\n * Flush remaining entries and stop the interval timer on shutdown. Without\n * this the manager's close() skipped the transport (close was undefined) and\n * buffered entries were lost on deploy. Waits for any in-flight send first.\n */\n async close(): Promise<void> {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n await this.buffer.close();\n }\n\n private buildLogEntry(entry: TransportLogEntry): Record<string, unknown> {\n const gcpEntry: Record<string, unknown> = {\n logName: this.logName,\n resource: this.resource,\n severity: toGcpSeverity(entry.level),\n timestamp: entry.timestamp ?? new Date().toISOString(),\n jsonPayload: mergeCoreFields(\n { message: entry.message, appName: entry.appName, context: entry.context },\n entry.data\n ),\n };\n\n // GCP Cloud Trace correlation\n if (entry.traceId) {\n gcpEntry['trace'] = `projects/${this.projectId}/traces/${entry.traceId}`;\n gcpEntry['traceSampled'] = true;\n }\n\n return gcpEntry;\n }\n\n private async getAccessToken(): Promise<string | null> {\n if (this.accessToken && Date.now() < this.tokenExpiry) return this.accessToken;\n\n // Try ADC metadata server (GCE/GKE/Cloud Run)\n try {\n const token = await this.fetchFromMetadataServer();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000; // 55 minutes\n return this.accessToken;\n }\n } catch {\n /* fall through to service account */\n }\n\n // Try service account key\n if (this.credentials) {\n try {\n const token = await this.fetchServiceAccountToken();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000;\n return this.accessToken;\n }\n } catch (err) {\n internalError('GCPTransport service account token error', err);\n }\n }\n\n return null;\n }\n\n private fetchFromMetadataServer(): Promise<string | null> {\n return new Promise((resolve, reject) => {\n const req = https.request(\n {\n hostname: 'metadata.google.internal',\n path: '/computeMetadata/v1/instance/service-accounts/default/token',\n headers: { 'Metadata-Flavor': 'Google' },\n timeout: 3000,\n },\n (res) => {\n let raw = '';\n res.on('data', (c: Buffer) => (raw += c.toString()));\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(raw) as { access_token?: string };\n resolve(parsed.access_token ?? null);\n } catch {\n resolve(null);\n }\n } else {\n resolve(null);\n }\n });\n }\n );\n req.on('error', reject);\n req.on('timeout', () => {\n req.destroy();\n reject(new Error('metadata timeout'));\n });\n req.end();\n });\n }\n\n private fetchServiceAccountToken(): Promise<string | null> {\n // Minimal JWT creation for service account — only for environments without\n // the full Google Auth Library. For production workloads, prefer ADC.\n if (!this.credentials) return Promise.resolve(null);\n\n const iat = Math.floor(Date.now() / 1000);\n const exp = iat + 3600;\n const scope = 'https://www.googleapis.com/auth/logging.write';\n\n const header = Buffer.from(JSON.stringify({ alg: 'RS256', typ: 'JWT' })).toString('base64url');\n const payload = Buffer.from(\n JSON.stringify({\n iss: this.credentials.client_email,\n scope,\n aud: 'https://oauth2.googleapis.com/token',\n exp,\n iat,\n })\n ).toString('base64url');\n\n const signingInput = `${header}.${payload}`;\n\n let signature: string;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const sign = require('node:crypto').createSign('RSA-SHA256');\n sign.update(signingInput);\n signature = sign.sign(this.credentials.private_key, 'base64url') as string;\n } catch {\n return Promise.resolve(null);\n }\n\n const jwt = `${signingInput}.${signature}`;\n const body = `grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=${jwt}`;\n\n return httpRequest({\n url: new URL('https://oauth2.googleapis.com/token'),\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP token request',\n }).then(\n (res) => (JSON.parse(res.body) as { access_token?: string }).access_token ?? null,\n () => null\n );\n }\n\n private secretValues(token?: string): (string | undefined)[] {\n return [\n ...(this.credentials?.private_key.split('\\n') ?? []),\n this.credentials?.private_key,\n this.accessToken ?? undefined,\n token,\n ];\n }\n\n private async writeEntries(entries: TransportLogEntry[]): Promise<void> {\n const token = await this.getAccessToken();\n if (!token) {\n throw new Error('GCPTransport: no access token available');\n }\n\n const body = stringifyForLog({\n logName: this.logName,\n resource: this.resource,\n entries: entries.map((e) => this.buildLogEntry(e)),\n });\n\n await httpRequest({\n url: new URL('https://logging.googleapis.com/v2/entries:write'),\n headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP Logging API',\n secrets: () => this.secretValues(token),\n });\n }\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- const require_secret_config = require("./secret-config-BvFl2dC8.js");
1
+ const require_secret_config = require("./secret-config-6hdODxBb.js");
2
2
  const require_internal_log = require("./internal-log-DwqTjhpb.js");
3
- const require_safe_stringify = require("./safe-stringify-CN7icp8S.js");
4
- const require_entry_fields = require("./entry-fields-CVwoQplO.js");
5
- const require_batch_buffer = require("./batch-buffer-CFzKnuNZ.js");
3
+ const require_safe_stringify = require("./safe-stringify-CJisLyZ3.js");
4
+ const require_entry_fields = require("./entry-fields-CJbeaoBs.js");
5
+ const require_batch_buffer = require("./batch-buffer-BTQdAXwC.js");
6
6
  let node_https = require("node:https");
7
7
  node_https = require_secret_config.__toESM(node_https);
8
8
  // src/transports/gcp.transport.ts
@@ -57,11 +57,20 @@ function toGcpSeverity(level) {
57
57
  * Google Cloud Logging transport with trace correlation and GCP severity mapping.
58
58
  */
59
59
  var GCPTransport = class {
60
+ name = "gcp";
61
+ batchSize;
62
+ flushInterval;
63
+ level;
64
+ buffer;
65
+ requestTimeoutMs;
66
+ flushTimer = null;
67
+ accessToken = null;
68
+ tokenExpiry = 0;
69
+ projectId;
70
+ logName;
71
+ resource;
72
+ credentials;
60
73
  constructor(config) {
61
- this.name = "gcp";
62
- this.flushTimer = null;
63
- this.accessToken = null;
64
- this.tokenExpiry = 0;
65
74
  require_secret_config.protectSecrets(this, ["credentials", "accessToken"]);
66
75
  this.projectId = config.projectId ?? process.env["GOOGLE_CLOUD_PROJECT"] ?? process.env["GCLOUD_PROJECT"] ?? "unknown-project";
67
76
  this.logName = config.logName ?? `projects/${this.projectId}/logs/logixia`;
@@ -237,4 +246,4 @@ Object.defineProperty(exports, "GCPTransport", {
237
246
  }
238
247
  });
239
248
 
240
- //# sourceMappingURL=gcp.transport-CVuRpchl.js.map
249
+ //# sourceMappingURL=gcp.transport-D_NHVZrw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcp.transport-CVuRpchl.js","names":["BatchBuffer","mergeCoreFields","https","httpRequest","stringifyForLog"],"sources":["../src/transports/gcp.transport.ts"],"sourcesContent":["/**\n * logixia — Google Cloud Logging (Stackdriver) transport\n *\n * Maps logixia log entries to the GCP Logging REST API format:\n * - Maps `level` → `severity` (INFO, WARNING, ERROR, CRITICAL…)\n * - Injects `logging.googleapis.com/trace` for Cloud Trace correlation\n * - Sets `traceSampled: true` whenever a trace id is present\n * (`logging.googleapis.com/spanId` and `sourceLocation` are not populated)\n * - Supports structured `jsonPayload` and plain `textPayload`\n *\n * Auth: the metadata server on GCE/GKE/Cloud Run, or a service-account key passed\n * as `credentials`. The `GOOGLE_APPLICATION_CREDENTIALS` key-file variable is not\n * read; full ADC is not supported.\n *\n * @example\n * ```ts\n * import { createLogger } from 'logixia';\n * import { GCPTransport } from 'logixia/gcp';\n *\n * const logger = createLogger({\n * transports: {\n * custom: [\n * new GCPTransport({\n * projectId: process.env.GOOGLE_CLOUD_PROJECT,\n * logName: 'projects/my-project/logs/api',\n * resource: { type: 'gce_instance', labels: { instance_id: '123' } },\n * }),\n * ],\n * },\n * });\n * ```\n */\n\nimport * as https from 'node:https';\n\nimport type { IAsyncTransport, TransportLogEntry } from '../types/transport.types';\nimport { internalError } from '../utils/internal-log';\nimport { stringifyForLog } from '../utils/safe-stringify';\nimport {\n BatchBuffer,\n DEFAULT_MAX_BUFFER_SIZE,\n DEFAULT_REQUEST_TIMEOUT_MS,\n httpRequest,\n} from './batch-buffer';\nimport { mergeCoreFields } from './entry-fields';\nimport { protectSecrets } from './secret-config';\n\nexport interface GCPMonitoredResource {\n type: string;\n labels?: Record<string, string>;\n}\n\nexport interface GCPTransportConfig {\n /** GCP project ID. Falls back to `GOOGLE_CLOUD_PROJECT` or `GCLOUD_PROJECT` env vars. */\n projectId?: string;\n /**\n * Full log name, e.g. `'projects/my-project/logs/api'`.\n * If omitted, defaults to `projects/{projectId}/logs/logixia`.\n */\n logName?: string;\n /** Monitored resource descriptor. Defaults to `global`. */\n resource?: GCPMonitoredResource;\n /**\n * Service account key JSON (parsed). If omitted, only the metadata server\n * (GCE/GKE/Cloud Run) is tried; the key-file env var is not read.\n */\n credentials?: {\n client_email: string;\n private_key: string;\n };\n /** Number of entries to batch. @default 200 */\n batchSize?: number;\n /** Flush interval in ms. @default 5000 */\n flushIntervalMs?: number;\n /** Abort a request that has not finished after this many ms. @default 10000 */\n requestTimeoutMs?: number;\n /** Max buffered entries; the oldest are dropped past this. @default 10000 */\n maxBufferSize?: number;\n level?: string;\n}\n\ntype GcpSeverity =\n | 'DEFAULT'\n | 'DEBUG'\n | 'INFO'\n | 'NOTICE'\n | 'WARNING'\n | 'ERROR'\n | 'CRITICAL'\n | 'ALERT'\n | 'EMERGENCY';\n\nfunction toGcpSeverity(level: string): GcpSeverity {\n switch (level.toLowerCase()) {\n case 'trace':\n case 'verbose':\n case 'debug':\n return 'DEBUG';\n case 'info':\n case 'log':\n return 'INFO';\n case 'warn':\n case 'warning':\n return 'WARNING';\n case 'error':\n return 'ERROR';\n case 'critical':\n case 'fatal':\n return 'CRITICAL';\n default:\n return 'DEFAULT';\n }\n}\n\n/**\n * Google Cloud Logging transport with trace correlation and GCP severity mapping.\n */\nexport class GCPTransport implements IAsyncTransport {\n public readonly name = 'gcp';\n public readonly batchSize: number;\n public readonly flushInterval: number;\n public readonly level: string | undefined;\n\n private readonly buffer: BatchBuffer<TransportLogEntry>;\n private readonly requestTimeoutMs: number;\n private flushTimer: NodeJS.Timeout | null = null;\n private accessToken: string | null = null;\n private tokenExpiry = 0;\n\n private readonly projectId: string;\n private readonly logName: string;\n private readonly resource: GCPMonitoredResource;\n private readonly credentials: { client_email: string; private_key: string } | undefined;\n\n constructor(config: GCPTransportConfig) {\n protectSecrets(this, ['credentials', 'accessToken']);\n this.projectId =\n config.projectId ??\n process.env['GOOGLE_CLOUD_PROJECT'] ??\n process.env['GCLOUD_PROJECT'] ??\n 'unknown-project';\n this.logName = config.logName ?? `projects/${this.projectId}/logs/logixia`;\n this.resource = config.resource ?? { type: 'global' };\n this.credentials = config.credentials;\n this.batchSize = config.batchSize ?? 200;\n this.flushInterval = config.flushIntervalMs ?? 5000;\n this.level = config.level;\n this.requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n this.buffer = new BatchBuffer<TransportLogEntry>({\n name: 'GCPTransport',\n batchSize: this.batchSize,\n maxBufferSize: config.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE,\n send: (entries) => this.writeEntries(entries),\n secrets: () => this.secretValues(),\n });\n\n this.flushTimer = setInterval(() => {\n this.flush().catch(() => {});\n }, this.flushInterval);\n if (this.flushTimer.unref) this.flushTimer.unref();\n }\n\n write(entry: TransportLogEntry): void {\n this.buffer.push(entry);\n this.buffer.flushIfFull();\n }\n\n flush(): Promise<void> {\n return this.buffer.flush();\n }\n\n /**\n * Flush remaining entries and stop the interval timer on shutdown. Without\n * this the manager's close() skipped the transport (close was undefined) and\n * buffered entries were lost on deploy. Waits for any in-flight send first.\n */\n async close(): Promise<void> {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n await this.buffer.close();\n }\n\n private buildLogEntry(entry: TransportLogEntry): Record<string, unknown> {\n const gcpEntry: Record<string, unknown> = {\n logName: this.logName,\n resource: this.resource,\n severity: toGcpSeverity(entry.level),\n timestamp: entry.timestamp ?? new Date().toISOString(),\n jsonPayload: mergeCoreFields(\n { message: entry.message, appName: entry.appName, context: entry.context },\n entry.data\n ),\n };\n\n // GCP Cloud Trace correlation\n if (entry.traceId) {\n gcpEntry['trace'] = `projects/${this.projectId}/traces/${entry.traceId}`;\n gcpEntry['traceSampled'] = true;\n }\n\n return gcpEntry;\n }\n\n private async getAccessToken(): Promise<string | null> {\n if (this.accessToken && Date.now() < this.tokenExpiry) return this.accessToken;\n\n // Try ADC metadata server (GCE/GKE/Cloud Run)\n try {\n const token = await this.fetchFromMetadataServer();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000; // 55 minutes\n return this.accessToken;\n }\n } catch {\n /* fall through to service account */\n }\n\n // Try service account key\n if (this.credentials) {\n try {\n const token = await this.fetchServiceAccountToken();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000;\n return this.accessToken;\n }\n } catch (err) {\n internalError('GCPTransport service account token error', err);\n }\n }\n\n return null;\n }\n\n private fetchFromMetadataServer(): Promise<string | null> {\n return new Promise((resolve, reject) => {\n const req = https.request(\n {\n hostname: 'metadata.google.internal',\n path: '/computeMetadata/v1/instance/service-accounts/default/token',\n headers: { 'Metadata-Flavor': 'Google' },\n timeout: 3000,\n },\n (res) => {\n let raw = '';\n res.on('data', (c: Buffer) => (raw += c.toString()));\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(raw) as { access_token?: string };\n resolve(parsed.access_token ?? null);\n } catch {\n resolve(null);\n }\n } else {\n resolve(null);\n }\n });\n }\n );\n req.on('error', reject);\n req.on('timeout', () => {\n req.destroy();\n reject(new Error('metadata timeout'));\n });\n req.end();\n });\n }\n\n private fetchServiceAccountToken(): Promise<string | null> {\n // Minimal JWT creation for service account — only for environments without\n // the full Google Auth Library. For production workloads, prefer ADC.\n if (!this.credentials) return Promise.resolve(null);\n\n const iat = Math.floor(Date.now() / 1000);\n const exp = iat + 3600;\n const scope = 'https://www.googleapis.com/auth/logging.write';\n\n const header = Buffer.from(JSON.stringify({ alg: 'RS256', typ: 'JWT' })).toString('base64url');\n const payload = Buffer.from(\n JSON.stringify({\n iss: this.credentials.client_email,\n scope,\n aud: 'https://oauth2.googleapis.com/token',\n exp,\n iat,\n })\n ).toString('base64url');\n\n const signingInput = `${header}.${payload}`;\n\n let signature: string;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const sign = require('node:crypto').createSign('RSA-SHA256');\n sign.update(signingInput);\n signature = sign.sign(this.credentials.private_key, 'base64url') as string;\n } catch {\n return Promise.resolve(null);\n }\n\n const jwt = `${signingInput}.${signature}`;\n const body = `grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=${jwt}`;\n\n return httpRequest({\n url: new URL('https://oauth2.googleapis.com/token'),\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP token request',\n }).then(\n (res) => (JSON.parse(res.body) as { access_token?: string }).access_token ?? null,\n () => null\n );\n }\n\n private secretValues(token?: string): (string | undefined)[] {\n return [\n ...(this.credentials?.private_key.split('\\n') ?? []),\n this.credentials?.private_key,\n this.accessToken ?? undefined,\n token,\n ];\n }\n\n private async writeEntries(entries: TransportLogEntry[]): Promise<void> {\n const token = await this.getAccessToken();\n if (!token) {\n throw new Error('GCPTransport: no access token available');\n }\n\n const body = stringifyForLog({\n logName: this.logName,\n resource: this.resource,\n entries: entries.map((e) => this.buildLogEntry(e)),\n });\n\n await httpRequest({\n url: new URL('https://logging.googleapis.com/v2/entries:write'),\n headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP Logging API',\n secrets: () => this.secretValues(token),\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"gcp.transport-D_NHVZrw.js","names":["BatchBuffer","mergeCoreFields","https","httpRequest","stringifyForLog"],"sources":["../src/transports/gcp.transport.ts"],"sourcesContent":["/**\n * logixia — Google Cloud Logging (Stackdriver) transport\n *\n * Maps logixia log entries to the GCP Logging REST API format:\n * - Maps `level` → `severity` (INFO, WARNING, ERROR, CRITICAL…)\n * - Injects `logging.googleapis.com/trace` for Cloud Trace correlation\n * - Sets `traceSampled: true` whenever a trace id is present\n * (`logging.googleapis.com/spanId` and `sourceLocation` are not populated)\n * - Supports structured `jsonPayload` and plain `textPayload`\n *\n * Auth: the metadata server on GCE/GKE/Cloud Run, or a service-account key passed\n * as `credentials`. The `GOOGLE_APPLICATION_CREDENTIALS` key-file variable is not\n * read; full ADC is not supported.\n *\n * @example\n * ```ts\n * import { createLogger } from 'logixia';\n * import { GCPTransport } from 'logixia/gcp';\n *\n * const logger = createLogger({\n * transports: {\n * custom: [\n * new GCPTransport({\n * projectId: process.env.GOOGLE_CLOUD_PROJECT,\n * logName: 'projects/my-project/logs/api',\n * resource: { type: 'gce_instance', labels: { instance_id: '123' } },\n * }),\n * ],\n * },\n * });\n * ```\n */\n\nimport * as https from 'node:https';\n\nimport type { IAsyncTransport, TransportLogEntry } from '../types/transport.types';\nimport { internalError } from '../utils/internal-log';\nimport { stringifyForLog } from '../utils/safe-stringify';\nimport {\n BatchBuffer,\n DEFAULT_MAX_BUFFER_SIZE,\n DEFAULT_REQUEST_TIMEOUT_MS,\n httpRequest,\n} from './batch-buffer';\nimport { mergeCoreFields } from './entry-fields';\nimport { protectSecrets } from './secret-config';\n\nexport interface GCPMonitoredResource {\n type: string;\n labels?: Record<string, string>;\n}\n\nexport interface GCPTransportConfig {\n /** GCP project ID. Falls back to `GOOGLE_CLOUD_PROJECT` or `GCLOUD_PROJECT` env vars. */\n projectId?: string;\n /**\n * Full log name, e.g. `'projects/my-project/logs/api'`.\n * If omitted, defaults to `projects/{projectId}/logs/logixia`.\n */\n logName?: string;\n /** Monitored resource descriptor. Defaults to `global`. */\n resource?: GCPMonitoredResource;\n /**\n * Service account key JSON (parsed). If omitted, only the metadata server\n * (GCE/GKE/Cloud Run) is tried; the key-file env var is not read.\n */\n credentials?: {\n client_email: string;\n private_key: string;\n };\n /** Number of entries to batch. @default 200 */\n batchSize?: number;\n /** Flush interval in ms. @default 5000 */\n flushIntervalMs?: number;\n /** Abort a request that has not finished after this many ms. @default 10000 */\n requestTimeoutMs?: number;\n /** Max buffered entries; the oldest are dropped past this. @default 10000 */\n maxBufferSize?: number;\n level?: string;\n}\n\ntype GcpSeverity =\n | 'DEFAULT'\n | 'DEBUG'\n | 'INFO'\n | 'NOTICE'\n | 'WARNING'\n | 'ERROR'\n | 'CRITICAL'\n | 'ALERT'\n | 'EMERGENCY';\n\nfunction toGcpSeverity(level: string): GcpSeverity {\n switch (level.toLowerCase()) {\n case 'trace':\n case 'verbose':\n case 'debug':\n return 'DEBUG';\n case 'info':\n case 'log':\n return 'INFO';\n case 'warn':\n case 'warning':\n return 'WARNING';\n case 'error':\n return 'ERROR';\n case 'critical':\n case 'fatal':\n return 'CRITICAL';\n default:\n return 'DEFAULT';\n }\n}\n\n/**\n * Google Cloud Logging transport with trace correlation and GCP severity mapping.\n */\nexport class GCPTransport implements IAsyncTransport {\n public readonly name = 'gcp';\n public readonly batchSize: number;\n public readonly flushInterval: number;\n public readonly level: string | undefined;\n\n private readonly buffer: BatchBuffer<TransportLogEntry>;\n private readonly requestTimeoutMs: number;\n private flushTimer: NodeJS.Timeout | null = null;\n private accessToken: string | null = null;\n private tokenExpiry = 0;\n\n private readonly projectId: string;\n private readonly logName: string;\n private readonly resource: GCPMonitoredResource;\n private readonly credentials: { client_email: string; private_key: string } | undefined;\n\n constructor(config: GCPTransportConfig) {\n protectSecrets(this, ['credentials', 'accessToken']);\n this.projectId =\n config.projectId ??\n process.env['GOOGLE_CLOUD_PROJECT'] ??\n process.env['GCLOUD_PROJECT'] ??\n 'unknown-project';\n this.logName = config.logName ?? `projects/${this.projectId}/logs/logixia`;\n this.resource = config.resource ?? { type: 'global' };\n this.credentials = config.credentials;\n this.batchSize = config.batchSize ?? 200;\n this.flushInterval = config.flushIntervalMs ?? 5000;\n this.level = config.level;\n this.requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n this.buffer = new BatchBuffer<TransportLogEntry>({\n name: 'GCPTransport',\n batchSize: this.batchSize,\n maxBufferSize: config.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE,\n send: (entries) => this.writeEntries(entries),\n secrets: () => this.secretValues(),\n });\n\n this.flushTimer = setInterval(() => {\n this.flush().catch(() => {});\n }, this.flushInterval);\n if (this.flushTimer.unref) this.flushTimer.unref();\n }\n\n write(entry: TransportLogEntry): void {\n this.buffer.push(entry);\n this.buffer.flushIfFull();\n }\n\n flush(): Promise<void> {\n return this.buffer.flush();\n }\n\n /**\n * Flush remaining entries and stop the interval timer on shutdown. Without\n * this the manager's close() skipped the transport (close was undefined) and\n * buffered entries were lost on deploy. Waits for any in-flight send first.\n */\n async close(): Promise<void> {\n if (this.flushTimer) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n await this.buffer.close();\n }\n\n private buildLogEntry(entry: TransportLogEntry): Record<string, unknown> {\n const gcpEntry: Record<string, unknown> = {\n logName: this.logName,\n resource: this.resource,\n severity: toGcpSeverity(entry.level),\n timestamp: entry.timestamp ?? new Date().toISOString(),\n jsonPayload: mergeCoreFields(\n { message: entry.message, appName: entry.appName, context: entry.context },\n entry.data\n ),\n };\n\n // GCP Cloud Trace correlation\n if (entry.traceId) {\n gcpEntry['trace'] = `projects/${this.projectId}/traces/${entry.traceId}`;\n gcpEntry['traceSampled'] = true;\n }\n\n return gcpEntry;\n }\n\n private async getAccessToken(): Promise<string | null> {\n if (this.accessToken && Date.now() < this.tokenExpiry) return this.accessToken;\n\n // Try ADC metadata server (GCE/GKE/Cloud Run)\n try {\n const token = await this.fetchFromMetadataServer();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000; // 55 minutes\n return this.accessToken;\n }\n } catch {\n /* fall through to service account */\n }\n\n // Try service account key\n if (this.credentials) {\n try {\n const token = await this.fetchServiceAccountToken();\n if (token) {\n this.accessToken = token;\n this.tokenExpiry = Date.now() + 55 * 60 * 1000;\n return this.accessToken;\n }\n } catch (err) {\n internalError('GCPTransport service account token error', err);\n }\n }\n\n return null;\n }\n\n private fetchFromMetadataServer(): Promise<string | null> {\n return new Promise((resolve, reject) => {\n const req = https.request(\n {\n hostname: 'metadata.google.internal',\n path: '/computeMetadata/v1/instance/service-accounts/default/token',\n headers: { 'Metadata-Flavor': 'Google' },\n timeout: 3000,\n },\n (res) => {\n let raw = '';\n res.on('data', (c: Buffer) => (raw += c.toString()));\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(raw) as { access_token?: string };\n resolve(parsed.access_token ?? null);\n } catch {\n resolve(null);\n }\n } else {\n resolve(null);\n }\n });\n }\n );\n req.on('error', reject);\n req.on('timeout', () => {\n req.destroy();\n reject(new Error('metadata timeout'));\n });\n req.end();\n });\n }\n\n private fetchServiceAccountToken(): Promise<string | null> {\n // Minimal JWT creation for service account — only for environments without\n // the full Google Auth Library. For production workloads, prefer ADC.\n if (!this.credentials) return Promise.resolve(null);\n\n const iat = Math.floor(Date.now() / 1000);\n const exp = iat + 3600;\n const scope = 'https://www.googleapis.com/auth/logging.write';\n\n const header = Buffer.from(JSON.stringify({ alg: 'RS256', typ: 'JWT' })).toString('base64url');\n const payload = Buffer.from(\n JSON.stringify({\n iss: this.credentials.client_email,\n scope,\n aud: 'https://oauth2.googleapis.com/token',\n exp,\n iat,\n })\n ).toString('base64url');\n\n const signingInput = `${header}.${payload}`;\n\n let signature: string;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const sign = require('node:crypto').createSign('RSA-SHA256');\n sign.update(signingInput);\n signature = sign.sign(this.credentials.private_key, 'base64url') as string;\n } catch {\n return Promise.resolve(null);\n }\n\n const jwt = `${signingInput}.${signature}`;\n const body = `grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=${jwt}`;\n\n return httpRequest({\n url: new URL('https://oauth2.googleapis.com/token'),\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP token request',\n }).then(\n (res) => (JSON.parse(res.body) as { access_token?: string }).access_token ?? null,\n () => null\n );\n }\n\n private secretValues(token?: string): (string | undefined)[] {\n return [\n ...(this.credentials?.private_key.split('\\n') ?? []),\n this.credentials?.private_key,\n this.accessToken ?? undefined,\n token,\n ];\n }\n\n private async writeEntries(entries: TransportLogEntry[]): Promise<void> {\n const token = await this.getAccessToken();\n if (!token) {\n throw new Error('GCPTransport: no access token available');\n }\n\n const body = stringifyForLog({\n logName: this.logName,\n resource: this.resource,\n entries: entries.map((e) => this.buildLogEntry(e)),\n });\n\n await httpRequest({\n url: new URL('https://logging.googleapis.com/v2/entries:write'),\n headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },\n body,\n timeoutMs: this.requestTimeoutMs,\n label: 'GCP Logging API',\n secrets: () => this.secretValues(token),\n });\n }\n}\n"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -3,7 +3,7 @@ import { n as HttpResponseShape, t as HttpRequestShape } from "./http-shapes-BnB
3
3
  import { A as TraceIdConfig, B as usePlugin, C as LogixiaLoggerInstance, D as ReservedLevelName, E as RequestContext, F as RequestMetrics, I as RequestTiming, L as LogixiaPlugin, M as HttpError, N as HttpRequest, O as SamplingConfig, P as HttpResponse, R as PluginRegistry, S as LogixiaLoggerDefault, T as RedactConfig, _ as LogFieldKey, a as DEFAULT_LOG_LEVELS, b as LoggerConfig, c as ExtractLevels, d as ILogFormatter, f as ILogger, g as LogEntry, h as LogColor, i as DEFAULT_LOG_COLORS, j as TraceIdExtractorConfig, k as TimingEntry, l as GracefulShutdownConfig, m as ILoggerRuntimeControls, n as ContextData, o as Environment, p as ILoggerDefault, r as CustomLevelMethods, s as ErrorSerializationOptions, t as AdaptiveSamplingConfig, u as IBaseLogger, v as LogLevel, w as NamespaceLevels, x as LoggerWithLevels, y as LogLevelString, z as globalPluginRegistry } from "./index-BAkPHp5D.mjs";
4
4
  import { n as createLogger$1, t as LogixiaLogger } from "./logitron-logger-DoWmMjYB.mjs";
5
5
  import { a as DiscordTransport, c as OtlpLogTransportConfig, i as DiscordEmbed, l as toOtelSeverity, n as SlackTransport, o as DiscordTransportConfig, r as SlackTransportConfig, s as OtlpLogTransport, t as SlackMessage } from "./slack.transport-BDyENuR0.mjs";
6
- import { A as SearchStats, C as SearchFilters, D as SearchPreset, E as SearchOptions, F as SuggestionType, I as TimeRange, L as TimelineEvent, M as SemanticIndex, N as SimilarLog, O as SearchQuery, P as SortField, S as RelativeTime, T as SearchMatch, _ as ParsedNLQuery, a as ILogSearchEngine, b as RelatedLog, c as SearchManager, d as CorrelatedLogs, f as EntityType, g as LogPattern, h as LogCorrelationSummary, i as BasicSearchEngine, j as SearchSuggestion, k as SearchResult, l as SearchManagerConfig, m as LogCluster, n as NLPSearchEngine, o as BasicLogIndexer, p as ExportOptions, r as CorrelationEngine, s as ILogIndexer, t as PatternRecognitionEngine, u as AnomalyDetection, v as QueryEntity, w as SearchHighlight, x as RelationshipType, y as QueryIntent } from "./search-D-8HJADE.mjs";
6
+ import { A as SearchStats, C as SearchFilters, D as SearchPreset, E as SearchOptions, F as SuggestionType, I as TimeRange, L as TimelineEvent, M as SemanticIndex, N as SimilarLog, O as SearchQuery, P as SortField, S as RelativeTime, T as SearchMatch, _ as ParsedNLQuery, a as ILogSearchEngine, b as RelatedLog, c as SearchManager, d as CorrelatedLogs, f as EntityType, g as LogPattern, h as LogCorrelationSummary, i as BasicSearchEngine, j as SearchSuggestion, k as SearchResult, l as SearchManagerConfig, m as LogCluster, n as NLPSearchEngine, o as BasicLogIndexer, p as ExportOptions, r as CorrelationEngine, s as ILogIndexer, t as PatternRecognitionEngine, u as AnomalyDetection, v as QueryEntity, w as SearchHighlight, x as RelationshipType, y as QueryIntent } from "./search-Crf2IEoA.mjs";
7
7
  import { AsyncLocalStorage } from "node:async_hooks";
8
8
  import { IncomingMessage, ServerResponse } from "node:http";
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":["createLoggerFromCore","_$__types0.Environment","_$__types0.LogColor"],"sources":["../src/core/default-config.ts","../src/formatters/json.formatter.ts","../src/formatters/text.formatter.ts","../src/utils/error.utils.ts","../src/utils/otel.ts","../src/utils/redact.utils.ts","../src/utils/runtime-control.ts","../src/utils/safe-stringify.ts","../src/utils/shutdown.utils.ts","../src/utils/trace.utils.ts","../src/utils/typed-logger.ts","../src/wide-events.ts","../src/utils/request-trace.ts","../src/context/async-context.ts","../src/utils/sampling.utils.ts","../src/exceptions/types.ts","../src/exceptions/builder.ts","../src/exceptions/exception.ts","../src/metrics.ts","../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":["createLoggerFromCore","_$__types0.Environment","_$__types0.LogColor"],"sources":["../src/core/default-config.ts","../src/formatters/json.formatter.ts","../src/formatters/text.formatter.ts","../src/utils/error.utils.ts","../src/utils/otel.ts","../src/utils/redact.utils.ts","../src/utils/runtime-control.ts","../src/utils/safe-stringify.ts","../src/utils/shutdown.utils.ts","../src/utils/trace.utils.ts","../src/utils/typed-logger.ts","../src/wide-events.ts","../src/utils/request-trace.ts","../src/context/async-context.ts","../src/utils/sampling.utils.ts","../src/exceptions/types.ts","../src/exceptions/builder.ts","../src/exceptions/exception.ts","../src/metrics.ts","../src/index.ts"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { n as HttpResponseShape, t as HttpRequestShape } from "./http-shapes-BnB
3
3
  import { A as TraceIdConfig, B as usePlugin, C as LogixiaLoggerInstance, D as ReservedLevelName, E as RequestContext, F as RequestMetrics, I as RequestTiming, L as LogixiaPlugin, M as HttpError, N as HttpRequest, O as SamplingConfig, P as HttpResponse, R as PluginRegistry, S as LogixiaLoggerDefault, T as RedactConfig, _ as LogFieldKey, a as DEFAULT_LOG_LEVELS, b as LoggerConfig, c as ExtractLevels, d as ILogFormatter, f as ILogger, g as LogEntry, h as LogColor, i as DEFAULT_LOG_COLORS, j as TraceIdExtractorConfig, k as TimingEntry, l as GracefulShutdownConfig, m as ILoggerRuntimeControls, n as ContextData, o as Environment, p as ILoggerDefault, r as CustomLevelMethods, s as ErrorSerializationOptions, t as AdaptiveSamplingConfig, u as IBaseLogger, v as LogLevel, w as NamespaceLevels, x as LoggerWithLevels, y as LogLevelString, z as globalPluginRegistry } from "./index-e7LowmAu.js";
4
4
  import { n as createLogger$1, t as LogixiaLogger } from "./logitron-logger-DVUdgmBY.js";
5
5
  import { a as DiscordTransport, c as OtlpLogTransportConfig, i as DiscordEmbed, l as toOtelSeverity, n as SlackTransport, o as DiscordTransportConfig, r as SlackTransportConfig, s as OtlpLogTransport, t as SlackMessage } from "./slack.transport-C6E0l4kw.js";
6
- import { A as SearchStats, C as SearchFilters, D as SearchPreset, E as SearchOptions, F as SuggestionType, I as TimeRange, L as TimelineEvent, M as SemanticIndex, N as SimilarLog, O as SearchQuery, P as SortField, S as RelativeTime, T as SearchMatch, _ as ParsedNLQuery, a as ILogSearchEngine, b as RelatedLog, c as SearchManager, d as CorrelatedLogs, f as EntityType, g as LogPattern, h as LogCorrelationSummary, i as BasicSearchEngine, j as SearchSuggestion, k as SearchResult, l as SearchManagerConfig, m as LogCluster, n as NLPSearchEngine, o as BasicLogIndexer, p as ExportOptions, r as CorrelationEngine, s as ILogIndexer, t as PatternRecognitionEngine, u as AnomalyDetection, v as QueryEntity, w as SearchHighlight, x as RelationshipType, y as QueryIntent } from "./search-DPwTKPve.js";
6
+ import { A as SearchStats, C as SearchFilters, D as SearchPreset, E as SearchOptions, F as SuggestionType, I as TimeRange, L as TimelineEvent, M as SemanticIndex, N as SimilarLog, O as SearchQuery, P as SortField, S as RelativeTime, T as SearchMatch, _ as ParsedNLQuery, a as ILogSearchEngine, b as RelatedLog, c as SearchManager, d as CorrelatedLogs, f as EntityType, g as LogPattern, h as LogCorrelationSummary, i as BasicSearchEngine, j as SearchSuggestion, k as SearchResult, l as SearchManagerConfig, m as LogCluster, n as NLPSearchEngine, o as BasicLogIndexer, p as ExportOptions, r as CorrelationEngine, s as ILogIndexer, t as PatternRecognitionEngine, u as AnomalyDetection, v as QueryEntity, w as SearchHighlight, x as RelationshipType, y as QueryIntent } from "./search-B4eEzrhM.js";
7
7
  import { AsyncLocalStorage } from "node:async_hooks";
8
8
  import { IncomingMessage, ServerResponse } from "node:http";
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["createLoggerFromCore","_$__types0.Environment","_$__types0.LogColor"],"sources":["../src/core/default-config.ts","../src/formatters/json.formatter.ts","../src/formatters/text.formatter.ts","../src/utils/error.utils.ts","../src/utils/otel.ts","../src/utils/redact.utils.ts","../src/utils/runtime-control.ts","../src/utils/safe-stringify.ts","../src/utils/shutdown.utils.ts","../src/utils/trace.utils.ts","../src/utils/typed-logger.ts","../src/wide-events.ts","../src/utils/request-trace.ts","../src/context/async-context.ts","../src/utils/sampling.utils.ts","../src/exceptions/types.ts","../src/exceptions/builder.ts","../src/exceptions/exception.ts","../src/metrics.ts","../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["createLoggerFromCore","_$__types0.Environment","_$__types0.LogColor"],"sources":["../src/core/default-config.ts","../src/formatters/json.formatter.ts","../src/formatters/text.formatter.ts","../src/utils/error.utils.ts","../src/utils/otel.ts","../src/utils/redact.utils.ts","../src/utils/runtime-control.ts","../src/utils/safe-stringify.ts","../src/utils/shutdown.utils.ts","../src/utils/trace.utils.ts","../src/utils/typed-logger.ts","../src/wide-events.ts","../src/utils/request-trace.ts","../src/context/async-context.ts","../src/utils/sampling.utils.ts","../src/exceptions/types.ts","../src/exceptions/builder.ts","../src/exceptions/exception.ts","../src/metrics.ts","../src/index.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_builder = require("./builder-Bs0qkfkY.js");
3
- const require_sensitive_names = require("./sensitive-names-CHMowujD.js");
4
- const require_request_trace = require("./request-trace-ByujsUZk.js");
5
- const require_async_context = require("./async-context-Dv0bmPC-.js");
2
+ const require_builder = require("./builder-Up4YxX7l.js");
3
+ const require_sensitive_names = require("./sensitive-names-CNgHaqv9.js");
4
+ const require_request_trace = require("./request-trace-C7kXMjx5.js");
5
+ const require_async_context = require("./async-context-D8um9I5V.js");
6
6
  const require_internal_log = require("./internal-log-DwqTjhpb.js");
7
- const require_coerce_utils = require("./coerce.utils-C1C5sIX0.js");
8
- const require_safe_stringify = require("./safe-stringify-CN7icp8S.js");
9
- const require_otel = require("./otel-ChnVYRLA.js");
10
- const require_slack_transport = require("./slack.transport-zLQ9MGxS.js");
11
- const require_search = require("./search-CRjhHxe9.js");
7
+ const require_csv_utils = require("./csv.utils-CbVHY1pd.js");
8
+ const require_safe_stringify = require("./safe-stringify-CJisLyZ3.js");
9
+ const require_otel = require("./otel-DH6-G6DR.js");
10
+ const require_slack_transport = require("./slack.transport-CEYBVzUj.js");
11
+ const require_search = require("./search-CJw_xoQl.js");
12
12
  let node_async_hooks = require("node:async_hooks");
13
13
  // src/formatters/json.formatter.ts
14
14
  /**
@@ -27,6 +27,12 @@ function createCircularReplacer() {
27
27
  };
28
28
  }
29
29
  var JsonFormatter = class {
30
+ includeTimestamp;
31
+ includeLevel;
32
+ includeAppName;
33
+ includeTraceId;
34
+ includeContext;
35
+ prettyPrint;
30
36
  constructor(options = {}) {
31
37
  this.includeTimestamp = options.includeTimestamp ?? true;
32
38
  this.includeLevel = options.includeLevel ?? true;
@@ -72,8 +78,15 @@ var JsonFormatter = class {
72
78
  }
73
79
  };
74
80
  // src/formatters/text.formatter.ts
75
- const stripControls = (value) => require_otel.stripControlChars(require_coerce_utils.safeToString(value));
81
+ const stripControls = (value) => require_otel.stripControlChars(require_csv_utils.safeToString(value));
76
82
  var TextFormatter = class TextFormatter {
83
+ colorize;
84
+ includeTimestamp;
85
+ includeAppName;
86
+ includeTraceId;
87
+ includeContext;
88
+ timestampFormat;
89
+ colors;
77
90
  constructor(options = {}) {
78
91
  this.colorize = options.colorize ?? true;
79
92
  this.includeTimestamp = options.includeTimestamp ?? true;
@@ -142,19 +155,20 @@ var TextFormatter = class TextFormatter {
142
155
  const entry = Object.entries(payload)[0];
143
156
  if (entry) {
144
157
  const [key, value] = entry;
145
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return `${key}=${value}`;
158
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") return `${stripControls(key)}=${stripControls(value)}`;
146
159
  }
147
160
  }
148
- return Object.entries(payload).map(([key, value]) => {
161
+ return Object.entries(payload).map(([rawKey, value]) => {
162
+ const key = stripControls(rawKey);
149
163
  if (value === null || value === void 0) return `${key}=${value}`;
150
- if (typeof value === "string") return `${key}="${value}"`;
164
+ if (typeof value === "string") return `${key}="${stripControls(value)}"`;
151
165
  if (typeof value === "number" || typeof value === "boolean") return `${key}=${value}`;
152
166
  if (value instanceof Date) return `${key}=${value.toISOString()}`;
153
- if (typeof value === "object") return `${key}=${stripControls(require_coerce_utils.safeToString(value))}`;
154
- return `${key}=${String(value)}`;
167
+ if (typeof value === "object") return `${key}=${stripControls(require_csv_utils.safeToString(value))}`;
168
+ return `${key}=${stripControls(String(value))}`;
155
169
  }).join(" ");
156
170
  } catch {
157
- return stripControls(require_coerce_utils.safeToString(payload));
171
+ return stripControls(require_csv_utils.safeToString(payload));
158
172
  }
159
173
  }
160
174
  /**
@@ -681,10 +695,12 @@ function sanitizePromName(name) {
681
695
  * ```
682
696
  */
683
697
  var MetricsPlugin = class {
698
+ name = "logixia-metrics";
699
+ map;
700
+ metricState = /* @__PURE__ */ new Map();
701
+ overflowKeys = /* @__PURE__ */ new Map();
702
+ maxLabelSets;
684
703
  constructor(map, options = {}) {
685
- this.name = "logixia-metrics";
686
- this.metricState = /* @__PURE__ */ new Map();
687
- this.overflowKeys = /* @__PURE__ */ new Map();
688
704
  this.map = map;
689
705
  const max = options.maxLabelSets;
690
706
  this.maxLabelSets = typeof max === "number" && Number.isFinite(max) && max >= 1 ? Math.floor(max) : DEFAULT_MAX_LABEL_SETS;