@vizzly-testing/cli 0.14.0 → 0.15.1

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 (140) hide show
  1. package/dist/cli.js +70 -68
  2. package/dist/commands/doctor.js +30 -34
  3. package/dist/commands/finalize.js +24 -23
  4. package/dist/commands/init.js +30 -28
  5. package/dist/commands/login.js +49 -55
  6. package/dist/commands/logout.js +14 -19
  7. package/dist/commands/project.js +83 -103
  8. package/dist/commands/run.js +77 -89
  9. package/dist/commands/status.js +48 -49
  10. package/dist/commands/tdd-daemon.js +90 -86
  11. package/dist/commands/tdd.js +59 -88
  12. package/dist/commands/upload.js +57 -57
  13. package/dist/commands/whoami.js +40 -45
  14. package/dist/index.js +2 -5
  15. package/dist/plugin-loader.js +15 -17
  16. package/dist/reporter/reporter-bundle.css +1 -1
  17. package/dist/reporter/reporter-bundle.iife.js +74 -41
  18. package/dist/sdk/index.js +36 -45
  19. package/dist/server/handlers/api-handler.js +14 -15
  20. package/dist/server/handlers/tdd-handler.js +34 -37
  21. package/dist/server/http-server.js +75 -869
  22. package/dist/server/middleware/cors.js +22 -0
  23. package/dist/server/middleware/json-parser.js +35 -0
  24. package/dist/server/middleware/response.js +79 -0
  25. package/dist/server/routers/assets.js +91 -0
  26. package/dist/server/routers/auth.js +144 -0
  27. package/dist/server/routers/baseline.js +163 -0
  28. package/dist/server/routers/cloud-proxy.js +146 -0
  29. package/dist/server/routers/config.js +126 -0
  30. package/dist/server/routers/dashboard.js +130 -0
  31. package/dist/server/routers/health.js +61 -0
  32. package/dist/server/routers/projects.js +168 -0
  33. package/dist/server/routers/screenshot.js +86 -0
  34. package/dist/services/auth-service.js +1 -1
  35. package/dist/services/build-manager.js +13 -40
  36. package/dist/services/config-service.js +2 -4
  37. package/dist/services/html-report-generator.js +6 -5
  38. package/dist/services/index.js +64 -0
  39. package/dist/services/project-service.js +121 -40
  40. package/dist/services/screenshot-server.js +9 -9
  41. package/dist/services/server-manager.js +11 -18
  42. package/dist/services/static-report-generator.js +3 -4
  43. package/dist/services/tdd-service.js +246 -103
  44. package/dist/services/test-runner.js +24 -25
  45. package/dist/services/uploader.js +5 -4
  46. package/dist/types/commands/init.d.ts +1 -2
  47. package/dist/types/index.d.ts +2 -3
  48. package/dist/types/plugin-loader.d.ts +1 -2
  49. package/dist/types/reporter/src/api/client.d.ts +178 -0
  50. package/dist/types/reporter/src/components/app-router.d.ts +1 -3
  51. package/dist/types/reporter/src/components/code-block.d.ts +4 -0
  52. package/dist/types/reporter/src/components/comparison/comparison-modes/onion-skin-mode.d.ts +10 -0
  53. package/dist/types/reporter/src/components/comparison/comparison-modes/overlay-mode.d.ts +11 -0
  54. package/dist/types/reporter/src/components/comparison/comparison-modes/shared/base-comparison-mode.d.ts +14 -0
  55. package/dist/types/reporter/src/components/comparison/comparison-modes/shared/image-renderer.d.ts +30 -0
  56. package/dist/types/reporter/src/components/comparison/comparison-modes/toggle-view.d.ts +8 -0
  57. package/dist/types/reporter/src/components/comparison/comparison-viewer.d.ts +4 -0
  58. package/dist/types/reporter/src/components/comparison/screenshot-display.d.ts +16 -0
  59. package/dist/types/reporter/src/components/design-system/alert.d.ts +9 -0
  60. package/dist/types/reporter/src/components/design-system/badge.d.ts +17 -0
  61. package/dist/types/reporter/src/components/design-system/button.d.ts +19 -0
  62. package/dist/types/reporter/src/components/design-system/card.d.ts +31 -0
  63. package/dist/types/reporter/src/components/design-system/empty-state.d.ts +13 -0
  64. package/dist/types/reporter/src/components/design-system/form-controls.d.ts +44 -0
  65. package/dist/types/reporter/src/components/design-system/health-ring.d.ts +7 -0
  66. package/dist/types/reporter/src/components/design-system/index.d.ts +11 -0
  67. package/dist/types/reporter/src/components/design-system/modal.d.ts +10 -0
  68. package/dist/types/reporter/src/components/design-system/skeleton.d.ts +19 -0
  69. package/dist/types/reporter/src/components/design-system/spinner.d.ts +10 -0
  70. package/dist/types/reporter/src/components/design-system/tabs.d.ts +13 -0
  71. package/dist/types/reporter/src/components/layout/header.d.ts +5 -0
  72. package/dist/types/reporter/src/components/layout/index.d.ts +2 -0
  73. package/dist/types/reporter/src/components/layout/layout.d.ts +6 -0
  74. package/dist/types/reporter/src/components/views/builds-view.d.ts +1 -0
  75. package/dist/types/reporter/src/components/views/comparison-detail-view.d.ts +1 -4
  76. package/dist/types/reporter/src/components/views/comparisons-view.d.ts +1 -6
  77. package/dist/types/reporter/src/components/views/stats-view.d.ts +1 -6
  78. package/dist/types/reporter/src/components/waiting-for-screenshots.d.ts +1 -0
  79. package/dist/types/reporter/src/hooks/queries/use-auth-queries.d.ts +15 -0
  80. package/dist/types/reporter/src/hooks/queries/use-cloud-queries.d.ts +6 -0
  81. package/dist/types/reporter/src/hooks/queries/use-config-queries.d.ts +6 -0
  82. package/dist/types/reporter/src/hooks/queries/use-tdd-queries.d.ts +9 -0
  83. package/dist/types/reporter/src/lib/query-client.d.ts +2 -0
  84. package/dist/types/reporter/src/lib/query-keys.d.ts +13 -0
  85. package/dist/types/sdk/index.d.ts +2 -4
  86. package/dist/types/server/handlers/tdd-handler.d.ts +2 -0
  87. package/dist/types/server/http-server.d.ts +1 -1
  88. package/dist/types/server/middleware/cors.d.ts +11 -0
  89. package/dist/types/server/middleware/json-parser.d.ts +10 -0
  90. package/dist/types/server/middleware/response.d.ts +50 -0
  91. package/dist/types/server/routers/assets.d.ts +6 -0
  92. package/dist/types/server/routers/auth.d.ts +9 -0
  93. package/dist/types/server/routers/baseline.d.ts +13 -0
  94. package/dist/types/server/routers/cloud-proxy.d.ts +11 -0
  95. package/dist/types/server/routers/config.d.ts +9 -0
  96. package/dist/types/server/routers/dashboard.d.ts +6 -0
  97. package/dist/types/server/routers/health.d.ts +11 -0
  98. package/dist/types/server/routers/projects.d.ts +9 -0
  99. package/dist/types/server/routers/screenshot.d.ts +11 -0
  100. package/dist/types/services/build-manager.d.ts +4 -3
  101. package/dist/types/services/config-service.d.ts +2 -3
  102. package/dist/types/services/index.d.ts +7 -0
  103. package/dist/types/services/project-service.d.ts +6 -4
  104. package/dist/types/services/screenshot-server.d.ts +5 -5
  105. package/dist/types/services/server-manager.d.ts +5 -3
  106. package/dist/types/services/tdd-service.d.ts +12 -1
  107. package/dist/types/services/test-runner.d.ts +3 -3
  108. package/dist/types/utils/output.d.ts +84 -0
  109. package/dist/utils/config-loader.js +24 -48
  110. package/dist/utils/global-config.js +2 -17
  111. package/dist/utils/output.js +445 -0
  112. package/dist/utils/security.js +3 -4
  113. package/docs/api-reference.md +0 -1
  114. package/docs/plugins.md +33 -34
  115. package/package.json +3 -2
  116. package/dist/container/index.js +0 -215
  117. package/dist/services/base-service.js +0 -154
  118. package/dist/types/container/index.d.ts +0 -59
  119. package/dist/types/reporter/src/components/comparison/viewer-modes/onion-viewer.d.ts +0 -3
  120. package/dist/types/reporter/src/components/comparison/viewer-modes/overlay-viewer.d.ts +0 -3
  121. package/dist/types/reporter/src/components/comparison/viewer-modes/side-by-side-viewer.d.ts +0 -3
  122. package/dist/types/reporter/src/components/comparison/viewer-modes/toggle-viewer.d.ts +0 -3
  123. package/dist/types/reporter/src/components/dashboard/dashboard-header.d.ts +0 -5
  124. package/dist/types/reporter/src/components/dashboard/dashboard-stats.d.ts +0 -4
  125. package/dist/types/reporter/src/components/dashboard/empty-state.d.ts +0 -8
  126. package/dist/types/reporter/src/components/ui/form-field.d.ts +0 -16
  127. package/dist/types/reporter/src/components/ui/status-badge.d.ts +0 -5
  128. package/dist/types/reporter/src/hooks/use-auth.d.ts +0 -10
  129. package/dist/types/reporter/src/hooks/use-baseline-actions.d.ts +0 -5
  130. package/dist/types/reporter/src/hooks/use-config.d.ts +0 -9
  131. package/dist/types/reporter/src/hooks/use-projects.d.ts +0 -10
  132. package/dist/types/reporter/src/hooks/use-report-data.d.ts +0 -7
  133. package/dist/types/reporter/src/hooks/use-vizzly-api.d.ts +0 -9
  134. package/dist/types/services/base-service.d.ts +0 -71
  135. package/dist/types/utils/console-ui.d.ts +0 -61
  136. package/dist/types/utils/logger-factory.d.ts +0 -26
  137. package/dist/types/utils/logger.d.ts +0 -79
  138. package/dist/utils/console-ui.js +0 -241
  139. package/dist/utils/logger-factory.js +0 -76
  140. package/dist/utils/logger.js +0 -231
