tailwind-styled-v4 5.0.26 → 5.0.28

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 (89) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +575 -575
  3. package/dist/analyzer.js.map +1 -1
  4. package/dist/analyzer.mjs.map +1 -1
  5. package/dist/animate.js.map +1 -1
  6. package/dist/animate.mjs.map +1 -1
  7. package/dist/atomic.js.map +1 -1
  8. package/dist/atomic.mjs.map +1 -1
  9. package/dist/cli.js +2 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/cli.mjs +2 -2
  12. package/dist/cli.mjs.map +1 -1
  13. package/dist/compiler.js +2 -1
  14. package/dist/compiler.js.map +1 -1
  15. package/dist/compiler.mjs +2 -1
  16. package/dist/compiler.mjs.map +1 -1
  17. package/dist/dashboard.d.mts +69 -69
  18. package/dist/dashboard.d.ts +69 -69
  19. package/dist/dashboard.js.map +1 -1
  20. package/dist/dashboard.mjs.map +1 -1
  21. package/dist/devtools.js.map +1 -1
  22. package/dist/devtools.mjs.map +1 -1
  23. package/dist/engine.js +26 -5
  24. package/dist/engine.js.map +1 -1
  25. package/dist/engine.mjs +26 -5
  26. package/dist/engine.mjs.map +1 -1
  27. package/dist/index.browser.mjs +16 -16
  28. package/dist/index.browser.mjs.map +1 -1
  29. package/dist/index.d.mts +4 -4
  30. package/dist/index.d.ts +4 -4
  31. package/dist/index.js +51 -28
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +51 -28
  34. package/dist/index.mjs.map +1 -1
  35. package/dist/next.js +26 -5
  36. package/dist/next.js.map +1 -1
  37. package/dist/next.mjs +26 -5
  38. package/dist/next.mjs.map +1 -1
  39. package/dist/plugin-api.js.map +1 -1
  40. package/dist/plugin-api.mjs.map +1 -1
  41. package/dist/plugin-registry.js.map +1 -1
  42. package/dist/plugin-registry.mjs.map +1 -1
  43. package/dist/plugin.js.map +1 -1
  44. package/dist/plugin.mjs.map +1 -1
  45. package/dist/preset.js.map +1 -1
  46. package/dist/preset.mjs.map +1 -1
  47. package/dist/rspack.js.map +1 -1
  48. package/dist/rspack.mjs.map +1 -1
  49. package/dist/runtime-css.js.map +1 -1
  50. package/dist/runtime-css.mjs.map +1 -1
  51. package/dist/runtime.js.map +1 -1
  52. package/dist/runtime.mjs.map +1 -1
  53. package/dist/scanner.js.map +1 -1
  54. package/dist/scanner.mjs.map +1 -1
  55. package/dist/shared.js +26 -5
  56. package/dist/shared.js.map +1 -1
  57. package/dist/shared.mjs +26 -5
  58. package/dist/shared.mjs.map +1 -1
  59. package/dist/storybook-addon.js.map +1 -1
  60. package/dist/storybook-addon.mjs.map +1 -1
  61. package/dist/svelte.js.map +1 -1
  62. package/dist/svelte.mjs.map +1 -1
  63. package/dist/syntax.js.map +1 -1
  64. package/dist/syntax.mjs.map +1 -1
  65. package/dist/testing.js.map +1 -1
  66. package/dist/testing.mjs.map +1 -1
  67. package/dist/theme.js.map +1 -1
  68. package/dist/theme.mjs.map +1 -1
  69. package/dist/turbopackLoader.js +2 -1
  70. package/dist/turbopackLoader.js.map +1 -1
  71. package/dist/turbopackLoader.mjs +2 -1
  72. package/dist/turbopackLoader.mjs.map +1 -1
  73. package/dist/tw.js +2 -2
  74. package/dist/tw.js.map +1 -1
  75. package/dist/tw.mjs +2 -2
  76. package/dist/tw.mjs.map +1 -1
  77. package/dist/vite.js +26 -5
  78. package/dist/vite.js.map +1 -1
  79. package/dist/vite.mjs +26 -5
  80. package/dist/vite.mjs.map +1 -1
  81. package/dist/vue.js.map +1 -1
  82. package/dist/vue.mjs.map +1 -1
  83. package/dist/webpackLoader.js +2 -1
  84. package/dist/webpackLoader.js.map +1 -1
  85. package/dist/webpackLoader.mjs +2 -1
  86. package/dist/webpackLoader.mjs.map +1 -1
  87. package/native/tailwind-styled-native.node +0 -0
  88. package/package.json +296 -289
  89. package/native/tailwind-styled-native.win32-x64-msvc.node +0 -0
@@ -1,74 +1,74 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
 
