@vestig/next 0.6.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/mocks/next-server.d.ts.map +1 -1
  3. package/dist/__tests__/mocks/next-server.js.map +1 -1
  4. package/dist/client/error-boundary.d.ts +80 -0
  5. package/dist/client/error-boundary.d.ts.map +1 -0
  6. package/dist/client/error-boundary.js +182 -0
  7. package/dist/client/error-boundary.js.map +1 -0
  8. package/dist/client/index.d.ts +2 -1
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +2 -0
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/client/transport.d.ts +50 -0
  13. package/dist/client/transport.d.ts.map +1 -1
  14. package/dist/client/transport.js +200 -3
  15. package/dist/client/transport.js.map +1 -1
  16. package/dist/client.d.ts +2 -1
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +2 -0
  19. package/dist/client.js.map +1 -1
  20. package/dist/db/drizzle.d.ts +115 -0
  21. package/dist/db/drizzle.d.ts.map +1 -0
  22. package/dist/db/drizzle.js +174 -0
  23. package/dist/db/drizzle.js.map +1 -0
  24. package/dist/db/index.d.ts +49 -0
  25. package/dist/db/index.d.ts.map +1 -0
  26. package/dist/db/index.js +51 -0
  27. package/dist/db/index.js.map +1 -0
  28. package/dist/db/prisma.d.ts +114 -0
  29. package/dist/db/prisma.d.ts.map +1 -0
  30. package/dist/db/prisma.js +144 -0
  31. package/dist/db/prisma.js.map +1 -0
  32. package/dist/db/query-logger.d.ts +30 -0
  33. package/dist/db/query-logger.d.ts.map +1 -0
  34. package/dist/db/query-logger.js +169 -0
  35. package/dist/db/query-logger.js.map +1 -0
  36. package/dist/db/types.d.ts +102 -0
  37. package/dist/db/types.d.ts.map +1 -0
  38. package/dist/db/types.js +28 -0
  39. package/dist/db/types.js.map +1 -0
  40. package/dist/dev/api/index.d.ts +13 -0
  41. package/dist/dev/api/index.d.ts.map +1 -0
  42. package/dist/dev/api/index.js +13 -0
  43. package/dist/dev/api/index.js.map +1 -0
  44. package/dist/dev/api/logs-stream.d.ts +119 -0
  45. package/dist/dev/api/logs-stream.d.ts.map +1 -0
  46. package/dist/dev/api/logs-stream.js +156 -0
  47. package/dist/dev/api/logs-stream.js.map +1 -0
  48. package/dist/dev/filters.d.ts +17 -0
  49. package/dist/dev/filters.d.ts.map +1 -0
  50. package/dist/dev/filters.js +100 -0
  51. package/dist/dev/filters.js.map +1 -0
  52. package/dist/dev/hooks/use-logs.d.ts +55 -0
  53. package/dist/dev/hooks/use-logs.d.ts.map +1 -0
  54. package/dist/dev/hooks/use-logs.js +202 -0
  55. package/dist/dev/hooks/use-logs.js.map +1 -0
  56. package/dist/dev/index.d.ts +35 -0
  57. package/dist/dev/index.d.ts.map +1 -0
  58. package/dist/dev/index.js +41 -0
  59. package/dist/dev/index.js.map +1 -0
  60. package/dist/dev/log-entry.d.ts +12 -0
  61. package/dist/dev/log-entry.d.ts.map +1 -0
  62. package/dist/dev/log-entry.js +152 -0
  63. package/dist/dev/log-entry.js.map +1 -0
  64. package/dist/dev/log-viewer.d.ts +11 -0
  65. package/dist/dev/log-viewer.d.ts.map +1 -0
  66. package/dist/dev/log-viewer.js +49 -0
  67. package/dist/dev/log-viewer.js.map +1 -0
  68. package/dist/dev/metrics-card.d.ts +18 -0
  69. package/dist/dev/metrics-card.d.ts.map +1 -0
  70. package/dist/dev/metrics-card.js +75 -0
  71. package/dist/dev/metrics-card.js.map +1 -0
  72. package/dist/dev/metrics-histogram.d.ts +12 -0
  73. package/dist/dev/metrics-histogram.d.ts.map +1 -0
  74. package/dist/dev/metrics-histogram.js +69 -0
  75. package/dist/dev/metrics-histogram.js.map +1 -0
  76. package/dist/dev/metrics-panel.d.ts +10 -0
  77. package/dist/dev/metrics-panel.d.ts.map +1 -0
  78. package/dist/dev/metrics-panel.js +84 -0
  79. package/dist/dev/metrics-panel.js.map +1 -0
  80. package/dist/dev/overlay.d.ts +55 -0
  81. package/dist/dev/overlay.d.ts.map +1 -0
  82. package/dist/dev/overlay.js +216 -0
  83. package/dist/dev/overlay.js.map +1 -0
  84. package/dist/dev/store.d.ts +126 -0
  85. package/dist/dev/store.d.ts.map +1 -0
  86. package/dist/dev/store.js +210 -0
  87. package/dist/dev/store.js.map +1 -0
  88. package/dist/error/boundary.d.ts +36 -0
  89. package/dist/error/boundary.d.ts.map +1 -0
  90. package/dist/error/boundary.js +263 -0
  91. package/dist/error/boundary.js.map +1 -0
  92. package/dist/error/breadcrumbs.d.ts +95 -0
  93. package/dist/error/breadcrumbs.d.ts.map +1 -0
  94. package/dist/error/breadcrumbs.js +273 -0
  95. package/dist/error/breadcrumbs.js.map +1 -0
  96. package/dist/error/fingerprint.d.ts +42 -0
  97. package/dist/error/fingerprint.d.ts.map +1 -0
  98. package/dist/error/fingerprint.js +135 -0
  99. package/dist/error/fingerprint.js.map +1 -0
  100. package/dist/error/index.d.ts +52 -0
  101. package/dist/error/index.d.ts.map +1 -0
  102. package/dist/error/index.js +56 -0
  103. package/dist/error/index.js.map +1 -0
  104. package/dist/error/stack-parser.d.ts +43 -0
  105. package/dist/error/stack-parser.d.ts.map +1 -0
  106. package/dist/error/stack-parser.js +166 -0
  107. package/dist/error/stack-parser.js.map +1 -0
  108. package/dist/error/types.d.ts +152 -0
  109. package/dist/error/types.d.ts.map +1 -0
  110. package/dist/error/types.js +10 -0
  111. package/dist/error/types.js.map +1 -0
  112. package/dist/metrics/hooks/use-route-metrics.d.ts +93 -0
  113. package/dist/metrics/hooks/use-route-metrics.d.ts.map +1 -0
  114. package/dist/metrics/hooks/use-route-metrics.js +217 -0
  115. package/dist/metrics/hooks/use-route-metrics.js.map +1 -0
  116. package/dist/metrics/hooks/use-web-vitals.d.ts +73 -0
  117. package/dist/metrics/hooks/use-web-vitals.d.ts.map +1 -0
  118. package/dist/metrics/hooks/use-web-vitals.js +141 -0
  119. package/dist/metrics/hooks/use-web-vitals.js.map +1 -0
  120. package/dist/metrics/index.d.ts +51 -0
  121. package/dist/metrics/index.d.ts.map +1 -0
  122. package/dist/metrics/index.js +56 -0
  123. package/dist/metrics/index.js.map +1 -0
  124. package/dist/metrics/reporter.d.ts +87 -0
  125. package/dist/metrics/reporter.d.ts.map +1 -0
  126. package/dist/metrics/reporter.js +178 -0
  127. package/dist/metrics/reporter.js.map +1 -0
  128. package/dist/metrics/store.d.ts +67 -0
  129. package/dist/metrics/store.d.ts.map +1 -0
  130. package/dist/metrics/store.js +187 -0
  131. package/dist/metrics/store.js.map +1 -0
  132. package/dist/metrics/thresholds.d.ts +84 -0
  133. package/dist/metrics/thresholds.d.ts.map +1 -0
  134. package/dist/metrics/thresholds.js +148 -0
  135. package/dist/metrics/thresholds.js.map +1 -0
  136. package/dist/metrics/types.d.ts +215 -0
  137. package/dist/metrics/types.d.ts.map +1 -0
  138. package/dist/metrics/types.js +10 -0
  139. package/dist/metrics/types.js.map +1 -0
  140. package/dist/metrics/web-vitals.d.ts +72 -0
  141. package/dist/metrics/web-vitals.d.ts.map +1 -0
  142. package/dist/metrics/web-vitals.js +89 -0
  143. package/dist/metrics/web-vitals.js.map +1 -0
  144. package/package.json +28 -6
