@blyp/core 0.1.2 → 0.1.22

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 (230) hide show
  1. package/README.md +273 -14
  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/fetch.js +701 -0
  10. package/dist/ai/fetch.mjs +701 -0
  11. package/dist/ai/openai/index.d.ts +3 -0
  12. package/dist/ai/openai/normalize.d.ts +10 -0
  13. package/dist/ai/openai/stream.d.ts +3 -0
  14. package/dist/ai/openai/wrap.d.ts +24 -0
  15. package/dist/ai/openai.js +701 -0
  16. package/dist/ai/openai.mjs +701 -0
  17. package/dist/ai/shared/fetch.d.ts +5 -0
  18. package/dist/ai/shared/index.d.ts +2 -0
  19. package/dist/ai/shared/normalize.d.ts +17 -0
  20. package/dist/ai/shared/redaction.d.ts +6 -0
  21. package/dist/ai/shared/stream.d.ts +7 -0
  22. package/dist/ai/shared/trace.d.ts +116 -0
  23. package/dist/ai/shared/types.d.ts +161 -0
  24. package/dist/ai/shared.js +701 -0
  25. package/dist/ai/shared.mjs +701 -0
  26. package/dist/ai/vercel/index.d.ts +3 -0
  27. package/dist/ai/vercel/middleware.d.ts +3 -0
  28. package/dist/ai/vercel/model.d.ts +3 -0
  29. package/dist/ai/vercel.js +701 -0
  30. package/dist/ai/vercel.mjs +701 -0
  31. package/dist/astro.js +701 -0
  32. package/dist/astro.mjs +701 -0
  33. package/dist/client.js +1 -1132
  34. package/dist/client.mjs +1 -1125
  35. package/dist/connectors/betterstack.js +9 -1508
  36. package/dist/connectors/betterstack.mjs +9 -1483
  37. package/dist/connectors/databuddy/index.d.ts +7 -0
  38. package/dist/connectors/databuddy/sender.d.ts +5 -0
  39. package/dist/connectors/databuddy.js +9 -0
  40. package/dist/connectors/databuddy.mjs +9 -0
  41. package/dist/connectors/delivery/backoff.d.ts +2 -0
  42. package/dist/connectors/delivery/manager.d.ts +44 -0
  43. package/dist/connectors/delivery/queue-path.d.ts +1 -0
  44. package/dist/connectors/delivery/sqlite-adapter-bun.d.ts +1 -0
  45. package/dist/connectors/delivery/sqlite-adapter-node.d.ts +1 -0
  46. package/dist/connectors/delivery/sqlite-client.d.ts +37 -0
  47. package/dist/connectors/delivery/sqlite-worker.d.ts +1 -0
  48. package/dist/connectors/delivery/studio-queue.d.ts +12 -0
  49. package/dist/connectors/delivery/types.d.ts +98 -0
  50. package/dist/connectors/otlp/index.d.ts +1 -0
  51. package/dist/connectors/otlp.js +9 -1347
  52. package/dist/connectors/otlp.mjs +9 -1344
  53. package/dist/connectors/posthog/properties.d.ts +4 -0
  54. package/dist/connectors/posthog/sender.d.ts +0 -1
  55. package/dist/connectors/posthog.js +10 -1503
  56. package/dist/connectors/posthog.mjs +10 -1498
  57. package/dist/connectors/sentry.js +9 -1356
  58. package/dist/connectors/sentry.mjs +9 -1333
  59. package/dist/core/config.d.ts +7 -2
  60. package/dist/core/log-record.d.ts +5 -4
  61. package/dist/core/logger.d.ts +5 -0
  62. package/dist/core/optional-module.d.ts +1 -0
  63. package/dist/core/pino-pretty-loader.d.ts +4 -0
  64. package/dist/database.js +1 -24
  65. package/dist/database.mjs +1 -21
  66. package/dist/elysia.js +621 -4100
  67. package/dist/elysia.mjs +622 -4073
  68. package/dist/expo.js +1 -719
  69. package/dist/expo.mjs +1 -717
  70. package/dist/express.js +616 -4085
  71. package/dist/express.mjs +616 -4056
  72. package/dist/fastify.js +618 -4104
  73. package/dist/fastify.mjs +618 -4075
  74. package/dist/frameworks/astro/index.d.ts +2 -0
  75. package/dist/frameworks/astro/logger.d.ts +3 -0
  76. package/dist/frameworks/elysia/index.d.ts +1 -1
  77. package/dist/frameworks/elysia/logger.d.ts +2 -35
  78. package/dist/frameworks/nestjs/helpers.d.ts +2 -0
  79. package/dist/frameworks/nitro/index.d.ts +2 -0
  80. package/dist/frameworks/nitro/logger.d.ts +6 -0
  81. package/dist/frameworks/nuxt/index.d.ts +2 -0
  82. package/dist/frameworks/nuxt/logger.d.ts +3 -0
  83. package/dist/frameworks/react-router/index.d.ts +2 -0
  84. package/dist/frameworks/react-router/logger.d.ts +3 -0
  85. package/dist/frameworks/shared/h3.d.ts +19 -0
  86. package/dist/frameworks/shared/http.d.ts +3 -2
  87. package/dist/frameworks/shared/index.d.ts +2 -1
  88. package/dist/frameworks/shared/logger.d.ts +2 -0
  89. package/dist/frameworks/shared/request-context.d.ts +2 -0
  90. package/dist/frameworks/shared/trace.d.ts +6 -0
  91. package/dist/hono.js +624 -4079
  92. package/dist/hono.mjs +626 -4053
  93. package/dist/index.d.ts +57 -17
  94. package/dist/index.js +616 -6494
  95. package/dist/index.mjs +619 -6410
  96. package/dist/nestjs.js +626 -4574
  97. package/dist/nestjs.mjs +622 -4542
  98. package/dist/nextjs.js +625 -4107
  99. package/dist/nextjs.mjs +627 -4081
  100. package/dist/nitro.js +701 -0
  101. package/dist/nitro.mjs +701 -0
  102. package/dist/nuxt.js +701 -0
  103. package/dist/nuxt.mjs +701 -0
  104. package/dist/react-router.js +701 -0
  105. package/dist/react-router.mjs +701 -0
  106. package/dist/shared/redaction.d.ts +17 -0
  107. package/dist/standalone.js +606 -3258
  108. package/dist/standalone.mjs +611 -3234
  109. package/dist/sveltekit.js +625 -4106
  110. package/dist/sveltekit.mjs +626 -4079
  111. package/dist/tanstack-start.js +624 -4105
  112. package/dist/tanstack-start.mjs +626 -4079
  113. package/dist/types/connectors/databuddy.d.ts +52 -0
  114. package/dist/types/core/config.d.ts +89 -0
  115. package/dist/types/core/logger.d.ts +5 -0
  116. package/dist/types/core/structured-log.d.ts +2 -0
  117. package/dist/types/database.d.ts +1 -0
  118. package/dist/types/frameworks/astro.d.ts +33 -0
  119. package/dist/types/frameworks/client.d.ts +2 -0
  120. package/dist/types/frameworks/elysia.d.ts +2 -0
  121. package/dist/types/frameworks/express.d.ts +1 -0
  122. package/dist/types/frameworks/fastify.d.ts +1 -0
  123. package/dist/types/frameworks/hono.d.ts +1 -0
  124. package/dist/types/frameworks/http.d.ts +1 -0
  125. package/dist/types/frameworks/nestjs.d.ts +2 -0
  126. package/dist/types/frameworks/nextjs.d.ts +1 -0
  127. package/dist/types/frameworks/nitro.d.ts +63 -0
  128. package/dist/types/frameworks/nuxt.d.ts +12 -0
  129. package/dist/types/frameworks/react-router.d.ts +35 -0
  130. package/dist/types/frameworks/request-context.d.ts +1 -0
  131. package/dist/types/frameworks/shared.d.ts +28 -1
  132. package/dist/types/frameworks/standalone.d.ts +3 -2
  133. package/dist/types/frameworks/sveltekit.d.ts +1 -0
  134. package/dist/types/frameworks/tanstack-start.d.ts +9 -3
  135. package/dist/types/frameworks/workers.d.ts +3 -0
  136. package/dist/types/shared/client-log.d.ts +2 -1
  137. package/dist/workers.js +2 -626
  138. package/dist/workers.mjs +2 -623
  139. package/package.json +273 -143
  140. package/dist/client.js.map +0 -1
  141. package/dist/client.mjs.map +0 -1
  142. package/dist/connectors/betterstack.js.map +0 -1
  143. package/dist/connectors/betterstack.mjs.map +0 -1
  144. package/dist/connectors/otlp.js.map +0 -1
  145. package/dist/connectors/otlp.mjs.map +0 -1
  146. package/dist/connectors/posthog.js.map +0 -1
  147. package/dist/connectors/posthog.mjs.map +0 -1
  148. package/dist/connectors/sentry.js.map +0 -1
  149. package/dist/connectors/sentry.mjs.map +0 -1
  150. package/dist/database.js.map +0 -1
  151. package/dist/database.mjs.map +0 -1
  152. package/dist/elysia.js.map +0 -1
  153. package/dist/elysia.mjs.map +0 -1
  154. package/dist/expo.js.map +0 -1
  155. package/dist/expo.mjs.map +0 -1
  156. package/dist/express.js.map +0 -1
  157. package/dist/express.mjs.map +0 -1
  158. package/dist/fastify.js.map +0 -1
  159. package/dist/fastify.mjs.map +0 -1
  160. package/dist/hono.js.map +0 -1
  161. package/dist/hono.mjs.map +0 -1
  162. package/dist/index.js.map +0 -1
  163. package/dist/index.mjs.map +0 -1
  164. package/dist/nestjs.js.map +0 -1
  165. package/dist/nestjs.mjs.map +0 -1
  166. package/dist/nextjs.js.map +0 -1
  167. package/dist/nextjs.mjs.map +0 -1
  168. package/dist/standalone.js.map +0 -1
  169. package/dist/standalone.mjs.map +0 -1
  170. package/dist/sveltekit.js.map +0 -1
  171. package/dist/sveltekit.mjs.map +0 -1
  172. package/dist/tanstack-start.js.map +0 -1
  173. package/dist/tanstack-start.mjs.map +0 -1
  174. package/dist/workers.js.map +0 -1
  175. package/dist/workers.mjs.map +0 -1
  176. package/exports/client.js +0 -3
  177. package/exports/client.mjs +0 -3
  178. package/exports/connectors/betterstack.js +0 -1
  179. package/exports/connectors/betterstack.mjs +0 -1
  180. package/exports/connectors/otlp.js +0 -1
  181. package/exports/connectors/otlp.mjs +0 -1
  182. package/exports/connectors/posthog.js +0 -1
  183. package/exports/connectors/posthog.mjs +0 -1
  184. package/exports/connectors/sentry.js +0 -1
  185. package/exports/connectors/sentry.mjs +0 -1
  186. package/exports/database.js +0 -1
  187. package/exports/database.mjs +0 -1
  188. package/exports/expo.js +0 -1
  189. package/exports/expo.mjs +0 -1
  190. package/exports/frameworks/elysia.js +0 -1
  191. package/exports/frameworks/elysia.mjs +0 -1
  192. package/exports/frameworks/express.js +0 -1
  193. package/exports/frameworks/express.mjs +0 -1
  194. package/exports/frameworks/fastify.js +0 -1
  195. package/exports/frameworks/fastify.mjs +0 -1
  196. package/exports/frameworks/hono.js +0 -1
  197. package/exports/frameworks/hono.mjs +0 -1
  198. package/exports/frameworks/nestjs.js +0 -1
  199. package/exports/frameworks/nestjs.mjs +0 -1
  200. package/exports/frameworks/nextjs.js +0 -1
  201. package/exports/frameworks/nextjs.mjs +0 -1
  202. package/exports/frameworks/standalone.js +0 -1
  203. package/exports/frameworks/standalone.mjs +0 -1
  204. package/exports/frameworks/sveltekit.js +0 -1
  205. package/exports/frameworks/sveltekit.mjs +0 -1
  206. package/exports/frameworks/tanstack-start.js +0 -1
  207. package/exports/frameworks/tanstack-start.mjs +0 -1
  208. package/exports/workers.js +0 -1
  209. package/exports/workers.mjs +0 -1
  210. package/types/client.d.ts +0 -34
  211. package/types/connectors/betterstack.d.ts +0 -1
  212. package/types/connectors/otlp.d.ts +0 -1
  213. package/types/connectors/posthog.d.ts +0 -1
  214. package/types/connectors/sentry.d.ts +0 -1
  215. package/types/database.d.ts +0 -1
  216. package/types/expo.d.ts +0 -17
  217. package/types/frameworks/client.d.ts +0 -160
  218. package/types/frameworks/elysia.d.ts +0 -1
  219. package/types/frameworks/expo.d.ts +0 -50
  220. package/types/frameworks/express.d.ts +0 -1
  221. package/types/frameworks/fastify.d.ts +0 -1
  222. package/types/frameworks/hono.d.ts +0 -1
  223. package/types/frameworks/nestjs.d.ts +0 -1
  224. package/types/frameworks/nextjs.d.ts +0 -1
  225. package/types/frameworks/standalone.d.ts +0 -1
  226. package/types/frameworks/sveltekit.d.ts +0 -1
  227. package/types/frameworks/tanstack-start.d.ts +0 -1
  228. package/types/frameworks/workers.d.ts +0 -115
  229. package/types/index.d.ts +0 -1
  230. package/types/workers.d.ts +0 -13
