browser-debugger-cli 0.6.7 → 0.6.9

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 (180) hide show
  1. package/dist/__tests__/telemetry/filterDsl.unit.test.d.ts +12 -0
  2. package/dist/__tests__/telemetry/filterDsl.unit.test.d.ts.map +1 -0
  3. package/dist/__tests__/telemetry/filterDsl.unit.test.js +374 -0
  4. package/dist/__tests__/telemetry/filterDsl.unit.test.js.map +1 -0
  5. package/dist/__tests__/telemetry/filterPresets.unit.test.d.ts +10 -0
  6. package/dist/__tests__/telemetry/filterPresets.unit.test.d.ts.map +1 -0
  7. package/dist/__tests__/telemetry/filterPresets.unit.test.js +89 -0
  8. package/dist/__tests__/telemetry/filterPresets.unit.test.js.map +1 -0
  9. package/dist/commands/__tests__/console.contract.test.d.ts +9 -0
  10. package/dist/commands/__tests__/console.contract.test.d.ts.map +1 -0
  11. package/dist/commands/__tests__/console.contract.test.js +118 -0
  12. package/dist/commands/__tests__/console.contract.test.js.map +1 -0
  13. package/dist/commands/cleanup.js +1 -1
  14. package/dist/commands/cleanup.js.map +1 -1
  15. package/dist/commands/console.d.ts +26 -0
  16. package/dist/commands/console.d.ts.map +1 -1
  17. package/dist/commands/console.js +195 -57
  18. package/dist/commands/console.js.map +1 -1
  19. package/dist/commands/details.js +1 -1
  20. package/dist/commands/details.js.map +1 -1
  21. package/dist/commands/dom/DomElementResolver.js +2 -2
  22. package/dist/commands/dom/DomElementResolver.js.map +1 -1
  23. package/dist/commands/dom/a11y.d.ts.map +1 -1
  24. package/dist/commands/dom/a11y.js +30 -18
  25. package/dist/commands/dom/a11y.js.map +1 -1
  26. package/dist/commands/dom/formFillHelpers.d.ts.map +1 -1
  27. package/dist/commands/dom/formFillHelpers.js +64 -2
  28. package/dist/commands/dom/formFillHelpers.js.map +1 -1
  29. package/dist/commands/dom/formInteraction.js +4 -4
  30. package/dist/commands/dom/formInteraction.js.map +1 -1
  31. package/dist/commands/dom/helpers.d.ts +1 -1
  32. package/dist/commands/dom/helpers.d.ts.map +1 -1
  33. package/dist/commands/dom/helpers.js +3 -3
  34. package/dist/commands/dom/helpers.js.map +1 -1
  35. package/dist/commands/dom/index.d.ts.map +1 -1
  36. package/dist/commands/dom/index.js +4 -1
  37. package/dist/commands/dom/index.js.map +1 -1
  38. package/dist/commands/network/har.d.ts +14 -0
  39. package/dist/commands/network/har.d.ts.map +1 -0
  40. package/dist/commands/network/har.js +97 -0
  41. package/dist/commands/network/har.js.map +1 -0
  42. package/dist/commands/network/index.d.ts +18 -0
  43. package/dist/commands/network/index.d.ts.map +1 -0
  44. package/dist/commands/network/index.js +27 -0
  45. package/dist/commands/network/index.js.map +1 -0
  46. package/dist/commands/network/list.d.ts +14 -0
  47. package/dist/commands/network/list.d.ts.map +1 -0
  48. package/dist/commands/network/list.js +273 -0
  49. package/dist/commands/network/list.js.map +1 -0
  50. package/dist/commands/network/shared.d.ts +56 -0
  51. package/dist/commands/network/shared.d.ts.map +1 -0
  52. package/dist/commands/network/shared.js +174 -0
  53. package/dist/commands/network/shared.js.map +1 -0
  54. package/dist/commands/network.js +4 -4
  55. package/dist/commands/network.js.map +1 -1
  56. package/dist/commands/peek.d.ts.map +1 -1
  57. package/dist/commands/peek.js +7 -2
  58. package/dist/commands/peek.js.map +1 -1
  59. package/dist/commands/shared/CommandRunner.d.ts +19 -0
  60. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  61. package/dist/commands/shared/CommandRunner.js +30 -0
  62. package/dist/commands/shared/CommandRunner.js.map +1 -1
  63. package/dist/commands/shared/commonOptions.d.ts +8 -24
  64. package/dist/commands/shared/commonOptions.d.ts.map +1 -1
  65. package/dist/commands/shared/commonOptions.js +9 -25
  66. package/dist/commands/shared/commonOptions.js.map +1 -1
  67. package/dist/commands/shared/optionTypes.d.ts +42 -4
  68. package/dist/commands/shared/optionTypes.d.ts.map +1 -1
  69. package/dist/commands/shared/startHelpers.d.ts +2 -10
  70. package/dist/commands/shared/startHelpers.d.ts.map +1 -1
  71. package/dist/commands/shared/startHelpers.js +9 -4
  72. package/dist/commands/shared/startHelpers.js.map +1 -1
  73. package/dist/commands/start.d.ts.map +1 -1
  74. package/dist/commands/start.js +3 -1
  75. package/dist/commands/start.js.map +1 -1
  76. package/dist/commands/stop.js +1 -1
  77. package/dist/commands/stop.js.map +1 -1
  78. package/dist/commands/tail.js +1 -1
  79. package/dist/commands/tail.js.map +1 -1
  80. package/dist/commands.js +1 -1
  81. package/dist/commands.js.map +1 -1
  82. package/dist/constants.d.ts +15 -0
  83. package/dist/constants.d.ts.map +1 -1
  84. package/dist/constants.js +18 -0
  85. package/dist/constants.js.map +1 -1
  86. package/dist/daemon/__tests__/commandRegistry.contract.test.js +6 -2
  87. package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -1
  88. package/dist/daemon/handlers/CommandHandlers.d.ts +5 -0
  89. package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -1
  90. package/dist/daemon/handlers/CommandHandlers.js +6 -1
  91. package/dist/daemon/handlers/CommandHandlers.js.map +1 -1
  92. package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -1
  93. package/dist/daemon/handlers/QueryHandlers.js +3 -1
  94. package/dist/daemon/handlers/QueryHandlers.js.map +1 -1
  95. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
  96. package/dist/daemon/worker/commandRegistry.js +150 -53
  97. package/dist/daemon/worker/commandRegistry.js.map +1 -1
  98. package/dist/ipc/client.d.ts +10 -1
  99. package/dist/ipc/client.d.ts.map +1 -1
  100. package/dist/ipc/client.js +12 -2
  101. package/dist/ipc/client.js.map +1 -1
  102. package/dist/ipc/session/queries.d.ts +2 -0
  103. package/dist/ipc/session/queries.d.ts.map +1 -1
  104. package/dist/session/QueryCacheManager.d.ts +1 -1
  105. package/dist/session/QueryCacheManager.d.ts.map +1 -1
  106. package/dist/telemetry/__tests__/remoteObject.unit.test.d.ts +2 -0
  107. package/dist/telemetry/__tests__/remoteObject.unit.test.d.ts.map +1 -0
  108. package/dist/telemetry/__tests__/remoteObject.unit.test.js +261 -0
  109. package/dist/telemetry/__tests__/remoteObject.unit.test.js.map +1 -0
  110. package/dist/telemetry/console.d.ts +8 -8
  111. package/dist/telemetry/console.d.ts.map +1 -1
  112. package/dist/telemetry/console.js +142 -53
  113. package/dist/telemetry/console.js.map +1 -1
  114. package/dist/telemetry/filterDsl.d.ts +45 -0
  115. package/dist/telemetry/filterDsl.d.ts.map +1 -0
  116. package/dist/telemetry/filterDsl.js +299 -0
  117. package/dist/telemetry/filterDsl.js.map +1 -0
  118. package/dist/telemetry/filterPresets.d.ts +35 -0
  119. package/dist/telemetry/filterPresets.d.ts.map +1 -0
  120. package/dist/telemetry/filterPresets.js +76 -0
  121. package/dist/telemetry/filterPresets.js.map +1 -0
  122. package/dist/telemetry/network.d.ts.map +1 -1
  123. package/dist/telemetry/network.js +16 -8
  124. package/dist/telemetry/network.js.map +1 -1
  125. package/dist/telemetry/objectExpander.d.ts +35 -0
  126. package/dist/telemetry/objectExpander.d.ts.map +1 -0
  127. package/dist/telemetry/objectExpander.js +165 -0
  128. package/dist/telemetry/objectExpander.js.map +1 -0
  129. package/dist/telemetry/remoteObject.d.ts +41 -0
  130. package/dist/telemetry/remoteObject.d.ts.map +1 -0
  131. package/dist/telemetry/remoteObject.js +193 -0
  132. package/dist/telemetry/remoteObject.js.map +1 -0
  133. package/dist/telemetry/remoteObjectUtils.d.ts +40 -0
  134. package/dist/telemetry/remoteObjectUtils.d.ts.map +1 -0
  135. package/dist/telemetry/remoteObjectUtils.js +75 -0
  136. package/dist/telemetry/remoteObjectUtils.js.map +1 -0
  137. package/dist/telemetry/roleInference.d.ts +1 -1
  138. package/dist/telemetry/roleInference.d.ts.map +1 -1
  139. package/dist/types.d.ts +113 -0
  140. package/dist/types.d.ts.map +1 -1
  141. package/dist/ui/formatters/a11y.d.ts +1 -1
  142. package/dist/ui/formatters/a11y.d.ts.map +1 -1
  143. package/dist/ui/formatters/console.d.ts +143 -0
  144. package/dist/ui/formatters/console.d.ts.map +1 -0
  145. package/dist/ui/formatters/console.js +431 -0
  146. package/dist/ui/formatters/console.js.map +1 -0
  147. package/dist/ui/formatters/dom.d.ts +4 -4
  148. package/dist/ui/formatters/dom.d.ts.map +1 -1
  149. package/dist/ui/formatters/dom.js +5 -5
  150. package/dist/ui/formatters/dom.js.map +1 -1
  151. package/dist/ui/formatters/networkList.d.ts +19 -0
  152. package/dist/ui/formatters/networkList.d.ts.map +1 -0
  153. package/dist/ui/formatters/networkList.js +86 -0
  154. package/dist/ui/formatters/networkList.js.map +1 -0
  155. package/dist/ui/formatters/preview.d.ts +18 -0
  156. package/dist/ui/formatters/preview.d.ts.map +1 -1
  157. package/dist/ui/formatters/preview.js +13 -5
  158. package/dist/ui/formatters/preview.js.map +1 -1
  159. package/dist/ui/logging/logger.d.ts +1 -1
  160. package/dist/ui/logging/logger.d.ts.map +1 -1
  161. package/dist/ui/logging/logger.js.map +1 -1
  162. package/dist/ui/messages/consoleMessages.d.ts +12 -27
  163. package/dist/ui/messages/consoleMessages.d.ts.map +1 -1
  164. package/dist/ui/messages/consoleMessages.js +16 -31
  165. package/dist/ui/messages/consoleMessages.js.map +1 -1
  166. package/dist/ui/messages/networkMessages.d.ts +24 -0
  167. package/dist/ui/messages/networkMessages.d.ts.map +1 -0
  168. package/dist/ui/messages/networkMessages.js +30 -0
  169. package/dist/ui/messages/networkMessages.js.map +1 -0
  170. package/dist/utils/decisionTrees.d.ts.map +1 -1
  171. package/dist/utils/decisionTrees.js +17 -2
  172. package/dist/utils/decisionTrees.js.map +1 -1
  173. package/dist/utils/strings.d.ts +14 -0
  174. package/dist/utils/strings.d.ts.map +1 -0
  175. package/dist/utils/strings.js +23 -0
  176. package/dist/utils/strings.js.map +1 -0
  177. package/dist/utils/taskMappings.d.ts.map +1 -1
  178. package/dist/utils/taskMappings.js +18 -3
  179. package/dist/utils/taskMappings.js.map +1 -1
  180. package/package.json +1 -1
