mcp-accessibility-scanner 3.0.1 → 3.2.0
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 +265 -12
- package/index.d.ts +1 -1
- package/lib/browserContextFactory.js +1161 -94
- package/lib/browserContextFactory.js.map +1 -1
- package/lib/browserServerBackend.js +199 -22
- package/lib/browserServerBackend.js.map +1 -1
- package/lib/browserSessions.js +172 -0
- package/lib/browserSessions.js.map +1 -0
- package/lib/config.js +48 -7
- package/lib/config.js.map +1 -1
- package/lib/context.js +321 -71
- package/lib/context.js.map +1 -1
- package/lib/extension/cdpRelay.js +5 -0
- package/lib/extension/cdpRelay.js.map +1 -1
- package/lib/extension/extensionContextFactory.js +12 -1
- package/lib/extension/extensionContextFactory.js.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/mcp/http.js +194 -44
- package/lib/mcp/http.js.map +1 -1
- package/lib/mcp/inProcessTransport.js.map +1 -1
- package/lib/mcp/mdb.js +7 -9
- package/lib/mcp/mdb.js.map +1 -1
- package/lib/mcp/proxyBackend.js +76 -18
- package/lib/mcp/proxyBackend.js.map +1 -1
- package/lib/mcp/server.js +70 -41
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/sharedClientSlot.js +134 -0
- package/lib/mcp/sharedClientSlot.js.map +1 -0
- package/lib/mcp/tool.js +3 -0
- package/lib/mcp/tool.js.map +1 -1
- package/lib/networkPolicy.js +73 -0
- package/lib/networkPolicy.js.map +1 -0
- package/lib/program.js +91 -12
- package/lib/program.js.map +1 -1
- package/lib/response.js +16 -3
- package/lib/response.js.map +1 -1
- package/lib/sessionLog.js +36 -6
- package/lib/sessionLog.js.map +1 -1
- package/lib/tab.js +149 -18
- package/lib/tab.js.map +1 -1
- package/lib/tools/auditKeyboard.js +204 -4
- package/lib/tools/auditKeyboard.js.map +1 -1
- package/lib/tools/auditScreenReader.js +823 -0
- package/lib/tools/auditScreenReader.js.map +1 -0
- package/lib/tools/auditSite.js +268 -90
- package/lib/tools/auditSite.js.map +1 -1
- package/lib/tools/axe.js +479 -21
- package/lib/tools/axe.js.map +1 -1
- package/lib/tools/dialogs.js +18 -4
- package/lib/tools/dialogs.js.map +1 -1
- package/lib/tools/evaluate.js +34 -5
- package/lib/tools/evaluate.js.map +1 -1
- package/lib/tools/network.js +136 -8
- package/lib/tools/network.js.map +1 -1
- package/lib/tools/pdf.js +5 -2
- package/lib/tools/pdf.js.map +1 -1
- package/lib/tools/scanPageMatrix.js +135 -47
- package/lib/tools/scanPageMatrix.js.map +1 -1
- package/lib/tools/screenshot.js +8 -4
- package/lib/tools/screenshot.js.map +1 -1
- package/lib/tools/session.js +53 -0
- package/lib/tools/session.js.map +1 -0
- package/lib/tools/snapshot.js +266 -8
- package/lib/tools/snapshot.js.map +1 -1
- package/lib/tools/tool.js.map +1 -1
- package/lib/tools/utils.js +62 -6
- package/lib/tools/utils.js.map +1 -1
- package/lib/tools.js +11 -2
- package/lib/tools.js.map +1 -1
- package/lib/utils/dataUrl.js +58 -35
- package/lib/utils/dataUrl.js.map +1 -1
- package/lib/utils/fileUtils.js +35 -0
- package/lib/utils/fileUtils.js.map +1 -1
- package/lib/utils/guid.js +8 -0
- package/lib/utils/guid.js.map +1 -1
- package/lib/utils/jsSource.js +187 -0
- package/lib/utils/jsSource.js.map +1 -0
- package/lib/vscode/browserContextFactory.js +87 -0
- package/lib/vscode/browserContextFactory.js.map +1 -0
- package/lib/vscode/host.js +189 -33
- package/lib/vscode/host.js.map +1 -1
- package/lib/vscode/main.js +3 -35
- package/lib/vscode/main.js.map +1 -1
- package/package.json +13 -9
package/lib/utils/dataUrl.js
CHANGED
|
@@ -25,47 +25,40 @@ export function truncateDataUrl(url) {
|
|
|
25
25
|
return `${match.displayPrefix}...`;
|
|
26
26
|
}
|
|
27
27
|
export function truncateDataUrls(text) {
|
|
28
|
+
// Snapshots are routinely hundreds of KB and usually hold no data URL at all,
|
|
29
|
+
// so nothing is copied or rebuilt until the first one is actually found.
|
|
30
|
+
let start = findDataUrlStart(text, 0);
|
|
31
|
+
if (start === -1)
|
|
32
|
+
return text;
|
|
28
33
|
let result = '';
|
|
29
34
|
let offset = 0;
|
|
30
|
-
|
|
31
|
-
while (offset < text.length) {
|
|
32
|
-
const start = findDataUrlStart(text, lowerText, offset);
|
|
33
|
-
if (start === -1) {
|
|
34
|
-
result += text.slice(offset);
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
35
|
+
while (start !== -1) {
|
|
37
36
|
result += text.slice(offset, start);
|
|
38
37
|
const match = parseDataUrl(text, start);
|
|
39
38
|
if (!match) {
|
|
40
39
|
const prefixLength = dataUrlPrefixLengthAt(text, start);
|
|
41
40
|
result += text.slice(start, start + prefixLength);
|
|
42
41
|
offset = start + prefixLength;
|
|
43
|
-
continue;
|
|
44
42
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
else {
|
|
44
|
+
result += `${match.displayPrefix}...`;
|
|
45
|
+
offset = findDataUrlEnd(text, match);
|
|
46
|
+
}
|
|
47
|
+
start = findDataUrlStart(text, offset);
|
|
48
48
|
}
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
return result + text.slice(offset);
|
|
50
|
+
}
|
|
51
|
+
// Matches either prefix case-insensitively without lower-casing a copy of the
|
|
52
|
+
// whole text, which on a large snapshot costs more than the scan itself.
|
|
53
|
+
const dataUrlPrefixPattern = /data(?::|%3a)/gi;
|
|
54
|
+
function findDataUrlStart(text, offset) {
|
|
55
|
+
dataUrlPrefixPattern.lastIndex = offset;
|
|
56
|
+
for (let match = dataUrlPrefixPattern.exec(text); match; match = dataUrlPrefixPattern.exec(text)) {
|
|
57
|
+
if (isDataUrlStartBoundary(text, match.index))
|
|
58
|
+
return match.index;
|
|
57
59
|
}
|
|
58
60
|
return -1;
|
|
59
61
|
}
|
|
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
62
|
function dataUrlPrefixLengthAt(text, start) {
|
|
70
63
|
return startsWithIgnoreCase(text, start, encodedDataUrlPrefix) ? encodedDataUrlPrefix.length : dataUrlPrefix.length;
|
|
71
64
|
}
|
|
@@ -170,8 +163,26 @@ function dataUrlQuoteAt(text, start) {
|
|
|
170
163
|
function isLineBreak(char) {
|
|
171
164
|
return char === '\n' || char === '\r';
|
|
172
165
|
}
|
|
166
|
+
// Runs once per character of a base64 payload, which is the longest run in any
|
|
167
|
+
// snapshot, so it stays a plain switch rather than a regex plus an array scan.
|
|
173
168
|
function isBase64PayloadTerminator(char) {
|
|
174
|
-
|
|
169
|
+
switch (char) {
|
|
170
|
+
case '"':
|
|
171
|
+
case '\'':
|
|
172
|
+
case '<':
|
|
173
|
+
case '>':
|
|
174
|
+
case ')':
|
|
175
|
+
case ']':
|
|
176
|
+
case '}':
|
|
177
|
+
case '`':
|
|
178
|
+
case ':':
|
|
179
|
+
return true;
|
|
180
|
+
default:
|
|
181
|
+
return isWhitespace(char);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function isWhitespace(char) {
|
|
185
|
+
return /\s/.test(char);
|
|
175
186
|
}
|
|
176
187
|
function isQueryParamBoundary(text, match, ampersand) {
|
|
177
188
|
if (!looksLikeQueryParam(text, ampersand + 1))
|
|
@@ -180,13 +191,13 @@ function isQueryParamBoundary(text, match, ampersand) {
|
|
|
180
191
|
}
|
|
181
192
|
function isRawPayloadCompleteBefore(text, payloadStart, end) {
|
|
182
193
|
let position = end - 1;
|
|
183
|
-
while (position >= payloadStart &&
|
|
194
|
+
while (position >= payloadStart && isWhitespace(text[position]))
|
|
184
195
|
position--;
|
|
185
196
|
return text[position] === '>' || (position >= payloadStart + 2 && startsWithIgnoreCase(text, position - 2, '%3e'));
|
|
186
197
|
}
|
|
187
198
|
function isRawPayloadSuffixBoundary(text, match, position) {
|
|
188
199
|
const char = text[position];
|
|
189
|
-
if (
|
|
200
|
+
if (isWhitespace(char))
|
|
190
201
|
return !isRawMarkupPayload(text, match.payloadStart) || isRawPayloadCompleteBefore(text, match.payloadStart, position);
|
|
191
202
|
if (isRawPayloadWrapperBoundary(text, match, position))
|
|
192
203
|
return true;
|
|
@@ -210,7 +221,7 @@ function looksLikeSourceLocationSuffix(text, colon) {
|
|
|
210
221
|
return false;
|
|
211
222
|
while (position < text.length && /\d/.test(text[position]))
|
|
212
223
|
position++;
|
|
213
|
-
return position === text.length || isLineBreak(text[position]) ||
|
|
224
|
+
return position === text.length || isLineBreak(text[position]) || isWhitespace(text[position]);
|
|
214
225
|
}
|
|
215
226
|
function looksLikeQueryParam(text, offset) {
|
|
216
227
|
if (offset >= text.length)
|
|
@@ -219,7 +230,7 @@ function looksLikeQueryParam(text, offset) {
|
|
|
219
230
|
const char = text[position];
|
|
220
231
|
if (char === '=')
|
|
221
232
|
return position > offset;
|
|
222
|
-
if (isLineBreak(char) ||
|
|
233
|
+
if (isLineBreak(char) || isWhitespace(char) || ['&', '#', '"', '\'', '<', '>', ')', '}', '`'].includes(char))
|
|
223
234
|
return false;
|
|
224
235
|
}
|
|
225
236
|
return false;
|
|
@@ -245,7 +256,7 @@ function isRawPayloadBoundarySuffix(text, offset) {
|
|
|
245
256
|
if (offset >= text.length)
|
|
246
257
|
return true;
|
|
247
258
|
const char = text[offset];
|
|
248
|
-
return isLineBreak(char) ||
|
|
259
|
+
return isLineBreak(char) || isWhitespace(char) || ['"', '\'', ')', ']', '}', '`'].includes(char) || (char === '&' && looksLikeQueryParam(text, offset + 1));
|
|
249
260
|
}
|
|
250
261
|
function isEncodedPayloadTerminator(text, position) {
|
|
251
262
|
const encodedChar = percentEncodedCharAt(text, position);
|
|
@@ -259,7 +270,19 @@ function percentEncodedCharAt(text, position) {
|
|
|
259
270
|
return;
|
|
260
271
|
return String.fromCharCode(Number.parseInt(text.slice(position + 1, position + 3), 16));
|
|
261
272
|
}
|
|
273
|
+
// `value` is always lower-case ASCII here, so a char-code compare answers this
|
|
274
|
+
// without allocating the slice these hot per-character scans would otherwise make.
|
|
262
275
|
function startsWithIgnoreCase(text, position, value) {
|
|
263
|
-
|
|
276
|
+
if (position < 0 || position + value.length > text.length)
|
|
277
|
+
return false;
|
|
278
|
+
for (let index = 0; index < value.length; index++) {
|
|
279
|
+
const char = text.charCodeAt(position + index);
|
|
280
|
+
const expected = value.charCodeAt(index);
|
|
281
|
+
// Fold upper-case ASCII only; folding by bit would also equate control
|
|
282
|
+
// characters with punctuation.
|
|
283
|
+
if (char !== expected && !(char >= 65 && char <= 90 && char + 32 === expected))
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
return true;
|
|
264
287
|
}
|
|
265
288
|
//# sourceMappingURL=dataUrl.js.map
|
package/lib/utils/dataUrl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataUrl.js","sourceRoot":"","sources":["../../src/utils/dataUrl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,aAAa,GAAG,OAAO,CAAC;AAC9B,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,oBAAoB,CAAC;QACrG,OAAO,GAAG,CAAC;IAEb,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK;QACR,OAAO,GAAG,CAAC;IACb,OAAO,GAAG,KAAK,CAAC,aAAa,KAAK,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM;QACR,CAAC;QAED,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC;YAClD,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,KAAK,CAAC;QACtC,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAUD,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAiB,EAAE,MAAc;IACvE,IAAI,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,IAAI,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,GAAG,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,MAAc;IAC1D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACrE,IAAI,YAAY,KAAK,CAAC,CAAC;QACrB,OAAO,YAAY,CAAC;IACtB,IAAI,YAAY,KAAK,CAAC,CAAC;QACrB,OAAO,YAAY,CAAC;IACtB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa;IACxD,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;AACtH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrG,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,SAAS;QACZ,OAAO;IAET,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,eAAe,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC/E,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QACtD,OAAO;IAET,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC3E,OAAO;QACL,YAAY,EAAE,SAAS,CAAC,GAAG;QAC3B,aAAa,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,iBAAiB,CAAC;QACzG,QAAQ,EAAE,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrE,oBAAoB,EAAE,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;QAC1D,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAAc;IACxD,IAAI,QAAQ,GAAG,MAAM,CAAC;IACtB,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,WAAW,CAAC,IAAI,CAAC;YACnB,OAAO;QACT,IAAI,IAAI,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC;YACzD,OAAO;QACT,IAAI,IAAI,KAAK,GAAG;YACd,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChD,QAAQ,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAE,QAAgB,EAAE,eAAuB,EAAE,SAAyC,EAAE,SAAkB;IACjK,IAAI,QAAQ,CAAC,MAAM,IAAI,wBAAwB;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,eAAe,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,qBAAqB,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,aAAa,EAAE,CAAC;AAChJ,CAAC;AAED,SAAS,sBAAsB,CAAC,eAAuB;IACrD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,SAAkB;IACjE,OAAO,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB,EAAE,SAAkB;IAClE,IAAI,CAAC,QAAQ;QACX,OAAO,IAAI,CAAC;IACd,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC;QACjC,OAAO,IAAI,CAAC;IAEd,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACjG,OAAO,gDAAgD,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB,EAAE,SAAkB;IACjE,IAAI,CAAC,SAAS;QACZ,OAAO,QAAQ,CAAC;IAClB,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAmB;IACvD,IAAI,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7B,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,WAAW,CAAC,IAAI,CAAC;YACnB,MAAM;QACR,IAAI,KAAK,CAAC,oBAAoB,IAAI,IAAI,KAAK,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;YACtF,MAAM;QACR,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG;YAChC,MAAM;QACR,IAAI,KAAK,CAAC,QAAQ,IAAI,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC;YACzD,MAAM;QACR,IAAI,KAAK,CAAC,QAAQ,IAAI,yBAAyB,CAAC,IAAI,CAAC;YACnD,MAAM;QACR,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,KAAK,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;YAChG,MAAM;QACR,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;YACjF,MAAM;QACR,GAAG,EAAE,CAAC;IACR,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAmB,EAAE,SAAiB;IAChF,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,OAAO,KAAK,CAAC,QAAQ,IAAI,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,YAAoB,EAAE,GAAW;IACjF,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;IACvB,OAAO,QAAQ,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,QAAQ,EAAE,CAAC;IACb,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACrH,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,KAAmB,EAAE,QAAgB;IACrF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACzH,IAAI,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,IAAI,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC5C,OAAO,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1H,IAAI,IAAI,KAAK,GAAG;QACd,OAAO,KAAK,CAAC;IACf,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC;QACjH,OAAO,KAAK,CAAC;IACf,OAAO,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAmB,EAAE,KAAa;IAC1E,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACtH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,YAAoB;IAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAY,EAAE,KAAa;IAChE,IAAI,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,QAAQ,EAAE,CAAC;IACb,OAAO,QAAQ,KAAK,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAAc;IACvD,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM;QACvB,OAAO,KAAK,CAAC;IACf,KAAK,IAAI,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,GAAG;YACd,OAAO,QAAQ,GAAG,MAAM,CAAC;QAC3B,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvG,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,QAAgB;IAC5D,OAAO,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,KAAa;IACzD,IAAI,KAAK,KAAK,CAAC;QACb,OAAO,IAAI,CAAC;IACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IAEd,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAE,KAAmB,EAAE,QAAgB;IACtF,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;AACxK,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,MAAc;IAC9D,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM;QACvB,OAAO,IAAI,CAAC;IACd,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3J,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,QAAgB;IAChE,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,QAAgB;IAC9D,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB;IAC1D,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC1G,OAAO;IACT,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB,EAAE,KAAa;IACzE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;AAC/E,CAAC"}
|
|
1
|
+
{"version":3,"file":"dataUrl.js","sourceRoot":"","sources":["../../src/utils/dataUrl.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/fileUtils.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import os from 'node:os';
|
|
17
17
|
import path from 'node:path';
|
|
18
|
+
import { createShortGuid } from './guid.js';
|
|
18
19
|
export function cacheDir() {
|
|
19
20
|
let cacheDirectory;
|
|
20
21
|
if (process.platform === 'linux')
|
|
@@ -34,4 +35,38 @@ export function sanitizeForFilePath(s) {
|
|
|
34
35
|
return sanitize(s);
|
|
35
36
|
return sanitize(s.substring(0, separator)) + '.' + sanitize(s.substring(separator + 1));
|
|
36
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Timestamp fragment for DEFAULT artifact file names (screenshots, PDFs,
|
|
40
|
+
* reports, downloaded files). Carries a short random token besides the
|
|
41
|
+
* sanitized ISO timestamp:
|
|
42
|
+
* concurrent sessions (or overlapping calls) share one output directory, and
|
|
43
|
+
* a timestamp alone let two artifacts produced in the same millisecond
|
|
44
|
+
* overwrite each other. User-specified file names are never routed through
|
|
45
|
+
* this helper.
|
|
46
|
+
*/
|
|
47
|
+
export function safeIsoTimestampForFileName() {
|
|
48
|
+
return `${sanitizeForFilePath(new Date().toISOString())}-${createShortGuid()}`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Truncates `value` to at most `maxBytes` of UTF-8. Measured in bytes, not
|
|
52
|
+
* characters — filesystem name limits are byte limits — and cut between code
|
|
53
|
+
* points (surrogate pairs stay whole), so the result never ends in a split
|
|
54
|
+
* UTF-8 sequence.
|
|
55
|
+
*/
|
|
56
|
+
export function truncateToUtf8Bytes(value, maxBytes) {
|
|
57
|
+
if (maxBytes <= 0)
|
|
58
|
+
return '';
|
|
59
|
+
if (Buffer.byteLength(value, 'utf8') <= maxBytes)
|
|
60
|
+
return value;
|
|
61
|
+
let bytes = 0;
|
|
62
|
+
let result = '';
|
|
63
|
+
for (const character of value) {
|
|
64
|
+
const characterBytes = Buffer.byteLength(character, 'utf8');
|
|
65
|
+
if (bytes + characterBytes > maxBytes)
|
|
66
|
+
break;
|
|
67
|
+
result += character;
|
|
68
|
+
bytes += characterBytes;
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
37
72
|
//# sourceMappingURL=fileUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileUtils.js","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,QAAQ;IACtB,IAAI,cAAsB,CAAC;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC9B,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;SAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACpC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;SAC3D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QACnC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;;QAEzF,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;IACpG,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,CAAC,CAAC;QAClB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC"}
|
|
1
|
+
{"version":3,"file":"fileUtils.js","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,UAAU,QAAQ;IACtB,IAAI,cAAsB,CAAC;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC9B,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;SAC9E,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACpC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;SAC3D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QACnC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;;QAEzF,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,CAAS;IAC3C,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;IACpG,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,CAAC,CAAC;QAClB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,GAAG,mBAAmB,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,eAAe,EAAE,EAAE,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IACjE,IAAI,QAAQ,IAAI,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ;QAC9C,OAAO,KAAK,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,KAAK,GAAG,cAAc,GAAG,QAAQ;YACnC,MAAM;QACR,MAAM,IAAI,SAAS,CAAC;QACpB,KAAK,IAAI,cAAc,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/lib/utils/guid.js
CHANGED
|
@@ -17,6 +17,14 @@ import crypto from 'node:crypto';
|
|
|
17
17
|
export function createGuid() {
|
|
18
18
|
return crypto.randomBytes(16).toString('hex');
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Short collision-resistant token (8 hex chars) for artifact names that
|
|
22
|
+
* already carry a timestamp: two connections created in the same millisecond
|
|
23
|
+
* must still get distinct session/trace folders.
|
|
24
|
+
*/
|
|
25
|
+
export function createShortGuid() {
|
|
26
|
+
return crypto.randomBytes(4).toString('hex');
|
|
27
|
+
}
|
|
20
28
|
export function createHash(data) {
|
|
21
29
|
return crypto.createHash('sha256').update(data).digest('hex').slice(0, 7);
|
|
22
30
|
}
|
package/lib/utils/guid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guid.js","sourceRoot":"","sources":["../../src/utils/guid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
1
|
+
{"version":3,"file":"guid.js","sourceRoot":"","sources":["../../src/utils/guid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
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
|
+
// Just enough of a JavaScript lexer to tell a function literal from an
|
|
17
|
+
// expression, for callers that must decide from the source form alone. A parser
|
|
18
|
+
// would be more exact, but the repo ships no runtime one and reaching into
|
|
19
|
+
// Playwright's bundled Babel would add a deep private import for one question.
|
|
20
|
+
const whitespace = /\s/;
|
|
21
|
+
const identifierStart = /^[\p{ID_Start}$_][\p{ID_Continue}$]*/u;
|
|
22
|
+
/**
|
|
23
|
+
* Whether `source` is a function literal -- `() => {}`, `function () {}`,
|
|
24
|
+
* `async x => x` -- as opposed to an expression that may merely evaluate to one.
|
|
25
|
+
*/
|
|
26
|
+
export function isFunctionSource(source) {
|
|
27
|
+
let body = source.slice(skipTrivia(source, 0));
|
|
28
|
+
for (;;) {
|
|
29
|
+
const afterAsync = body.slice(skipAsyncKeyword(body));
|
|
30
|
+
if (/^function\b/.test(afterAsync) || hasArrowHead(afterAsync))
|
|
31
|
+
return true;
|
|
32
|
+
// `(() => 1)` and `(function () {})` are function literals inside grouping
|
|
33
|
+
// parentheses. Look inside before concluding this is an expression.
|
|
34
|
+
const inner = stripEnclosingParens(body);
|
|
35
|
+
if (inner === null)
|
|
36
|
+
return false;
|
|
37
|
+
body = inner.slice(skipTrivia(inner, 0));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function skipAsyncKeyword(source) {
|
|
41
|
+
const keyword = /^async\b/.exec(source)?.[0];
|
|
42
|
+
return keyword ? skipTrivia(source, keyword.length) : 0;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Matches the head of an arrow function -- `x =>`, `(a, b) =>` -- without
|
|
46
|
+
* matching a parenthesised expression such as `(a + b)`. The `async` keyword is
|
|
47
|
+
* already stripped by the caller.
|
|
48
|
+
*/
|
|
49
|
+
function hasArrowHead(source) {
|
|
50
|
+
let offset = 0;
|
|
51
|
+
if (source[0] === '(') {
|
|
52
|
+
const end = matchingParen(source, 0);
|
|
53
|
+
// The scanner does not model every parameter-list construct. When the match
|
|
54
|
+
// cannot be found, call it a function: passing a function through is the
|
|
55
|
+
// conservative answer, since a wrongly wrapped function fails silently
|
|
56
|
+
// while a wrongly passed-through expression fails loudly.
|
|
57
|
+
if (end === -1)
|
|
58
|
+
return true;
|
|
59
|
+
offset = end + 1;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const identifier = identifierStart.exec(source)?.[0];
|
|
63
|
+
if (!identifier)
|
|
64
|
+
return false;
|
|
65
|
+
offset = identifier.length;
|
|
66
|
+
}
|
|
67
|
+
return source.startsWith('=>', skipTrivia(source, offset));
|
|
68
|
+
}
|
|
69
|
+
function stripEnclosingParens(source) {
|
|
70
|
+
if (source[0] !== '(')
|
|
71
|
+
return null;
|
|
72
|
+
const end = matchingParen(source, 0);
|
|
73
|
+
// Only a group that wraps the whole source: `(a) => a` closes early and its
|
|
74
|
+
// parentheses are a parameter list, not a group.
|
|
75
|
+
if (end === -1 || skipTrivia(source, end + 1) !== source.length)
|
|
76
|
+
return null;
|
|
77
|
+
return source.slice(1, end);
|
|
78
|
+
}
|
|
79
|
+
function matchingParen(source, start) {
|
|
80
|
+
return matchingDelimiter(source, start, '(', ')');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Finds the delimiter closing the one at `start`, stepping over comments,
|
|
84
|
+
* strings, template substitutions and regular expression literals so that a
|
|
85
|
+
* bracket inside any of them is not counted.
|
|
86
|
+
*/
|
|
87
|
+
function matchingDelimiter(source, start, open, close) {
|
|
88
|
+
let depth = 0;
|
|
89
|
+
for (let offset = start; offset < source.length; offset++) {
|
|
90
|
+
const char = source[offset];
|
|
91
|
+
if (char === '/' && (source[offset + 1] === '/' || source[offset + 1] === '*')) {
|
|
92
|
+
const end = skipTrivia(source, offset);
|
|
93
|
+
if (end === offset)
|
|
94
|
+
return -1;
|
|
95
|
+
offset = end - 1;
|
|
96
|
+
}
|
|
97
|
+
else if (char === '"' || char === '\'' || char === '`') {
|
|
98
|
+
const end = endOfString(source, offset);
|
|
99
|
+
if (end === -1)
|
|
100
|
+
return -1;
|
|
101
|
+
offset = end;
|
|
102
|
+
}
|
|
103
|
+
else if (char === '/' && startsRegex(source, offset)) {
|
|
104
|
+
const end = endOfRegex(source, offset);
|
|
105
|
+
if (end === -1)
|
|
106
|
+
return -1;
|
|
107
|
+
offset = end;
|
|
108
|
+
}
|
|
109
|
+
else if (char === open) {
|
|
110
|
+
depth++;
|
|
111
|
+
}
|
|
112
|
+
else if (char === close) {
|
|
113
|
+
depth--;
|
|
114
|
+
if (!depth)
|
|
115
|
+
return offset;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return -1;
|
|
119
|
+
}
|
|
120
|
+
function endOfString(source, start) {
|
|
121
|
+
const quote = source[start];
|
|
122
|
+
for (let offset = start + 1; offset < source.length; offset++) {
|
|
123
|
+
const char = source[offset];
|
|
124
|
+
if (char === '\\') {
|
|
125
|
+
offset++;
|
|
126
|
+
}
|
|
127
|
+
else if (quote === '`' && char === '$' && source[offset + 1] === '{') {
|
|
128
|
+
// A substitution can hold anything, including another template.
|
|
129
|
+
const end = matchingDelimiter(source, offset + 1, '{', '}');
|
|
130
|
+
if (end === -1)
|
|
131
|
+
return -1;
|
|
132
|
+
offset = end;
|
|
133
|
+
}
|
|
134
|
+
else if (char === quote) {
|
|
135
|
+
return offset;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return -1;
|
|
139
|
+
}
|
|
140
|
+
// A slash directly after a value is division; anywhere else it opens a regular
|
|
141
|
+
// expression. Parameter defaults are the case that matters here: `(a = /)/)`.
|
|
142
|
+
function startsRegex(source, offset) {
|
|
143
|
+
let index = offset - 1;
|
|
144
|
+
while (index >= 0 && whitespace.test(source[index]))
|
|
145
|
+
index--;
|
|
146
|
+
return index < 0 || !/[\w$)\]]/.test(source[index]);
|
|
147
|
+
}
|
|
148
|
+
function endOfRegex(source, start) {
|
|
149
|
+
let inCharacterClass = false;
|
|
150
|
+
for (let offset = start + 1; offset < source.length; offset++) {
|
|
151
|
+
const char = source[offset];
|
|
152
|
+
if (char === '\\')
|
|
153
|
+
offset++;
|
|
154
|
+
else if (char === '\n')
|
|
155
|
+
return -1;
|
|
156
|
+
else if (inCharacterClass)
|
|
157
|
+
inCharacterClass = char !== ']';
|
|
158
|
+
else if (char === '[')
|
|
159
|
+
inCharacterClass = true;
|
|
160
|
+
else if (char === '/')
|
|
161
|
+
return offset;
|
|
162
|
+
}
|
|
163
|
+
return -1;
|
|
164
|
+
}
|
|
165
|
+
/** Offset of the first character at or after `offset` that is not whitespace or a comment. */
|
|
166
|
+
export function skipTrivia(source, offset) {
|
|
167
|
+
for (;;) {
|
|
168
|
+
while (offset < source.length && whitespace.test(source[offset]))
|
|
169
|
+
offset++;
|
|
170
|
+
if (source.startsWith('//', offset)) {
|
|
171
|
+
const lineEnd = source.indexOf('\n', offset);
|
|
172
|
+
if (lineEnd === -1)
|
|
173
|
+
return source.length;
|
|
174
|
+
offset = lineEnd + 1;
|
|
175
|
+
}
|
|
176
|
+
else if (source.startsWith('/*', offset)) {
|
|
177
|
+
const commentEnd = source.indexOf('*/', offset + 2);
|
|
178
|
+
if (commentEnd === -1)
|
|
179
|
+
return source.length;
|
|
180
|
+
offset = commentEnd + 2;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
return offset;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=jsSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsSource.js","sourceRoot":"","sources":["../../src/utils/jsSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
import { applyStorageStateToReusedContext, assertStorageStateDoesNotResetUserProfile } from '../browserContextFactory.js';
|
|
17
|
+
// Shared with the host's browser_connect validation so the two never drift:
|
|
18
|
+
// the host checks the combination before tearing down the working provider,
|
|
19
|
+
// and the factory keeps the same check as the last line of defense.
|
|
20
|
+
export const vscodeProfileConflictRemedy = 'Drop --user-data-dir (the state is applied inside the extension\'s own browser profile), or drop the storage state and sign in in that profile instead.';
|
|
21
|
+
export class VSCodeBrowserContextFactory {
|
|
22
|
+
_config;
|
|
23
|
+
_playwright;
|
|
24
|
+
_connectionString;
|
|
25
|
+
name = 'vscode';
|
|
26
|
+
description = 'Connect to a browser running in the Playwright VS Code extension';
|
|
27
|
+
// A fresh context is created with the state; a reused extension context gets
|
|
28
|
+
// it applied via setStorageState(), like the other reused-context factories.
|
|
29
|
+
appliesStorageState = true;
|
|
30
|
+
// Each createContext() reuses the extension browser's existing context when
|
|
31
|
+
// one is present, so two sessions would end up in the same context (same
|
|
32
|
+
// tabs, cookies and storage) — never a separate one per handle.
|
|
33
|
+
sessionsUnsupportedReason = 'the VS Code extension supplies the browser\'s existing context, which every session would share (same tabs, cookies and storage).';
|
|
34
|
+
constructor(_config, _playwright, _connectionString) {
|
|
35
|
+
this._config = _config;
|
|
36
|
+
this._playwright = _playwright;
|
|
37
|
+
this._connectionString = _connectionString;
|
|
38
|
+
}
|
|
39
|
+
async createContext(clientInfo, abortSignal) {
|
|
40
|
+
// A configured --user-data-dir is forwarded to the extension's launch
|
|
41
|
+
// below, so the context the extension hands back lives inside the user's
|
|
42
|
+
// own profile — applying the storage state there would clear that
|
|
43
|
+
// profile's cookies and origin storage, which the persistent factory
|
|
44
|
+
// already refuses to do. Checked before connecting, so the contradiction
|
|
45
|
+
// fails fast without ever reaching the browser.
|
|
46
|
+
assertStorageStateDoesNotResetUserProfile(this._config, vscodeProfileConflictRemedy);
|
|
47
|
+
let launchOptions = this._config.browser.launchOptions;
|
|
48
|
+
if (this._config.browser.userDataDir) {
|
|
49
|
+
launchOptions = {
|
|
50
|
+
...launchOptions,
|
|
51
|
+
...this._config.browser.contextOptions,
|
|
52
|
+
userDataDir: this._config.browser.userDataDir,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const connectionString = new URL(this._connectionString);
|
|
56
|
+
connectionString.searchParams.set('launch-options', JSON.stringify(launchOptions));
|
|
57
|
+
const browserType = this._playwright.chromium; // it could also be firefox or webkit, we just need some browser type to call `connect` on
|
|
58
|
+
const browser = await browserType.connect(connectionString.toString());
|
|
59
|
+
let context;
|
|
60
|
+
try {
|
|
61
|
+
const existing = browser.contexts()[0];
|
|
62
|
+
if (existing) {
|
|
63
|
+
// Without this, a configured storage state would be silently ignored on
|
|
64
|
+
// the reuse path while newContext() below applies it — authenticated
|
|
65
|
+
// scans would run anonymously depending on which branch was taken.
|
|
66
|
+
await applyStorageStateToReusedContext(this._config, existing);
|
|
67
|
+
context = existing;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
context = await browser.newContext(this._config.browser.contextOptions);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
// No close() has been handed out yet, so the connection must not outlive
|
|
75
|
+
// the failure (e.g. an unreadable storage-state file).
|
|
76
|
+
await browser.close().catch(() => { });
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
browserContext: context,
|
|
81
|
+
close: async () => {
|
|
82
|
+
await browser.close();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=browserContextFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserContextFactory.js","sourceRoot":"","sources":["../../src/vscode/browserContextFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,gCAAgC,EAAE,yCAAyC,EAAE,MAAM,6BAA6B,CAAC;AAK1H,4EAA4E;AAC5E,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,yJAAyJ,CAAC;AAErM,MAAM,OAAO,2BAA2B;IAWlB,OAAO;IAAsB,WAAW;IAAuC,iBAAiB;IAVpH,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,kEAAkE,CAAC;IACjF,6EAA6E;IAC7E,6EAA6E;IACpE,mBAAmB,GAAG,IAAI,CAAC;IACpC,4EAA4E;IAC5E,yEAAyE;IACzE,gEAAgE;IACvD,yBAAyB,GAAG,mIAAmI,CAAC;IAEzK,YAAoB,OAAmB,EAAU,WAAwC,EAAU,iBAAyB;uBAAxG,OAAO;2BAAsB,WAAW;iCAAuC,iBAAiB;IAAW,CAAC;IAEhI,KAAK,CAAC,aAAa,CAAC,UAAsB,EAAE,WAAwB;QAClE,sEAAsE;QACtE,yEAAyE;QACzE,kEAAkE;QAClE,qEAAqE;QACrE,yEAAyE;QACzE,gDAAgD;QAChD,yCAAyC,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QACrF,IAAI,aAAa,GAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,aAAa,GAAG;gBACd,GAAG,aAAa;gBAChB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc;gBACtC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;aAC9C,CAAC;QACJ,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzD,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAEnF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,0FAA0F;QACzI,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvE,IAAI,OAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACb,wEAAwE;gBACxE,qEAAqE;gBACrE,mEAAmE;gBACnE,MAAM,gCAAgC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC/D,OAAO,GAAG,QAAQ,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yEAAyE;YACzE,uDAAuD;YACvD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO;YACL,cAAc,EAAE,OAAO;YACvB,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
|