@@ -0,0 +1,52 @@
1
+ import type { BlypConnectorsConfig, ResolvedDatabuddyConnectorConfig } from '../core/config';
2
+ import type { LogRecord } from '../core/file-logger';
3
+ import type { BlypLogger } from '../core/logger';
4
+ import type { ConnectorMode } from './mode';
5
+ export interface DatabuddyLoggerConfig {
6
+ connectors?: BlypConnectorsConfig;
7
+ }
8
+ export interface DatabuddyLogger extends BlypLogger {
9
+ }
10
+ export interface DatabuddyExceptionCaptureOptions {
11
+ properties?: Record<string, unknown>;
12
+ }
13
+ export interface DatabuddyErrorTracker {
14
+ capture: (error: unknown, options?: DatabuddyExceptionCaptureOptions) => void;
15
+ child: (bindings: Record<string, unknown>) => DatabuddyErrorTracker;
16
+ }
17
+ export type DatabuddySource = 'server' | 'client';
18
+ export interface DatabuddyTrackEvent {
19
+ name: string;
20
+ properties?: Record<string, unknown>;
21
+ anonymousId?: string;
22
+ sessionId?: string;
23
+ }
24
+ export interface DatabuddyClientLike {
25
+ track: (event: DatabuddyTrackEvent) => unknown | Promise<unknown>;
26
+ flush: () => Promise<unknown>;
27
+ }
28
+ export interface DatabuddySendOptions {
29
+ source?: DatabuddySource;
30
+ warnIfUnavailable?: boolean;
31
+ }
32
+ export interface DatabuddyCaptureExceptionOptions {
33
+ source?: DatabuddySource;
34
+ warnIfUnavailable?: boolean;
35
+ properties?: Record<string, unknown>;
36
+ anonymousId?: string;
37
+ sessionId?: string;
38
+ }
39
+ export interface DatabuddySender {
40
+ readonly enabled: boolean;
41
+ readonly ready: boolean;
42
+ readonly mode: ConnectorMode;
43
+ readonly status: 'enabled' | 'missing';
44
+ shouldAutoForwardServerLogs: () => boolean;
45
+ shouldAutoCaptureExceptions: () => boolean;
46
+ send: (record: LogRecord, options?: DatabuddySendOptions) => void;
47
+ captureException: (error: unknown, options?: DatabuddyCaptureExceptionOptions) => void;
48
+ flush: () => Promise<void>;
49
+ }
50
+ export interface DatabuddyTestHooks {
51
+ createClient?: (config: ResolvedDatabuddyConnectorConfig) => DatabuddyClientLike;
52
+ }
@@ -19,6 +19,59 @@ export interface ClientLoggingConfig {
19
19
  enabled?: boolean;
20
20
  path?: string;
21
21
  }