@@ -0,0 +1,431 @@
1
+ /**
2
+ * Console command formatters.
3
+ *
4
+ * Provides formatting functions for the `bdg console` command output including
5
+ * smart summary view with deduplication, chronological view, and JSON output.
6
+ */
7
+ import { OutputFormatter, pluralize } from '../../ui/formatting.js';
8
+ import { truncateByLength } from '../../utils/strings.js';
9
+ /**
10
+ * Mapping from console message types to level categories.
11
+ * Exported for use by console command filtering.
12
+ */
13
+ export const LEVEL_MAP = {
14
+ error: 'error',
15
+ warning: 'warning',
16
+ info: 'info',
17
+ log: 'info',
18
+ debug: 'debug',
19
+ trace: 'debug',
20
+ dir: 'other',
21
+ dirxml: 'other',
22
+ table: 'other',
23
+ clear: 'other',
24
+ startGroup: 'other',
25
+ startGroupCollapsed: 'other',
26
+ endGroup: 'other',
27
+ assert: 'other',
28
+ profile: 'other',
29
+ profileEnd: 'other',
30
+ count: 'other',
31
+ timeEnd: 'other',
32
+ };
33
+ /**
34
+ * Classify a console message type into a level category.
35
+ *
36
+ * @param type - Console message type from CDP
37
+ * @returns Normalized level category
38
+ */
39
+ function classifyLevel(type) {
40
+ return LEVEL_MAP[type];
41
+ }
42
+ /**
43
+ * Format timestamp with milliseconds precision.
44
+ *
45
+ * @param timestamp - Unix timestamp in milliseconds
46
+ * @returns Formatted time string like "12:34:56.789"
47
+ */
48
+ function formatTimestamp(timestamp) {
49
+ const date = new Date(timestamp);
50
+ const hours = date.getHours().toString().padStart(2, '0');
51
+ const minutes = date.getMinutes().toString().padStart(2, '0');
52
+ const seconds = date.getSeconds().toString().padStart(2, '0');
53
+ const ms = date.getMilliseconds().toString().padStart(3, '0');
54
+ return `${hours}:${minutes}:${seconds}.${ms}`;
55
+ }
56
+ /**
57
+ * Generate a deduplication key for a console message.
58
+ *
59
+ * Messages are considered duplicates if they have the same text and source location.
60
+ *
61
+ * @param message - Console message to generate key for
62
+ * @returns Unique key string for deduplication
63
+ */
64
+ function getDeduplicationKey(message) {
65
+ const source = message.stackTrace?.[0];
66
+ if (source) {
67
+ return `${message.text}|${source.url}|${source.lineNumber}|${source.columnNumber}`;
68
+ }
69
+ return message.text;
70
+ }
71
+ /**
72
+ * Deduplicate an array of messages, grouping by key and counting occurrences.
73
+ *
74
+ * @param messages - Messages to deduplicate
75
+ * @returns Deduplicated messages with counts
76
+ */
77
+ function deduplicate(messages) {
78
+ const groups = new Map();
79
+ for (const message of messages) {
80
+ const key = getDeduplicationKey(message);
81
+ const existing = groups.get(key);
82
+ if (existing) {
83
+ existing.count++;
84
+ }
85
+ else {
86
+ groups.set(key, { message, count: 1 });
87
+ }
88
+ }
89
+ return Array.from(groups.values());
90
+ }
91
+ /**
92
+ * Group and process messages in a single pass.
93
+ *
94
+ * Partitions messages by level, deduplicates errors/warnings,
95
+ * and counts all levels efficiently.
96
+ *
97
+ * @param messages - All console messages
98
+ * @returns Grouped and processed message data
99
+ */
100
+ function groupByLevel(messages) {
101
+ const byLevel = {
102
+ error: [],
103
+ warning: [],
104
+ info: [],
105
+ debug: [],
106
+ other: [],
107
+ };
108
+ for (const msg of messages) {
109
+ byLevel[classifyLevel(msg.type)].push(msg);
110
+ }
111
+ return {
112
+ errors: deduplicate(byLevel.error),
113
+ warnings: deduplicate(byLevel.warning),
114
+ counts: {
115
+ error: byLevel.error.length,
116
+ warning: byLevel.warning.length,
117
+ info: byLevel.info.length,
118
+ debug: byLevel.debug.length,
119
+ other: byLevel.other.length,
120
+ },
121
+ };
122
+ }
123
+ /**
124
+ * Calculate summary statistics from grouped messages.
125
+ *
126
+ * @param total - Total message count
127
+ * @param grouped - Grouped and deduplicated messages
128
+ * @returns Summary statistics object
129
+ */
130
+ function buildSummary(total, grouped) {
131
+ const sumCounts = (items) => items.reduce((sum, d) => sum + d.count, 0);
132
+ return {
133
+ total,
134
+ errors: { total: sumCounts(grouped.errors), unique: grouped.errors.length },
135
+ warnings: { total: sumCounts(grouped.warnings), unique: grouped.warnings.length },
136
+ info: grouped.counts.info,
137
+ debug: grouped.counts.debug,
138
+ other: grouped.counts.other,
139
+ };
140
+ }
141
+ /**
142
+ * Analyze console messages: group, deduplicate, and summarize.
143
+ *
144
+ * Single entry point for message analysis used by all formatters.
145
+ *
146
+ * @param messages - All console messages
147
+ * @returns Object with grouped messages and summary
148
+ */
149
+ function analyzeMessages(messages) {
150
+ const grouped = groupByLevel(messages);
151
+ const summary = buildSummary(messages.length, grouped);
152
+ return { grouped, summary };
153
+ }
154
+ /**
155
+ * Extract filename from URL for display.
156
+ *
157
+ * @param url - Full URL or empty string
158
+ * @param functionName - Optional function name for inline scripts
159
+ * @returns Concise filename representation
160
+ */
161
+ function getFilenameFromUrl(url, functionName) {
162
+ if (!url || url === '') {
163
+ return functionName ? `<${functionName}>` : '<inline>';
164
+ }
165
+ if (url.startsWith('eval')) {
166
+ return '<eval>';
167
+ }
168
+ if (url.includes('/')) {
169
+ return url.split('/').pop() ?? url;
170
+ }
171
+ return url;
172
+ }
173
+ /**
174
+ * Format source location as "file:line:col".
175
+ *
176
+ * @param stackTrace - Stack trace frames
177
+ * @returns Formatted source location string, or undefined if no source
178
+ */
179
+ function formatSourceLocation(stackTrace) {
180
+ const frame = stackTrace?.[0];
181
+ if (!frame)
182
+ return undefined;
183
+ const filename = getFilenameFromUrl(frame.url, frame.functionName);
184
+ const line = frame.lineNumber + 1;
185
+ const col = frame.columnNumber + 1;
186
+ return `${filename}:${line}:${col}`;
187
+ }
188
+ /**
189
+ * Format count prefix for deduplicated messages.
190
+ *
191
+ * @param count - Occurrence count
192
+ * @returns Formatted prefix like "[8x] " or empty string
193
+ */
194
+ function formatCountPrefix(count) {
195
+ return count > 1 ? `[${count}x] ` : '';
196
+ }
197
+ /**
198
+ * Format section header with unique/total counts.
199
+ *
200
+ * @param label - Section label (e.g., "Errors", "Warnings")
201
+ * @param unique - Number of unique messages
202
+ * @param total - Total occurrences
203
+ * @returns Formatted header string
204
+ */
205
+ function formatSectionHeader(label, unique, total) {
206
+ return unique === total ? `${label} (${total})` : `${label} (${unique} unique, ${total} total)`;
207
+ }
208
+ /**
209
+ * Render error section to formatter.
210
+ *
211
+ * @param fmt - OutputFormatter instance
212
+ * @param errors - Deduplicated error messages
213
+ * @param total - Total error count
214
+ */
215
+ function renderErrorSection(fmt, errors, total) {
216
+ if (errors.length === 0)
217
+ return;
218
+ fmt.text(formatSectionHeader('Errors', errors.length, total));
219
+ fmt.separator('─', 30);
220
+ for (const { message, count } of errors) {
221
+ fmt.text(`${formatCountPrefix(count)}${message.text}`);
222
+ const source = formatSourceLocation(message.stackTrace);
223
+ if (source) {
224
+ fmt.text(` → ${source}`);
225
+ }
226
+ fmt.blank();
227
+ }
228
+ }
229
+ /**
230
+ * Render warning section to formatter.
231
+ *
232
+ * @param fmt - OutputFormatter instance
233
+ * @param warnings - Deduplicated warning messages
234
+ * @param total - Total warning count
235
+ */
236
+ function renderWarningSection(fmt, warnings, total) {
237
+ if (warnings.length === 0)
238
+ return;
239
+ fmt.text(formatSectionHeader('Warnings', warnings.length, total));
240
+ fmt.separator('─', 30);
241
+ for (const { message, count } of warnings) {
242
+ fmt.text(`• ${formatCountPrefix(count)}${message.text}`);
243
+ }
244
+ fmt.blank();
245
+ }
246
+ /**
247
+ * Render other messages summary footer.
248
+ *
249
+ * @param fmt - OutputFormatter instance
250
+ * @param summary - Console summary with counts
251
+ */
252
+ function renderOtherSummary(fmt, summary) {
253
+ const parts = [
254
+ summary.info > 0 && pluralize(summary.info, 'info message'),
255
+ summary.debug > 0 && pluralize(summary.debug, 'debug message'),
256
+ summary.other > 0 && pluralize(summary.other, 'other message'),
257
+ ].filter(Boolean);
258
+ if (parts.length > 0) {
259
+ fmt.separator('─', 30);
260
+ fmt.text(`${parts.join(' · ')} (use --list to see)`);
261
+ }
262
+ }
263
+ /**
264
+ * Format console output as smart summary (default mode).
265
+ *
266
+ * Prioritizes errors and warnings with deduplication and counts.
267
+ * Shows info/debug as summary counts only.
268
+ *
269
+ * @param messages - All console messages
270
+ * @returns Formatted summary string
271
+ */
272
+ export function formatConsoleSummary(messages) {
273
+ const fmt = new OutputFormatter();
274
+ const { grouped, summary } = analyzeMessages(messages);
275
+ fmt.text('Console Summary');
276
+ fmt.separator('━', 60);
277
+ fmt.blank();
278
+ renderErrorSection(fmt, grouped.errors, summary.errors.total);
279
+ renderWarningSection(fmt, grouped.warnings, summary.warnings.total);
280
+ if (grouped.errors.length === 0 && grouped.warnings.length === 0) {
281
+ fmt.text('No errors or warnings found');
282
+ fmt.blank();
283
+ }
284
+ renderOtherSummary(fmt, summary);
285
+ return fmt.build();
286
+ }
287
+ /** Maximum text length before truncation in list view */
288
+ const MAX_LIST_TEXT_LENGTH = 200;
289
+ /**
290
+ * Format console output as chronological list (--list mode).
291
+ *
292
+ * Shows all messages in order with timestamps and levels.
293
+ * Includes navigation markers when page reloads are detected.
294
+ *
295
+ * @param messages - All console messages
296
+ * @param options - Format options
297
+ * @returns Formatted chronological list string
298
+ */
299
+ export function formatConsoleChronological(messages, options) {
300
+ const fmt = new OutputFormatter();
301
+ let displayMessages = messages;
302
+ if (options.last && options.last > 0) {
303
+ displayMessages = messages.slice(-options.last);
304
+ }
305
+ const headerSuffix = options.history ? ' (all navigations)' : '';
306
+ const header = displayMessages.length === messages.length
307
+ ? `Console Messages (${messages.length} total)${headerSuffix}`
308
+ : `Console Messages (last ${displayMessages.length} of ${messages.length})${headerSuffix}`;
309
+ fmt.text(header);
310
+ fmt.separator('━', 50);
311
+ if (displayMessages.length === 0) {
312
+ fmt.text('No console messages');
313
+ return fmt.build();
314
+ }
315
+ const baseIndex = messages.length - displayMessages.length;
316
+ let lastNavigationId;
317
+ for (const [i, msg] of displayMessages.entries()) {
318
+ const index = baseIndex + i;
319
+ const time = formatTimestamp(msg.timestamp);
320
+ const level = msg.type.padEnd(7);
321
+ // Show navigation marker when page reloads
322
+ if (msg.navigationId !== undefined && msg.navigationId !== lastNavigationId) {
323
+ if (lastNavigationId !== undefined) {
324
+ fmt.blank();
325
+ fmt.text(`─── Page Reload (navigation #${msg.navigationId}) ───`);
326
+ fmt.blank();
327
+ }
328
+ lastNavigationId = msg.navigationId;
329
+ }
330
+ const truncatedText = truncateByLength(msg.text, MAX_LIST_TEXT_LENGTH);
331
+ fmt.text(`[${index}] ${level} ${time} ${truncatedText}`);
332
+ const source = formatSourceLocation(msg.stackTrace);
333
+ if (source) {
334
+ fmt.text(` → ${source}`);
335
+ }
336
+ }
337
+ return fmt.build();
338
+ }
339
+ /**
340
+ * Format console output for follow mode streaming.
341
+ *
342
+ * Compact format optimized for live updates.
343
+ *
344
+ * @param messages - Recent console messages to display
345
+ * @returns Formatted streaming output string
346
+ */
347
+ export function formatConsoleFollow(messages) {
348
+ const fmt = new OutputFormatter();
349
+ fmt.text('Streaming console... (Ctrl+C to stop)');
350
+ fmt.separator('━', 40);
351
+ if (messages.length === 0) {
352
+ fmt.text('Waiting for messages...');
353
+ return fmt.build();
354
+ }
355
+ for (const msg of messages) {
356
+ const time = formatTimestamp(msg.timestamp);
357
+ const level = msg.type.padEnd(7);
358
+ fmt.text(`${time} ${level} ${msg.text}`);
359
+ const source = formatSourceLocation(msg.stackTrace);
360
+ if (source) {
361
+ fmt.text(` → ${source}`);
362
+ }
363
+ }
364
+ return fmt.build();
365
+ }
366
+ /**
367
+ * Convert deduplicated message to JSON error format.
368
+ *
369
+ * @param dedup - Deduplicated message
370
+ * @param includeStackTrace - Whether to include full stack trace
371
+ * @returns JSON-serializable error object
372
+ */
373
+ function toJsonError(dedup, includeStackTrace) {
374
+ const source = dedup.message.stackTrace?.[0];
375
+ return {
376
+ count: dedup.count,
377
+ level: dedup.message.type,
378
+ text: dedup.message.text,
379
+ ...(source && {
380
+ source: {
381
+ url: source.url,
382
+ line: source.lineNumber + 1,
383
+ column: source.columnNumber + 1,
384
+ },
385
+ }),
386
+ ...(includeStackTrace && dedup.message.stackTrace && { stackTrace: dedup.message.stackTrace }),
387
+ };
388
+ }
389
+ /**
390
+ * Format console output as JSON.
391
+ *
392
+ * Structured output with summary statistics and deduplicated errors/warnings.
393
+ *
394
+ * @param messages - All console messages
395
+ * @param options - Format options
396
+ * @returns JSON string
397
+ */
398
+ export function formatConsoleJson(messages, options) {
399
+ const { grouped, summary } = analyzeMessages(messages);
400
+ const output = {
401
+ success: true,
402
+ summary,
403
+ errors: grouped.errors.map((d) => toJsonError(d, true)),
404
+ warnings: grouped.warnings.map((d) => toJsonError(d, false)),
405
+ };
406
+ if (options.list) {
407
+ const displayMessages = options.last && options.last > 0 ? messages.slice(-options.last) : messages;
408
+ output.messages = displayMessages;
409
+ }
410
+ return JSON.stringify(output, null, 2);
411
+ }
412
+ /**
413
+ * Format console output based on options.
414
+ *
415
+ * Main entry point for console formatting. Routes to appropriate formatter
416
+ * based on options (json, list, follow).
417
+ *
418
+ * @param messages - All console messages
419
+ * @param options - Format options
420
+ * @returns Formatted output string
421
+ */
422
+ export function formatConsole(messages, options) {
423
+ if (options.json) {
424
+ return formatConsoleJson(messages, options);
425
+ }
426
+ if (options.list) {
427
+ return formatConsoleChronological(messages, options);
428
+ }
429
+ return formatConsoleSummary(messages);
430
+ }
431
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/ui/formatters/console.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { DomQueryResult, DomGetResult } from '../../types/dom.js';
1
+ import type { DomQueryResult, DomGetResult } from '../../types.js';
2
2
  /**
3
3
  * Format DOM query results for human-readable output.
4
4
  *
5
- * Displays found elements with their index, tag, classes, and preview text.
6
- * Shows helpful message when no elements are found.
5
+ * Displays found nodes with their index, tag, classes, and preview text.
6
+ * Shows helpful message when no nodes are found.
7
7
  *
8
8
  * @param data - DOM query result containing selector, count, and matching nodes
9
9
  * @returns Formatted output string
@@ -19,7 +19,7 @@ import type { DomQueryResult, DomGetResult } from '../../types/dom.js';
19
19
  * ]
20
20
  * });
21
21
  * // Output:
22
- * // Found 2 elements matching ".error":
22
+ * // Found 2 nodes matching ".error":
23
23
  * // [0] <div class="error"> Invalid input
24
24
  * // [1] <span class="error"> Required field
25
25
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAmC3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAcvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CAwBT"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAmC3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAcvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CAwBT"}
@@ -2,8 +2,8 @@ import { OutputFormatter } from '../../ui/formatting.js';
2
2
  /**
3
3
  * Format DOM query results for human-readable output.
4
4
  *
5
- * Displays found elements with their index, tag, classes, and preview text.
6
- * Shows helpful message when no elements are found.
5
+ * Displays found nodes with their index, tag, classes, and preview text.
6
+ * Shows helpful message when no nodes are found.
7
7
  *
8
8
  * @param data - DOM query result containing selector, count, and matching nodes
9
9
  * @returns Formatted output string
@@ -19,7 +19,7 @@ import { OutputFormatter } from '../../ui/formatting.js';
19
19
  * ]
20
20
  * });
21
21
  * // Output:
22
- * // Found 2 elements matching ".error":
22
+ * // Found 2 nodes matching ".error":
23
23
  * // [0] <div class="error"> Invalid input
24
24
  * // [1] <span class="error"> Required field
25
25
  * ```
@@ -30,7 +30,7 @@ export function formatDomQuery(data) {
30
30
  if (count === 0) {
31
31
  const safeSelector = selector.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
32
32
  return fmt
33
- .text(`No elements found matching "${selector}"`)
33
+ .text(`No nodes found matching "${selector}"`)
34
34
  .blank()
35
35
  .section('Suggestions:', [
36
36
  `Verify selector: bdg dom eval "document.querySelector('${safeSelector}')"`,
@@ -45,7 +45,7 @@ export function formatDomQuery(data) {
45
45
  const hasMultipleResults = count > 1;
46
46
  const exampleIndex = hasMultipleResults ? (nodes[0]?.index ?? 0) : 0;
47
47
  return fmt
48
- .text(`Found ${count} element${count === 1 ? '' : 's'} matching "${selector}":`)
48
+ .text(`Found ${count} node${count === 1 ? '' : 's'} matching "${selector}":`)
49
49
  .list(nodeLines)
50
50
  .blank()
51
51
  .section('Next steps:', [
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/ui/formatters/dom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Network list formatter for bdg network list command.
3
+ *
4
+ * Provides human-readable and JSON output formats for network requests
5
+ * with support for filtering results display.
6
+ */
7
+ import type { NetworkRequest } from '../../types.js';
8
+ export interface NetworkListOptions {
9
+ json?: boolean;
10
+ verbose?: boolean;
11
+ last?: number;
12
+ totalCount?: number;
13
+ follow?: boolean;
14
+ }
15
+ /**
16
+ * Format network requests for display.
17
+ */
18
+ export declare function formatNetworkList(requests: NetworkRequest[], options: NetworkListOptions): string;
19
+ //# sourceMappingURL=networkList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkList.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/networkList.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqGD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAIjG"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Network list formatter for bdg network list command.
3
+ *
4
+ * Provides human-readable and JSON output formats for network requests
5
+ * with support for filtering results display.
6
+ */
7
+ import { getResourceTypeAbbr } from '../../ui/formatters/preview.js';
8
+ import { OutputFormatter, truncateUrl } from '../../ui/formatting.js';
9
+ const SIZE_UNITS = ['B', 'KB', 'MB', 'GB'];
10
+ const SEPARATOR_WIDTH = 80;
11
+ const COLUMN_HEADER = '[ID] STS METH TYP SIZE URL';
12
+ function formatSize(bytes) {
13
+ if (bytes === undefined || bytes === 0)
14
+ return '-';
15
+ let size = bytes;
16
+ let unitIndex = 0;
17
+ while (size >= 1024 && unitIndex < SIZE_UNITS.length - 1) {
18
+ size /= 1024;
19
+ unitIndex++;
20
+ }
21
+ const formatted = size < 10 ? size.toFixed(1) : Math.round(size).toString();
22
+ return `${formatted} ${SIZE_UNITS[unitIndex]}`;
23
+ }
24
+ function formatStatus(status) {
25
+ if (status === undefined || status === 0)
26
+ return 'PND';
27
+ return `${status}`;
28
+ }
29
+ function formatRequestLine(request, verbose) {
30
+ const id = request.requestId.padEnd(4);
31
+ const status = formatStatus(request.status).padEnd(3);
32
+ const method = request.method.padEnd(4);
33
+ const type = getResourceTypeAbbr(request.resourceType, request.mimeType);
34
+ const size = formatSize(request.encodedDataLength).padStart(8);
35
+ const urlMaxLength = verbose ? 120 : 50;
36
+ const url = verbose ? request.url : truncateUrl(request.url, urlMaxLength);
37
+ return `[${id}] ${status} ${method} ${type} ${size} ${url}`;
38
+ }
39
+ function buildHeader(options, showingCount, totalCount) {
40
+ if (options.follow) {
41
+ return `NETWORK REQUESTS (showing ${showingCount} of ${totalCount})`;
42
+ }
43
+ const lastLimit = options.last ?? 0;
44
+ if (lastLimit > 0 && totalCount > showingCount) {
45
+ return `NETWORK REQUESTS (last ${showingCount} of ${totalCount})`;
46
+ }
47
+ return `NETWORK REQUESTS (${totalCount})`;
48
+ }
49
+ function formatNetworkListHuman(requests, options) {
50
+ const fmt = new OutputFormatter();
51
+ const totalCount = options.totalCount ?? requests.length;
52
+ const header = buildHeader(options, requests.length, totalCount);
53
+ fmt.text(header);
54
+ fmt.separator('─', SEPARATOR_WIDTH);
55
+ if (requests.length === 0) {
56
+ fmt.text('No matching requests found.');
57
+ return fmt.build();
58
+ }
59
+ fmt.text(COLUMN_HEADER);
60
+ fmt.separator('─', SEPARATOR_WIDTH);
61
+ const verbose = options.verbose ?? false;
62
+ for (const request of requests) {
63
+ fmt.text(formatRequestLine(request, verbose));
64
+ }
65
+ return fmt.build();
66
+ }
67
+ function formatNetworkListJson(requests, options) {
68
+ const totalCount = options.totalCount ?? requests.length;
69
+ const output = {
70
+ success: true,
71
+ data: requests,
72
+ count: requests.length,
73
+ totalCount,
74
+ filtered: requests.length !== totalCount,
75
+ };
76
+ return JSON.stringify(output, null, 2);
77
+ }
78
+ /**
79
+ * Format network requests for display.
80
+ */
81
+ export function formatNetworkList(requests, options) {
82
+ return options.json
83
+ ? formatNetworkListJson(requests, options)
84
+ : formatNetworkListHuman(requests, options);
85
+ }
86
+ //# sourceMappingURL=networkList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkList.js","sourceRoot":"","sources":["../../../src/ui/formatters/networkList.ts"],"names":[],"mappings":"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"}