@@ -1,231 +0,0 @@
1
- import { writeFileSync, appendFileSync, mkdirSync } from 'fs';
2
- import { join, dirname } from 'path';
3
- import { getEnvironmentDetails } from '../utils/environment.js';
4
- import { getLogLevel } from './environment-config.js';
5
-
6
- /**
7
- * Structured logger with multiple output targets and log levels
8
- */
9
- export class Logger {
10
- constructor(options = {}) {
11
- this.level = options.level || 'info';
12
- this.logFile = options.logFile;
13
- this.verbose = options.verbose || false;
14
- this.silent = options.silent || false;
15
- this.colors = options.colors !== false; // Default to true unless explicitly disabled
16
-
17
- this.levels = {
18
- error: 0,
19
- warn: 1,
20
- info: 2,
21
- debug: 3
22
- };
23
-
24
- // Initialize log file if specified
25
- if (this.logFile) {
26
- this.initLogFile();
27
- }
28
- }
29
-
30
- /**
31
- * Initialize log file with session header
32
- */
33
- initLogFile() {
34
- try {
35
- mkdirSync(dirname(this.logFile), {
36
- recursive: true
37
- });
38
- const sessionHeader = {
39
- timestamp: new Date().toISOString(),
40
- session_start: true,
41
- environment: getEnvironmentDetails(),
42
- pid: process.pid,
43
- node_version: process.version,
44
- platform: process.platform
45
- };
46
- writeFileSync(this.logFile, JSON.stringify(sessionHeader) + '\n');
47
- } catch (error) {
48
- console.error('Failed to initialize log file:', error.message);
49
- }
50
- }
51
-
52
- /**
53
- * Check if message should be logged at current level
54
- */
55
- shouldLog(level) {
56
- return this.levels[level] <= this.levels[this.level];
57
- }
58
-
59
- /**
60
- * Log a message with specified level
61
- */
62
- log(level, message, data = {}) {
63
- if (!this.shouldLog(level)) return;
64
- const logEntry = {
65
- timestamp: new Date().toISOString(),
66
- level,
67
- message,
68
- ...data
69
- };
70
-
71
- // Write to log file if configured
72
- if (this.logFile) {
73
- try {
74
- appendFileSync(this.logFile, JSON.stringify(logEntry) + '\n');
75
- } catch {
76
- // Silently fail to avoid infinite loops
77
- }
78
- }
79
-
80
- // Output to console unless silent
81
- if (!this.silent) {
82
- this.outputToConsole(level, message, data);
83
- }
84
- }
85
-
86
- /**
87
- * Output formatted message to console
88
- */
89
- outputToConsole(level, message, data) {
90
- const prefix = this.getColoredPrefix(level);
91
- const formattedMessage = `${prefix} ${message}`;
92
-
93
- // Use appropriate console method
94
- switch (level) {
95
- case 'error':
96
- console.error(formattedMessage);
97
- if (this.verbose && data.stack) {
98
- console.error(data.stack);
99
- }
100
- break;
101
- case 'warn':
102
- console.warn(formattedMessage);
103
- break;
104
- case 'debug':
105
- if (this.verbose) {
106
- console.log(formattedMessage);
107
- if (Object.keys(data).length > 0) {
108
- console.log(' Data:', JSON.stringify(data, null, 2));
109
- }
110
- }
111
- break;
112
- default:
113
- console.log(formattedMessage);
114
- }
115
- }
116
-
117
- /**
118
- * Get colored prefix for log level
119
- */
120
- getColoredPrefix(level) {
121
- if (!this.colors) {
122
- return `[${level.toUpperCase()}]`;
123
- }
124
- const colors = {
125
- error: '\x1b[31m✖\x1b[0m',
126
- // Red X
127
- warn: '\x1b[33m⚠\x1b[0m',
128
- // Yellow warning
129
- info: '\x1b[36mℹ\x1b[0m',
130
- // Cyan info
131
- debug: '\x1b[35m🔍\x1b[0m' // Magenta debug
132
- };
133
- return colors[level] || `[${level.toUpperCase()}]`;
134
- }
135
-
136
- /**
137
- * Convenience methods
138
- */
139
- error(message, data = {}) {
140
- this.log('error', message, data);
141
- }
142
- warn(message, data = {}) {
143
- this.log('warn', message, data);
144
- }
145
- info(message, data = {}) {
146
- this.log('info', message, data);
147
- }
148
- debug(message, data = {}) {
149
- this.log('debug', message, data);
150
- }
151
-
152
- /**
153
- * Log progress updates
154
- */
155
- progress(stage, message, data = {}) {
156
- this.info(`[${stage}] ${message}`, data);
157
- }
158
-
159
- /**
160
- * Log command execution
161
- */
162
- command(command, data = {}) {
163
- this.debug(`Executing command: ${command}`, data);
164
- }
165
-
166
- /**
167
- * Log performance metrics
168
- */
169
- perf(operation, duration, data = {}) {
170
- this.debug(`${operation} completed in ${duration}ms`, data);
171
- }
172
-
173
- /**
174
- * Create child logger with additional context
175
- */
176
- child(context = {}) {
177
- return new ChildLogger(this, context);
178
- }
179
- }
180
-
181
- /**
182
- * Child logger that inherits from parent with additional context
183
- */
184
- class ChildLogger {
185
- constructor(parent, context) {
186
- this.parent = parent;
187
- this.context = context;
188
- }
189
- log(level, message, data = {}) {
190
- this.parent.log(level, message, {
191
- ...this.context,
192
- ...data
193
- });
194
- }
195
- error(message, data = {}) {
196
- this.log('error', message, data);
197
- }
198
- warn(message, data = {}) {
199
- this.log('warn', message, data);
200
- }
201
- info(message, data = {}) {
202
- this.log('info', message, data);
203
- }
204
- debug(message, data = {}) {
205
- this.log('debug', message, data);
206
- }
207
- progress(stage, message, data = {}) {
208
- this.info(`[${stage}] ${message}`, data);
209
- }
210
- }
211
-
212
- /**
213
- * Create default logger instance
214
- */
215
- export function createLogger(options = {}) {
216
- // Auto-detect color support
217
- const supportsColor = process.stdout.isTTY && process.env.TERM !== 'dumb' && !process.env.NO_COLOR && !options.noColor;
218
-
219
- // Determine log level from environment
220
- const level = options.level || getLogLevel();
221
-
222
- // Create log file path if verbose mode
223
- const logFile = options.verbose ? join(process.cwd(), '.vizzly', 'debug.log') : options.logFile;
224
- return new Logger({
225
- level,
226
- logFile,
227
- verbose: options.verbose,
228
- silent: options.silent,
229
- colors: supportsColor && options.colors !== false
230
- });
231
- }