3
- interface DashboardMemoryMetrics {
4
- rss?: number
5
- heapUsed?: number
6
- heapTotal?: number
7
- [key: string]: unknown
8
- }
9
-
10
- interface DashboardMetrics {
11
- generatedAt: string
12
- buildMs: number | null
13
- scanMs: number | null
14
- analyzeMs: number | null
15
- compileMs: number | null
16
- memoryMb: DashboardMemoryMetrics | null
17
- classCount: number | null
18
- fileCount: number | null
19
- cssBytes: number | null
20
- packageCount: number | null
21
- mode: "idle" | "jit" | "build" | "watch" | "error" | null
22
- error?: string
23
- lastEventType?: string
24
- eventsReceived?: number
25
- eventsProcessed?: number
26
- batchesProcessed?: number
27
- incrementalUpdates?: number
28
- fullRescans?: number
29
- skippedLargeFiles?: number
30
- queueMaxSize?: number
31
- lastBuildMs?: number
32
- avgBuildMs?: number
33
- [key: string]: unknown
34
- }
35
-
36
- interface DashboardHealthIssue {
37
- severity: "error" | "warning"
38
- message: string
39
- }
40
-
41
- interface DashboardMetricsSummary {
42
- workspace: {
43
- totalPackages: number
44
- totalFiles: number
45
- totalClasses: number
46
- lastScanDurationMs: number
47
- lastBuildDurationMs: number
48
- }
49
- cache: {
50
- hitRate: number
51
- totalEntries: number
52
- memoryUsageMb: number
53
- }
54
- pipeline: {
55
- scanDurationMs: number
56
- analyzeDurationMs: number
57
- compileDurationMs: number
58
- totalDurationMs: number
59
- }
60
- health: {
61
- status: "healthy" | "degraded" | "unhealthy"
62
- issues: DashboardHealthIssue[]
63
- }
64
- }
65
-
66
- declare const currentMetrics: DashboardMetrics
67
- declare const history: DashboardMetrics[]
68
- declare const events: EventEmitter
69
- declare function normalizeMetrics(data: Record<string, unknown>): DashboardMetrics
70
- declare function updateMetrics(data: Record<string, unknown>): DashboardMetrics
71
- declare function resetHistory(): void
3
+ interface DashboardMemoryMetrics {
4
+ rss?: number
5
+ heapUsed?: number
6
+ heapTotal?: number
7
+ [key: string]: unknown
8
+ }
9
+
10
+ interface DashboardMetrics {
11
+ generatedAt: string
12
+ buildMs: number | null
13
+ scanMs: number | null
14
+ analyzeMs: number | null
15
+ compileMs: number | null
16
+ memoryMb: DashboardMemoryMetrics | null
17
+ classCount: number | null
18
+ fileCount: number | null
19
+ cssBytes: number | null
20
+ packageCount: number | null
21
+ mode: "idle" | "jit" | "build" | "watch" | "error" | null
22
+ error?: string
23
+ lastEventType?: string
24
+ eventsReceived?: number
25
+ eventsProcessed?: number
26
+ batchesProcessed?: number
27
+ incrementalUpdates?: number
28
+ fullRescans?: number
29
+ skippedLargeFiles?: number
30
+ queueMaxSize?: number
31
+ lastBuildMs?: number
32
+ avgBuildMs?: number
33
+ [key: string]: unknown
34
+ }
35
+
36
+ interface DashboardHealthIssue {
37
+ severity: "error" | "warning"
38
+ message: string
39
+ }
40
+
41
+ interface DashboardMetricsSummary {
42
+ workspace: {
43
+ totalPackages: number
44
+ totalFiles: number
45
+ totalClasses: number
46
+ lastScanDurationMs: number
47
+ lastBuildDurationMs: number
48
+ }
49
+ cache: {
50
+ hitRate: number
51
+ totalEntries: number
52
+ memoryUsageMb: number
53
+ }
54
+ pipeline: {
55
+ scanDurationMs: number
56
+ analyzeDurationMs: number
57
+ compileDurationMs: number
58
+ totalDurationMs: number
59
+ }
60
+ health: {
61
+ status: "healthy" | "degraded" | "unhealthy"
62
+ issues: DashboardHealthIssue[]
63
+ }
64
+ }
65
+
66
+ declare const currentMetrics: DashboardMetrics
67
+ declare const history: DashboardMetrics[]
68
+ declare const events: EventEmitter
69
+ declare function normalizeMetrics(data: Record<string, unknown>): DashboardMetrics
70
+ declare function updateMetrics(data: Record<string, unknown>): DashboardMetrics
71
+ declare function resetHistory(): void
72
72
  declare function getMetricsSummary(): DashboardMetricsSummary
73
73
 
74
74
  export { currentMetrics, events, getMetricsSummary, history, normalizeMetrics, resetHistory, updateMetrics };
@@ -1,74 +1,74 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
 
3
- interface DashboardMemoryMetrics {
4
- rss?: number
5
- heapUsed?: number
6
- heapTotal?: number
7
- [key: string]: unknown
8
- }
9
-
10
- interface DashboardMetrics {
11
- generatedAt: string
12
- buildMs: number | null
13
- scanMs: number | null
14
- analyzeMs: number | null
15
- compileMs: number | null
16
- memoryMb: DashboardMemoryMetrics | null
17
- classCount: number | null
18
- fileCount: number | null
19
- cssBytes: number | null
20
- packageCount: number | null
21
- mode: "idle" | "jit" | "build" | "watch" | "error" | null
22
- error?: string
23
- lastEventType?: string
24
- eventsReceived?: number
25
- eventsProcessed?: number
26
- batchesProcessed?: number
27
- incrementalUpdates?: number
28
- fullRescans?: number
29
- skippedLargeFiles?: number
30
- queueMaxSize?: number
31
- lastBuildMs?: number
32
- avgBuildMs?: number
33
- [key: string]: unknown
34
- }
35
-
36
- interface DashboardHealthIssue {
37
- severity: "error" | "warning"
38
- message: string
39
- }
40
-
41
- interface DashboardMetricsSummary {
42
- workspace: {
43
- totalPackages: number
44
- totalFiles: number
45
- totalClasses: number
46
- lastScanDurationMs: number
47
- lastBuildDurationMs: number
48
- }
49
- cache: {
50
- hitRate: number
51
- totalEntries: number
52
- memoryUsageMb: number
53
- }
54
- pipeline: {
55
- scanDurationMs: number
56
- analyzeDurationMs: number
57
- compileDurationMs: number
58
- totalDurationMs: number
59
- }
60
- health: {
61
- status: "healthy" | "degraded" | "unhealthy"
62
- issues: DashboardHealthIssue[]
63
- }
64
- }
65
-
66
- declare const currentMetrics: DashboardMetrics
67
- declare const history: DashboardMetrics[]
68
- declare const events: EventEmitter
69
- declare function normalizeMetrics(data: Record<string, unknown>): DashboardMetrics
70
- declare function updateMetrics(data: Record<string, unknown>): DashboardMetrics
71
- declare function resetHistory(): void
3
+ interface DashboardMemoryMetrics {
4
+ rss?: number
5
+ heapUsed?: number
6
+ heapTotal?: number
7
+ [key: string]: unknown
8
+ }
9
+
10
+ interface DashboardMetrics {
11
+ generatedAt: string
12
+ buildMs: number | null
13
+ scanMs: number | null
14
+ analyzeMs: number | null
15
+ compileMs: number | null
16
+ memoryMb: DashboardMemoryMetrics | null
17
+ classCount: number | null
18
+ fileCount: number | null
19
+ cssBytes: number | null
20
+ packageCount: number | null
21
+ mode: "idle" | "jit" | "build" | "watch" | "error" | null
22
+ error?: string
23
+ lastEventType?: string
24
+ eventsReceived?: number
25
+ eventsProcessed?: number
26
+ batchesProcessed?: number
27
+ incrementalUpdates?: number
28
+ fullRescans?: number
29
+ skippedLargeFiles?: number
30
+ queueMaxSize?: number
31
+ lastBuildMs?: number
32
+ avgBuildMs?: number
33
+ [key: string]: unknown
34
+ }
35
+
36
+ interface DashboardHealthIssue {
37
+ severity: "error" | "warning"
38
+ message: string
39
+ }
40
+
41
+ interface DashboardMetricsSummary {
42
+ workspace: {
43
+ totalPackages: number
44
+ totalFiles: number
45
+ totalClasses: number
46
+ lastScanDurationMs: number
47
+ lastBuildDurationMs: number
48
+ }
49
+ cache: {
50
+ hitRate: number
51
+ totalEntries: number
52
+ memoryUsageMb: number
53
+ }
54
+ pipeline: {
55
+ scanDurationMs: number
56
+ analyzeDurationMs: number
57
+ compileDurationMs: number
58
+ totalDurationMs: number
59
+ }
60
+ health: {
61
+ status: "healthy" | "degraded" | "unhealthy"
62
+ issues: DashboardHealthIssue[]
63
+ }
64
+ }
65
+
66
+ declare const currentMetrics: DashboardMetrics
67
+ declare const history: DashboardMetrics[]
68
+ declare const events: EventEmitter
69
+ declare function normalizeMetrics(data: Record<string, unknown>): DashboardMetrics
70
+ declare function updateMetrics(data: Record<string, unknown>): DashboardMetrics
71
+ declare function resetHistory(): void
72
72
  declare function getMetricsSummary(): DashboardMetricsSummary