@@ -7,6 +7,7 @@
7
7
  * - Retry with exponential backoff
8
8
  * - Uses keepalive for beforeunload reliability
9
9
  * - Automatic page metadata enrichment
10
+ * - Offline queue persistence with localStorage
10
11
  */
11
12
  export class ClientHTTPTransport {
12
13
  name;
@@ -19,11 +20,22 @@ export class ClientHTTPTransport {
19
20
  onFlushSuccess;
20
21
  onFlushError;
21
22
  onDrop;
23
+ // Offline queue config
24
+ offlineEnabled;
25
+ offlineStorageKey;
26
+ offlineMaxSize;
27
+ onOfflineRestore;
28
+ onOfflinePersist;
22
29
  buffer = [];
23
30
  flushTimer = null;
24
31
  isFlushing = false;
25
32
  isDestroyed = false;
26
33
  maxBufferSize = 500;
34
+ isOnline = true;
35
+ boundOnlineHandler;
36
+ boundOfflineHandler;
37
+ flushQueue = Promise.resolve();
38
+ pendingFlush = false;
27
39
  constructor(config) {
28
40
  this.name = config.name;
29
41
  this.config = { name: config.name, enabled: config.enabled ?? true };
@@ -35,13 +47,141 @@ export class ClientHTTPTransport {
35
47
  this.onFlushSuccess = config.onFlushSuccess;
36
48
  this.onFlushError = config.onFlushError;
37
49
  this.onDrop = config.onDrop;
50
+ // Offline queue settings
51
+ const offlineConfig = config.offlineQueue ?? {};
52
+ this.offlineEnabled = offlineConfig.enabled ?? true;
53
+ this.offlineStorageKey = offlineConfig.storageKey ?? 'vestig:offline-queue';
54
+ this.offlineMaxSize = offlineConfig.maxSize ?? 1000;
55
+ this.onOfflineRestore = offlineConfig.onRestore;
56
+ this.onOfflinePersist = offlineConfig.onPersist;
57
+ // Initialize network status (default to true if navigator.onLine is not available)
58
+ this.isOnline =
59
+ typeof navigator !== 'undefined' && navigator.onLine !== undefined ? navigator.onLine : true;
60
+ // Bind handlers for cleanup
61
+ this.boundOnlineHandler = this.handleOnline.bind(this);
62
+ this.boundOfflineHandler = this.handleOffline.bind(this);
38
63
  }
39
64
  async init() {
65
+ // Restore offline queue if any
66
+ if (this.offlineEnabled) {
67
+ this.restoreOfflineQueue();
68
+ }
69
+ // Listen for network status changes
70
+ if (typeof window !== 'undefined') {
71
+ window.addEventListener('online', this.boundOnlineHandler);
72
+ window.addEventListener('offline', this.boundOfflineHandler);
73
+ }
40
74
  // Start flush timer
41
75
  this.flushTimer = setInterval(() => {
42
76
  this.flush();
43
77
  }, this.flushInterval);
44
78
  }
79
+ handleOnline() {
80
+ this.isOnline = true;
81
+ // Attempt to flush when back online
82
+ this.flush();
83
+ }
84
+ handleOffline() {
85
+ this.isOnline = false;
86
+ // Persist current buffer to offline storage
87
+ if (this.offlineEnabled && this.buffer.length > 0) {
88
+ this.persistOfflineQueue();
89
+ }
90
+ }
91
+ restoreOfflineQueue() {
92
+ if (typeof localStorage === 'undefined')
93
+ return;
94
+ try {
95
+ const stored = localStorage.getItem(this.offlineStorageKey);
96
+ if (!stored)
97
+ return;
98
+ const entries = JSON.parse(stored);
99
+ if (!Array.isArray(entries) || entries.length === 0)
100
+ return;
101
+ // Add restored entries to the front of the buffer
102
+ this.buffer.unshift(...entries);
103
+ // Enforce max buffer size
104
+ if (this.buffer.length > this.maxBufferSize) {
105
+ const excess = this.buffer.length - this.maxBufferSize;
106
+ this.buffer.splice(this.maxBufferSize);
107
+ this.onDrop?.(excess);
108
+ }
109
+ // Clear stored queue
110
+ localStorage.removeItem(this.offlineStorageKey);
111
+ this.onOfflineRestore?.(entries.length);
112
+ }
113
+ catch {
114
+ // Silently ignore parsing errors
115
+ }
116
+ }
117
+ persistOfflineQueue() {
118
+ if (typeof localStorage === 'undefined')
119
+ return;
120
+ try {
121
+ // Merge existing stored entries with current buffer
122
+ let toStore = [...this.buffer];
123
+ const existingStored = localStorage.getItem(this.offlineStorageKey);
124
+ if (existingStored) {
125
+ try {
126
+ const existing = JSON.parse(existingStored);
127
+ if (Array.isArray(existing)) {
128
+ toStore = [...existing, ...toStore];
129
+ }
130
+ }
131
+ catch {
132
+ // Ignore parse errors
133
+ }
134
+ }
135
+ // Enforce max size
136
+ if (toStore.length > this.offlineMaxSize) {
137
+ const excess = toStore.length - this.offlineMaxSize;
138
+ toStore = toStore.slice(excess);
139
+ this.onDrop?.(excess);
140
+ }
141
+ this.safeLocalStorageSet(this.offlineStorageKey, JSON.stringify(toStore));
142
+ this.onOfflinePersist?.(toStore.length);
143
+ }
144
+ catch {
145
+ // Silently ignore storage errors
146
+ }
147
+ }
148
+ /**
149
+ * Safely set localStorage with quota handling
150
+ * Removes oldest entries if quota is exceeded
151
+ */
152
+ safeLocalStorageSet(key, value) {
153
+ try {
154
+ localStorage.setItem(key, value);
155
+ return true;
156
+ }
157
+ catch (error) {
158
+ // Handle QuotaExceededError
159
+ if (error instanceof Error &&
160
+ (error.name === 'QuotaExceededError' ||
161
+ error.name === 'NS_ERROR_DOM_QUOTA_REACHED' ||
162
+ // Safari private browsing
163
+ error.message.includes('quota'))) {
164
+ // Try to make room by reducing stored entries
165
+ try {
166
+ const parsed = JSON.parse(value);
167
+ if (Array.isArray(parsed) && parsed.length > 1) {
168
+ // Remove half the entries and try again
169
+ const reduced = parsed.slice(Math.floor(parsed.length / 2));
170
+ const droppedCount = parsed.length - reduced.length;
171
+ this.onDrop?.(droppedCount);
172
+ if (reduced.length > 0) {
173
+ return this.safeLocalStorageSet(key, JSON.stringify(reduced));
174
+ }
175
+ }
176
+ }
177
+ catch {
178
+ // Parse failed, clear the key entirely
179
+ localStorage.removeItem(key);
180
+ }
181
+ }
182
+ return false;
183
+ }
184
+ }
45
185
  log(entry) {
46
186
  if (this.isDestroyed)
47
187
  return;
@@ -71,7 +211,31 @@ export class ClientHTTPTransport {
71
211
  }
72
212
  }
73
213
  async flush() {
74
- if (this.isFlushing || this.buffer.length === 0 || this.isDestroyed) {
214
+ if (this.buffer.length === 0 || this.isDestroyed) {
215
+ return;
216
+ }
217
+ // If offline, persist to storage instead of sending
218
+ if (!this.isOnline) {
219
+ if (this.offlineEnabled) {
220
+ this.persistOfflineQueue();
221
+ }
222
+ return;
223
+ }
224
+ // If already flushing, queue this flush request
225
+ if (this.isFlushing) {
226
+ if (!this.pendingFlush) {
227
+ this.pendingFlush = true;
228
+ this.flushQueue = this.flushQueue.then(() => {
229
+ this.pendingFlush = false;
230
+ return this.doFlush();
231
+ });
232
+ }
233
+ return this.flushQueue;
234
+ }
235
+ return this.doFlush();
236
+ }
237
+ async doFlush() {
238
+ if (this.buffer.length === 0 || this.isDestroyed || this.isFlushing) {
75
239
  return;
76
240
  }
77
241
  this.isFlushing = true;
@@ -90,6 +254,10 @@ export class ClientHTTPTransport {
90
254
  this.buffer.splice(this.maxBufferSize);
91
255
  this.onDrop?.(excess);
92
256
  }
257
+ // If send failed, might be network issue - persist to offline queue
258
+ if (this.offlineEnabled) {
259
+ this.persistOfflineQueue();
260
+ }
93
261
  this.onFlushError?.(error instanceof Error ? error : new Error(String(error)));
94
262
  }
95
263
  finally {
@@ -124,16 +292,45 @@ export class ClientHTTPTransport {
124
292
  }
125
293
  async destroy() {
126
294
  this.isDestroyed = true;
295
+ // Remove network event listeners
296
+ if (typeof window !== 'undefined') {
297
+ window.removeEventListener('online', this.boundOnlineHandler);
298
+ window.removeEventListener('offline', this.boundOfflineHandler);
299
+ }
127
300
  if (this.flushTimer) {
128
301
  clearInterval(this.flushTimer);
129
302
  this.flushTimer = null;
130
303
  }
131
- // Final flush attempt
132
- if (this.buffer.length > 0) {
304
+ // Persist remaining buffer to offline storage
305
+ if (this.offlineEnabled && this.buffer.length > 0) {
306
+ this.persistOfflineQueue();
307
+ }
308
+ // Final flush attempt if online
309
+ if (this.buffer.length > 0 && this.isOnline) {
133
310
  this.isFlushing = false; // Reset to allow final flush
134
311
  await this.flush();
135
312
  }
136
313
  }
314
+ /**
315
+ * Get current online status
316
+ */
317
+ getOnlineStatus() {
318
+ return this.isOnline;
319
+ }
320
+ /**
321
+ * Get current buffer size
322
+ */
323
+ getBufferSize() {
324
+ return this.buffer.length;
325
+ }
326
+ /**
327
+ * Manually trigger offline queue persistence
328
+ */
329
+ persistNow() {
330
+ if (this.offlineEnabled) {
331
+ this.persistOfflineQueue();
332
+ }
333
+ }
137
334
  }
138
335
  /**
139
336
  * Create a client HTTP transport with default configuration
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -39,5 +39,6 @@
39
39
  */
40
40
  export { VestigProvider, useVestigContext, type VestigProviderProps } from './client/provider';
41
41
  export { useLogger, useCorrelationContext, useVestigConnection, useComponentLogger, useRenderLogger, } from './client/hooks';
42
- export { ClientHTTPTransport, createClientTransport, type ClientHTTPTransportConfig, } from './client/transport';
42
+ export { VestigErrorBoundary, addBreadcrumb, getBreadcrumbs, clearBreadcrumbs, type VestigErrorBoundaryProps, type Breadcrumb, } from './client/error-boundary';
43
+ export { ClientHTTPTransport, createClientTransport, type ClientHTTPTransportConfig, type OfflineQueueConfig, } from './client/transport';
43
44
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAG9F,OAAO,EACN,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GACf,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,yBAAyB,GAC9B,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAG9F,OAAO,EACN,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GACf,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACN,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,KAAK,wBAAwB,EAC7B,KAAK,UAAU,GACf,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACvB,MAAM,oBAAoB,CAAA"}
package/dist/client.js CHANGED
@@ -42,6 +42,8 @@
42
42
  export { VestigProvider, useVestigContext } from './client/provider';
43
43
  // Hooks
44
44
  export { useLogger, useCorrelationContext, useVestigConnection, useComponentLogger, useRenderLogger, } from './client/hooks';
45
+ // Error Boundary
46
+ export { VestigErrorBoundary, addBreadcrumb, getBreadcrumbs, clearBreadcrumbs, } from './client/error-boundary';
45
47
  // Transport (for advanced use cases)
46
48
  export { ClientHTTPTransport, createClientTransport, } from './client/transport';
47
49
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA4B,MAAM,mBAAmB,CAAA;AAE9F,QAAQ;AACR,OAAO,EACN,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GACf,MAAM,gBAAgB,CAAA;AAEvB,qCAAqC;AACrC,OAAO,EACN,mBAAmB,EACnB,qBAAqB,GAErB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA4B,MAAM,mBAAmB,CAAA;AAE9F,QAAQ;AACR,OAAO,EACN,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GACf,MAAM,gBAAgB,CAAA;AAEvB,iBAAiB;AACjB,OAAO,EACN,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,GAGhB,MAAM,yBAAyB,CAAA;AAEhC,qCAAqC;AACrC,OAAO,EACN,mBAAmB,EACnB,qBAAqB,GAGrB,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Drizzle Integration
3
+ *
4
+ * Provides a custom logger for Drizzle ORM that integrates with Vestig.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // lib/db.ts
9
+ * import { drizzle } from 'drizzle-orm/postgres-js'
10
+ * import postgres from 'postgres'
11
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
12
+ *
13
+ * const client = postgres(process.env.DATABASE_URL!)
14
+ * export const db = drizzle(client, {
15
+ * logger: createVestigDrizzleLogger(),
16
+ * })
17
+ * ```
18
+ *
19
+ * @packageDocumentation
20
+ */
21
+ import type { Logger as VestigLogger } from 'vestig';
22
+ import type { DbLoggerConfig, DrizzleLogger } from './types';
23
+ /**
24
+ * Options for Vestig Drizzle logger
25
+ */
26
+ export interface VestigDrizzleLoggerOptions extends DbLoggerConfig {
27
+ /**
28
+ * Logger instance to use
29
+ * If not provided, will use console-based logging
30
+ */
31
+ logger?: VestigLogger;
32
+ }
33
+ /**
34
+ * Create a Drizzle-compatible logger that integrates with Vestig
35
+ *
36
+ * @example Basic usage
37
+ * ```typescript
38
+ * import { drizzle } from 'drizzle-orm/postgres-js'
39
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
40
+ *
41
+ * const db = drizzle(client, {
42
+ * logger: createVestigDrizzleLogger(),
43
+ * })
44
+ * ```
45
+ *
46
+ * @example With Vestig logger
47
+ * ```typescript
48
+ * import { createLogger } from 'vestig'
49
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
50
+ *
51
+ * const logger = createLogger({ namespace: 'app' })
52
+ *
53
+ * const db = drizzle(client, {
54
+ * logger: createVestigDrizzleLogger({
55
+ * logger,
56
+ * slowQueryThreshold: 200,
57
+ * logLevel: 'slow', // Only log slow queries
58
+ * }),
59
+ * })
60
+ * ```
61
+ *
62
+ * @example With custom callback
63
+ * ```typescript
64
+ * const db = drizzle(client, {
65
+ * logger: createVestigDrizzleLogger({
66
+ * onQuery: (entry) => {
67
+ * // Send to analytics, APM, etc.
68
+ * if (entry.isSlow) {
69
+ * sendToAPM(entry)
70
+ * }
71
+ * },
72
+ * }),
73
+ * })
74
+ * ```
75
+ */
76
+ export declare function createVestigDrizzleLogger(options?: VestigDrizzleLoggerOptions): DrizzleLogger;
77
+ /**
78
+ * Create a Drizzle logger that measures actual query duration
79
+ *
80
+ * This is a more accurate version that wraps your database client
81
+ * to measure actual query execution time.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * import { drizzle } from 'drizzle-orm/postgres-js'
86
+ * import { withVestigDrizzle } from '@vestig/next/db'
87
+ *
88
+ * const client = postgres(process.env.DATABASE_URL!)
89
+ * const { db, logger } = withVestigDrizzle(
90
+ * (logger) => drizzle(client, { logger }),
91
+ * { slowQueryThreshold: 100 }
92
+ * )
93
+ * ```
94
+ */
95
+ export declare function createDrizzleQueryLogger(options?: VestigDrizzleLoggerOptions): {
96
+ log: (query: string, params: unknown[], durationMs: number) => void;
97
+ config: Required<DbLoggerConfig>;
98
+ };
99
+ /**
100
+ * Utility to wrap any async function with query timing
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * import { measureQuery } from '@vestig/next/db'
105
+ *
106
+ * const result = await measureQuery(
107
+ * () => db.select().from(users).where(eq(users.id, 1)),
108
+ * 'SELECT * FROM users WHERE id = ?',
109
+ * [1],
110
+ * { logger }
111
+ * )
112
+ * ```
113
+ */
114
+ export declare function measureQuery<T>(queryFn: () => Promise<T>, query: string, params?: unknown[], options?: VestigDrizzleLoggerOptions): Promise<T>;
115
+ //# sourceMappingURL=drizzle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../../src/db/drizzle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5D;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IACjE;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,aAAa,CAiDjG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,0BAA+B;iBAO5D,MAAM,UAAU,OAAO,EAAE,cAAc,MAAM,KAAG,IAAI;;EAsBxE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,CAAC,EACnC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,OAAO,EAAO,EACtB,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,CAAC,CAAC,CAcZ"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Drizzle Integration
3
+ *
4
+ * Provides a custom logger for Drizzle ORM that integrates with Vestig.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // lib/db.ts
9
+ * import { drizzle } from 'drizzle-orm/postgres-js'
10
+ * import postgres from 'postgres'
11
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
12
+ *
13
+ * const client = postgres(process.env.DATABASE_URL!)
14
+ * export const db = drizzle(client, {
15
+ * logger: createVestigDrizzleLogger(),
16
+ * })
17
+ * ```
18
+ *
19
+ * @packageDocumentation
20
+ */
21
+ import { createQueryLogEntry, formatDuration, logQuery, mergeConfig } from './query-logger';
22
+ /**
23
+ * Create a Drizzle-compatible logger that integrates with Vestig
24
+ *
25
+ * @example Basic usage
26
+ * ```typescript
27
+ * import { drizzle } from 'drizzle-orm/postgres-js'
28
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
29
+ *
30
+ * const db = drizzle(client, {
31
+ * logger: createVestigDrizzleLogger(),
32
+ * })
33
+ * ```
34
+ *
35
+ * @example With Vestig logger
36
+ * ```typescript
37
+ * import { createLogger } from 'vestig'
38
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
39
+ *
40
+ * const logger = createLogger({ namespace: 'app' })
41
+ *
42
+ * const db = drizzle(client, {
43
+ * logger: createVestigDrizzleLogger({
44
+ * logger,
45
+ * slowQueryThreshold: 200,
46
+ * logLevel: 'slow', // Only log slow queries
47
+ * }),
48
+ * })
49
+ * ```
50
+ *
51
+ * @example With custom callback
52
+ * ```typescript
53
+ * const db = drizzle(client, {
54
+ * logger: createVestigDrizzleLogger({
55
+ * onQuery: (entry) => {
56
+ * // Send to analytics, APM, etc.
57
+ * if (entry.isSlow) {
58
+ * sendToAPM(entry)
59
+ * }
60
+ * },
61
+ * }),
62
+ * })
63
+ * ```
64
+ */
65
+ export function createVestigDrizzleLogger(options = {}) {
66
+ const config = mergeConfig(options);
67
+ const logger = options.logger;
68
+ // Track query start times for duration calculation
69
+ const queryTimings = new Map();
70
+ return {
71
+ logQuery(query, params) {
72
+ // Drizzle calls logQuery at the start, so we need to track timing ourselves
73
+ // For simplicity, we'll estimate duration as 0 and rely on actual timing if available
74
+ // In practice, Drizzle doesn't provide duration, so we measure it
75
+ const startTime = performance.now();
76
+ const queryKey = `${query}-${JSON.stringify(params)}-${startTime}`;
77
+ // Store start time
78
+ queryTimings.set(queryKey, startTime);
79
+ // Use setTimeout to estimate duration (hacky but works for logging purposes)
80
+ // In real usage, the actual query runs after logQuery is called
81
+ setTimeout(() => {
82
+ const duration = performance.now() - startTime;
83
+ queryTimings.delete(queryKey);
84
+ const entry = createQueryLogEntry(query, params, duration, config);
85
+ if (logger) {
86
+ const nsLogger = logger.child(config.namespace);
87
+ logQuery(nsLogger, entry, config);
88
+ }
89
+ else {
90
+ // Fallback to console
91
+ if (entry.isSlow) {
92
+ console.warn(`[${config.namespace}] Slow query:`, entry.query, `(${formatDuration(entry.duration)})`);
93
+ }
94
+ else if (config.logLevel === 'all') {
95
+ console.debug(`[${config.namespace}]`, entry.query, `(${formatDuration(entry.duration)})`);
96
+ }
97
+ }
98
+ }, 0);
99
+ },
100
+ };
101
+ }
102
+ /**
103
+ * Create a Drizzle logger that measures actual query duration
104
+ *
105
+ * This is a more accurate version that wraps your database client
106
+ * to measure actual query execution time.
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * import { drizzle } from 'drizzle-orm/postgres-js'
111
+ * import { withVestigDrizzle } from '@vestig/next/db'
112
+ *
113
+ * const client = postgres(process.env.DATABASE_URL!)
114
+ * const { db, logger } = withVestigDrizzle(
115
+ * (logger) => drizzle(client, { logger }),
116
+ * { slowQueryThreshold: 100 }
117
+ * )
118
+ * ```
119
+ */
120
+ export function createDrizzleQueryLogger(options = {}) {
121
+ const config = mergeConfig(options);
122
+ const vestigLogger = options.logger;
123
+ /**
124
+ * Log a query with explicit timing
125
+ */
126
+ function log(query, params, durationMs) {
127
+ const entry = createQueryLogEntry(query, params, durationMs, config);
128
+ if (vestigLogger) {
129
+ const nsLogger = vestigLogger.child(config.namespace);
130
+ logQuery(nsLogger, entry, config);
131
+ }
132
+ else {
133
+ if (entry.isSlow) {
134
+ console.warn(`[${config.namespace}] Slow query:`, entry.query, `(${formatDuration(entry.duration)})`);
135
+ }
136
+ else if (config.logLevel === 'all') {
137
+ console.debug(`[${config.namespace}]`, entry.query, `(${formatDuration(entry.duration)})`);
138
+ }
139
+ }
140
+ config.onQuery(entry);
141
+ }
142
+ return { log, config };
143
+ }
144
+ /**
145
+ * Utility to wrap any async function with query timing
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * import { measureQuery } from '@vestig/next/db'
150
+ *
151
+ * const result = await measureQuery(
152
+ * () => db.select().from(users).where(eq(users.id, 1)),
153
+ * 'SELECT * FROM users WHERE id = ?',
154
+ * [1],
155
+ * { logger }
156
+ * )
157
+ * ```
158
+ */
159
+ export async function measureQuery(queryFn, query, params = [], options = {}) {
160
+ const { log } = createDrizzleQueryLogger(options);
161
+ const start = performance.now();
162
+ try {
163
+ const result = await queryFn();
164
+ const duration = performance.now() - start;
165
+ log(query, params, duration);
166
+ return result;
167
+ }
168
+ catch (error) {
169
+ const duration = performance.now() - start;
170
+ log(query, params, duration);
171
+ throw error;
172
+ }
173
+ }
174
+ //# sourceMappingURL=drizzle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../../src/db/drizzle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @vestig/next/db - Database Query Logging
3
+ *
4
+ * This module provides database query logging integrations
5
+ * for Prisma and Drizzle ORMs.
6
+ *
7
+ * @example Prisma Integration
8
+ * ```typescript
9
+ * // lib/db.ts
10
+ * import { PrismaClient } from '@prisma/client'
11
+ * import { withVestigPrisma, createPrismaLogConfig } from '@vestig/next/db'
12
+ * import { createLogger } from 'vestig'
13
+ *
14
+ * const logger = createLogger({ namespace: 'app' })
15
+ *
16
+ * const prisma = withVestigPrisma(
17
+ * new PrismaClient({ log: createPrismaLogConfig() }),
18
+ * { logger, slowQueryThreshold: 100 }
19
+ * )
20
+ *
21
+ * export { prisma }
22
+ * ```
23
+ *
24
+ * @example Drizzle Integration
25
+ * ```typescript
26
+ * // lib/db.ts
27
+ * import { drizzle } from 'drizzle-orm/postgres-js'
28
+ * import postgres from 'postgres'
29
+ * import { createVestigDrizzleLogger } from '@vestig/next/db'
30
+ * import { createLogger } from 'vestig'
31
+ *
32
+ * const logger = createLogger({ namespace: 'app' })
33
+ * const client = postgres(process.env.DATABASE_URL!)
34
+ *
35
+ * export const db = drizzle(client, {
36
+ * logger: createVestigDrizzleLogger({
37
+ * logger,
38
+ * slowQueryThreshold: 100,
39
+ * }),
40
+ * })
41
+ * ```
42
+ *
43
+ * @packageDocumentation
44
+ */
45
+ export { withVestigPrisma, createPrismaQueryHandler, createPrismaLogConfig, type VestigPrismaOptions, } from './prisma';
46
+ export { createVestigDrizzleLogger, createDrizzleQueryLogger, measureQuery, type VestigDrizzleLoggerOptions, } from './drizzle';
47
+ export { formatDuration, createQueryLogEntry, logQuery, mergeConfig } from './query-logger';
48
+ export type { QueryLogEntry, DbLoggerConfig, PrismaQueryEvent, PrismaLogEvent, DrizzleLogger, } from './types';
49
+ //# sourceMappingURL=index.d.ts.map