mcp-accessibility-scanner 2.0.16 → 2.0.18
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 +64 -31
- package/config.d.ts +12 -0
- package/lib/browserContextFactory.js +20 -5
- package/lib/browserContextFactory.js.map +1 -1
- package/lib/config.js +36 -0
- package/lib/config.js.map +1 -1
- package/lib/mcp/server.js +38 -5
- package/lib/mcp/server.js.map +1 -1
- package/lib/program.js +8 -0
- package/lib/program.js.map +1 -1
- package/lib/response.js +20 -12
- package/lib/response.js.map +1 -1
- package/lib/tab.js +52 -5
- package/lib/tab.js.map +1 -1
- package/lib/tools/console.js +3 -1
- package/lib/tools/console.js.map +1 -1
- package/lib/tools/mouse.js +14 -7
- package/lib/tools/mouse.js.map +1 -1
- package/lib/tools/navigate.js +4 -1
- package/lib/tools/navigate.js.map +1 -1
- package/lib/tools/network.js +2 -1
- package/lib/tools/network.js.map +1 -1
- package/lib/tools/screenshot.js +2 -1
- package/lib/tools/screenshot.js.map +1 -1
- package/lib/tools/snapshot.js +5 -2
- package/lib/tools/snapshot.js.map +1 -1
- package/lib/tools/tabs.js +1 -1
- package/lib/tools/tabs.js.map +1 -1
- package/lib/utils/ariaCompression.js +249 -0
- package/lib/utils/ariaCompression.js.map +1 -0
- package/lib/utils/codegen.js +6 -0
- package/lib/utils/codegen.js.map +1 -1
- package/lib/utils/dataUrl.js +265 -0
- package/lib/utils/dataUrl.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
const FIRE_THRESHOLD = 100;
|
|
17
|
+
const KEEP_N = 10;
|
|
18
|
+
const KEEP_REF_ALL = /\[ref=[^\]]+\]/g;
|
|
19
|
+
const HAS_REF = /\[ref=[^\]]+\]/;
|
|
20
|
+
const HAS_CURSOR_POINTER = /\[cursor=pointer\]/;
|
|
21
|
+
const ROLE_PREFIX_RE = /^\s*-\s*([a-z][a-z0-9-]*)\b/i;
|
|
22
|
+
const PROTECTED_LINE_ROLES = new Set([
|
|
23
|
+
'alert',
|
|
24
|
+
'banner',
|
|
25
|
+
'button',
|
|
26
|
+
'checkbox',
|
|
27
|
+
'columnheader',
|
|
28
|
+
'combobox',
|
|
29
|
+
'dialog',
|
|
30
|
+
'form',
|
|
31
|
+
'grid',
|
|
32
|
+
'gridcell',
|
|
33
|
+
'heading',
|
|
34
|
+
'input',
|
|
35
|
+
'link',
|
|
36
|
+
'listbox',
|
|
37
|
+
'main',
|
|
38
|
+
'menu',
|
|
39
|
+
'menuitem',
|
|
40
|
+
'menuitemcheckbox',
|
|
41
|
+
'menuitemradio',
|
|
42
|
+
'navigation',
|
|
43
|
+
'option',
|
|
44
|
+
'radio',
|
|
45
|
+
'rowheader',
|
|
46
|
+
'search',
|
|
47
|
+
'searchbox',
|
|
48
|
+
'select',
|
|
49
|
+
'slider',
|
|
50
|
+
'spinbutton',
|
|
51
|
+
'status',
|
|
52
|
+
'switch',
|
|
53
|
+
'tab',
|
|
54
|
+
'textbox',
|
|
55
|
+
'tree',
|
|
56
|
+
'treegrid',
|
|
57
|
+
'treeitem',
|
|
58
|
+
'region',
|
|
59
|
+
]);
|
|
60
|
+
const REF_PROTECTED_LINE_ROLES = new Set([
|
|
61
|
+
'grid',
|
|
62
|
+
'gridcell',
|
|
63
|
+
'scrollbar',
|
|
64
|
+
'separator',
|
|
65
|
+
'treegrid',
|
|
66
|
+
]);
|
|
67
|
+
const REF_PROTECTED_DESCENDANT_ROLES = new Set([
|
|
68
|
+
'columnheader',
|
|
69
|
+
'gridcell',
|
|
70
|
+
'rowheader',
|
|
71
|
+
'scrollbar',
|
|
72
|
+
'separator',
|
|
73
|
+
]);
|
|
74
|
+
const PROTECTED_SUBTREE_ROLES = new Set([
|
|
75
|
+
'button',
|
|
76
|
+
'checkbox',
|
|
77
|
+
'combobox',
|
|
78
|
+
'input',
|
|
79
|
+
'link',
|
|
80
|
+
'listbox',
|
|
81
|
+
'menu',
|
|
82
|
+
'menuitem',
|
|
83
|
+
'menuitemcheckbox',
|
|
84
|
+
'menuitemradio',
|
|
85
|
+
'option',
|
|
86
|
+
'radio',
|
|
87
|
+
'searchbox',
|
|
88
|
+
'select',
|
|
89
|
+
'slider',
|
|
90
|
+
'spinbutton',
|
|
91
|
+
'switch',
|
|
92
|
+
'tab',
|
|
93
|
+
'textbox',
|
|
94
|
+
'tree',
|
|
95
|
+
'treeitem',
|
|
96
|
+
]);
|
|
97
|
+
export function compressAriaSnapshot(yaml) {
|
|
98
|
+
const lines = parseSnapshotLines(yaml);
|
|
99
|
+
const preCounts = new Map();
|
|
100
|
+
for (const line of lines) {
|
|
101
|
+
if (!line.text.trim() || isProtectedLine(line))
|
|
102
|
+
continue;
|
|
103
|
+
const key = compressionKey(line);
|
|
104
|
+
preCounts.set(key, (preCounts.get(key) ?? 0) + 1);
|
|
105
|
+
}
|
|
106
|
+
let maxCount = 0;
|
|
107
|
+
for (const value of preCounts.values())
|
|
108
|
+
maxCount = Math.max(maxCount, value);
|
|
109
|
+
if (maxCount <= FIRE_THRESHOLD)
|
|
110
|
+
return { output: yaml, removed: 0 };
|
|
111
|
+
const sigCounts = new Map();
|
|
112
|
+
const output = [];
|
|
113
|
+
let totalRemoved = 0;
|
|
114
|
+
let skipBelowIndent;
|
|
115
|
+
for (const line of lines) {
|
|
116
|
+
if (!line.text.trim()) {
|
|
117
|
+
if (skipBelowIndent === undefined)
|
|
118
|
+
output.push(line.text);
|
|
119
|
+
else
|
|
120
|
+
totalRemoved++;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (skipBelowIndent !== undefined && line.indent <= skipBelowIndent)
|
|
124
|
+
skipBelowIndent = undefined;
|
|
125
|
+
if (skipBelowIndent !== undefined) {
|
|
126
|
+
totalRemoved++;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (isProtectedLine(line)) {
|
|
130
|
+
output.push(line.text);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const key = compressionKey(line);
|
|
134
|
+
const lineCount = (sigCounts.get(key) ?? 0) + 1;
|
|
135
|
+
sigCounts.set(key, lineCount);
|
|
136
|
+
if (lineCount > KEEP_N && (preCounts.get(key) ?? 0) > FIRE_THRESHOLD) {
|
|
137
|
+
totalRemoved++;
|
|
138
|
+
skipBelowIndent = line.indent;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
output.push(line.text);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (totalRemoved === 0)
|
|
145
|
+
return { output: yaml, removed: 0 };
|
|
146
|
+
const note = `\n# playwright-compress: ${totalRemoved} repeated ARIA nodes collapsed - use browser_evaluate() to enumerate the full list`;
|
|
147
|
+
return { output: output.join('\n') + note, removed: totalRemoved };
|
|
148
|
+
}
|
|
149
|
+
function parseSnapshotLines(yaml) {
|
|
150
|
+
const lines = yaml.split('\n').map((text) => {
|
|
151
|
+
const role = roleOf(text);
|
|
152
|
+
const hasRef = HAS_REF.test(text);
|
|
153
|
+
const hasCursorPointer = HAS_CURSOR_POINTER.test(text);
|
|
154
|
+
return {
|
|
155
|
+
text,
|
|
156
|
+
indent: indentOf(text),
|
|
157
|
+
parentIndex: -1,
|
|
158
|
+
role,
|
|
159
|
+
hasRef,
|
|
160
|
+
hasCursorPointer,
|
|
161
|
+
signature: signature(text),
|
|
162
|
+
selfHasProtectedLineRole: shouldKeepLine(role, hasRef, hasCursorPointer),
|
|
163
|
+
containsProtectedSubtreeRole: shouldKeepSubtree(role) || shouldKeepRefProtectedDescendants(role, hasRef) || shouldKeepCursorPointerRef(hasRef, hasCursorPointer),
|
|
164
|
+
selfHasProtectedSubtreeRole: shouldKeepSubtree(role) || shouldKeepRefProtectedDescendants(role, hasRef) || shouldKeepCursorPointerRef(hasRef, hasCursorPointer),
|
|
165
|
+
insideProtectedSubtree: false,
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
const stack = [];
|
|
169
|
+
for (let index = 0; index < lines.length; index++) {
|
|
170
|
+
const line = lines[index];
|
|
171
|
+
if (!line.text.trim())
|
|
172
|
+
continue;
|
|
173
|
+
while (stack.length && lines[stack[stack.length - 1]].indent >= line.indent)
|
|
174
|
+
stack.pop();
|
|
175
|
+
line.parentIndex = stack[stack.length - 1] ?? -1;
|
|
176
|
+
stack.push(index);
|
|
177
|
+
}
|
|
178
|
+
for (const line of lines) {
|
|
179
|
+
if (line.role === 'row' && line.hasRef && hasAncestorRole(lines, line, ROW_CONTAINER_ROLES)) {
|
|
180
|
+
line.selfHasProtectedLineRole = true;
|
|
181
|
+
line.containsProtectedSubtreeRole = true;
|
|
182
|
+
line.selfHasProtectedSubtreeRole = true;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (let index = lines.length - 1; index >= 0; index--) {
|
|
186
|
+
const line = lines[index];
|
|
187
|
+
if (!line.containsProtectedSubtreeRole || line.parentIndex === -1)
|
|
188
|
+
continue;
|
|
189
|
+
lines[line.parentIndex].containsProtectedSubtreeRole = true;
|
|
190
|
+
}
|
|
191
|
+
let protectedIndent;
|
|
192
|
+
for (const line of lines) {
|
|
193
|
+
if (!line.text.trim())
|
|
194
|
+
continue;
|
|
195
|
+
if (protectedIndent !== undefined && line.indent <= protectedIndent)
|
|
196
|
+
protectedIndent = undefined;
|
|
197
|
+
const insideProtectedSubtree = protectedIndent !== undefined;
|
|
198
|
+
if (insideProtectedSubtree)
|
|
199
|
+
line.insideProtectedSubtree = true;
|
|
200
|
+
if (!insideProtectedSubtree && line.selfHasProtectedSubtreeRole)
|
|
201
|
+
protectedIndent = line.indent;
|
|
202
|
+
}
|
|
203
|
+
return lines;
|
|
204
|
+
}
|
|
205
|
+
function isProtectedLine(line) {
|
|
206
|
+
return line.selfHasProtectedLineRole || line.containsProtectedSubtreeRole || line.insideProtectedSubtree;
|
|
207
|
+
}
|
|
208
|
+
function compressionKey(line) {
|
|
209
|
+
return `${line.parentIndex}:${line.indent}:${line.signature}`;
|
|
210
|
+
}
|
|
211
|
+
function signature(line) {
|
|
212
|
+
let result = line.trimEnd().replace(KEEP_REF_ALL, '[ref=?]');
|
|
213
|
+
result = result.replace(/"[^"]*"/g, '""');
|
|
214
|
+
result = result.replace(/'[^']*'/g, "''");
|
|
215
|
+
result = result.replace(/\b\d+\b/g, 'N');
|
|
216
|
+
return result.trimStart().slice(0, 80);
|
|
217
|
+
}
|
|
218
|
+
function roleOf(line) {
|
|
219
|
+
return ROLE_PREFIX_RE.exec(line)?.[1]?.toLowerCase();
|
|
220
|
+
}
|
|
221
|
+
function shouldKeepLine(role, hasRef, hasCursorPointer) {
|
|
222
|
+
if (shouldKeepCursorPointerRef(hasRef, hasCursorPointer))
|
|
223
|
+
return true;
|
|
224
|
+
if (role === undefined)
|
|
225
|
+
return false;
|
|
226
|
+
return PROTECTED_LINE_ROLES.has(role) || hasRef && REF_PROTECTED_LINE_ROLES.has(role);
|
|
227
|
+
}
|
|
228
|
+
function shouldKeepSubtree(role) {
|
|
229
|
+
return role !== undefined && PROTECTED_SUBTREE_ROLES.has(role);
|
|
230
|
+
}
|
|
231
|
+
function shouldKeepRefProtectedDescendants(role, hasRef) {
|
|
232
|
+
return role !== undefined && hasRef && REF_PROTECTED_DESCENDANT_ROLES.has(role);
|
|
233
|
+
}
|
|
234
|
+
function shouldKeepCursorPointerRef(hasRef, hasCursorPointer) {
|
|
235
|
+
return hasRef && hasCursorPointer;
|
|
236
|
+
}
|
|
237
|
+
const ROW_CONTAINER_ROLES = new Set(['grid', 'treegrid']);
|
|
238
|
+
function hasAncestorRole(lines, line, roles) {
|
|
239
|
+
for (let parentIndex = line.parentIndex; parentIndex !== -1; parentIndex = lines[parentIndex].parentIndex) {
|
|
240
|
+
const role = lines[parentIndex].role;
|
|
241
|
+
if (role !== undefined && roles.has(role))
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
function indentOf(line) {
|
|
247
|
+
return line.length - line.trimStart().length;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=ariaCompression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ariaCompression.js","sourceRoot":"","sources":["../../src/utils/ariaCompression.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/codegen.js
CHANGED
|
@@ -47,4 +47,10 @@ export function formatObject(value, indent = ' ') {
|
|
|
47
47
|
}
|
|
48
48
|
return String(value);
|
|
49
49
|
}
|
|
50
|
+
// Formats an options object for code generation, returning an empty string
|
|
51
|
+
// when every property is undefined (i.e. there are no options to emit).
|
|
52
|
+
export function formatObjectOrVoid(value, indent = ' ') {
|
|
53
|
+
const result = formatObject(value, indent);
|
|
54
|
+
return result === '{}' ? '' : result;
|
|
55
|
+
}
|
|
50
56
|
//# sourceMappingURL=codegen.js.map
|
package/lib/utils/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/utils/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gBAAgB;AAChB,uJAAuJ;AACvJ,oJAAoJ;AAEpJ,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAI,GAAW,IAAI;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1F,IAAI,IAAI,KAAK,IAAI;QACf,OAAO,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI,IAAI,KAAK,GAAG;QACd,OAAO,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,IAAI,KAAK,GAAG;QACd,OAAO,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1D,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAU,EAAE,MAAM,GAAG,IAAI;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,OAAO,IAAI,CAAC;QACd,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/utils/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gBAAgB;AAChB,uJAAuJ;AACvJ,oJAAoJ;AAEpJ,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAI,GAAW,IAAI;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1F,IAAI,IAAI,KAAK,IAAI;QACf,OAAO,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI,IAAI,KAAK,GAAG;QACd,OAAO,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,IAAI,KAAK,GAAG;QACd,OAAO,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1D,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAU,EAAE,MAAM,GAAG,IAAI;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,OAAO,IAAI,CAAC;QACd,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI;YACpB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,KAAU,EAAE,MAAM,GAAG,IAAI;IAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
const dataUrlPrefix = 'data:';
|
|
17
|
+
const encodedDataUrlPrefix = 'data%3a';
|
|
18
|
+
const maxDataUrlMetadataLength = 120;
|
|
19
|
+
export function truncateDataUrl(url) {
|
|
20
|
+
if (!startsWithIgnoreCase(url, 0, dataUrlPrefix) && !startsWithIgnoreCase(url, 0, encodedDataUrlPrefix))
|
|
21
|
+
return url;
|
|
22
|
+
const match = parseDataUrl(url, 0);
|
|
23
|
+
if (!match)
|
|
24
|
+
return url;
|
|
25
|
+
return `${match.displayPrefix}...`;
|
|
26
|
+
}
|
|
27
|
+
export function truncateDataUrls(text) {
|
|
28
|
+
let result = '';
|
|
29
|
+
let offset = 0;
|
|
30
|
+
const lowerText = text.toLowerCase();
|
|
31
|
+
while (offset < text.length) {
|
|
32
|
+
const start = findDataUrlStart(text, lowerText, offset);
|
|
33
|
+
if (start === -1) {
|
|
34
|
+
result += text.slice(offset);
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
result += text.slice(offset, start);
|
|
38
|
+
const match = parseDataUrl(text, start);
|
|
39
|
+
if (!match) {
|
|
40
|
+
const prefixLength = dataUrlPrefixLengthAt(text, start);
|
|
41
|
+
result += text.slice(start, start + prefixLength);
|
|
42
|
+
offset = start + prefixLength;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const end = findDataUrlEnd(text, match);
|
|
46
|
+
result += `${match.displayPrefix}...`;
|
|
47
|
+
offset = end;
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
function findDataUrlStart(text, lowerText, offset) {
|
|
52
|
+
let start = nextDataUrlPrefix(lowerText, offset);
|
|
53
|
+
while (start !== -1) {
|
|
54
|
+
if (isDataUrlStartBoundary(text, start))
|
|
55
|
+
return start;
|
|
56
|
+
start = nextDataUrlPrefix(lowerText, start + dataUrlPrefixLengthAt(lowerText, start));
|
|
57
|
+
}
|
|
58
|
+
return -1;
|
|
59
|
+
}
|
|
60
|
+
function nextDataUrlPrefix(lowerText, offset) {
|
|
61
|
+
const literalStart = lowerText.indexOf(dataUrlPrefix, offset);
|
|
62
|
+
const encodedStart = lowerText.indexOf(encodedDataUrlPrefix, offset);
|
|
63
|
+
if (literalStart === -1)
|
|
64
|
+
return encodedStart;
|
|
65
|
+
if (encodedStart === -1)
|
|
66
|
+
return literalStart;
|
|
67
|
+
return Math.min(literalStart, encodedStart);
|
|
68
|
+
}
|
|
69
|
+
function dataUrlPrefixLengthAt(text, start) {
|
|
70
|
+
return startsWithIgnoreCase(text, start, encodedDataUrlPrefix) ? encodedDataUrlPrefix.length : dataUrlPrefix.length;
|
|
71
|
+
}
|
|
72
|
+
function parseDataUrl(text, start) {
|
|
73
|
+
const isEncodedPrefix = startsWithIgnoreCase(text, start, encodedDataUrlPrefix);
|
|
74
|
+
const metadataStart = start + (isEncodedPrefix ? encodedDataUrlPrefix.length : dataUrlPrefix.length);
|
|
75
|
+
const delimiter = findDataUrlDelimiter(text, metadataStart);
|
|
76
|
+
if (!delimiter)
|
|
77
|
+
return;
|
|
78
|
+
const metadata = text.slice(metadataStart, delimiter.start);
|
|
79
|
+
const isEncodedMetadata = isEncodedPrefix || containsPercentEncoding(metadata);
|
|
80
|
+
if (!isValidDataUrlMetadata(metadata, isEncodedMetadata))
|
|
81
|
+
return;
|
|
82
|
+
const decodedMetadata = decodeDataUrlMetadata(metadata, isEncodedMetadata);
|
|
83
|
+
return {
|
|
84
|
+
payloadStart: delimiter.end,
|
|
85
|
+
displayPrefix: dataUrlDisplayPrefix(text, start, metadata, decodedMetadata, delimiter, isEncodedMetadata),
|
|
86
|
+
isBase64: decodedMetadata.toLowerCase().split(';').includes('base64'),
|
|
87
|
+
isEmbeddedQueryValue: start > 0 && text[start - 1] === '=',
|
|
88
|
+
quote: dataUrlQuoteAt(text, start),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function findDataUrlDelimiter(text, offset) {
|
|
92
|
+
let position = offset;
|
|
93
|
+
while (position < text.length) {
|
|
94
|
+
const char = text[position];
|
|
95
|
+
if (isLineBreak(char))
|
|
96
|
+
return;
|
|
97
|
+
if (char === '&' && looksLikeQueryParam(text, position + 1))
|
|
98
|
+
return;
|
|
99
|
+
if (char === ',')
|
|
100
|
+
return { start: position, end: position + 1 };
|
|
101
|
+
if (startsWithEncodedComma(text, position))
|
|
102
|
+
return { start: position, end: position + 3 };
|
|
103
|
+
position++;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function dataUrlDisplayPrefix(text, start, metadata, decodedMetadata, delimiter, isEncoded) {
|
|
107
|
+
if (metadata.length <= maxDataUrlMetadataLength)
|
|
108
|
+
return text.slice(start, delimiter.end);
|
|
109
|
+
const compactMetadata = compactDataUrlMetadata(decodedMetadata);
|
|
110
|
+
const delimiterText = text.slice(delimiter.start, delimiter.end);
|
|
111
|
+
return `${text.slice(start, start + dataUrlPrefixLengthAt(text, start))}${encodeDataUrlMetadata(compactMetadata, isEncoded)}${delimiterText}`;
|
|
112
|
+
}
|
|
113
|
+
function compactDataUrlMetadata(decodedMetadata) {
|
|
114
|
+
const parts = decodedMetadata.split(';');
|
|
115
|
+
const mediaType = parts[0]?.includes('/') ? parts[0] : '';
|
|
116
|
+
const base64 = parts.some(part => part.toLowerCase() === 'base64') ? ';base64' : '';
|
|
117
|
+
return `${mediaType}${base64}`;
|
|
118
|
+
}
|
|
119
|
+
function encodeDataUrlMetadata(metadata, isEncoded) {
|
|
120
|
+
return isEncoded ? encodeURIComponent(metadata) : metadata;
|
|
121
|
+
}
|
|
122
|
+
function isValidDataUrlMetadata(metadata, isEncoded) {
|
|
123
|
+
if (!metadata)
|
|
124
|
+
return true;
|
|
125
|
+
const decodedMetadata = decodeDataUrlMetadata(metadata, isEncoded);
|
|
126
|
+
if (!decodedMetadata || /[\r\n]/.test(decodedMetadata) || /[\s"'<>()[\]{}]/.test(metadata))
|
|
127
|
+
return false;
|
|
128
|
+
if (decodedMetadata.startsWith(';'))
|
|
129
|
+
return true;
|
|
130
|
+
const mediaTypeEnd = decodedMetadata.indexOf(';');
|
|
131
|
+
const mediaType = mediaTypeEnd === -1 ? decodedMetadata : decodedMetadata.slice(0, mediaTypeEnd);
|
|
132
|
+
return /^[A-Za-z0-9!#$&^_.+-]+\/[A-Za-z0-9!#$&^_.+-]+$/.test(mediaType);
|
|
133
|
+
}
|
|
134
|
+
function decodeDataUrlMetadata(metadata, isEncoded) {
|
|
135
|
+
if (!isEncoded)
|
|
136
|
+
return metadata;
|
|
137
|
+
try {
|
|
138
|
+
return decodeURIComponent(metadata);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return '';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function findDataUrlEnd(text, match) {
|
|
145
|
+
let end = match.payloadStart;
|
|
146
|
+
while (end < text.length) {
|
|
147
|
+
const char = text[end];
|
|
148
|
+
if (isLineBreak(char))
|
|
149
|
+
break;
|
|
150
|
+
if (match.isEmbeddedQueryValue && char === '&' && isQueryParamBoundary(text, match, end))
|
|
151
|
+
break;
|
|
152
|
+
if (match.isBase64 && char === '&')
|
|
153
|
+
break;
|
|
154
|
+
if (match.isBase64 && isEncodedPayloadTerminator(text, end))
|
|
155
|
+
break;
|
|
156
|
+
if (match.isBase64 && isBase64PayloadTerminator(char))
|
|
157
|
+
break;
|
|
158
|
+
if (!match.isBase64 && match.quote && char === match.quote && isQuotedDataUrlEnd(text, match, end))
|
|
159
|
+
break;
|
|
160
|
+
if (!match.isBase64 && !match.quote && isRawPayloadSuffixBoundary(text, match, end))
|
|
161
|
+
break;
|
|
162
|
+
end++;
|
|
163
|
+
}
|
|
164
|
+
return end;
|
|
165
|
+
}
|
|
166
|
+
function dataUrlQuoteAt(text, start) {
|
|
167
|
+
const char = start > 0 ? text[start - 1] : undefined;
|
|
168
|
+
return char === '"' || char === '\'' ? char : undefined;
|
|
169
|
+
}
|
|
170
|
+
function isLineBreak(char) {
|
|
171
|
+
return char === '\n' || char === '\r';
|
|
172
|
+
}
|
|
173
|
+
function isBase64PayloadTerminator(char) {
|
|
174
|
+
return /\s/.test(char) || ['"', '\'', '<', '>', ')', ']', '}', '`', ':'].includes(char);
|
|
175
|
+
}
|
|
176
|
+
function isQueryParamBoundary(text, match, ampersand) {
|
|
177
|
+
if (!looksLikeQueryParam(text, ampersand + 1))
|
|
178
|
+
return false;
|
|
179
|
+
return match.isBase64 || isRawPayloadCompleteBefore(text, match.payloadStart, ampersand);
|
|
180
|
+
}
|
|
181
|
+
function isRawPayloadCompleteBefore(text, payloadStart, end) {
|
|
182
|
+
let position = end - 1;
|
|
183
|
+
while (position >= payloadStart && /\s/.test(text[position]))
|
|
184
|
+
position--;
|
|
185
|
+
return text[position] === '>' || (position >= payloadStart + 2 && startsWithIgnoreCase(text, position - 2, '%3e'));
|
|
186
|
+
}
|
|
187
|
+
function isRawPayloadSuffixBoundary(text, match, position) {
|
|
188
|
+
const char = text[position];
|
|
189
|
+
if (/\s/.test(char))
|
|
190
|
+
return !isRawMarkupPayload(text, match.payloadStart) || isRawPayloadCompleteBefore(text, match.payloadStart, position);
|
|
191
|
+
if (isRawPayloadWrapperBoundary(text, match, position))
|
|
192
|
+
return true;
|
|
193
|
+
if (isEncodedPayloadTerminator(text, position))
|
|
194
|
+
return isRawPayloadCompleteBefore(text, match.payloadStart, position) || isRawPayloadBoundarySuffix(text, position + 3);
|
|
195
|
+
if (char !== ':')
|
|
196
|
+
return false;
|
|
197
|
+
if (isRawMarkupPayload(text, match.payloadStart) && !isRawPayloadCompleteBefore(text, match.payloadStart, position))
|
|
198
|
+
return false;
|
|
199
|
+
return looksLikeSourceLocationSuffix(text, position);
|
|
200
|
+
}
|
|
201
|
+
function isQuotedDataUrlEnd(text, match, quote) {
|
|
202
|
+
return !isRawMarkupPayload(text, match.payloadStart) || isRawPayloadCompleteBefore(text, match.payloadStart, quote);
|
|
203
|
+
}
|
|
204
|
+
function isRawMarkupPayload(text, payloadStart) {
|
|
205
|
+
return text[payloadStart] === '<' || startsWithIgnoreCase(text, payloadStart, '%3c');
|
|
206
|
+
}
|
|
207
|
+
function looksLikeSourceLocationSuffix(text, colon) {
|
|
208
|
+
let position = colon + 1;
|
|
209
|
+
if (!/\d/.test(text[position] || ''))
|
|
210
|
+
return false;
|
|
211
|
+
while (position < text.length && /\d/.test(text[position]))
|
|
212
|
+
position++;
|
|
213
|
+
return position === text.length || isLineBreak(text[position]) || /\s/.test(text[position]);
|
|
214
|
+
}
|
|
215
|
+
function looksLikeQueryParam(text, offset) {
|
|
216
|
+
if (offset >= text.length)
|
|
217
|
+
return false;
|
|
218
|
+
for (let position = offset; position < text.length; position++) {
|
|
219
|
+
const char = text[position];
|
|
220
|
+
if (char === '=')
|
|
221
|
+
return position > offset;
|
|
222
|
+
if (isLineBreak(char) || /\s/.test(char) || ['&', '#', '"', '\'', '<', '>', ')', '}', '`'].includes(char))
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
function startsWithEncodedComma(text, position) {
|
|
228
|
+
return startsWithIgnoreCase(text, position, '%2c');
|
|
229
|
+
}
|
|
230
|
+
function containsPercentEncoding(text) {
|
|
231
|
+
return /%[0-9a-f]{2}/i.test(text);
|
|
232
|
+
}
|
|
233
|
+
function isDataUrlStartBoundary(text, start) {
|
|
234
|
+
if (start === 0)
|
|
235
|
+
return true;
|
|
236
|
+
if (!/[A-Za-z0-9_-]/.test(text[start - 1]))
|
|
237
|
+
return true;
|
|
238
|
+
const encodedChar = percentEncodedCharBefore(text, start);
|
|
239
|
+
return !!encodedChar && !/[A-Za-z0-9_-]/.test(encodedChar);
|
|
240
|
+
}
|
|
241
|
+
function isRawPayloadWrapperBoundary(text, match, position) {
|
|
242
|
+
return [')', ']', '}'].includes(text[position]) && (isRawPayloadCompleteBefore(text, match.payloadStart, position) || isRawPayloadBoundarySuffix(text, position + 1));
|
|
243
|
+
}
|
|
244
|
+
function isRawPayloadBoundarySuffix(text, offset) {
|
|
245
|
+
if (offset >= text.length)
|
|
246
|
+
return true;
|
|
247
|
+
const char = text[offset];
|
|
248
|
+
return isLineBreak(char) || /\s/.test(char) || ['"', '\'', ')', ']', '}', '`'].includes(char) || (char === '&' && looksLikeQueryParam(text, offset + 1));
|
|
249
|
+
}
|
|
250
|
+
function isEncodedPayloadTerminator(text, position) {
|
|
251
|
+
const encodedChar = percentEncodedCharAt(text, position);
|
|
252
|
+
return !!encodedChar && ['"', '\'', ')', ']', '}', '`'].includes(encodedChar);
|
|
253
|
+
}
|
|
254
|
+
function percentEncodedCharBefore(text, position) {
|
|
255
|
+
return position >= 3 ? percentEncodedCharAt(text, position - 3) : undefined;
|
|
256
|
+
}
|
|
257
|
+
function percentEncodedCharAt(text, position) {
|
|
258
|
+
if (position < 0 || text[position] !== '%' || !/^[0-9a-f]{2}$/i.test(text.slice(position + 1, position + 3)))
|
|
259
|
+
return;
|
|
260
|
+
return String.fromCharCode(Number.parseInt(text.slice(position + 1, position + 3), 16));
|
|
261
|
+
}
|
|
262
|
+
function startsWithIgnoreCase(text, position, value) {
|
|
263
|
+
return text.slice(position, position + value.length).toLowerCase() === value;
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=dataUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataUrl.js","sourceRoot":"","sources":["../../src/utils/dataUrl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-accessibility-scanner",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.18",
|
|
4
4
|
"mcpName": "io.github.JustasMonkev/mcp-accessibility-scanner",
|
|
5
5
|
"description": "A Model Context Protocol (MCP) server for performing automated accessibility scans of web pages using Playwright and Axe-core",
|
|
6
6
|
"type": "module",
|