73
73
 
74
74
  export { currentMetrics, events, getMetricsSummary, history, normalizeMetrics, resetHistory, updateMetrics };
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/infrastructure/dashboard/src/state.ts"],"names":["z","EventEmitter"],"mappings":"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","file":"dashboard.js","sourcesContent":["import { EventEmitter } from \"node:events\"\r\n\r\nimport { z } from \"zod\"\r\n\r\nconst MAX_HISTORY = 100\r\n\r\nconst MemoryMetricsSchema = z\r\n .object({\r\n rss: z.number().nonnegative().optional(),\r\n heapUsed: z.number().nonnegative().optional(),\r\n heapTotal: z.number().nonnegative().optional(),\r\n })\r\n .passthrough()\r\n\r\nconst DashboardMetricsSchema = z\r\n .object({\r\n generatedAt: z.string().min(1).default(() => new Date().toISOString()),\r\n buildMs: z.number().nonnegative().nullable().default(null),\r\n scanMs: z.number().nonnegative().nullable().default(null),\r\n analyzeMs: z.number().nonnegative().nullable().default(null),\r\n compileMs: z.number().nonnegative().nullable().default(null),\r\n memoryMb: MemoryMetricsSchema.nullable().default(null),\r\n classCount: z.number().int().nonnegative().nullable().default(null),\r\n fileCount: z.number().int().nonnegative().nullable().default(null),\r\n cssBytes: z.number().int().nonnegative().nullable().default(null),\r\n packageCount: z.number().int().nonnegative().nullable().default(null),\r\n mode: z.enum([\"idle\", \"jit\", \"build\", \"watch\", \"error\"]).nullable().default(\"idle\"),\r\n error: z.string().optional(),\r\n lastEventType: z.string().optional(),\r\n eventsReceived: z.number().int().nonnegative().optional(),\r\n eventsProcessed: z.number().int().nonnegative().optional(),\r\n batchesProcessed: z.number().int().nonnegative().optional(),\r\n incrementalUpdates: z.number().int().nonnegative().optional(),\r\n fullRescans: z.number().int().nonnegative().optional(),\r\n skippedLargeFiles: z.number().int().nonnegative().optional(),\r\n queueMaxSize: z.number().int().nonnegative().optional(),\r\n lastBuildMs: z.number().nonnegative().optional(),\r\n avgBuildMs: z.number().nonnegative().optional(),\r\n })\r\n .passthrough()\r\n\r\nfunction createDefaultMetrics() {\r\n return DashboardMetricsSchema.parse({})\r\n}\r\n\r\nfunction formatIssues(error: import('zod').ZodError) {\r\n return error.issues.map((issue: import('zod').ZodIssue) => `${issue.path.join(\".\") || \"<root>\"}: ${issue.message}`).join(\"; \")\r\n}\r\n\r\nexport const currentMetrics = createDefaultMetrics()\r\nexport const history: ReturnType<typeof createDefaultMetrics>[] = []\r\nexport const events = new EventEmitter()\r\n\r\nexport function normalizeMetrics(data: Record<string, unknown>) {\r\n const parsed = DashboardMetricsSchema.safeParse({\r\n ...currentMetrics,\r\n ...data,\r\n })\r\n\r\n if (parsed.success) {\r\n return parsed.data\r\n }\r\n\r\n return {\r\n ...createDefaultMetrics(),\r\n generatedAt: new Date().toISOString(),\r\n mode: \"error\",\r\n error: formatIssues(parsed.error),\r\n }\r\n}\r\n\r\nexport function updateMetrics(data: Record<string, unknown>) {\r\n const next = normalizeMetrics(data)\r\n Object.assign(currentMetrics, next as object, { generatedAt: new Date().toISOString() })\r\n history.push({ ...currentMetrics } as typeof currentMetrics)\r\n if (history.length > MAX_HISTORY) history.shift()\r\n events.emit(\"update\", currentMetrics)\r\n return currentMetrics\r\n}\r\n\r\nexport function resetHistory() {\r\n history.length = 0\r\n events.emit(\"reset\")\r\n}\r\n\r\nexport function getMetricsSummary() {\r\n const issues = []\r\n\r\n if (currentMetrics.error) {\r\n issues.push({\r\n severity: \"error\",\r\n message: currentMetrics.error,\r\n })\r\n }\r\n\r\n if ((currentMetrics.buildMs ?? 0) > 2000) {\r\n issues.push({\r\n severity: \"warning\",\r\n message: `Build duration is elevated at ${currentMetrics.buildMs}ms.`,\r\n })\r\n }\r\n\r\n if ((currentMetrics.scanMs ?? 0) > 1000) {\r\n issues.push({\r\n severity: \"warning\",\r\n message: `Scan duration is elevated at ${currentMetrics.scanMs}ms.`,\r\n })\r\n }\r\n\r\n if ((currentMetrics.memoryMb?.heapUsed ?? 0) > 500) {\r\n issues.push({\r\n severity: \"warning\",\r\n message: `Heap usage is elevated at ${currentMetrics.memoryMb?.heapUsed}MB.`,\r\n })\r\n }\r\n\r\n const status =\r\n currentMetrics.mode === \"error\" || issues.some((issue) => issue.severity === \"error\")\r\n ? \"unhealthy\"\r\n : issues.some((issue) => issue.severity === \"warning\")\r\n ? \"degraded\"\r\n : \"healthy\"\r\n\r\n return {\r\n workspace: {\r\n totalPackages: currentMetrics.packageCount ?? 0,\r\n totalFiles: currentMetrics.fileCount ?? 0,\r\n totalClasses: currentMetrics.classCount ?? 0,\r\n lastScanDurationMs: currentMetrics.scanMs ?? 0,\r\n lastBuildDurationMs: currentMetrics.buildMs ?? 0,\r\n },\r\n cache: {\r\n hitRate:\r\n (currentMetrics.eventsReceived ?? 0) > 0\r\n ? Math.max(\r\n 0,\r\n Math.min(\r\n 1,\r\n (currentMetrics.eventsProcessed ?? 0) / Math.max(currentMetrics.eventsReceived ?? 1, 1)\r\n )\r\n )\r\n : 0,\r\n totalEntries: history.length,\r\n memoryUsageMb: currentMetrics.memoryMb?.heapUsed ?? 0,\r\n },\r\n pipeline: {\r\n scanDurationMs: currentMetrics.scanMs ?? 0,\r\n analyzeDurationMs: currentMetrics.analyzeMs ?? 0,\r\n compileDurationMs: currentMetrics.compileMs ?? 0,\r\n totalDurationMs:\r\n (currentMetrics.scanMs ?? 0) +\r\n (currentMetrics.analyzeMs ?? 0) +\r\n (currentMetrics.compileMs ?? 0),\r\n },\r\n health: {\r\n status,\r\n issues,\r\n },\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../packages/infrastructure/dashboard/src/state.ts"],"names":["z","EventEmitter"],"mappings":"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","file":"dashboard.js","sourcesContent":["import { EventEmitter } from \"node:events\"\n\nimport { z } from \"zod\"\n\nconst MAX_HISTORY = 100\n\nconst MemoryMetricsSchema = z\n .object({\n rss: z.number().nonnegative().optional(),\n heapUsed: z.number().nonnegative().optional(),\n heapTotal: z.number().nonnegative().optional(),\n })\n .passthrough()\n\nconst DashboardMetricsSchema = z\n .object({\n generatedAt: z.string().min(1).default(() => new Date().toISOString()),\n buildMs: z.number().nonnegative().nullable().default(null),\n scanMs: z.number().nonnegative().nullable().default(null),\n analyzeMs: z.number().nonnegative().nullable().default(null),\n compileMs: z.number().nonnegative().nullable().default(null),\n memoryMb: MemoryMetricsSchema.nullable().default(null),\n classCount: z.number().int().nonnegative().nullable().default(null),\n fileCount: z.number().int().nonnegative().nullable().default(null),\n cssBytes: z.number().int().nonnegative().nullable().default(null),\n packageCount: z.number().int().nonnegative().nullable().default(null),\n mode: z.enum([\"idle\", \"jit\", \"build\", \"watch\", \"error\"]).nullable().default(\"idle\"),\n error: z.string().optional(),\n lastEventType: z.string().optional(),\n eventsReceived: z.number().int().nonnegative().optional(),\n eventsProcessed: z.number().int().nonnegative().optional(),\n batchesProcessed: z.number().int().nonnegative().optional(),\n incrementalUpdates: z.number().int().nonnegative().optional(),\n fullRescans: z.number().int().nonnegative().optional(),\n skippedLargeFiles: z.number().int().nonnegative().optional(),\n queueMaxSize: z.number().int().nonnegative().optional(),\n lastBuildMs: z.number().nonnegative().optional(),\n avgBuildMs: z.number().nonnegative().optional(),\n })\n .passthrough()\n\nfunction createDefaultMetrics() {\n return DashboardMetricsSchema.parse({})\n}\n\nfunction formatIssues(error: import('zod').ZodError) {\n return error.issues.map((issue: import('zod').ZodIssue) => `${issue.path.join(\".\") || \"<root>\"}: ${issue.message}`).join(\"; \")\n}\n\nexport const currentMetrics = createDefaultMetrics()\nexport const history: ReturnType<typeof createDefaultMetrics>[] = []\nexport const events = new EventEmitter()\n\nexport function normalizeMetrics(data: Record<string, unknown>) {\n const parsed = DashboardMetricsSchema.safeParse({\n ...currentMetrics,\n ...data,\n })\n\n if (parsed.success) {\n return parsed.data\n }\n\n return {\n ...createDefaultMetrics(),\n generatedAt: new Date().toISOString(),\n mode: \"error\",\n error: formatIssues(parsed.error),\n }\n}\n\nexport function updateMetrics(data: Record<string, unknown>) {\n const next = normalizeMetrics(data)\n Object.assign(currentMetrics, next as object, { generatedAt: new Date().toISOString() })\n history.push({ ...currentMetrics } as typeof currentMetrics)\n if (history.length > MAX_HISTORY) history.shift()\n events.emit(\"update\", currentMetrics)\n return currentMetrics\n}\n\nexport function resetHistory() {\n history.length = 0\n events.emit(\"reset\")\n}\n\nexport function getMetricsSummary() {\n const issues = []\n\n if (currentMetrics.error) {\n issues.push({\n severity: \"error\",\n message: currentMetrics.error,\n })\n }\n\n if ((currentMetrics.buildMs ?? 0) > 2000) {\n issues.push({\n severity: \"warning\",\n message: `Build duration is elevated at ${currentMetrics.buildMs}ms.`,\n })\n }\n\n if ((currentMetrics.scanMs ?? 0) > 1000) {\n issues.push({\n severity: \"warning\",\n message: `Scan duration is elevated at ${currentMetrics.scanMs}ms.`,\n })\n }\n\n if ((currentMetrics.memoryMb?.heapUsed ?? 0) > 500) {\n issues.push({\n severity: \"warning\",\n message: `Heap usage is elevated at ${currentMetrics.memoryMb?.heapUsed}MB.`,\n })\n }\n\n const status =\n currentMetrics.mode === \"error\" || issues.some((issue) => issue.severity === \"error\")\n ? \"unhealthy\"\n : issues.some((issue) => issue.severity === \"warning\")\n ? \"degraded\"\n : \"healthy\"\n\n return {\n workspace: {\n totalPackages: currentMetrics.packageCount ?? 0,\n totalFiles: currentMetrics.fileCount ?? 0,\n totalClasses: currentMetrics.classCount ?? 0,\n lastScanDurationMs: currentMetrics.scanMs ?? 0,\n lastBuildDurationMs: currentMetrics.buildMs ?? 0,\n },\n cache: {\n hitRate:\n (currentMetrics.eventsReceived ?? 0) > 0\n ? Math.max(\n 0,\n Math.min(\n 1,\n (currentMetrics.eventsProcessed ?? 0) / Math.max(currentMetrics.eventsReceived ?? 1, 1)\n )\n )\n : 0,\n totalEntries: history.length,\n memoryUsageMb: currentMetrics.memoryMb?.heapUsed ?? 0,\n },\n pipeline: {\n scanDurationMs: currentMetrics.scanMs ?? 0,\n analyzeDurationMs: currentMetrics.analyzeMs ?? 0,\n compileDurationMs: currentMetrics.compileMs ?? 0,\n totalDurationMs:\n (currentMetrics.scanMs ?? 0) +\n (currentMetrics.analyzeMs ?? 0) +\n (currentMetrics.compileMs ?? 0),\n },\n health: {\n status,\n issues,\n },\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../packages/infrastructure/dashboard/src/state.ts"],"names":[],"mappings":"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","file":"dashboard.mjs","sourcesContent":["import { EventEmitter } from \"node:events\"\r\n\r\nimport { z } from \"zod\"\r\n\r\nconst MAX_HISTORY = 100\r\n\r\nconst MemoryMetricsSchema = z\r\n .object({\r\n rss: z.number().nonnegative().optional(),\r\n heapUsed: z.number().nonnegative().optional(),\r\n heapTotal: z.number().nonnegative().optional(),\r\n })\r\n .passthrough()\r\n\r\nconst DashboardMetricsSchema = z\r\n .object({\r\n generatedAt: z.string().min(1).default(() => new Date().toISOString()),\r\n buildMs: z.number().nonnegative().nullable().default(null),\r\n scanMs: z.number().nonnegative().nullable().default(null),\r\n analyzeMs: z.number().nonnegative().nullable().default(null),\r\n compileMs: z.number().nonnegative().nullable().default(null),\r\n memoryMb: MemoryMetricsSchema.nullable().default(null),\r\n classCount: z.number().int().nonnegative().nullable().default(null),\r\n fileCount: z.number().int().nonnegative().nullable().default(null),\r\n cssBytes: z.number().int().nonnegative().nullable().default(null),\r\n packageCount: z.number().int().nonnegative().nullable().default(null),\r\n mode: z.enum([\"idle\", \"jit\", \"build\", \"watch\", \"error\"]).nullable().default(\"idle\"),\r\n error: z.string().optional(),\r\n lastEventType: z.string().optional(),\r\n eventsReceived: z.number().int().nonnegative().optional(),\r\n eventsProcessed: z.number().int().nonnegative().optional(),\r\n batchesProcessed: z.number().int().nonnegative().optional(),\r\n incrementalUpdates: z.number().int().nonnegative().optional(),\r\n fullRescans: z.number().int().nonnegative().optional(),\r\n skippedLargeFiles: z.number().int().nonnegative().optional(),\r\n queueMaxSize: z.number().int().nonnegative().optional(),\r\n lastBuildMs: z.number().nonnegative().optional(),\r\n avgBuildMs: z.number().nonnegative().optional(),\r\n })\r\n .passthrough()\r\n\r\nfunction createDefaultMetrics() {\r\n return DashboardMetricsSchema.parse({})\r\n}\r\n\r\nfunction formatIssues(error: import('zod').ZodError) {\r\n return error.issues.map((issue: import('zod').ZodIssue) => `${issue.path.join(\".\") || \"<root>\"}: ${issue.message}`).join(\"; \")\r\n}\r\n\r\nexport const currentMetrics = createDefaultMetrics()\r\nexport const history: ReturnType<typeof createDefaultMetrics>[] = []\r\nexport const events = new EventEmitter()\r\n\r\nexport function normalizeMetrics(data: Record<string, unknown>) {\r\n const parsed = DashboardMetricsSchema.safeParse({\r\n ...currentMetrics,\r\n ...data,\r\n })\r\n\r\n if (parsed.success) {\r\n return parsed.data\r\n }\r\n\r\n return {\r\n ...createDefaultMetrics(),\r\n generatedAt: new Date().toISOString(),\r\n mode: \"error\",\r\n error: formatIssues(parsed.error),\r\n }\r\n}\r\n\r\nexport function updateMetrics(data: Record<string, unknown>) {\r\n const next = normalizeMetrics(data)\r\n Object.assign(currentMetrics, next as object, { generatedAt: new Date().toISOString() })\r\n history.push({ ...currentMetrics } as typeof currentMetrics)\r\n if (history.length > MAX_HISTORY) history.shift()\r\n events.emit(\"update\", currentMetrics)\r\n return currentMetrics\r\n}\r\n\r\nexport function resetHistory() {\r\n history.length = 0\r\n events.emit(\"reset\")\r\n}\r\n\r\nexport function getMetricsSummary() {\r\n const issues = []\r\n\r\n if (currentMetrics.error) {\r\n issues.push({\r\n severity: \"error\",\r\n message: currentMetrics.error,\r\n })\r\n }\r\n\r\n if ((currentMetrics.buildMs ?? 0) > 2000) {\r\n issues.push({\r\n severity: \"warning\",\r\n message: `Build duration is elevated at ${currentMetrics.buildMs}ms.`,\r\n })\r\n }\r\n\r\n if ((currentMetrics.scanMs ?? 0) > 1000) {\r\n issues.push({\r\n severity: \"warning\",\r\n message: `Scan duration is elevated at ${currentMetrics.scanMs}ms.`,\r\n })\r\n }\r\n\r\n if ((currentMetrics.memoryMb?.heapUsed ?? 0) > 500) {\r\n issues.push({\r\n severity: \"warning\",\r\n message: `Heap usage is elevated at ${currentMetrics.memoryMb?.heapUsed}MB.`,\r\n })\r\n }\r\n\r\n const status =\r\n currentMetrics.mode === \"error\" || issues.some((issue) => issue.severity === \"error\")\r\n ? \"unhealthy\"\r\n : issues.some((issue) => issue.severity === \"warning\")\r\n ? \"degraded\"\r\n : \"healthy\"\r\n\r\n return {\r\n workspace: {\r\n totalPackages: currentMetrics.packageCount ?? 0,\r\n totalFiles: currentMetrics.fileCount ?? 0,\r\n totalClasses: currentMetrics.classCount ?? 0,\r\n lastScanDurationMs: currentMetrics.scanMs ?? 0,\r\n lastBuildDurationMs: currentMetrics.buildMs ?? 0,\r\n },\r\n cache: {\r\n hitRate:\r\n (currentMetrics.eventsReceived ?? 0) > 0\r\n ? Math.max(\r\n 0,\r\n Math.min(\r\n 1,\r\n (currentMetrics.eventsProcessed ?? 0) / Math.max(currentMetrics.eventsReceived ?? 1, 1)\r\n )\r\n )\r\n : 0,\r\n totalEntries: history.length,\r\n memoryUsageMb: currentMetrics.memoryMb?.heapUsed ?? 0,\r\n },\r\n pipeline: {\r\n scanDurationMs: currentMetrics.scanMs ?? 0,\r\n analyzeDurationMs: currentMetrics.analyzeMs ?? 0,\r\n compileDurationMs: currentMetrics.compileMs ?? 0,\r\n totalDurationMs:\r\n (currentMetrics.scanMs ?? 0) +\r\n (currentMetrics.analyzeMs ?? 0) +\r\n (currentMetrics.compileMs ?? 0),\r\n },\r\n health: {\r\n status,\r\n issues,\r\n },\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../packages/infrastructure/dashboard/src/state.ts"],"names":[],"mappings":";;;;;AAIA,IAAM,WAAA,GAAc,GAAA;AAEpB,IAAM,mBAAA,GAAsB,EACzB,MAAA,CAAO;AAAA,EACN,KAAK,CAAA,CAAE,MAAA,EAAO,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EACvC,UAAU,CAAA,CAAE,MAAA,EAAO,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EAC5C,WAAW,CAAA,CAAE,MAAA,EAAO,CAAE,WAAA,GAAc,QAAA;AACtC,CAAC,EACA,WAAA,EAAY;AAEf,IAAM,sBAAA,GAAyB,EAC5B,MAAA,CAAO;AAAA,EACN,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAA,iBAAM,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA;AAAA,EACrE,OAAA,EAAS,EAAE,MAAA,EAAO,CAAE,aAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EACzD,MAAA,EAAQ,EAAE,MAAA,EAAO,CAAE,aAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EACxD,SAAA,EAAW,EAAE,MAAA,EAAO,CAAE,aAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EAC3D,SAAA,EAAW,EAAE,MAAA,EAAO,CAAE,aAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EAC3D,QAAA,EAAU,mBAAA,CAAoB,QAAA,EAAS,CAAE,QAAQ,IAAI,CAAA;AAAA,EACrD,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,WAAA,EAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EAClE,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,WAAA,EAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EACjE,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,WAAA,EAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EAChE,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,WAAA,EAAY,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,EACpE,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,CAAC,QAAQ,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,OAAO,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAQ,MAAM,CAAA;AAAA,EAClF,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,aAAA,EAAe,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,cAAA,EAAgB,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EACxD,eAAA,EAAiB,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EACzD,gBAAA,EAAkB,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EAC1D,kBAAA,EAAoB,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EAC5D,WAAA,EAAa,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EACrD,iBAAA,EAAmB,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EAC3D,YAAA,EAAc,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EACtD,aAAa,CAAA,CAAE,MAAA,EAAO,CAAE,WAAA,GAAc,QAAA,EAAS;AAAA,EAC/C,YAAY,CAAA,CAAE,MAAA,EAAO,CAAE,WAAA,GAAc,QAAA;AACvC,CAAC,EACA,WAAA,EAAY;AAEf,SAAS,oBAAA,GAAuB;AAC9B,EAAA,OAAO,sBAAA,CAAuB,KAAA,CAAM,EAAE,CAAA;AACxC;AAEA,SAAS,aAAa,KAAA,EAA+B;AACnD,EAAA,OAAO,MAAM,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAkC,CAAA,EAAG,MAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,IAAK,QAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA,CAAE,KAAK,IAAI,CAAA;AAC/H;AAEO,IAAM,iBAAiB,oBAAA;AACvB,IAAM,UAAqD;AAC3D,IAAM,MAAA,GAAS,IAAI,YAAA;AAEnB,SAAS,iBAAiB,IAAA,EAA+B;AAC9D,EAAA,MAAM,MAAA,GAAS,uBAAuB,SAAA,CAAU;AAAA,IAC9C,GAAG,cAAA;AAAA,IACH,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,OAAO,MAAA,CAAO,IAAA;AAAA,EAChB;AAEA,EAAA,OAAO;AAAA,IACL,GAAG,oBAAA,EAAqB;AAAA,IACxB,WAAA,EAAA,iBAAa,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IACpC,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,YAAA,CAAa,MAAA,CAAO,KAAK;AAAA,GAClC;AACF;AAEO,SAAS,cAAc,IAAA,EAA+B;AAC3D,EAAA,MAAM,IAAA,GAAO,iBAAiB,IAAI,CAAA;AAClC,EAAA,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB,IAAA,EAAgB,EAAE,WAAA,EAAA,qBAAiB,IAAA,EAAK,EAAE,WAAA,EAAY,EAAG,CAAA;AACvF,EAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,GAAG,cAAA,EAAyC,CAAA;AAC3D,EAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,WAAA,EAAa,OAAA,CAAQ,KAAA,EAAM;AAChD,EAAA,MAAA,CAAO,IAAA,CAAK,UAAU,cAAc,CAAA;AACpC,EAAA,OAAO,cAAA;AACT;AAEO,SAAS,YAAA,GAAe;AAC7B,EAAA,OAAA,CAAQ,MAAA,GAAS,CAAA;AACjB,EAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AACrB;AAEO,SAAS,iBAAA,GAAoB;AAClC,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,IAAI,eAAe,KAAA,EAAO;AACxB,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,QAAA,EAAU,OAAA;AAAA,MACV,SAAS,cAAA,CAAe;AAAA,KACzB,CAAA;AAAA,EACH;AAEA,EAAA,IAAA,CAAK,cAAA,CAAe,OAAA,IAAW,CAAA,IAAK,GAAA,EAAM;AACxC,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS,CAAA,8BAAA,EAAiC,cAAA,CAAe,OAAO,CAAA,GAAA;AAAA,KACjE,CAAA;AAAA,EACH;AAEA,EAAA,IAAA,CAAK,cAAA,CAAe,MAAA,IAAU,CAAA,IAAK,GAAA,EAAM;AACvC,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS,CAAA,6BAAA,EAAgC,cAAA,CAAe,MAAM,CAAA,GAAA;AAAA,KAC/D,CAAA;AAAA,EACH;AAEA,EAAA,IAAA,CAAK,cAAA,CAAe,QAAA,EAAU,QAAA,IAAY,CAAA,IAAK,GAAA,EAAK;AAClD,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS,CAAA,0BAAA,EAA6B,cAAA,CAAe,QAAA,EAAU,QAAQ,CAAA,GAAA;AAAA,KACxE,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,MAAA,GACJ,eAAe,IAAA,KAAS,OAAA,IAAW,OAAO,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,QAAA,KAAa,OAAO,CAAA,GAChF,WAAA,GACA,OAAO,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,QAAA,KAAa,SAAS,CAAA,GACjD,UAAA,GACA,SAAA;AAER,EAAA,OAAO;AAAA,IACL,SAAA,EAAW;AAAA,MACT,aAAA,EAAe,eAAe,YAAA,IAAgB,CAAA;AAAA,MAC9C,UAAA,EAAY,eAAe,SAAA,IAAa,CAAA;AAAA,MACxC,YAAA,EAAc,eAAe,UAAA,IAAc,CAAA;AAAA,MAC3C,kBAAA,EAAoB,eAAe,MAAA,IAAU,CAAA;AAAA,MAC7C,mBAAA,EAAqB,eAAe,OAAA,IAAW;AAAA,KACjD;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAA,CACG,cAAA,CAAe,cAAA,IAAkB,CAAA,IAAK,IACnC,IAAA,CAAK,GAAA;AAAA,QACH,CAAA;AAAA,QACA,IAAA,CAAK,GAAA;AAAA,UACH,CAAA;AAAA,UAAA,CACC,cAAA,CAAe,mBAAmB,CAAA,IAAK,IAAA,CAAK,IAAI,cAAA,CAAe,cAAA,IAAkB,GAAG,CAAC;AAAA;AACxF,OACF,GACA,CAAA;AAAA,MACN,cAAc,OAAA,CAAQ,MAAA;AAAA,MACtB,aAAA,EAAe,cAAA,CAAe,QAAA,EAAU,QAAA,IAAY;AAAA,KACtD;AAAA,IACA,QAAA,EAAU;AAAA,MACR,cAAA,EAAgB,eAAe,MAAA,IAAU,CAAA;AAAA,MACzC,iBAAA,EAAmB,eAAe,SAAA,IAAa,CAAA;AAAA,MAC/C,iBAAA,EAAmB,eAAe,SAAA,IAAa,CAAA;AAAA,MAC/C,eAAA,EAAA,CACG,eAAe,MAAA,IAAU,CAAA,KACzB,eAAe,SAAA,IAAa,CAAA,CAAA,IAC5B,eAAe,SAAA,IAAa,CAAA;AAAA,KACjC;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA;AAAA,MACA;AAAA;AACF,GACF;AACF","file":"dashboard.mjs","sourcesContent":["import { EventEmitter } from \"node:events\"\n\nimport { z } from \"zod\"\n\nconst MAX_HISTORY = 100\n\nconst MemoryMetricsSchema = z\n .object({\n rss: z.number().nonnegative().optional(),\n heapUsed: z.number().nonnegative().optional(),\n heapTotal: z.number().nonnegative().optional(),\n })\n .passthrough()\n\nconst DashboardMetricsSchema = z\n .object({\n generatedAt: z.string().min(1).default(() => new Date().toISOString()),\n buildMs: z.number().nonnegative().nullable().default(null),\n scanMs: z.number().nonnegative().nullable().default(null),\n analyzeMs: z.number().nonnegative().nullable().default(null),\n compileMs: z.number().nonnegative().nullable().default(null),\n memoryMb: MemoryMetricsSchema.nullable().default(null),\n classCount: z.number().int().nonnegative().nullable().default(null),\n fileCount: z.number().int().nonnegative().nullable().default(null),\n cssBytes: z.number().int().nonnegative().nullable().default(null),\n packageCount: z.number().int().nonnegative().nullable().default(null),\n mode: z.enum([\"idle\", \"jit\", \"build\", \"watch\", \"error\"]).nullable().default(\"idle\"),\n error: z.string().optional(),\n lastEventType: z.string().optional(),\n eventsReceived: z.number().int().nonnegative().optional(),\n eventsProcessed: z.number().int().nonnegative().optional(),\n batchesProcessed: z.number().int().nonnegative().optional(),\n incrementalUpdates: z.number().int().nonnegative().optional(),\n fullRescans: z.number().int().nonnegative().optional(),\n skippedLargeFiles: z.number().int().nonnegative().optional(),\n queueMaxSize: z.number().int().nonnegative().optional(),\n lastBuildMs: z.number().nonnegative().optional(),\n avgBuildMs: z.number().nonnegative().optional(),\n })\n .passthrough()\n\nfunction createDefaultMetrics() {\n return DashboardMetricsSchema.parse({})\n}\n\nfunction formatIssues(error: import('zod').ZodError) {\n return error.issues.map((issue: import('zod').ZodIssue) => `${issue.path.join(\".\") || \"<root>\"}: ${issue.message}`).join(\"; \")\n}\n\nexport const currentMetrics = createDefaultMetrics()\nexport const history: ReturnType<typeof createDefaultMetrics>[] = []\nexport const events = new EventEmitter()\n\nexport function normalizeMetrics(data: Record<string, unknown>) {\n const parsed = DashboardMetricsSchema.safeParse({\n ...currentMetrics,\n ...data,\n })\n\n if (parsed.success) {\n return parsed.data\n }\n\n return {\n ...createDefaultMetrics(),\n generatedAt: new Date().toISOString(),\n mode: \"error\",\n error: formatIssues(parsed.error),\n }\n}\n\nexport function updateMetrics(data: Record<string, unknown>) {\n const next = normalizeMetrics(data)\n Object.assign(currentMetrics, next as object, { generatedAt: new Date().toISOString() })\n history.push({ ...currentMetrics } as typeof currentMetrics)\n if (history.length > MAX_HISTORY) history.shift()\n events.emit(\"update\", currentMetrics)\n return currentMetrics\n}\n\nexport function resetHistory() {\n history.length = 0\n events.emit(\"reset\")\n}\n\nexport function getMetricsSummary() {\n const issues = []\n\n if (currentMetrics.error) {\n issues.push({\n severity: \"error\",\n message: currentMetrics.error,\n })\n }\n\n if ((currentMetrics.buildMs ?? 0) > 2000) {\n issues.push({\n severity: \"warning\",\n message: `Build duration is elevated at ${currentMetrics.buildMs}ms.`,\n })\n }\n\n if ((currentMetrics.scanMs ?? 0) > 1000) {\n issues.push({\n severity: \"warning\",\n message: `Scan duration is elevated at ${currentMetrics.scanMs}ms.`,\n })\n }\n\n if ((currentMetrics.memoryMb?.heapUsed ?? 0) > 500) {\n issues.push({\n severity: \"warning\",\n message: `Heap usage is elevated at ${currentMetrics.memoryMb?.heapUsed}MB.`,\n })\n }\n\n const status =\n currentMetrics.mode === \"error\" || issues.some((issue) => issue.severity === \"error\")\n ? \"unhealthy\"\n : issues.some((issue) => issue.severity === \"warning\")\n ? \"degraded\"\n : \"healthy\"\n\n return {\n workspace: {\n totalPackages: currentMetrics.packageCount ?? 0,\n totalFiles: currentMetrics.fileCount ?? 0,\n totalClasses: currentMetrics.classCount ?? 0,\n lastScanDurationMs: currentMetrics.scanMs ?? 0,\n lastBuildDurationMs: currentMetrics.buildMs ?? 0,\n },\n cache: {\n hitRate:\n (currentMetrics.eventsReceived ?? 0) > 0\n ? Math.max(\n 0,\n Math.min(\n 1,\n (currentMetrics.eventsProcessed ?? 0) / Math.max(currentMetrics.eventsReceived ?? 1, 1)\n )\n )\n : 0,\n totalEntries: history.length,\n memoryUsageMb: currentMetrics.memoryMb?.heapUsed ?? 0,\n },\n pipeline: {\n scanDurationMs: currentMetrics.scanMs ?? 0,\n analyzeDurationMs: currentMetrics.analyzeMs ?? 0,\n compileDurationMs: currentMetrics.compileMs ?? 0,\n totalDurationMs:\n (currentMetrics.scanMs ?? 0) +\n (currentMetrics.analyzeMs ?? 0) +\n (currentMetrics.compileMs ?? 0),\n },\n health: {\n status,\n issues,\n },\n }\n}\n"]}