22
+ export interface RedactionConfig {
23
+ keys?: string[];
24
+ paths?: string[];
25
+ patterns?: RegExp[];
26
+ disablePatternScanning?: boolean;
27
+ }
28
+ export interface ResolvedRedactionConfig {
29
+ keys: string[];
30
+ paths: string[];
31
+ patterns: RegExp[];
32
+ disablePatternScanning: boolean;
33
+ }
34
+ export interface ConnectorRetryConfig {
35
+ maxAttempts?: number;
36
+ initialBackoffMs?: number;
37
+ maxBackoffMs?: number;
38
+ multiplier?: number;
39
+ jitter?: boolean;
40
+ }
41
+ export interface ResolvedConnectorRetryConfig {
42
+ maxAttempts: number;
43
+ initialBackoffMs: number;
44
+ maxBackoffMs: number;
45
+ multiplier: number;
46
+ jitter: boolean;
47
+ }
48
+ export interface ConnectorDeliveryConfig {
49
+ enabled?: boolean;
50
+ memoryBufferSize?: number;
51
+ durableQueuePath?: string;
52
+ durableSpillStrategy?: 'after-first-failure';
53
+ memoryBatchSize?: number;
54
+ sqliteWriteBatchSize?: number;
55
+ sqliteReadBatchSize?: number;
56
+ dispatchConcurrency?: number;
57
+ pollIntervalMs?: number;
58
+ overflowStrategy?: 'drop-oldest' | 'drop-new';
59
+ retry?: ConnectorRetryConfig;
60
+ }
61
+ export interface ResolvedConnectorDeliveryConfig {
62
+ enabled: boolean;
63
+ memoryBufferSize: number;
64
+ durableQueuePath: string;
65
+ durableSpillStrategy: 'after-first-failure';
66
+ memoryBatchSize: number;
67
+ sqliteWriteBatchSize: number;
68
+ sqliteReadBatchSize: number;
69
+ dispatchConcurrency: number;
70
+ pollIntervalMs: number;
71
+ overflowStrategy: 'drop-oldest' | 'drop-new';
72
+ retry: ResolvedConnectorRetryConfig;
73
+ durableReady: boolean;
74
+ }
22
75
  export interface PostHogConnectorConfig {
23
76
  enabled?: boolean;
24
77
  mode?: ConnectorMode;
@@ -27,6 +80,20 @@ export interface PostHogConnectorConfig {
27
80
  serviceName?: string;
28
81
  errorTracking?: PostHogErrorTrackingConfig;
29
82
  }
83
+ export interface DatabuddyConnectorConfig {
84
+ enabled?: boolean;
85
+ mode?: ConnectorMode;
86
+ apiKey?: string;
87
+ websiteId?: string;
88
+ namespace?: string;
89
+ source?: string;
90
+ apiUrl?: string;
91
+ debug?: boolean;
92
+ enableBatching?: boolean;
93
+ batchSize?: number;
94
+ batchTimeout?: number;
95
+ maxQueueSize?: number;
96
+ }
30
97
  export interface BetterStackConnectorConfig {
31
98
  enabled?: boolean;
32
99
  mode?: ConnectorMode;
@@ -62,6 +129,22 @@ export interface ResolvedPostHogConnectorConfig {
62
129
  serviceName: string;
63
130
  errorTracking: ResolvedPostHogErrorTrackingConfig;
64
131
  }
132
+ export interface ResolvedDatabuddyConnectorConfig {
133
+ enabled: boolean;
134
+ mode: ConnectorMode;
135
+ apiKey?: string;
136
+ websiteId?: string;
137
+ namespace?: string;
138
+ source?: string;
139
+ apiUrl?: string;
140
+ debug: boolean;
141
+ enableBatching: boolean;
142
+ batchSize?: number;
143
+ batchTimeout?: number;
144
+ maxQueueSize?: number;
145
+ ready: boolean;
146
+ status: 'enabled' | 'missing';
147
+ }
65
148
  export interface ResolvedBetterStackConnectorConfig {
66
149
  enabled: boolean;
67
150
  mode: ConnectorMode;
@@ -119,9 +202,11 @@ export interface ResolvedOTLPConnectorConfig {
119
202
  }
120
203
  export interface BlypConnectorsConfig {
121
204
  betterstack?: BetterStackConnectorConfig;
205
+ databuddy?: DatabuddyConnectorConfig;
122
206
  posthog?: PostHogConnectorConfig;
123
207
  sentry?: SentryConnectorConfig;
124
208
  otlp?: OTLPConnectorConfig[];
209
+ delivery?: ConnectorDeliveryConfig;
125
210
  }
126
211
  export interface BlypConfig {
127
212
  pretty: boolean;
@@ -131,19 +216,23 @@ export interface BlypConfig {
131
216
  file?: LogFileConfig;
132
217
  database?: DatabaseLoggerConfig;
133
218
  clientLogging?: ClientLoggingConfig;
219
+ redact?: RedactionConfig;
134
220
  connectors?: BlypConnectorsConfig;
135
221
  }
136
222
  export interface ResolvedBlypConnectorsConfig {
137
223
  betterstack: ResolvedBetterStackConnectorConfig;
224
+ databuddy: ResolvedDatabuddyConnectorConfig;
138
225
  posthog: ResolvedPostHogConnectorConfig;
139
226
  sentry: ResolvedSentryConnectorConfig;
140
227
  otlp: ResolvedOTLPConnectorConfig[];
228
+ delivery: ResolvedConnectorDeliveryConfig;
141
229
  }
142
230
  export interface ResolvedBlypConfig extends BlypConfig {
143
231
  destination: BlypDestination;
144
232
  file: Required<LogFileConfig>;
145
233
  database?: ResolvedDatabaseLoggerConfig;
146
234
  clientLogging: Required<ClientLoggingConfig>;
235
+ redact: ResolvedRedactionConfig;
147
236
  connectors: ResolvedBlypConnectorsConfig;
148
237
  }
149
238
  export interface ConfigFileMatch {
@@ -1,9 +1,11 @@
1
1
  import type { BetterStackSender } from '../connectors/betterstack';
2
+ import type { DatabuddySender } from '../connectors/databuddy';
2
3
  import type { PostHogSender } from '../connectors/posthog';
3
4
  import type { SentrySender } from '../connectors/sentry';
4
5
  import type { OTLPRegistry } from '../connectors/otlp';
5
6
  import type { BlypPrimarySink } from '../../core/primary-sink';
6
7
  import type { StructuredLog, StructuredLogPayload } from './structured-log';
8
+ import type { ResolvedRedactionConfig } from './config';
7
9
  export interface BlypLogger {
8
10
  success: (message: unknown, ...args: unknown[]) => void;
9
11
  critical: (message: unknown, ...args: unknown[]) => void;
@@ -24,13 +26,16 @@ export interface StructuredLogFactoryOptions {
24
26
  resolveDefaultFields?: () => Record<string, unknown>;
25
27
  onCreate?: () => void;
26
28
  onEmit?: (payload: StructuredLogPayload) => void;
29
+ redact?: ResolvedRedactionConfig;
27
30
  }
28
31
  export interface LoggerFactoryHandle {
29
32
  bindings: Record<string, unknown>;
30
33
  betterstack: BetterStackSender;
34
+ databuddy: DatabuddySender;
31
35
  posthog: PostHogSender;
32
36
  sentry: SentrySender;
33
37
  otlp: OTLPRegistry;
38
+ redact: ResolvedRedactionConfig;
34
39
  sink: BlypPrimarySink;
35
40
  create: (source: InternalLoggerSource, bindings?: Record<string, unknown>) => BlypLogger;
36
41
  writeStructured: (payload: StructuredLogPayload, message: string, source?: InternalLoggerSource) => void;
@@ -1,3 +1,4 @@
1
+ import type { ResolvedRedactionConfig } from './config';
1
2
  export type StructuredLogLevel = 'debug' | 'info' | 'warn' | 'warning' | 'error' | 'success' | 'critical' | 'table';
2
3
  export interface StructuredLogError {
3
4
  message: string;
@@ -54,4 +55,5 @@ export interface CreateStructuredLogOptions {
54
55
  write(payload: StructuredLogPayload<Record<string, unknown>>, message: string): void;
55
56
  onCreate?: () => void;
56
57
  onEmit?: (payload: StructuredLogPayload<Record<string, unknown>>) => void;
58
+ redact?: ResolvedRedactionConfig;
57
59
  }
@@ -58,6 +58,7 @@ export interface DatabaseLogRow {
58
58
  message: string;
59
59
  caller: string | null;
60
60
  type: string | null;
61
+ traceId: string | null;
61
62
  groupId: string | null;
62
63
  method: string | null;
63
64
  path: string | null;
@@ -0,0 +1,33 @@
1
+ import type { BlypLogger } from '../../core/logger';
2
+ import type { ClientLogIngestionConfig as SharedClientLogIngestionConfig, HttpRequestLog, ServerLoggerConfig } from './shared';
3
+ export interface AstroLocals {
4
+ blypLog?: BlypLogger;
5
+ blypTraceId?: string;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface AstroEndpointContext {
9
+ request: Request;
10
+ url: URL;
11
+ params?: Record<string, string>;
12
+ locals: AstroLocals;
13
+ [key: string]: unknown;
14
+ }
15
+ export type AstroMiddlewareContext = AstroEndpointContext;
16
+ export type AstroMiddlewareNext = () => Response | Promise<Response>;
17
+ export type AstroMiddlewareHandler = (context: AstroMiddlewareContext, next: AstroMiddlewareNext) => Response | Promise<Response>;
18
+ export type AstroEndpointHandler = (context: AstroEndpointContext) => Response | Promise<Response>;
19
+ export interface AstroLoggerContext {
20
+ context: AstroEndpointContext;
21
+ response?: Response;
22
+ error?: unknown;
23
+ }
24
+ export interface AstroLoggerConfig extends ServerLoggerConfig<AstroLoggerContext> {
25
+ }
26
+ export interface AstroClientLogIngestionConfig extends SharedClientLogIngestionConfig<AstroLoggerContext> {
27
+ }
28
+ export interface AstroLoggerFactory {
29
+ logger: BlypLogger;
30
+ onRequest: AstroMiddlewareHandler;
31
+ clientLogHandler: AstroEndpointHandler;
32
+ }
33
+ export type { HttpRequestLog };
@@ -4,6 +4,7 @@ export interface ClientLoggerState {
4
4
  readonly pageId: string;
5
5
  readonly sessionId: string;
6
6
  readonly bindings: Record<string, unknown>;
7
+ readonly traceId?: string;
7
8
  readonly delivery?: {
8
9
  enqueue: (event: ClientLogEvent) => void;
9
10
  };
@@ -17,6 +18,7 @@ export interface ClientLoggerConfig {
17
18
  connector?: ClientConnectorRequest;
18
19
  metadata?: Record<string, unknown> | (() => Record<string, unknown>);
19
20
  delivery?: RemoteDeliveryConfig;
21
+ traceId?: string;
20
22
  }
21
23
  export interface ClientLogger {
22
24
  success: (message: unknown, ...args: unknown[]) => void;
@@ -5,6 +5,7 @@ export interface ElysiaContext {
5
5
  startTime?: number;
6
6
  request: Request;
7
7
  path: string;
8
+ blypTraceId?: string;
8
9
  params?: Record<string, string>;
9
10
  query?: Record<string, string>;
10
11
  headers: Record<string, string | undefined>;
@@ -29,5 +30,6 @@ export interface ElysiaLoggerConfig extends ServerLoggerConfig<ElysiaContext> {
29
30
  }
30
31
  export interface ElysiaClientLogIngestionConfig extends SharedClientLogIngestionConfig<ElysiaContext> {
31
32
  }
33
+ export type ElysiaLoggerPlugin = any;
32
34
  export type LoggerConfig = ElysiaLoggerConfig;
33
35
  export type ClientLogIngestionConfig = ElysiaClientLogIngestionConfig;
@@ -16,6 +16,7 @@ export type { HttpRequestLog };
16
16
  declare module 'express-serve-static-core' {
17
17
  interface Request {
18
18
  blypLog: BlypLogger;
19
+ blypTraceId?: string;
19
20
  }
20
21
  interface Locals {
21
22
  blypStartTime?: number;
@@ -15,6 +15,7 @@ export type { HttpRequestLog };
15
15
  declare module 'fastify' {
16
16
  interface FastifyRequest {
17
17
  blypLog: BlypLogger;
18
+ blypTraceId?: string;
18
19
  blypStartTime?: number;
19
20
  blypError?: unknown;
20
21
  blypStructuredLogEmitted?: boolean;
@@ -3,6 +3,7 @@ import type { BlypLogger } from '../../core/logger';
3
3
  import type { ClientLogIngestionConfig as SharedClientLogIngestionConfig, HttpRequestLog, ServerLoggerConfig } from './shared';
4
4
  export interface HonoLoggerVariables {
5
5
  blypLog: BlypLogger;
6
+ blypTraceId?: string;
6
7
  blypStartTime?: number;
7
8
  }
8
9
  export interface HonoLoggerConfig extends ServerLoggerConfig<Context> {
@@ -32,6 +32,7 @@ export interface HttpRequestLog {
32
32
  origin?: string;
33
33
  referer?: string;
34
34
  acceptLanguage?: string;
35
+ headers?: HeaderRecord;
35
36
  client?: {
36
37
  ip?: string;
37
38
  hostname?: string;
@@ -24,6 +24,7 @@ export type { HttpRequestLog };
24
24
  declare module 'express-serve-static-core' {
25
25
  interface Request {
26
26
  blypLog: BlypLogger;
27
+ blypTraceId?: string;
27
28
  blypStartTime?: number;
28
29
  blypStructuredLogEmitted?: boolean;
29
30
  }
@@ -31,6 +32,7 @@ declare module 'express-serve-static-core' {
31
32
  declare module 'fastify' {
32
33
  interface FastifyRequest {
33
34
  blypLog: BlypLogger;
35
+ blypTraceId?: string;
34
36
  blypStartTime?: number;
35
37
  blypStructuredLogEmitted?: boolean;
36
38
  }
@@ -6,6 +6,7 @@ export interface NextJsRouteContext {
6
6
  }
7
7
  export interface NextJsLoggerHelpers {
8
8
  log: BlypLogger;
9
+ traceId: string;
9
10
  }
10
11
  export interface NextJsLoggerContext {
11
12
  request: Request;
@@ -0,0 +1,63 @@
1
+ import type { BlypLogger } from '../../core/logger';
2
+ import type { ClientLogIngestionConfig as SharedClientLogIngestionConfig, HttpRequestLog, ServerLoggerConfig } from './shared';
3
+ import type { HeaderRecord } from './http';
4
+ export interface NitroNodeRequestLike extends AsyncIterable<Uint8Array | string> {
5
+ method?: string;
6
+ url?: string;
7
+ headers?: HeaderRecord;
8
+ }
9
+ export interface NitroNodeResponseLike {
10
+ statusCode?: number;
11
+ }
12
+ export interface NitroNodeLike {
13
+ req?: NitroNodeRequestLike;
14
+ res?: NitroNodeResponseLike;
15
+ }
16
+ export interface NitroEventContext {
17
+ blypLog?: BlypLogger;
18
+ blypTraceId?: string;
19
+ [key: string | symbol]: unknown;
20
+ }
21
+ export interface NitroEventLike {
22
+ path?: string;
23
+ method?: string;
24
+ headers?: Headers | HeaderRecord | {
25
+ get(name: string): string | null;
26
+ };
27
+ url?: string;
28
+ node?: NitroNodeLike;
29
+ context: NitroEventContext;
30
+ request?: Request;
31
+ body?: unknown;
32
+ [key: string]: unknown;
33
+ }
34
+ export interface NitroResponseLike {
35
+ status?: number;
36
+ statusCode?: number;
37
+ body?: unknown;
38
+ headers?: HeadersInit;
39
+ }
40
+ export interface NitroHooksLike {
41
+ hook: (name: string, callback: (...args: unknown[]) => unknown) => void | Promise<void>;
42
+ }
43
+ export interface NitroAppLike {
44
+ hooks: NitroHooksLike;
45
+ }
46
+ export type NitroLoggerPlugin = (nitroApp: NitroAppLike) => void | Promise<void>;
47
+ export type NitroEventHandler = (event: NitroEventLike) => Response | Promise<Response>;
48
+ export interface NitroLoggerContext {
49
+ event: NitroEventLike;
50
+ response?: NitroResponseLike | Response;
51
+ error?: unknown;
52
+ }
53
+ export interface NitroLoggerConfig extends ServerLoggerConfig<NitroLoggerContext> {
54
+ }
55
+ export interface NitroClientLogIngestionConfig extends SharedClientLogIngestionConfig<NitroLoggerContext> {
56
+ }
57
+ export interface NitroLoggerFactory {
58
+ logger: BlypLogger;
59
+ plugin: NitroLoggerPlugin;
60
+ clientLogHandler: NitroEventHandler;
61
+ getLogger: (event: NitroEventLike) => BlypLogger;
62
+ }
63
+ export type { HttpRequestLog };
@@ -0,0 +1,12 @@
1
+ import type { BlypLogger } from '../../core/logger';
2
+ import type { HttpRequestLog } from './shared';
3
+ import type { NitroClientLogIngestionConfig as NuxtClientLogIngestionConfig, NitroEventHandler as NuxtEventHandler, NitroEventLike as NuxtEventLike, NitroLoggerConfig as BaseNuxtLoggerConfig, NitroLoggerPlugin as NuxtLoggerPlugin, NitroLoggerContext } from './nitro';
4
+ export interface NuxtLoggerConfig extends BaseNuxtLoggerConfig {
5
+ }
6
+ export interface NuxtLoggerFactory {
7
+ logger: BlypLogger;
8
+ serverPlugin: NuxtLoggerPlugin;
9
+ clientLogHandler: NuxtEventHandler;
10
+ getLogger: (event: NuxtEventLike) => BlypLogger;
11
+ }
12
+ export type { HttpRequestLog, NitroLoggerContext as NuxtLoggerContext, NuxtClientLogIngestionConfig, NuxtEventHandler, NuxtEventLike, NuxtLoggerPlugin, };
@@ -0,0 +1,35 @@
1
+ import type { BlypLogger } from '../../core/logger';
2
+ import type { ClientLogIngestionConfig as SharedClientLogIngestionConfig, HttpRequestLog, ServerLoggerConfig } from './shared';
3
+ export interface ReactRouterContextStore {
4
+ get?: (key: unknown) => unknown;
5
+ set?: (key: unknown, value: unknown) => void;
6
+ [key: string | symbol]: unknown;
7
+ }
8
+ export interface ReactRouterMiddlewareArgs {
9
+ request: Request;
10
+ params?: Record<string, string | undefined>;
11
+ context: ReactRouterContextStore;
12
+ }
13
+ export type ReactRouterMiddlewareNext = () => Response | Promise<Response>;
14
+ export type ReactRouterLoggerMiddleware = (args: ReactRouterMiddlewareArgs, next: ReactRouterMiddlewareNext) => Response | Promise<Response>;
15
+ export interface ReactRouterLoggerContext {
16
+ request: Request;
17
+ params?: Record<string, string | undefined>;
18
+ context: ReactRouterContextStore;
19
+ response?: Response;
20
+ error?: unknown;
21
+ }
22
+ export interface ReactRouterLoggerConfig extends ServerLoggerConfig<ReactRouterLoggerContext> {
23
+ }
24
+ export interface ReactRouterClientLogIngestionConfig extends SharedClientLogIngestionConfig<ReactRouterLoggerContext> {
25
+ }
26
+ export interface ReactRouterLoggerFactory {
27
+ logger: BlypLogger;
28
+ middleware: ReactRouterLoggerMiddleware;
29
+ clientLogHandler: (request: Request) => Promise<Response>;
30
+ getLogger: (context: ReactRouterContextStore) => BlypLogger;
31
+ setLogger: (context: ReactRouterContextStore, logger: BlypLogger) => void;
32
+ getTraceId: (context: ReactRouterContextStore) => string | undefined;
33
+ setTraceId: (context: ReactRouterContextStore, traceId: string) => void;
34
+ }
35
+ export type { HttpRequestLog };
@@ -5,4 +5,5 @@ export interface BlypRequestContextStore {
5
5
  structuredLogEmitted: boolean;
6
6
  mixedLoggerWarningShown: boolean;
7
7
  activeLogger?: BlypLogger;
8
+ traceId?: string;
8
9
  }
@@ -1,4 +1,4 @@
1
- import type { BlypConfig, BlypConnectorsConfig, BlypDestination, DatabaseLoggerConfig, LogFileConfig } from '../core/config';
1
+ import type { BlypConfig, BlypConnectorsConfig, BlypDestination, DatabaseLoggerConfig, LogFileConfig, RedactionConfig } from '../core/config';
2
2
  import type { BlypLogger } from '../core/logger';
3
3
  import type { ClientLogEvent } from '../shared/client-log';
4
4
  import type { ConnectorMode } from '../connectors/mode';
@@ -19,8 +19,10 @@ export interface ServerLoggerConfig<Ctx> {
19
19
  };
20
20
  customProps?: (ctx: Ctx) => Record<string, unknown>;
21
21
  logErrors?: boolean;
22
+ includePaths?: string[];
22
23
  ignorePaths?: string[];
23
24
  clientLogging?: boolean | ClientLogIngestionConfig<Ctx>;
25
+ redact?: RedactionConfig;
24
26
  connectors?: BlypConnectorsConfig;
25
27
  }
26
28
  export interface ResolvedPostHogConnector {
@@ -86,6 +88,29 @@ export interface ResolvedBetterStackConnector {
86
88
  context?: Record<string, unknown>;
87
89
  }) => void;
88
90
  }
91
+ export interface ResolvedDatabuddyConnector {
92
+ enabled: boolean;
93
+ ready: boolean;
94
+ mode: ConnectorMode;
95
+ status: 'enabled' | 'missing';
96
+ shouldAutoCaptureExceptions: () => boolean;
97
+ send: (record: {
98
+ timestamp: string;
99
+ level: string;
100
+ message: string;
101
+ [key: string]: unknown;
102
+ }, options?: {
103
+ source?: 'server' | 'client';
104
+ warnIfUnavailable?: boolean;
105
+ }) => void;
106
+ captureException: (error: unknown, options?: {
107
+ source?: 'server' | 'client';
108
+ warnIfUnavailable?: boolean;
109
+ properties?: Record<string, unknown>;
110
+ anonymousId?: string;
111
+ sessionId?: string;
112
+ }) => void;
113
+ }
89
114
  export interface ResolvedSentryConnector {
90
115
  enabled: boolean;
91
116
  ready: boolean;
@@ -136,6 +161,7 @@ export interface ResolvedOTLPRegistry {
136
161
  export interface ResolvedServerLogger<Ctx> {
137
162
  logger: BlypLogger;
138
163
  betterstack: ResolvedBetterStackConnector;
164
+ databuddy: ResolvedDatabuddyConnector;
139
165
  posthog: ResolvedPostHogConnector;
140
166
  sentry: ResolvedSentryConnector;
141
167
  otlp: ResolvedOTLPRegistry;
@@ -147,6 +173,7 @@ export interface ResolvedServerLogger<Ctx> {
147
173
  autoLogging: ServerLoggerConfig<Ctx>['autoLogging'];
148
174
  customProps?: (ctx: Ctx) => Record<string, unknown>;
149
175
  logErrors: boolean;
176
+ resolvedIncludePaths?: string[];
150
177
  resolvedIgnorePaths?: string[];
151
178
  resolvedClientLogging: ClientLogIngestionConfig<Ctx> | null;
152
179
  ingestionPath: string;
@@ -1,5 +1,5 @@
1
1
  import type { BlypLogger } from '../core/logger';
2
- import type { BlypDestination, BlypConnectorsConfig, ClientLoggingConfig, DatabaseLoggerConfig, LogFileConfig, LogRotationConfig } from '../core/config';
2
+ import type { BlypDestination, BlypConnectorsConfig, ClientLoggingConfig, DatabaseLoggerConfig, LogFileConfig, LogRotationConfig, RedactionConfig } from '../core/config';
3
3
  export type LogLevel = 'error' | 'critical' | 'warning' | 'info' | 'success' | 'debug' | 'table';
4
4
  export interface StandaloneLoggerConfig {
5
5
  pretty?: boolean;
@@ -9,6 +9,7 @@ export interface StandaloneLoggerConfig {
9
9
  file?: LogFileConfig;
10
10
  database?: DatabaseLoggerConfig;
11
11
  clientLogging?: ClientLoggingConfig;
12
+ redact?: RedactionConfig;
12
13
  connectors?: BlypConnectorsConfig;
13
14
  }
14
15
  export interface StandaloneLogger extends BlypLogger {
@@ -18,7 +19,7 @@ export interface StandaloneLogger extends BlypLogger {
18
19
  warn: (message: unknown, ...args: unknown[]) => void;
19
20
  warning: (message: unknown, ...args: unknown[]) => void;
20
21
  }
21
- export type { BlypConnectorsConfig, BlypDestination, ClientLoggingConfig, DatabaseLoggerConfig, LogFileConfig, LogRotationConfig, };
22
+ export type { BlypConnectorsConfig, BlypDestination, ClientLoggingConfig, DatabaseLoggerConfig, LogFileConfig, LogRotationConfig, RedactionConfig, };
22
23
  export type RuntimeType = 'bun' | 'node';
23
24
  export interface RuntimeAdapter {
24
25
  readonly type: RuntimeType;
@@ -2,6 +2,7 @@ import type { BlypLogger } from '../../core/logger';
2
2
  import type { ClientLogIngestionConfig as SharedClientLogIngestionConfig, HttpRequestLog, ServerLoggerConfig } from './shared';
3
3
  export interface SvelteKitLocals {
4
4
  blypLog?: BlypLogger;
5
+ blypTraceId?: string;
5
6
  [key: string]: unknown;
6
7
  }
7
8
  export interface SvelteKitRequestEvent {
@@ -2,14 +2,20 @@ import type { BlypLogger } from '../../core/logger';
2
2
  import type { ClientLogIngestionConfig as SharedClientLogIngestionConfig, HttpRequestLog, ServerLoggerConfig } from './shared';
3
3
  export interface TanStackStartMiddlewareContext {
4
4
  request: Request;
5
- context: Record<string, unknown>;
5
+ context: Record<string, unknown> & {
6
+ blypTraceId?: string;
7
+ };
6
8
  next: (options?: {
7
- context?: Record<string, unknown>;
9
+ context?: Record<string, unknown> & {
10
+ blypTraceId?: string;
11
+ };
8
12
  }) => Promise<Response>;
9
13
  }
10
14
  export interface TanStackStartLoggerContext {
11
15
  request: Request;
12
- context: Record<string, unknown>;
16
+ context: Record<string, unknown> & {
17
+ blypTraceId?: string;
18
+ };
13
19
  response?: Response;
14
20
  error?: unknown;
15
21
  }
@@ -1,12 +1,15 @@
1
+ import type { RedactionConfig, ResolvedRedactionConfig } from '../core/config';
1
2
  import type { HttpRequestLog } from './http';
2
3
  import type { StructuredLog } from '../core/structured-log';
3
4
  export interface WorkersLoggerConfig {
4
5
  env?: Record<string, unknown>;
5
6
  customProps?: (request: Request) => Record<string, unknown>;
7
+ redact?: RedactionConfig;
6
8
  }
7
9
  export interface WorkersLoggerState {
8
10
  env?: Record<string, unknown>;
9
11
  customProps?: (request: Request) => Record<string, unknown>;
12
+ redact?: ResolvedRedactionConfig;
10
13
  }
11
14
  export type WorkersConsoleMethod = 'debug' | 'info' | 'warn' | 'error' | 'log';
12
15
  export type WorkersLogLevel = 'debug' | 'info' | 'warn' | 'warning' | 'error' | 'success' | 'critical';
@@ -24,7 +24,7 @@ export interface ClientLogSessionContext {
24
24
  pageId: string;
25
25
  sessionId: string;
26
26
  }
27
- export type ClientConnectorRequest = 'betterstack' | 'posthog' | 'sentry' | {
27
+ export type ClientConnectorRequest = 'betterstack' | 'databuddy' | 'posthog' | 'sentry' | {
28
28
  type: 'otlp';
29
29
  name: string;
30
30
  };
@@ -32,6 +32,7 @@ export interface ClientLogEvent {
32
32
  type: 'client_log';
33
33
  source: 'client';
34
34
  id: string;
35
+ traceId?: string;
35
36
  level: ClientLogLevel;
36
37
  message: string;
37
38
  connector?: ClientConnectorRequest;