@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
@@ -0,0 +1,72 @@
1
+ /**
2
+ * VestigMetrics Component
3
+ *
4
+ * Drop-in component for capturing Core Web Vitals and route metrics.
5
+ * Add this to your root layout for automatic performance monitoring.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // app/layout.tsx
10
+ * import { VestigMetrics } from '@vestig/next/metrics'
11
+ *
12
+ * export default function RootLayout({ children }) {
13
+ * return (
14
+ * <html>
15
+ * <body>
16
+ * {children}
17
+ * <VestigMetrics
18
+ * sampleRate={0.1} // 10% sampling in production
19
+ * reportEndpoint="/api/vestig/metrics"
20
+ * />
21
+ * </body>
22
+ * </html>
23
+ * )
24
+ * }
25
+ * ```
26
+ *
27
+ * @packageDocumentation
28
+ */
29
+ import type { VestigMetricsConfig } from './types';
30
+ /**
31
+ * Props for VestigMetrics component
32
+ */
33
+ export interface VestigMetricsProps extends VestigMetricsConfig {
34
+ }
35
+ /**
36
+ * VestigMetrics - Core Web Vitals and Route Metrics Component
37
+ *
38
+ * This component automatically captures:
39
+ * - **LCP** (Largest Contentful Paint) - Loading performance
40
+ * - **CLS** (Cumulative Layout Shift) - Visual stability
41
+ * - **INP** (Interaction to Next Paint) - Interactivity
42
+ * - **TTFB** (Time to First Byte) - Server responsiveness
43
+ * - **FCP** (First Contentful Paint) - Perceived load speed
44
+ * - **Route metrics** - Navigation and hydration times
45
+ *
46
+ * @example Basic usage
47
+ * ```tsx
48
+ * <VestigMetrics />
49
+ * ```
50
+ *
51
+ * @example With configuration
52
+ * ```tsx
53
+ * <VestigMetrics
54
+ * sampleRate={0.1} // 10% of users
55
+ * reportEndpoint="/api/metrics"
56
+ * reportPoorImmediately // Alert on poor metrics
57
+ * captureRouteMetrics // Track route changes
58
+ * debug={process.env.NODE_ENV === 'development'}
59
+ * />
60
+ * ```
61
+ *
62
+ * @example Production setup
63
+ * ```tsx
64
+ * <VestigMetrics
65
+ * enabled={process.env.NODE_ENV === 'production'}
66
+ * sampleRate={0.1}
67
+ * reportPoorImmediately
68
+ * />
69
+ * ```
70
+ */
71
+ export declare function VestigMetrics({ enabled, sampleRate, reportEndpoint, reportPoorImmediately, captureRouteMetrics, debug, }: VestigMetricsProps): null;
72
+ //# sourceMappingURL=web-vitals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-vitals.d.ts","sourceRoot":"","sources":["../../src/metrics/web-vitals.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;CAAG;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,aAAa,CAAC,EAC7B,OAAc,EACd,UAAU,EACV,cAAsC,EACtC,qBAA4B,EAC5B,mBAA0B,EAC1B,KAAa,GACb,EAAE,kBAAkB,GAAG,IAAI,CAwB3B"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * VestigMetrics Component
3
+ *
4
+ * Drop-in component for capturing Core Web Vitals and route metrics.
5
+ * Add this to your root layout for automatic performance monitoring.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * // app/layout.tsx
10
+ * import { VestigMetrics } from '@vestig/next/metrics'
11
+ *
12
+ * export default function RootLayout({ children }) {
13
+ * return (
14
+ * <html>
15
+ * <body>
16
+ * {children}
17
+ * <VestigMetrics
18
+ * sampleRate={0.1} // 10% sampling in production
19
+ * reportEndpoint="/api/vestig/metrics"
20
+ * />
21
+ * </body>
22
+ * </html>
23
+ * )
24
+ * }
25
+ * ```
26
+ *
27
+ * @packageDocumentation
28
+ */
29
+ 'use client';
30
+ import { useRouteMetrics } from './hooks/use-route-metrics';
31
+ import { useWebVitals } from './hooks/use-web-vitals';
32
+ /**
33
+ * VestigMetrics - Core Web Vitals and Route Metrics Component
34
+ *
35
+ * This component automatically captures:
36
+ * - **LCP** (Largest Contentful Paint) - Loading performance
37
+ * - **CLS** (Cumulative Layout Shift) - Visual stability
38
+ * - **INP** (Interaction to Next Paint) - Interactivity
39
+ * - **TTFB** (Time to First Byte) - Server responsiveness
40
+ * - **FCP** (First Contentful Paint) - Perceived load speed
41
+ * - **Route metrics** - Navigation and hydration times
42
+ *
43
+ * @example Basic usage
44
+ * ```tsx
45
+ * <VestigMetrics />
46
+ * ```
47
+ *
48
+ * @example With configuration
49
+ * ```tsx
50
+ * <VestigMetrics
51
+ * sampleRate={0.1} // 10% of users
52
+ * reportEndpoint="/api/metrics"
53
+ * reportPoorImmediately // Alert on poor metrics
54
+ * captureRouteMetrics // Track route changes
55
+ * debug={process.env.NODE_ENV === 'development'}
56
+ * />
57
+ * ```
58
+ *
59
+ * @example Production setup
60
+ * ```tsx
61
+ * <VestigMetrics
62
+ * enabled={process.env.NODE_ENV === 'production'}
63
+ * sampleRate={0.1}
64
+ * reportPoorImmediately
65
+ * />
66
+ * ```
67
+ */
68
+ export function VestigMetrics({ enabled = true, sampleRate, reportEndpoint = '/api/vestig/metrics', reportPoorImmediately = true, captureRouteMetrics = true, debug = false, }) {
69
+ // Determine sample rate based on environment if not specified
70
+ const effectiveSampleRate = sampleRate ??
71
+ (typeof window !== 'undefined' && process.env.NODE_ENV === 'production' ? 0.1 : 1.0);
72
+ // Capture Core Web Vitals
73
+ useWebVitals({
74
+ enabled,
75
+ sampleRate: effectiveSampleRate,
76
+ reportEndpoint,
77
+ reportPoorImmediately,
78
+ debug,
79
+ });
80
+ // Capture route metrics
81
+ useRouteMetrics({
82
+ enabled: enabled && captureRouteMetrics,
83
+ reportEndpoint,
84
+ debug,
85
+ });
86
+ // This component doesn't render anything
87
+ return null;
88
+ }
89
+ //# sourceMappingURL=web-vitals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-vitals.js","sourceRoot":"","sources":["../../src/metrics/web-vitals.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,YAAY,CAAA;AAEZ,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAQrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,aAAa,CAAC,EAC7B,OAAO,GAAG,IAAI,EACd,UAAU,EACV,cAAc,GAAG,qBAAqB,EACtC,qBAAqB,GAAG,IAAI,EAC5B,mBAAmB,GAAG,IAAI,EAC1B,KAAK,GAAG,KAAK,GACO;IACpB,8DAA8D;IAC9D,MAAM,mBAAmB,GACxB,UAAU;QACV,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAErF,0BAA0B;IAC1B,YAAY,CAAC;QACZ,OAAO;QACP,UAAU,EAAE,mBAAmB;QAC/B,cAAc;QACd,qBAAqB;QACrB,KAAK;KACL,CAAC,CAAA;IAEF,wBAAwB;IACxB,eAAe,CAAC;QACf,OAAO,EAAE,OAAO,IAAI,mBAAmB;QACvC,cAAc;QACd,KAAK;KACL,CAAC,CAAA;IAEF,yCAAyC;IACzC,OAAO,IAAI,CAAA;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vestig/next",
3
- "version": "0.6.0",
3
+ "version": "0.9.0",
4
4
  "description": "First-class Next.js 15+ integration for vestig logging library. Zero boilerplate, automatic request correlation, full type safety.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,11 +25,29 @@
25
25
  "./config": {
26
26
  "types": "./dist/config/index.d.ts",
27
27
  "import": "./dist/config/index.js"
28
+ },
29
+ "./dev": {
30
+ "types": "./dist/dev/index.d.ts",
31
+ "import": "./dist/dev/index.js"
32
+ },
33
+ "./dev/api": {
34
+ "types": "./dist/dev/api/index.d.ts",
35
+ "import": "./dist/dev/api/index.js"
36
+ },
37
+ "./metrics": {
38
+ "types": "./dist/metrics/index.d.ts",
39
+ "import": "./dist/metrics/index.js"
40
+ },
41
+ "./error": {
42
+ "types": "./dist/error/index.d.ts",
43
+ "import": "./dist/error/index.js"
44
+ },
45
+ "./db": {
46
+ "types": "./dist/db/index.d.ts",
47
+ "import": "./dist/db/index.js"
28
48
  }
29
49
  },
30
- "files": [
31
- "dist"
32
- ],
50
+ "files": ["dist"],
33
51
  "sideEffects": false,
34
52
  "scripts": {
35
53
  "build": "tsc",
@@ -68,17 +86,21 @@
68
86
  "peerDependencies": {
69
87
  "next": ">=15.0.0",
70
88
  "react": ">=19.0.0",
89
+ "react-dom": ">=19.0.0",
71
90
  "vestig": ">=0.2.0"
72
91
  },
73
92
  "dependencies": {
74
- "vestig": "workspace:*"
93
+ "vestig": "workspace:*",
94
+ "web-vitals": "^4.2.4"
75
95
  },
76
96
  "devDependencies": {
77
97
  "typescript": "catalog:",
78
98
  "@types/node": "catalog:",
79
99
  "@types/react": "catalog:",
100
+ "@types/react-dom": "catalog:",
80
101
  "next": "catalog:",
81
- "react": "catalog:"
102
+ "react": "catalog:",
103
+ "react-dom": "catalog:"
82
104
  },
83
105
  "engines": {
84
106
  "node": ">=18"