browser-debugger-cli 0.6.1 → 0.6.2
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.
- package/README.md +55 -0
- package/dist/__tests__/smoke/error-handling.smoke.test.js +9 -4
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js +27 -24
- package/dist/__tests__/smoke/session-lifecycle.smoke.test.js.map +1 -1
- package/dist/__testutils__/daemonHelpers.d.ts +13 -1
- package/dist/__testutils__/daemonHelpers.d.ts.map +1 -1
- package/dist/__testutils__/daemonHelpers.js +54 -5
- package/dist/__testutils__/daemonHelpers.js.map +1 -1
- package/dist/cdp/protocol.d.ts.map +1 -1
- package/dist/cdp/protocol.js +9 -7
- package/dist/cdp/protocol.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +21 -6
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/dom/a11y.d.ts +18 -0
- package/dist/commands/dom/a11y.d.ts.map +1 -0
- package/dist/commands/dom/a11y.js +134 -0
- package/dist/commands/dom/a11y.js.map +1 -0
- package/dist/commands/dom/evalHelpers.js +1 -1
- package/dist/commands/dom/evalHelpers.js.map +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -1
- package/dist/commands/dom/index.js +41 -20
- package/dist/commands/dom/index.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +2 -0
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +12 -4
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/types.d.ts +3 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts +19 -0
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js +212 -0
- package/dist/daemon/__tests__/ipcServer.cleanup.unit.test.js.map +1 -0
- package/dist/daemon/launcher.d.ts.map +1 -1
- package/dist/daemon/launcher.js +4 -3
- package/dist/daemon/launcher.js.map +1 -1
- package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -1
- package/dist/daemon/lifecycle/workerCleanup.js +1 -1
- package/dist/daemon/lifecycle/workerCleanup.js.map +1 -1
- package/dist/daemon/services/SessionService.js +1 -1
- package/dist/daemon/services/SessionService.js.map +1 -1
- package/dist/ipc/__tests__/client.contract.test.js +251 -19
- package/dist/ipc/__tests__/client.contract.test.js.map +1 -1
- package/dist/ipc/__tests__/jsonl.unit.test.js +19 -1
- package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -1
- package/dist/ipc/transport/jsonl.d.ts +16 -0
- package/dist/ipc/transport/jsonl.d.ts.map +1 -1
- package/dist/ipc/transport/jsonl.js +25 -0
- package/dist/ipc/transport/jsonl.js.map +1 -1
- package/dist/session/chrome.js +2 -2
- package/dist/session/chrome.js.map +1 -1
- package/dist/session/cleanup.d.ts +21 -0
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +101 -1
- package/dist/session/cleanup.js.map +1 -1
- package/dist/session/lock.js +1 -1
- package/dist/session/lock.js.map +1 -1
- package/dist/telemetry/__tests__/a11y.unit.test.d.ts +10 -0
- package/dist/telemetry/__tests__/a11y.unit.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/a11y.unit.test.js +265 -0
- package/dist/telemetry/__tests__/a11y.unit.test.js.map +1 -0
- package/dist/telemetry/a11y.d.ts +78 -0
- package/dist/telemetry/a11y.d.ts.map +1 -0
- package/dist/telemetry/a11y.js +280 -0
- package/dist/telemetry/a11y.js.map +1 -0
- package/dist/telemetry/dom.d.ts +1 -1
- package/dist/telemetry/dom.d.ts.map +1 -1
- package/dist/telemetry/dom.js +32 -1
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts +2 -0
- package/dist/ui/formatters/__tests__/semantic.unit.test.d.ts.map +1 -0
- package/dist/ui/formatters/__tests__/semantic.unit.test.js +111 -0
- package/dist/ui/formatters/__tests__/semantic.unit.test.js.map +1 -0
- package/dist/ui/formatters/a11y.d.ts +30 -0
- package/dist/ui/formatters/a11y.d.ts.map +1 -0
- package/dist/ui/formatters/a11y.js +178 -0
- package/dist/ui/formatters/a11y.js.map +1 -0
- package/dist/ui/formatters/preview.d.ts +2 -0
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +27 -4
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/semantic.d.ts +36 -0
- package/dist/ui/formatters/semantic.d.ts.map +1 -0
- package/dist/ui/formatters/semantic.js +98 -0
- package/dist/ui/formatters/semantic.js.map +1 -0
- package/dist/ui/formatters/status.js +1 -1
- package/dist/ui/formatters/status.js.map +1 -1
- package/dist/ui/messages/commands.d.ts +7 -0
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +9 -0
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/utils/__tests__/errors.unit.test.d.ts +12 -0
- package/dist/utils/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/utils/__tests__/errors.unit.test.js +255 -0
- package/dist/utils/__tests__/errors.unit.test.js.map +1 -0
- package/dist/utils/__tests__/http.unit.test.d.ts +12 -0
- package/dist/utils/__tests__/http.unit.test.d.ts.map +1 -0
- package/dist/utils/__tests__/http.unit.test.js +218 -0
- package/dist/utils/__tests__/http.unit.test.js.map +1 -0
- package/dist/utils/__tests__/process.unit.test.d.ts +14 -0
- package/dist/utils/__tests__/process.unit.test.d.ts.map +1 -0
- package/dist/utils/__tests__/process.unit.test.js +124 -0
- package/dist/utils/__tests__/process.unit.test.js.map +1 -0
- package/dist/utils/__tests__/session.contract.test.js +1 -1
- package/dist/utils/__tests__/session.contract.test.js.map +1 -1
- package/package.json +22 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { OutputFormatter } from '../../ui/formatting.js';
|
|
2
|
+
/**
|
|
3
|
+
* Maximum number of nodes to display in tree output before truncating.
|
|
4
|
+
* Prevents overwhelming terminal output for large accessibility trees.
|
|
5
|
+
*/
|
|
6
|
+
const MAX_TREE_NODES_DISPLAY = 50;
|
|
7
|
+
/**
|
|
8
|
+
* Separator width for section dividers in formatted output.
|
|
9
|
+
*/
|
|
10
|
+
const SEPARATOR_WIDTH = 50;
|
|
11
|
+
/**
|
|
12
|
+
* Format accessibility tree for human-readable output.
|
|
13
|
+
*
|
|
14
|
+
* Displays the tree structure with role, name, and key properties.
|
|
15
|
+
* Shows up to 50 nodes by default for manageable output.
|
|
16
|
+
*
|
|
17
|
+
* @param tree - Accessibility tree data
|
|
18
|
+
* @returns Formatted output string
|
|
19
|
+
*/
|
|
20
|
+
export function formatA11yTree(tree) {
|
|
21
|
+
const fmt = new OutputFormatter();
|
|
22
|
+
fmt.text(`Accessibility Tree (${tree.count} nodes)`).separator('─', SEPARATOR_WIDTH).blank();
|
|
23
|
+
const nodes = Array.from(tree.nodes.values()).slice(0, MAX_TREE_NODES_DISPLAY);
|
|
24
|
+
for (const node of nodes) {
|
|
25
|
+
fmt.text(formatA11yNodeOneLine(node));
|
|
26
|
+
}
|
|
27
|
+
if (tree.count > MAX_TREE_NODES_DISPLAY) {
|
|
28
|
+
fmt
|
|
29
|
+
.blank()
|
|
30
|
+
.text(`... and ${tree.count - MAX_TREE_NODES_DISPLAY} more nodes`)
|
|
31
|
+
.text('Use --json flag for complete output');
|
|
32
|
+
}
|
|
33
|
+
return fmt.build();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Format query result for human-readable output.
|
|
37
|
+
*
|
|
38
|
+
* Shows matching nodes with their role, name, and properties.
|
|
39
|
+
*
|
|
40
|
+
* @param result - Query result with matching nodes
|
|
41
|
+
* @returns Formatted output string
|
|
42
|
+
*/
|
|
43
|
+
export function formatA11yQueryResult(result) {
|
|
44
|
+
const fmt = new OutputFormatter();
|
|
45
|
+
const patternParts = [];
|
|
46
|
+
if (result.pattern.role) {
|
|
47
|
+
patternParts.push(`role:${result.pattern.role}`);
|
|
48
|
+
}
|
|
49
|
+
if (result.pattern.name) {
|
|
50
|
+
patternParts.push(`name:${result.pattern.name}`);
|
|
51
|
+
}
|
|
52
|
+
if (result.pattern.description) {
|
|
53
|
+
patternParts.push(`description:${result.pattern.description}`);
|
|
54
|
+
}
|
|
55
|
+
const patternStr = patternParts.join(' ');
|
|
56
|
+
fmt
|
|
57
|
+
.text(`Found ${result.count} element${result.count === 1 ? '' : 's'} matching "${patternStr}"`)
|
|
58
|
+
.separator('─', SEPARATOR_WIDTH)
|
|
59
|
+
.blank();
|
|
60
|
+
for (const node of result.nodes) {
|
|
61
|
+
fmt.text(formatA11yNodeOneLine(node)).blank();
|
|
62
|
+
}
|
|
63
|
+
return fmt.build();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Format single accessibility node for human-readable output.
|
|
67
|
+
*
|
|
68
|
+
* Shows detailed properties including role, name, description, value, and states.
|
|
69
|
+
*
|
|
70
|
+
* @param node - Accessibility node
|
|
71
|
+
* @returns Formatted output string
|
|
72
|
+
*/
|
|
73
|
+
export function formatA11yNode(node) {
|
|
74
|
+
const fmt = new OutputFormatter();
|
|
75
|
+
fmt.text(`Accessibility Node: ${node.role}`).separator('─', SEPARATOR_WIDTH).blank();
|
|
76
|
+
const props = [];
|
|
77
|
+
if (node.name) {
|
|
78
|
+
props.push(['Name', node.name]);
|
|
79
|
+
}
|
|
80
|
+
if (node.description) {
|
|
81
|
+
props.push(['Description', node.description]);
|
|
82
|
+
}
|
|
83
|
+
if (node.value !== undefined) {
|
|
84
|
+
props.push(['Value', node.value]);
|
|
85
|
+
}
|
|
86
|
+
if (node.focusable) {
|
|
87
|
+
props.push(['Focusable', 'yes']);
|
|
88
|
+
}
|
|
89
|
+
if (node.focused) {
|
|
90
|
+
props.push(['Focused', 'yes']);
|
|
91
|
+
}
|
|
92
|
+
if (node.disabled) {
|
|
93
|
+
props.push(['Disabled', 'yes']);
|
|
94
|
+
}
|
|
95
|
+
if (node.required) {
|
|
96
|
+
props.push(['Required', 'yes']);
|
|
97
|
+
}
|
|
98
|
+
props.push(['Node ID', node.nodeId]);
|
|
99
|
+
if (node.backendDOMNodeId) {
|
|
100
|
+
props.push(['DOM Node ID', String(node.backendDOMNodeId)]);
|
|
101
|
+
}
|
|
102
|
+
fmt.keyValueList(props, 16);
|
|
103
|
+
if (node.properties && Object.keys(node.properties).length > 0) {
|
|
104
|
+
fmt.blank().text('Additional Properties:').blank();
|
|
105
|
+
const additionalProps = Object.entries(node.properties).map(([key, value]) => [key, String(value)]);
|
|
106
|
+
fmt.keyValueList(additionalProps, 20);
|
|
107
|
+
}
|
|
108
|
+
return fmt.build();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Format accessibility node as single line (for tree/query output).
|
|
112
|
+
*
|
|
113
|
+
* Compact format: [Role] "Name" (states)
|
|
114
|
+
*
|
|
115
|
+
* @param node - Accessibility node
|
|
116
|
+
* @returns Single-line formatted string
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* formatA11yNodeOneLine({
|
|
121
|
+
* role: 'button',
|
|
122
|
+
* name: 'Submit',
|
|
123
|
+
* focusable: true,
|
|
124
|
+
* disabled: false
|
|
125
|
+
* });
|
|
126
|
+
* // => '[Button] "Submit" (focusable)'
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
function formatA11yNodeOneLine(node) {
|
|
130
|
+
const parts = [];
|
|
131
|
+
parts.push(`[${capitalize(node.role)}]`);
|
|
132
|
+
if (node.name) {
|
|
133
|
+
parts.push(`"${node.name}"`);
|
|
134
|
+
}
|
|
135
|
+
const states = [];
|
|
136
|
+
if (node.value !== undefined && node.value !== '') {
|
|
137
|
+
states.push(`value: ${truncate(node.value, 30)}`);
|
|
138
|
+
}
|
|
139
|
+
if (node.focused) {
|
|
140
|
+
states.push('focused');
|
|
141
|
+
}
|
|
142
|
+
if (node.disabled) {
|
|
143
|
+
states.push('disabled');
|
|
144
|
+
}
|
|
145
|
+
if (node.required) {
|
|
146
|
+
states.push('required');
|
|
147
|
+
}
|
|
148
|
+
if (node.focusable && states.length === 0) {
|
|
149
|
+
states.push('focusable');
|
|
150
|
+
}
|
|
151
|
+
if (states.length > 0) {
|
|
152
|
+
parts.push(`(${states.join(', ')})`);
|
|
153
|
+
}
|
|
154
|
+
return parts.join(' ');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Capitalize first letter of string.
|
|
158
|
+
*
|
|
159
|
+
* @param str - Input string
|
|
160
|
+
* @returns Capitalized string
|
|
161
|
+
*/
|
|
162
|
+
function capitalize(str) {
|
|
163
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Truncate string to max length with ellipsis.
|
|
167
|
+
*
|
|
168
|
+
* @param str - Input string
|
|
169
|
+
* @param maxLen - Maximum length
|
|
170
|
+
* @returns Truncated string
|
|
171
|
+
*/
|
|
172
|
+
function truncate(str, maxLen) {
|
|
173
|
+
if (str.length <= maxLen) {
|
|
174
|
+
return str;
|
|
175
|
+
}
|
|
176
|
+
return str.substring(0, maxLen - 3) + '...';
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=a11y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a11y.js","sourceRoot":"","sources":["../../../src/ui/formatters/a11y.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export interface PreviewOptions {
|
|
|
9
9
|
network?: boolean | undefined;
|
|
10
10
|
/** Limit output to console messages (ignores network data). */
|
|
11
11
|
console?: boolean | undefined;
|
|
12
|
+
/** Show DOM/A11y tree data. */
|
|
13
|
+
dom?: boolean | undefined;
|
|
12
14
|
/** Number of recent entries to include. */
|
|
13
15
|
last: number;
|
|
14
16
|
/** Use the expanded, human-friendly layout. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAWzC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAMhF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OutputFormatter, truncateUrl, truncateText } from '../../ui/formatting.js';
|
|
2
2
|
import { PREVIEW_EMPTY_STATES, PREVIEW_HEADERS, compactTipsMessage, verboseCommandsMessage, } from '../../ui/messages/preview.js';
|
|
3
|
+
import { semantic } from './semantic.js';
|
|
3
4
|
/**
|
|
4
5
|
* Format preview output (peek command)
|
|
5
6
|
*/
|
|
@@ -12,8 +13,8 @@ export function formatPreview(output, options) {
|
|
|
12
13
|
/**
|
|
13
14
|
* Format preview as JSON
|
|
14
15
|
*
|
|
15
|
-
* Returns the output
|
|
16
|
-
*
|
|
16
|
+
* Returns the output in standard bdg JSON format (consistent with stop command).
|
|
17
|
+
* BREAKING CHANGE: Previously wrapped in preview object, now returns at root level.
|
|
17
18
|
*/
|
|
18
19
|
function formatPreviewAsJson(output, options) {
|
|
19
20
|
// Build a new data object so we never mutate the original output
|
|
@@ -21,9 +22,15 @@ function formatPreviewAsJson(output, options) {
|
|
|
21
22
|
// Apply filters
|
|
22
23
|
if (options.network) {
|
|
23
24
|
delete data.console;
|
|
25
|
+
delete data.dom;
|
|
24
26
|
}
|
|
25
27
|
if (options.console) {
|
|
26
28
|
delete data.network;
|
|
29
|
+
delete data.dom;
|
|
30
|
+
}
|
|
31
|
+
if (options.dom) {
|
|
32
|
+
delete data.network;
|
|
33
|
+
delete data.console;
|
|
27
34
|
}
|
|
28
35
|
// Apply --last limit
|
|
29
36
|
const lastCount = options.last;
|
|
@@ -35,12 +42,12 @@ function formatPreviewAsJson(output, options) {
|
|
|
35
42
|
data.console = data.console.slice(-lastCount);
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
|
-
//
|
|
45
|
+
// Return standard bdg output format (consistent with stop command)
|
|
39
46
|
const jsonOutput = {
|
|
40
47
|
...output,
|
|
41
48
|
data,
|
|
42
49
|
};
|
|
43
|
-
return JSON.stringify(
|
|
50
|
+
return JSON.stringify(jsonOutput, null, 2);
|
|
44
51
|
}
|
|
45
52
|
/**
|
|
46
53
|
* Format preview as human-readable output
|
|
@@ -108,6 +115,22 @@ function formatPreviewCompact(output, options) {
|
|
|
108
115
|
fmt.blank();
|
|
109
116
|
}
|
|
110
117
|
}
|
|
118
|
+
// Show DOM/A11y tree if --dom flag is present
|
|
119
|
+
if (options.dom && output.data.dom?.a11yTree) {
|
|
120
|
+
const tree = output.data.dom.a11yTree;
|
|
121
|
+
fmt.text(`DOM/A11Y TREE (${tree.count} nodes):`);
|
|
122
|
+
const treeWithMap = {
|
|
123
|
+
root: tree.root,
|
|
124
|
+
nodes: new Map(Object.entries(tree.nodes)),
|
|
125
|
+
count: tree.count,
|
|
126
|
+
};
|
|
127
|
+
fmt.text(semantic(treeWithMap));
|
|
128
|
+
fmt.blank();
|
|
129
|
+
}
|
|
130
|
+
else if (options.dom) {
|
|
131
|
+
fmt.text(`DOM: ${PREVIEW_EMPTY_STATES.NO_DATA}`);
|
|
132
|
+
fmt.blank();
|
|
133
|
+
}
|
|
111
134
|
// Suppress tips in follow mode to reduce screen clutter during live updates
|
|
112
135
|
if (!options.follow) {
|
|
113
136
|
fmt.text(compactTipsMessage());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/ui/formatters/preview.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../src/ui/formatters/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic output formatter for accessibility trees.
|
|
3
|
+
*
|
|
4
|
+
* Converts accessibility tree to token-optimized Markdown-style format.
|
|
5
|
+
* Used by dom get, peek --dom, and session.json output.
|
|
6
|
+
*/
|
|
7
|
+
import type { A11yTree } from '../../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Format accessibility tree as semantic output.
|
|
10
|
+
*
|
|
11
|
+
* Presents page structure using ARIA roles and accessible names.
|
|
12
|
+
* Optimized for token efficiency (70% reduction vs raw HTML).
|
|
13
|
+
*
|
|
14
|
+
* Output format:
|
|
15
|
+
* - Indented tree structure (2 spaces per level)
|
|
16
|
+
* - [Role] "Name" format for each node
|
|
17
|
+
* - Key properties: (focusable), (disabled), (required)
|
|
18
|
+
* - Heading levels: [Heading L1]
|
|
19
|
+
*
|
|
20
|
+
* @param tree - Accessibility tree from collectA11yTree()
|
|
21
|
+
* @returns Markdown-style semantic structure
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const tree = await collectA11yTree();
|
|
26
|
+
* const output = semantic(tree);
|
|
27
|
+
* console.log(output);
|
|
28
|
+
* // [RootWebArea] "GitHub"
|
|
29
|
+
* // [Banner]
|
|
30
|
+
* // [Link] "Skip to content" (focusable)
|
|
31
|
+
* // [Main]
|
|
32
|
+
* // [Heading L1] "Trending"
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function semantic(tree: A11yTree): string;
|
|
36
|
+
//# sourceMappingURL=semantic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../src/ui/formatters/semantic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAuB/C"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic output formatter for accessibility trees.
|
|
3
|
+
*
|
|
4
|
+
* Converts accessibility tree to token-optimized Markdown-style format.
|
|
5
|
+
* Used by dom get, peek --dom, and session.json output.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Format accessibility tree as semantic output.
|
|
9
|
+
*
|
|
10
|
+
* Presents page structure using ARIA roles and accessible names.
|
|
11
|
+
* Optimized for token efficiency (70% reduction vs raw HTML).
|
|
12
|
+
*
|
|
13
|
+
* Output format:
|
|
14
|
+
* - Indented tree structure (2 spaces per level)
|
|
15
|
+
* - [Role] "Name" format for each node
|
|
16
|
+
* - Key properties: (focusable), (disabled), (required)
|
|
17
|
+
* - Heading levels: [Heading L1]
|
|
18
|
+
*
|
|
19
|
+
* @param tree - Accessibility tree from collectA11yTree()
|
|
20
|
+
* @returns Markdown-style semantic structure
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const tree = await collectA11yTree();
|
|
25
|
+
* const output = semantic(tree);
|
|
26
|
+
* console.log(output);
|
|
27
|
+
* // [RootWebArea] "GitHub"
|
|
28
|
+
* // [Banner]
|
|
29
|
+
* // [Link] "Skip to content" (focusable)
|
|
30
|
+
* // [Main]
|
|
31
|
+
* // [Heading L1] "Trending"
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function semantic(tree) {
|
|
35
|
+
const lines = [];
|
|
36
|
+
function traverse(nodeId, depth) {
|
|
37
|
+
const node = tree.nodes.get(nodeId);
|
|
38
|
+
if (!node)
|
|
39
|
+
return;
|
|
40
|
+
const indent = ' '.repeat(depth);
|
|
41
|
+
const roleText = formatRole(node);
|
|
42
|
+
const nameText = node.name ? ` "${node.name}"` : '';
|
|
43
|
+
const propsText = formatProps(node);
|
|
44
|
+
lines.push(`${indent}${roleText}${nameText}${propsText}`);
|
|
45
|
+
if (node.childIds) {
|
|
46
|
+
for (const childId of node.childIds) {
|
|
47
|
+
traverse(childId, depth + 1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
traverse(tree.root.nodeId, 0);
|
|
52
|
+
return lines.join('\n');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Format role with special handling for headings.
|
|
56
|
+
*
|
|
57
|
+
* @param node - Accessibility node
|
|
58
|
+
* @returns Formatted role string
|
|
59
|
+
*/
|
|
60
|
+
function formatRole(node) {
|
|
61
|
+
const role = capitalize(node.role);
|
|
62
|
+
if (node.role.toLowerCase() === 'heading' && node.properties?.['level'] !== undefined) {
|
|
63
|
+
const level = node.properties['level'];
|
|
64
|
+
const levelNum = typeof level === 'number' ? level : Number(level);
|
|
65
|
+
if (!isNaN(levelNum)) {
|
|
66
|
+
return `[Heading L${levelNum}]`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return `[${role}]`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Format node properties as parenthesized list.
|
|
73
|
+
*
|
|
74
|
+
* @param node - Accessibility node
|
|
75
|
+
* @returns Formatted properties string
|
|
76
|
+
*/
|
|
77
|
+
function formatProps(node) {
|
|
78
|
+
const props = [];
|
|
79
|
+
if (node.focusable)
|
|
80
|
+
props.push('focusable');
|
|
81
|
+
if (node.focused)
|
|
82
|
+
props.push('focused');
|
|
83
|
+
if (node.disabled)
|
|
84
|
+
props.push('disabled');
|
|
85
|
+
if (node.required)
|
|
86
|
+
props.push('required');
|
|
87
|
+
return props.length > 0 ? ` (${props.join(', ')})` : '';
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Capitalize first letter of string.
|
|
91
|
+
*
|
|
92
|
+
* @param str - Input string
|
|
93
|
+
* @returns Capitalized string
|
|
94
|
+
*/
|
|
95
|
+
function capitalize(str) {
|
|
96
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=semantic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../src/ui/formatters/semantic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,QAAQ,CAAC,MAAc,EAAE,KAAa;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAEpC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,OAAO,aAAa,QAAQ,GAAG,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,IAAI,GAAG,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAc;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getChromeDiagnostics } from '../../connection/diagnostics.js';
|
|
2
|
-
import { isProcessAlive } from '../../session/process.js';
|
|
3
2
|
import { calculateDuration, formatTimeAgo } from '../../session/statusData.js';
|
|
4
3
|
import { OutputFormatter } from '../../ui/formatting.js';
|
|
5
4
|
import { formatDiagnosticsForStatus } from '../../ui/messages/chrome.js';
|
|
5
|
+
import { isProcessAlive } from '../../utils/process.js';
|
|
6
6
|
import { VERSION } from '../../utils/version.js';
|
|
7
7
|
/**
|
|
8
8
|
* Format session status for human-readable output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/ui/formatters/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/ui/formatters/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,13 @@
|
|
|
11
11
|
* @returns Formatted success message
|
|
12
12
|
*/
|
|
13
13
|
export declare function chromeKilledMessage(pid?: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate orphaned daemons cleaned message.
|
|
16
|
+
*
|
|
17
|
+
* @param count - Number of orphaned daemons cleaned up
|
|
18
|
+
* @returns Formatted success message
|
|
19
|
+
*/
|
|
20
|
+
export declare function orphanedDaemonsCleanedMessage(count: number): string;
|
|
14
21
|
/**
|
|
15
22
|
* Generate warning message.
|
|
16
23
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/ui/messages/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAMD;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AACD;;;;;KAKK;AACL,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3D;AASD;;;;KAIK;AACL,wBAAgB,uBAAuB,IAAI,MAAM,CAgBhD"}
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/ui/messages/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAMD;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AACD;;;;;KAKK;AACL,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3D;AASD;;;;KAIK;AACL,wBAAgB,uBAAuB,IAAI,MAAM,CAgBhD"}
|
|
@@ -17,6 +17,15 @@ import { joinLines } from '../../ui/formatting.js';
|
|
|
17
17
|
export function chromeKilledMessage(pid) {
|
|
18
18
|
return pid ? `Killed Chrome (PID ${pid})` : 'Killed Chrome';
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Generate orphaned daemons cleaned message.
|
|
22
|
+
*
|
|
23
|
+
* @param count - Number of orphaned daemons cleaned up
|
|
24
|
+
* @returns Formatted success message
|
|
25
|
+
*/
|
|
26
|
+
export function orphanedDaemonsCleanedMessage(count) {
|
|
27
|
+
return `Cleaned up ${count} orphaned daemon process${count === 1 ? '' : 'es'}`;
|
|
28
|
+
}
|
|
20
29
|
/**
|
|
21
30
|
* Generate warning message.
|
|
22
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/ui/messages/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,GAAG,CAAC,CAAC,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,YAAY,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,gCAAgC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,4DAA4D,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,OAAO,4BAA4B,GAAG,eAAe,CAAC;AACxD,CAAC;AACD;;;;;KAKK;AACL,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,OAAO,SAAS,CACd,oBAAoB,GAAG,oBAAoB,EAC3C,2BAA2B,EAC3B,+DAA+D,CAChE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,OAAO,gCAAgC,GAAG,GAAG,CAAC;AAChD,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAC/E;;;;KAIK;AACL,MAAM,UAAU,uBAAuB;IACrC,OAAO,SAAS,CACd,EAAE,EACF,yCAAyC,EACzC,EAAE,EACF,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,EAAE,EACF,6BAA6B,EAC7B,EAAE,EACF,uCAAuC,EACvC,+BAA+B,EAC/B,qCAAqC,EACrC,EAAE,CACH,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/ui/messages/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,GAAG,CAAC,CAAC,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAa;IACzD,OAAO,cAAc,KAAK,2BAA2B,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,YAAY,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,gCAAgC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,4DAA4D,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,OAAO,4BAA4B,GAAG,eAAe,CAAC;AACxD,CAAC;AACD;;;;;KAKK;AACL,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,OAAO,SAAS,CACd,oBAAoB,GAAG,oBAAoB,EAC3C,2BAA2B,EAC3B,+DAA+D,CAChE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,OAAO,gCAAgC,GAAG,GAAG,CAAC;AAChD,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAC/E;;;;KAIK;AACL,MAAM,UAAU,uBAAuB;IACrC,OAAO,SAAS,CACd,EAAE,EACF,yCAAyC,EACzC,EAAE,EACF,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,EAAE,EACF,6BAA6B,EAC7B,EAAE,EACF,uCAAuC,EACvC,+BAA+B,EAC/B,qCAAqC,EACrC,EAAE,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Utilities Unit Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests error message extraction functions.
|
|
5
|
+
*
|
|
6
|
+
* Following testing philosophy:
|
|
7
|
+
* - Test the BEHAVIOR: "Always returns string, never throws"
|
|
8
|
+
* - Test the PROPERTY: "Handles all error types gracefully"
|
|
9
|
+
* - No mocking needed - pure utility function
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=errors.unit.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.unit.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/errors.unit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|