@shadowcoderr/context-graph 0.3.3 → 0.3.4
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 +448 -88
- package/dist/analyzers/a11y-extractor.d.ts +19 -5
- package/dist/analyzers/a11y-extractor.d.ts.map +1 -1
- package/dist/analyzers/a11y-extractor.js +274 -104
- package/dist/analyzers/a11y-extractor.js.map +1 -1
- package/dist/analyzers/network-logger.d.ts +20 -2
- package/dist/analyzers/network-logger.d.ts.map +1 -1
- package/dist/analyzers/network-logger.js +122 -42
- package/dist/analyzers/network-logger.js.map +1 -1
- package/dist/analyzers/network-patterns.d.ts +73 -0
- package/dist/analyzers/network-patterns.d.ts.map +1 -0
- package/dist/analyzers/network-patterns.js +316 -0
- package/dist/analyzers/network-patterns.js.map +1 -0
- package/dist/analyzers/screenshot-capturer.d.ts +73 -0
- package/dist/analyzers/screenshot-capturer.d.ts.map +1 -0
- package/dist/analyzers/screenshot-capturer.js +190 -0
- package/dist/analyzers/screenshot-capturer.js.map +1 -0
- package/dist/cli/index.js +15 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/core/capture-engine.d.ts +30 -25
- package/dist/core/capture-engine.d.ts.map +1 -1
- package/dist/core/capture-engine.js +290 -276
- package/dist/core/capture-engine.js.map +1 -1
- package/dist/exporters/ai-context-bundler.d.ts +88 -0
- package/dist/exporters/ai-context-bundler.d.ts.map +1 -0
- package/dist/exporters/ai-context-bundler.js +380 -0
- package/dist/exporters/ai-context-bundler.js.map +1 -0
- package/dist/security/redactor.d.ts +16 -0
- package/dist/security/redactor.d.ts.map +1 -1
- package/dist/security/redactor.js +127 -57
- package/dist/security/redactor.js.map +1 -1
- package/dist/storage/engine.d.ts +24 -21
- package/dist/storage/engine.d.ts.map +1 -1
- package/dist/storage/engine.js +208 -175
- package/dist/storage/engine.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,146 +1,316 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AccessibilityExtractor = void 0;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
/**
|
|
6
|
+
* AccessibilityExtractor — captures the full accessibility tree using three
|
|
7
|
+
* strategies in order of reliability:
|
|
8
|
+
*
|
|
9
|
+
* 1. Playwright's built-in accessibility.snapshot() — the most reliable,
|
|
10
|
+
* cross-browser approach. Configured with interestingOnly: false so every
|
|
11
|
+
* node is returned, not just "interesting" leaf nodes.
|
|
12
|
+
*
|
|
13
|
+
* 2. Chrome DevTools Protocol (CDP) Accessibility.getFullAXTree — lower-level
|
|
14
|
+
* but gives raw browser data when Playwright's API is unavailable.
|
|
15
|
+
*
|
|
16
|
+
* 3. DOM-based construction — pure JavaScript executed inside the page.
|
|
17
|
+
* Works in every environment but misses computed ARIA states.
|
|
18
|
+
*/
|
|
4
19
|
class AccessibilityExtractor {
|
|
5
|
-
async extract(page,
|
|
20
|
+
async extract(page, includeHidden = false) {
|
|
21
|
+
// ── Strategy 1: Playwright accessibility.snapshot() ──────────────────────
|
|
6
22
|
try {
|
|
7
|
-
// Wait for page to be ready
|
|
8
23
|
await page.waitForLoadState('domcontentloaded', { timeout: 5000 }).catch(() => { });
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// Transform CDP format to our format
|
|
17
|
-
return this.transformCDPSnapshot(snapshot.nodes[0], snapshot.nodes);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
catch (cdpError) {
|
|
21
|
-
// CDP not available, fall through to DOM-based approach
|
|
24
|
+
// `interestingOnly: false` returns every node; set to true for compact trees
|
|
25
|
+
const snapshot = await page.accessibility.snapshot({
|
|
26
|
+
interestingOnly: !includeHidden,
|
|
27
|
+
});
|
|
28
|
+
if (snapshot) {
|
|
29
|
+
logger_1.logger.debug('A11y: using Playwright snapshot strategy');
|
|
30
|
+
return this.transformPlaywrightSnapshot(snapshot);
|
|
22
31
|
}
|
|
23
|
-
// Fallback: build accessibility tree from DOM
|
|
24
|
-
snapshot = await this.buildFromDOM(page);
|
|
25
|
-
return this.transformSnapshot(snapshot);
|
|
26
32
|
}
|
|
27
|
-
catch (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
children: [],
|
|
39
|
-
};
|
|
33
|
+
catch (e) {
|
|
34
|
+
logger_1.logger.debug(`A11y Playwright strategy failed: ${e.message}`);
|
|
35
|
+
}
|
|
36
|
+
// ── Strategy 2: CDP Accessibility.getFullAXTree ───────────────────────────
|
|
37
|
+
try {
|
|
38
|
+
const client = await page.context().newCDPSession(page);
|
|
39
|
+
const result = await client.send('Accessibility.getFullAXTree');
|
|
40
|
+
await client.detach().catch(() => { });
|
|
41
|
+
if (result?.nodes?.length) {
|
|
42
|
+
logger_1.logger.debug('A11y: using CDP strategy');
|
|
43
|
+
return this.transformCDPSnapshot(result.nodes[0], result.nodes);
|
|
40
44
|
}
|
|
41
45
|
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
logger_1.logger.debug(`A11y CDP strategy failed: ${e.message}`);
|
|
48
|
+
}
|
|
49
|
+
// ── Strategy 3: DOM-based fallback ────────────────────────────────────────
|
|
50
|
+
try {
|
|
51
|
+
const domResult = await this.buildFromDOM(page, includeHidden);
|
|
52
|
+
logger_1.logger.debug('A11y: using DOM fallback strategy');
|
|
53
|
+
return this.transformSnapshot(domResult);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
logger_1.logger.warn(`A11y DOM strategy failed: ${e.message}`);
|
|
57
|
+
}
|
|
58
|
+
// ── Ultimate fallback ─────────────────────────────────────────────────────
|
|
59
|
+
logger_1.logger.warn('A11y: all strategies failed, returning minimal tree');
|
|
60
|
+
return {
|
|
61
|
+
role: 'WebArea',
|
|
62
|
+
name: await page.title().catch(() => ''),
|
|
63
|
+
children: [],
|
|
64
|
+
};
|
|
42
65
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
66
|
+
// ── Playwright snapshot transformation ──────────────────────────────────────
|
|
67
|
+
transformPlaywrightSnapshot(node) {
|
|
68
|
+
const result = {
|
|
69
|
+
role: node.role || 'generic',
|
|
70
|
+
name: node.name || '',
|
|
71
|
+
children: Array.isArray(node.children)
|
|
72
|
+
? node.children.map((c) => this.transformPlaywrightSnapshot(c))
|
|
73
|
+
: [],
|
|
74
|
+
};
|
|
75
|
+
if (node.value !== undefined && node.value !== null)
|
|
76
|
+
result.value = String(node.value);
|
|
77
|
+
if (typeof node.required === 'boolean')
|
|
78
|
+
result.required = node.required;
|
|
79
|
+
if (typeof node.disabled === 'boolean')
|
|
80
|
+
result.disabled = node.disabled;
|
|
81
|
+
if (typeof node.focused === 'boolean')
|
|
82
|
+
result.focused = node.focused;
|
|
83
|
+
if (typeof node.multiline === 'boolean')
|
|
84
|
+
result.multiline = node.multiline;
|
|
85
|
+
if (node.checked !== undefined)
|
|
86
|
+
result.checked = node.checked;
|
|
87
|
+
if (node.pressed !== undefined)
|
|
88
|
+
result.pressed = node.pressed;
|
|
89
|
+
if (typeof node.selected === 'boolean')
|
|
90
|
+
result.selected = node.selected;
|
|
91
|
+
if (typeof node.expanded === 'boolean')
|
|
92
|
+
result.expanded = node.expanded;
|
|
93
|
+
if (typeof node.level === 'number')
|
|
94
|
+
result.level = node.level;
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
// ── CDP snapshot transformation ──────────────────────────────────────────────
|
|
46
98
|
transformCDPSnapshot(rootNode, allNodes) {
|
|
99
|
+
const nodeMap = new Map();
|
|
100
|
+
for (const n of allNodes)
|
|
101
|
+
nodeMap.set(n.nodeId, n);
|
|
47
102
|
const buildNode = (node) => {
|
|
48
103
|
const children = [];
|
|
49
|
-
if (
|
|
104
|
+
if (Array.isArray(node.childIds)) {
|
|
50
105
|
for (const childId of node.childIds) {
|
|
51
|
-
const childNode =
|
|
52
|
-
if (childNode)
|
|
106
|
+
const childNode = nodeMap.get(childId);
|
|
107
|
+
if (childNode)
|
|
53
108
|
children.push(buildNode(childNode));
|
|
54
|
-
}
|
|
55
109
|
}
|
|
56
110
|
}
|
|
111
|
+
const getProp = (name) => node.properties?.find((p) => p.name === name)?.value?.value;
|
|
57
112
|
const result = {
|
|
58
|
-
role: node.role?.value || '
|
|
113
|
+
role: node.role?.value || 'generic',
|
|
59
114
|
name: node.name?.value || '',
|
|
60
|
-
children
|
|
61
|
-
value: node.value?.value,
|
|
62
|
-
required: node.properties?.find((p) => p.name === 'required')?.value?.value === true,
|
|
63
|
-
disabled: node.properties?.find((p) => p.name === 'disabled')?.value?.value === true,
|
|
64
|
-
focused: node.properties?.find((p) => p.name === 'focused')?.value?.value === true,
|
|
115
|
+
children,
|
|
65
116
|
};
|
|
66
|
-
|
|
67
|
-
|
|
117
|
+
if (node.value?.value !== undefined)
|
|
118
|
+
result.value = String(node.value.value);
|
|
119
|
+
const required = getProp('required');
|
|
120
|
+
if (required !== undefined)
|
|
121
|
+
result.required = required === true;
|
|
122
|
+
const disabled = getProp('disabled');
|
|
123
|
+
if (disabled !== undefined)
|
|
124
|
+
result.disabled = disabled === true;
|
|
125
|
+
const focused = getProp('focused');
|
|
126
|
+
if (focused !== undefined)
|
|
127
|
+
result.focused = focused === true;
|
|
128
|
+
const checked = getProp('checked');
|
|
68
129
|
if (checked !== undefined)
|
|
69
130
|
result.checked = checked;
|
|
70
|
-
const pressed =
|
|
131
|
+
const pressed = getProp('pressed');
|
|
71
132
|
if (pressed !== undefined)
|
|
72
133
|
result.pressed = pressed;
|
|
73
|
-
const selected =
|
|
134
|
+
const selected = getProp('selected');
|
|
74
135
|
if (selected !== undefined)
|
|
75
|
-
result.selected = selected;
|
|
76
|
-
const expanded =
|
|
136
|
+
result.selected = selected === true;
|
|
137
|
+
const expanded = getProp('expanded');
|
|
77
138
|
if (expanded !== undefined)
|
|
78
|
-
result.expanded = expanded;
|
|
139
|
+
result.expanded = expanded === true;
|
|
79
140
|
return result;
|
|
80
141
|
};
|
|
81
142
|
return buildNode(rootNode);
|
|
82
143
|
}
|
|
144
|
+
// ── DOM-based fallback ───────────────────────────────────────────────────────
|
|
83
145
|
/**
|
|
84
|
-
* Build accessibility tree
|
|
146
|
+
* Build an accessibility tree by traversing the live DOM inside the page.
|
|
147
|
+
* This approach works universally but misses computed ARIA states and
|
|
148
|
+
* relationships that only the accessibility engine can resolve.
|
|
85
149
|
*/
|
|
86
|
-
async buildFromDOM(page) {
|
|
87
|
-
return await page.evaluate(() => {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
150
|
+
async buildFromDOM(page, includeHidden) {
|
|
151
|
+
return await page.evaluate((opts) => {
|
|
152
|
+
const ROLE_MAP = {
|
|
153
|
+
BUTTON: 'button',
|
|
154
|
+
INPUT: 'textbox', // refined below
|
|
155
|
+
TEXTAREA: 'textbox',
|
|
156
|
+
SELECT: 'combobox',
|
|
157
|
+
A: 'link',
|
|
158
|
+
IMG: 'img',
|
|
159
|
+
FORM: 'form',
|
|
160
|
+
NAV: 'navigation',
|
|
161
|
+
HEADER: 'banner',
|
|
162
|
+
FOOTER: 'contentinfo',
|
|
163
|
+
MAIN: 'main',
|
|
164
|
+
ASIDE: 'complementary',
|
|
165
|
+
SECTION: 'region',
|
|
166
|
+
ARTICLE: 'article',
|
|
167
|
+
DIALOG: 'dialog',
|
|
168
|
+
TABLE: 'table',
|
|
169
|
+
UL: 'list',
|
|
170
|
+
OL: 'list',
|
|
171
|
+
LI: 'listitem',
|
|
172
|
+
H1: 'heading', H2: 'heading', H3: 'heading',
|
|
173
|
+
H4: 'heading', H5: 'heading', H6: 'heading',
|
|
174
|
+
DETAILS: 'group',
|
|
175
|
+
SUMMARY: 'button',
|
|
176
|
+
};
|
|
177
|
+
const INPUT_ROLE_MAP = {
|
|
178
|
+
checkbox: 'checkbox',
|
|
179
|
+
radio: 'radio',
|
|
180
|
+
submit: 'button',
|
|
181
|
+
button: 'button',
|
|
182
|
+
reset: 'button',
|
|
183
|
+
range: 'slider',
|
|
184
|
+
search: 'searchbox',
|
|
185
|
+
number: 'spinbutton',
|
|
186
|
+
image: 'button',
|
|
187
|
+
};
|
|
188
|
+
function getRole(el) {
|
|
189
|
+
const explicit = el.getAttribute('role');
|
|
190
|
+
if (explicit)
|
|
191
|
+
return explicit;
|
|
192
|
+
const tag = el.tagName.toUpperCase();
|
|
193
|
+
if (tag === 'INPUT') {
|
|
194
|
+
const type = el.type?.toLowerCase() || 'text';
|
|
195
|
+
return INPUT_ROLE_MAP[type] || 'textbox';
|
|
196
|
+
}
|
|
197
|
+
if (tag === 'A') {
|
|
198
|
+
return el.href ? 'link' : 'generic';
|
|
199
|
+
}
|
|
200
|
+
if (/^H[1-6]$/.test(tag))
|
|
201
|
+
return 'heading';
|
|
202
|
+
return ROLE_MAP[tag] || 'generic';
|
|
203
|
+
}
|
|
204
|
+
function getAccessibleName(el) {
|
|
205
|
+
// 1. aria-labelledby
|
|
206
|
+
const labelledBy = el.getAttribute('aria-labelledby');
|
|
207
|
+
if (labelledBy) {
|
|
208
|
+
const ids = labelledBy.split(/\s+/);
|
|
209
|
+
const texts = ids.map(id => document.getElementById(id)?.textContent?.trim()).filter(Boolean);
|
|
210
|
+
if (texts.length)
|
|
211
|
+
return texts.join(' ');
|
|
212
|
+
}
|
|
213
|
+
// 2. aria-label
|
|
214
|
+
const ariaLabel = el.getAttribute('aria-label');
|
|
215
|
+
if (ariaLabel)
|
|
216
|
+
return ariaLabel.trim();
|
|
217
|
+
// 3. For img/input, alt or title
|
|
218
|
+
const alt = el.getAttribute('alt');
|
|
219
|
+
if (alt)
|
|
220
|
+
return alt.trim();
|
|
221
|
+
const placeholder = el.getAttribute('placeholder');
|
|
222
|
+
if (placeholder)
|
|
223
|
+
return placeholder.trim();
|
|
224
|
+
// 4. For labeled inputs
|
|
225
|
+
const id = el.id;
|
|
226
|
+
if (id) {
|
|
227
|
+
const label = document.querySelector(`label[for="${id}"]`);
|
|
228
|
+
if (label)
|
|
229
|
+
return label.textContent?.trim() || '';
|
|
230
|
+
}
|
|
231
|
+
// 5. Text content (limited)
|
|
232
|
+
const text = el.innerText?.trim();
|
|
233
|
+
if (text)
|
|
234
|
+
return text.substring(0, 200);
|
|
235
|
+
// 6. title attribute
|
|
236
|
+
const title = el.getAttribute('title');
|
|
237
|
+
if (title)
|
|
238
|
+
return title.trim();
|
|
239
|
+
return '';
|
|
240
|
+
}
|
|
241
|
+
function isHidden(el) {
|
|
242
|
+
if (!opts.includeHidden) {
|
|
243
|
+
const style = window.getComputedStyle(el);
|
|
244
|
+
if (style.display === 'none' || style.visibility === 'hidden')
|
|
245
|
+
return true;
|
|
246
|
+
if (el.getAttribute('aria-hidden') === 'true')
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
function buildNode(el) {
|
|
252
|
+
if (isHidden(el))
|
|
253
|
+
return null;
|
|
254
|
+
const role = getRole(el);
|
|
255
|
+
const name = getAccessibleName(el);
|
|
104
256
|
const children = [];
|
|
105
|
-
for (let i = 0; i <
|
|
106
|
-
const child =
|
|
257
|
+
for (let i = 0; i < el.children.length; i++) {
|
|
258
|
+
const child = buildNode(el.children[i]);
|
|
107
259
|
if (child)
|
|
108
260
|
children.push(child);
|
|
109
261
|
}
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
disabled
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const expanded =
|
|
121
|
-
if (expanded)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
262
|
+
const node = { role, name, children };
|
|
263
|
+
// Computed states
|
|
264
|
+
const inputEl = el;
|
|
265
|
+
if (el.hasAttribute('disabled') || inputEl.disabled)
|
|
266
|
+
node.disabled = true;
|
|
267
|
+
if (el.hasAttribute('required') || inputEl.required)
|
|
268
|
+
node.required = true;
|
|
269
|
+
if (inputEl.checked !== undefined && (inputEl.type === 'checkbox' || inputEl.type === 'radio')) {
|
|
270
|
+
node.checked = inputEl.checked;
|
|
271
|
+
}
|
|
272
|
+
const expanded = el.getAttribute('aria-expanded');
|
|
273
|
+
if (expanded !== null)
|
|
274
|
+
node.expanded = expanded === 'true';
|
|
275
|
+
const selected = el.getAttribute('aria-selected');
|
|
276
|
+
if (selected !== null)
|
|
277
|
+
node.selected = selected === 'true';
|
|
278
|
+
const level = el.getAttribute('aria-level');
|
|
279
|
+
if (level !== null)
|
|
280
|
+
node.level = parseInt(level, 10);
|
|
281
|
+
else if (/^H([1-6])$/.test(el.tagName)) {
|
|
282
|
+
node.level = parseInt(el.tagName[1], 10);
|
|
283
|
+
}
|
|
284
|
+
const value = el.value;
|
|
285
|
+
if (value !== undefined && value !== '' && inputEl.type !== 'password') {
|
|
286
|
+
node.value = value;
|
|
287
|
+
}
|
|
288
|
+
return node;
|
|
289
|
+
}
|
|
290
|
+
return buildNode(document.documentElement);
|
|
291
|
+
}, { includeHidden });
|
|
127
292
|
}
|
|
128
|
-
|
|
293
|
+
// ── Generic snapshot transformer ────────────────────────────────────────────
|
|
294
|
+
transformSnapshot(node) {
|
|
295
|
+
if (!node)
|
|
296
|
+
return { role: 'generic', name: '', children: [] };
|
|
129
297
|
return {
|
|
130
|
-
role:
|
|
131
|
-
name:
|
|
132
|
-
children:
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
298
|
+
role: node.role || 'generic',
|
|
299
|
+
name: node.name || '',
|
|
300
|
+
children: Array.isArray(node.children)
|
|
301
|
+
? node.children.map((c) => this.transformSnapshot(c))
|
|
302
|
+
: [],
|
|
303
|
+
value: node.value,
|
|
304
|
+
required: node.required,
|
|
305
|
+
disabled: node.disabled,
|
|
306
|
+
focused: node.focused,
|
|
307
|
+
multiline: node.multiline,
|
|
308
|
+
protected: node.protected,
|
|
309
|
+
checked: node.checked,
|
|
310
|
+
pressed: node.pressed,
|
|
311
|
+
selected: node.selected,
|
|
312
|
+
expanded: node.expanded,
|
|
313
|
+
level: node.level,
|
|
144
314
|
};
|
|
145
315
|
}
|
|
146
316
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-extractor.js","sourceRoot":"","sources":["../../src/analyzers/a11y-extractor.ts"],"names":[],"mappings":";;;AAIA,MAAa,sBAAsB;IACjC,KAAK,CAAC,OAAO,CAAC,IAAU,EAAE,iBAA0B,KAAK;QACvD,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEnF,4CAA4C;YAC5C,IAAI,QAAQ,GAAQ,IAAI,CAAC;YAEzB,IAAI,CAAC;gBACH,gEAAgE;gBAChE,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,OAAO,EAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACjE,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAE5D,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5D,qCAAqC;oBACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,wDAAwD;YAC1D,CAAC;YAED,8CAA8C;YAC9C,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,oBAAoB;gBACpB,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;oBACxC,QAAQ,EAAE,EAAE;iBACb,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,QAAa,EAAE,QAAe;QACzD,MAAM,SAAS,GAAG,CAAC,IAAS,EAAqB,EAAE;YACjD,MAAM,QAAQ,GAAwB,EAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;oBAClE,IAAI,SAAS,EAAE,CAAC;wBACd,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAsB;gBAChC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC7C,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK;gBACxB,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI;gBACzF,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI;gBACzF,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI;aACxF,CAAC;YAEF,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACtF,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACtF,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACxF,IAAI,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACxF,IAAI,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEvD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAU;QACnC,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC9B,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAO,EAAE;gBAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC7B,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;wBACzC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BACzC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gCAClC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oCACrC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;wCACzC,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;4CAC1C,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gDACrC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEvE,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;oBACnC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;oBACtC,OAAuB,CAAC,SAAS,EAAE,IAAI,EAAE;oBAC1C,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;oBAC3B,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC7B,EAAE,CAAC;gBAEf,MAAM,QAAQ,GAAU,EAAE,CAAC;gBAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,IAAI,KAAK;wBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,MAAM,GAAQ;oBAClB,IAAI;oBACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,oBAAoB;oBAClD,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAC7C,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;oBAC1C,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;iBAC3C,CAAC;gBAEF,MAAM,OAAO,GAAI,OAA4B,CAAC,OAAO,CAAC;gBACtD,IAAI,OAAO;oBAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;gBAClE,IAAI,QAAQ;oBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAEzC,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;YAEF,OAAO,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,QAAa;QACrC,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS;YAChC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;YACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACvG,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC;IACJ,CAAC;CACF;AA1JD,wDA0JC"}
|
|
1
|
+
{"version":3,"file":"a11y-extractor.js","sourceRoot":"","sources":["../../src/analyzers/a11y-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
import { Page } from '@playwright/test';
|
|
2
2
|
import { NetworkEvent } from '../types/capture';
|
|
3
3
|
import { SecurityRedactor } from '../security/redactor';
|
|
4
|
+
export interface NetworkLoggerOptions {
|
|
5
|
+
captureHeaders: boolean;
|
|
6
|
+
captureBody: boolean;
|
|
7
|
+
/** Maximum response body size to capture, in bytes (default 2048) */
|
|
8
|
+
maxBodySize: number;
|
|
9
|
+
/** Resource types to skip entirely (e.g. images, fonts) */
|
|
10
|
+
skipResourceTypes: string[];
|
|
11
|
+
}
|
|
4
12
|
export declare class NetworkLogger {
|
|
5
13
|
private events;
|
|
6
14
|
private redactor;
|
|
7
|
-
private
|
|
8
|
-
|
|
15
|
+
private options;
|
|
16
|
+
/**
|
|
17
|
+
* WeakMap keyed on the Playwright Request object guarantees O(1) access and
|
|
18
|
+
* zero URL collision — even when the same URL is requested concurrently.
|
|
19
|
+
* The Request object is the *same reference* in both the 'request' listener
|
|
20
|
+
* and the `response.request()` call, so this is safe.
|
|
21
|
+
*/
|
|
22
|
+
private requestTimes;
|
|
23
|
+
constructor(redactor: SecurityRedactor, options?: Partial<NetworkLoggerOptions>);
|
|
9
24
|
attachListeners(page: Page): Promise<void>;
|
|
10
25
|
getEvents(): NetworkEvent[];
|
|
11
26
|
clearEvents(): void;
|
|
12
27
|
getRequestCount(): number;
|
|
13
28
|
getResponseCount(): number;
|
|
29
|
+
getFailedCount(): number;
|
|
30
|
+
/** Returns only XHR/Fetch events — useful for API surface analysis */
|
|
31
|
+
getApiEvents(): NetworkEvent[];
|
|
14
32
|
}
|
|
15
33
|
//# sourceMappingURL=network-logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-logger.d.ts","sourceRoot":"","sources":["../../src/analyzers/network-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"network-logger.d.ts","sourceRoot":"","sources":["../../src/analyzers/network-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAqB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AASD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;;;OAKG;IACH,OAAO,CAAC,YAAY,CAAkC;gBAE1C,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAKzE,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoHhD,SAAS,IAAI,YAAY,EAAE;IAI3B,WAAW,IAAI,IAAI;IAInB,eAAe,IAAI,MAAM;IAIzB,gBAAgB,IAAI,MAAM;IAI1B,cAAc,IAAI,MAAM;IAIxB,sEAAsE;IACtE,YAAY,IAAI,YAAY,EAAE;CAK/B"}
|