@blyp/core 0.1.21 → 0.1.23

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 (248) hide show
  1. package/README.md +54 -522
  2. package/STABILITY.md +56 -0
  3. package/dist/ai/anthropic/index.d.ts +3 -0
  4. package/dist/ai/anthropic/normalize.d.ts +9 -0
  5. package/dist/ai/anthropic/stream.d.ts +3 -0
  6. package/dist/ai/anthropic/wrap.d.ts +13 -0
  7. package/dist/ai/anthropic.js +701 -0
  8. package/dist/ai/anthropic.mjs +701 -0
  9. package/dist/ai/better-agent/index.d.ts +3 -0
  10. package/dist/ai/better-agent/normalize.d.ts +18 -0
  11. package/dist/ai/better-agent/plugin.d.ts +3 -0
  12. package/dist/ai/better-agent/tracker.d.ts +35 -0
  13. package/dist/ai/better-agent.js +701 -0
  14. package/dist/ai/better-agent.mjs +701 -0
  15. package/dist/ai/fetch.js +701 -0
  16. package/dist/ai/fetch.mjs +701 -0
  17. package/dist/ai/openai/index.d.ts +3 -0
  18. package/dist/ai/openai/normalize.d.ts +10 -0
  19. package/dist/ai/openai/stream.d.ts +3 -0
  20. package/dist/ai/openai/wrap.d.ts +24 -0
  21. package/dist/ai/openai.js +701 -0
  22. package/dist/ai/openai.mjs +701 -0
  23. package/dist/ai/shared/fetch.d.ts +5 -0
  24. package/dist/ai/shared/index.d.ts +2 -0
  25. package/dist/ai/shared/normalize.d.ts +17 -0
  26. package/dist/ai/shared/redaction.d.ts +6 -0
  27. package/dist/ai/shared/stream.d.ts +7 -0
  28. package/dist/ai/shared/trace.d.ts +119 -0
  29. package/dist/ai/shared/types.d.ts +171 -0
  30. package/dist/ai/shared.js +701 -0
  31. package/dist/ai/shared.mjs +701 -0
  32. package/dist/ai/vercel/index.d.ts +3 -0
  33. package/dist/ai/vercel/middleware.d.ts +3 -0
  34. package/dist/ai/vercel/model.d.ts +3 -0
  35. package/dist/ai/vercel.js +701 -0
  36. package/dist/ai/vercel.mjs +701 -0
  37. package/dist/astro.js +618 -4519
  38. package/dist/astro.mjs +618 -4491
  39. package/dist/client.js +1 -1139
  40. package/dist/client.mjs +1 -1132
  41. package/dist/connectors/betterstack.js +9 -1532
  42. package/dist/connectors/betterstack.mjs +9 -1507
  43. package/dist/connectors/databuddy.js +9 -1456
  44. package/dist/connectors/databuddy.mjs +9 -1451
  45. package/dist/connectors/delivery/backoff.d.ts +2 -0
  46. package/dist/connectors/delivery/manager.d.ts +44 -0
  47. package/dist/connectors/delivery/queue-path.d.ts +1 -0
  48. package/dist/connectors/delivery/sqlite-adapter-bun.d.ts +1 -0
  49. package/dist/connectors/delivery/sqlite-adapter-node.d.ts +1 -0
  50. package/dist/connectors/delivery/sqlite-client.d.ts +37 -0
  51. package/dist/connectors/delivery/sqlite-worker.d.ts +1 -0
  52. package/dist/connectors/delivery/studio-queue.d.ts +12 -0
  53. package/dist/connectors/delivery/types.d.ts +98 -0
  54. package/dist/connectors/otlp/index.d.ts +1 -0
  55. package/dist/connectors/otlp.js +9 -1371
  56. package/dist/connectors/otlp.mjs +9 -1368
  57. package/dist/connectors/posthog/properties.d.ts +4 -0
  58. package/dist/connectors/posthog/sender.d.ts +0 -1
  59. package/dist/connectors/posthog.js +10 -1527
  60. package/dist/connectors/posthog.mjs +10 -1522
  61. package/dist/connectors/sentry.js +9 -1380
  62. package/dist/connectors/sentry.mjs +9 -1357
  63. package/dist/core/config.d.ts +7 -2
  64. package/dist/core/log-record.d.ts +5 -4
  65. package/dist/core/logger.d.ts +2 -0
  66. package/dist/core/optional-module.d.ts +1 -0
  67. package/dist/core/pino-pretty-loader.d.ts +4 -0
  68. package/dist/database.js +1 -24
  69. package/dist/database.mjs +1 -21
  70. package/dist/elysia.js +613 -4517
  71. package/dist/elysia.mjs +615 -4491
  72. package/dist/expo.js +1 -726
  73. package/dist/expo.mjs +1 -724
  74. package/dist/express.js +613 -4507
  75. package/dist/express.mjs +615 -4480
  76. package/dist/fastify.js +615 -4526
  77. package/dist/fastify.mjs +617 -4499
  78. package/dist/frameworks/elysia/index.d.ts +1 -1
  79. package/dist/frameworks/elysia/logger.d.ts +2 -35
  80. package/dist/frameworks/nestjs/helpers.d.ts +2 -0
  81. package/dist/frameworks/shared/http.d.ts +3 -2
  82. package/dist/frameworks/shared/index.d.ts +2 -1
  83. package/dist/frameworks/shared/logger.d.ts +2 -0
  84. package/dist/frameworks/shared/request-context.d.ts +2 -0
  85. package/dist/frameworks/shared/trace.d.ts +6 -0
  86. package/dist/hono.js +616 -4496
  87. package/dist/hono.mjs +618 -4470
  88. package/dist/index.d.ts +49 -19
  89. package/dist/index.js +615 -7557
  90. package/dist/index.mjs +618 -7465
  91. package/dist/nestjs.js +626 -4999
  92. package/dist/nestjs.mjs +621 -4966
  93. package/dist/nextjs.js +618 -4525
  94. package/dist/nextjs.mjs +620 -4499
  95. package/dist/nitro.js +617 -4642
  96. package/dist/nitro.mjs +619 -4616
  97. package/dist/nuxt.js +617 -4649
  98. package/dist/nuxt.mjs +619 -4623
  99. package/dist/react-router.js +616 -4559
  100. package/dist/react-router.mjs +618 -4533
  101. package/dist/shared/redaction.d.ts +17 -0
  102. package/dist/standalone.js +606 -3628
  103. package/dist/standalone.mjs +610 -3603
  104. package/dist/sveltekit.js +617 -4523
  105. package/dist/sveltekit.mjs +619 -4497
  106. package/dist/tanstack-start.js +616 -4522
  107. package/dist/tanstack-start.mjs +618 -4496
  108. package/dist/types/core/config.d.ts +57 -0
  109. package/dist/types/core/logger.d.ts +3 -0
  110. package/dist/types/core/structured-log.d.ts +2 -0
  111. package/dist/types/database.d.ts +1 -0
  112. package/dist/types/frameworks/astro.d.ts +1 -0
  113. package/dist/types/frameworks/client.d.ts +2 -0
  114. package/dist/types/frameworks/elysia.d.ts +2 -0
  115. package/dist/types/frameworks/express.d.ts +1 -0
  116. package/dist/types/frameworks/fastify.d.ts +1 -0
  117. package/dist/types/frameworks/hono.d.ts +1 -0
  118. package/dist/types/frameworks/http.d.ts +1 -0
  119. package/dist/types/frameworks/nestjs.d.ts +2 -0
  120. package/dist/types/frameworks/nextjs.d.ts +1 -0
  121. package/dist/types/frameworks/nitro.d.ts +1 -0
  122. package/dist/types/frameworks/react-router.d.ts +2 -0
  123. package/dist/types/frameworks/request-context.d.ts +1 -0
  124. package/dist/types/frameworks/shared.d.ts +4 -1
  125. package/dist/types/frameworks/standalone.d.ts +3 -2
  126. package/dist/types/frameworks/sveltekit.d.ts +1 -0
  127. package/dist/types/frameworks/tanstack-start.d.ts +9 -3
  128. package/dist/types/frameworks/workers.d.ts +3 -0
  129. package/dist/types/shared/client-log.d.ts +1 -0
  130. package/dist/workers.js +2 -626
  131. package/dist/workers.mjs +2 -623
  132. package/package.json +259 -173
  133. package/dist/astro.js.map +0 -1
  134. package/dist/astro.mjs.map +0 -1
  135. package/dist/client.js.map +0 -1
  136. package/dist/client.mjs.map +0 -1
  137. package/dist/connectors/betterstack.js.map +0 -1
  138. package/dist/connectors/betterstack.mjs.map +0 -1
  139. package/dist/connectors/databuddy.js.map +0 -1
  140. package/dist/connectors/databuddy.mjs.map +0 -1
  141. package/dist/connectors/otlp.js.map +0 -1
  142. package/dist/connectors/otlp.mjs.map +0 -1
  143. package/dist/connectors/posthog.js.map +0 -1
  144. package/dist/connectors/posthog.mjs.map +0 -1
  145. package/dist/connectors/sentry.js.map +0 -1
  146. package/dist/connectors/sentry.mjs.map +0 -1
  147. package/dist/database.js.map +0 -1
  148. package/dist/database.mjs.map +0 -1
  149. package/dist/elysia.js.map +0 -1
  150. package/dist/elysia.mjs.map +0 -1
  151. package/dist/expo.js.map +0 -1
  152. package/dist/expo.mjs.map +0 -1
  153. package/dist/express.js.map +0 -1
  154. package/dist/express.mjs.map +0 -1
  155. package/dist/fastify.js.map +0 -1
  156. package/dist/fastify.mjs.map +0 -1
  157. package/dist/hono.js.map +0 -1
  158. package/dist/hono.mjs.map +0 -1
  159. package/dist/index.js.map +0 -1
  160. package/dist/index.mjs.map +0 -1
  161. package/dist/nestjs.js.map +0 -1
  162. package/dist/nestjs.mjs.map +0 -1
  163. package/dist/nextjs.js.map +0 -1
  164. package/dist/nextjs.mjs.map +0 -1
  165. package/dist/nitro.js.map +0 -1
  166. package/dist/nitro.mjs.map +0 -1
  167. package/dist/nuxt.js.map +0 -1
  168. package/dist/nuxt.mjs.map +0 -1
  169. package/dist/react-router.js.map +0 -1
  170. package/dist/react-router.mjs.map +0 -1
  171. package/dist/standalone.js.map +0 -1
  172. package/dist/standalone.mjs.map +0 -1
  173. package/dist/sveltekit.js.map +0 -1
  174. package/dist/sveltekit.mjs.map +0 -1
  175. package/dist/tanstack-start.js.map +0 -1
  176. package/dist/tanstack-start.mjs.map +0 -1
  177. package/dist/workers.js.map +0 -1
  178. package/dist/workers.mjs.map +0 -1
  179. package/exports/client.js +0 -3
  180. package/exports/client.mjs +0 -3
  181. package/exports/connectors/betterstack.js +0 -1
  182. package/exports/connectors/betterstack.mjs +0 -1
  183. package/exports/connectors/databuddy.js +0 -1
  184. package/exports/connectors/databuddy.mjs +0 -1
  185. package/exports/connectors/otlp.js +0 -1
  186. package/exports/connectors/otlp.mjs +0 -1
  187. package/exports/connectors/posthog.js +0 -1
  188. package/exports/connectors/posthog.mjs +0 -1
  189. package/exports/connectors/sentry.js +0 -1
  190. package/exports/connectors/sentry.mjs +0 -1
  191. package/exports/database.js +0 -1
  192. package/exports/database.mjs +0 -1
  193. package/exports/expo.js +0 -1
  194. package/exports/expo.mjs +0 -1
  195. package/exports/frameworks/astro.js +0 -1
  196. package/exports/frameworks/astro.mjs +0 -1
  197. package/exports/frameworks/elysia.js +0 -1
  198. package/exports/frameworks/elysia.mjs +0 -1
  199. package/exports/frameworks/express.js +0 -1
  200. package/exports/frameworks/express.mjs +0 -1
  201. package/exports/frameworks/fastify.js +0 -1
  202. package/exports/frameworks/fastify.mjs +0 -1
  203. package/exports/frameworks/hono.js +0 -1
  204. package/exports/frameworks/hono.mjs +0 -1
  205. package/exports/frameworks/nestjs.js +0 -1
  206. package/exports/frameworks/nestjs.mjs +0 -1
  207. package/exports/frameworks/nextjs.js +0 -1
  208. package/exports/frameworks/nextjs.mjs +0 -1
  209. package/exports/frameworks/nitro.js +0 -1
  210. package/exports/frameworks/nitro.mjs +0 -1
  211. package/exports/frameworks/nuxt.js +0 -1
  212. package/exports/frameworks/nuxt.mjs +0 -1
  213. package/exports/frameworks/react-router.js +0 -1
  214. package/exports/frameworks/react-router.mjs +0 -1
  215. package/exports/frameworks/standalone.js +0 -1
  216. package/exports/frameworks/standalone.mjs +0 -1
  217. package/exports/frameworks/sveltekit.js +0 -1
  218. package/exports/frameworks/sveltekit.mjs +0 -1
  219. package/exports/frameworks/tanstack-start.js +0 -1
  220. package/exports/frameworks/tanstack-start.mjs +0 -1
  221. package/exports/workers.js +0 -1
  222. package/exports/workers.mjs +0 -1
  223. package/types/client.d.ts +0 -34
  224. package/types/connectors/betterstack.d.ts +0 -1
  225. package/types/connectors/databuddy.d.ts +0 -1
  226. package/types/connectors/otlp.d.ts +0 -1
  227. package/types/connectors/posthog.d.ts +0 -1
  228. package/types/connectors/sentry.d.ts +0 -1
  229. package/types/database.d.ts +0 -1
  230. package/types/expo.d.ts +0 -17
  231. package/types/frameworks/astro.d.ts +0 -1
  232. package/types/frameworks/client.d.ts +0 -160
  233. package/types/frameworks/elysia.d.ts +0 -1
  234. package/types/frameworks/expo.d.ts +0 -50
  235. package/types/frameworks/express.d.ts +0 -1
  236. package/types/frameworks/fastify.d.ts +0 -1
  237. package/types/frameworks/hono.d.ts +0 -1
  238. package/types/frameworks/nestjs.d.ts +0 -1
  239. package/types/frameworks/nextjs.d.ts +0 -1
  240. package/types/frameworks/nitro.d.ts +0 -1
  241. package/types/frameworks/nuxt.d.ts +0 -1
  242. package/types/frameworks/react-router.d.ts +0 -1
  243. package/types/frameworks/standalone.d.ts +0 -1
  244. package/types/frameworks/sveltekit.d.ts +0 -1
  245. package/types/frameworks/tanstack-start.d.ts +0 -1
  246. package/types/frameworks/workers.d.ts +0 -115
  247. package/types/index.d.ts +0 -1
  248. package/types/workers.d.ts +0 -13
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/frameworks/shared/request-context.ts","../src/shared/log-value.ts","../src/shared/validation.ts","../src/shared/client-log.ts","../src/shared/once.ts","../src/core/config.ts","../src/core/log-record.ts","../src/core/file-logger.ts","../src/core/sinks/file-primary-sink.ts","../src/database/adapters/drizzle.ts","../src/database/adapters/prisma.ts","../src/database/helpers.ts","../src/core/sinks/database-primary-sink.ts","../src/core/primary-sink.ts","../src/connectors/shared.ts","../src/connectors/betterstack/sender.ts","../src/connectors/databuddy/sender.ts","../src/connectors/posthog/sender.ts","../src/connectors/sentry/sender.ts","../src/connectors/otlp/sender.ts","../src/core/runtime.ts","../src/core/structured-log.ts","../src/core/logger.ts","../src/frameworks/standalone/logger.ts","../src/shared/errors.ts","../src/core/errors.ts","../src/core/log-reader.ts","../src/core/helpers.ts","../src/core/colors.ts","../src/connectors/betterstack/index.ts","../src/connectors/databuddy/index.ts","../src/connectors/posthog/index.ts","../src/connectors/sentry/index.ts","../src/frameworks/shared/http.ts","../src/frameworks/shared/logger.ts","../src/frameworks/shared/request-logger.ts","../src/frameworks/elysia/logger.ts","../src/frameworks/hono/logger.ts","../src/frameworks/express/logger.ts","../src/frameworks/fastify/logger.ts","../src/frameworks/nextjs/logger.ts","../src/frameworks/react-router/logger.ts","../src/frameworks/tanstack-start/logger.ts","../src/frameworks/sveltekit/logger.ts","../src/frameworks/astro/logger.ts","../src/frameworks/shared/h3.ts","../src/frameworks/nitro/logger.ts","../src/frameworks/nuxt/logger.ts","../src/frameworks/nestjs/constants.ts","../src/frameworks/nestjs/logger.ts","../src/frameworks/nestjs/helpers.ts","../src/frameworks/nestjs/filter.ts","../src/frameworks/nestjs/interceptor.ts","../src/frameworks/nestjs/middleware.ts","../src/frameworks/nestjs/module.ts","../src/connectors/otlp/index.ts","../src/index.ts"],"names":["AsyncLocalStorage","logger","z","path","warnedKeys","resolve","existsSync","readFileSync","dirname","writeFileSync","appendFileSync","jiti","createJiti","gzipSync","fs","randomUUID","isPrismaAdapter","isDrizzleAdapter","warnOnce","Sentry","runtime","Logtail","testHooks","registerShutdownHooks","resolveConnectorConfig","createDefaultClient","Databuddy","normalizeExceptionInput","PREVIOUSLY_CAPTURED_ERROR_KEY","normalizeExceptionProperties","SeverityNumber","OTLPLogExporter","LoggerProvider","resourceFromAttributes","BatchLogRecordProcessor","PostHog","getSentryModule","normalizeScopeLevel","toExceptionCandidate","getClientOptions","resolveSeverity","createDefaultTransport","serializeMessage","normalizeError","pino","normalizeDetails","error","HTTP_CODES","httpCodeByStatus","getHttpCode","gunzipSync","normalizePath","prefix","colors","resolveSender","direct","Elysia","fp","createContext","BaseExceptionFilter","HttpException","Catch","tap","Injectable","Inject","BlypModule","APP_INTERCEPTOR","APP_FILTER","RequestMethod","Global","Module","createStructuredLog"],"mappings":"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","file":"index.js","sourcesContent":["import { AsyncLocalStorage } from 'async_hooks';\nimport type { BlypLogger } from '../../core/logger';\nimport type { BlypRequestContextStore } from '../../types/frameworks/request-context';\n\nexport type { BlypRequestContextStore } from '../../types/frameworks/request-context';\n\nconst requestContextStorage = new AsyncLocalStorage<BlypRequestContextStore>();\n\nfunction createStore(): BlypRequestContextStore {\n return {\n requestScopedLoggerActive: true,\n structuredCollectorActive: false,\n structuredLogEmitted: false,\n mixedLoggerWarningShown: false,\n };\n}\n\nexport function runWithRequestContext<T>(callback: () => T): T {\n return requestContextStorage.run(createStore(), callback);\n}\n\nexport function enterRequestContext(): BlypRequestContextStore {\n const store = createStore();\n requestContextStorage.enterWith(store);\n return store;\n}\n\nexport function getRequestContextStore(): BlypRequestContextStore | undefined {\n return requestContextStorage.getStore();\n}\n\nexport function setActiveRequestLogger(logger: BlypLogger): void {\n const store = getRequestContextStore();\n if (store) {\n store.activeLogger = logger;\n }\n}\n\nexport function getActiveRequestLogger(): BlypLogger | undefined {\n return getRequestContextStore()?.activeLogger;\n}\n\nexport function markStructuredCollectorActive(): void {\n const store = getRequestContextStore();\n if (store) {\n store.structuredCollectorActive = true;\n }\n}\n\nexport function markStructuredLogEmitted(): void {\n const store = getRequestContextStore();\n if (store) {\n store.structuredLogEmitted = true;\n }\n}\n\nexport function hasStructuredLogBeenEmitted(): boolean {\n return getRequestContextStore()?.structuredLogEmitted === true;\n}\n\nexport function shouldDropRootLogWrite(): boolean {\n const store = getRequestContextStore();\n if (!store || !store.requestScopedLoggerActive || !store.structuredCollectorActive) {\n return false;\n }\n\n if (!store.mixedLoggerWarningShown) {\n store.mixedLoggerWarningShown = true;\n console.warn(\n '[Blyp] Warning: Mixed logger usage detected for this request. ' +\n 'The root logger call was ignored because a request-scoped structured logger is active.'\n );\n }\n\n return true;\n}\n","export function normalizeError(error: Error): Record<string, unknown> {\n const normalized: Record<string, unknown> = {\n name: error.name,\n message: error.message,\n };\n\n if (error.stack) {\n normalized.stack = error.stack;\n }\n\n const errorWithCause = error as Error & { cause?: unknown };\n if (errorWithCause.cause !== undefined) {\n normalized.cause = normalizeLogValue(errorWithCause.cause);\n }\n\n return normalized;\n}\n\nexport function normalizeLogValue(\n value: unknown,\n seen: WeakSet<object> = new WeakSet()\n): unknown {\n if (value instanceof Error) {\n return normalizeError(value);\n }\n\n if (typeof value === 'function') {\n return `[Function: ${value.name || 'anonymous'}]`;\n }\n\n if (typeof value === 'symbol') {\n return value.toString();\n }\n\n if (value === undefined || value === null) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => normalizeLogValue(entry, seen));\n }\n\n if (typeof value === 'object') {\n if (seen.has(value)) {\n return '[Circular]';\n }\n\n seen.add(value);\n const normalized: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n normalized[key] = normalizeLogValue(entry, seen);\n }\n\n seen.delete(value);\n return normalized;\n }\n\n return value;\n}\n\nexport function serializeLogMessage(message: unknown): string {\n if (typeof message === 'string') {\n return message;\n }\n\n if (message instanceof Error) {\n return message.message || message.name;\n }\n\n const normalized = normalizeLogValue(message);\n if (typeof normalized === 'string') {\n return normalized;\n }\n\n try {\n const serialized = JSON.stringify(normalized, null, 2);\n return serialized ?? String(normalized);\n } catch {\n return String(normalized);\n }\n}\n","import { z } from 'zod';\n\nexport const absoluteHttpUrlSchema = z.string().url().refine((value) => {\n try {\n const url = new URL(value);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}, {\n message: 'Expected an absolute http(s) URL',\n});\n\nexport const plainObjectSchema = z.custom<Record<string, unknown>>(\n (value): value is Record<string, unknown> => {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n },\n {\n message: 'Expected a plain object',\n }\n);\n\nexport const nonEmptyStringSchema = z.string().trim().min(1);\n\nexport function isAbsoluteHttpUrl(value: unknown): value is string {\n return absoluteHttpUrlSchema.safeParse(value).success;\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return plainObjectSchema.safeParse(value).success;\n}\n\nexport function hasNonEmptyString(value: unknown): value is string {\n return nonEmptyStringSchema.safeParse(value).success;\n}\n","/// <reference lib=\"dom\" />\n\nimport { z } from 'zod';\nimport {\n normalizeError,\n normalizeLogValue,\n serializeLogMessage,\n} from './log-value';\nimport {\n isPlainObject,\n nonEmptyStringSchema,\n plainObjectSchema,\n} from './validation';\nimport type {\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n ClientLogSessionContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliveryRuntime,\n RemoteDeliverySuccessContext,\n RemoteDeliveryTransport,\n} from '../types/shared/client-log';\n\nexport type {\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n ClientLogSessionContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliverySuccessContext,\n RemoteDeliveryTransport,\n} from '../types/shared/client-log';\n\nexport const DEFAULT_CLIENT_LOG_ENDPOINT = '/inngest';\nconst SESSION_STORAGE_KEY = 'blyp:session-id';\n\nconst CLIENT_LOG_LEVELS: ClientLogLevel[] = [\n 'debug',\n 'info',\n 'warning',\n 'error',\n 'critical',\n 'success',\n 'table',\n];\nconst clientConnectorRequestSchema = z.union([\n z.literal('betterstack'),\n z.literal('databuddy'),\n z.literal('posthog'),\n z.literal('sentry'),\n z.undefined(),\n z.object({\n type: z.literal('otlp'),\n name: nonEmptyStringSchema,\n }),\n]);\n\nfunction isClientLogLevel(value: unknown): value is ClientLogLevel {\n return typeof value === 'string' && CLIENT_LOG_LEVELS.includes(value as ClientLogLevel);\n}\n\nfunction isClientConnectorRequest(value: unknown): value is ClientConnectorRequest {\n return clientConnectorRequestSchema.safeParse(value).success;\n}\n\nfunction safeGet<T>(getter: () => T): T | undefined {\n try {\n return getter();\n } catch {\n return undefined;\n }\n}\n\nfunction randomSegment(): string {\n return Math.random().toString(36).slice(2, 10);\n}\n\nexport function createRandomId(): string {\n const maybeCrypto = safeGet(() => globalThis.crypto);\n const randomUUID = maybeCrypto && typeof maybeCrypto.randomUUID === 'function'\n ? maybeCrypto.randomUUID.bind(maybeCrypto)\n : undefined;\n\n if (randomUUID) {\n return randomUUID();\n }\n\n return `${Date.now().toString(36)}-${randomSegment()}`;\n}\n\nexport function normalizeClientLogLevel(level: ClientLogLevel | 'warn'): ClientLogLevel {\n return level === 'warn' ? 'warning' : level;\n}\n\nexport { normalizeError, normalizeLogValue, serializeLogMessage };\n\nexport function normalizeClientPayloadData(message: unknown, args: unknown[]): unknown {\n const normalizedArgs = args.map((entry) => normalizeLogValue(entry));\n const messageData = message instanceof Error ? normalizeError(message) : undefined;\n\n if (messageData !== undefined && normalizedArgs.length === 0) {\n return messageData;\n }\n\n const combined = messageData === undefined ? normalizedArgs : [messageData, ...normalizedArgs];\n\n if (combined.length === 0) {\n return undefined;\n }\n\n if (combined.length === 1) {\n return combined[0];\n }\n\n return combined;\n}\n\nexport function getBrowserPageContext(): ClientLogPageContext {\n const location = safeGet(() => globalThis.location);\n const document = safeGet(() => globalThis.document);\n\n return {\n url: location?.href,\n pathname: location?.pathname,\n search: location?.search,\n hash: location?.hash,\n title: document?.title,\n referrer: document?.referrer,\n };\n}\n\nexport function getBrowserContext(): ClientLogBrowserContext {\n const navigator = safeGet(() => globalThis.navigator);\n\n return {\n userAgent: navigator?.userAgent,\n language: navigator?.language,\n platform: navigator?.platform,\n };\n}\n\nexport function getClientSessionId(): string {\n const storage = safeGet(() => globalThis.sessionStorage);\n const existing = safeGet(() => storage?.getItem(SESSION_STORAGE_KEY));\n\n if (existing) {\n return existing;\n }\n\n const sessionId = createRandomId();\n safeGet(() => storage?.setItem(SESSION_STORAGE_KEY, sessionId));\n return sessionId;\n}\n\nexport function normalizeMetadata(\n metadata: Record<string, unknown> | (() => Record<string, unknown>) | undefined\n): Record<string, unknown> | undefined {\n if (metadata === undefined) {\n return undefined;\n }\n\n const resolved = typeof metadata === 'function' ? safeGet(metadata) : metadata;\n if (!isPlainObject(resolved)) {\n return undefined;\n }\n\n return normalizeLogValue(resolved) as Record<string, unknown>;\n}\n\nexport function isClientLogEvent(payload: unknown): payload is ClientLogEvent {\n if (!isPlainObject(payload)) {\n return false;\n }\n\n if (\n payload.type !== 'client_log' ||\n payload.source !== 'client' ||\n !isClientLogLevel(payload.level) ||\n typeof payload.id !== 'string' ||\n typeof payload.message !== 'string' ||\n typeof payload.clientTimestamp !== 'string'\n ) {\n return false;\n }\n\n const pageResult = plainObjectSchema.safeParse(payload.page);\n const browserResult = plainObjectSchema.safeParse(payload.browser);\n const sessionResult = plainObjectSchema.safeParse(payload.session);\n\n if (!pageResult.success || !browserResult.success || !sessionResult.success) {\n return false;\n }\n\n if (!isClientConnectorRequest(payload.connector)) {\n return false;\n }\n\n return (\n typeof sessionResult.data.pageId === 'string' &&\n typeof sessionResult.data.sessionId === 'string'\n );\n}\n\nexport function normalizeEndpointPath(path: string | undefined): string {\n if (!path) {\n return DEFAULT_CLIENT_LOG_ENDPOINT;\n }\n\n return path.startsWith('/') ? path : `/${path}`;\n}\n","import type { ConsoleMethod, ConsoleOnceLogger } from '../types/shared/once';\n\nexport type { ConsoleOnceLogger } from '../types/shared/once';\n\nfunction createConsoleOnceLogger(\n method: ConsoleMethod,\n warnedKeys: Set<string> = new Set<string>()\n): ConsoleOnceLogger {\n return (key, message, error) => {\n if (warnedKeys.has(key) || typeof console === 'undefined') {\n return;\n }\n\n const writer = console[method];\n if (typeof writer !== 'function') {\n return;\n }\n\n warnedKeys.add(key);\n if (error === undefined) {\n writer.call(console, message);\n return;\n }\n\n writer.call(console, message, error);\n };\n}\n\nexport function createWarnOnceLogger(warnedKeys?: Set<string>): ConsoleOnceLogger {\n return createConsoleOnceLogger('warn', warnedKeys);\n}\n\nexport function createErrorOnceLogger(warnedKeys?: Set<string>): ConsoleOnceLogger {\n return createConsoleOnceLogger('error', warnedKeys);\n}\n","import { appendFileSync, existsSync, readFileSync, writeFileSync } from 'fs';\nimport { createJiti } from 'jiti';\nimport { dirname, resolve } from 'path';\nimport { DEFAULT_CLIENT_LOG_ENDPOINT } from '../shared/client-log';\nimport { createWarnOnceLogger } from '../shared/once';\nimport { hasNonEmptyString, isAbsoluteHttpUrl } from '../shared/validation';\nimport type {\n BetterStackConnectorConfig,\n BetterStackErrorTrackingConfig,\n BlypDestination,\n BlypConfig,\n BlypConnectorsConfig,\n ClientLoggingConfig,\n ConfigFileMatch,\n DatabuddyConnectorConfig,\n DatabaseDeliveryConfig,\n DatabaseLoggerConfig,\n DatabaseRetryConfig,\n DrizzleDatabaseAdapterConfig,\n LogFileConfig,\n LogRotationConfig,\n OTLPConnectorConfig,\n PostHogConnectorConfig,\n PrismaDatabaseAdapterConfig,\n ResolvedBetterStackConnectorConfig,\n ResolvedBetterStackErrorTrackingConfig,\n ResolvedBlypConfig,\n ResolvedBlypConnectorsConfig,\n ResolvedDatabuddyConnectorConfig,\n ResolvedDatabaseLoggerConfig,\n ResolvedOTLPConnectorConfig,\n ResolvedPostHogConnectorConfig,\n ResolvedSentryConnectorConfig,\n SentryConnectorConfig\n} from '../types/core/config';\n\nexport type { ConnectorMode } from '../types/connectors/mode';\nexport type {\n BlypConfig,\n BetterStackConnectorConfig,\n BetterStackErrorTrackingConfig,\n BlypDestination,\n BlypConnectorsConfig,\n ClientLoggingConfig,\n DatabuddyConnectorConfig,\n DatabaseAdapterConfig,\n DatabaseAdapterKind,\n DatabaseDeliveryConfig,\n DatabaseDialect,\n DatabaseLoggerConfig,\n DatabaseRetryConfig,\n DrizzleDatabaseAdapterConfig,\n LogFileConfig,\n LogRotationConfig,\n OTLPConnectorConfig,\n PostHogConnectorConfig,\n PrismaDatabaseAdapterConfig,\n ResolvedBlypConfig,\n ResolvedBetterStackConnectorConfig,\n ResolvedBetterStackErrorTrackingConfig,\n ResolvedDatabuddyConnectorConfig,\n ResolvedDatabaseDeliveryConfig,\n ResolvedDatabaseLoggerConfig,\n PostHogErrorTrackingConfig,\n ResolvedOTLPConnectorConfig,\n ResolvedPostHogConnectorConfig,\n ResolvedDatabaseRetryConfig,\n ResolvedPostHogErrorTrackingConfig,\n ResolvedSentryConnectorConfig,\n SentryConnectorConfig\n} from '../types/core/config';\n\nconst PACKAGE_NAME = '@blyp/core';\nconst GITIGNORE_FILE_NAME = '.gitignore';\nconst CONFIG_FILE_NAMES = [\n 'blyp.config.ts',\n 'blyp.config.mts',\n 'blyp.config.cts',\n 'blyp.config.js',\n 'blyp.config.mjs',\n 'blyp.config.cjs',\n 'blyp.config.json',\n] as const;\nconst CONFIG_FILE_NAME = 'blyp.config.json';\nconst DEFAULT_POSTHOG_HOST = 'https://us.i.posthog.com';\nconst DEFAULT_CONNECTOR_SERVICE_NAME = 'blyp-app';\nconst DEFAULT_POSTHOG_SERVICE_NAME = DEFAULT_CONNECTOR_SERVICE_NAME;\nconst warnedKeys = new Set<string>();\nconst warnOnce = createWarnOnceLogger(warnedKeys);\n\nexport const DEFAULT_ROTATION_CONFIG: Required<LogRotationConfig> = {\n enabled: true,\n maxSizeBytes: 10 * 1024 * 1024,\n maxArchives: 5,\n compress: true,\n};\n\nexport const DEFAULT_FILE_CONFIG: Required<LogFileConfig> = {\n enabled: true,\n dir: '',\n archiveDir: '',\n format: 'ndjson',\n rotation: DEFAULT_ROTATION_CONFIG,\n};\n\nexport const DEFAULT_CLIENT_LOGGING_CONFIG: Required<ClientLoggingConfig> = {\n enabled: true,\n path: DEFAULT_CLIENT_LOG_ENDPOINT,\n};\n\nexport const DEFAULT_DATABASE_RETRY_CONFIG: Required<DatabaseRetryConfig> = {\n maxRetries: 1,\n backoffMs: 100,\n};\n\nexport const DEFAULT_DATABASE_DELIVERY_CONFIG: Required<Omit<DatabaseDeliveryConfig, 'retry'>> & {\n retry: Required<DatabaseRetryConfig>;\n} = {\n strategy: 'immediate',\n batchSize: 1,\n flushIntervalMs: 250,\n maxQueueSize: 1000,\n overflowStrategy: 'drop-oldest',\n flushTimeoutMs: 5000,\n retry: DEFAULT_DATABASE_RETRY_CONFIG,\n};\n\nexport const DEFAULT_CONFIG: BlypConfig = {\n pretty: true,\n level: 'info',\n destination: 'file',\n file: DEFAULT_FILE_CONFIG,\n clientLogging: DEFAULT_CLIENT_LOGGING_CONFIG,\n connectors: {},\n};\n\nlet cachedConfig: ResolvedBlypConfig | null = null;\n\nfunction findNearestPackageName(startDir: string): string | undefined {\n let currentDir = startDir;\n\n while (true) {\n const packageJsonPath = resolve(currentDir, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as {\n name?: unknown;\n };\n if (hasNonEmptyString(packageJson.name)) {\n return packageJson.name;\n }\n } catch {}\n }\n\n const parentDir = dirname(currentDir);\n if (parentDir === currentDir) {\n return undefined;\n }\n\n currentDir = parentDir;\n }\n}\n\nfunction resolveDefaultConnectorServiceName(cwd: string = process.cwd()): string {\n return findNearestPackageName(cwd) ?? DEFAULT_POSTHOG_SERVICE_NAME;\n}\n\nfunction getBootstrapConfig(): BlypConfig {\n return {\n pretty: true,\n level: 'info',\n destination: 'file',\n file: {\n enabled: true,\n format: 'ndjson',\n rotation: {\n enabled: true,\n maxSizeBytes: 10 * 1024 * 1024,\n maxArchives: 5,\n compress: true,\n },\n },\n clientLogging: {\n enabled: true,\n path: DEFAULT_CLIENT_LOG_ENDPOINT,\n },\n connectors: {},\n };\n}\n\nfunction shouldBootstrapProjectFiles(cwd: string): boolean {\n const packageJsonPath = resolve(cwd, 'package.json');\n\n if (!existsSync(packageJsonPath)) {\n return true;\n }\n\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as { name?: string };\n return packageJson.name !== PACKAGE_NAME;\n } catch {\n return true;\n }\n}\n\nfunction ensureConfigFile(cwd: string): void {\n if (CONFIG_FILE_NAMES.some((fileName) => existsSync(resolve(cwd, fileName)))) {\n return;\n }\n\n const configPath = resolve(cwd, CONFIG_FILE_NAME);\n\n if (existsSync(configPath)) {\n return;\n }\n\n try {\n writeFileSync(configPath, `${JSON.stringify(getBootstrapConfig(), null, 2)}\\n`);\n } catch (error) {\n console.error('[Blyp] Warning: Failed to create blyp.config.json:', error);\n }\n}\n\nfunction ensureLogsIgnored(cwd: string): void {\n const gitignorePath = resolve(cwd, GITIGNORE_FILE_NAME);\n\n if (!existsSync(gitignorePath)) {\n try {\n writeFileSync(gitignorePath, 'logs\\n');\n } catch (error) {\n console.error('[Blyp] Warning: Failed to create .gitignore:', error);\n }\n return;\n }\n\n try {\n const currentContent = readFileSync(gitignorePath, 'utf-8');\n if (/^(?:\\/?logs\\/?)\\s*$/m.test(currentContent)) {\n return;\n }\n\n const separator = currentContent.endsWith('\\n') ? '' : '\\n';\n appendFileSync(gitignorePath, `${separator}logs\\n`);\n } catch (error) {\n console.error('[Blyp] Warning: Failed to update .gitignore:', error);\n }\n}\n\nfunction bootstrapProjectFiles(): void {\n const cwd = process.cwd();\n\n if (!shouldBootstrapProjectFiles(cwd)) {\n return;\n }\n\n ensureConfigFile(cwd);\n ensureLogsIgnored(cwd);\n}\n\nfunction findConfigFile(): ConfigFileMatch | null {\n const cwd = process.cwd();\n const matches = CONFIG_FILE_NAMES\n .map((fileName) => resolve(cwd, fileName))\n .filter((filePath) => existsSync(filePath));\n\n if (matches.length === 0) {\n return null;\n }\n\n if (matches.length > 1) {\n const preferred = matches[0]!;\n warnOnce(\n `config-multiple:${preferred}`,\n `[Blyp] Warning: Multiple config files found. Using ${preferred} and ignoring ${matches.slice(1).join(', ')}.`\n );\n }\n\n const selectedPath = matches[0]!;\n return {\n path: selectedPath,\n type: selectedPath.endsWith('.json') ? 'json' : 'jiti',\n };\n}\n\nfunction normalizeLoadedConfig(\n value: unknown,\n configPath: string\n): Partial<BlypConfig> {\n const normalized = (\n value &&\n typeof value === 'object' &&\n 'default' in value &&\n (value as { default?: unknown }).default !== undefined\n )\n ? (value as { default: unknown }).default\n : value;\n\n if (!normalized || typeof normalized !== 'object' || Array.isArray(normalized)) {\n warnOnce(\n `config-invalid:${configPath}`,\n `[Blyp] Warning: Config file ${configPath} did not export an object. Falling back to defaults.`\n );\n return {};\n }\n\n return normalized as Partial<BlypConfig>;\n}\n\nfunction parseJsonConfigFile(configPath: string): Partial<BlypConfig> {\n try {\n const content = readFileSync(configPath, 'utf-8');\n return normalizeLoadedConfig(JSON.parse(content), configPath);\n } catch (error) {\n console.error('[Blyp] Warning: Failed to parse blyp.config.json:', error);\n return {};\n }\n}\n\nfunction parseExecutableConfigFile(configPath: string): Partial<BlypConfig> {\n try {\n const jiti = createJiti(process.cwd(), {\n interopDefault: true,\n moduleCache: false,\n fsCache: false,\n });\n return normalizeLoadedConfig(jiti(configPath), configPath);\n } catch (error) {\n console.error(`[Blyp] Warning: Failed to load ${configPath}:`, error);\n return {};\n }\n}\n\nfunction parseConfigFile(config: ConfigFileMatch): Partial<BlypConfig> {\n return config.type === 'json'\n ? parseJsonConfigFile(config.path)\n : parseExecutableConfigFile(config.path);\n}\n\nfunction isPrismaAdapter(\n value: DatabaseLoggerConfig['adapter']\n): value is PrismaDatabaseAdapterConfig {\n return !!value && typeof value === 'object' && value.type === 'prisma';\n}\n\nfunction isDrizzleAdapter(\n value: DatabaseLoggerConfig['adapter']\n): value is DrizzleDatabaseAdapterConfig {\n return !!value && typeof value === 'object' && value.type === 'drizzle';\n}\n\nfunction mergeDatabaseRetryConfig(\n base: DatabaseRetryConfig | undefined,\n override: DatabaseRetryConfig | undefined\n): Required<DatabaseRetryConfig> {\n return {\n ...DEFAULT_DATABASE_RETRY_CONFIG,\n ...base,\n ...override,\n };\n}\n\nfunction mergeDatabaseDeliveryConfig(\n base: DatabaseDeliveryConfig | undefined,\n override: DatabaseDeliveryConfig | undefined\n): ResolvedDatabaseLoggerConfig['delivery'] {\n return {\n ...DEFAULT_DATABASE_DELIVERY_CONFIG,\n ...base,\n ...override,\n retry: mergeDatabaseRetryConfig(base?.retry, override?.retry),\n };\n}\n\nfunction hasPrismaDelegate(adapter: PrismaDatabaseAdapterConfig): boolean {\n const model = adapter.model ?? 'blypLog';\n const client = adapter.client as Record<string, unknown> | null | undefined;\n const delegate = client?.[model] as Record<string, unknown> | undefined;\n\n return !!delegate && typeof delegate.create === 'function';\n}\n\nfunction hasDrizzleAdapterShape(adapter: DrizzleDatabaseAdapterConfig): boolean {\n const db = adapter.db as { insert?: unknown } | null | undefined;\n return !!db && typeof db.insert === 'function' && adapter.table !== undefined;\n}\n\nfunction resolveDatabaseLoggerConfig(\n config: DatabaseLoggerConfig | undefined,\n sourceType?: ConfigFileMatch['type']\n): ResolvedDatabaseLoggerConfig | undefined {\n if (!config) {\n return undefined;\n }\n\n const adapter = config.adapter;\n let ready = false;\n\n if (sourceType === 'json') {\n warnOnce(\n 'database-json-config',\n '[Blyp] Warning: Database logging requires an executable blyp config file. Database destination remains disabled until you move this config to blyp.config.ts/js.'\n );\n } else if (config.dialect !== 'postgres' && config.dialect !== 'mysql') {\n warnOnce(\n `database-dialect:${String(config.dialect)}`,\n `[Blyp] Warning: Unsupported database dialect \"${String(config.dialect)}\". Database logging is disabled.`\n );\n } else if (!adapter) {\n warnOnce(\n 'database-adapter-missing',\n '[Blyp] Warning: Database logging is enabled without an adapter. Database logging is disabled.'\n );\n } else if (isPrismaAdapter(adapter)) {\n ready = hasPrismaDelegate({\n ...adapter,\n model: adapter.model ?? 'blypLog',\n });\n\n if (!ready) {\n warnOnce(\n 'database-prisma-missing',\n `[Blyp] Warning: Prisma database adapter is missing the \"${adapter.model ?? 'blypLog'}\" delegate or its create method. Database logging is disabled.`\n );\n }\n } else if (isDrizzleAdapter(adapter)) {\n ready = hasDrizzleAdapterShape(adapter);\n\n if (!ready) {\n warnOnce(\n 'database-drizzle-missing',\n '[Blyp] Warning: Drizzle database adapter is missing a db.insert function or table reference. Database logging is disabled.'\n );\n }\n }\n\n const normalizedAdapter = isPrismaAdapter(adapter)\n ? {\n ...adapter,\n model: adapter.model ?? 'blypLog',\n }\n : adapter;\n\n return {\n dialect: config.dialect,\n adapter: normalizedAdapter,\n delivery: mergeDatabaseDeliveryConfig(undefined, config.delivery),\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction mergeRotationConfig(\n base: LogRotationConfig | undefined,\n override: LogRotationConfig | undefined\n): Required<LogRotationConfig> {\n return {\n ...DEFAULT_ROTATION_CONFIG,\n ...base,\n ...override,\n };\n}\n\nfunction mergeFileConfig(\n base: LogFileConfig | undefined,\n override: LogFileConfig | undefined\n): Required<LogFileConfig> {\n return {\n ...DEFAULT_FILE_CONFIG,\n ...base,\n ...override,\n rotation: mergeRotationConfig(base?.rotation, override?.rotation),\n };\n}\n\nfunction mergeClientLoggingConfig(\n base: ClientLoggingConfig | undefined,\n override: ClientLoggingConfig | undefined\n): Required<ClientLoggingConfig> {\n return {\n ...DEFAULT_CLIENT_LOGGING_CONFIG,\n ...base,\n ...override,\n path: override?.path ?? base?.path ?? DEFAULT_CLIENT_LOGGING_CONFIG.path,\n };\n}\n\nfunction mergeDatabaseLoggerConfig(\n base: DatabaseLoggerConfig | undefined,\n override: DatabaseLoggerConfig | undefined,\n sourceType?: ConfigFileMatch['type']\n): ResolvedDatabaseLoggerConfig | undefined {\n if (!base && !override) {\n return undefined;\n }\n\n return resolveDatabaseLoggerConfig(\n {\n dialect: override?.dialect ?? base?.dialect,\n adapter: override?.adapter ?? base?.adapter,\n delivery: {\n ...(base?.delivery ?? {}),\n ...(override?.delivery ?? {}),\n retry: {\n ...(base?.delivery?.retry ?? {}),\n ...(override?.delivery?.retry ?? {}),\n },\n },\n },\n sourceType\n );\n}\n\nfunction mergePostHogConnectorConfig(\n base: PostHogConnectorConfig | undefined,\n override: PostHogConnectorConfig | undefined\n): ResolvedPostHogConnectorConfig {\n const enabled = override?.enabled ?? base?.enabled ?? false;\n const projectKey = override?.projectKey ?? base?.projectKey;\n const baseErrorTracking = base?.enabled === true ? base?.errorTracking : undefined;\n const errorTrackingMode =\n override?.errorTracking?.mode ??\n baseErrorTracking?.mode ??\n 'auto';\n const errorTrackingEnabled =\n override?.errorTracking?.enabled ??\n baseErrorTracking?.enabled ??\n enabled;\n const errorTrackingReady =\n enabled &&\n errorTrackingEnabled &&\n typeof projectKey === 'string' &&\n projectKey.trim().length > 0;\n\n return {\n enabled,\n mode: override?.mode ?? base?.mode ?? 'auto',\n projectKey,\n host: override?.host ?? base?.host ?? DEFAULT_POSTHOG_HOST,\n serviceName:\n override?.serviceName ??\n base?.serviceName ??\n resolveDefaultConnectorServiceName(),\n errorTracking: {\n enabled: errorTrackingEnabled,\n mode: errorTrackingMode,\n enableExceptionAutocapture:\n override?.errorTracking?.enableExceptionAutocapture ??\n baseErrorTracking?.enableExceptionAutocapture ??\n (errorTrackingMode === 'auto'),\n ready: errorTrackingReady,\n status: errorTrackingReady ? 'enabled' : 'missing',\n },\n };\n}\n\nfunction mergeDatabuddyConnectorConfig(\n base: DatabuddyConnectorConfig | undefined,\n override: DatabuddyConnectorConfig | undefined\n): ResolvedDatabuddyConnectorConfig {\n const enabled = override?.enabled ?? base?.enabled ?? false;\n const apiKey = override?.apiKey ?? base?.apiKey;\n const websiteId = override?.websiteId ?? base?.websiteId;\n const ready = enabled && hasNonEmptyString(apiKey) && hasNonEmptyString(websiteId);\n\n return {\n enabled,\n mode: override?.mode ?? base?.mode ?? 'auto',\n apiKey,\n websiteId,\n namespace: override?.namespace ?? base?.namespace,\n source: override?.source ?? base?.source,\n apiUrl: override?.apiUrl ?? base?.apiUrl,\n debug: override?.debug ?? base?.debug ?? false,\n enableBatching: override?.enableBatching ?? base?.enableBatching ?? true,\n batchSize: override?.batchSize ?? base?.batchSize,\n batchTimeout: override?.batchTimeout ?? base?.batchTimeout,\n maxQueueSize: override?.maxQueueSize ?? base?.maxQueueSize,\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction mergeBetterStackConnectorConfig(\n base: BetterStackConnectorConfig | undefined,\n override: BetterStackConnectorConfig | undefined\n): ResolvedBetterStackConnectorConfig {\n const sourceToken = override?.sourceToken ?? base?.sourceToken;\n const ingestingHost = override?.ingestingHost ?? base?.ingestingHost;\n const enabled = override?.enabled ?? base?.enabled ?? false;\n const baseErrorTracking = base?.enabled === true ? base?.errorTracking : undefined;\n const errorTracking = mergeBetterStackErrorTrackingConfig(\n enabled,\n baseErrorTracking,\n override?.errorTracking\n );\n const ready =\n enabled &&\n hasNonEmptyString(sourceToken) &&\n isAbsoluteHttpUrl(ingestingHost);\n\n return {\n enabled,\n mode: override?.mode ?? base?.mode ?? 'auto',\n sourceToken,\n ingestingHost,\n serviceName:\n override?.serviceName ??\n base?.serviceName ??\n resolveDefaultConnectorServiceName(),\n errorTracking,\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction mergeBetterStackErrorTrackingConfig(\n connectorEnabled: boolean,\n base: BetterStackErrorTrackingConfig | undefined,\n override: BetterStackErrorTrackingConfig | undefined\n): ResolvedBetterStackErrorTrackingConfig {\n const dsn = override?.dsn ?? base?.dsn;\n const enabled = override?.enabled ?? base?.enabled ?? connectorEnabled;\n const ready = enabled && hasNonEmptyString(dsn);\n\n return {\n enabled,\n dsn,\n tracesSampleRate: override?.tracesSampleRate ?? base?.tracesSampleRate ?? 1.0,\n environment: override?.environment ?? base?.environment,\n release: override?.release ?? base?.release,\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction mergeSentryConnectorConfig(\n base: SentryConnectorConfig | undefined,\n override: SentryConnectorConfig | undefined\n): ResolvedSentryConnectorConfig {\n const dsn = override?.dsn ?? base?.dsn;\n const enabled = override?.enabled ?? base?.enabled ?? false;\n const ready = enabled && typeof dsn === 'string' && dsn.trim().length > 0;\n\n return {\n enabled,\n mode: override?.mode ?? base?.mode ?? 'auto',\n dsn,\n environment: override?.environment ?? base?.environment,\n release: override?.release ?? base?.release,\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction mergeOTLPConnectorConfig(\n base: OTLPConnectorConfig | undefined,\n override: OTLPConnectorConfig | undefined\n): ResolvedOTLPConnectorConfig {\n const endpoint = override?.endpoint ?? base?.endpoint;\n const enabled = override?.enabled ?? base?.enabled ?? false;\n const resolvedHeaders = {\n ...(base?.headers ?? {}),\n ...(override?.headers ?? {}),\n };\n const ready = enabled && isAbsoluteHttpUrl(endpoint);\n\n return {\n name: override?.name ?? base?.name ?? '',\n enabled,\n mode: override?.mode ?? base?.mode ?? 'auto',\n endpoint,\n headers: resolvedHeaders,\n auth: override?.auth ?? base?.auth,\n serviceName:\n override?.serviceName ??\n base?.serviceName ??\n resolveDefaultConnectorServiceName(),\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction mergeOTLPConnectorsConfig(\n base: OTLPConnectorConfig[] | undefined,\n override: OTLPConnectorConfig[] | undefined\n): ResolvedOTLPConnectorConfig[] {\n const source = override ?? base ?? [];\n const deduped = new Map<string, ResolvedOTLPConnectorConfig>();\n\n for (const connector of source) {\n if (!connector || typeof connector.name !== 'string' || connector.name.length === 0) {\n continue;\n }\n\n if (deduped.has(connector.name)) {\n warnOnce(\n `otlp-duplicate:${connector.name}`,\n `[Blyp] Warning: Duplicate OTLP connector name \"${connector.name}\" found. Using the last definition.`\n );\n }\n\n deduped.set(connector.name, mergeOTLPConnectorConfig(undefined, connector));\n }\n\n return Array.from(deduped.values());\n}\n\nfunction mergeConnectorsConfig(\n base: BlypConnectorsConfig | undefined,\n override: BlypConnectorsConfig | undefined\n): ResolvedBlypConnectorsConfig {\n return {\n betterstack: mergeBetterStackConnectorConfig(base?.betterstack, override?.betterstack),\n databuddy: mergeDatabuddyConnectorConfig(base?.databuddy, override?.databuddy),\n posthog: mergePostHogConnectorConfig(base?.posthog, override?.posthog),\n sentry: mergeSentryConnectorConfig(base?.sentry, override?.sentry),\n otlp: mergeOTLPConnectorsConfig(base?.otlp, override?.otlp),\n };\n}\n\nexport function mergeBlypConfig(\n base: BlypConfig,\n override: Partial<BlypConfig> = {},\n options: { configFileType?: ConfigFileMatch['type'] } = {}\n): ResolvedBlypConfig {\n return {\n ...base,\n ...override,\n destination: override.destination ?? base.destination ?? 'file',\n file: mergeFileConfig(base.file, override.file),\n database: mergeDatabaseLoggerConfig(base.database, override.database, options.configFileType),\n clientLogging: mergeClientLoggingConfig(base.clientLogging, override.clientLogging),\n connectors: mergeConnectorsConfig(base.connectors, override.connectors),\n };\n}\n\nexport function loadConfig(): ResolvedBlypConfig {\n if (cachedConfig !== null) {\n return cachedConfig;\n }\n\n bootstrapProjectFiles();\n const configFile = findConfigFile();\n\n if (configFile) {\n const userConfig = parseConfigFile(configFile);\n cachedConfig = mergeBlypConfig(DEFAULT_CONFIG, userConfig, {\n configFileType: configFile.type,\n });\n } else {\n cachedConfig = mergeBlypConfig(DEFAULT_CONFIG);\n }\n\n return cachedConfig;\n}\n\nexport function resolveConfig(overrides: Partial<BlypConfig> = {}): ResolvedBlypConfig {\n return mergeBlypConfig(loadConfig(), overrides);\n}\n\nexport function getConfig(): ResolvedBlypConfig {\n return loadConfig();\n}\n\nexport function resetConfigCache(): void {\n cachedConfig = null;\n warnedKeys.clear();\n}\n","import type { LogRecord } from './file-logger';\nimport type { StructuredLogPayload } from './structured-log';\nimport {\n normalizeError,\n normalizeLogValue,\n serializeLogMessage,\n} from '../shared/log-value';\nimport type { LogMethodName } from '../types/core/log-record';\n\nexport type { LogMethodName } from '../types/core/log-record';\n\nconst RECORD_LEVELS: Record<LogMethodName, string> = {\n success: 'success',\n critical: 'critical',\n warning: 'warning',\n info: 'info',\n debug: 'debug',\n error: 'error',\n warn: 'warning',\n table: 'table',\n};\n\nfunction normalizePath(filePath: string): string {\n return filePath.replace(/\\\\/g, '/');\n}\n\nfunction isInternalLoggerFrame(filePath: string): boolean {\n const normalizedPath = normalizePath(filePath);\n\n return (\n normalizedPath.startsWith('node:') ||\n normalizedPath.includes('/node_modules/pino') ||\n normalizedPath.includes('/node_modules/pino-pretty') ||\n normalizedPath.includes('/node_modules/@blyp/core/') ||\n normalizedPath.includes('/blyp/src/core/') ||\n normalizedPath.includes('/blyp/src/frameworks/') ||\n normalizedPath.includes('/blyp/src/posthog/') ||\n normalizedPath.includes('/blyp/dist/')\n );\n}\n\nfunction formatCallerPath(filePath: string): string {\n const normalizedPath = normalizePath(filePath);\n const normalizedCwd = normalizePath(process.cwd());\n return normalizedPath.startsWith(`${normalizedCwd}/`)\n ? normalizedPath.slice(normalizedCwd.length + 1)\n : normalizedPath;\n}\n\nexport function getCallerLocation(): { file: string | null; line: number | null } {\n try {\n const stack = new Error().stack;\n if (!stack) {\n return { file: null, line: null };\n }\n\n const lines = stack.split('\\n');\n let fallback: { file: string; line: number | null } | null = null;\n\n for (let index = 2; index < lines.length; index += 1) {\n const line = lines[index];\n if (!line) {\n continue;\n }\n\n const match = line.match(/\\((.*):(\\d+):\\d+\\)/) || line.match(/at\\s+(.*):(\\d+):(\\d+)/);\n if (!match) {\n continue;\n }\n\n const fileName = match[1] || '';\n const lineNumber = parseInt(match[2] || '0', 10) || null;\n\n if (fileName && !fileName.includes('node_modules') && !isInternalLoggerFrame(fileName)) {\n const formattedPath = formatCallerPath(fileName);\n const normalizedFormattedPath = normalizePath(formattedPath);\n\n if (!normalizedFormattedPath.startsWith('dist/')) {\n return { file: formattedPath, line: lineNumber };\n }\n\n fallback ??= { file: formattedPath, line: lineNumber };\n }\n }\n\n if (fallback) {\n return fallback;\n }\n } catch {\n return { file: null, line: null };\n }\n\n return { file: null, line: null };\n}\n\nexport const serializeMessage = serializeLogMessage;\n\nexport function stripAnsi(value: string): string {\n return value.replace(/\\u001b\\[[0-9;]*m/g, '');\n}\n\nexport function buildRecord(\n level: LogMethodName,\n message: unknown,\n args: unknown[],\n bindings: Record<string, unknown>\n): LogRecord {\n const { file, line } = getCallerLocation();\n const serializedMessage = serializeMessage(message);\n const record: LogRecord = {\n timestamp: new Date().toISOString(),\n level: RECORD_LEVELS[level],\n message: stripAnsi(serializedMessage),\n };\n\n if (message instanceof Error) {\n record.error = normalizeError(message);\n }\n\n if (file) {\n record.caller = line !== null ? `${file}:${line}` : file;\n }\n\n if (args.length === 1) {\n record.data = normalizeLogValue(args[0]);\n } else if (args.length > 1) {\n record.data = normalizeLogValue(args);\n }\n\n if (Object.keys(bindings).length > 0) {\n record.bindings = normalizeLogValue(bindings) as Record<string, unknown>;\n }\n\n return record;\n}\n\nexport function buildStructuredRecord(\n level: LogMethodName,\n message: string,\n payload: StructuredLogPayload,\n bindings: Record<string, unknown>\n): LogRecord {\n const { file, line } = getCallerLocation();\n const normalizedPayload = normalizeLogValue(payload) as StructuredLogPayload;\n const record: LogRecord = {\n message: stripAnsi(message),\n ...normalizedPayload,\n };\n\n if (file) {\n record.caller = line !== null ? `${file}:${line}` : file;\n }\n\n if (Object.keys(bindings).length > 0) {\n record.bindings = normalizeLogValue(bindings) as Record<string, unknown>;\n }\n\n record.level =\n typeof normalizedPayload.level === 'string' && normalizedPayload.level.length > 0\n ? normalizedPayload.level\n : RECORD_LEVELS[level];\n record.timestamp =\n typeof normalizedPayload.timestamp === 'string' && normalizedPayload.timestamp.length > 0\n ? normalizedPayload.timestamp\n : new Date().toISOString();\n\n return record;\n}\n\nexport function resolveStructuredWriteLevel(level: StructuredLogPayload['level']): LogMethodName {\n switch (level) {\n case 'debug':\n return 'debug';\n case 'warning':\n return 'warning';\n case 'warn':\n return 'warn';\n case 'error':\n return 'error';\n case 'success':\n return 'success';\n case 'critical':\n return 'critical';\n case 'table':\n return 'table';\n case 'info':\n default:\n return 'info';\n }\n}\n","import fs from 'fs';\nimport path from 'path';\nimport { gzipSync } from 'fflate';\nimport type { BlypConfig } from './config';\nimport type {\n FileLoggerDependencies,\n LogRecord,\n ResolvedFileLoggerConfig,\n StreamState,\n} from '../types/core/file-logger';\n\nexport type { LogRecord } from '../types/core/file-logger';\n\nfunction gzipBuffer(buf: Buffer): Buffer {\n return Buffer.from(gzipSync(buf));\n}\n\nfunction warnWithConsole(message: string, error?: unknown): void {\n console.warn(`[Blyp] Warning: ${message}`, error);\n}\n\nfunction ensureDirectory(dirPath: string): void {\n fs.mkdirSync(dirPath, { recursive: true });\n}\n\nfunction getFileSize(filePath: string): number {\n try {\n return fs.statSync(filePath).size;\n } catch {\n return 0;\n }\n}\n\nfunction formatArchiveTimestamp(timestamp: Date): string {\n const year = timestamp.getUTCFullYear();\n const month = String(timestamp.getUTCMonth() + 1).padStart(2, '0');\n const day = String(timestamp.getUTCDate()).padStart(2, '0');\n const hours = String(timestamp.getUTCHours()).padStart(2, '0');\n const minutes = String(timestamp.getUTCMinutes()).padStart(2, '0');\n const seconds = String(timestamp.getUTCSeconds()).padStart(2, '0');\n return `${year}${month}${day}T${hours}${minutes}${seconds}Z`;\n}\n\nfunction getUniqueArchivePath(basePath: string, extension: string): string {\n let candidate = `${basePath}${extension}`;\n let suffix = 1;\n\n while (fs.existsSync(candidate)) {\n candidate = `${basePath}-${suffix}${extension}`;\n suffix += 1;\n }\n\n return candidate;\n}\n\nfunction pruneArchives(\n archiveDir: string,\n archivePrefix: string,\n maxArchives: number,\n warn: (message: string, error?: unknown) => void\n): void {\n const prefix = `${archivePrefix}.`;\n\n try {\n const archivePaths = fs\n .readdirSync(archiveDir)\n .filter((name) =>\n name.startsWith(prefix) &&\n (name.endsWith('.ndjson') || name.endsWith('.ndjson.gz'))\n )\n .map((name) => path.join(archiveDir, name))\n .sort((left, right) => {\n return fs.statSync(left).mtimeMs - fs.statSync(right).mtimeMs;\n });\n\n const deleteCount = Math.max(archivePaths.length - maxArchives, 0);\n\n for (let index = 0; index < deleteCount; index += 1) {\n fs.rmSync(archivePaths[index]!);\n }\n } catch (error) {\n warn(`Failed to prune archives for ${archivePrefix}`, error);\n }\n}\n\nfunction createSafeReplacer() {\n const seen = new WeakSet<object>();\n\n return (_key: string, value: unknown) => {\n if (typeof value === 'function') {\n return `[Function: ${value.name || 'anonymous'}]`;\n }\n\n if (value === undefined) {\n return '[undefined]';\n }\n\n if (typeof value === 'symbol') {\n return value.toString();\n }\n\n if (value !== null && typeof value === 'object') {\n if (seen.has(value)) {\n return '[Circular]';\n }\n\n seen.add(value);\n }\n\n return value;\n };\n}\n\nexport function serializeLogRecord(record: LogRecord): string {\n return JSON.stringify(record, createSafeReplacer());\n}\n\nfunction resolveFileLoggerConfig(config: BlypConfig): ResolvedFileLoggerConfig {\n const fileConfig = config.file;\n const dir = fileConfig?.dir || config.logDir || path.join(process.cwd(), 'logs');\n const archiveDir = fileConfig?.archiveDir || path.join(dir, 'archive');\n const rotation = fileConfig?.rotation;\n\n return {\n enabled: fileConfig?.enabled ?? true,\n dir,\n archiveDir,\n rotationEnabled: rotation?.enabled ?? true,\n maxSizeBytes: rotation?.maxSizeBytes ?? 10 * 1024 * 1024,\n maxArchives: rotation?.maxArchives ?? 5,\n compress: rotation?.compress ?? true,\n };\n}\n\nexport class RotatingFileLogger {\n private readonly config: ResolvedFileLoggerConfig;\n private readonly gzip: (input: Buffer) => Buffer;\n private readonly warn: (message: string, error?: unknown) => void;\n private readonly combined: StreamState;\n private readonly error: StreamState;\n\n constructor(config: BlypConfig, dependencies: FileLoggerDependencies = {}) {\n this.config = resolveFileLoggerConfig(config);\n this.gzip = dependencies.gzip ?? gzipBuffer;\n this.warn = dependencies.warn ?? warnWithConsole;\n this.combined = {\n activePath: path.join(this.config.dir, 'log.ndjson'),\n archivePrefix: 'log',\n bytes: 0,\n queue: [],\n processing: false,\n };\n this.error = {\n activePath: path.join(this.config.dir, 'log.error.ndjson'),\n archivePrefix: 'log.error',\n bytes: 0,\n queue: [],\n processing: false,\n };\n\n if (!this.config.enabled) {\n return;\n }\n\n ensureDirectory(this.config.dir);\n ensureDirectory(this.config.archiveDir);\n this.seedStream(this.combined);\n this.seedStream(this.error);\n }\n\n write(record: LogRecord): void {\n if (!this.config.enabled) {\n return;\n }\n\n const line = `${serializeLogRecord(record)}\\n`;\n this.enqueue(this.combined, line);\n\n if (record.level === 'error' || record.level === 'critical') {\n this.enqueue(this.error, line);\n }\n }\n\n private enqueue(stream: StreamState, line: string): void {\n stream.queue.push(line);\n this.processQueue(stream);\n }\n\n private processQueue(stream: StreamState): void {\n if (stream.processing) {\n return;\n }\n\n stream.processing = true;\n\n try {\n while (stream.queue.length > 0) {\n const queuedLine = stream.queue.shift();\n if (queuedLine === undefined) {\n continue;\n }\n\n try {\n this.append(stream, queuedLine);\n } catch (error) {\n this.warn(`Failed writing log line for ${stream.archivePrefix}`, error);\n }\n }\n } finally {\n stream.processing = false;\n }\n }\n\n private seedStream(stream: StreamState): void {\n stream.bytes = getFileSize(stream.activePath);\n\n if (this.config.rotationEnabled && stream.bytes > this.config.maxSizeBytes && stream.bytes > 0) {\n this.rotate(stream);\n fs.closeSync(fs.openSync(stream.activePath, 'a'));\n stream.bytes = 0;\n }\n }\n\n private append(stream: StreamState, line: string): void {\n ensureDirectory(this.config.dir);\n const lineBytes = Buffer.byteLength(line, 'utf8');\n\n if (\n this.config.rotationEnabled &&\n stream.bytes > 0 &&\n stream.bytes + lineBytes > this.config.maxSizeBytes\n ) {\n this.rotate(stream);\n }\n\n fs.appendFileSync(stream.activePath, line, 'utf8');\n stream.bytes += lineBytes;\n }\n\n private rotate(stream: StreamState): void {\n ensureDirectory(this.config.archiveDir);\n if (!fs.existsSync(stream.activePath) || stream.bytes === 0) {\n stream.bytes = 0;\n return;\n }\n\n const archiveTimestamp = formatArchiveTimestamp(new Date());\n const archiveBasePath = path.join(\n this.config.archiveDir,\n `${stream.archivePrefix}.${archiveTimestamp}`\n );\n const archivePath = getUniqueArchivePath(archiveBasePath, '.ndjson');\n\n fs.renameSync(stream.activePath, archivePath);\n\n if (this.config.compress) {\n try {\n const compressedPath = `${archivePath}.gz`;\n const gzipped = this.gzip(fs.readFileSync(archivePath));\n fs.writeFileSync(compressedPath, gzipped);\n fs.rmSync(archivePath);\n } catch (error) {\n this.warn(`Failed to gzip archive ${archivePath}`, error);\n }\n }\n\n stream.bytes = 0;\n pruneArchives(this.config.archiveDir, stream.archivePrefix, this.config.maxArchives, this.warn);\n }\n}\n\nexport function createFileLogger(config: BlypConfig): RotatingFileLogger {\n return new RotatingFileLogger(config);\n}\n","import type { LogRecord } from '../file-logger';\nimport { createFileLogger, type RotatingFileLogger } from '../file-logger';\nimport type { BlypConfig } from '../config';\nimport type { BlypPrimarySink } from '../primary-sink';\n\nexport class FilePrimarySink implements BlypPrimarySink {\n readonly isAsync = false;\n\n readonly isReady = true;\n\n constructor(private readonly logger: RotatingFileLogger) {}\n\n write(record: LogRecord): void {\n this.logger.write(record);\n }\n\n async flush(): Promise<void> {}\n\n async shutdown(): Promise<void> {}\n}\n\nexport function createFilePrimarySink(config: BlypConfig): FilePrimarySink {\n return new FilePrimarySink(createFileLogger(config));\n}\n","import type { DatabaseLogRow, DrizzleDatabaseAdapterConfig } from '../../types/database';\nimport type { DatabaseRowWriter } from './prisma';\n\ninterface DrizzleInsertBuilder {\n values: (rows: DatabaseLogRow | DatabaseLogRow[]) => Promise<unknown>;\n}\n\ninterface DrizzleDatabaseLike {\n insert: (table: unknown) => DrizzleInsertBuilder;\n}\n\nexport function createDrizzleDatabaseAdapter(config: {\n db: unknown;\n table: unknown;\n}): DrizzleDatabaseAdapterConfig {\n return {\n type: 'drizzle',\n db: config.db,\n table: config.table,\n };\n}\n\nexport function createDrizzleRowWriter(\n adapter: DrizzleDatabaseAdapterConfig\n): DatabaseRowWriter {\n const db = adapter.db as DrizzleDatabaseLike;\n\n if (typeof db?.insert !== 'function' || adapter.table === undefined) {\n throw new Error(\n '[Blyp] Drizzle database adapter is missing a db.insert function or table reference.'\n );\n }\n\n return {\n async insert(rows: DatabaseLogRow[]): Promise<void> {\n if (rows.length === 0) {\n return;\n }\n\n await db.insert(adapter.table).values(rows);\n },\n };\n}\n","import type { DatabaseLogRow, PrismaDatabaseAdapterConfig } from '../../types/database';\n\ninterface PrismaDelegate {\n create: (args: { data: DatabaseLogRow }) => Promise<unknown>;\n createMany?: (args: { data: DatabaseLogRow[] }) => Promise<unknown>;\n}\n\ninterface PrismaClientLike {\n $transaction?: (operations: Array<Promise<unknown>>) => Promise<unknown>;\n [key: string]: unknown;\n}\n\nexport interface DatabaseRowWriter {\n insert: (rows: DatabaseLogRow[]) => Promise<void>;\n}\n\nfunction shouldFallbackFromCreateMany(error: unknown): boolean {\n const message = String(error ?? '');\n\n return (\n message.includes('createMany') ||\n message.includes('Unknown argument') ||\n message.includes('not supported') ||\n message.includes('is not a function')\n );\n}\n\nexport function createPrismaDatabaseAdapter(config: {\n client: unknown;\n model?: string;\n}): PrismaDatabaseAdapterConfig {\n return {\n type: 'prisma',\n client: config.client,\n model: config.model ?? 'blypLog',\n };\n}\n\nexport function createPrismaRowWriter(\n adapter: PrismaDatabaseAdapterConfig\n): DatabaseRowWriter {\n const client = adapter.client as PrismaClientLike;\n const model = adapter.model ?? 'blypLog';\n const delegateCandidate = client[model] as PrismaDelegate | undefined;\n\n if (!delegateCandidate || typeof delegateCandidate.create !== 'function') {\n throw new Error(\n `[Blyp] Prisma database adapter is missing the \"${model}\" delegate or its create method.`\n );\n }\n\n const delegate: PrismaDelegate = delegateCandidate;\n\n let useCreateMany = typeof delegate.createMany === 'function';\n\n async function fallbackInsert(rows: DatabaseLogRow[]): Promise<void> {\n if (typeof client.$transaction === 'function') {\n await client.$transaction(\n rows.map((row) => delegate.create({ data: row }))\n );\n return;\n }\n\n for (const row of rows) {\n await delegate.create({ data: row });\n }\n }\n\n return {\n async insert(rows: DatabaseLogRow[]): Promise<void> {\n if (rows.length === 0) {\n return;\n }\n\n if (rows.length === 1) {\n await delegate.create({ data: rows[0]! });\n return;\n }\n\n if (!useCreateMany || typeof delegate.createMany !== 'function') {\n await fallbackInsert(rows);\n return;\n }\n\n try {\n await delegate.createMany({ data: rows });\n } catch (error) {\n if (!shouldFallbackFromCreateMany(error)) {\n throw error;\n }\n\n useCreateMany = false;\n await fallbackInsert(rows);\n }\n },\n };\n}\n","import { randomUUID } from 'crypto';\nimport { normalizeLogValue } from '../shared/log-value';\nimport type {\n DatabaseAdapterConfig,\n DatabaseLogRow,\n PrismaDatabaseAdapterConfig,\n DrizzleDatabaseAdapterConfig,\n ResolvedDatabaseLoggerConfig,\n} from '../types/database';\nimport type { LogRecord } from '../core/file-logger';\nimport { createDrizzleRowWriter } from './adapters/drizzle';\nimport { createPrismaRowWriter, type DatabaseRowWriter } from './adapters/prisma';\n\nfunction normalizeNullableNumber(value: unknown): number | null {\n return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeNullableString(value: unknown): string | null {\n return typeof value === 'string' && value.length > 0 ? value : null;\n}\n\nfunction parseTimestamp(value: unknown): Date {\n if (typeof value === 'string') {\n const timestamp = new Date(value);\n if (!Number.isNaN(timestamp.getTime())) {\n return timestamp;\n }\n }\n\n return new Date();\n}\n\nexport function toDatabaseLogRow(record: LogRecord): DatabaseLogRow {\n const normalizedRecord = normalizeLogValue(record) as LogRecord;\n\n return {\n id: randomUUID(),\n timestamp: parseTimestamp(record.timestamp),\n level: record.level,\n message: record.message,\n caller: normalizeNullableString(record.caller),\n type: normalizeNullableString(record.type),\n groupId: normalizeNullableString(record.groupId),\n method: normalizeNullableString(record.method),\n path: normalizeNullableString(record.path),\n status: normalizeNullableNumber(record.status),\n duration: normalizeNullableNumber(record.duration),\n hasError: normalizedRecord.error != null,\n data: normalizedRecord.data ?? null,\n bindings: (normalizedRecord.bindings as Record<string, unknown> | undefined) ?? null,\n error: (normalizedRecord.error as Record<string, unknown> | undefined) ?? null,\n events: (normalizedRecord.events as unknown[] | undefined) ?? null,\n record: normalizedRecord,\n createdAt: new Date(),\n };\n}\n\nfunction isPrismaAdapter(\n adapter: DatabaseAdapterConfig | undefined\n): adapter is PrismaDatabaseAdapterConfig {\n return !!adapter && adapter.type === 'prisma';\n}\n\nfunction isDrizzleAdapter(\n adapter: DatabaseAdapterConfig | undefined\n): adapter is DrizzleDatabaseAdapterConfig {\n return !!adapter && adapter.type === 'drizzle';\n}\n\nexport function createDatabaseRowWriter(\n config: ResolvedDatabaseLoggerConfig\n): DatabaseRowWriter {\n if (isPrismaAdapter(config.adapter)) {\n return createPrismaRowWriter(config.adapter);\n }\n\n if (isDrizzleAdapter(config.adapter)) {\n return createDrizzleRowWriter(config.adapter);\n }\n\n throw new Error('[Blyp] Unsupported database adapter configuration.');\n}\n","import { createWarnOnceLogger } from '../../shared/once';\nimport type { LogRecord } from '../file-logger';\nimport type { BlypPrimarySink } from '../primary-sink';\nimport type { DatabaseLogRow, ResolvedDatabaseLoggerConfig } from '../../types/database';\nimport { createDatabaseRowWriter, toDatabaseLogRow } from '../../database/helpers';\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nexport class DatabasePrimarySink implements BlypPrimarySink {\n readonly isAsync = true;\n\n readonly isReady = true;\n\n private readonly warnOnce = createWarnOnceLogger(new Set<string>());\n\n private readonly queue: DatabaseLogRow[] = [];\n\n private readonly writer;\n\n private timer: ReturnType<typeof setTimeout> | null = null;\n\n private processing = false;\n\n private closed = false;\n\n private terminalError: Error | null = null;\n\n private activeDispatch: Promise<void> | null = null;\n\n constructor(private readonly config: ResolvedDatabaseLoggerConfig) {\n this.writer = createDatabaseRowWriter(config);\n }\n\n write(record: LogRecord): void {\n if (this.closed) {\n return;\n }\n\n this.enqueue(toDatabaseLogRow(record));\n this.scheduleDispatch();\n }\n\n async flush(): Promise<void> {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n const flushPromise = (async () => {\n await this.drain();\n if (this.terminalError) {\n throw this.terminalError;\n }\n })();\n\n let timeoutHandle: ReturnType<typeof setTimeout> | null = null;\n\n try {\n await Promise.race([\n flushPromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n this.warnOnce(\n 'database-flush-timeout',\n `[Blyp] Warning: Timed out flushing database logs after ${this.config.delivery.flushTimeoutMs}ms.`\n );\n reject(new Error('[Blyp] Timed out flushing database logs.'));\n }, this.config.delivery.flushTimeoutMs);\n }),\n ]);\n } finally {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n }\n }\n\n async shutdown(): Promise<void> {\n this.closed = true;\n await this.flush();\n }\n\n private enqueue(row: DatabaseLogRow): void {\n this.queue.push(row);\n\n const overflow = this.queue.length - this.config.delivery.maxQueueSize;\n if (overflow <= 0) {\n return;\n }\n\n this.warnOnce(\n 'database-overflow',\n `[Blyp] Warning: Database log queue exceeded ${this.config.delivery.maxQueueSize} entries. Applying ${this.config.delivery.overflowStrategy} overflow handling.`\n );\n\n if (this.config.delivery.overflowStrategy === 'drop-new') {\n this.queue.splice(this.config.delivery.maxQueueSize);\n return;\n }\n\n this.queue.splice(0, overflow);\n }\n\n private scheduleDispatch(): void {\n if (this.processing) {\n return;\n }\n\n if (this.config.delivery.strategy === 'immediate') {\n void this.drain();\n return;\n }\n\n if (this.queue.length >= this.config.delivery.batchSize) {\n void this.drain();\n return;\n }\n\n if (this.timer) {\n return;\n }\n\n this.timer = setTimeout(() => {\n this.timer = null;\n void this.drain();\n }, this.config.delivery.flushIntervalMs);\n }\n\n private async drain(): Promise<void> {\n if (this.processing) {\n if (this.activeDispatch) {\n await this.activeDispatch;\n }\n return;\n }\n\n this.processing = true;\n this.activeDispatch = this.processQueue();\n\n try {\n await this.activeDispatch;\n } finally {\n this.processing = false;\n this.activeDispatch = null;\n }\n }\n\n private async processQueue(): Promise<void> {\n while (this.queue.length > 0) {\n const batchSize = this.config.delivery.strategy === 'batch'\n ? Math.max(1, this.config.delivery.batchSize)\n : 1;\n const batch = this.queue.splice(0, batchSize);\n\n try {\n await this.insertWithRetry(batch);\n } catch (error) {\n const failure = error instanceof Error\n ? error\n : new Error(String(error ?? 'Unknown database logging failure'));\n this.terminalError = failure;\n this.warnOnce(\n 'database-insert-failure',\n `[Blyp] Warning: Failed to persist logs to the ${this.config.dialect ?? 'database'} database.`,\n failure\n );\n throw failure;\n }\n }\n }\n\n private async insertWithRetry(batch: DatabaseLogRow[]): Promise<void> {\n const maxAttempts = Math.max(1, this.config.delivery.retry.maxRetries + 1);\n let attempt = 0;\n\n while (attempt < maxAttempts) {\n attempt += 1;\n\n try {\n await this.writer.insert(batch);\n return;\n } catch (error) {\n if (attempt >= maxAttempts) {\n throw error;\n }\n\n await delay(this.config.delivery.retry.backoffMs);\n }\n }\n }\n}\n","import { createWarnOnceLogger } from '../shared/once';\nimport type { BlypConfig } from './config';\nimport type { LogRecord } from './file-logger';\nimport type { ResolvedDatabaseLoggerConfig } from '../types/database';\nimport { createFilePrimarySink } from './sinks/file-primary-sink';\nimport { DatabasePrimarySink } from './sinks/database-primary-sink';\n\nexport interface BlypPrimarySink {\n write(record: LogRecord): void;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n readonly isAsync: boolean;\n readonly isReady: boolean;\n}\n\nclass NoopPrimarySink implements BlypPrimarySink {\n readonly isAsync = false;\n\n readonly isReady = false;\n\n write(_record: LogRecord): void {}\n\n async flush(): Promise<void> {}\n\n async shutdown(): Promise<void> {}\n}\n\nconst warnOnce = createWarnOnceLogger(new Set<string>());\n\nexport function createPrimarySink(config: BlypConfig): BlypPrimarySink {\n if (config.destination !== 'database') {\n return createFilePrimarySink(config);\n }\n\n const databaseConfig = config.database as ResolvedDatabaseLoggerConfig | undefined;\n if (!databaseConfig?.ready) {\n warnOnce(\n 'database-sink-disabled',\n '[Blyp] Warning: Database destination is configured but not ready. Falling back to a no-op primary sink.'\n );\n return new NoopPrimarySink();\n }\n\n return new DatabasePrimarySink(databaseConfig);\n}\n","import type { BlypConfig } from '../core/config';\nimport type { LogRecord } from '../core/file-logger';\nimport { isPlainObject } from '../shared/validation';\n\nexport function isBlypConfig(config: unknown): config is BlypConfig {\n return isPlainObject(config) && (\n 'connectors' in config ||\n 'pretty' in config ||\n 'level' in config\n );\n}\n\nexport function getPrimaryPayload(record: LogRecord): Record<string, unknown> {\n return isPlainObject(record.data) ? record.data : record;\n}\n\nexport function getField<T extends string | number>(\n record: LogRecord,\n key: string\n): T | undefined {\n if (key in record) {\n const direct = record[key];\n if (typeof direct === 'string' || typeof direct === 'number') {\n return direct as T;\n }\n }\n\n const payload = getPrimaryPayload(record);\n const nested = payload[key];\n if (typeof nested === 'string' || typeof nested === 'number') {\n return nested as T;\n }\n\n return undefined;\n}\n\nexport function getClientPageField(\n record: LogRecord,\n key: 'pathname' | 'url'\n): string | undefined {\n const payload = getPrimaryPayload(record);\n const page = isPlainObject(payload.page) ? payload.page : undefined;\n const value = page?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nexport function getClientSessionField(\n record: LogRecord,\n key: 'sessionId' | 'pageId'\n): string | undefined {\n const payload = getPrimaryPayload(record);\n const session = isPlainObject(payload.session) ? payload.session : undefined;\n const value = session?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nexport function getRecordType(record: LogRecord): string | undefined {\n return getField<string>(record, 'type');\n}\n","import * as Sentry from '@sentry/node';\nimport { Logtail } from '@logtail/node';\nimport type {\n BetterStackConnectorConfig,\n BlypConfig,\n ResolvedBetterStackConnectorConfig,\n} from '../../core/config';\nimport type { LogRecord } from '../../core/file-logger';\nimport { serializeLogRecord } from '../../core/file-logger';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport { hasNonEmptyString, isAbsoluteHttpUrl, isPlainObject } from '../../shared/validation';\nimport type {\n BetterStackClientLike,\n BetterStackExceptionCaptureOptions,\n BetterStackLogSource,\n BetterStackSender,\n BetterStackTestHooks,\n} from '../../types/connectors/betterstack';\nimport type { SentryModuleLike } from '../../types/connectors/sentry';\nimport {\n getClientPageField,\n getClientSessionField,\n getField,\n getPrimaryPayload,\n getRecordType,\n isBlypConfig,\n} from '../shared';\n\nconst PREVIOUSLY_CAPTURED_ERROR_KEY = '__betterstack_previously_captured_error';\nconst warnedKeys = new Set<string>();\nlet testHooks: BetterStackTestHooks = {};\nconst warnOnce = createErrorOnceLogger(warnedKeys);\n\nfunction getSentryModule(): SentryModuleLike {\n return testHooks.module ?? (Sentry as unknown as SentryModuleLike);\n}\n\nfunction resolveConnectorConfig(\n config: BlypConfig | ResolvedBetterStackConnectorConfig | BetterStackConnectorConfig\n): ResolvedBetterStackConnectorConfig {\n const connector = isBlypConfig(config)\n ? config.connectors?.betterstack\n : config;\n const enabled = connector?.enabled ?? false;\n const sourceToken = connector?.sourceToken;\n const ingestingHost = connector?.ingestingHost;\n const errorTrackingEnabled = connector?.errorTracking?.enabled ?? enabled;\n const errorTrackingDsn = connector?.errorTracking?.dsn;\n const errorTrackingReady =\n enabled &&\n errorTrackingEnabled &&\n hasNonEmptyString(errorTrackingDsn);\n const ready =\n enabled &&\n hasNonEmptyString(sourceToken) &&\n isAbsoluteHttpUrl(ingestingHost);\n\n return {\n enabled,\n mode: connector?.mode ?? 'auto',\n sourceToken,\n ingestingHost,\n serviceName: connector?.serviceName ?? 'blyp-app',\n errorTracking: {\n enabled: errorTrackingEnabled,\n dsn: errorTrackingDsn,\n tracesSampleRate: connector?.errorTracking?.tracesSampleRate ?? 1.0,\n environment: connector?.errorTracking?.environment,\n release: connector?.errorTracking?.release,\n ready: errorTrackingReady,\n status: errorTrackingReady ? 'enabled' : 'missing',\n },\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction resolveBetterStackLevel(level: string): string {\n switch (level) {\n case 'debug':\n return 'debug';\n case 'warning':\n case 'warn':\n return 'warn';\n case 'error':\n return 'error';\n case 'critical':\n return 'fatal';\n case 'success':\n case 'table':\n case 'info':\n default:\n return 'info';\n }\n}\n\nfunction parseCaller(caller: unknown): { file?: string; line?: number } {\n if (typeof caller !== 'string' || caller.trim().length === 0) {\n return {};\n }\n\n const match = caller.match(/^(.*):(\\d+)$/);\n if (!match) {\n return {};\n }\n\n const file = match[1]?.trim();\n const line = Number.parseInt(match[2] ?? '', 10);\n\n return {\n ...(file ? { file } : {}),\n ...(Number.isFinite(line) ? { line } : {}),\n };\n}\n\nfunction buildContext(\n record: LogRecord,\n connector: ResolvedBetterStackConnectorConfig,\n source: BetterStackLogSource\n): Record<string, unknown> {\n const recordType = getRecordType(record);\n const groupId = getField<string>(record, 'groupId');\n const method = getField<string>(record, 'method');\n const path = getField<string>(record, 'path');\n const status = getField<number>(record, 'status');\n const duration = getField<number>(record, 'duration');\n const pagePath = getClientPageField(record, 'pathname');\n const pageUrl = getClientPageField(record, 'url');\n const sessionId = getClientSessionField(record, 'sessionId');\n const pageId = getClientSessionField(record, 'pageId');\n const runtime = parseCaller(record.caller);\n\n return {\n service: connector.serviceName,\n context: {\n blyp: {\n level: record.level,\n source,\n ...(recordType ? { type: recordType } : {}),\n ...(groupId ? { group_id: groupId } : {}),\n ...(record.caller ? { caller: record.caller } : {}),\n ...(duration !== undefined ? { duration_ms: duration } : {}),\n ...(record.bindings ? { bindings: record.bindings } : {}),\n payload: serializeLogRecord(record),\n },\n ...(method || path || status !== undefined\n ? {\n http: {\n ...(method ? { method } : {}),\n ...(path ? { path } : {}),\n ...(status !== undefined ? { status_code: status } : {}),\n },\n }\n : {}),\n ...(pagePath || pageUrl || sessionId || pageId\n ? {\n client: {\n ...(pagePath ? { page_path: pagePath } : {}),\n ...(pageUrl ? { page_url: pageUrl } : {}),\n ...(sessionId ? { session_id: sessionId } : {}),\n ...(pageId ? { page_id: pageId } : {}),\n },\n }\n : {}),\n ...(Object.keys(runtime).length > 0 ? { runtime } : {}),\n ...(record.data !== undefined ? { data: record.data } : {}),\n ...(record.error !== undefined ? { error: record.error } : {}),\n },\n };\n}\n\nfunction toExceptionCandidate(value: unknown): unknown {\n if (!isPlainObject(value)) {\n return undefined;\n }\n\n const message = typeof value.message === 'string' ? value.message : undefined;\n const name = typeof value.name === 'string' ? value.name : undefined;\n const stack = typeof value.stack === 'string' ? value.stack : undefined;\n\n if (!message && !name && !stack) {\n return undefined;\n }\n\n const error = new Error(message ?? name ?? 'Unknown error');\n error.name = name ?? 'Error';\n if (stack) {\n error.stack = stack;\n }\n\n for (const [key, entry] of Object.entries(value)) {\n if (key === 'message' || key === 'name' || key === 'stack') {\n continue;\n }\n\n ((error as unknown) as Record<string, unknown>)[key] = entry;\n }\n\n return error;\n}\n\nfunction normalizeScopeLevel(level: string): Sentry.SeverityLevel {\n switch (level) {\n case 'debug':\n return 'debug';\n case 'warning':\n case 'warn':\n return 'warning';\n case 'critical':\n return 'fatal';\n case 'error':\n return 'error';\n case 'success':\n case 'table':\n case 'info':\n default:\n return 'info';\n }\n}\n\nfunction normalizeExceptionInput(input: unknown): unknown {\n if (input instanceof Error) {\n return input;\n }\n\n const direct = toExceptionCandidate(input);\n if (direct) {\n return direct;\n }\n\n if (typeof input === 'string') {\n return new Error(input);\n }\n\n return new Error('Unknown Better Stack exception');\n}\n\nfunction isPreviouslyCapturedError(value: unknown): boolean {\n return isPlainObject(value) && value[PREVIOUSLY_CAPTURED_ERROR_KEY] === true;\n}\n\nfunction markCapturedError(value: unknown): void {\n if (!isPlainObject(value) || isPreviouslyCapturedError(value)) {\n return;\n }\n\n try {\n Object.defineProperty(value, PREVIOUSLY_CAPTURED_ERROR_KEY, {\n value: true,\n enumerable: false,\n configurable: true,\n writable: true,\n });\n } catch {\n try {\n value[PREVIOUSLY_CAPTURED_ERROR_KEY] = true;\n } catch {}\n }\n}\n\nfunction createDefaultClient(\n connector: ResolvedBetterStackConnectorConfig\n): BetterStackClientLike {\n return new Logtail(connector.sourceToken ?? '', {\n endpoint: connector.ingestingHost,\n captureStackContext: false,\n }) as BetterStackClientLike;\n}\n\nfunction getClientOptions(client: ReturnType<SentryModuleLike['getClient']>): {\n dsn?: unknown;\n environment?: unknown;\n release?: unknown;\n} {\n return client?.getOptions?.() ?? {};\n}\n\nfunction registerShutdownHooks(key: string, flush: () => Promise<void>): void {\n const handlers: Array<NodeJS.Signals | 'beforeExit'> = ['beforeExit', 'SIGINT', 'SIGTERM'];\n\n for (const event of handlers) {\n process.once(event, () => {\n void flush().catch((error) => {\n warnOnce(\n `${key}:shutdown`,\n '[Blyp] Failed to flush Better Stack logs during shutdown.',\n error\n );\n });\n });\n }\n}\n\nexport function createBetterStackSender(\n config: BlypConfig | ResolvedBetterStackConnectorConfig | BetterStackConnectorConfig\n): BetterStackSender {\n const connector = resolveConnectorConfig(config);\n const key = `${connector.serviceName}:${connector.ingestingHost ?? 'missing'}:${connector.mode}`;\n const sentryModule = getSentryModule();\n const client = connector.ready\n ? (testHooks.createClient?.(connector) ?? createDefaultClient(connector))\n : undefined;\n let sentryClient = connector.errorTracking.enabled\n ? sentryModule?.getClient?.()\n : undefined;\n\n if (sentryClient) {\n const options = getClientOptions(sentryClient);\n if (\n (hasNonEmptyString(connector.errorTracking.dsn) && connector.errorTracking.dsn !== options.dsn) ||\n (hasNonEmptyString(connector.errorTracking.environment) && connector.errorTracking.environment !== options.environment) ||\n (hasNonEmptyString(connector.errorTracking.release) && connector.errorTracking.release !== options.release)\n ) {\n warnOnce(\n `betterstack-error-mismatch:${key}`,\n '[Blyp] Sentry is already initialized with different options. Reusing the existing Sentry client for Better Stack error tracking.'\n );\n }\n }\n\n if (\n !sentryClient &&\n connector.errorTracking.enabled &&\n hasNonEmptyString(connector.errorTracking.dsn) &&\n sentryModule\n ) {\n try {\n sentryModule.init({\n dsn: connector.errorTracking.dsn,\n tracesSampleRate: connector.errorTracking.tracesSampleRate,\n environment: connector.errorTracking.environment,\n release: connector.errorTracking.release,\n });\n sentryClient = sentryModule.getClient();\n } catch (error) {\n warnOnce(\n `betterstack-error-init:${key}`,\n '[Blyp] Failed to initialize Better Stack error tracking.',\n error\n );\n }\n }\n\n const errorTrackingReady = connector.errorTracking.enabled && sentryClient !== undefined;\n\n if (client || errorTrackingReady) {\n registerShutdownHooks(key, async () => {\n if (client) {\n await client.flush();\n }\n if (errorTrackingReady) {\n await sentryModule.flush(2000);\n }\n });\n }\n\n const emitUnavailableWarning = (): void => {\n warnOnce(\n `betterstack-unavailable:${key}`,\n '[Blyp] Better Stack connector is not configured or not ready. Skipping Better Stack delivery.'\n );\n };\n\n const emitExceptionUnavailableWarning = (): void => {\n warnOnce(\n `betterstack-exception-unavailable:${key}`,\n '[Blyp] Better Stack error tracking is not configured. Skipping Better Stack exception capture.'\n );\n };\n\n return {\n enabled: connector.enabled,\n ready: connector.ready,\n mode: connector.mode,\n serviceName: connector.serviceName,\n ingestingHost: connector.ingestingHost,\n status: connector.status,\n errorTracking: {\n enabled: connector.errorTracking.enabled,\n ready: errorTrackingReady,\n status: errorTrackingReady ? 'enabled' : 'missing',\n dsn: connector.errorTracking.dsn,\n tracesSampleRate: connector.errorTracking.tracesSampleRate,\n environment: connector.errorTracking.environment,\n release: connector.errorTracking.release,\n },\n shouldAutoForwardServerLogs() {\n return connector.ready && connector.mode === 'auto';\n },\n shouldAutoCaptureExceptions() {\n return errorTrackingReady;\n },\n send(record, options = {}) {\n if (!connector.ready || !client) {\n if (options.warnIfUnavailable) {\n emitUnavailableWarning();\n }\n return;\n }\n\n const source = options.source ?? 'server';\n void client.log(\n record.message,\n resolveBetterStackLevel(record.level),\n buildContext(record, connector, source)\n ).catch((error) => {\n warnOnce(\n `betterstack-send:${key}`,\n '[Blyp] Failed to deliver log to Better Stack.',\n error\n );\n });\n },\n captureException(error, options: BetterStackExceptionCaptureOptions = {}) {\n if (!errorTrackingReady || !sentryModule) {\n if (options.warnIfUnavailable) {\n emitExceptionUnavailableWarning();\n }\n return;\n }\n\n if (isPreviouslyCapturedError(error)) {\n return;\n }\n\n try {\n const exception = normalizeExceptionInput(error);\n sentryModule.withScope((scope) => {\n scope.setLevel(\n normalizeScopeLevel(\n options.source === 'client' ? 'error' : 'error'\n )\n );\n scope.setContext('blyp', {\n source: options.source ?? 'server',\n ...(options.context ? { context: options.context } : {}),\n });\n sentryModule.captureException(exception);\n });\n markCapturedError(error);\n markCapturedError(exception);\n } catch (captureError) {\n warnOnce(\n `betterstack-manual-capture:${key}`,\n '[Blyp] Failed to capture exception in Better Stack error tracking.',\n captureError\n );\n }\n },\n async flush() {\n if (!client) {\n if (!errorTrackingReady || !sentryModule) {\n return;\n }\n }\n\n try {\n if (client) {\n await client.flush();\n }\n if (errorTrackingReady && sentryModule) {\n await sentryModule.flush(2000);\n }\n } catch (error) {\n warnOnce(\n `betterstack-flush:${key}`,\n '[Blyp] Failed to flush Better Stack logs.',\n error\n );\n }\n },\n };\n}\n\nexport function setBetterStackTestHooks(hooks: BetterStackTestHooks): void {\n testHooks = hooks;\n}\n\nexport function resetBetterStackTestHooks(): void {\n testHooks = {};\n warnedKeys.clear();\n}\n","import { Databuddy } from '@databuddy/sdk/node';\nimport type {\n BlypConfig,\n DatabuddyConnectorConfig,\n ResolvedDatabuddyConnectorConfig,\n} from '../../core/config';\nimport type { LogRecord } from '../../core/file-logger';\nimport { serializeLogRecord } from '../../core/file-logger';\nimport { normalizeLogValue } from '../../shared/log-value';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport { hasNonEmptyString, isPlainObject } from '../../shared/validation';\nimport type {\n DatabuddyCaptureExceptionOptions,\n DatabuddyClientLike,\n DatabuddySender,\n DatabuddySource,\n DatabuddyTestHooks,\n DatabuddyTrackEvent,\n} from '../../types/connectors/databuddy';\nimport {\n getClientPageField,\n getClientSessionField,\n getField,\n getPrimaryPayload,\n getRecordType,\n isBlypConfig,\n} from '../shared';\n\nconst warnedKeys = new Set<string>();\nconst senderCache = new Map<string, DatabuddySender>();\nlet testHooks: DatabuddyTestHooks = {};\nconst warnOnce = createErrorOnceLogger(warnedKeys);\n\nfunction registerShutdownHooks(key: string, shutdown: () => Promise<void>): void {\n const handlers: Array<NodeJS.Signals | 'beforeExit'> = ['beforeExit', 'SIGINT', 'SIGTERM'];\n\n for (const event of handlers) {\n process.once(event, () => {\n void shutdown().catch((error) => {\n warnOnce(\n `${key}:shutdown`,\n '[Blyp] Failed to flush Databuddy telemetry during shutdown.',\n error\n );\n });\n });\n }\n}\n\nfunction resolveConnectorConfig(\n config: BlypConfig | ResolvedDatabuddyConnectorConfig | DatabuddyConnectorConfig\n): ResolvedDatabuddyConnectorConfig {\n const connector = isBlypConfig(config)\n ? config.connectors?.databuddy\n : config;\n const enabled = connector?.enabled ?? false;\n const apiKey = connector?.apiKey;\n const websiteId = connector?.websiteId;\n const ready = enabled && hasNonEmptyString(apiKey) && hasNonEmptyString(websiteId);\n\n return {\n enabled,\n mode: connector?.mode ?? 'auto',\n apiKey,\n websiteId,\n namespace: connector?.namespace,\n source: connector?.source,\n apiUrl: connector?.apiUrl,\n debug: connector?.debug ?? false,\n enableBatching: connector?.enableBatching ?? true,\n batchSize: connector?.batchSize,\n batchTimeout: connector?.batchTimeout,\n maxQueueSize: connector?.maxQueueSize,\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction createDefaultClient(\n connector: ResolvedDatabuddyConnectorConfig\n): DatabuddyClientLike {\n return new Databuddy({\n apiKey: connector.apiKey ?? '',\n ...(connector.websiteId ? { websiteId: connector.websiteId } : {}),\n ...(connector.namespace ? { namespace: connector.namespace } : {}),\n ...(connector.source ? { source: connector.source } : {}),\n ...(connector.apiUrl ? { apiUrl: connector.apiUrl } : {}),\n debug: connector.debug,\n enableBatching: connector.enableBatching,\n ...(connector.batchSize !== undefined ? { batchSize: connector.batchSize } : {}),\n ...(connector.batchTimeout !== undefined ? { batchTimeout: connector.batchTimeout } : {}),\n ...(connector.maxQueueSize !== undefined ? { maxQueueSize: connector.maxQueueSize } : {}),\n });\n}\n\nfunction getDatabuddySenderKey(\n connector: ResolvedDatabuddyConnectorConfig\n): string {\n return JSON.stringify({\n enabled: connector.enabled,\n mode: connector.mode,\n apiKey: connector.apiKey ?? null,\n websiteId: connector.websiteId ?? null,\n namespace: connector.namespace ?? null,\n source: connector.source ?? null,\n apiUrl: connector.apiUrl ?? null,\n debug: connector.debug,\n enableBatching: connector.enableBatching,\n batchSize: connector.batchSize ?? null,\n batchTimeout: connector.batchTimeout ?? null,\n maxQueueSize: connector.maxQueueSize ?? null,\n });\n}\n\nfunction getSessionId(record: LogRecord): string | undefined {\n const direct = getField<string>(record, 'sessionId');\n if (hasNonEmptyString(direct)) {\n return direct;\n }\n\n return getClientSessionField(record, 'sessionId');\n}\n\nfunction getAnonymousId(record: LogRecord): string | undefined {\n const direct = getField<string>(record, 'anonymousId');\n if (hasNonEmptyString(direct)) {\n return direct;\n }\n\n const payload = getPrimaryPayload(record);\n if (isPlainObject(payload.metadata) && hasNonEmptyString(payload.metadata.databuddyAnonymousId)) {\n return payload.metadata.databuddyAnonymousId;\n }\n\n return undefined;\n}\n\nfunction getDatabuddyEventName(record: LogRecord): string {\n const recordType = getRecordType(record);\n if (hasNonEmptyString(recordType)) {\n return recordType;\n }\n\n return 'log';\n}\n\nfunction buildRecordProperties(\n record: LogRecord,\n source: DatabuddySource\n): Record<string, unknown> {\n const properties: Record<string, unknown> = {\n blyp_level: record.level,\n blyp_source: source,\n blyp_payload: serializeLogRecord(record),\n message: typeof record.message === 'string' ? record.message : String(record.message),\n };\n\n const caller = typeof record.caller === 'string' ? record.caller : undefined;\n const groupId = getField<string>(record, 'groupId');\n const method = getField<string>(record, 'method');\n const path = getField<string>(record, 'path');\n const status = getField<number>(record, 'status');\n const duration = getField<number>(record, 'duration');\n const pagePath = getClientPageField(record, 'pathname');\n const pageUrl = getClientPageField(record, 'url');\n const sessionId = getClientSessionField(record, 'sessionId');\n const pageId = getClientSessionField(record, 'pageId');\n\n const ifTruthy: Array<[string, unknown]> = [\n ['blyp_type', getRecordType(record)],\n ['caller', caller],\n ['group_id', groupId],\n ['method', method],\n ['path', path],\n ['page_path', pagePath],\n ['page_url', pageUrl],\n ['session_id', sessionId],\n ['page_id', pageId],\n ];\n const ifDefined: Array<[string, unknown]> = [\n ['status_code', status],\n ['duration_ms', duration],\n ];\n\n for (const [key, value] of ifTruthy) {\n if (value) {\n properties[key] = value;\n }\n }\n\n for (const [key, value] of ifDefined) {\n if (value !== undefined) {\n properties[key] = value;\n }\n }\n\n return properties;\n}\n\nfunction createTrackEvent(\n record: LogRecord,\n source: DatabuddySource\n): DatabuddyTrackEvent {\n return {\n name: getDatabuddyEventName(record),\n anonymousId: getAnonymousId(record),\n sessionId: getSessionId(record),\n properties: buildRecordProperties(record, source),\n };\n}\n\nfunction normalizeExceptionProperties(value: unknown): Record<string, unknown> {\n if (!isPlainObject(value)) {\n return {};\n }\n\n return normalizeLogValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeExceptionInput(\n value: unknown,\n fallbackMessage: string\n): { message: string; properties: Record<string, unknown> } {\n if (value instanceof Error) {\n return {\n message: value.message || fallbackMessage,\n properties: {\n error_type: value.name,\n ...(value.stack ? { stack: value.stack } : {}),\n ...normalizeExceptionProperties(value as unknown as Record<string, unknown>),\n },\n };\n }\n\n if (isPlainObject(value)) {\n const message = hasNonEmptyString(value.message)\n ? value.message\n : hasNonEmptyString(value.error)\n ? value.error\n : fallbackMessage;\n\n return {\n message,\n properties: normalizeExceptionProperties(value),\n };\n }\n\n if (typeof value === 'string') {\n return {\n message: value,\n properties: {\n message: value,\n },\n };\n }\n\n return {\n message: fallbackMessage,\n properties: {\n value: normalizeLogValue(value),\n },\n };\n}\n\nexport function createDatabuddySender(\n config: BlypConfig | ResolvedDatabuddyConnectorConfig | DatabuddyConnectorConfig\n): DatabuddySender {\n const connector = resolveConnectorConfig(config);\n const senderKey = getDatabuddySenderKey(connector);\n const cached = senderCache.get(senderKey);\n\n if (cached) {\n return cached;\n }\n\n const key = `${connector.apiUrl ?? 'default'}:${connector.mode}:${connector.apiKey ?? 'missing'}`;\n const client = connector.ready\n ? (testHooks.createClient?.(connector) ?? createDefaultClient(connector))\n : undefined;\n\n if (client) {\n registerShutdownHooks(key, async () => {\n await client.flush();\n });\n }\n\n const emitUnavailableWarning = (): void => {\n warnOnce(\n `databuddy-unavailable:${key}`,\n '[Blyp] Databuddy connector is not configured. Databuddy requires both apiKey and websiteId. Skipping Databuddy delivery.'\n );\n };\n\n const emitExceptionUnavailableWarning = (): void => {\n warnOnce(\n `databuddy-exception-unavailable:${key}`,\n '[Blyp] Databuddy error tracking is not configured. Databuddy requires both apiKey and websiteId. Skipping Databuddy exception capture.'\n );\n };\n\n const sender: DatabuddySender = {\n enabled: connector.enabled,\n ready: connector.ready,\n mode: connector.mode,\n status: connector.status,\n shouldAutoForwardServerLogs() {\n return connector.ready && connector.mode === 'auto';\n },\n shouldAutoCaptureExceptions() {\n return connector.ready && connector.mode === 'auto';\n },\n send(record, options = {}) {\n if (!connector.ready || !client) {\n if (options.warnIfUnavailable) {\n emitUnavailableWarning();\n }\n return;\n }\n\n try {\n const result = client.track(createTrackEvent(record, options.source ?? 'server'));\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((error) => {\n warnOnce(\n `databuddy-send:${key}`,\n '[Blyp] Failed to deliver log to Databuddy.',\n error\n );\n });\n }\n } catch (error) {\n warnOnce(\n `databuddy-send:${key}`,\n '[Blyp] Failed to deliver log to Databuddy.',\n error\n );\n }\n },\n captureException(error, options: DatabuddyCaptureExceptionOptions = {}) {\n if (!connector.ready || !client) {\n if (options.warnIfUnavailable) {\n emitExceptionUnavailableWarning();\n }\n return;\n }\n\n const normalized = normalizeExceptionInput(\n error,\n options.source === 'client' ? 'Client error' : 'Server error'\n );\n\n try {\n const result = client.track({\n name: 'error',\n anonymousId: options.anonymousId,\n sessionId: options.sessionId,\n properties: {\n message: normalized.message,\n blyp_source: options.source ?? 'server',\n blyp_level: 'error',\n ...normalized.properties,\n ...(options.properties ?? {}),\n },\n });\n\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((captureError) => {\n warnOnce(\n `databuddy-capture:${key}`,\n '[Blyp] Failed to capture exception in Databuddy.',\n captureError\n );\n });\n }\n } catch (captureError) {\n warnOnce(\n `databuddy-capture:${key}`,\n '[Blyp] Failed to capture exception in Databuddy.',\n captureError\n );\n }\n },\n async flush() {\n try {\n if (client) {\n await client.flush();\n }\n } catch (error) {\n warnOnce(\n `databuddy-flush:${key}`,\n '[Blyp] Failed to flush Databuddy telemetry.',\n error\n );\n }\n },\n };\n\n senderCache.set(senderKey, sender);\n\n return sender;\n}\n\nexport function setDatabuddyTestHooks(hooks: DatabuddyTestHooks): void {\n testHooks = hooks;\n senderCache.clear();\n}\n\nexport function resetDatabuddyTestHooks(): void {\n testHooks = {};\n senderCache.clear();\n warnedKeys.clear();\n}\n","import { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport { PostHog } from 'posthog-node';\nimport type {\n BlypConfig,\n PostHogConnectorConfig,\n ResolvedPostHogConnectorConfig,\n} from '../../core/config';\nimport type { LogRecord } from '../../core/file-logger';\nimport { serializeLogRecord } from '../../core/file-logger';\nimport { normalizeLogValue } from '../../shared/log-value';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport { hasNonEmptyString, isPlainObject } from '../../shared/validation';\nimport type {\n NormalizedPostHogException,\n PostHogExceptionClient,\n PostHogLogTransport,\n PostHogNormalizedRecord,\n PostHogSender,\n PostHogSource,\n PostHogTestHooks\n} from '../../types/connectors/posthog';\nimport {\n getClientPageField,\n getClientSessionField,\n getField,\n getRecordType,\n isBlypConfig,\n} from '../shared';\n\nconst PREVIOUSLY_CAPTURED_ERROR_KEY = '__posthog_previously_captured_error';\n\nconst warnedKeys = new Set<string>();\nlet testHooks: PostHogTestHooks = {};\nconst warnOnce = createErrorOnceLogger(warnedKeys);\n\nfunction normalizeHost(host: string | undefined): string {\n const trimmed = (host || 'https://us.i.posthog.com').trim();\n return trimmed.replace(/\\/+$/, '');\n}\n\nfunction buildRecordAttributes(\n record: LogRecord,\n source: PostHogSource\n): Record<string, unknown> {\n const recordType = getRecordType(record);\n const caller = typeof record.caller === 'string' ? record.caller : undefined;\n const groupId = getField<string>(record, 'groupId');\n const method = getField<string>(record, 'method');\n const path = getField<string>(record, 'path');\n const status = getField<number>(record, 'status');\n const duration = getField<number>(record, 'duration');\n const pagePath = getClientPageField(record, 'pathname');\n const pageUrl = getClientPageField(record, 'url');\n const sessionId = getClientSessionField(record, 'sessionId');\n const pageId = getClientSessionField(record, 'pageId');\n\n const attributes: Record<string, unknown> = {\n 'blyp.level': record.level,\n 'blyp.source': source,\n 'blyp.payload': serializeLogRecord(record),\n };\n\n const ifTruthy: Array<[string, unknown]> = [\n ['blyp.type', recordType],\n ['blyp.caller', caller],\n ['blyp.group_id', groupId],\n ['http.method', method],\n ['url.path', path],\n ['client.page_path', pagePath],\n ['client.page_url', pageUrl],\n ['client.session_id', sessionId],\n ['client.page_id', pageId],\n ];\n const ifDefined: Array<[string, unknown]> = [\n ['http.status_code', status],\n ['blyp.duration_ms', duration],\n ];\n for (const [k, v] of ifTruthy) if (v) attributes[k] = v;\n for (const [k, v] of ifDefined) if (v !== undefined) attributes[k] = v;\n\n return attributes;\n}\n\nfunction normalizeExceptionProperties(value: unknown): Record<string, unknown> {\n if (!isPlainObject(value)) {\n return {};\n }\n\n return normalizeLogValue(value) as Record<string, unknown>;\n}\n\nfunction assignExceptionField(\n target: Error,\n key: string,\n value: unknown\n): void {\n if (value === undefined) {\n return;\n }\n\n try {\n ((target as unknown) as Record<string, unknown>)[key] = value;\n } catch {}\n}\n\nfunction createSyntheticError(\n message: string,\n source: Record<string, unknown>\n): Error {\n const error = new Error(message);\n const name = hasNonEmptyString(source.name) ? source.name : 'Error';\n error.name = name;\n\n if (hasNonEmptyString(source.stack)) {\n error.stack = source.stack;\n }\n\n assignExceptionField(error, 'cause', source.cause);\n assignExceptionField(error, 'status', source.status);\n assignExceptionField(error, 'statusCode', source.statusCode);\n assignExceptionField(error, 'code', source.code);\n assignExceptionField(error, 'why', source.why);\n assignExceptionField(error, 'fix', source.fix);\n assignExceptionField(error, 'link', source.link);\n assignExceptionField(error, 'details', source.details);\n\n return error;\n}\n\nfunction normalizeExceptionInput(\n input: unknown,\n fallbackMessage: string = 'Unknown error'\n): NormalizedPostHogException {\n if (input instanceof Error) {\n return {\n error: input,\n properties: normalizeExceptionProperties(input as unknown as Record<string, unknown>),\n };\n }\n\n if (isPlainObject(input)) {\n const message = hasNonEmptyString(input.message)\n ? input.message\n : hasNonEmptyString(input.error)\n ? input.error\n : fallbackMessage;\n\n return {\n error: createSyntheticError(message, input),\n properties: normalizeExceptionProperties(input),\n };\n }\n\n if (typeof input === 'string') {\n return {\n error: new Error(input),\n properties: {\n message: input,\n },\n };\n }\n\n return {\n error: new Error(fallbackMessage),\n properties: {\n value: normalizeLogValue(input),\n },\n };\n}\n\nfunction createExceptionPropertiesFromRecord(\n record: LogRecord,\n source: PostHogSource\n): Record<string, unknown> {\n return buildRecordAttributes(record, source);\n}\n\nexport function isPreviouslyCapturedPostHogError(value: unknown): boolean {\n return isPlainObject(value) && value[PREVIOUSLY_CAPTURED_ERROR_KEY] === true;\n}\n\nexport function markPostHogCapturedError(value: unknown): void {\n if (!isPlainObject(value) || isPreviouslyCapturedPostHogError(value)) {\n return;\n }\n\n try {\n Object.defineProperty(value, PREVIOUSLY_CAPTURED_ERROR_KEY, {\n value: true,\n enumerable: false,\n configurable: true,\n writable: true,\n });\n } catch {\n try {\n value[PREVIOUSLY_CAPTURED_ERROR_KEY] = true;\n } catch {}\n }\n}\n\nexport function isClientLogRecord(record: LogRecord): boolean {\n return getRecordType(record) === 'client_log';\n}\n\nexport function normalizePostHogRecord(\n record: LogRecord,\n connector: ResolvedPostHogConnectorConfig,\n source: PostHogSource = 'server'\n): PostHogNormalizedRecord {\n const severity = resolveSeverity(record.level);\n const body = typeof record.message === 'string' ? record.message : String(record.message);\n return {\n body,\n severityText: severity.text,\n severityNumber: severity.number,\n attributes: buildRecordAttributes(record, source),\n resourceAttributes: {\n 'service.name': connector.serviceName,\n },\n };\n}\nfunction resolveSeverity(level: string): { text: string; number: SeverityNumber } {\n switch (level) {\n case 'debug':\n return { text: 'debug', number: SeverityNumber.DEBUG };\n case 'warning':\n case 'warn':\n return { text: 'warn', number: SeverityNumber.WARN };\n case 'error':\n return { text: 'error', number: SeverityNumber.ERROR };\n case 'critical':\n return { text: 'fatal', number: SeverityNumber.FATAL };\n case 'success':\n case 'table':\n case 'info':\n default:\n return { text: 'info', number: SeverityNumber.INFO };\n }\n}\n\nfunction registerShutdownHooks(key: string, shutdown: () => Promise<void>): void {\n const handlers: Array<NodeJS.Signals | 'beforeExit'> = ['beforeExit', 'SIGINT', 'SIGTERM'];\n\n for (const event of handlers) {\n process.once(event, () => {\n void shutdown().catch((error) => {\n warnOnce(\n `${key}:shutdown`,\n '[Blyp] Failed to flush PostHog telemetry during shutdown.',\n error\n );\n });\n });\n }\n}\n\nfunction createDefaultTransport(\n connector: ResolvedPostHogConnectorConfig\n): PostHogLogTransport {\n const exporter = new OTLPLogExporter({\n url: `${normalizeHost(connector.host)}/i/v1/logs`,\n headers: {\n Authorization: `Bearer ${connector.projectKey}`,\n },\n });\n const provider = new LoggerProvider({\n resource: resourceFromAttributes({\n 'service.name': connector.serviceName,\n }),\n processors: [new BatchLogRecordProcessor(exporter)],\n });\n const logger = provider.getLogger('blyp-posthog');\n\n return {\n emit(payload) {\n logger.emit({\n body: payload.body,\n severityText: payload.severityText,\n severityNumber: payload.severityNumber,\n attributes: payload.attributes as never,\n });\n },\n flush() {\n return provider.forceFlush();\n },\n shutdown() {\n return provider.shutdown();\n },\n };\n}\n\nfunction createDefaultExceptionClient(\n connector: ResolvedPostHogConnectorConfig\n): PostHogExceptionClient {\n const client = new PostHog(connector.projectKey ?? '', {\n host: connector.host,\n enableExceptionAutocapture: connector.errorTracking.enableExceptionAutocapture,\n });\n\n return {\n captureException(error, distinctId, additionalProperties) {\n return client.captureExceptionImmediate(error, distinctId, additionalProperties);\n },\n shutdown() {\n return client._shutdown();\n },\n };\n}\n\nfunction resolveConnectorConfig(\n config: BlypConfig | ResolvedPostHogConnectorConfig | PostHogConnectorConfig\n): ResolvedPostHogConnectorConfig {\n const connector = isBlypConfig(config)\n ? config.connectors?.posthog\n : config;\n const enabled = connector?.enabled ?? false;\n const projectKey = connector?.projectKey;\n const errorTrackingEnabled = connector?.errorTracking?.enabled ?? enabled;\n const errorTrackingMode = connector?.errorTracking?.mode ?? 'auto';\n const errorTrackingReady =\n enabled &&\n errorTrackingEnabled &&\n hasNonEmptyString(projectKey);\n\n return {\n enabled,\n mode: connector?.mode ?? 'auto',\n projectKey,\n host: normalizeHost(connector?.host),\n serviceName: connector?.serviceName ?? 'blyp-app',\n errorTracking: {\n enabled: errorTrackingEnabled,\n mode: errorTrackingMode,\n enableExceptionAutocapture:\n connector?.errorTracking?.enableExceptionAutocapture ??\n (errorTrackingMode === 'auto'),\n ready: errorTrackingReady,\n status: errorTrackingReady ? 'enabled' : 'missing',\n },\n };\n}\n\nexport function createPostHogSender(\n config: BlypConfig | ResolvedPostHogConnectorConfig | PostHogConnectorConfig\n): PostHogSender {\n const connector = resolveConnectorConfig(config);\n const key = `${connector.serviceName}:${connector.host}:${connector.mode}`;\n const ready =\n connector.enabled === true &&\n hasNonEmptyString(connector.projectKey);\n const transport = ready\n ? (testHooks.createTransport?.(connector) ?? createDefaultTransport(connector))\n : undefined;\n const exceptionClient = connector.errorTracking.ready\n ? (testHooks.createExceptionClient?.(connector) ?? createDefaultExceptionClient(connector))\n : undefined;\n\n const shutdown = async (): Promise<void> => {\n if (transport?.shutdown) {\n await transport.shutdown();\n } else if (transport?.flush) {\n await transport.flush();\n }\n\n if (exceptionClient?.shutdown) {\n await exceptionClient.shutdown();\n }\n };\n\n if (transport || exceptionClient) {\n registerShutdownHooks(key, shutdown);\n }\n\n const emitUnavailableWarning = (): void => {\n warnOnce(\n `posthog-unavailable:${key}`,\n '[Blyp] PostHog connector is not configured. Skipping PostHog delivery.'\n );\n };\n\n const emitExceptionUnavailableWarning = (): void => {\n warnOnce(\n `posthog-exception-unavailable:${key}`,\n '[Blyp] PostHog error tracking is not configured. Skipping PostHog exception capture.'\n );\n };\n\n return {\n enabled: connector.enabled,\n ready,\n mode: connector.mode,\n serviceName: connector.serviceName,\n host: connector.host,\n status: ready ? 'enabled' : 'missing',\n errorTracking: {\n enabled: connector.errorTracking.enabled,\n ready: connector.errorTracking.ready,\n mode: connector.errorTracking.mode,\n status: connector.errorTracking.status,\n enableExceptionAutocapture: connector.errorTracking.enableExceptionAutocapture,\n },\n shouldAutoForwardServerLogs() {\n return ready && connector.mode === 'auto';\n },\n shouldAutoCaptureExceptions() {\n return connector.errorTracking.ready && connector.errorTracking.mode === 'auto';\n },\n send(record, options = {}) {\n const source = options.source ?? 'server';\n\n if (!ready || !transport) {\n if (options.warnIfUnavailable) {\n emitUnavailableWarning();\n }\n return;\n }\n\n const normalized = normalizePostHogRecord(record, connector, source);\n try {\n const result = transport.emit(normalized);\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((error) => {\n warnOnce(\n `posthog-emit:${key}`,\n '[Blyp] Failed to deliver log to PostHog.',\n error\n );\n });\n }\n } catch (error) {\n warnOnce(\n `posthog-emit:${key}`,\n '[Blyp] Failed to deliver log to PostHog.',\n error\n );\n }\n },\n captureException(error, options = {}) {\n if (!connector.errorTracking.ready || !exceptionClient) {\n if (options.warnIfUnavailable) {\n emitExceptionUnavailableWarning();\n }\n return;\n }\n\n if (isPreviouslyCapturedPostHogError(error)) {\n return;\n }\n\n const normalized = normalizeExceptionInput(\n error,\n options.source === 'client' ? 'Client error' : 'Server error'\n );\n const properties = {\n ...normalized.properties,\n ...(options.properties ?? {}),\n 'blyp.source': options.source ?? 'server',\n };\n\n try {\n const result = exceptionClient.captureException(\n normalized.error,\n options.distinctId,\n properties\n );\n markPostHogCapturedError(error);\n markPostHogCapturedError(normalized.error);\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((captureError) => {\n warnOnce(\n `posthog-capture:${key}`,\n '[Blyp] Failed to capture exception in PostHog.',\n captureError\n );\n });\n }\n } catch (captureError) {\n warnOnce(\n `posthog-capture:${key}`,\n '[Blyp] Failed to capture exception in PostHog.',\n captureError\n );\n }\n },\n async flush() {\n try {\n if (transport?.flush) {\n await transport.flush();\n }\n } catch (error) {\n warnOnce(\n `posthog-flush:${key}`,\n '[Blyp] Failed to flush PostHog telemetry.',\n error\n );\n }\n },\n };\n}\n\nexport function buildPostHogExceptionProperties(\n record: LogRecord,\n source: PostHogSource,\n properties: Record<string, unknown> = {}\n): Record<string, unknown> {\n return {\n ...createExceptionPropertiesFromRecord(record, source),\n ...properties,\n };\n}\n\nexport function setPostHogTestHooks(hooks: PostHogTestHooks): void {\n testHooks = hooks;\n}\n\nexport function resetPostHogTestHooks(): void {\n testHooks = {};\n warnedKeys.clear();\n}\n","import * as Sentry from '@sentry/node';\nimport type {\n BlypConfig,\n ResolvedSentryConnectorConfig,\n SentryConnectorConfig,\n} from '../../core/config';\nimport type { LogRecord } from '../../core/file-logger';\nimport { serializeLogRecord } from '../../core/file-logger';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport { hasNonEmptyString, isPlainObject } from '../../shared/validation';\nimport type {\n SentryClientLike,\n SentryLogSource,\n SentryModuleLike,\n SentrySender,\n SentryTestHooks,\n} from '../../types/connectors/sentry';\nimport {\n getClientPageField,\n getClientSessionField,\n getField,\n getPrimaryPayload,\n getRecordType,\n isBlypConfig,\n} from '../shared';\n\nconst warnedKeys = new Set<string>();\nlet testHooks: SentryTestHooks = {};\nconst warnOnce = createErrorOnceLogger(warnedKeys);\n\nfunction getSentryModule(): SentryModuleLike {\n return testHooks.module ?? (Sentry as unknown as SentryModuleLike);\n}\n\nfunction resolveConnectorConfig(\n config: BlypConfig | ResolvedSentryConnectorConfig | SentryConnectorConfig\n): ResolvedSentryConnectorConfig {\n const connector = isBlypConfig(config)\n ? config.connectors?.sentry\n : config;\n const enabled = connector?.enabled ?? false;\n const dsn = connector?.dsn;\n const ready = enabled && hasNonEmptyString(dsn);\n\n return {\n enabled,\n mode: connector?.mode ?? 'auto',\n dsn,\n environment: connector?.environment,\n release: connector?.release,\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n}\n\nfunction normalizeAttributes(\n record: LogRecord,\n source: SentryLogSource\n): Record<string, unknown> {\n const attributes: Record<string, unknown> = {\n 'blyp.level': record.level,\n 'blyp.source': source,\n 'blyp.payload': serializeLogRecord(record),\n };\n const recordType = getRecordType(record);\n const caller = typeof record.caller === 'string' ? record.caller : undefined;\n const groupId = getField<string>(record, 'groupId');\n const method = getField<string>(record, 'method');\n const path = getField<string>(record, 'path');\n const status = getField<number>(record, 'status');\n const duration = getField<number>(record, 'duration');\n const pagePath = getClientPageField(record, 'pathname');\n const pageUrl = getClientPageField(record, 'url');\n const sessionId = getClientSessionField(record, 'sessionId');\n const pageId = getClientSessionField(record, 'pageId');\n\n const ifTruthy: Array<[string, unknown]> = [\n ['blyp.type', recordType],\n ['blyp.caller', caller],\n ['blyp.group_id', groupId],\n ['http.method', method],\n ['url.path', path],\n ['client.page_path', pagePath],\n ['client.page_url', pageUrl],\n ['client.session_id', sessionId],\n ['client.page_id', pageId],\n ];\n const ifDefined: Array<[string, unknown]> = [\n ['http.status_code', status],\n ['blyp.duration_ms', duration],\n ];\n for (const [k, v] of ifTruthy) if (v) attributes[k] = v;\n for (const [k, v] of ifDefined) if (v !== undefined) attributes[k] = v;\n\n return attributes;\n}\n\nfunction resolveLogMethod(\n module: SentryModuleLike,\n level: string\n): (message: string, attributes?: Record<string, unknown>) => void {\n switch (level) {\n case 'debug':\n return module.logger.debug;\n case 'warning':\n case 'warn':\n return module.logger.warn;\n case 'error':\n return module.logger.error;\n case 'critical':\n return module.logger.fatal;\n case 'success':\n case 'table':\n case 'info':\n default:\n return module.logger.info;\n }\n}\n\nfunction normalizeScopeLevel(level: string): Sentry.SeverityLevel {\n switch (level) {\n case 'debug':\n return 'debug';\n case 'warning':\n case 'warn':\n return 'warning';\n case 'critical':\n return 'fatal';\n case 'error':\n return 'error';\n case 'success':\n case 'table':\n case 'info':\n default:\n return 'info';\n }\n}\n\nfunction toExceptionCandidate(value: unknown): unknown {\n if (!isPlainObject(value)) {\n return undefined;\n }\n\n const message = typeof value.message === 'string' ? value.message : undefined;\n const name = typeof value.name === 'string' ? value.name : undefined;\n const stack = typeof value.stack === 'string' ? value.stack : undefined;\n\n if (!message && !name && !stack) {\n return undefined;\n }\n\n const error = new Error(message ?? name ?? 'Unknown error');\n error.name = name ?? 'Error';\n if (stack) {\n error.stack = stack;\n }\n\n for (const [key, entry] of Object.entries(value)) {\n if (key === 'message' || key === 'name' || key === 'stack') {\n continue;\n }\n\n ((error as unknown) as Record<string, unknown>)[key] = entry;\n }\n\n return error;\n}\n\nfunction extractExceptionCandidate(record: LogRecord): unknown {\n if (record.level !== 'error' && record.level !== 'critical') {\n return undefined;\n }\n\n const direct = toExceptionCandidate(record.error);\n if (direct) {\n return direct;\n }\n\n if (isPlainObject(record.data)) {\n const directData = toExceptionCandidate(record.data);\n if (directData) {\n return directData;\n }\n\n const nested = toExceptionCandidate(record.data.error);\n if (nested) {\n return nested;\n }\n }\n\n const payload = getPrimaryPayload(record);\n if (isPlainObject(payload)) {\n const nested = toExceptionCandidate(payload.error);\n if (nested) {\n return nested;\n }\n }\n\n return undefined;\n}\n\nfunction getClientOptions(client: SentryClientLike | undefined): {\n dsn?: unknown;\n environment?: unknown;\n release?: unknown;\n} {\n return client?.getOptions?.() ?? {};\n}\n\nfunction hasConfigMismatch(\n connector: ResolvedSentryConnectorConfig,\n client: SentryClientLike | undefined\n): boolean {\n const options = getClientOptions(client);\n\n return (\n (hasNonEmptyString(connector.dsn) && connector.dsn !== options.dsn) ||\n (hasNonEmptyString(connector.environment) && connector.environment !== options.environment) ||\n (hasNonEmptyString(connector.release) && connector.release !== options.release)\n );\n}\n\nexport function createSentrySender(\n config: BlypConfig | ResolvedSentryConnectorConfig | SentryConnectorConfig\n): SentrySender {\n const connector = resolveConnectorConfig(config);\n const key = `${connector.mode}:${connector.dsn ?? 'missing'}`;\n const module = getSentryModule();\n let client = connector.enabled ? module.getClient() : undefined;\n\n if (!client && connector.enabled && hasNonEmptyString(connector.dsn)) {\n try {\n module.init({\n dsn: connector.dsn,\n environment: connector.environment,\n release: connector.release,\n enableLogs: true,\n });\n client = module.getClient();\n } catch (error) {\n warnOnce(\n `sentry-init:${key}`,\n '[Blyp] Failed to initialize Sentry. Skipping Sentry delivery.',\n error\n );\n }\n }\n\n if (client && hasConfigMismatch(connector, client)) {\n warnOnce(\n `sentry-mismatch:${key}`,\n '[Blyp] Sentry is already initialized with different options. Reusing the existing Sentry client.'\n );\n }\n\n const ready = connector.enabled && client !== undefined;\n\n const emitUnavailableWarning = (): void => {\n warnOnce(\n `sentry-unavailable:${key}`,\n '[Blyp] Sentry connector is not configured. Skipping Sentry delivery.'\n );\n };\n\n return {\n enabled: connector.enabled,\n ready,\n mode: connector.mode,\n status: ready ? 'enabled' : 'missing',\n shouldAutoForwardServerLogs() {\n return ready && connector.mode === 'auto';\n },\n send(record, options = {}) {\n if (!ready) {\n if (options.warnIfUnavailable) {\n emitUnavailableWarning();\n }\n return;\n }\n\n const source = options.source ?? 'server';\n const attributes = normalizeAttributes(record, source);\n const logMethod = resolveLogMethod(module, record.level);\n\n try {\n logMethod(record.message, attributes);\n } catch (error) {\n warnOnce(\n `sentry-log:${key}`,\n '[Blyp] Failed to deliver log to Sentry.',\n error\n );\n }\n\n const exception = extractExceptionCandidate(record);\n if (!exception) {\n return;\n }\n\n try {\n module.withScope((scope) => {\n scope.setLevel(normalizeScopeLevel(record.level));\n scope.setContext('blyp', attributes);\n scope.setExtra('blyp.payload', serializeLogRecord(record));\n module.captureException(exception);\n });\n } catch (error) {\n warnOnce(\n `sentry-exception:${key}`,\n '[Blyp] Failed to capture exception in Sentry.',\n error\n );\n }\n },\n async flush() {\n try {\n await module.flush(2000);\n } catch (error) {\n warnOnce(\n `sentry-flush:${key}`,\n '[Blyp] Failed to flush Sentry logs.',\n error\n );\n }\n },\n };\n}\n\nexport function setSentryTestHooks(hooks: SentryTestHooks): void {\n testHooks = hooks;\n}\n\nexport function resetSentryTestHooks(): void {\n testHooks = {};\n warnedKeys.clear();\n}\n","import { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n} from '@opentelemetry/sdk-logs';\nimport type {\n BlypConfig,\n OTLPConnectorConfig,\n ResolvedOTLPConnectorConfig,\n} from '../../core/config';\nimport type { LogRecord } from '../../core/file-logger';\nimport { serializeLogRecord } from '../../core/file-logger';\nimport { createErrorOnceLogger } from '../../shared/once';\nimport { isAbsoluteHttpUrl } from '../../shared/validation';\nimport type {\n OTLPLogSource,\n OTLPNormalizedRecord,\n OTLPRegistry,\n OTLPSender,\n OTLPTestHooks,\n OTLPTransport,\n} from '../../types/connectors/otlp';\nimport {\n getClientPageField,\n getClientSessionField,\n getField,\n getRecordType,\n isBlypConfig,\n} from '../shared';\n\nconst warnedKeys = new Set<string>();\nlet testHooks: OTLPTestHooks = {};\nconst warnOnce = createErrorOnceLogger(warnedKeys);\n\nexport function normalizeOTLPRecord(\n record: LogRecord,\n connector: ResolvedOTLPConnectorConfig,\n source: OTLPLogSource = 'server'\n): OTLPNormalizedRecord {\n const severity = resolveSeverity(record.level);\n const body = typeof record.message === 'string' ? record.message : String(record.message);\n const recordType = getRecordType(record);\n const caller = typeof record.caller === 'string' ? record.caller : undefined;\n const groupId = getField<string>(record, 'groupId');\n const method = getField<string>(record, 'method');\n const path = getField<string>(record, 'path');\n const status = getField<number>(record, 'status');\n const duration = getField<number>(record, 'duration');\n const pagePath = getClientPageField(record, 'pathname');\n const pageUrl = getClientPageField(record, 'url');\n const sessionId = getClientSessionField(record, 'sessionId');\n const pageId = getClientSessionField(record, 'pageId');\n\n const attributes: Record<string, unknown> = {\n 'blyp.level': record.level,\n 'blyp.source': source,\n 'blyp.payload': serializeLogRecord(record),\n };\n\n const ifTruthy: Array<[string, unknown]> = [\n ['blyp.type', recordType],\n ['blyp.caller', caller],\n ['blyp.group_id', groupId],\n ['http.method', method],\n ['url.path', path],\n ['client.page_path', pagePath],\n ['client.page_url', pageUrl],\n ['client.session_id', sessionId],\n ['client.page_id', pageId],\n ];\n const ifDefined: Array<[string, unknown]> = [\n ['http.status_code', status],\n ['blyp.duration_ms', duration],\n ];\n for (const [k, v] of ifTruthy) if (v) attributes[k] = v;\n for (const [k, v] of ifDefined) if (v !== undefined) attributes[k] = v;\n\n return {\n body,\n severityText: severity.text,\n severityNumber: severity.number,\n attributes,\n resourceAttributes: {\n 'service.name': connector.serviceName,\n },\n };\n}\n\nfunction resolveSeverity(level: string): { text: string; number: SeverityNumber } {\n switch (level) {\n case 'debug':\n return { text: 'debug', number: SeverityNumber.DEBUG };\n case 'warning':\n case 'warn':\n return { text: 'warn', number: SeverityNumber.WARN };\n case 'error':\n return { text: 'error', number: SeverityNumber.ERROR };\n case 'critical':\n return { text: 'fatal', number: SeverityNumber.FATAL };\n case 'success':\n case 'table':\n case 'info':\n default:\n return { text: 'info', number: SeverityNumber.INFO };\n }\n}\n\nfunction registerShutdownHooks(key: string, shutdown: () => Promise<void>): void {\n const handlers: Array<NodeJS.Signals | 'beforeExit'> = ['beforeExit', 'SIGINT', 'SIGTERM'];\n\n for (const event of handlers) {\n process.once(event, async () => {\n try {\n await shutdown();\n } catch (error) {\n warnOnce(\n `${key}:shutdown`,\n '[Blyp] Failed to flush OTLP logs during shutdown.',\n error\n );\n }\n if (event !== 'beforeExit') {\n process.exit(0);\n }\n });\n }\n}\n\nfunction resolveTransportHeaders(\n connector: ResolvedOTLPConnectorConfig\n): Record<string, string> {\n const headers = {\n ...(connector.headers ?? {}),\n };\n\n if (headers.Authorization === undefined && connector.auth) {\n headers.Authorization = connector.auth;\n }\n\n return headers;\n}\n\nfunction createDefaultTransport(\n connector: ResolvedOTLPConnectorConfig\n): OTLPTransport {\n const exporter = new OTLPLogExporter({\n url: connector.endpoint,\n headers: resolveTransportHeaders(connector),\n });\n const provider = new LoggerProvider({\n resource: resourceFromAttributes({\n 'service.name': connector.serviceName,\n }),\n processors: [new BatchLogRecordProcessor(exporter)],\n });\n const logger = provider.getLogger(`blyp-otlp:${connector.name}`);\n\n return {\n emit(payload) {\n logger.emit({\n body: payload.body,\n severityText: payload.severityText,\n severityNumber: payload.severityNumber,\n attributes: payload.attributes as never,\n });\n },\n flush() {\n return provider.forceFlush();\n },\n shutdown() {\n return provider.shutdown();\n },\n };\n}\n\nfunction resolveConnectors(\n config: BlypConfig | ResolvedOTLPConnectorConfig[] | OTLPConnectorConfig[]\n): ResolvedOTLPConnectorConfig[] {\n const connectors = isBlypConfig(config)\n ? (config.connectors?.otlp ?? [])\n : config;\n\n return connectors.map((connector) => {\n const headers = {\n ...(connector.headers ?? {}),\n };\n const enabled = connector.enabled ?? false;\n const endpoint = connector.endpoint;\n const explicitReady =\n 'ready' in connector && typeof connector.ready === 'boolean'\n ? connector.ready\n : undefined;\n const ready =\n (explicitReady ?? (enabled && isAbsoluteHttpUrl(endpoint))) &&\n isAbsoluteHttpUrl(endpoint);\n\n return {\n name: connector.name,\n enabled,\n mode: connector.mode ?? 'auto',\n endpoint,\n headers,\n auth: connector.auth,\n serviceName: connector.serviceName ?? 'blyp-app',\n ready,\n status: ready ? 'enabled' : 'missing',\n };\n });\n}\n\nfunction createUnavailableSender(\n name: string,\n connector?: Partial<ResolvedOTLPConnectorConfig>\n): OTLPSender {\n const senderName = name || connector?.name || 'otlp';\n const key = `${senderName}:${connector?.serviceName ?? 'blyp-app'}:${connector?.endpoint ?? 'missing'}`;\n\n const emitUnavailableWarning = (): void => {\n warnOnce(\n `otlp-unavailable:${key}`,\n `[Blyp] OTLP target \"${senderName}\" is not configured or not ready. Skipping OTLP delivery.`\n );\n };\n\n return {\n name: senderName,\n enabled: connector?.enabled ?? false,\n ready: false,\n mode: connector?.mode ?? 'auto',\n serviceName: connector?.serviceName ?? 'blyp-app',\n endpoint: connector?.endpoint,\n status: 'missing',\n send(_record, options = {}) {\n if (options.warnIfUnavailable) {\n emitUnavailableWarning();\n }\n },\n async flush() {},\n };\n}\n\nfunction createSender(connector: ResolvedOTLPConnectorConfig): OTLPSender {\n if (!connector.ready || !connector.endpoint) {\n return createUnavailableSender(connector.name, connector);\n }\n\n const key = `${connector.name}:${connector.serviceName}:${connector.endpoint}:${connector.mode}`;\n const transportConnector: ResolvedOTLPConnectorConfig = {\n ...connector,\n headers: resolveTransportHeaders(connector),\n };\n const transport =\n testHooks.createTransport?.(transportConnector) ??\n createDefaultTransport(transportConnector);\n\n return {\n name: connector.name,\n enabled: connector.enabled,\n ready: connector.ready,\n mode: connector.mode,\n serviceName: connector.serviceName,\n endpoint: connector.endpoint,\n status: connector.status,\n send(record, options = {}) {\n const source = options.source ?? 'server';\n const normalized = normalizeOTLPRecord(record, connector, source);\n\n try {\n const result = transport.emit(normalized);\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((error) => {\n warnOnce(\n `otlp-emit:${key}`,\n `[Blyp] Failed to deliver log to OTLP target \"${connector.name}\".`,\n error\n );\n });\n }\n } catch (error) {\n warnOnce(\n `otlp-emit:${key}`,\n `[Blyp] Failed to deliver log to OTLP target \"${connector.name}\".`,\n error\n );\n }\n },\n async flush() {\n try {\n if (transport.flush) {\n await transport.flush();\n }\n } catch (error) {\n warnOnce(\n `otlp-flush:${key}`,\n `[Blyp] Failed to flush OTLP logs for target \"${connector.name}\".`,\n error\n );\n }\n },\n };\n}\n\nexport function createOTLPRegistry(\n config: BlypConfig | ResolvedOTLPConnectorConfig[] | OTLPConnectorConfig[]\n): OTLPRegistry {\n const senders = new Map<string, OTLPSender>();\n\n for (const connector of resolveConnectors(config)) {\n senders.set(connector.name, createSender(connector));\n }\n\n const registry: OTLPRegistry = {\n get(name: string) {\n return senders.get(name) ?? createUnavailableSender(name);\n },\n getAutoForwardTargets() {\n return Array.from(senders.values()).filter((sender) => sender.ready && sender.mode === 'auto');\n },\n send(name, record, options = {}) {\n const sender = senders.get(name) ?? createUnavailableSender(name);\n sender.send(record, options);\n },\n async flush() {\n await Promise.all(Array.from(senders.values()).map((sender) => sender.flush()));\n },\n };\n\n registerShutdownHooks('otlp-registry', () => registry.flush());\n\n return registry;\n}\n\nexport function setOTLPTestHooks(hooks: OTLPTestHooks): void {\n testHooks = hooks;\n}\n\nexport function resetOTLPTestHooks(): void {\n testHooks = {};\n warnedKeys.clear();\n}\n","import type { RuntimeAdapter, RuntimeType } from '../types/frameworks/standalone';\nimport fs from 'fs';\nimport path from 'path';\n\nclass RuntimeDetector {\n private static instance: RuntimeDetector;\n private _type: RuntimeType | null = null;\n\n private constructor() {}\n\n static getInstance(): RuntimeDetector {\n if (!RuntimeDetector.instance) {\n RuntimeDetector.instance = new RuntimeDetector();\n }\n return RuntimeDetector.instance;\n }\n\n get type(): RuntimeType {\n if (this._type === null) {\n this._type = this.detectRuntime();\n }\n return this._type;\n }\n\n get isBun(): boolean {\n return this.type === 'bun';\n }\n\n get isNode(): boolean {\n return this.type === 'node';\n }\n\n private detectRuntime(): RuntimeType {\n if (typeof Bun !== 'undefined' && typeof Bun.file === 'function') {\n return 'bun';\n }\n return 'node';\n }\n}\n\nclass BunAdapter implements RuntimeAdapter {\n readonly type = 'bun' as const;\n readonly isBun = true;\n readonly isNode = false;\n\n file = {\n existsSync: (filePath: string): boolean => {\n try {\n const file = Bun.file(filePath);\n return file.size > 0 || file.name !== '';\n } catch {\n return false;\n }\n },\n mkdirSync: (filePath: string, options?: { recursive?: boolean }): void => {\n try {\n fs.mkdirSync(filePath, options);\n } catch {}\n },\n writeFileSync: (filePath: string, data: string): void => {\n Bun.write(filePath, data);\n }\n };\n\n path = {\n join: (...paths: string[]): string => {\n return path.join(...paths);\n }\n };\n\n env = {\n get: (key: string): string | undefined => Bun.env[key]\n };\n\n cwd = (): string => {\n return process.cwd();\n };\n}\n\nclass NodeAdapter implements RuntimeAdapter {\n readonly type = 'node' as const;\n readonly isBun = false;\n readonly isNode = true;\n\n file = {\n existsSync: (filePath: string): boolean => fs.existsSync(filePath),\n mkdirSync: (filePath: string, options?: { recursive?: boolean }): void => {\n fs.mkdirSync(filePath, options);\n },\n writeFileSync: (filePath: string, data: string): void => {\n fs.writeFileSync(filePath, data);\n }\n };\n\n path = {\n join: (...paths: string[]): string => path.join(...paths)\n };\n\n env = {\n get: (key: string): string | undefined => process.env[key]\n };\n\n cwd = (): string => process.cwd();\n}\n\nexport function createRuntimeAdapter(): RuntimeAdapter {\n const detector = RuntimeDetector.getInstance();\n \n if (detector.isBun) {\n return new BunAdapter();\n }\n \n return new NodeAdapter();\n}\n\nexport const runtime = createRuntimeAdapter();\n\nexport function createLogDir(customPath?: string): string {\n const logDir = customPath ?? runtime.path.join(runtime.cwd(), 'logs');\n \n if (!runtime.file.existsSync(logDir)) {\n runtime.file.mkdirSync(logDir, { recursive: true });\n }\n \n return logDir;\n}\n","import type {\n CreateStructuredLogOptions,\n StructuredLog,\n StructuredLogError,\n StructuredLogEvent,\n StructuredLogEmitOptions,\n StructuredLogLevel,\n StructuredLogPayload,\n} from '../types/core/structured-log';\n\nexport type {\n CreateStructuredLogOptions,\n StructuredLog,\n StructuredLogError,\n StructuredLogEvent,\n StructuredLogEmitOptions,\n StructuredLogLevel,\n StructuredLogPayload,\n} from '../types/core/structured-log';\n\nfunction serializeMessage(message: unknown): string {\n if (typeof message === 'string') {\n return message;\n }\n\n if (message !== null && typeof message === 'object') {\n try {\n return JSON.stringify(\n message,\n (_key, value) => {\n if (typeof value === 'function') {\n return `[Function: ${value.name || 'anonymous'}]`;\n }\n\n if (value === undefined) {\n return '[undefined]';\n }\n\n if (typeof value === 'symbol') {\n return value.toString();\n }\n\n return value;\n },\n 2\n );\n } catch {\n return '[Object]';\n }\n }\n\n return String(message);\n}\n\nfunction normalizeEventData(message: unknown, args: unknown[]): unknown {\n if (typeof message === 'string') {\n if (args.length === 0) {\n return undefined;\n }\n\n return args.length === 1 ? args[0] : args;\n }\n\n const values = [message, ...args];\n return values.length === 1 ? values[0] : values;\n}\n\nfunction normalizeDetails(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined;\n }\n\n return value as Record<string, unknown>;\n}\n\nfunction normalizeError(error: unknown, fallbackStatus?: number): StructuredLogError | undefined {\n if (error === undefined || error === null) {\n return fallbackStatus === undefined || fallbackStatus < 400\n ? undefined\n : {\n message: `HTTP ${fallbackStatus}`,\n code: fallbackStatus,\n type: 'HttpError',\n };\n }\n\n if (error instanceof Error) {\n const errorLike = error as Error & {\n code?: string | number;\n why?: string;\n fix?: string;\n link?: string;\n details?: unknown;\n cause?: unknown;\n type?: string;\n };\n\n return {\n message: error.message,\n code: errorLike.code,\n type: errorLike.type ?? error.name ?? error.constructor?.name,\n stack: error.stack,\n why: errorLike.why,\n fix: errorLike.fix,\n link: errorLike.link,\n details: normalizeDetails(errorLike.details),\n cause: errorLike.cause,\n };\n }\n\n if (typeof error === 'object') {\n const record = error as Record<string, unknown>;\n const statusCode =\n typeof record.statusCode === 'number'\n ? record.statusCode\n : typeof record.status === 'number'\n ? record.status\n : fallbackStatus;\n\n return {\n message:\n typeof record.message === 'string'\n ? record.message\n : `HTTP ${statusCode ?? 500}`,\n code:\n typeof record.code === 'string' || typeof record.code === 'number'\n ? record.code\n : statusCode,\n type:\n typeof record.type === 'string'\n ? record.type\n : typeof record.name === 'string'\n ? record.name\n : 'Error',\n stack: typeof record.stack === 'string' ? record.stack : undefined,\n why: typeof record.why === 'string' ? record.why : undefined,\n fix: typeof record.fix === 'string' ? record.fix : undefined,\n link: typeof record.link === 'string' ? record.link : undefined,\n details: normalizeDetails(record.details),\n cause: record.cause,\n };\n }\n\n return {\n message: String(error),\n code: fallbackStatus,\n type: typeof error,\n };\n}\n\nfunction resolveEmitStatus(options: StructuredLogEmitOptions): number | undefined {\n if (options.response && typeof options.response.status === 'number') {\n return options.response.status;\n }\n\n if (typeof options.status === 'number') {\n return options.status;\n }\n\n if (\n options.error &&\n typeof options.error === 'object' &&\n options.error !== null &&\n typeof (options.error as { statusCode?: unknown }).statusCode === 'number'\n ) {\n return (options.error as { statusCode: number }).statusCode;\n }\n\n if (\n options.error &&\n typeof options.error === 'object' &&\n options.error !== null &&\n typeof (options.error as { status?: unknown }).status === 'number'\n ) {\n return (options.error as { status: number }).status;\n }\n\n return options.error ? 500 : undefined;\n}\n\nexport function createStructuredLog(\n groupId: string,\n options: CreateStructuredLogOptions\n): StructuredLog<Record<string, unknown>> {\n const startedAt = performance.now();\n const fields = { ...(options.initialFields ?? {}) };\n const events: StructuredLogEvent[] = [];\n let emittedPayload: StructuredLogPayload<Record<string, unknown>> | undefined;\n\n options.onCreate?.();\n\n const appendEvent = (\n level: StructuredLogLevel,\n message: unknown,\n args: unknown[]\n ): StructuredLog<Record<string, unknown>> => {\n events.push({\n level,\n message: serializeMessage(message),\n timestamp: new Date().toISOString(),\n ...(normalizeEventData(message, args) === undefined\n ? {}\n : { data: normalizeEventData(message, args) }),\n });\n\n return structuredLog;\n };\n\n const structuredLog: StructuredLog<Record<string, unknown>> = {\n set<TNextFields extends Record<string, unknown>>(extraFields: TNextFields) {\n Object.assign(fields, extraFields);\n return structuredLog as StructuredLog<Record<string, unknown> & TNextFields>;\n },\n\n debug(message, ...args) {\n return appendEvent('debug', message, args);\n },\n\n info(message, ...args) {\n return appendEvent('info', message, args);\n },\n\n warn(message, ...args) {\n return appendEvent('warn', message, args);\n },\n\n warning(message, ...args) {\n return appendEvent('warning', message, args);\n },\n\n error(message, ...args) {\n return appendEvent('error', message, args);\n },\n\n success(message, ...args) {\n return appendEvent('success', message, args);\n },\n\n critical(message, ...args) {\n return appendEvent('critical', message, args);\n },\n\n table(message, data) {\n return appendEvent('table', message, data === undefined ? [] : [data]);\n },\n\n emit(emitOptions = {}) {\n if (emittedPayload) {\n return emittedPayload;\n }\n\n const defaultFields = options.resolveDefaultFields?.() ?? {};\n const status = resolveEmitStatus(emitOptions);\n const error = normalizeError(emitOptions.error, status);\n const level = emitOptions.level ?? (error ? 'error' : 'info');\n const payload: StructuredLogPayload<Record<string, unknown>> = {\n ...defaultFields,\n ...fields,\n groupId,\n timestamp: new Date().toISOString(),\n level,\n duration: Math.round(performance.now() - startedAt),\n ...(typeof status === 'number' ? { status } : {}),\n ...(events.length > 0 ? { events: [...events] } : {}),\n ...(error ? { error } : {}),\n };\n\n options.write(payload, emitOptions.message ?? 'structured_log');\n emittedPayload = payload;\n options.onEmit?.(payload);\n return payload;\n },\n };\n\n return structuredLog;\n}\n","import pino from 'pino';\nimport { shouldDropRootLogWrite } from '../frameworks/shared/request-context';\nimport { type BlypConfig, resolveConfig } from './config';\nimport {\n buildRecord,\n buildStructuredRecord,\n resolveStructuredWriteLevel,\n serializeMessage,\n} from './log-record';\nimport type { LogMethodName } from '../types/core/log-record';\nimport { createPrimarySink } from './primary-sink';\nimport type { BlypPrimarySink } from './primary-sink';\nimport {\n createBetterStackSender,\n} from '../connectors/betterstack/sender';\nimport {\n createDatabuddySender,\n} from '../connectors/databuddy/sender';\nimport {\n createPostHogSender,\n isClientLogRecord,\n} from '../connectors/posthog/sender';\nimport {\n createSentrySender,\n} from '../connectors/sentry/sender';\nimport {\n createOTLPRegistry,\n} from '../connectors/otlp/sender';\nimport type { BetterStackSender } from '../types/connectors/betterstack';\nimport type { DatabuddySender } from '../types/connectors/databuddy';\nimport type { PostHogSender } from '../types/connectors/posthog';\nimport type { SentrySender } from '../types/connectors/sentry';\nimport type { OTLPRegistry } from '../types/connectors/otlp';\nimport { runtime } from './runtime';\nimport {\n createStructuredLog as createStructuredLogCollector,\n} from './structured-log';\nimport type { StructuredLog, StructuredLogPayload } from '../types/core/structured-log';\nimport type {\n BlypLogger,\n InternalBlypLogger,\n InternalLoggerSource,\n LoggerFactoryHandle,\n StructuredLogFactoryOptions,\n} from '../types/core/logger';\n\nexport type { BlypLogger } from '../types/core/logger';\n\nconst LOGGER_FACTORY = Symbol('blyp.logger.factory');\n\nexport const CUSTOM_LEVELS: Record<string, number> = {\n success: 25,\n info: 30,\n debug: 35,\n table: 37,\n warning: 40,\n error: 50,\n critical: 60,\n};\n\nconst CONSOLE_LEVELS: Record<LogMethodName, string> = {\n success: 'success',\n critical: 'critical',\n warning: 'warning',\n info: 'info',\n debug: 'debug',\n error: 'error',\n warn: 'warn',\n table: 'debug',\n};\n\nconst MAGENTA = '\\x1b[35m';\nconst RESET = '\\x1b[0m';\n\nfunction summarizeClientConsoleData(data: unknown): Record<string, unknown> | null {\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n return null;\n }\n\n const record = data as {\n data?: unknown;\n metadata?: unknown;\n page?: { pathname?: unknown; url?: unknown };\n };\n const summary: Record<string, unknown> = {};\n\n if (record.data !== undefined) {\n summary.data = record.data;\n }\n\n const pathname = typeof record.page?.pathname === 'string'\n ? record.page.pathname\n : undefined;\n const url = typeof record.page?.url === 'string'\n ? record.page.url\n : undefined;\n\n if (pathname || url) {\n summary.page = pathname ?? url;\n }\n\n if (record.metadata !== undefined) {\n summary.metadata = record.metadata;\n }\n\n return Object.keys(summary).length > 0 ? summary : null;\n}\n\nfunction getConsoleDataPayload(data: unknown): { hidden: boolean; value?: unknown } {\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n return { hidden: false, value: data };\n }\n\n const record = data as { type?: unknown };\n if (record.type === 'http_request' || record.type === 'http_error') {\n return { hidden: true };\n }\n\n if (record.type === 'client_log') {\n const summary = summarizeClientConsoleData(data);\n if (!summary) {\n return { hidden: true };\n }\n\n return {\n hidden: false,\n value: summary,\n };\n }\n\n return { hidden: false, value: data };\n}\n\nfunction createPinoLogger(config: BlypConfig) {\n if (config.pretty) {\n const pinoPretty = require('pino-pretty');\n const pretty = pinoPretty.default({\n colorize: true,\n translateTime: 'SYS:HH:MM:ss',\n ignore: 'pid,hostname,caller',\n customColors: {\n success: 'green',\n critical: 'red bold',\n info: 'blue',\n warning: 'yellow',\n error: 'red',\n debug: 'cyan',\n table: 'cyan',\n },\n messageFormat: (log: Record<string, unknown>, messageKey: string) => {\n const message = String(log[messageKey] ?? '');\n const caller = typeof log.caller === 'string' ? log.caller.trim() : '';\n\n if (!caller) {\n return message;\n }\n\n return `${message} ${MAGENTA}${caller}${RESET}`;\n },\n });\n return pino(\n {\n level: config.level,\n customLevels: CUSTOM_LEVELS,\n },\n pretty\n );\n }\n\n return pino({\n level: config.level,\n customLevels: CUSTOM_LEVELS,\n });\n}\n\nfunction getLoggerFactory(logger: BlypLogger): LoggerFactoryHandle {\n const factory = (logger as InternalBlypLogger)[LOGGER_FACTORY];\n if (!factory) {\n throw new Error('Unsupported Blyp logger instance');\n }\n\n return factory;\n}\n\nexport function getPostHogSender(logger: BlypLogger): PostHogSender {\n return getLoggerFactory(logger).posthog;\n}\n\nexport function getBetterStackSender(logger: BlypLogger): BetterStackSender {\n return getLoggerFactory(logger).betterstack;\n}\n\nexport function getDatabuddySender(logger: BlypLogger): DatabuddySender {\n return getLoggerFactory(logger).databuddy;\n}\n\nexport function tryGetPostHogSender(logger: unknown): PostHogSender | null {\n try {\n return getPostHogSender(logger as BlypLogger);\n } catch {\n return null;\n }\n}\n\nexport function tryGetBetterStackSender(logger: unknown): BetterStackSender | null {\n try {\n return getBetterStackSender(logger as BlypLogger);\n } catch {\n return null;\n }\n}\n\nexport function tryGetDatabuddySender(logger: unknown): DatabuddySender | null {\n try {\n return getDatabuddySender(logger as BlypLogger);\n } catch {\n return null;\n }\n}\n\nexport function getSentrySender(logger: BlypLogger): SentrySender {\n return getLoggerFactory(logger).sentry;\n}\n\nexport function getOtlpRegistry(logger: BlypLogger): OTLPRegistry {\n return getLoggerFactory(logger).otlp;\n}\n\nexport function attachLoggerInternals<T extends BlypLogger>(target: T, source: BlypLogger): T {\n const factory = getLoggerFactory(source);\n Object.defineProperty(target, LOGGER_FACTORY, {\n value: factory,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return target;\n}\n\nexport function createLoggerWithSource(\n logger: BlypLogger,\n source: InternalLoggerSource\n): BlypLogger {\n const factory = getLoggerFactory(logger);\n return factory.create(source, factory.bindings);\n}\n\nexport function createStructuredLogForLogger(\n logger: BlypLogger,\n groupId: string,\n options: StructuredLogFactoryOptions = {}\n): StructuredLog {\n const factory = getLoggerFactory(logger);\n\n return createStructuredLogCollector(groupId, {\n initialFields: options.initialFields,\n resolveDefaultFields: () => ({\n ...factory.bindings,\n ...(options.resolveDefaultFields?.() ?? {}),\n }),\n write: (payload, message) => {\n factory.writeStructured(payload, message, 'structured-flush');\n },\n onCreate: options.onCreate,\n onEmit: options.onEmit,\n });\n}\n\nfunction maybeSendToPostHog(\n posthog: PostHogSender,\n record: ReturnType<typeof buildRecord> | ReturnType<typeof buildStructuredRecord>\n): void {\n if (isClientLogRecord(record)) {\n return;\n }\n\n if (!posthog.shouldAutoForwardServerLogs()) {\n if (posthog.enabled && !posthog.ready) {\n posthog.send(record, { source: 'server', warnIfUnavailable: true });\n }\n return;\n }\n\n posthog.send(record, { source: 'server', warnIfUnavailable: true });\n}\n\nfunction maybeSendToBetterStack(\n betterstack: BetterStackSender,\n record: ReturnType<typeof buildRecord> | ReturnType<typeof buildStructuredRecord>\n): void {\n if (isClientLogRecord(record)) {\n return;\n }\n\n if (!betterstack.shouldAutoForwardServerLogs()) {\n if (betterstack.enabled && !betterstack.ready) {\n betterstack.send(record, { source: 'server', warnIfUnavailable: true });\n }\n return;\n }\n\n betterstack.send(record, { source: 'server', warnIfUnavailable: true });\n}\n\nfunction maybeSendToDatabuddy(\n databuddy: DatabuddySender,\n record: ReturnType<typeof buildRecord> | ReturnType<typeof buildStructuredRecord>\n): void {\n if (isClientLogRecord(record)) {\n return;\n }\n\n if (!databuddy.shouldAutoForwardServerLogs()) {\n if (databuddy.enabled && !databuddy.ready) {\n databuddy.send(record, { source: 'server', warnIfUnavailable: true });\n }\n return;\n }\n\n databuddy.send(record, { source: 'server', warnIfUnavailable: true });\n}\n\nfunction maybeSendToSentry(\n sentry: SentrySender,\n record: ReturnType<typeof buildRecord> | ReturnType<typeof buildStructuredRecord>\n): void {\n if (isClientLogRecord(record)) {\n return;\n }\n\n if (!sentry.shouldAutoForwardServerLogs()) {\n if (sentry.enabled && !sentry.ready) {\n sentry.send(record, { source: 'server', warnIfUnavailable: true });\n }\n return;\n }\n\n sentry.send(record, { source: 'server', warnIfUnavailable: true });\n}\n\nfunction maybeSendToOTLP(\n otlp: OTLPRegistry,\n record: ReturnType<typeof buildRecord> | ReturnType<typeof buildStructuredRecord>\n): void {\n if (isClientLogRecord(record)) {\n return;\n }\n\n for (const sender of otlp.getAutoForwardTargets()) {\n sender.send(record, { source: 'server', warnIfUnavailable: true });\n }\n}\n\nfunction createLoggerInstance(\n rootRawLogger: any,\n sink: BlypPrimarySink,\n betterstack: BetterStackSender,\n databuddy: DatabuddySender,\n posthog: PostHogSender,\n sentry: SentrySender,\n otlp: OTLPRegistry,\n bindings: Record<string, unknown> = {},\n source: InternalLoggerSource = 'root'\n): BlypLogger {\n const rawLogger = Object.keys(bindings).length > 0\n ? rootRawLogger.child(bindings)\n : rootRawLogger;\n\n const writeRecord = (\n level: LogMethodName,\n message: unknown,\n args: unknown[],\n writeSource: InternalLoggerSource = source\n ): void => {\n if (writeSource === 'root' && shouldDropRootLogWrite()) {\n return;\n }\n\n const record = buildRecord(level, message, args, bindings);\n const consoleMessage = serializeMessage(message);\n const payload: Record<string, unknown> = {\n caller: record.caller,\n };\n const consoleData = getConsoleDataPayload(record.data);\n\n if (!consoleData.hidden && consoleData.value !== undefined) {\n payload.data = consoleData.value;\n }\n\n const consoleMethod = CONSOLE_LEVELS[level];\n const boundLogger = rawLogger as Record<string, (payload: unknown, message: string) => void>;\n const logMethod =\n boundLogger[consoleMethod] ??\n boundLogger.info ??\n ((_payload: unknown, _message: string) => {});\n\n (logMethod as (this: unknown, payload: unknown, message: string) => void).call(\n rawLogger,\n payload,\n consoleMessage\n );\n sink.write(record);\n maybeSendToBetterStack(betterstack, record);\n maybeSendToDatabuddy(databuddy, record);\n maybeSendToPostHog(posthog, record);\n maybeSendToSentry(sentry, record);\n maybeSendToOTLP(otlp, record);\n };\n\n const writeStructuredRecord = (\n payload: StructuredLogPayload,\n message: string,\n writeSource: InternalLoggerSource = 'structured-flush'\n ): void => {\n const level = resolveStructuredWriteLevel(payload.level);\n const record = buildStructuredRecord(level, message, payload, bindings);\n const consoleMethod = CONSOLE_LEVELS[level];\n const boundLogger = rawLogger as Record<string, (payload: unknown, message: string) => void>;\n const logMethod =\n boundLogger[consoleMethod] ??\n boundLogger.info ??\n ((_payload: unknown, _message: string) => {});\n\n (logMethod as (this: unknown, payload: unknown, message: string) => void).call(\n rawLogger,\n {\n caller: record.caller,\n ...payload,\n },\n message\n );\n\n if (writeSource !== 'root' || !shouldDropRootLogWrite()) {\n sink.write(record);\n }\n\n maybeSendToBetterStack(betterstack, record);\n maybeSendToDatabuddy(databuddy, record);\n maybeSendToPostHog(posthog, record);\n maybeSendToSentry(sentry, record);\n maybeSendToOTLP(otlp, record);\n };\n\n const logger: InternalBlypLogger = {\n success: (message: unknown, ...args: unknown[]) => {\n writeRecord('success', message, args);\n },\n\n critical: (message: unknown, ...args: unknown[]) => {\n writeRecord('critical', message, args);\n },\n\n warning: (message: unknown, ...args: unknown[]) => {\n writeRecord('warning', message, args);\n },\n\n info: (message: unknown, ...args: unknown[]) => {\n writeRecord('info', message, args);\n },\n\n debug: (message: unknown, ...args: unknown[]) => {\n writeRecord('debug', message, args);\n },\n\n error: (message: unknown, ...args: unknown[]) => {\n writeRecord('error', message, args);\n },\n\n warn: (message: unknown, ...args: unknown[]) => {\n writeRecord('warn', message, args);\n },\n\n table: (message: string, data?: unknown) => {\n if (data && typeof data === 'object' && runtime.env.get('NODE_ENV') !== 'production') {\n console.log('TABLE:', message);\n console.table(data);\n }\n writeRecord('table', message, data === undefined ? [] : [data]);\n },\n\n flush: async () => {\n await sink.flush();\n await Promise.allSettled([\n betterstack.flush(),\n databuddy.flush(),\n posthog.flush(),\n sentry.flush(),\n otlp.flush(),\n ]);\n },\n\n shutdown: async () => {\n await sink.shutdown();\n await Promise.allSettled([\n betterstack.flush(),\n databuddy.flush(),\n posthog.flush(),\n sentry.flush(),\n otlp.flush(),\n ]);\n },\n\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLogForLogger(logger, groupId, {\n initialFields: initial,\n });\n },\n\n child: (childBindings: Record<string, unknown>) => {\n const mergedBindings = { ...bindings, ...childBindings };\n return createLoggerInstance(\n rootRawLogger,\n sink,\n betterstack,\n databuddy,\n posthog,\n sentry,\n otlp,\n mergedBindings,\n source\n );\n },\n\n [LOGGER_FACTORY]: {\n bindings,\n betterstack,\n databuddy,\n posthog,\n sentry,\n otlp,\n sink,\n create: (\n nextSource: InternalLoggerSource,\n nextBindings: Record<string, unknown> = bindings\n ) => {\n return createLoggerInstance(\n rootRawLogger,\n sink,\n betterstack,\n databuddy,\n posthog,\n sentry,\n otlp,\n nextBindings,\n nextSource\n );\n },\n writeStructured: (\n payload: StructuredLogPayload,\n message: string,\n nextSource: InternalLoggerSource = 'structured-flush'\n ) => {\n writeStructuredRecord(payload, message, nextSource);\n },\n },\n };\n\n return logger;\n}\n\nlet loggerInstance: BlypLogger | null = null;\n\nexport function createBaseLogger(config?: Partial<BlypConfig>): BlypLogger {\n if (config === undefined && loggerInstance) {\n return loggerInstance;\n }\n\n const resolvedConfig = resolveConfig(config);\n const rawLogger = createPinoLogger(resolvedConfig);\n const sink = createPrimarySink(resolvedConfig);\n const betterstack = createBetterStackSender(resolvedConfig);\n const databuddy = createDatabuddySender(resolvedConfig);\n const posthog = createPostHogSender(resolvedConfig);\n const sentry = createSentrySender(resolvedConfig);\n const otlp = createOTLPRegistry(resolvedConfig);\n const instance = createLoggerInstance(\n rawLogger,\n sink,\n betterstack,\n databuddy,\n posthog,\n sentry,\n otlp\n );\n\n if (config === undefined) {\n loggerInstance = instance;\n }\n\n return instance;\n}\n\nexport const logger = createBaseLogger();\n","import {\n attachLoggerInternals,\n createBaseLogger,\n type BlypLogger,\n} from '../../core/logger';\nimport { serializeLogMessage } from '../../shared/log-value';\nimport type { StandaloneLogger, StandaloneLoggerConfig } from '../../types/frameworks/standalone';\n\nexport type { StandaloneLogger } from '../../types/frameworks/standalone';\n\nfunction buildStructuredArgs(message: unknown, args: unknown[]): { text: string; data: unknown[] } {\n const text = serializeMessage(message);\n if (typeof message === 'string') {\n return { text, data: args };\n }\n return { text, data: [message, ...args] };\n}\n\nfunction serializeMessage(message: unknown): string {\n return serializeLogMessage(message);\n}\n\nfunction wrapBaseLogger(baseLogger: BlypLogger, config: StandaloneLoggerConfig): StandaloneLogger {\n return attachLoggerInternals({\n debug: (message: unknown, ...args: unknown[]) => {\n const { text, data } = buildStructuredArgs(message, args);\n baseLogger.debug(text, ...data);\n },\n\n info: (message: unknown, ...args: unknown[]) => {\n const { text, data } = buildStructuredArgs(message, args);\n baseLogger.info(text, ...data);\n },\n\n error: (message: unknown, ...args: unknown[]) => {\n const { text, data } = buildStructuredArgs(message, args);\n baseLogger.error(text, ...data);\n },\n\n warn: (message: unknown, ...args: unknown[]) => {\n const { text, data } = buildStructuredArgs(message, args);\n baseLogger.warn(text, ...data);\n },\n\n warning: (message: unknown, ...args: unknown[]) => {\n const { text, data } = buildStructuredArgs(message, args);\n baseLogger.warning(text, ...data);\n },\n\n success: (message: unknown, meta?: unknown) => {\n const { text, data } = buildStructuredArgs(message, meta === undefined ? [] : [meta]);\n if (meta) {\n baseLogger.success(text, ...data);\n } else {\n baseLogger.success(text);\n }\n },\n\n critical: (message: unknown, meta?: unknown) => {\n const { text, data } = buildStructuredArgs(message, meta === undefined ? [] : [meta]);\n if (meta) {\n baseLogger.critical(text, ...data);\n } else {\n baseLogger.critical(text);\n }\n },\n\n table: (message: string, data?: unknown) => {\n baseLogger.table(message, data);\n },\n\n flush: () => baseLogger.flush(),\n\n shutdown: () => baseLogger.shutdown(),\n\n createStructuredLog: (groupId: string, initial?: Record<string, unknown>) => {\n return baseLogger.createStructuredLog(groupId, initial);\n },\n\n child: (bindings: Record<string, unknown>) => {\n return wrapBaseLogger(baseLogger.child(bindings), config);\n },\n }, baseLogger);\n}\n\nexport function createStandaloneLogger(config: StandaloneLoggerConfig = {}): StandaloneLogger {\n const baseLogger = createBaseLogger(config);\n return wrapBaseLogger(baseLogger, config);\n}\n\nlet defaultLoggerInstance = createStandaloneLogger();\n\nfunction getDefaultLogger(): StandaloneLogger {\n return defaultLoggerInstance;\n}\n\nfunction createLoggerProxy(): StandaloneLogger {\n return attachLoggerInternals({\n debug: (message: unknown, ...args: unknown[]) => {\n getDefaultLogger().debug(message, ...args);\n },\n\n info: (message: unknown, ...args: unknown[]) => {\n getDefaultLogger().info(message, ...args);\n },\n\n error: (message: unknown, ...args: unknown[]) => {\n getDefaultLogger().error(message, ...args);\n },\n\n warn: (message: unknown, ...args: unknown[]) => {\n getDefaultLogger().warn(message, ...args);\n },\n\n warning: (message: unknown, ...args: unknown[]) => {\n getDefaultLogger().warning(message, ...args);\n },\n\n success: (message: unknown, meta?: unknown) => {\n if (meta === undefined) {\n getDefaultLogger().success(message);\n return;\n }\n\n getDefaultLogger().success(message, meta);\n },\n\n critical: (message: unknown, meta?: unknown) => {\n if (meta === undefined) {\n getDefaultLogger().critical(message);\n return;\n }\n\n getDefaultLogger().critical(message, meta);\n },\n\n table: (message: string, data?: unknown) => {\n getDefaultLogger().table(message, data);\n },\n\n flush: () => getDefaultLogger().flush(),\n\n shutdown: () => getDefaultLogger().shutdown(),\n\n createStructuredLog: (groupId: string, initial?: Record<string, unknown>) => {\n return getDefaultLogger().createStructuredLog(groupId, initial);\n },\n\n child: (bindings: Record<string, unknown>) => {\n return getDefaultLogger().child(bindings);\n },\n }, getDefaultLogger());\n}\n\nexport function configureDefaultStandaloneLogger(\n config: StandaloneLoggerConfig = {}\n): StandaloneLogger {\n defaultLoggerInstance = createStandaloneLogger(config);\n return defaultLoggerInstance;\n}\n\nexport const logger = createLoggerProxy();\n","import type {\n BlypErrorCode,\n BlypErrorCodeCreateOptions,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n CreateCodeFunction,\n ErrorConstructionInput,\n ErrorLogLevel,\n ErrorLoggerLike,\n HttpCodeRegistry,\n ParseErrorOptions,\n ParseableErrorPayload as BaseParseableErrorPayload,\n ResolvedErrorConfig,\n} from '../types/shared/errors';\n\nexport type {\n BlypErrorCode,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n ErrorConstructionInput,\n ErrorLogLevel,\n ErrorLoggerLike,\n ParseErrorOptions,\n ResolvedErrorConfig,\n} from '../types/shared/errors';\n\nexport type ParseableErrorPayload = BaseParseableErrorPayload | BlypError;\n\nexport const HTTP_STATUS_DEFINITIONS = {\n CONTINUE: { status: 100, message: 'Continue' },\n SWITCHING_PROTOCOLS: { status: 101, message: 'Switching Protocols' },\n PROCESSING: { status: 102, message: 'Processing' },\n EARLY_HINTS: { status: 103, message: 'Early Hints' },\n OK: { status: 200, message: 'OK' },\n CREATED: { status: 201, message: 'Created' },\n ACCEPTED: { status: 202, message: 'Accepted' },\n NON_AUTHORITATIVE_INFORMATION: { status: 203, message: 'Non-Authoritative Information' },\n NO_CONTENT: { status: 204, message: 'No Content' },\n RESET_CONTENT: { status: 205, message: 'Reset Content' },\n PARTIAL_CONTENT: { status: 206, message: 'Partial Content' },\n MULTI_STATUS: { status: 207, message: 'Multi-Status' },\n ALREADY_REPORTED: { status: 208, message: 'Already Reported' },\n IM_USED: { status: 226, message: 'IM Used' },\n MULTIPLE_CHOICES: { status: 300, message: 'Multiple Choices' },\n MOVED_PERMANENTLY: { status: 301, message: 'Moved Permanently' },\n FOUND: { status: 302, message: 'Found' },\n SEE_OTHER: { status: 303, message: 'See Other' },\n NOT_MODIFIED: { status: 304, message: 'Not Modified' },\n USE_PROXY: { status: 305, message: 'Use Proxy' },\n TEMPORARY_REDIRECT: { status: 307, message: 'Temporary Redirect' },\n PERMANENT_REDIRECT: { status: 308, message: 'Permanent Redirect' },\n BAD_REQUEST: { status: 400, message: 'Bad Request' },\n UNAUTHORIZED: { status: 401, message: 'Unauthorized' },\n PAYMENT_REQUIRED: { status: 402, message: 'Payment Required' },\n FORBIDDEN: { status: 403, message: 'Forbidden' },\n NOT_FOUND: { status: 404, message: 'Not Found' },\n METHOD_NOT_ALLOWED: { status: 405, message: 'Method Not Allowed' },\n NOT_ACCEPTABLE: { status: 406, message: 'Not Acceptable' },\n PROXY_AUTHENTICATION_REQUIRED: { status: 407, message: 'Proxy Authentication Required' },\n REQUEST_TIMEOUT: { status: 408, message: 'Request Timeout' },\n CONFLICT: { status: 409, message: 'Conflict' },\n GONE: { status: 410, message: 'Gone' },\n LENGTH_REQUIRED: { status: 411, message: 'Length Required' },\n PRECONDITION_FAILED: { status: 412, message: 'Precondition Failed' },\n PAYLOAD_TOO_LARGE: { status: 413, message: 'Payload Too Large' },\n URI_TOO_LONG: { status: 414, message: 'URI Too Long' },\n UNSUPPORTED_MEDIA_TYPE: { status: 415, message: 'Unsupported Media Type' },\n RANGE_NOT_SATISFIABLE: { status: 416, message: 'Range Not Satisfiable' },\n EXPECTATION_FAILED: { status: 417, message: 'Expectation Failed' },\n IM_A_TEAPOT: { status: 418, message: \"I'm a Teapot\" },\n MISDIRECTED_REQUEST: { status: 421, message: 'Misdirected Request' },\n UNPROCESSABLE_ENTITY: { status: 422, message: 'Unprocessable Entity' },\n LOCKED: { status: 423, message: 'Locked' },\n FAILED_DEPENDENCY: { status: 424, message: 'Failed Dependency' },\n TOO_EARLY: { status: 425, message: 'Too Early' },\n UPGRADE_REQUIRED: { status: 426, message: 'Upgrade Required' },\n PRECONDITION_REQUIRED: { status: 428, message: 'Precondition Required' },\n TOO_MANY_REQUESTS: { status: 429, message: 'Too Many Requests' },\n REQUEST_HEADER_FIELDS_TOO_LARGE: { status: 431, message: 'Request Header Fields Too Large' },\n UNAVAILABLE_FOR_LEGAL_REASONS: { status: 451, message: 'Unavailable For Legal Reasons' },\n INTERNAL_SERVER_ERROR: { status: 500, message: 'Internal Server Error' },\n NOT_IMPLEMENTED: { status: 501, message: 'Not Implemented' },\n BAD_GATEWAY: { status: 502, message: 'Bad Gateway' },\n SERVICE_UNAVAILABLE: { status: 503, message: 'Service Unavailable' },\n GATEWAY_TIMEOUT: { status: 504, message: 'Gateway Timeout' },\n HTTP_VERSION_NOT_SUPPORTED: { status: 505, message: 'HTTP Version Not Supported' },\n VARIANT_ALSO_NEGOTIATES: { status: 506, message: 'Variant Also Negotiates' },\n INSUFFICIENT_STORAGE: { status: 507, message: 'Insufficient Storage' },\n LOOP_DETECTED: { status: 508, message: 'Loop Detected' },\n BANDWIDTH_LIMIT_EXCEEDED: { status: 509, message: 'Bandwidth Limit Exceeded' },\n NOT_EXTENDED: { status: 510, message: 'Not Extended' },\n NETWORK_AUTHENTICATION_REQUIRED: { status: 511, message: 'Network Authentication Required' },\n} as const;\n\nimport { isPlainObject } from './validation';\n\nconst ERROR_KEYS = [\n 'status',\n 'statusCode',\n 'code',\n 'message',\n 'stack',\n 'why',\n 'fix',\n 'link',\n 'details',\n 'cause',\n 'title',\n 'detail',\n 'logLevel',\n 'error',\n 'data',\n] as const;\n\nfunction isErrorLogLevel(value: unknown): value is ErrorLogLevel {\n return (\n value === 'debug' ||\n value === 'info' ||\n value === 'warning' ||\n value === 'error' ||\n value === 'critical'\n );\n}\n\nfunction parseStatus(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /^\\d+$/.test(value.trim())) {\n return Number.parseInt(value, 10);\n }\n\n return undefined;\n}\n\nfunction normalizeDetails(value: unknown): Record<string, unknown> | undefined {\n return isPlainObject(value) ? value : undefined;\n}\n\nfunction hasMeaningfulErrorData(candidate: BlypErrorLike): boolean {\n return (\n candidate.status !== undefined ||\n candidate.statusCode !== undefined ||\n candidate.code !== undefined ||\n candidate.message !== undefined ||\n candidate.stack !== undefined ||\n candidate.why !== undefined ||\n candidate.fix !== undefined ||\n candidate.link !== undefined ||\n candidate.details !== undefined ||\n candidate.cause !== undefined ||\n candidate.logLevel !== undefined\n );\n}\n\nfunction normalizeRecordCandidate(record: Record<string, unknown>): BlypErrorLike {\n const title = typeof record.title === 'string' ? record.title : undefined;\n const detail = typeof record.detail === 'string' ? record.detail : undefined;\n\n return {\n status: parseStatus(record.status),\n statusCode: parseStatus(record.statusCode),\n code:\n typeof record.code === 'string' || typeof record.code === 'number'\n ? record.code\n : undefined,\n message:\n typeof record.message === 'string'\n ? record.message\n : title ?? detail,\n stack: typeof record.stack === 'string' ? record.stack : undefined,\n why: typeof record.why === 'string' ? record.why : undefined,\n fix: typeof record.fix === 'string' ? record.fix : undefined,\n link: typeof record.link === 'string' ? record.link : undefined,\n details: normalizeDetails(record.details),\n cause: record.cause,\n logLevel: isErrorLogLevel(record.logLevel) ? record.logLevel : undefined,\n };\n}\n\nfunction mergeCandidates(\n container: Record<string, unknown>,\n nested: BlypErrorLike | string | undefined\n): BlypErrorLike | string | undefined {\n const own = normalizeRecordCandidate(container);\n\n if (nested === undefined) {\n return hasMeaningfulErrorData(own) ? own : undefined;\n }\n\n if (typeof nested === 'string') {\n if (hasMeaningfulErrorData(own)) {\n return {\n ...own,\n message: own.message ?? nested,\n };\n }\n\n return nested;\n }\n\n return {\n status: own.status ?? nested.status,\n statusCode: own.statusCode ?? nested.statusCode,\n code: own.code ?? nested.code,\n message: own.message ?? nested.message,\n stack: own.stack ?? nested.stack,\n why: own.why ?? nested.why,\n fix: own.fix ?? nested.fix,\n link: own.link ?? nested.link,\n details: own.details ?? nested.details,\n cause: own.cause ?? nested.cause,\n logLevel: own.logLevel ?? nested.logLevel,\n };\n}\n\nfunction hasErrorShape(record: Record<string, unknown>): boolean {\n return ERROR_KEYS.some((key) => record[key] !== undefined);\n}\n\nfunction isResponseLike(input: unknown): input is Response {\n if (typeof Response !== 'undefined' && input instanceof Response) {\n return true;\n }\n\n return isPlainObject(input) &&\n typeof input.status === 'number' &&\n typeof input.statusText === 'string' &&\n typeof input.clone === 'function' &&\n typeof input.text === 'function';\n}\n\nexport class BlypError extends Error implements BlypErrorLike {\n override readonly name = 'BlypError';\n readonly status: number;\n readonly statusCode: number;\n readonly code?: string | number;\n readonly why?: string;\n readonly fix?: string;\n readonly link?: string;\n readonly details?: Record<string, unknown>;\n override readonly cause?: unknown;\n readonly logLevel: ErrorLogLevel;\n\n constructor(config: ResolvedErrorConfig) {\n super(config.message);\n Object.setPrototypeOf(this, new.target.prototype);\n\n this.status = config.status;\n this.statusCode = config.statusCode;\n this.code = config.code;\n this.why = config.why;\n this.fix = config.fix;\n this.link = config.link;\n this.details = config.details;\n this.cause = config.cause;\n this.logLevel = config.logLevel;\n\n if (config.stack) {\n this.stack = config.stack;\n } else if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, BlypError);\n }\n }\n\n toJSON(): {\n name: 'BlypError';\n message: string;\n status: number;\n statusCode: number;\n code?: string | number;\n why?: string;\n fix?: string;\n link?: string;\n details?: Record<string, unknown>;\n } {\n return {\n name: 'BlypError',\n message: this.message,\n status: this.status,\n statusCode: this.statusCode,\n ...(this.code !== undefined ? { code: this.code } : {}),\n ...(this.why !== undefined ? { why: this.why } : {}),\n ...(this.fix !== undefined ? { fix: this.fix } : {}),\n ...(this.link !== undefined ? { link: this.link } : {}),\n ...(this.details !== undefined ? { details: this.details } : {}),\n };\n }\n}\n\nexport function resolveErrorLogLevel(\n status: number,\n explicit?: ErrorLogLevel\n): ErrorLogLevel {\n if (explicit) {\n return explicit;\n }\n\n if (status >= 500) {\n return 'critical';\n }\n\n if (status >= 400) {\n return 'error';\n }\n\n return 'warning';\n}\n\nexport function normalizeCauseForLog(cause: unknown): unknown {\n if (cause instanceof Error) {\n return {\n name: cause.name,\n message: cause.message,\n ...(cause.stack ? { stack: cause.stack } : {}),\n };\n }\n\n return cause;\n}\n\nexport function emitErrorLog(\n logger: ErrorLoggerLike,\n error: BlypError,\n levelOverride?: ErrorLogLevel\n): void {\n const level = resolveErrorLogLevel(error.status, levelOverride ?? error.logLevel);\n const logMethod = (() => {\n switch (level) {\n case 'debug':\n return logger.debug;\n case 'info':\n return logger.info;\n case 'warning':\n return logger.warning;\n case 'critical':\n return logger.critical;\n case 'error':\n default:\n return logger.error;\n }\n })();\n\n logMethod(error.message, {\n type: 'application_error',\n status: error.status,\n statusCode: error.statusCode,\n code: error.code,\n why: error.why,\n fix: error.fix,\n link: error.link,\n details: error.details,\n cause: normalizeCauseForLog(error.cause),\n });\n}\n\nexport function resolveErrorConfig(\n input: BlypErrorLike & { status?: number; logLevel?: ErrorLogLevel },\n defaults: Partial<ResolvedErrorConfig> = {}\n): ResolvedErrorConfig {\n const candidateStatus = input.status ?? input.statusCode;\n const status = candidateStatus ?? defaults.status ?? defaults.statusCode ?? 500;\n const preset = getHttpCode(status);\n const message =\n input.message ??\n defaults.message ??\n preset?.message ??\n `HTTP ${status}`;\n\n return {\n status,\n statusCode: status,\n message,\n code: input.code ?? defaults.code ?? preset?.code,\n why: input.why ?? defaults.why ?? preset?.why,\n fix: input.fix ?? defaults.fix ?? preset?.fix,\n link: input.link ?? defaults.link ?? preset?.link,\n details: input.details ?? defaults.details ?? preset?.details,\n cause: input.cause ?? defaults.cause,\n stack: input.stack ?? defaults.stack,\n logLevel: resolveErrorLogLevel(\n status,\n input.logLevel ?? defaults.logLevel ?? preset?.logLevel\n ),\n };\n}\n\nexport function createBlypError(\n input: ErrorConstructionInput,\n defaults: Partial<ResolvedErrorConfig> = {}\n): BlypError {\n const error = new BlypError(resolveErrorConfig(input, defaults));\n\n if (input.skipLogging !== true && input.logger) {\n emitErrorLog(input.logger, error, input.logLevel);\n }\n\n return error;\n}\n\nfunction createErrorCode(\n definition: BlypErrorCodeDefinition,\n createErrorFromCode?: CreateCodeFunction\n): BlypErrorCode {\n const errorCode = {\n ...definition,\n statusCode: definition.status,\n create(overrides: BlypErrorCodeCreateOptions = {}): BlypError {\n if (createErrorFromCode) {\n return createErrorFromCode(definition, overrides) as BlypError;\n }\n\n return createBlypError({\n status: definition.status,\n message: definition.message,\n code: overrides.code ?? definition.code,\n why: overrides.why ?? definition.why,\n fix: overrides.fix ?? definition.fix,\n link: overrides.link ?? definition.link,\n details: overrides.details ?? definition.details,\n cause: overrides.cause,\n stack: overrides.stack,\n logLevel: overrides.logLevel ?? definition.logLevel,\n logger: overrides.logger,\n skipLogging: overrides.skipLogging,\n });\n },\n extend(extension: {\n code: string;\n message?: string;\n why?: string;\n fix?: string;\n link?: string;\n details?: Record<string, unknown>;\n logLevel?: ErrorLogLevel;\n }): BlypErrorCode {\n return createErrorCode(\n {\n key: extension.code,\n status: definition.status,\n message: extension.message ?? definition.message,\n code: extension.code,\n why: extension.why ?? definition.why,\n fix: extension.fix ?? definition.fix,\n link: extension.link ?? definition.link,\n details: extension.details ?? definition.details,\n logLevel: extension.logLevel ?? definition.logLevel,\n },\n createErrorFromCode\n );\n },\n } satisfies BlypErrorCode;\n\n return Object.freeze(errorCode);\n}\n\nexport function buildHttpCodeRegistry(\n createErrorFromCode?: CreateCodeFunction\n): HttpCodeRegistry<keyof typeof HTTP_STATUS_DEFINITIONS> {\n const entries = Object.entries(HTTP_STATUS_DEFINITIONS).map(([key, value]) => {\n return [key, createErrorCode({ key, ...value }, createErrorFromCode)] as const;\n });\n\n return Object.freeze(\n Object.fromEntries(entries) as HttpCodeRegistry<keyof typeof HTTP_STATUS_DEFINITIONS>\n );\n}\n\nexport const HTTP_CODES = buildHttpCodeRegistry();\n\nconst httpCodeByStatus = new Map<number, BlypErrorCode>(\n Object.values(HTTP_CODES).map((value) => [value.status, value])\n);\n\nexport function getHttpCode(status: number): BlypErrorCode | undefined {\n return httpCodeByStatus.get(status);\n}\n\nexport function extractErrorCandidate(payload: unknown): BlypErrorLike | string | undefined {\n if (typeof payload === 'string') {\n return payload;\n }\n\n if (!isPlainObject(payload)) {\n return undefined;\n }\n\n if (payload.error !== undefined) {\n const nested = payload.error;\n if (typeof nested === 'string') {\n return mergeCandidates(payload, nested);\n }\n\n if (isPlainObject(nested)) {\n return mergeCandidates(payload, extractErrorCandidate(nested));\n }\n }\n\n if (isPlainObject(payload.data)) {\n const nested = payload.data;\n if (nested.error !== undefined || hasErrorShape(nested)) {\n return mergeCandidates(payload, extractErrorCandidate(nested));\n }\n }\n\n if (hasErrorShape(payload)) {\n return normalizeRecordCandidate(payload);\n }\n\n return undefined;\n}\n\nfunction coercePayloadToError(\n payload: ParseableErrorPayload,\n options: ParseErrorOptions = {},\n responseContext: { status?: number; statusText?: string } = {}\n): BlypError {\n if (payload instanceof BlypError) {\n return payload;\n }\n\n const candidate = (() => {\n if (payload instanceof Error) {\n const errorWithMetadata = payload as Error & BlypErrorLike;\n return {\n status: errorWithMetadata.status,\n statusCode: errorWithMetadata.statusCode,\n code: errorWithMetadata.code,\n message: payload.message,\n stack: payload.stack,\n why: errorWithMetadata.why,\n fix: errorWithMetadata.fix,\n link: errorWithMetadata.link,\n details: errorWithMetadata.details,\n cause: errorWithMetadata.cause,\n logLevel: errorWithMetadata.logLevel,\n } satisfies BlypErrorLike;\n }\n\n return extractErrorCandidate(payload);\n })();\n\n const responseStatus = responseContext.status && responseContext.status > 0\n ? responseContext.status\n : undefined;\n const candidateStatus = typeof candidate === 'string'\n ? undefined\n : candidate?.status ?? candidate?.statusCode;\n const status = responseStatus ?? candidateStatus ?? options.fallbackStatus ?? 500;\n const textBody = typeof candidate === 'string'\n ? candidate.trim() || undefined\n : undefined;\n const statusText = responseContext.statusText?.trim() || undefined;\n\n return createBlypError(\n typeof candidate === 'string'\n ? { message: textBody, ...(responseStatus !== undefined ? { status: responseStatus } : {}) }\n : {\n ...(candidate ?? {}),\n ...(responseStatus !== undefined\n ? {\n status: responseStatus,\n statusCode: responseStatus,\n }\n : {}),\n },\n {\n status,\n message:\n (typeof candidate === 'string' ? textBody : candidate?.message) ??\n statusText ??\n getHttpCode(status)?.message ??\n `HTTP ${status}`,\n }\n );\n}\n\nexport async function readResponseErrorPayload(response: Response): Promise<unknown> {\n const contentType = response.headers.get('content-type')?.toLowerCase();\n const isJsonResponse = contentType?.includes('application/json') || contentType?.includes('+json');\n\n if (isJsonResponse) {\n try {\n return await response.clone().json();\n } catch {\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n }\n }\n\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n}\n\nexport function parseError(\n input: Response,\n options?: ParseErrorOptions\n): Promise<BlypError>;\nexport function parseError(\n input: ParseableErrorPayload,\n options?: ParseErrorOptions\n): BlypError;\nexport function parseError(\n input: ParseableErrorPayload | Response,\n options: ParseErrorOptions = {}\n): BlypError | Promise<BlypError> {\n if (isResponseLike(input)) {\n return (async () => {\n const payload = await readResponseErrorPayload(input).catch(() => undefined);\n const error = coercePayloadToError(payload as ParseableErrorPayload, options, {\n status: input.status,\n statusText: input.statusText,\n });\n\n if (options.logger) {\n emitErrorLog(options.logger, error, options.logLevel);\n }\n\n return error;\n })();\n }\n\n const error = coercePayloadToError(input, options);\n\n if (options.logger) {\n emitErrorLog(options.logger, error, options.logLevel);\n }\n\n return error;\n}\n","import {\n BlypError,\n buildHttpCodeRegistry,\n emitErrorLog,\n getHttpCode as getSharedHttpCode,\n resolveErrorConfig,\n type BlypErrorCode\n} from '../shared/errors';\nimport type { CreateErrorInput } from '../types/core/errors';\nimport {\n logger as defaultLogger,\n tryGetBetterStackSender,\n tryGetDatabuddySender,\n tryGetPostHogSender,\n} from './logger';\n\nexport type {\n BlypErrorCode,\n BlypErrorCodeDefinition,\n BlypErrorLike,\n ErrorLogLevel\n} from '../shared/errors';\nexport type { CreateErrorInput, CreateErrorOverrides } from '../types/core/errors';\n\nexport function createError(input: CreateErrorInput): BlypError {\n const error = new BlypError(resolveErrorConfig(input));\n\n if (input.skipLogging !== true) {\n emitErrorLog(input.logger ?? defaultLogger, error, input.logLevel);\n\n const posthog = tryGetPostHogSender(input.logger ?? defaultLogger);\n if (posthog?.shouldAutoCaptureExceptions()) {\n posthog.captureException(error, {\n source: 'server',\n warnIfUnavailable: true,\n properties: {\n 'blyp.type': 'application_error',\n status: error.status,\n statusCode: error.statusCode,\n ...(error.code !== undefined ? { code: error.code } : {}),\n ...(error.why !== undefined ? { why: error.why } : {}),\n ...(error.fix !== undefined ? { fix: error.fix } : {}),\n ...(error.link !== undefined ? { link: error.link } : {}),\n ...(error.details !== undefined ? { details: error.details } : {}),\n },\n });\n }\n\n const betterstack = tryGetBetterStackSender(input.logger ?? defaultLogger);\n if (betterstack?.shouldAutoCaptureExceptions()) {\n betterstack.captureException(error, {\n source: 'server',\n warnIfUnavailable: true,\n context: {\n 'blyp.type': 'application_error',\n status: error.status,\n statusCode: error.statusCode,\n ...(error.code !== undefined ? { code: error.code } : {}),\n ...(error.why !== undefined ? { why: error.why } : {}),\n ...(error.fix !== undefined ? { fix: error.fix } : {}),\n ...(error.link !== undefined ? { link: error.link } : {}),\n ...(error.details !== undefined ? { details: error.details } : {}),\n },\n });\n }\n\n const databuddy = tryGetDatabuddySender(input.logger ?? defaultLogger);\n if (databuddy?.shouldAutoCaptureExceptions()) {\n databuddy.captureException(error, {\n source: 'server',\n warnIfUnavailable: true,\n properties: {\n blyp_type: 'application_error',\n status: error.status,\n status_code: error.statusCode,\n ...(error.code !== undefined ? { code: error.code } : {}),\n ...(error.why !== undefined ? { why: error.why } : {}),\n ...(error.fix !== undefined ? { fix: error.fix } : {}),\n ...(error.link !== undefined ? { link: error.link } : {}),\n ...(error.details !== undefined ? { details: error.details } : {}),\n },\n });\n }\n }\n\n return error;\n}\n\nexport const HTTP_CODES = buildHttpCodeRegistry((definition, overrides = {}) => {\n return createError({\n status: definition.status,\n message: definition.message,\n code: definition.code,\n why: definition.why,\n fix: definition.fix,\n link: definition.link,\n details: definition.details,\n ...overrides,\n });\n});\n\nconst httpCodeByStatus = new Map<number, BlypErrorCode>(\n Object.values(HTTP_CODES).map((value) => [value.status, value])\n);\n\nexport function getHttpCode(status: number): BlypErrorCode | undefined {\n return httpCodeByStatus.get(status) ?? getSharedHttpCode(status);\n}\n\nexport { BlypError };\n","import fs from 'fs';\nimport { gunzipSync } from 'fflate';\nimport type { LogRecord } from './file-logger';\nimport type { ReadLogFileOptions } from '../types/core/log-reader';\n\nexport type { ReadLogFileOptions } from '../types/core/log-reader';\n\nfunction createFallbackRecord(line: string): LogRecord {\n return {\n timestamp: '',\n level: 'unknown',\n message: line,\n };\n}\n\nfunction parseLogLine(line: string): LogRecord {\n try {\n return JSON.parse(line) as LogRecord;\n } catch {\n return createFallbackRecord(line);\n }\n}\n\nfunction readRawFile(filePath: string): string {\n const content = fs.readFileSync(filePath);\n if (filePath.endsWith('.gz')) {\n return Buffer.from(gunzipSync(content)).toString('utf8');\n }\n return content.toString('utf8');\n}\n\nexport function formatLogRecord(record: LogRecord): string {\n const prefix = record.timestamp ? `[${record.timestamp}] ` : '';\n const level = record.level ? record.level.toUpperCase() : 'UNKNOWN';\n const caller = record.caller ? ` (${record.caller})` : '';\n return `${prefix}${level} ${record.message}${caller}`.trim();\n}\n\nexport async function readLogFile(\n filePath: string,\n options: ReadLogFileOptions = {}\n): Promise<string | LogRecord[]> {\n const { format = 'pretty', limit } = options;\n const rawContent = readRawFile(filePath);\n const allLines = rawContent\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n const lines = typeof limit === 'number' && limit >= 0 ? allLines.slice(-limit) : allLines;\n const records = lines.map(parseLogLine);\n\n if (format === 'json') {\n return records;\n }\n\n return records.map(formatLogRecord).join('\\n');\n}\n","import type { ResolveCtx } from '../types/core/helpers';\n\nexport type { ResolveCtx } from '../types/core/helpers';\n\nexport function resolveStatusCode(\n ctx: ResolveCtx,\n successCode: number = 200,\n errorCode: number = 500,\n isError: boolean = false\n): number {\n if (isError && ctx.error) {\n if (ctx.error.status) {\n return ctx.error.status;\n }\n if (ctx.error.statusCode) {\n return ctx.error.statusCode;\n }\n if (ctx.code) {\n return parseInt(ctx.code, 10) || errorCode;\n }\n return errorCode;\n }\n\n if (ctx.set?.status) {\n const status = ctx.set.status;\n return typeof status === 'number' ? status : parseInt(status as string, 10) || successCode;\n }\n\n return successCode;\n}\n\nexport function shouldLogTable(): boolean {\n return process.env.NODE_ENV !== 'production';\n}\n\nfunction normalizePath(path: string): string {\n const queryIndex = path.indexOf('?');\n let withoutQuery = queryIndex >= 0 ? path.substring(0, queryIndex) : path;\n if (withoutQuery.endsWith('/') && withoutQuery.length > 1) {\n withoutQuery = withoutQuery.slice(0, -1);\n }\n if (!withoutQuery.startsWith('/')) {\n withoutQuery = '/' + withoutQuery;\n }\n return withoutQuery;\n}\n\nfunction normalizePattern(pattern: string): string {\n const queryIndex = pattern.indexOf('?');\n let withoutQuery = queryIndex >= 0 ? pattern.substring(0, queryIndex) : pattern;\n if (withoutQuery.endsWith('/') && withoutQuery.length > 1) {\n withoutQuery = withoutQuery.slice(0, -1);\n }\n if (!withoutQuery.startsWith('/')) {\n withoutQuery = '/' + withoutQuery;\n }\n return withoutQuery;\n}\n\nexport function shouldIgnorePath(path: string, ignorePaths?: string[]): boolean {\n if (!ignorePaths || ignorePaths.length === 0) {\n return false;\n }\n\n const normalizedPath = normalizePath(path);\n\n return ignorePaths.some((ignoredPattern) => {\n const normalizedPattern = normalizePattern(ignoredPattern);\n\n if (normalizedPattern === normalizedPath) {\n return true;\n }\n\n if (normalizedPattern === '/**' || normalizedPattern === '**') {\n return true;\n }\n\n if (normalizedPattern === '/*') {\n const segments = normalizedPath.split('/').filter(s => s.length > 0);\n return segments.length === 1;\n }\n\n if (normalizedPattern.endsWith('/*') && !normalizedPattern.includes('**')) {\n const prefix = normalizedPattern.slice(0, -1);\n if (normalizedPath.startsWith(prefix)) {\n const rest = normalizedPath.slice(prefix.length);\n const restSegments = rest.split('/').filter(s => s.length > 0);\n return restSegments.length === 1;\n }\n return false;\n }\n\n if (normalizedPattern.includes('**')) {\n if (normalizedPattern === '/**') {\n return true;\n }\n \n if (normalizedPattern.startsWith('/') && normalizedPattern.endsWith('**')) {\n let prefix = normalizedPattern.slice(0, -2);\n if (prefix.endsWith('/') && prefix.length > 1) {\n prefix = prefix.slice(0, -1);\n }\n if (prefix === normalizedPath) {\n return true;\n }\n return normalizedPath.startsWith(prefix + '/');\n }\n \n const starIndex = normalizedPattern.indexOf('**');\n let prefix = normalizedPattern.substring(0, starIndex);\n const suffix = normalizedPattern.substring(starIndex + 2);\n \n if (prefix.endsWith('/') && prefix.length > 1) {\n prefix = prefix.slice(0, -1);\n }\n \n if (prefix === '' && suffix === '') {\n return true;\n }\n \n if (prefix !== '' && suffix === '') {\n return normalizedPath.startsWith(prefix + '/');\n }\n \n if (prefix === '' && suffix !== '') {\n return normalizedPath.endsWith(suffix) || normalizedPath.includes(suffix + '/');\n }\n \n if (prefix !== '' && suffix !== '') {\n return normalizedPath.startsWith(prefix) && \n (normalizedPath.endsWith(suffix) || normalizedPath.includes(suffix + '/'));\n }\n \n return false;\n }\n\n if (normalizedPattern.includes('*')) {\n const lastDotIndex = normalizedPattern.lastIndexOf('.');\n const lastStarIndex = normalizedPattern.lastIndexOf('*');\n \n if (lastDotIndex > lastStarIndex && lastStarIndex > 0) {\n const charBeforeStar = normalizedPattern[lastStarIndex - 1];\n if (charBeforeStar === '/') {\n const extPattern = normalizedPattern.slice(lastStarIndex);\n const filePart = normalizedPath.slice(normalizedPath.lastIndexOf('/') + 1);\n const extIndex = filePart.lastIndexOf('.');\n if (extIndex > 0) {\n const actualExt = filePart.slice(extIndex);\n return actualExt === extPattern;\n }\n }\n }\n \n const regexPattern = normalizedPattern\n .replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/\\*/g, '[^/]*');\n const regex = new RegExp('^' + regexPattern + '$');\n return regex.test(normalizedPath);\n }\n\n return false;\n });\n}\n","export function getMethodColor(method: string): string {\n const colors: Record<string, string> = {\n GET: '\\x1b[32m',\n POST: '\\x1b[36m',\n PUT: '\\x1b[33m',\n PATCH: '\\x1b[34m',\n DELETE: '\\x1b[31m',\n };\n const reset = '\\x1b[0m';\n return `${colors[method.toUpperCase()] || ''}${method}${reset}`;\n}\n\nexport function getStatusColor(statusCode: number): string {\n const reset = '\\x1b[0m';\n if (statusCode >= 500) return `\\x1b[31m${statusCode}${reset}`;\n if (statusCode >= 400) return `\\x1b[33m${statusCode}${reset}`;\n if (statusCode >= 300) return `\\x1b[36m${statusCode}${reset}`;\n if (statusCode >= 200) return `\\x1b[32m${statusCode}${reset}`;\n return `\\x1b[37m${statusCode}${reset}`;\n}\n\nexport function getArrowForMethod(method: string): string {\n const arrows: Record<string, string> = {\n GET: '→',\n POST: '↑',\n PUT: '⇑',\n PATCH: '↗',\n DELETE: '✕',\n };\n return arrows[method.toUpperCase()] || '•';\n}\n\nexport function getResponseTimeColor(ms: number): string {\n const reset = '\\x1b[0m';\n if (ms < 100) return `\\x1b[32m${ms}ms${reset}`;\n if (ms < 300) return `\\x1b[33m${ms}ms${reset}`;\n if (ms < 1000) return `\\x1b[31m${ms}ms${reset}`;\n return `\\x1b[41m\\x1b[37m${ms}ms${reset}`;\n}\n\nexport function getColoredLevel(level: string): string {\n const colors: Record<string, string> = {\n error: '\\x1b[31m',\n critical: '\\x1b[35m',\n warning: '\\x1b[33m',\n info: '\\x1b[34m',\n success: '\\x1b[32m',\n debug: '\\x1b[36m',\n };\n const reset = '\\x1b[0m';\n return `${colors[level.toLowerCase()] || ''}${level.toUpperCase()}${reset}`;\n}\n\nexport const colors = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n underscore: '\\x1b[4m',\n blink: '\\x1b[5m',\n reverse: '\\x1b[7m',\n hidden: '\\x1b[8m',\n black: '\\x1b[30m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n white: '\\x1b[37m',\n bgBlack: '\\x1b[40m',\n bgRed: '\\x1b[41m',\n bgGreen: '\\x1b[42m',\n bgYellow: '\\x1b[43m',\n bgBlue: '\\x1b[44m',\n bgMagenta: '\\x1b[45m',\n bgCyan: '\\x1b[46m',\n bgWhite: '\\x1b[47m',\n};\n","import { resolveConfig } from '../../core/config';\nimport {\n buildRecord,\n buildStructuredRecord,\n resolveStructuredWriteLevel,\n type LogMethodName,\n} from '../../core/log-record';\nimport {\n createStructuredLog,\n type StructuredLog,\n type StructuredLogPayload,\n} from '../../core/structured-log';\nimport {\n createBetterStackSender,\n} from './sender';\nimport type {\n BetterStackErrorTracker,\n BetterStackExceptionCaptureOptions,\n BetterStackLogger,\n BetterStackLoggerConfig,\n BetterStackSender,\n} from '../../types/connectors/betterstack';\n\nexport type {\n BetterStackErrorTracker,\n BetterStackExceptionCaptureOptions,\n BetterStackLogger,\n BetterStackLoggerConfig,\n} from '../../types/connectors/betterstack';\n\nfunction resolveSender(config: BetterStackLoggerConfig = {}): BetterStackSender {\n return createBetterStackSender(resolveConfig({\n ...(config.connectors ? { connectors: config.connectors } : {}),\n }));\n}\n\nfunction createBetterStackLoggerInstance(\n sender: BetterStackSender,\n bindings: Record<string, unknown> = {}\n): BetterStackLogger {\n const writeRecord = (\n level: LogMethodName,\n message: unknown,\n args: unknown[]\n ): void => {\n sender.send(buildRecord(level, message, args, bindings), {\n source: 'server',\n warnIfUnavailable: true,\n });\n };\n\n const writeStructured = (\n payload: StructuredLogPayload,\n message: string\n ): void => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n bindings\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeRecord('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeRecord('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeRecord('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeRecord('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeRecord('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeRecord('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeRecord('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeRecord('table', message, data === undefined ? [] : [data]);\n },\n flush: async () => {},\n shutdown: async () => {},\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: writeStructured,\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createBetterStackLoggerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nfunction createBetterStackErrorTrackerInstance(\n sender: BetterStackSender,\n bindings: Record<string, unknown> = {}\n): BetterStackErrorTracker {\n return {\n capture: (error: unknown, options: BetterStackExceptionCaptureOptions = {}) => {\n sender.captureException(error, {\n source: options.source ?? 'server',\n warnIfUnavailable: options.warnIfUnavailable ?? true,\n context: {\n ...bindings,\n ...(options.context ?? {}),\n 'blyp.manual': true,\n },\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createBetterStackErrorTrackerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nexport function createBetterStackLogger(\n config: BetterStackLoggerConfig = {}\n): BetterStackLogger {\n return createBetterStackLoggerInstance(resolveSender(config));\n}\n\nexport function createBetterStackErrorTracker(\n config: BetterStackLoggerConfig = {}\n): BetterStackErrorTracker {\n return createBetterStackErrorTrackerInstance(resolveSender(config));\n}\n\nexport function captureBetterStackException(\n error: unknown,\n options: BetterStackExceptionCaptureOptions = {},\n config: BetterStackLoggerConfig = {}\n): void {\n createBetterStackErrorTracker(config).capture(error, options);\n}\n\nexport function createStructuredBetterStackLogger<\n TFields extends Record<string, unknown> = Record<string, unknown>,\n>(\n groupId: string,\n initial?: TFields,\n config: BetterStackLoggerConfig = {}\n): StructuredLog<TFields> {\n const sender = resolveSender(config);\n\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: (payload, message) => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n {}\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n },\n }) as StructuredLog<TFields>;\n}\n","import { resolveConfig } from '../../core/config';\nimport {\n buildRecord,\n buildStructuredRecord,\n resolveStructuredWriteLevel,\n type LogMethodName,\n} from '../../core/log-record';\nimport {\n createStructuredLog,\n type StructuredLog,\n type StructuredLogPayload,\n} from '../../core/structured-log';\nimport { createDatabuddySender } from './sender';\nimport type {\n DatabuddyErrorTracker,\n DatabuddyExceptionCaptureOptions,\n DatabuddyLogger,\n DatabuddyLoggerConfig,\n DatabuddySender,\n} from '../../types/connectors/databuddy';\n\nexport type {\n DatabuddyErrorTracker,\n DatabuddyExceptionCaptureOptions,\n DatabuddyLogger,\n DatabuddyLoggerConfig,\n} from '../../types/connectors/databuddy';\n\nfunction resolveSender(config: DatabuddyLoggerConfig = {}): DatabuddySender {\n return createDatabuddySender(resolveConfig({\n ...(config.connectors ? { connectors: config.connectors } : {}),\n }));\n}\n\nfunction createDatabuddyLoggerInstance(\n sender: DatabuddySender,\n bindings: Record<string, unknown> = {}\n): DatabuddyLogger {\n const writeRecord = (\n level: LogMethodName,\n message: unknown,\n args: unknown[]\n ): void => {\n sender.send(buildRecord(level, message, args, bindings), {\n source: 'server',\n warnIfUnavailable: true,\n });\n };\n\n const writeStructured = (\n payload: StructuredLogPayload,\n message: string\n ): void => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n bindings\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeRecord('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeRecord('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeRecord('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeRecord('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeRecord('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeRecord('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeRecord('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeRecord('table', message, data === undefined ? [] : [data]);\n },\n flush: async () => {\n await sender.flush();\n },\n shutdown: async () => {\n await sender.flush();\n },\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: writeStructured,\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createDatabuddyLoggerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nfunction createDatabuddyErrorTrackerInstance(\n sender: DatabuddySender,\n bindings: Record<string, unknown> = {}\n): DatabuddyErrorTracker {\n return {\n capture: (error: unknown, options: DatabuddyExceptionCaptureOptions = {}) => {\n sender.captureException(error, {\n source: 'server',\n warnIfUnavailable: true,\n properties: {\n ...bindings,\n ...(options.properties ?? {}),\n blyp_source: 'server',\n blyp_manual: true,\n },\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createDatabuddyErrorTrackerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nexport function createDatabuddyLogger(config: DatabuddyLoggerConfig = {}): DatabuddyLogger {\n return createDatabuddyLoggerInstance(resolveSender(config));\n}\n\nexport function createStructuredDatabuddyLogger<\n TFields extends Record<string, unknown> = Record<string, unknown>,\n>(\n groupId: string,\n initial?: TFields,\n config: DatabuddyLoggerConfig = {}\n): StructuredLog<TFields> {\n const sender = resolveSender(config);\n\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: (payload, message) => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n {}\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n },\n }) as StructuredLog<TFields>;\n}\n\nexport function createDatabuddyErrorTracker(\n config: DatabuddyLoggerConfig = {}\n): DatabuddyErrorTracker {\n return createDatabuddyErrorTrackerInstance(resolveSender(config));\n}\n\nexport function captureDatabuddyException(\n error: unknown,\n options: DatabuddyExceptionCaptureOptions = {},\n config: DatabuddyLoggerConfig = {}\n): void {\n createDatabuddyErrorTracker(config).capture(error, options);\n}\n","import { resolveConfig } from '../../core/config';\nimport {\n buildRecord,\n buildStructuredRecord,\n resolveStructuredWriteLevel,\n type LogMethodName,\n} from '../../core/log-record';\nimport {\n createStructuredLog,\n type StructuredLog,\n type StructuredLogPayload,\n} from '../../core/structured-log';\nimport {\n createPostHogSender,\n} from './sender';\nimport type {\n PostHogErrorTracker,\n PostHogExceptionCaptureOptions,\n PostHogLogger,\n PostHogLoggerConfig,\n PostHogSender,\n} from '../../types/connectors/posthog';\n\nexport type {\n PostHogErrorTracker,\n PostHogExceptionCaptureOptions,\n PostHogLogger,\n PostHogLoggerConfig,\n} from '../../types/connectors/posthog';\n\nfunction resolveSender(config: PostHogLoggerConfig = {}): PostHogSender {\n return createPostHogSender(resolveConfig({\n ...(config.connectors ? { connectors: config.connectors } : {}),\n }));\n}\n\nfunction createPostHogLoggerInstance(\n sender: PostHogSender,\n bindings: Record<string, unknown> = {}\n): PostHogLogger {\n const writeRecord = (\n level: LogMethodName,\n message: unknown,\n args: unknown[]\n ): void => {\n sender.send(buildRecord(level, message, args, bindings), {\n source: 'server',\n warnIfUnavailable: true,\n });\n };\n\n const writeStructured = (\n payload: StructuredLogPayload,\n message: string\n ): void => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n bindings\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeRecord('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeRecord('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeRecord('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeRecord('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeRecord('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeRecord('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeRecord('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeRecord('table', message, data === undefined ? [] : [data]);\n },\n flush: async () => {},\n shutdown: async () => {},\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: writeStructured,\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createPostHogLoggerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nfunction createPostHogErrorTrackerInstance(\n sender: PostHogSender,\n bindings: Record<string, unknown> = {}\n): PostHogErrorTracker {\n return {\n capture: (error: unknown, options: PostHogExceptionCaptureOptions = {}) => {\n sender.captureException(error, {\n source: 'server',\n warnIfUnavailable: true,\n distinctId: options.distinctId,\n properties: {\n ...bindings,\n ...(options.properties ?? {}),\n 'blyp.source': 'server',\n 'blyp.manual': true,\n },\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createPostHogErrorTrackerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nexport function createPosthogLogger(config: PostHogLoggerConfig = {}): PostHogLogger {\n return createPostHogLoggerInstance(resolveSender(config));\n}\n\nexport function createStructuredPosthogLogger<\n TFields extends Record<string, unknown> = Record<string, unknown>,\n>(\n groupId: string,\n initial?: TFields,\n config: PostHogLoggerConfig = {}\n): StructuredLog<TFields> {\n const sender = resolveSender(config);\n\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: (payload, message) => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n {}\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n },\n }) as StructuredLog<TFields>;\n}\n\nexport function createPosthogErrorTracker(\n config: PostHogLoggerConfig = {}\n): PostHogErrorTracker {\n return createPostHogErrorTrackerInstance(resolveSender(config));\n}\n\nexport function capturePosthogException(\n error: unknown,\n options: PostHogExceptionCaptureOptions = {},\n config: PostHogLoggerConfig = {}\n): void {\n createPosthogErrorTracker(config).capture(error, options);\n}\n","import { resolveConfig } from '../../core/config';\nimport {\n buildRecord,\n buildStructuredRecord,\n resolveStructuredWriteLevel,\n type LogMethodName,\n} from '../../core/log-record';\nimport {\n createStructuredLog,\n type StructuredLog,\n type StructuredLogPayload,\n} from '../../core/structured-log';\nimport {\n createSentrySender,\n} from './sender';\nimport type {\n SentryLogger,\n SentryLoggerConfig,\n SentrySender,\n} from '../../types/connectors/sentry';\n\nexport type {\n SentryLogger,\n SentryLoggerConfig,\n} from '../../types/connectors/sentry';\n\nfunction resolveSender(config: SentryLoggerConfig = {}): SentrySender {\n return createSentrySender(resolveConfig({\n ...(config.connectors ? { connectors: config.connectors } : {}),\n }));\n}\n\nfunction createSentryLoggerInstance(\n sender: SentrySender,\n bindings: Record<string, unknown> = {}\n): SentryLogger {\n const writeRecord = (\n level: LogMethodName,\n message: unknown,\n args: unknown[]\n ): void => {\n sender.send(buildRecord(level, message, args, bindings), {\n source: 'server',\n warnIfUnavailable: true,\n });\n };\n\n const writeStructured = (\n payload: StructuredLogPayload,\n message: string\n ): void => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n bindings\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeRecord('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeRecord('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeRecord('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeRecord('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeRecord('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeRecord('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeRecord('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeRecord('table', message, data === undefined ? [] : [data]);\n },\n flush: async () => {},\n shutdown: async () => {},\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: writeStructured,\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createSentryLoggerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nexport function createSentryLogger(config: SentryLoggerConfig = {}): SentryLogger {\n return createSentryLoggerInstance(resolveSender(config));\n}\n\nexport function createStructuredSentryLogger<\n TFields extends Record<string, unknown> = Record<string, unknown>,\n>(\n groupId: string,\n initial?: TFields,\n config: SentryLoggerConfig = {}\n): StructuredLog<TFields> {\n const sender = resolveSender(config);\n\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: (payload, message) => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n {}\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n },\n }) as StructuredLog<TFields>;\n}\n","import { getArrowForMethod, getMethodColor, getResponseTimeColor, getStatusColor } from '../../core/colors';\nimport type {\n ErrorLike,\n HeaderRecord,\n HttpRequestLog,\n RequestLike,\n} from '../../types/frameworks/http';\n\nexport type { ErrorLike, HeaderRecord, HttpRequestLog, RequestLike, ResolveLike } from '../../types/frameworks/http';\n\nexport function getHeaderValue(\n headers: RequestLike['headers'],\n name: string\n): string | undefined {\n if (!headers) {\n return undefined;\n }\n\n if (headers instanceof Headers) {\n return headers.get(name) ?? headers.get(name.toLowerCase()) ?? undefined;\n }\n\n if (typeof (headers as { get?: unknown }).get === 'function') {\n const direct = (headers as { get(name: string): string | null }).get(name);\n return direct ?? (headers as { get(name: string): string | null }).get(name.toLowerCase()) ?? undefined;\n }\n\n const record = headers as HeaderRecord;\n const direct = record[name] ?? record[name.toLowerCase()];\n if (Array.isArray(direct)) {\n return direct[0];\n }\n\n return direct;\n}\n\nfunction parseForwardedHeader(value: string | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return value\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean)\n .map((entry) => {\n const match = entry.match(/for=\"?(\\[[^\\]]+\\]|[^;,\\s\"]+)/i);\n return match?.[1]?.replace(/^\"|\"$/g, '') ?? '';\n })\n .map((entry) => entry.replace(/^\\[|\\]$/g, ''))\n .filter(Boolean);\n}\n\nfunction parseForwardedFor(value: string | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return value\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean);\n}\n\nfunction stripPort(host: string): string {\n if (host.startsWith('[')) {\n const endIndex = host.indexOf(']');\n return endIndex >= 0 ? host.slice(1, endIndex) : host;\n }\n\n return host.replace(/:\\d+$/, '');\n}\n\nfunction detectBrowser(userAgent: string): string {\n if (/edg\\//i.test(userAgent)) return 'Edge';\n if (/opr\\//i.test(userAgent) || /opera/i.test(userAgent)) return 'Opera';\n if (/chrome\\//i.test(userAgent) && !/edg\\//i.test(userAgent)) return 'Chrome';\n if (/firefox\\//i.test(userAgent)) return 'Firefox';\n if (/safari\\//i.test(userAgent) && !/chrome\\//i.test(userAgent)) return 'Safari';\n if (/curl\\//i.test(userAgent)) return 'curl';\n if (/postmanruntime/i.test(userAgent)) return 'Postman';\n return 'Unknown';\n}\n\nfunction detectOperatingSystem(userAgent: string): string {\n if (/windows/i.test(userAgent)) return 'Windows';\n if (/android/i.test(userAgent)) return 'Android';\n if (/iphone|ipad|ipod/i.test(userAgent)) return 'iOS';\n if (/mac os x|macintosh/i.test(userAgent)) return 'macOS';\n if (/linux/i.test(userAgent)) return 'Linux';\n return 'Unknown';\n}\n\nfunction detectDeviceType(userAgent: string): 'desktop' | 'mobile' | 'tablet' | 'bot' | 'unknown' {\n if (!userAgent) return 'unknown';\n if (/bot|crawler|spider|curl|wget|postmanruntime/i.test(userAgent)) return 'bot';\n if (/ipad|tablet/i.test(userAgent)) return 'tablet';\n if (/mobi|iphone|android/i.test(userAgent)) return 'mobile';\n return 'desktop';\n}\n\nexport function extractPathname(requestUrl: string, fallbackPath: string = '/'): string {\n if (!requestUrl) {\n return fallbackPath;\n }\n\n if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {\n try {\n return new URL(requestUrl).pathname || fallbackPath;\n } catch {\n return fallbackPath;\n }\n }\n\n if (requestUrl.startsWith('/')) {\n const queryIndex = requestUrl.indexOf('?');\n return queryIndex >= 0 ? requestUrl.slice(0, queryIndex) : requestUrl;\n }\n\n try {\n return new URL(requestUrl, 'http://localhost').pathname || fallbackPath;\n } catch {\n return fallbackPath;\n }\n}\n\nexport function createRequestLike(\n method: string,\n url: string,\n headers?: RequestLike['headers']\n): RequestLike {\n return { method, url, headers };\n}\n\nexport function buildClientDetails(\n request: RequestLike,\n fallbackPath?: string\n): Omit<HttpRequestLog, 'type' | 'method' | 'url' | 'statusCode' | 'responseTime' | 'error' | 'stack'> {\n const pathname = fallbackPath ?? extractPathname(request.url);\n const urlObject = (() => {\n try {\n return new URL(request.url);\n } catch {\n try {\n return new URL(pathname, 'http://localhost');\n } catch {\n return null;\n }\n }\n })();\n\n const hostHeader =\n getHeaderValue(request.headers, 'x-forwarded-host') ??\n getHeaderValue(request.headers, 'host') ??\n urlObject?.host ??\n undefined;\n const hostname = hostHeader ? stripPort(hostHeader) : urlObject?.hostname;\n const port = hostHeader?.match(/:(\\d+)$/)?.[1] ?? (urlObject?.port || undefined);\n const xForwardedFor = parseForwardedFor(getHeaderValue(request.headers, 'x-forwarded-for'));\n const forwardedFor = parseForwardedHeader(getHeaderValue(request.headers, 'forwarded'));\n const ipCandidates = [\n getHeaderValue(request.headers, 'cf-connecting-ip'),\n getHeaderValue(request.headers, 'true-client-ip'),\n getHeaderValue(request.headers, 'fly-client-ip'),\n getHeaderValue(request.headers, 'x-real-ip'),\n getHeaderValue(request.headers, 'x-client-ip'),\n xForwardedFor[0],\n forwardedFor[0],\n ].filter((value): value is string => Boolean(value));\n const userAgent = getHeaderValue(request.headers, 'user-agent');\n const platform =\n getHeaderValue(request.headers, 'sec-ch-ua-platform')?.replace(/^\"|\"$/g, '') ??\n undefined;\n const deviceType = detectDeviceType(userAgent ?? '');\n\n return {\n hostname,\n ip: ipCandidates[0],\n forwardedFor: [...xForwardedFor, ...forwardedFor].filter((value, index, values) => {\n return values.indexOf(value) === index;\n }),\n protocol:\n getHeaderValue(request.headers, 'x-forwarded-proto') ??\n (urlObject?.protocol ? urlObject.protocol.replace(/:$/, '') : undefined),\n port,\n userAgent,\n origin: getHeaderValue(request.headers, 'origin'),\n referer: getHeaderValue(request.headers, 'referer'),\n acceptLanguage: getHeaderValue(request.headers, 'accept-language'),\n client: {\n ip: ipCandidates[0],\n hostname,\n browser: userAgent ? detectBrowser(userAgent) : undefined,\n os: userAgent ? detectOperatingSystem(userAgent) : undefined,\n deviceType,\n platform,\n isMobile: deviceType === 'mobile',\n },\n };\n}\n\nexport function buildRequestLogData(\n request: RequestLike,\n type: 'http_request' | 'http_error',\n path: string,\n statusCode: number,\n responseTime: number,\n extra: Record<string, unknown> = {}\n): HttpRequestLog {\n return {\n type,\n method: request.method,\n url: path,\n statusCode,\n responseTime,\n ...buildClientDetails(request, path),\n ...extra,\n };\n}\n\nexport function buildInfoLogMessage(\n method: string,\n statusCode: number,\n url: string,\n responseTime: number\n): string {\n const methodColor = getMethodColor(method);\n const statusColor = getStatusColor(statusCode);\n const timeColor = getResponseTimeColor(responseTime);\n const arrow = getArrowForMethod(method);\n return `${methodColor} ${arrow} ${statusColor} ${url} ${timeColor}`;\n}\n\nexport function toErrorLike(error: unknown, fallbackStatusCode?: number): ErrorLike | undefined {\n if (error === undefined || error === null) {\n return fallbackStatusCode === undefined\n ? undefined\n : { statusCode: fallbackStatusCode, message: `HTTP ${fallbackStatusCode}` };\n }\n\n if (error instanceof Error) {\n const errorWithStatus = error as ErrorLike;\n return {\n status: errorWithStatus.status,\n statusCode: errorWithStatus.statusCode ?? fallbackStatusCode,\n code: errorWithStatus.code,\n message: error.message,\n stack: error.stack,\n why: errorWithStatus.why,\n fix: errorWithStatus.fix,\n link: errorWithStatus.link,\n details: errorWithStatus.details,\n cause: errorWithStatus.cause,\n };\n }\n\n if (typeof error === 'object') {\n const record = error as Record<string, unknown>;\n return {\n status: typeof record.status === 'number' ? record.status : undefined,\n statusCode:\n typeof record.statusCode === 'number'\n ? record.statusCode\n : fallbackStatusCode,\n code:\n typeof record.code === 'string' || typeof record.code === 'number'\n ? record.code\n : undefined,\n message: typeof record.message === 'string' ? record.message : `HTTP ${fallbackStatusCode ?? 500}`,\n stack: typeof record.stack === 'string' ? record.stack : undefined,\n why: typeof record.why === 'string' ? record.why : undefined,\n fix: typeof record.fix === 'string' ? record.fix : undefined,\n link: typeof record.link === 'string' ? record.link : undefined,\n details:\n record.details !== null && typeof record.details === 'object' && !Array.isArray(record.details)\n ? record.details as Record<string, unknown>\n : undefined,\n cause: record.cause,\n };\n }\n\n return {\n statusCode: fallbackStatusCode,\n message: typeof error === 'string' ? error : `HTTP ${fallbackStatusCode ?? 500}`,\n };\n}\n\nexport function isErrorStatus(statusCode: number): boolean {\n return statusCode >= 400;\n}\n","import { DEFAULT_CLIENT_LOG_ENDPOINT, isClientLogEvent, normalizeEndpointPath } from '../../shared/client-log';\nimport type { ClientLogEvent } from '../../shared/client-log';\nimport { resolveConfig } from '../../core/config';\nimport { getMethodColor, getResponseTimeColor, getStatusColor } from '../../core/colors';\nimport { resolveStatusCode, shouldIgnorePath } from '../../core/helpers';\nimport { buildPostHogExceptionProperties } from '../../connectors/posthog/sender';\nimport {\n createBaseLogger,\n getBetterStackSender,\n getDatabuddySender,\n getOtlpRegistry,\n getPostHogSender,\n getSentrySender,\n tryGetBetterStackSender,\n tryGetDatabuddySender,\n tryGetPostHogSender,\n} from '../../core/logger';\nimport {\n buildClientDetails,\n buildInfoLogMessage,\n buildRequestLogData,\n getHeaderValue,\n extractPathname,\n isErrorStatus,\n} from './http';\nimport type { ErrorLike, HttpRequestLog, RequestLike, ResolveLike } from '../../types/frameworks/http';\nimport type {\n ClientLogIngestionConfig,\n ResolvedServerLogger,\n ServerLoggerConfig,\n} from '../../types/frameworks/shared';\nimport type { HttpErrorCaptureContext } from '../../types/frameworks/request-logger';\n\nfunction buildVerboseLogMessage(\n method: string,\n statusCode: number,\n url: string,\n responseTime: number\n): string {\n const methodColor = getMethodColor(method);\n const statusColor = getStatusColor(statusCode);\n const timeColor = getResponseTimeColor(responseTime);\n return `${methodColor} ${url} ${statusColor} ${timeColor}`;\n}\n\nexport function resolveClientLoggingConfig<Ctx>(\n clientLogging: ServerLoggerConfig<Ctx>['clientLogging'],\n defaultClientLogging: { enabled?: boolean; path?: string } | undefined\n): ClientLogIngestionConfig<Ctx> | null {\n const defaultPath = normalizeEndpointPath(\n defaultClientLogging?.path ?? DEFAULT_CLIENT_LOG_ENDPOINT\n );\n const defaultConfig = defaultClientLogging?.enabled === false\n ? null\n : { path: defaultPath };\n\n if (clientLogging === false) {\n return null;\n }\n\n if (clientLogging === undefined) {\n return defaultConfig;\n }\n\n if (clientLogging === true) {\n return {\n path: defaultPath,\n };\n }\n\n return {\n ...defaultConfig,\n ...clientLogging,\n path: normalizeEndpointPath(clientLogging.path ?? defaultPath),\n };\n}\n\nexport function resolveServerLogger<Ctx>(\n config: ServerLoggerConfig<Ctx> = {},\n loggerOverride?: ReturnType<typeof createBaseLogger>\n): ResolvedServerLogger<Ctx> {\n const resolvedConfig = resolveConfig({\n ...(config.level !== undefined ? { level: config.level } : {}),\n ...(config.pretty !== undefined ? { pretty: config.pretty } : {}),\n ...(config.destination !== undefined ? { destination: config.destination } : {}),\n ...(config.logDir !== undefined ? { logDir: config.logDir } : {}),\n ...(config.file !== undefined ? { file: config.file } : {}),\n ...(config.database !== undefined ? { database: config.database } : {}),\n ...(config.connectors !== undefined ? { connectors: config.connectors } : {}),\n });\n const {\n level = resolvedConfig.level,\n pretty = resolvedConfig.pretty,\n destination = resolvedConfig.destination,\n logDir = resolvedConfig.logDir,\n file = resolvedConfig.file,\n database = resolvedConfig.database,\n autoLogging = true,\n customProps,\n logErrors = true,\n ignorePaths,\n clientLogging,\n connectors,\n } = config;\n const logger = loggerOverride ?? createBaseLogger({\n level,\n pretty,\n destination,\n logDir,\n file,\n database,\n connectors,\n });\n const resolvedClientLogging = resolveClientLoggingConfig(\n clientLogging,\n resolvedConfig.clientLogging\n );\n const ingestionPath = resolvedClientLogging?.path ?? DEFAULT_CLIENT_LOG_ENDPOINT;\n const resolvedIgnorePaths = resolvedClientLogging\n ? Array.from(new Set([...(ignorePaths ?? []), ingestionPath]))\n : ignorePaths;\n\n return {\n logger,\n betterstack: getBetterStackSender(logger),\n databuddy: getDatabuddySender(logger),\n posthog: getPostHogSender(logger),\n sentry: getSentrySender(logger),\n otlp: getOtlpRegistry(logger),\n resolvedConfig,\n level,\n pretty,\n logDir,\n file,\n autoLogging,\n customProps,\n logErrors,\n resolvedIgnorePaths,\n resolvedClientLogging,\n ingestionPath,\n };\n}\n\nexport function shouldSkipAutoLogging<Ctx>(\n config: ResolvedServerLogger<Ctx>,\n ctx: Ctx,\n path: string\n): boolean {\n if (config.autoLogging === false) {\n return true;\n }\n\n if (\n typeof config.autoLogging === 'object' &&\n config.autoLogging.ignore?.(ctx)\n ) {\n return true;\n }\n\n return shouldIgnorePath(path, config.resolvedIgnorePaths);\n}\n\nexport function shouldSkipErrorLogging<Ctx>(\n config: ResolvedServerLogger<Ctx>,\n path: string\n): boolean {\n if (!config.logErrors) {\n return true;\n }\n\n return shouldIgnorePath(path, config.resolvedIgnorePaths);\n}\n\nexport function resolveAdditionalProps<Ctx>(\n config: ResolvedServerLogger<Ctx>,\n ctx: Ctx\n): Record<string, unknown> {\n return config.customProps ? config.customProps(ctx) : {};\n}\n\nexport function emitHttpRequestLog(\n logger: ResolvedServerLogger<unknown>['logger'],\n level: string,\n request: RequestLike,\n path: string,\n statusCode: number,\n responseTime: number,\n additionalProps: Record<string, unknown> = {}\n): HttpRequestLog {\n const requestLogData = buildRequestLogData(\n request,\n 'http_request',\n path,\n statusCode,\n responseTime,\n additionalProps\n );\n\n if (level === 'info') {\n logger.info(\n buildInfoLogMessage(request.method, statusCode, path, responseTime),\n requestLogData\n );\n } else {\n logger.info(\n buildVerboseLogMessage(request.method, statusCode, path, responseTime),\n requestLogData\n );\n if (Object.keys(additionalProps).length > 0) {\n logger.debug('Request context', additionalProps);\n }\n }\n\n return requestLogData;\n}\n\nexport function emitHttpErrorLog(\n logger: ResolvedServerLogger<unknown>['logger'],\n level: string,\n request: RequestLike,\n path: string,\n statusCode: number,\n responseTime: number,\n error: ErrorLike | undefined,\n additionalProps: Record<string, unknown> = {},\n captureContext: HttpErrorCaptureContext = {}\n): HttpRequestLog {\n const errorLogData = buildRequestLogData(\n request,\n 'http_error',\n path,\n statusCode,\n responseTime,\n {\n error: error?.message ?? `HTTP ${statusCode}`,\n stack: error?.stack,\n code: error?.code,\n why: error?.why,\n fix: error?.fix,\n link: error?.link,\n details: error?.details,\n ...additionalProps,\n }\n );\n\n const message = level === 'info'\n ? buildInfoLogMessage(request.method, statusCode, path, responseTime)\n : buildVerboseLogMessage(request.method, statusCode, path, responseTime);\n logger.error(message, errorLogData);\n\n const posthog = tryGetPostHogSender(logger);\n if (posthog?.shouldAutoCaptureExceptions()) {\n posthog.captureException(captureContext.error ?? error ?? message, {\n source: 'server',\n warnIfUnavailable: true,\n distinctId:\n captureContext.distinctId ??\n getHeaderValue(request.headers, 'x-posthog-distinct-id'),\n properties: buildPostHogExceptionProperties(\n {\n timestamp: new Date().toISOString(),\n level: 'error',\n message,\n data: errorLogData,\n },\n 'server',\n {\n $request_method: request.method,\n $request_path: path,\n $current_url: request.url,\n $response_status_code: statusCode,\n ...(getHeaderValue(request.headers, 'user-agent')\n ? { $user_agent: getHeaderValue(request.headers, 'user-agent') }\n : {}),\n ...(errorLogData.ip ? { $ip: errorLogData.ip } : {}),\n }\n ),\n });\n }\n\n const betterstack = tryGetBetterStackSender(logger);\n if (betterstack?.shouldAutoCaptureExceptions()) {\n betterstack.captureException(captureContext.error ?? error ?? message, {\n source: 'server',\n warnIfUnavailable: true,\n context: {\n timestamp: new Date().toISOString(),\n level: 'error',\n message,\n status: statusCode,\n path,\n data: errorLogData,\n },\n });\n }\n\n const databuddy = tryGetDatabuddySender(logger);\n if (databuddy?.shouldAutoCaptureExceptions()) {\n databuddy.captureException(captureContext.error ?? error ?? message, {\n source: 'server',\n warnIfUnavailable: true,\n properties: {\n method: request.method,\n path,\n status_code: statusCode,\n ...(request.url ? { current_url: request.url } : {}),\n ...(getHeaderValue(request.headers, 'user-agent')\n ? { user_agent: getHeaderValue(request.headers, 'user-agent') }\n : {}),\n ...(errorLogData.ip ? { ip: errorLogData.ip } : {}),\n payload: errorLogData,\n },\n });\n }\n\n return errorLogData;\n}\n\nexport async function parseClientLogPayload(\n request: RequestLike & { json?: () => Promise<unknown> },\n body?: unknown\n): Promise<unknown> {\n if (body !== undefined) {\n if (typeof body === 'string') {\n return JSON.parse(body);\n }\n\n return body;\n }\n\n if (typeof request.json === 'function') {\n return await request.json();\n }\n\n throw new Error('Unable to parse client log payload');\n}\n\nfunction getClientLogMethod(\n logger: ResolvedServerLogger<unknown>['logger'],\n level: Exclude<ClientLogEvent['level'], 'table'>\n): (message: unknown, ...args: unknown[]) => void {\n switch (level) {\n case 'debug':\n return logger.debug;\n case 'info':\n return logger.info;\n case 'warning':\n return logger.warning;\n case 'error':\n return logger.error;\n case 'critical':\n return logger.critical;\n case 'success':\n return logger.success;\n }\n}\n\nexport async function handleClientLogIngestion<Ctx>(options: {\n config: ResolvedServerLogger<Ctx>;\n ctx: Ctx;\n request: RequestLike & { json?: () => Promise<unknown> };\n body?: unknown;\n deliveryPath?: string;\n}): Promise<{ status: number; headers?: Record<string, string> }> {\n const { config, ctx, request, body, deliveryPath } = options;\n\n if (!config.resolvedClientLogging) {\n return { status: 404 };\n }\n\n let payload: unknown;\n try {\n payload = await parseClientLogPayload(request, body);\n } catch {\n return { status: 400 };\n }\n\n if (!isClientLogEvent(payload)) {\n return { status: 400 };\n }\n\n const isAllowed = config.resolvedClientLogging.validate\n ? await config.resolvedClientLogging.validate(ctx, payload)\n : true;\n if (!isAllowed) {\n return { status: 403 };\n }\n\n const serverContext = config.resolvedClientLogging.enrich\n ? await config.resolvedClientLogging.enrich(ctx, payload)\n : undefined;\n const structuredPayload: Record<string, unknown> = {\n ...payload,\n receivedAt: new Date().toISOString(),\n delivery: buildClientDetails(request, deliveryPath ?? extractPathname(request.url)),\n };\n\n if (serverContext !== undefined) {\n structuredPayload.serverContext = serverContext;\n }\n\n if (payload.level === 'table') {\n config.logger.table(`[client] ${payload.message}`, structuredPayload);\n } else {\n const logMethod = getClientLogMethod(config.logger, payload.level);\n logMethod(`[client] ${payload.message}`, structuredPayload);\n }\n\n const headers: Record<string, string> = {};\n if (payload.connector === 'betterstack') {\n headers['x-blyp-betterstack-status'] = config.betterstack.ready ? 'enabled' : 'missing';\n\n if (config.betterstack.ready) {\n const forwardedRecord = {\n timestamp: structuredPayload.receivedAt as string,\n level: payload.level,\n message: `[client] ${payload.message}`,\n data: structuredPayload,\n };\n\n config.betterstack.send(forwardedRecord, {\n source: 'client',\n });\n\n if (\n (payload.level === 'error' || payload.level === 'critical') &&\n config.betterstack.shouldAutoCaptureExceptions()\n ) {\n const clientErrorCandidate =\n payload.data &&\n typeof payload.data === 'object' &&\n !Array.isArray(payload.data) &&\n typeof (payload.data as Record<string, unknown>).message === 'string'\n ? payload.data\n : payload.message;\n\n config.betterstack.captureException(clientErrorCandidate, {\n source: 'client',\n warnIfUnavailable: true,\n context: {\n sessionId: payload.session.sessionId,\n pageUrl: payload.page.url,\n pagePath: payload.page.pathname,\n metadata: payload.metadata,\n payload: structuredPayload,\n },\n });\n }\n }\n } else if (payload.connector === 'databuddy') {\n headers['x-blyp-databuddy-status'] = config.databuddy.ready ? 'enabled' : 'missing';\n\n if (config.databuddy.ready) {\n const forwardedRecord = {\n timestamp: structuredPayload.receivedAt as string,\n level: payload.level,\n message: `[client] ${payload.message}`,\n data: structuredPayload,\n };\n\n config.databuddy.send(forwardedRecord, {\n source: 'client',\n });\n\n if (\n (payload.level === 'error' || payload.level === 'critical') &&\n config.databuddy.shouldAutoCaptureExceptions()\n ) {\n const clientErrorCandidate =\n payload.data &&\n typeof payload.data === 'object' &&\n !Array.isArray(payload.data) &&\n typeof (payload.data as Record<string, unknown>).message === 'string'\n ? payload.data\n : payload.message;\n\n config.databuddy.captureException(clientErrorCandidate, {\n source: 'client',\n warnIfUnavailable: true,\n sessionId: payload.session.sessionId,\n properties: {\n page_url: payload.page.url,\n page_path: payload.page.pathname,\n client_runtime: payload.device?.runtime,\n metadata: payload.metadata,\n payload: structuredPayload,\n },\n });\n }\n }\n } else if (payload.connector === 'posthog') {\n headers['x-blyp-posthog-status'] = config.posthog.ready ? 'enabled' : 'missing';\n\n if (config.posthog.ready) {\n const forwardedRecord = {\n timestamp: structuredPayload.receivedAt as string,\n level: payload.level,\n message: `[client] ${payload.message}`,\n data: structuredPayload,\n };\n\n config.posthog.send(forwardedRecord, {\n source: 'client',\n });\n\n if (\n (payload.level === 'error' || payload.level === 'critical') &&\n config.posthog.shouldAutoCaptureExceptions()\n ) {\n const metadata = structuredPayload.metadata;\n const posthogDistinctId =\n metadata &&\n typeof metadata === 'object' &&\n !Array.isArray(metadata) &&\n typeof (metadata as Record<string, unknown>).posthogDistinctId === 'string' &&\n (metadata as Record<string, unknown>).posthogDistinctId\n ? String((metadata as Record<string, unknown>).posthogDistinctId)\n : undefined;\n\n const clientErrorCandidate =\n payload.data &&\n typeof payload.data === 'object' &&\n !Array.isArray(payload.data) &&\n typeof (payload.data as Record<string, unknown>).message === 'string'\n ? payload.data\n : payload.message;\n\n config.posthog.captureException(clientErrorCandidate, {\n source: 'client',\n warnIfUnavailable: true,\n distinctId: posthogDistinctId,\n properties: buildPostHogExceptionProperties(forwardedRecord, 'client', {\n $session_id: payload.session.sessionId,\n $current_url: payload.page.url,\n $request_path: payload.page.pathname,\n 'client.runtime': payload.device?.runtime,\n 'client.metadata': payload.metadata,\n }),\n });\n }\n }\n } else if (payload.connector === 'sentry') {\n headers['x-blyp-sentry-status'] = config.sentry.ready ? 'enabled' : 'missing';\n\n if (config.sentry.ready) {\n config.sentry.send({\n timestamp: structuredPayload.receivedAt as string,\n level: payload.level,\n message: `[client] ${payload.message}`,\n data: structuredPayload,\n }, {\n source: 'client',\n });\n }\n } else if (payload.connector?.type === 'otlp') {\n const sender = config.otlp.get(payload.connector.name);\n\n headers['x-blyp-otlp-status'] = sender.ready ? 'enabled' : 'missing';\n\n if (sender.ready) {\n sender.send({\n timestamp: structuredPayload.receivedAt as string,\n level: payload.level,\n message: `[client] ${payload.message}`,\n data: structuredPayload,\n }, {\n source: 'client',\n });\n }\n }\n\n return Object.keys(headers).length > 0\n ? { status: 204, headers }\n : { status: 204 };\n}\n\nexport async function readNodeRequestBody(\n stream: AsyncIterable<Uint8Array | string>\n): Promise<string> {\n const chunks: Buffer[] = [];\n\n for await (const chunk of stream) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n\n return Buffer.concat(chunks).toString('utf8');\n}\n\nexport function buildAbsoluteUrl(\n path: string,\n headers?: RequestLike['headers']\n): string {\n if (path.startsWith('http://') || path.startsWith('https://')) {\n return path;\n }\n\n const protocol = getHeaderValue(headers, 'x-forwarded-proto') ?? 'http';\n const host = getHeaderValue(headers, 'host') ?? 'localhost';\n return `${protocol}://${host}${path.startsWith('/') ? path : `/${path}`}`;\n}\n\nexport function resolveRequestStatus(\n ctx: ResolveLike,\n successCode: number = 200,\n errorCode: number = 500,\n isError: boolean = false\n): number {\n return resolveStatusCode(\n {\n set: ctx.set,\n error: ctx.error\n ? {\n status: ctx.error.status,\n statusCode: ctx.error.statusCode,\n code: ctx.error.code === undefined ? undefined : String(ctx.error.code),\n }\n : undefined,\n code: ctx.code === undefined ? undefined : String(ctx.code),\n },\n successCode,\n errorCode,\n isError\n );\n}\n\nexport function shouldAutoFlushServerLogger<Ctx>(\n config: ResolvedServerLogger<Ctx>\n): boolean {\n return config.resolvedConfig.destination === 'database';\n}\n\nexport async function flushServerLoggerSafely<Ctx>(\n config: ResolvedServerLogger<Ctx>\n): Promise<void> {\n if (!shouldAutoFlushServerLogger(config)) {\n return;\n }\n\n try {\n await config.logger.flush();\n } catch (error) {\n console.warn('[Blyp] Warning: Failed to flush database logs.', error);\n }\n}\n\nexport {\n buildInfoLogMessage,\n buildRequestLogData,\n createRequestLike,\n extractPathname,\n isErrorStatus,\n toErrorLike,\n} from './http';\n","import {\n attachLoggerInternals,\n createLoggerWithSource,\n createStructuredLogForLogger,\n type BlypLogger,\n} from '../../core/logger';\nimport type { StructuredLog } from '../../core/structured-log';\nimport {\n markStructuredCollectorActive,\n markStructuredLogEmitted,\n setActiveRequestLogger,\n} from './request-context';\nimport type { RequestScopedLoggerOptions } from '../../types/frameworks/request-logger';\n\nexport type { RequestScopedLoggerOptions } from '../../types/frameworks/request-logger';\n\nexport function createRequestScopedLogger(\n logger: BlypLogger,\n options: RequestScopedLoggerOptions = {}\n): BlypLogger {\n const scopedLogger = createLoggerWithSource(logger, 'request-scoped');\n const requestScopedLogger = attachLoggerInternals({\n ...scopedLogger,\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLogForLogger(requestScopedLogger, groupId, {\n initialFields: initial,\n resolveDefaultFields: options.resolveStructuredFields,\n onCreate: () => {\n markStructuredCollectorActive();\n },\n onEmit: () => {\n markStructuredLogEmitted();\n options.onStructuredEmit?.();\n },\n });\n },\n child(bindings) {\n return createRequestScopedLogger(scopedLogger.child(bindings), options);\n },\n }, scopedLogger);\n\n setActiveRequestLogger(requestScopedLogger);\n return requestScopedLogger;\n}\n","import { Elysia } from 'elysia';\nimport type {\n ClientLogIngestionConfig,\n ElysiaContext,\n ElysiaLoggerConfig,\n} from '../../types/frameworks/elysia';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n enterRequestContext,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveRequestStatus,\n resolveServerLogger,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n} from '../shared';\n\nexport function createElysiaLogger(config: ElysiaLoggerConfig = {}) {\n const shared = resolveServerLogger(config);\n\n let app = new Elysia({ name: 'logger' })\n .decorate('log', shared.logger)\n .derive({ as: 'scoped' }, (ctx) => {\n enterRequestContext();\n const requestContext = ctx as unknown as ElysiaContext & {\n blypStructuredLogEmitted?: boolean;\n };\n\n requestContext.blypStructuredLogEmitted = false;\n\n return {\n startTime: performance.now(),\n log: createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: requestContext.request.method,\n path: requestContext.path || extractPathname(requestContext.request.url),\n ...resolveAdditionalProps(shared, requestContext),\n }),\n onStructuredEmit: () => {\n requestContext.blypStructuredLogEmitted = true;\n },\n }),\n };\n })\n .onAfterResponse({ as: 'scoped' }, async (ctx) => {\n const requestContext = ctx as unknown as ElysiaContext;\n const path = requestContext.path || extractPathname(requestContext.request.url);\n if ((requestContext as ElysiaContext & { blypStructuredLogEmitted?: boolean }).blypStructuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return;\n }\n if (shouldSkipAutoLogging(shared, requestContext, path)) {\n await flushServerLoggerSafely(shared);\n return;\n }\n\n const responseTime = Math.round(performance.now() - (requestContext.startTime ?? performance.now()));\n const statusCode = resolveRequestStatus(requestContext, 200, 500);\n if (isErrorStatus(statusCode)) {\n if (shouldSkipErrorLogging(shared, path)) {\n return;\n }\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createRequestLike(requestContext.request.method, requestContext.request.url, requestContext.request.headers),\n path,\n statusCode,\n responseTime,\n requestContext.error,\n resolveAdditionalProps(shared, requestContext),\n {\n error: requestContext.error,\n }\n );\n await flushServerLoggerSafely(shared);\n return;\n }\n\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n createRequestLike(requestContext.request.method, requestContext.request.url, requestContext.request.headers),\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, requestContext)\n );\n await flushServerLoggerSafely(shared);\n })\n .onError({ as: 'scoped' }, async (ctx) => {\n const requestContext = ctx as unknown as ElysiaContext;\n const path = requestContext.path || extractPathname(requestContext.request.url);\n if ((requestContext as ElysiaContext & { blypStructuredLogEmitted?: boolean }).blypStructuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return;\n }\n if (shouldSkipErrorLogging(shared, path)) {\n await flushServerLoggerSafely(shared);\n return;\n }\n const responseTime = Math.round(performance.now() - (requestContext.startTime ?? performance.now()));\n const statusCode = resolveRequestStatus(requestContext, 200, 500, true);\n\n try {\n requestContext.set!.status = statusCode;\n } catch {}\n\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createRequestLike(requestContext.request.method, requestContext.request.url, requestContext.request.headers),\n path,\n statusCode,\n responseTime,\n requestContext.error,\n resolveAdditionalProps(shared, requestContext),\n {\n error: requestContext.error,\n }\n );\n await flushServerLoggerSafely(shared);\n });\n\n if (shared.resolvedClientLogging) {\n app = app.post(shared.ingestionPath, async (ctx) => {\n const requestContext = ctx as unknown as ElysiaContext;\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: requestContext,\n request: requestContext.request,\n body: requestContext.body,\n deliveryPath: shared.ingestionPath,\n });\n await flushServerLoggerSafely(shared);\n\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n });\n }\n\n return app;\n}\n","import type { MiddlewareHandler } from 'hono';\nimport type { HonoLoggerConfig } from '../../types/frameworks/hono';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n runWithRequestContext,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nexport function createHonoLogger(config: HonoLoggerConfig = {}): MiddlewareHandler {\n const shared = resolveServerLogger(config);\n\n return async (context, next) => {\n return runWithRequestContext(async () => {\n const startTime = performance.now();\n let structuredLogEmitted = false;\n context.set(\n 'blypLog',\n createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: context.req.method,\n path: context.req.path || extractPathname(context.req.url),\n ...resolveAdditionalProps(shared, context),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n })\n );\n context.set('blypStartTime', startTime);\n\n const path = context.req.path || extractPathname(context.req.url);\n if (\n shared.resolvedClientLogging &&\n context.req.method === 'POST' &&\n path === shared.ingestionPath\n ) {\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: context,\n request: context.req.raw,\n deliveryPath: shared.ingestionPath,\n });\n await flushServerLoggerSafely(shared);\n\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n }\n\n let thrownError: unknown;\n try {\n await next();\n } catch (error) {\n thrownError = error;\n throw error;\n } finally {\n if (structuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return;\n }\n\n const responseTime = Math.round(performance.now() - startTime);\n const request = createRequestLike(\n context.req.method,\n context.req.url,\n context.req.raw.headers\n );\n const statusCode = context.res?.status ?? (thrownError ? 500 : 200);\n\n if (thrownError || isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n request,\n path,\n statusCode,\n responseTime,\n toErrorLike(thrownError, statusCode),\n resolveAdditionalProps(shared, context),\n {\n error: thrownError,\n }\n );\n }\n await flushServerLoggerSafely(shared);\n return;\n }\n\n if (!shouldSkipAutoLogging(shared, context, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n request,\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, context)\n );\n }\n await flushServerLoggerSafely(shared);\n }\n });\n };\n}\n\nexport const createLogger = createHonoLogger;\n","import type { ErrorRequestHandler, RequestHandler } from 'express';\nimport type {\n ExpressLoggerConfig,\n ExpressLoggerContext,\n} from '../../types/frameworks/express';\nimport {\n buildAbsoluteUrl,\n createRequestScopedLogger,\n createRequestLike,\n enterRequestContext,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n handleClientLogIngestion,\n isErrorStatus,\n readNodeRequestBody,\n resolveAdditionalProps,\n resolveServerLogger,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nfunction buildExpressContext(\n req: ExpressLoggerContext['req'],\n res: ExpressLoggerContext['res'],\n error?: unknown\n): ExpressLoggerContext {\n return { req, res, error };\n}\n\nexport function createExpressLogger(config: ExpressLoggerConfig = {}): RequestHandler {\n const shared = resolveServerLogger(config);\n\n return (req, res, next) => {\n enterRequestContext();\n let structuredLogEmitted = false;\n\n req.blypLog = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: req.method,\n path: extractPathname(req.originalUrl || req.url || '/'),\n ...resolveAdditionalProps(shared, buildExpressContext(req, res, res.locals.blypError)),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n });\n res.locals.blypStartTime = performance.now();\n\n res.on('finish', () => {\n const path = extractPathname(req.originalUrl || req.url || '/');\n const request = createRequestLike(\n req.method,\n buildAbsoluteUrl(req.originalUrl || req.url || '/', req.headers),\n req.headers\n );\n const responseTime = Math.round(\n performance.now() - (res.locals.blypStartTime ?? performance.now())\n );\n const context = buildExpressContext(req, res, res.locals.blypError);\n\n if (structuredLogEmitted) {\n return;\n }\n\n if (res.locals.blypError || isErrorStatus(res.statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n request,\n path,\n res.statusCode,\n responseTime,\n toErrorLike(res.locals.blypError, res.statusCode),\n resolveAdditionalProps(shared, context),\n {\n error: res.locals.blypError,\n }\n );\n }\n return;\n }\n\n if (!shouldSkipAutoLogging(shared, context, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n request,\n path,\n res.statusCode,\n responseTime,\n resolveAdditionalProps(shared, context)\n );\n }\n });\n\n const path = extractPathname(req.originalUrl || req.url || '/');\n if (\n shared.resolvedClientLogging &&\n req.method.toUpperCase() === 'POST' &&\n path === shared.ingestionPath\n ) {\n void (async () => {\n const body = req.body === undefined ? await readNodeRequestBody(req) : req.body;\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: buildExpressContext(req, res),\n request: createRequestLike(\n req.method,\n buildAbsoluteUrl(req.originalUrl || req.url || '/', req.headers),\n req.headers\n ),\n body,\n deliveryPath: shared.ingestionPath,\n });\n if (result.headers) {\n for (const [key, value] of Object.entries(result.headers)) {\n res.setHeader(key, value);\n }\n }\n res.status(result.status).end();\n })().catch(next);\n return;\n }\n\n next();\n };\n}\n\nexport function createExpressErrorLogger(\n _config: ExpressLoggerConfig = {}\n): ErrorRequestHandler {\n return (error, _req, res, next) => {\n res.locals.blypError = error;\n next(error);\n };\n}\n\nexport const createLogger = createExpressLogger;\n","import type { FastifyPluginAsync } from 'fastify';\nimport fp from 'fastify-plugin';\nimport type { FastifyLoggerConfig } from '../../types/frameworks/fastify';\nimport {\n buildAbsoluteUrl,\n createRequestScopedLogger,\n createRequestLike,\n enterRequestContext,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nexport function createFastifyLogger(\n config: FastifyLoggerConfig = {}\n): FastifyPluginAsync {\n const shared = resolveServerLogger(config);\n\n return fp(async (fastify) => {\n fastify.decorateRequest('blypLogHolder');\n fastify.decorateRequest('blypLog', {\n getter() {\n return (this as typeof this & { blypLogHolder?: typeof shared.logger }).blypLogHolder as typeof shared.logger;\n },\n setter(value) {\n (this as typeof this & { blypLogHolder?: typeof shared.logger }).blypLogHolder = value;\n },\n });\n fastify.decorateRequest('blypStartTime', undefined);\n fastify.decorateRequest('blypError', undefined);\n fastify.decorateRequest('blypStructuredLogEmitted', undefined);\n\n fastify.addHook('onRequest', async (request) => {\n enterRequestContext();\n request.blypStartTime = performance.now();\n request.blypError = undefined;\n request.blypStructuredLogEmitted = false;\n });\n\n fastify.addHook('preHandler', async (request) => {\n request.blypLog = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: request.method,\n path: extractPathname(request.url),\n ...resolveAdditionalProps(shared, {\n request,\n reply: {} as unknown,\n error: request.blypError,\n } as any),\n }),\n onStructuredEmit: () => {\n request.blypStructuredLogEmitted = true;\n },\n });\n });\n\n fastify.addHook('onError', async (request, _reply, error) => {\n request.blypError = error;\n });\n\n fastify.addHook('onResponse', async (request, reply) => {\n const path = extractPathname(request.url);\n const requestLike = createRequestLike(\n request.method,\n buildAbsoluteUrl(request.url, request.headers),\n request.headers\n );\n const responseTime = Math.round(\n performance.now() - (request.blypStartTime ?? performance.now())\n );\n const context = {\n request,\n reply,\n error: request.blypError,\n };\n\n if (request.blypStructuredLogEmitted) {\n return;\n }\n\n if (request.blypError || isErrorStatus(reply.statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n reply.statusCode,\n responseTime,\n toErrorLike(request.blypError, reply.statusCode),\n resolveAdditionalProps(shared, context),\n {\n error: request.blypError,\n }\n );\n }\n return;\n }\n\n if (!shouldSkipAutoLogging(shared, context, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n reply.statusCode,\n responseTime,\n resolveAdditionalProps(shared, context)\n );\n }\n });\n\n if (shared.resolvedClientLogging) {\n fastify.route({\n method: 'POST',\n url: shared.ingestionPath,\n handler: async (request, reply) => {\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: {\n request,\n reply,\n },\n request: createRequestLike(\n request.method,\n buildAbsoluteUrl(request.url, request.headers),\n request.headers\n ),\n body: request.body,\n deliveryPath: shared.ingestionPath,\n });\n reply.code(result.status);\n if (result.headers) {\n for (const [key, value] of Object.entries(result.headers)) {\n reply.header(key, value);\n }\n }\n return null;\n },\n });\n }\n });\n}\n\nexport const createLogger = createFastifyLogger;\n","import type {\n NextJsHandlerWithLogger,\n NextJsLoggerConfig,\n NextJsLoggerContext,\n NextJsLoggerFactory,\n NextJsRouteContext,\n} from '../../types/frameworks/nextjs';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n runWithRequestContext,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nfunction createContext(\n request: Request,\n context?: NextJsRouteContext,\n response?: Response,\n error?: unknown\n): NextJsLoggerContext {\n return { request, context, response, error };\n}\n\nexport function createNextJsLogger(\n config: NextJsLoggerConfig = {}\n): NextJsLoggerFactory {\n const shared = resolveServerLogger(config);\n\n return {\n logger: shared.logger,\n withLogger: <Ctx extends NextJsRouteContext = NextJsRouteContext>(\n handler: NextJsHandlerWithLogger<Ctx>\n ) => {\n return async (request: Request, context: Ctx) => {\n return runWithRequestContext(async () => {\n const startTime = performance.now();\n const path = extractPathname(request.url);\n let structuredLogEmitted = false;\n const scopedLogger = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: request.method,\n path,\n ...resolveAdditionalProps(shared, createContext(request, context)),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n });\n\n try {\n const response = await handler(request, context, { log: scopedLogger });\n if (structuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return response;\n }\n\n const statusCode = response.status;\n const requestLike = createRequestLike(\n request.method,\n request.url,\n request.headers\n );\n const loggerContext = createContext(request, context, response);\n const responseTime = Math.round(performance.now() - startTime);\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n } else if (!shouldSkipAutoLogging(shared, loggerContext, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n\n await flushServerLoggerSafely(shared);\n\n return response;\n } catch (error) {\n if (!structuredLogEmitted && !shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createRequestLike(request.method, request.url, request.headers),\n path,\n 500,\n Math.round(performance.now() - startTime),\n toErrorLike(error, 500),\n resolveAdditionalProps(shared, createContext(request, context, undefined, error)),\n {\n error,\n }\n );\n }\n await flushServerLoggerSafely(shared);\n throw error;\n }\n });\n };\n },\n clientLogHandler: async (request: Request) => {\n const path = extractPathname(request.url);\n if (path !== shared.ingestionPath) {\n return new Response(\n JSON.stringify({\n error: `Mounted route path ${path} does not match configured client logging path ${shared.ingestionPath}`,\n }),\n {\n status: 500,\n headers: {\n 'content-type': 'application/json',\n },\n }\n );\n }\n\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: createContext(request),\n request,\n deliveryPath: path,\n });\n await flushServerLoggerSafely(shared);\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n },\n };\n}\n\nexport const createLogger = createNextJsLogger;\n","import type { BlypLogger } from '../../core/logger';\nimport type {\n ReactRouterContextStore,\n ReactRouterLoggerConfig,\n ReactRouterLoggerContext,\n ReactRouterLoggerFactory,\n ReactRouterMiddlewareArgs,\n} from '../../types/frameworks/react-router';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n runWithRequestContext,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nconst REACT_ROUTER_LOGGER_KEY = Symbol.for('blyp.react-router.logger');\nconst REACT_ROUTER_LOGGER_FALLBACK_KEY = '__blypLog';\n\nfunction createContext(\n args: ReactRouterMiddlewareArgs,\n response?: Response,\n error?: unknown\n): ReactRouterLoggerContext {\n return {\n request: args.request,\n params: args.params,\n context: args.context,\n response,\n error,\n };\n}\n\nfunction readLoggerValue(context: ReactRouterContextStore): unknown {\n if (typeof context.get === 'function') {\n const symbolValue = context.get(REACT_ROUTER_LOGGER_KEY);\n if (symbolValue) {\n return symbolValue;\n }\n\n return context.get(REACT_ROUTER_LOGGER_FALLBACK_KEY);\n }\n\n return context[REACT_ROUTER_LOGGER_KEY] ?? context[REACT_ROUTER_LOGGER_FALLBACK_KEY];\n}\n\nfunction writeLoggerValue(context: ReactRouterContextStore, logger: BlypLogger): void {\n if (typeof context.set === 'function') {\n context.set(REACT_ROUTER_LOGGER_KEY, logger);\n context.set(REACT_ROUTER_LOGGER_FALLBACK_KEY, logger);\n return;\n }\n\n context[REACT_ROUTER_LOGGER_KEY] = logger;\n context[REACT_ROUTER_LOGGER_FALLBACK_KEY] = logger;\n}\n\nfunction resolveThrownStatusCode(error: unknown): number {\n const errorLike = toErrorLike(error);\n return errorLike?.status ?? errorLike?.statusCode ?? 500;\n}\n\nexport function createReactRouterLogger(\n config: ReactRouterLoggerConfig = {}\n): ReactRouterLoggerFactory {\n const shared = resolveServerLogger(config);\n\n const setLogger = (context: ReactRouterContextStore, logger: BlypLogger): void => {\n writeLoggerValue(context, logger);\n };\n\n const getLogger = (context: ReactRouterContextStore): BlypLogger => {\n const logger = readLoggerValue(context);\n return logger && typeof logger === 'object' ? logger as BlypLogger : shared.logger;\n };\n\n return {\n logger: shared.logger,\n setLogger,\n getLogger,\n middleware: async (args, next) => {\n return runWithRequestContext(async () => {\n const startTime = performance.now();\n const path = extractPathname(args.request.url);\n let structuredLogEmitted = false;\n const scopedLogger = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: args.request.method,\n path,\n ...resolveAdditionalProps(shared, createContext(args)),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n });\n\n setLogger(args.context, scopedLogger);\n\n try {\n const response = await next();\n if (structuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return response;\n }\n\n const statusCode = response.status;\n const loggerContext = createContext(args, response);\n const responseTime = Math.round(performance.now() - startTime);\n const requestLike = createRequestLike(\n args.request.method,\n args.request.url,\n args.request.headers\n );\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n } else if (!shouldSkipAutoLogging(shared, loggerContext, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n\n await flushServerLoggerSafely(shared);\n return response;\n } catch (error) {\n if (!structuredLogEmitted && !shouldSkipErrorLogging(shared, path)) {\n const statusCode = resolveThrownStatusCode(error);\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createRequestLike(args.request.method, args.request.url, args.request.headers),\n path,\n statusCode,\n Math.round(performance.now() - startTime),\n toErrorLike(error, statusCode),\n resolveAdditionalProps(shared, createContext(args, undefined, error)),\n { error }\n );\n }\n\n await flushServerLoggerSafely(shared);\n throw error;\n }\n });\n },\n clientLogHandler: async (request: Request) => {\n const path = extractPathname(request.url);\n if (path !== shared.ingestionPath) {\n return new Response(\n JSON.stringify({\n error: `Mounted route path ${path} does not match configured client logging path ${shared.ingestionPath}`,\n }),\n {\n status: 500,\n headers: { 'content-type': 'application/json' },\n }\n );\n }\n\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: createContext({ request, context: {} }),\n request,\n deliveryPath: path,\n });\n await flushServerLoggerSafely(shared);\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n },\n };\n}\n\nexport const createLogger = createReactRouterLogger;\n","import type {\n TanStackStartLoggerConfig,\n TanStackStartLoggerContext,\n TanStackStartLoggerFactory,\n TanStackStartMiddlewareContext,\n} from '../../types/frameworks/tanstack-start';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n emitHttpErrorLog,\n emitHttpRequestLog,\n extractPathname,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n runWithRequestContext,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nfunction createContext(\n request: Request,\n context: Record<string, unknown>,\n response?: Response,\n error?: unknown\n): TanStackStartLoggerContext {\n return { request, context, response, error };\n}\n\nexport function createTanStackStartLogger(\n config: TanStackStartLoggerConfig = {}\n): TanStackStartLoggerFactory {\n const shared = resolveServerLogger(config);\n\n return {\n logger: shared.logger,\n requestMiddleware: async ({ request, context, next }: TanStackStartMiddlewareContext) => {\n return runWithRequestContext(async () => {\n const startTime = performance.now();\n const path = extractPathname(request.url);\n let structuredLogEmitted = false;\n const nextContext: Record<string, unknown> = {\n ...context,\n };\n const scopedLogger = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: (): Record<string, unknown> => ({\n method: request.method,\n path,\n ...resolveAdditionalProps(shared, createContext(request, nextContext)),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n });\n nextContext.blypLog = scopedLogger;\n\n try {\n const response = await next({ context: nextContext });\n if (structuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return response;\n }\n\n const statusCode = response.status;\n const loggerContext = createContext(request, nextContext, response);\n const responseTime = Math.round(performance.now() - startTime);\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createRequestLike(request.method, request.url, request.headers),\n path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n } else if (!shouldSkipAutoLogging(shared, loggerContext, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n createRequestLike(request.method, request.url, request.headers),\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n\n await flushServerLoggerSafely(shared);\n\n return response;\n } catch (error) {\n if (!structuredLogEmitted && !shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createRequestLike(request.method, request.url, request.headers),\n path,\n 500,\n Math.round(performance.now() - startTime),\n toErrorLike(error, 500),\n resolveAdditionalProps(shared, createContext(request, nextContext, undefined, error)),\n {\n error,\n }\n );\n }\n await flushServerLoggerSafely(shared);\n throw error;\n }\n });\n },\n clientLogHandlers: {\n POST: async (request: Request) => {\n const path = extractPathname(request.url);\n if (path !== shared.ingestionPath) {\n return new Response(\n JSON.stringify({\n error: `Mounted route path ${path} does not match configured client logging path ${shared.ingestionPath}`,\n }),\n {\n status: 500,\n headers: {\n 'content-type': 'application/json',\n },\n }\n );\n }\n\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: createContext(request, {}),\n request,\n deliveryPath: path,\n });\n await flushServerLoggerSafely(shared);\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n },\n },\n };\n}\n\nexport const createLogger = createTanStackStartLogger;\n","import type {\n SvelteKitHandle,\n SvelteKitLoggerConfig,\n SvelteKitLoggerContext,\n SvelteKitLoggerFactory,\n SvelteKitRequestEvent,\n} from '../../types/frameworks/sveltekit';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n emitHttpErrorLog,\n emitHttpRequestLog,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n runWithRequestContext,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nfunction createContext(\n event: SvelteKitRequestEvent,\n response?: Response,\n error?: unknown\n): SvelteKitLoggerContext {\n return { event, response, error };\n}\n\nexport function createSvelteKitLogger(\n config: SvelteKitLoggerConfig = {}\n): SvelteKitLoggerFactory {\n const shared = resolveServerLogger(config);\n\n const handle: SvelteKitHandle = async ({ event, resolve }) => {\n return runWithRequestContext(async () => {\n let structuredLogEmitted = false;\n event.locals.blypLog = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: event.request.method,\n path: event.url.pathname,\n ...resolveAdditionalProps(shared, createContext(event)),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n });\n const startTime = performance.now();\n const path = event.url.pathname;\n const requestLike = createRequestLike(\n event.request.method,\n event.request.url,\n event.request.headers\n );\n\n try {\n const response = await resolve(event);\n if (structuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return response;\n }\n\n const statusCode = response.status;\n const loggerContext = createContext(event, response);\n const responseTime = Math.round(performance.now() - startTime);\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n } else if (!shouldSkipAutoLogging(shared, loggerContext, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n\n await flushServerLoggerSafely(shared);\n\n return response;\n } catch (error) {\n if (!structuredLogEmitted && !shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n 500,\n Math.round(performance.now() - startTime),\n toErrorLike(error, 500),\n resolveAdditionalProps(shared, createContext(event, undefined, error)),\n {\n error,\n }\n );\n }\n await flushServerLoggerSafely(shared);\n throw error;\n }\n });\n };\n\n return {\n logger: shared.logger,\n handle,\n clientLogHandler: async (event) => {\n const path = event.url.pathname;\n if (path !== shared.ingestionPath) {\n return new Response(\n JSON.stringify({\n error: `Mounted route path ${path} does not match configured client logging path ${shared.ingestionPath}`,\n }),\n {\n status: 500,\n headers: {\n 'content-type': 'application/json',\n },\n }\n );\n }\n\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: createContext(event),\n request: event.request,\n deliveryPath: path,\n });\n await flushServerLoggerSafely(shared);\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n },\n };\n}\n\nexport const createLogger = createSvelteKitLogger;\n","import type {\n AstroEndpointContext,\n AstroLoggerConfig,\n AstroLoggerContext,\n AstroLoggerFactory,\n AstroMiddlewareContext,\n} from '../../types/frameworks/astro';\nimport {\n createRequestScopedLogger,\n createRequestLike,\n emitHttpErrorLog,\n emitHttpRequestLog,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n runWithRequestContext,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\n\nfunction createContext(\n context: AstroMiddlewareContext,\n response?: Response,\n error?: unknown\n): AstroLoggerContext {\n return { context, response, error };\n}\n\nexport function createAstroLogger(\n config: AstroLoggerConfig = {}\n): AstroLoggerFactory {\n const shared = resolveServerLogger(config);\n\n return {\n logger: shared.logger,\n onRequest: async (context, next) => {\n return runWithRequestContext(async () => {\n let structuredLogEmitted = false;\n context.locals.blypLog = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: context.request.method,\n path: context.url.pathname,\n ...resolveAdditionalProps(shared, createContext(context)),\n }),\n onStructuredEmit: () => {\n structuredLogEmitted = true;\n },\n });\n const startTime = performance.now();\n const path = context.url.pathname;\n const requestLike = createRequestLike(\n context.request.method,\n context.request.url,\n context.request.headers\n );\n\n try {\n const response = await next();\n if (structuredLogEmitted) {\n await flushServerLoggerSafely(shared);\n return response;\n }\n\n const statusCode = response.status;\n const loggerContext = createContext(context, response);\n const responseTime = Math.round(performance.now() - startTime);\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n } else if (!shouldSkipAutoLogging(shared, loggerContext, path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n\n await flushServerLoggerSafely(shared);\n return response;\n } catch (error) {\n if (!structuredLogEmitted && !shouldSkipErrorLogging(shared, path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n path,\n 500,\n Math.round(performance.now() - startTime),\n toErrorLike(error, 500),\n resolveAdditionalProps(shared, createContext(context, undefined, error)),\n { error }\n );\n }\n\n await flushServerLoggerSafely(shared);\n throw error;\n }\n });\n },\n clientLogHandler: async (context: AstroEndpointContext) => {\n const path = context.url.pathname;\n if (path !== shared.ingestionPath) {\n return new Response(\n JSON.stringify({\n error: `Mounted route path ${path} does not match configured client logging path ${shared.ingestionPath}`,\n }),\n {\n status: 500,\n headers: { 'content-type': 'application/json' },\n }\n );\n }\n\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: createContext(context),\n request: context.request,\n deliveryPath: path,\n });\n await flushServerLoggerSafely(shared);\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n },\n };\n}\n\nexport const createLogger = createAstroLogger;\n","import type { BlypLogger } from '../../core/logger';\nimport { buildAbsoluteUrl, createRequestLike, readNodeRequestBody } from './logger';\nimport type {\n NitroEventLike,\n NitroResponseLike,\n} from '../../types/frameworks/nitro';\nimport type { RequestLike } from '../../types/frameworks/http';\n\nexport interface NitroRequestState {\n startTime: number;\n path: string;\n structuredLogEmitted: boolean;\n scopedLogger?: BlypLogger;\n errorLogged?: boolean;\n}\n\nconst BLYP_NITRO_STATE_KEY = Symbol.for('blyp.nitro.state');\n\nexport function getNitroState(event: NitroEventLike): NitroRequestState | undefined {\n return event.context[BLYP_NITRO_STATE_KEY] as NitroRequestState | undefined;\n}\n\nexport function setNitroState(event: NitroEventLike, state: NitroRequestState): NitroRequestState {\n event.context[BLYP_NITRO_STATE_KEY] = state;\n return state;\n}\n\nexport function getNitroMethod(event: NitroEventLike): string {\n return event.method ?? event.node?.req?.method ?? event.request?.method ?? 'GET';\n}\n\nexport function getNitroHeaders(event: NitroEventLike): RequestLike['headers'] {\n return event.headers ?? event.node?.req?.headers ?? event.request?.headers;\n}\n\nexport function getNitroUrl(event: NitroEventLike): string {\n if (event.request?.url) {\n return event.request.url;\n }\n\n const path = event.url ?? event.path ?? event.node?.req?.url ?? '/';\n return buildAbsoluteUrl(path, getNitroHeaders(event));\n}\n\nexport function getNitroPath(event: NitroEventLike): string {\n if (typeof event.path === 'string' && event.path.length > 0) {\n return event.path;\n }\n\n if (event.request?.url) {\n return new URL(event.request.url).pathname;\n }\n\n const requestUrl = event.url ?? event.node?.req?.url ?? '/';\n if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {\n return new URL(requestUrl).pathname;\n }\n\n const queryIndex = requestUrl.indexOf('?');\n return queryIndex >= 0 ? requestUrl.slice(0, queryIndex) : requestUrl;\n}\n\nexport function createNitroRequestLike(event: NitroEventLike): RequestLike {\n return createRequestLike(getNitroMethod(event), getNitroUrl(event), getNitroHeaders(event));\n}\n\nexport function getNitroStatus(\n event: NitroEventLike,\n response?: NitroResponseLike | Response,\n fallbackStatus: number = 200\n): number {\n if (response instanceof Response) {\n return response.status;\n }\n\n if (typeof response?.status === 'number') {\n return response.status;\n }\n\n if (typeof response?.statusCode === 'number') {\n return response.statusCode;\n }\n\n if (typeof event.node?.res?.statusCode === 'number' && event.node.res.statusCode > 0) {\n return event.node.res.statusCode;\n }\n\n return fallbackStatus;\n}\n\nexport async function readNitroBody(event: NitroEventLike): Promise<unknown> {\n if (event.body !== undefined) {\n return event.body;\n }\n\n if (event.request) {\n const contentType = event.request.headers.get('content-type') ?? '';\n if (contentType.includes('application/json')) {\n const fallbackRequest = event.request.clone();\n try {\n return await event.request.json();\n } catch {\n return await fallbackRequest.text();\n }\n }\n\n return await event.request.text();\n }\n\n if (event.node?.req) {\n return await readNodeRequestBody(event.node.req);\n }\n\n throw new Error('Unable to parse Nitro request body');\n}\n","import type { BlypLogger } from '../../core/logger';\nimport type {\n NitroAppLike,\n NitroEventLike,\n NitroLoggerConfig,\n NitroLoggerContext,\n NitroLoggerFactory,\n NitroResponseLike,\n} from '../../types/frameworks/nitro';\nimport { enterRequestContext } from '../shared/request-context';\nimport {\n createRequestScopedLogger,\n emitHttpErrorLog,\n emitHttpRequestLog,\n flushServerLoggerSafely,\n handleClientLogIngestion,\n isErrorStatus,\n resolveAdditionalProps,\n resolveServerLogger,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\nimport {\n createNitroRequestLike,\n getNitroMethod,\n getNitroPath,\n getNitroState,\n getNitroStatus,\n readNitroBody,\n setNitroState,\n} from '../shared/h3';\n\nfunction createContext(\n event: NitroEventLike,\n response?: NitroResponseLike | Response,\n error?: unknown\n): NitroLoggerContext {\n return { event, response, error };\n}\n\nfunction buildFactory(shared: ReturnType<typeof resolveServerLogger<NitroLoggerContext>>): NitroLoggerFactory {\n const getLogger = (event: NitroEventLike): BlypLogger => event.context.blypLog ?? shared.logger;\n\n const logSuccess = async (\n event: NitroEventLike,\n response?: NitroResponseLike | Response\n ): Promise<void> => {\n const state = getNitroState(event);\n if (!state || state.structuredLogEmitted || state.errorLogged) {\n return;\n }\n\n const requestLike = createNitroRequestLike(event);\n const statusCode = getNitroStatus(event, response);\n const responseTime = Math.round(performance.now() - state.startTime);\n const loggerContext = createContext(event, response);\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(shared, state.path)) {\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n requestLike,\n state.path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n } else if (!shouldSkipAutoLogging(shared, loggerContext, state.path)) {\n emitHttpRequestLog(\n shared.logger,\n shared.level,\n requestLike,\n state.path,\n statusCode,\n responseTime,\n resolveAdditionalProps(shared, loggerContext)\n );\n }\n };\n\n const logError = async (\n event: NitroEventLike,\n error: unknown,\n response?: NitroResponseLike | Response\n ): Promise<void> => {\n const state = getNitroState(event);\n if (!state || state.structuredLogEmitted || state.errorLogged || shouldSkipErrorLogging(shared, state.path)) {\n return;\n }\n\n state.errorLogged = true;\n emitHttpErrorLog(\n shared.logger,\n shared.level,\n createNitroRequestLike(event),\n state.path,\n getNitroStatus(event, response, 500),\n Math.round(performance.now() - state.startTime),\n toErrorLike(error, 500),\n resolveAdditionalProps(shared, createContext(event, response, error)),\n { error }\n );\n };\n\n return {\n logger: shared.logger,\n getLogger,\n plugin: async (nitroApp: NitroAppLike) => {\n await nitroApp.hooks.hook('request', async (eventArg: unknown) => {\n const event = eventArg as NitroEventLike;\n enterRequestContext();\n const path = getNitroPath(event);\n let state = setNitroState(event, {\n startTime: performance.now(),\n path,\n structuredLogEmitted: false,\n });\n const scopedLogger = createRequestScopedLogger(shared.logger, {\n resolveStructuredFields: () => ({\n method: getNitroMethod(event),\n path,\n ...resolveAdditionalProps(shared, createContext(event)),\n }),\n onStructuredEmit: () => {\n const currentState = getNitroState(event);\n if (currentState) {\n currentState.structuredLogEmitted = true;\n }\n },\n });\n event.context.blypLog = scopedLogger;\n state.scopedLogger = scopedLogger;\n });\n\n await nitroApp.hooks.hook('beforeResponse', async (eventArg: unknown, payload?: unknown) => {\n await logSuccess(eventArg as NitroEventLike, payload as NitroResponseLike | Response | undefined);\n });\n\n await nitroApp.hooks.hook('afterResponse', async (eventArg: unknown) => {\n await flushServerLoggerSafely(shared);\n const state = getNitroState(eventArg as NitroEventLike);\n if (state) {\n state.errorLogged = true;\n }\n });\n\n await nitroApp.hooks.hook('error', async (errorArg: unknown, eventArg?: unknown) => {\n if (eventArg && typeof eventArg === 'object') {\n await logError(eventArg as NitroEventLike, errorArg);\n await flushServerLoggerSafely(shared);\n }\n });\n },\n clientLogHandler: async (event: NitroEventLike) => {\n const path = getNitroPath(event);\n if (path !== shared.ingestionPath) {\n return new Response(\n JSON.stringify({\n error: `Mounted route path ${path} does not match configured client logging path ${shared.ingestionPath}`,\n }),\n {\n status: 500,\n headers: { 'content-type': 'application/json' },\n }\n );\n }\n\n const body = await readNitroBody(event);\n\n const result = await handleClientLogIngestion({\n config: shared,\n ctx: createContext(event),\n request: {\n ...createNitroRequestLike(event),\n json: async () => body,\n },\n body,\n deliveryPath: path,\n });\n await flushServerLoggerSafely(shared);\n return new Response(null, {\n status: result.status,\n headers: result.headers,\n });\n },\n };\n}\n\nexport function createNitroLogger(\n config: NitroLoggerConfig = {}\n): NitroLoggerFactory {\n const shared = resolveServerLogger(config);\n return buildFactory(shared);\n}\n\nexport const createLogger = createNitroLogger;\nexport { buildFactory as createNitroLoggerFactory };\n","import type {\n NitroEventLike,\n} from '../../types/frameworks/nitro';\nimport type {\n NuxtLoggerConfig,\n NuxtLoggerFactory,\n} from '../../types/frameworks/nuxt';\nimport { createNitroLoggerFactory } from '../nitro/logger';\nimport { resolveServerLogger } from '../shared';\n\nexport function createNuxtLogger(\n config: NuxtLoggerConfig = {}\n): NuxtLoggerFactory {\n const nitro = createNitroLoggerFactory(resolveServerLogger(config));\n\n return {\n logger: nitro.logger,\n serverPlugin: nitro.plugin,\n clientLogHandler: nitro.clientLogHandler,\n getLogger: (event: NitroEventLike) => nitro.getLogger(event),\n };\n}\n\nexport const createLogger = createNuxtLogger;\n","export const BLYP_NEST_LOGGER = Symbol('BLYP_NEST_LOGGER');\n\nexport const BLYP_NEST_LOGGER_INIT_ERROR =\n 'BlypModule.forRoot() requires createLogger(...) to run before NestFactory.create(AppModule).';\n","import type { ResolvedServerLogger } from '../shared';\nimport { resolveServerLogger } from '../shared';\nimport {\n configureDefaultStandaloneLogger,\n type StandaloneLogger,\n} from '../standalone/logger';\nimport type { StandaloneLoggerConfig } from '../../types/frameworks/standalone';\nimport { BLYP_NEST_LOGGER_INIT_ERROR } from './constants';\nimport type {\n NestLoggerConfig,\n NestLoggerContext,\n NestLoggerState,\n} from '../../types/frameworks/nestjs';\n\nlet nestLoggerState: NestLoggerState | null = null;\n\nfunction toStandaloneLoggerConfig(\n config: NestLoggerConfig\n): StandaloneLoggerConfig {\n const clientLogging = config.clientLogging === undefined\n ? undefined\n : config.clientLogging === false\n ? { enabled: false }\n : config.clientLogging === true\n ? { enabled: true }\n : {\n enabled: true,\n path: config.clientLogging.path,\n };\n\n return {\n ...(config.level !== undefined ? { level: config.level } : {}),\n ...(config.pretty !== undefined ? { pretty: config.pretty } : {}),\n ...(config.destination !== undefined ? { destination: config.destination } : {}),\n ...(config.logDir !== undefined ? { logDir: config.logDir } : {}),\n ...(config.file !== undefined ? { file: config.file } : {}),\n ...(config.database !== undefined ? { database: config.database } : {}),\n ...(clientLogging !== undefined ? { clientLogging } : {}),\n ...(config.connectors !== undefined ? { connectors: config.connectors } : {}),\n };\n}\n\nexport function createNestLogger(\n config: NestLoggerConfig = {}\n): StandaloneLogger {\n const logger = configureDefaultStandaloneLogger(toStandaloneLoggerConfig(config));\n const shared = resolveServerLogger(config, logger);\n\n nestLoggerState = {\n ...shared,\n logger,\n };\n\n return logger;\n}\n\nexport const createLogger = createNestLogger;\n\nexport function getNestLoggerStateOrThrow(): NestLoggerState {\n if (!nestLoggerState) {\n throw new Error(BLYP_NEST_LOGGER_INIT_ERROR);\n }\n\n return nestLoggerState;\n}\n\nexport function resetNestLoggerState(): void {\n nestLoggerState = null;\n configureDefaultStandaloneLogger();\n}\n","import type { ExecutionContext } from '@nestjs/common';\nimport {\n buildAbsoluteUrl,\n createRequestLike,\n extractPathname,\n readNodeRequestBody,\n} from '../shared';\nimport { isPlainObject } from '../../shared/validation';\nimport type {\n NestAdapterType,\n NestHeaderRecord,\n NestLoggerContext,\n} from '../../types/frameworks/nestjs';\n\nexport function resolveNestAdapterType(\n request: unknown,\n response: unknown\n): NestAdapterType {\n if (\n isPlainObject(response) &&\n 'raw' in response &&\n response.raw !== undefined\n ) {\n return 'fastify';\n }\n\n if (\n isPlainObject(request) &&\n 'raw' in request &&\n request.raw !== undefined\n ) {\n return 'fastify';\n }\n\n return 'express';\n}\n\nexport function getNestRequestMethod(request: unknown): string {\n if (!isPlainObject(request)) {\n return 'GET';\n }\n\n if (typeof request.method === 'string') {\n return request.method;\n }\n\n if (isPlainObject(request.raw) && typeof request.raw.method === 'string') {\n return request.raw.method;\n }\n\n return 'GET';\n}\n\nexport function getNestRequestHeaders(request: unknown): NestHeaderRecord | undefined {\n if (!isPlainObject(request)) {\n return undefined;\n }\n\n if (isPlainObject(request.headers)) {\n return request.headers as NestHeaderRecord;\n }\n\n if (isPlainObject(request.raw) && isPlainObject(request.raw.headers)) {\n return request.raw.headers as NestHeaderRecord;\n }\n\n return undefined;\n}\n\nexport function getNestRequestUrl(request: unknown): string {\n if (!isPlainObject(request)) {\n return '/';\n }\n\n if (typeof request.originalUrl === 'string' && request.originalUrl.length > 0) {\n return request.originalUrl;\n }\n\n if (typeof request.url === 'string' && request.url.length > 0) {\n return request.url;\n }\n\n if (isPlainObject(request.raw) && typeof request.raw.url === 'string' && request.raw.url.length > 0) {\n return request.raw.url;\n }\n\n return '/';\n}\n\nexport function getNestRequestPath(request: unknown): string {\n return extractPathname(getNestRequestUrl(request));\n}\n\nexport async function readNestRequestBody(request: unknown): Promise<unknown> {\n if (!isPlainObject(request)) {\n return undefined;\n }\n\n if ('body' in request && request.body !== undefined) {\n return request.body;\n }\n\n if (isPlainObject(request.raw) && 'body' in request.raw && request.raw.body !== undefined) {\n return request.raw.body;\n }\n\n if (Symbol.asyncIterator in request) {\n return await readNodeRequestBody(\n request as AsyncIterable<Uint8Array | string>\n );\n }\n\n if (\n isPlainObject(request.raw) &&\n Symbol.asyncIterator in request.raw\n ) {\n return await readNodeRequestBody(\n request.raw as AsyncIterable<Uint8Array | string>\n );\n }\n\n return undefined;\n}\n\nexport function setNestRequestStartTime(request: unknown, startTime: number): void {\n if (!isPlainObject(request)) {\n return;\n }\n\n request.blypStartTime = startTime;\n}\n\nexport function getNestRequestStartTime(request: unknown): number | undefined {\n if (!isPlainObject(request)) {\n return undefined;\n }\n\n return typeof request.blypStartTime === 'number'\n ? request.blypStartTime\n : undefined;\n}\n\nexport function setNestStructuredLogEmitted(request: unknown, emitted: boolean): void {\n if (!isPlainObject(request)) {\n return;\n }\n\n request.blypStructuredLogEmitted = emitted;\n}\n\nexport function getNestStructuredLogEmitted(request: unknown): boolean {\n if (!isPlainObject(request)) {\n return false;\n }\n\n return request.blypStructuredLogEmitted === true;\n}\n\nexport function attachNestRequestLogger(request: unknown, logger: unknown): void {\n if (!isPlainObject(request)) {\n return;\n }\n\n request.blypLog = logger;\n}\n\nexport function buildNestRequestLike(request: unknown) {\n const method = getNestRequestMethod(request);\n const headers = getNestRequestHeaders(request);\n const path = getNestRequestUrl(request);\n return createRequestLike(method, buildAbsoluteUrl(path, headers), headers);\n}\n\nexport function getNestResponseStatus(response: unknown): number {\n if (!isPlainObject(response)) {\n return 200;\n }\n\n if (typeof response.statusCode === 'number') {\n return response.statusCode;\n }\n\n if (isPlainObject(response.raw) && typeof response.raw.statusCode === 'number') {\n return response.raw.statusCode;\n }\n\n return 200;\n}\n\nfunction setRawStatus(target: Record<string, unknown>, statusCode: number): void {\n target.statusCode = statusCode;\n}\n\nexport function setNestResponseHeaders(\n response: unknown,\n headers: Record<string, string>\n): void {\n if (!isPlainObject(response)) {\n return;\n }\n\n if (typeof response.setHeader === 'function') {\n for (const [key, value] of Object.entries(headers)) {\n response.setHeader(key, value);\n }\n return;\n }\n\n if (typeof response.header === 'function') {\n for (const [key, value] of Object.entries(headers)) {\n response.header(key, value);\n }\n return;\n }\n\n if (isPlainObject(response.raw) && typeof response.raw.setHeader === 'function') {\n for (const [key, value] of Object.entries(headers)) {\n response.raw.setHeader(key, value);\n }\n }\n}\n\nexport function sendNestStatusResponse(response: unknown, statusCode: number): void {\n if (!isPlainObject(response)) {\n return;\n }\n\n if (typeof response.status === 'function') {\n const expressResponse = response.status(statusCode) as { end?: () => void };\n expressResponse.end?.();\n return;\n }\n\n if (typeof response.code === 'function') {\n const fastifyReply = response.code(statusCode) as { send?: (payload?: unknown) => void };\n fastifyReply.send?.();\n return;\n }\n\n if (isPlainObject(response.raw)) {\n setRawStatus(response.raw, statusCode);\n if (typeof response.raw.end === 'function') {\n response.raw.end();\n }\n return;\n }\n\n setRawStatus(response, statusCode);\n if (typeof response.end === 'function') {\n response.end();\n }\n}\n\nexport function getControllerName(context: ExecutionContext): string | undefined {\n const controller = context.getClass();\n return controller?.name || undefined;\n}\n\nexport function getHandlerName(context: ExecutionContext): string | undefined {\n const handler = context.getHandler();\n return handler?.name || undefined;\n}\n\nexport function createNestLoggerContext(options: {\n request: unknown;\n response: unknown;\n executionContext?: ExecutionContext;\n error?: unknown;\n}): NestLoggerContext {\n const { request, response, executionContext, error } = options;\n const adapterType = resolveNestAdapterType(request, response);\n\n return {\n request,\n response,\n adapterType,\n executionContext,\n error,\n controllerName: executionContext ? getControllerName(executionContext) : undefined,\n handlerName: executionContext ? getHandlerName(executionContext) : undefined,\n };\n}\n","import {\n Catch,\n HttpException,\n Inject,\n} from '@nestjs/common';\nimport type { ArgumentsHost } from '@nestjs/common';\nimport { BaseExceptionFilter, HttpAdapterHost } from '@nestjs/core';\nimport {\n emitHttpErrorLog,\n resolveAdditionalProps,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\nimport { BLYP_NEST_LOGGER } from './constants';\nimport {\n buildNestRequestLike,\n createNestLoggerContext,\n getNestRequestPath,\n getNestRequestStartTime,\n getNestStructuredLogEmitted,\n} from './helpers';\nimport type { NestLoggerState } from '../../types/frameworks/nestjs';\n\n@Catch()\nexport class BlypNestExceptionFilter extends BaseExceptionFilter {\n constructor(\n @Inject(BLYP_NEST_LOGGER)\n private readonly state: NestLoggerState,\n httpAdapterHost: HttpAdapterHost\n ) {\n super(httpAdapterHost.httpAdapter);\n }\n\n override catch(exception: unknown, host: ArgumentsHost): void {\n if (host.getType<'http'>() === 'http') {\n const http = host.switchToHttp();\n const request = http.getRequest();\n const response = http.getResponse();\n const loggerContext = createNestLoggerContext({\n request,\n response,\n error: exception,\n });\n const path = getNestRequestPath(request);\n\n if (getNestStructuredLogEmitted(request)) {\n super.catch(exception, host);\n return;\n }\n\n if (!shouldSkipErrorLogging(this.state, path)) {\n const statusCode = exception instanceof HttpException\n ? exception.getStatus()\n : 500;\n const responseTime = Math.round(\n performance.now() - (getNestRequestStartTime(request) ?? performance.now())\n );\n\n emitHttpErrorLog(\n this.state.logger,\n this.state.level,\n buildNestRequestLike(request),\n path,\n statusCode,\n responseTime,\n toErrorLike(exception, statusCode),\n resolveAdditionalProps(this.state, loggerContext),\n {\n error: exception,\n }\n );\n }\n }\n\n super.catch(exception, host);\n }\n}\n","import {\n Inject,\n Injectable,\n type CallHandler,\n type ExecutionContext,\n type NestInterceptor,\n} from '@nestjs/common';\nimport type { Observable } from 'rxjs';\nimport { tap } from 'rxjs';\nimport {\n emitHttpErrorLog,\n emitHttpRequestLog,\n isErrorStatus,\n resolveAdditionalProps,\n shouldSkipAutoLogging,\n shouldSkipErrorLogging,\n toErrorLike,\n} from '../shared';\nimport { BLYP_NEST_LOGGER } from './constants';\nimport {\n attachNestRequestLogger,\n buildNestRequestLike,\n createNestLoggerContext,\n getNestStructuredLogEmitted,\n getNestRequestPath,\n getNestRequestStartTime,\n getNestResponseStatus,\n setNestRequestStartTime,\n} from './helpers';\nimport type { NestLoggerState } from '../../types/frameworks/nestjs';\n\n@Injectable()\nexport class BlypNestInterceptor implements NestInterceptor {\n constructor(\n @Inject(BLYP_NEST_LOGGER)\n private readonly state: NestLoggerState\n ) {}\n\n intercept(context: ExecutionContext, next: CallHandler): Observable<unknown> {\n if (context.getType<'http'>() !== 'http') {\n return next.handle();\n }\n\n const http = context.switchToHttp();\n const request = http.getRequest();\n const response = http.getResponse();\n const loggerContext = createNestLoggerContext({\n request,\n response,\n executionContext: context,\n });\n\n if (!request.blypLog) {\n attachNestRequestLogger(request, this.state.logger);\n }\n\n if (getNestRequestStartTime(request) === undefined) {\n setNestRequestStartTime(request, performance.now());\n }\n\n return next.handle().pipe(\n tap({\n complete: () => {\n const path = getNestRequestPath(request);\n const statusCode = getNestResponseStatus(response);\n const responseTime = Math.round(\n performance.now() - (getNestRequestStartTime(request) ?? performance.now())\n );\n const requestLike = buildNestRequestLike(request);\n const additionalProps = resolveAdditionalProps(this.state, loggerContext);\n\n if (getNestStructuredLogEmitted(request)) {\n return;\n }\n\n if (isErrorStatus(statusCode)) {\n if (!shouldSkipErrorLogging(this.state, path)) {\n emitHttpErrorLog(\n this.state.logger,\n this.state.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n toErrorLike(undefined, statusCode),\n additionalProps\n );\n }\n return;\n }\n\n if (!shouldSkipAutoLogging(this.state, loggerContext, path)) {\n emitHttpRequestLog(\n this.state.logger,\n this.state.level,\n requestLike,\n path,\n statusCode,\n responseTime,\n additionalProps\n );\n }\n },\n })\n );\n }\n}\n","import { Inject, Injectable, type NestMiddleware } from '@nestjs/common';\nimport {\n createRequestScopedLogger,\n handleClientLogIngestion,\n enterRequestContext,\n resolveAdditionalProps,\n} from '../shared';\nimport { BLYP_NEST_LOGGER } from './constants';\nimport {\n attachNestRequestLogger,\n buildNestRequestLike,\n createNestLoggerContext,\n getNestRequestMethod,\n getNestRequestPath,\n readNestRequestBody,\n setNestResponseHeaders,\n sendNestStatusResponse,\n setNestStructuredLogEmitted,\n setNestRequestStartTime,\n} from './helpers';\nimport type { NestLoggerState } from '../../types/frameworks/nestjs';\n\n@Injectable()\nexport class BlypNestMiddleware implements NestMiddleware {\n constructor(\n @Inject(BLYP_NEST_LOGGER)\n private readonly state: NestLoggerState\n ) {}\n\n use(\n request: unknown,\n response: unknown,\n next: (error?: unknown) => void\n ): void {\n enterRequestContext();\n setNestStructuredLogEmitted(request, false);\n attachNestRequestLogger(\n request,\n createRequestScopedLogger(this.state.logger, {\n resolveStructuredFields: () => {\n const loggerContext = createNestLoggerContext({\n request,\n response,\n });\n\n return {\n method: buildNestRequestLike(request).method,\n path: getNestRequestPath(request),\n ...resolveAdditionalProps(this.state, loggerContext),\n };\n },\n onStructuredEmit: () => {\n setNestStructuredLogEmitted(request, true);\n },\n })\n );\n setNestRequestStartTime(request, performance.now());\n\n const path = getNestRequestPath(request);\n const method = getNestRequestMethod(request).toUpperCase();\n\n if (\n this.state.resolvedClientLogging &&\n method === 'POST' &&\n path === this.state.ingestionPath\n ) {\n void this.handleClientLogRequest(request, response, next);\n return;\n }\n\n next();\n }\n\n private async handleClientLogRequest(\n request: unknown,\n response: unknown,\n next: (error?: unknown) => void\n ): Promise<void> {\n try {\n const body = await readNestRequestBody(request);\n const result = await handleClientLogIngestion({\n config: this.state,\n ctx: createNestLoggerContext({\n request,\n response,\n }),\n request: buildNestRequestLike(request),\n body,\n deliveryPath: this.state.ingestionPath,\n });\n\n if (result.headers) {\n setNestResponseHeaders(response, result.headers);\n }\n sendNestStatusResponse(response, result.status);\n } catch (error) {\n next(error);\n }\n }\n}\n","import {\n Global,\n Module,\n RequestMethod,\n} from '@nestjs/common';\nimport type { MiddlewareConsumer, DynamicModule, NestModule } from '@nestjs/common';\nimport { APP_FILTER, APP_INTERCEPTOR } from '@nestjs/core';\nimport { BLYP_NEST_LOGGER } from './constants';\nimport { BlypNestExceptionFilter } from './filter';\nimport { BlypNestInterceptor } from './interceptor';\nimport { getNestLoggerStateOrThrow } from './logger';\nimport { BlypNestMiddleware } from './middleware';\n\n@Global()\n@Module({})\nexport class BlypModule implements NestModule {\n static forRoot(): DynamicModule {\n return {\n global: true,\n module: BlypModule,\n providers: [\n BlypNestMiddleware,\n {\n provide: BLYP_NEST_LOGGER,\n useFactory: () => getNestLoggerStateOrThrow(),\n },\n {\n provide: APP_INTERCEPTOR,\n useClass: BlypNestInterceptor,\n },\n {\n provide: APP_FILTER,\n useClass: BlypNestExceptionFilter,\n },\n ],\n exports: [BLYP_NEST_LOGGER],\n };\n }\n\n configure(consumer: MiddlewareConsumer): void {\n consumer\n .apply(BlypNestMiddleware)\n .forRoutes({ path: '*', method: RequestMethod.ALL });\n }\n}\n","import { resolveConfig } from '../../core/config';\nimport {\n buildRecord,\n buildStructuredRecord,\n resolveStructuredWriteLevel,\n type LogMethodName,\n} from '../../core/log-record';\nimport {\n createStructuredLog,\n type StructuredLog,\n type StructuredLogPayload,\n} from '../../core/structured-log';\nimport {\n createOTLPRegistry,\n} from './sender';\nimport type {\n OTLPLogger,\n OTLPLoggerConfig,\n OTLPSender,\n} from '../../types/connectors/otlp';\n\nexport type {\n OTLPLogger,\n OTLPLoggerConfig,\n} from '../../types/connectors/otlp';\n\nfunction resolveSender(config: OTLPLoggerConfig = { name: '' }): OTLPSender {\n const registry = createOTLPRegistry(resolveConfig({\n ...(config.connectors ? { connectors: config.connectors } : {}),\n }));\n\n return registry.get(config.name);\n}\n\nfunction createOTLPLoggerInstance(\n sender: OTLPSender,\n bindings: Record<string, unknown> = {}\n): OTLPLogger {\n const writeRecord = (\n level: LogMethodName,\n message: unknown,\n args: unknown[]\n ): void => {\n sender.send(buildRecord(level, message, args, bindings), {\n source: 'server',\n warnIfUnavailable: true,\n });\n };\n\n const writeStructured = (\n payload: StructuredLogPayload,\n message: string\n ): void => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n bindings\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n };\n\n return {\n debug: (message: unknown, ...args: unknown[]) => {\n writeRecord('debug', message, args);\n },\n info: (message: unknown, ...args: unknown[]) => {\n writeRecord('info', message, args);\n },\n error: (message: unknown, ...args: unknown[]) => {\n writeRecord('error', message, args);\n },\n warn: (message: unknown, ...args: unknown[]) => {\n writeRecord('warn', message, args);\n },\n warning: (message: unknown, ...args: unknown[]) => {\n writeRecord('warning', message, args);\n },\n success: (message: unknown, ...args: unknown[]) => {\n writeRecord('success', message, args);\n },\n critical: (message: unknown, ...args: unknown[]) => {\n writeRecord('critical', message, args);\n },\n table: (message: string, data?: unknown) => {\n writeRecord('table', message, data === undefined ? [] : [data]);\n },\n flush: async () => {},\n shutdown: async () => {},\n createStructuredLog: (\n groupId: string,\n initial?: Record<string, unknown>\n ): StructuredLog => {\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: writeStructured,\n });\n },\n child: (childBindings: Record<string, unknown>) => {\n return createOTLPLoggerInstance(sender, {\n ...bindings,\n ...childBindings,\n });\n },\n };\n}\n\nexport function createOtlpLogger(config: OTLPLoggerConfig = { name: '' }): OTLPLogger {\n return createOTLPLoggerInstance(resolveSender(config));\n}\n\nexport function createStructuredOtlpLogger<\n TFields extends Record<string, unknown> = Record<string, unknown>,\n>(\n groupId: string,\n initial?: TFields,\n config?: OTLPLoggerConfig\n): StructuredLog<TFields> {\n const sender = resolveSender(config ?? { name: '' });\n\n return createStructuredLog(groupId, {\n initialFields: initial,\n write: (payload, message) => {\n sender.send(\n buildStructuredRecord(\n resolveStructuredWriteLevel(payload.level),\n message,\n payload,\n {}\n ),\n {\n source: 'server',\n warnIfUnavailable: true,\n }\n );\n },\n }) as StructuredLog<TFields>;\n}\n","import { logger } from './frameworks/standalone';\nimport { getActiveRequestLogger } from './frameworks/shared/request-context';\nimport type { StructuredLog } from './core/structured-log';\n\nexport { createBaseLogger, CUSTOM_LEVELS } from './core/logger';\nexport type { BlypLogger } from './core/logger';\nexport type {\n StructuredLog,\n StructuredLogEmitOptions,\n StructuredLogError,\n StructuredLogEvent,\n StructuredLogLevel,\n StructuredLogPayload,\n} from './core/structured-log';\nexport {\n BlypError,\n parseError,\n} from './shared/errors';\nexport type {\n BlypErrorLike,\n BlypErrorCode,\n BlypErrorCodeDefinition,\n ErrorLogLevel,\n ErrorLoggerLike,\n ParseErrorOptions,\n ParseableErrorPayload,\n} from './shared/errors';\nexport {\n HTTP_CODES,\n createError,\n getHttpCode,\n} from './core/errors';\nexport type {\n CreateErrorInput,\n CreateErrorOverrides,\n} from './core/errors';\nexport { runtime, createRuntimeAdapter, createLogDir } from './core/runtime';\nexport {\n DEFAULT_CONFIG,\n DEFAULT_CLIENT_LOGGING_CONFIG,\n DEFAULT_DATABASE_DELIVERY_CONFIG,\n DEFAULT_DATABASE_RETRY_CONFIG,\n DEFAULT_FILE_CONFIG,\n DEFAULT_ROTATION_CONFIG,\n getConfig,\n loadConfig,\n mergeBlypConfig,\n resolveConfig,\n resetConfigCache,\n} from './core/config';\nexport type {\n BlypConnectorsConfig,\n ClientLoggingConfig,\n BlypConfig,\n BetterStackConnectorConfig,\n BetterStackErrorTrackingConfig,\n BlypDestination,\n ConnectorMode,\n DatabuddyConnectorConfig,\n DatabaseAdapterConfig,\n DatabaseAdapterKind,\n DatabaseDeliveryConfig,\n DatabaseDialect,\n DatabaseLoggerConfig,\n DatabaseRetryConfig,\n DrizzleDatabaseAdapterConfig,\n LogFileConfig,\n LogRotationConfig,\n OTLPConnectorConfig,\n PostHogErrorTrackingConfig,\n PostHogConnectorConfig,\n PrismaDatabaseAdapterConfig,\n ResolvedBlypConfig,\n ResolvedBetterStackConnectorConfig,\n ResolvedDatabuddyConnectorConfig,\n ResolvedDatabaseDeliveryConfig,\n ResolvedDatabaseLoggerConfig,\n ResolvedDatabaseRetryConfig,\n ResolvedPostHogErrorTrackingConfig,\n ResolvedPostHogConnectorConfig,\n ResolvedSentryConnectorConfig,\n ResolvedOTLPConnectorConfig,\n SentryConnectorConfig,\n} from './core/config';\nexport { readLogFile, formatLogRecord } from './core/log-reader';\nexport type { ReadLogFileOptions } from './core/log-reader';\nexport type { LogRecord } from './core/file-logger';\nexport {\n createDrizzleDatabaseAdapter,\n createPrismaDatabaseAdapter,\n} from './database';\nexport * from './core/helpers';\nexport * from './core/colors';\nexport { normalizeOTLPRecord } from './connectors/otlp/sender';\nexport {\n captureBetterStackException,\n createBetterStackErrorTracker,\n createBetterStackLogger,\n createStructuredBetterStackLogger,\n} from './connectors/betterstack';\nexport type {\n BetterStackErrorTracker,\n BetterStackExceptionCaptureOptions,\n BetterStackLogger,\n BetterStackLoggerConfig,\n} from './connectors/betterstack';\nexport {\n captureDatabuddyException,\n createDatabuddyErrorTracker,\n createDatabuddyLogger,\n createStructuredDatabuddyLogger,\n} from './connectors/databuddy';\nexport type {\n DatabuddyErrorTracker,\n DatabuddyExceptionCaptureOptions,\n DatabuddyLogger,\n DatabuddyLoggerConfig,\n} from './connectors/databuddy';\nexport {\n capturePosthogException,\n createPosthogErrorTracker,\n createPosthogLogger,\n createStructuredPosthogLogger,\n} from './connectors/posthog';\nexport type {\n PostHogErrorTracker,\n PostHogExceptionCaptureOptions,\n PostHogLogger,\n PostHogLoggerConfig,\n} from './connectors/posthog';\nexport { createSentryLogger, createStructuredSentryLogger } from './connectors/sentry';\nexport type { SentryLogger, SentryLoggerConfig } from './connectors/sentry';\nexport { logger, createStandaloneLogger } from './frameworks/standalone';\nexport type { StandaloneLogger, StandaloneLoggerConfig } from './frameworks/standalone';\nexport { createElysiaLogger, createLogger } from './frameworks/elysia';\nexport type {\n ElysiaContext,\n ElysiaClientLogIngestionConfig,\n ElysiaLoggerConfig,\n ResolveCtx,\n HttpRequestLog,\n} from './frameworks/elysia';\nexport { createHonoLogger } from './frameworks/hono';\nexport type {\n HonoClientLogIngestionConfig,\n HonoLoggerConfig,\n HonoLoggerMiddleware,\n HonoLoggerVariables,\n} from './frameworks/hono';\nexport {\n createExpressErrorLogger,\n createExpressLogger,\n} from './frameworks/express';\nexport type {\n ExpressClientLogIngestionConfig,\n ExpressErrorLoggerMiddleware,\n ExpressLoggerConfig,\n ExpressLoggerContext,\n ExpressLoggerMiddleware,\n} from './frameworks/express';\nexport { createFastifyLogger } from './frameworks/fastify';\nexport type {\n FastifyClientLogIngestionConfig,\n FastifyLoggerConfig,\n FastifyLoggerContext,\n FastifyLoggerPlugin,\n} from './frameworks/fastify';\nexport { createNextJsLogger } from './frameworks/nextjs';\nexport type {\n NextJsClientLogIngestionConfig,\n NextJsHandlerWithLogger,\n NextJsLoggerConfig,\n NextJsLoggerContext,\n NextJsLoggerFactory,\n NextJsLoggerHelpers,\n NextJsRouteContext,\n NextJsWrappedHandler,\n} from './frameworks/nextjs';\nexport { createReactRouterLogger } from './frameworks/react-router';\nexport type {\n ReactRouterClientLogIngestionConfig,\n ReactRouterContextStore,\n ReactRouterLoggerConfig,\n ReactRouterLoggerContext,\n ReactRouterLoggerFactory,\n ReactRouterLoggerMiddleware,\n ReactRouterMiddlewareArgs,\n ReactRouterMiddlewareNext,\n} from './frameworks/react-router';\nexport { createTanStackStartLogger } from './frameworks/tanstack-start';\nexport type {\n TanStackStartClientLogHandlers,\n TanStackStartClientLogIngestionConfig,\n TanStackStartLoggerConfig,\n TanStackStartLoggerContext,\n TanStackStartLoggerFactory,\n TanStackStartMiddlewareContext,\n} from './frameworks/tanstack-start';\nexport { createSvelteKitLogger } from './frameworks/sveltekit';\nexport type {\n SvelteKitClientLogIngestionConfig,\n SvelteKitHandle,\n SvelteKitLoggerConfig,\n SvelteKitLoggerContext,\n SvelteKitLoggerFactory,\n SvelteKitLocals,\n SvelteKitRequestEvent,\n SvelteKitRequestHandler,\n SvelteKitResolve,\n} from './frameworks/sveltekit';\nexport { createAstroLogger } from './frameworks/astro';\nexport type {\n AstroClientLogIngestionConfig,\n AstroEndpointContext,\n AstroEndpointHandler,\n AstroLocals,\n AstroLoggerConfig,\n AstroLoggerContext,\n AstroLoggerFactory,\n AstroMiddlewareContext,\n AstroMiddlewareHandler,\n AstroMiddlewareNext,\n} from './frameworks/astro';\nexport { createNitroLogger } from './frameworks/nitro';\nexport type {\n NitroAppLike,\n NitroClientLogIngestionConfig,\n NitroEventContext,\n NitroEventHandler,\n NitroEventLike,\n NitroHooksLike,\n NitroLoggerConfig,\n NitroLoggerContext,\n NitroLoggerFactory,\n NitroLoggerPlugin,\n NitroNodeLike,\n NitroNodeRequestLike,\n NitroNodeResponseLike,\n NitroResponseLike,\n} from './frameworks/nitro';\nexport { createNuxtLogger } from './frameworks/nuxt';\nexport type {\n NuxtClientLogIngestionConfig,\n NuxtEventHandler,\n NuxtEventLike,\n NuxtLoggerConfig,\n NuxtLoggerContext,\n NuxtLoggerFactory,\n NuxtLoggerPlugin,\n} from './frameworks/nuxt';\nexport { createNestLogger, BlypModule } from './frameworks/nestjs';\nexport type {\n NestAdapterType,\n NestClientLogIngestionConfig,\n NestLoggerConfig,\n NestLoggerContext,\n} from './frameworks/nestjs';\nexport type {\n ClientLoggerConfig,\n ClientConnectorRequest,\n ClientLogBrowserContext,\n ClientLogDeviceContext,\n ClientLogEvent,\n ClientLogLevel,\n ClientLogPageContext,\n RemoteDeliveryConfig,\n RemoteDeliveryDropContext,\n RemoteDeliveryFailureContext,\n RemoteDeliveryFailureReason,\n RemoteDeliveryRetryContext,\n RemoteDeliverySuccessContext,\n} from './frameworks/client';\nexport type {\n ExpoLogger,\n ExpoLoggerConfig,\n} from './types/frameworks/expo';\nexport {\n createOtlpLogger,\n createStructuredOtlpLogger,\n} from './connectors/otlp';\nexport type {\n OTLPLogger,\n OTLPLoggerConfig,\n} from './connectors/otlp';\n\nexport function createStructuredLog<\n TFields extends Record<string, unknown> = Record<string, unknown>,\n>(groupId: string, initial?: TFields): StructuredLog<TFields> {\n const activeLogger = getActiveRequestLogger() ?? logger;\n return activeLogger.createStructuredLog(groupId, initial) as StructuredLog<TFields>;\n}\n"]}