@axe-core/watcher 3.19.1 → 3.20.1-next.9bd23ba1
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/LICENSES-3RD-PARTY.md +1 -1
- package/dist/Controller.d.ts +3 -0
- package/dist/Controller.js +29 -11
- package/dist/Controller.js.map +1 -1
- package/dist/cypress.d.ts +2 -0
- package/dist/cypress.js +12 -8
- package/dist/cypress.js.map +1 -1
- package/dist/cypressCommands.js +34 -24
- package/dist/cypressCommands.js.map +1 -1
- package/dist/git.js +50 -11
- package/dist/git.js.map +1 -1
- package/dist/puppeteer.d.ts +3 -3
- package/dist/puppeteer.js +1 -1
- package/dist/puppeteer.js.map +1 -1
- package/dist/sendResultsToServer.d.ts +4 -1
- package/dist/sendResultsToServer.js +37 -4
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.js +2 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/initializeSession.d.ts +4 -5
- package/dist/utils/initializeSession.js +31 -66
- package/dist/utils/initializeSession.js.map +1 -1
- package/dist/utils/linearBackoff.d.ts +10 -0
- package/dist/utils/linearBackoff.js +47 -0
- package/dist/utils/linearBackoff.js.map +1 -0
- package/dist/utils/validateHeadlessPlaywright.js +9 -3
- package/dist/utils/validateHeadlessPlaywright.js.map +1 -1
- package/dist/utils/writeExtensionManifest.d.ts +6 -4
- package/dist/utils/writeExtensionManifest.js +13 -3
- package/dist/utils/writeExtensionManifest.js.map +1 -1
- package/dist/utils/writeVariables.d.ts +16 -7
- package/dist/utils/writeVariables.js +41 -15
- package/dist/utils/writeVariables.js.map +1 -1
- package/dist/wdio.js +3 -4
- package/dist/wdio.js.map +1 -1
- package/dist/webdriver.js +2 -3
- package/dist/webdriver.js.map +1 -1
- package/extension/axe-versions/axe-core@4.10.3/axe.min.js +12 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/README.md +9 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/_template.json +1123 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/da.json +799 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/de.json +1123 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/el.json +1069 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/es.json +790 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/eu.json +789 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/fr.json +994 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/he.json +1017 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/it.json +1108 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/ja.json +1118 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/ko.json +1003 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/nl.json +48 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/no_NB.json +799 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/pl.json +1109 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/pt_BR.json +970 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/zh_CN.json +1116 -0
- package/extension/axe-versions/axe-core@4.10.3/locales/zh_TW.json +1108 -0
- package/extension/axe-versions-mapper.js +2 -1
- package/extension/axe.js +1 -1
- package/extension/axe.js.LICENSE.txt +2 -2
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +8 -8
package/dist/git.js
CHANGED
@@ -1,43 +1,63 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
6
|
exports.getTag = exports.isDirty = exports.getCommitInfo = exports.getRemoteURL = exports.parseDefaultFromShowRemoteOutput = exports.getDefaultBranchName = exports.getBranchName = exports.isRepository = void 0;
|
4
7
|
const child_process_1 = require("child_process");
|
8
|
+
const createDebugger_1 = __importDefault(require("./createDebugger"));
|
9
|
+
const debugLogger = (0, createDebugger_1.default)('git');
|
5
10
|
const isRepository = (dir = process.cwd()) => {
|
6
11
|
try {
|
12
|
+
debugLogger('Checking if directory is a Git repository:', dir);
|
7
13
|
(0, child_process_1.execSync)('git rev-parse --is-inside-work-tree', {
|
8
14
|
cwd: dir,
|
9
15
|
stdio: 'ignore'
|
10
16
|
});
|
17
|
+
debugLogger('Directory is a Git repository');
|
11
18
|
return true;
|
12
19
|
}
|
13
|
-
catch (
|
20
|
+
catch (e) {
|
21
|
+
if (e instanceof Error)
|
22
|
+
debugLogger('Error while checking if directory is a Git repository:', {
|
23
|
+
message: e.message,
|
24
|
+
stack: e.stack
|
25
|
+
});
|
14
26
|
return false;
|
15
27
|
}
|
16
28
|
};
|
17
29
|
exports.isRepository = isRepository;
|
18
30
|
const getBranchName = (dir = process.cwd()) => {
|
19
31
|
try {
|
20
|
-
|
32
|
+
debugLogger('Getting current branch name for directory:', dir);
|
33
|
+
const branchName = (0, child_process_1.execSync)('git rev-parse --abbrev-ref HEAD', {
|
21
34
|
cwd: dir,
|
22
35
|
stdio: ['ignore', 'pipe', 'ignore']
|
23
36
|
})
|
24
37
|
.toString()
|
25
38
|
.trim();
|
39
|
+
debugLogger('Current branch name:', branchName);
|
40
|
+
return branchName;
|
26
41
|
}
|
27
|
-
catch (
|
42
|
+
catch (e) {
|
43
|
+
debugLogger('Error while getting current branch name:', e);
|
28
44
|
return null;
|
29
45
|
}
|
30
46
|
};
|
31
47
|
exports.getBranchName = getBranchName;
|
32
48
|
const getDefaultBranchName = (dir = process.cwd()) => {
|
33
49
|
try {
|
50
|
+
debugLogger('Getting default branch name for directory:', dir);
|
34
51
|
const stdout = (0, child_process_1.execSync)('git symbolic-ref --short refs/remotes/origin/HEAD', {
|
35
52
|
cwd: dir,
|
36
53
|
stdio: ['ignore', 'pipe', 'ignore']
|
37
54
|
}).toString();
|
38
|
-
|
55
|
+
const remoteOutput = (0, exports.parseDefaultFromShowRemoteOutput)(stdout);
|
56
|
+
debugLogger('Default branch name:', remoteOutput);
|
57
|
+
return remoteOutput;
|
39
58
|
}
|
40
|
-
catch (
|
59
|
+
catch (e) {
|
60
|
+
debugLogger('Error while getting default branch name:', e);
|
41
61
|
return null;
|
42
62
|
}
|
43
63
|
};
|
@@ -49,55 +69,74 @@ const parseDefaultFromShowRemoteOutput = (output) => {
|
|
49
69
|
exports.parseDefaultFromShowRemoteOutput = parseDefaultFromShowRemoteOutput;
|
50
70
|
const getRemoteURL = (dir = process.cwd()) => {
|
51
71
|
try {
|
52
|
-
|
72
|
+
debugLogger('Getting remote URL for directory:', dir);
|
73
|
+
const remoteUrl = (0, child_process_1.execSync)('git config --get remote.origin.url', {
|
53
74
|
cwd: dir,
|
54
75
|
stdio: ['ignore', 'pipe', 'ignore']
|
55
76
|
})
|
56
77
|
.toString()
|
57
78
|
.trim();
|
79
|
+
debugLogger('Remote URL:', remoteUrl);
|
80
|
+
return remoteUrl;
|
58
81
|
}
|
59
|
-
catch (
|
82
|
+
catch (e) {
|
83
|
+
debugLogger('Error while getting remote URL:', e);
|
60
84
|
return null;
|
61
85
|
}
|
62
86
|
};
|
63
87
|
exports.getRemoteURL = getRemoteURL;
|
64
88
|
const getCommitInfo = (dir = process.cwd()) => {
|
65
89
|
try {
|
90
|
+
debugLogger('Getting most recent commit info for directory:', dir);
|
66
91
|
const stdout = (0, child_process_1.execSync)('git show --no-patch --format="%s%n%H%n%an%n%ae"', {
|
67
92
|
cwd: dir,
|
68
93
|
stdio: ['ignore', 'pipe', 'ignore']
|
69
94
|
});
|
70
95
|
const [message, hash, author, email] = stdout.toString().trim().split('\n');
|
96
|
+
debugLogger('Most recent commit info:', {
|
97
|
+
message,
|
98
|
+
hash,
|
99
|
+
author,
|
100
|
+
email
|
101
|
+
});
|
71
102
|
return { message, hash, author, email };
|
72
103
|
}
|
73
|
-
catch (
|
104
|
+
catch (e) {
|
105
|
+
debugLogger('Error while getting most recent commit info:', e);
|
74
106
|
return null;
|
75
107
|
}
|
76
108
|
};
|
77
109
|
exports.getCommitInfo = getCommitInfo;
|
78
110
|
const isDirty = (dir = process.cwd()) => {
|
79
111
|
try {
|
112
|
+
debugLogger('Checking if repository contains unstaged changes for directory:', dir);
|
80
113
|
const stdout = (0, child_process_1.execSync)('git status --short', {
|
81
114
|
cwd: dir,
|
82
115
|
stdio: ['ignore', 'pipe', 'ignore']
|
83
116
|
});
|
117
|
+
debugLogger('Repository contains unstaged changes:', stdout.length > 0);
|
84
118
|
return stdout.length > 0;
|
85
119
|
}
|
86
|
-
catch (
|
120
|
+
catch (e) {
|
121
|
+
debugLogger('Error while checking if repository contains unstaged changes:', e);
|
87
122
|
return false;
|
88
123
|
}
|
89
124
|
};
|
90
125
|
exports.isDirty = isDirty;
|
91
126
|
const getTag = (dir = process.cwd()) => {
|
92
127
|
try {
|
93
|
-
|
128
|
+
debugLogger('Getting tag name for directory:', dir);
|
129
|
+
const tag = (0, child_process_1.execSync)('git describe --tags --exact', {
|
94
130
|
cwd: dir,
|
95
131
|
stdio: ['ignore', 'pipe', 'ignore']
|
96
132
|
})
|
97
133
|
.toString()
|
98
134
|
.trim();
|
135
|
+
debugLogger('Current tag name:', tag);
|
136
|
+
return tag;
|
99
137
|
}
|
100
|
-
catch (
|
138
|
+
catch (e) {
|
139
|
+
debugLogger('Error while getting tag name:', e);
|
101
140
|
return null;
|
102
141
|
}
|
103
142
|
};
|
package/dist/git.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
package/dist/puppeteer.d.ts
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
import type {
|
1
|
+
import type { launch, Page, BrowserContext } from 'puppeteer';
|
2
2
|
import Controller from './Controller';
|
3
3
|
import { type Configuration } from './utils/writeVariables';
|
4
|
-
type
|
4
|
+
type LaunchOptions = Parameters<typeof launch>[0];
|
5
5
|
/**
|
6
6
|
* Creates a Puppeteer config that uses axe extension.
|
7
7
|
*
|
8
8
|
* @param opts Config to extend
|
9
9
|
*/
|
10
|
-
export declare function puppeteerConfig(opts: Configuration &
|
10
|
+
export declare function puppeteerConfig(opts: Configuration & LaunchOptions): NonNullable<LaunchOptions>;
|
11
11
|
export declare class PuppeteerController extends Controller {
|
12
12
|
private driver;
|
13
13
|
constructor(driver: Page);
|
package/dist/puppeteer.js
CHANGED
@@ -11,7 +11,7 @@ const mergeChromeArgs_1 = __importDefault(require("./utils/mergeChromeArgs"));
|
|
11
11
|
const writeVariables_1 = __importDefault(require("./utils/writeVariables"));
|
12
12
|
const checkUserArgs_1 = require("./utils/checkUserArgs");
|
13
13
|
function headlessNotSupportedError(config) {
|
14
|
-
if (!
|
14
|
+
if (!config?.headless || config.headless === 'new') {
|
15
15
|
return;
|
16
16
|
}
|
17
17
|
if (config.headless === 'shell') {
|
package/dist/puppeteer.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../src/puppeteer.ts"],"names":[],"mappings":";;;;;;
|
1
|
+
{"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../src/puppeteer.ts"],"names":[],"mappings":";;;;;;AAwCA,0CAqBC;AA5DD,8DAAqC;AACrC,iFAA6E;AAC7E,8EAAqD;AACrD,4EAA2E;AAC3E,yDAAqD;AAWrD,SAAS,yBAAyB,CAChC,MAAuD;IAEvD,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACnD,OAAM;IACR,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,qDAAyB,CACjC,mGAAmG,CACpG,CAAA;IACH,CAAC;IAED,MAAM,IAAI,qDAAyB,CACjC,8HAA8H,CAC/H,CAAA;AACH,CAAC;AAQD,SAAgB,eAAe,CAC7B,IAAmC;IAEnC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;IAE1B,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAA;IACnB,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAA;IAEnB,yBAAyB,CACvB,MAAyD,CAC1D,CAAA;IAED,MAAM,YAAY,GAAG,IAAI,CAAA;IACzB,IAAI,GAAG,IAAA,yBAAe,EAAC,YAAY,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,KAAK;QACf,IAAI;KACL,CAAA;AACH,CAAC;AAED,MAAa,mBAAoB,SAAQ,oBAAU;IAGjD,YAAY,MAAY;QACtB,KAAK,CAAC;YACJ,eAAe,EAAE,qBAAqB;YACtC,eAAe,EAAE,WAAW;YAC5B,qBAAqB,EAAE,mBAAmB;SAC3C,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,EAA+B,EAC/B,GAAG,IAAe;QAElB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;QACtD,OAAO,MAAW,CAAA;IACpB,CAAC;CACF;AApBD,kDAoBC;AAKM,MAAM,aAAa,GAAG,CAE3B,cAA8B,EAE9B,UAA+B,EACf,EAAE;IAClB,MAAM,IAAI,KAAK,CAAC;;;;;;KAMb,CAAC,CAAA;AACN,CAAC,CAAA;AAbY,QAAA,aAAa,iBAazB;AAED,yDAAmE;AAA1D,sHAAA,QAAQ,OAAqB"}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import type { AxeResults, ElementContext } from 'axe-core';
|
2
2
|
import type { RunOptions } from './utils/validateAxeRunOptions';
|
3
|
-
import type debug from 'debug';
|
4
3
|
/**
|
5
4
|
* Number of page states to send to the server at once.
|
6
5
|
*
|
@@ -8,6 +7,10 @@ import type debug from 'debug';
|
|
8
7
|
* Entity Too Large), as the request body will be enormous.
|
9
8
|
*/
|
10
9
|
export declare const MAX_PAGE_STATES_PER_REQUEST = 5;
|
10
|
+
/**
|
11
|
+
* The maximum number of times to retry sending results to the server.
|
12
|
+
*/
|
13
|
+
export declare const MAX_RETRIES = 3;
|
11
14
|
export interface Result {
|
12
15
|
page_state: string;
|
13
16
|
results: AxeResults;
|
@@ -3,12 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.sendResultsToServer = exports.MAX_PAGE_STATES_PER_REQUEST = void 0;
|
6
|
+
exports.sendResultsToServer = exports.MAX_RETRIES = exports.MAX_PAGE_STATES_PER_REQUEST = void 0;
|
7
7
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
8
8
|
const uuid_1 = require("uuid");
|
9
9
|
const readVariables_1 = __importDefault(require("./utils/readVariables"));
|
10
|
+
const linearBackoff_1 = __importDefault(require("./utils/linearBackoff"));
|
10
11
|
const { version } = require('../package.json');
|
11
12
|
exports.MAX_PAGE_STATES_PER_REQUEST = 5;
|
13
|
+
exports.MAX_RETRIES = 3;
|
12
14
|
const sendResultsToServer = async ({ results, debugLogger }) => {
|
13
15
|
const { server_url, api_key, session_id, git_data } = (0, readVariables_1.default)();
|
14
16
|
const resultsURL = new URL(`/api-pub/watcher/sessions/${session_id}`, server_url);
|
@@ -18,7 +20,7 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
18
20
|
totalBytes: Buffer.byteLength(JSON.stringify(results))
|
19
21
|
});
|
20
22
|
debugLogger('SendResultsToServer: Session ID', { session_id });
|
21
|
-
const putResults = async (bodyResults = []) => {
|
23
|
+
const putResults = async (bodyResults = [], retryAttempt = 0) => {
|
22
24
|
const body = {
|
23
25
|
axe_watcher_version: version,
|
24
26
|
results: bodyResults,
|
@@ -50,17 +52,48 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
50
52
|
resStatusText: res.statusText
|
51
53
|
});
|
52
54
|
}
|
55
|
+
const is500 = res.status === 500;
|
56
|
+
const is408 = res.status === 408;
|
57
|
+
const is429 = res.status === 429;
|
58
|
+
if ((is500 || is408 || is429) && retryAttempt !== exports.MAX_RETRIES) {
|
59
|
+
const incrementRetry = retryAttempt + 1;
|
60
|
+
console.warn('@axe-core/watcher: Retrying...');
|
61
|
+
debugLogger('SendResultsToServer: Retrying...', {
|
62
|
+
retryAttempt: incrementRetry,
|
63
|
+
resStatus: res.status,
|
64
|
+
batchResults: bodyResults.length,
|
65
|
+
reqSize: Buffer.byteLength(JSON.stringify(body))
|
66
|
+
});
|
67
|
+
await (0, linearBackoff_1.default)(incrementRetry);
|
68
|
+
await putResults(bodyResults, incrementRetry);
|
69
|
+
}
|
70
|
+
else if (retryAttempt === exports.MAX_RETRIES) {
|
71
|
+
debugLogger('SendResultsToServer: Max retries reached', {
|
72
|
+
retryAttempt,
|
73
|
+
resStatus: res.status
|
74
|
+
});
|
75
|
+
console.warn('@axe-core/watcher: Unable to send results to server, max retries reached');
|
76
|
+
}
|
53
77
|
};
|
54
78
|
results.forEach(result => {
|
55
79
|
if (result.screenshot) {
|
56
80
|
result.screenshot_id = (0, uuid_1.v4)();
|
57
81
|
}
|
58
82
|
});
|
83
|
+
const requestErrorHandler = (error) => {
|
84
|
+
debugLogger('SendResultsToServer: Fetch error', {
|
85
|
+
message: error.message,
|
86
|
+
type: error.type || 'NA',
|
87
|
+
code: error.code || 'NA',
|
88
|
+
stack: error.stack || 'NA',
|
89
|
+
errno: error.errno || 'NA'
|
90
|
+
});
|
91
|
+
};
|
59
92
|
for (let i = 0; i < results.length; i += exports.MAX_PAGE_STATES_PER_REQUEST) {
|
60
93
|
const batch = results
|
61
94
|
.slice(i, i + exports.MAX_PAGE_STATES_PER_REQUEST)
|
62
95
|
.map(r => ({ ...r, screenshot: null }));
|
63
|
-
await putResults(batch);
|
96
|
+
await putResults(batch).catch(requestErrorHandler);
|
64
97
|
}
|
65
98
|
await Promise.all(results.map(async ({ screenshot, screenshot_id }) => {
|
66
99
|
if (!screenshot) {
|
@@ -80,7 +113,7 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
80
113
|
if (!ok) {
|
81
114
|
console.warn('@axe-core/watcher: Unable to send screenshot to server');
|
82
115
|
}
|
83
|
-
}));
|
116
|
+
})).catch(requestErrorHandler);
|
84
117
|
};
|
85
118
|
exports.sendResultsToServer = sendResultsToServer;
|
86
119
|
exports.default = exports.sendResultsToServer;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sendResultsToServer.js","sourceRoot":"","sources":["../src/sendResultsToServer.ts"],"names":[],"mappings":";;;;;;AAAA,
|
1
|
+
{"version":3,"file":"sendResultsToServer.js","sourceRoot":"","sources":["../src/sendResultsToServer.ts"],"names":[],"mappings":"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"}
|
@@ -2,3 +2,4 @@ export declare const DEFAULT_SERVER_URL = "https://axe.deque.com/";
|
|
2
2
|
export declare const PATH_TO_EXTENSION: string;
|
3
3
|
export declare const PATH_TO_SESSION_FILE: string;
|
4
4
|
export declare const PATH_TO_EXTENSION_VARIABLES: string;
|
5
|
+
export declare const DOCS_LINK = "https://docs.deque.com/developer-hub/2/en/dh-troubleshooting";
|
package/dist/utils/constants.js
CHANGED
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.PATH_TO_EXTENSION_VARIABLES = exports.PATH_TO_SESSION_FILE = exports.PATH_TO_EXTENSION = exports.DEFAULT_SERVER_URL = void 0;
|
6
|
+
exports.DOCS_LINK = exports.PATH_TO_EXTENSION_VARIABLES = exports.PATH_TO_SESSION_FILE = exports.PATH_TO_EXTENSION = exports.DEFAULT_SERVER_URL = void 0;
|
7
7
|
const path_1 = __importDefault(require("path"));
|
8
8
|
exports.DEFAULT_SERVER_URL = 'https://axe.deque.com/';
|
9
9
|
exports.PATH_TO_EXTENSION = path_1.default.join(__dirname, '..', '..', 'extension');
|
10
10
|
exports.PATH_TO_SESSION_FILE = path_1.default.join(exports.PATH_TO_EXTENSION, 'axe-watcher-session.json');
|
11
11
|
exports.PATH_TO_EXTENSION_VARIABLES = path_1.default.join(exports.PATH_TO_EXTENSION, 'variables.json');
|
12
|
+
exports.DOCS_LINK = 'https://docs.deque.com/developer-hub/2/en/dh-troubleshooting';
|
12
13
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEV,QAAA,kBAAkB,GAAG,wBAAwB,CAAA;AAG7C,QAAA,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AAGjE,QAAA,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAC3C,yBAAiB,EACjB,0BAA0B,CAC3B,CAAA;AAGY,QAAA,2BAA2B,GAAG,cAAI,CAAC,IAAI,CAClD,yBAAiB,EACjB,gBAAgB,CACjB,CAAA"}
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEV,QAAA,kBAAkB,GAAG,wBAAwB,CAAA;AAG7C,QAAA,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;AAGjE,QAAA,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAC3C,yBAAiB,EACjB,0BAA0B,CAC3B,CAAA;AAGY,QAAA,2BAA2B,GAAG,cAAI,CAAC,IAAI,CAClD,yBAAiB,EACjB,gBAAgB,CACjB,CAAA;AAEY,QAAA,SAAS,GACpB,8DAA8D,CAAA"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { ConfigurationOverrides } from './writeVariables';
|
2
2
|
import type { RunOptions } from './runOptions';
|
3
3
|
export interface AxeCoreSettings {
|
4
|
-
|
4
|
+
axe_core_version?: string;
|
5
5
|
tags?: string[];
|
6
6
|
}
|
7
7
|
export interface InitializeSessionParams {
|
@@ -19,12 +19,11 @@ export interface InitializeSessionParams {
|
|
19
19
|
gitCommitMessage: string | null;
|
20
20
|
gitTag: string | null;
|
21
21
|
gitCommitEmail: string | null;
|
22
|
-
|
23
|
-
runOptions
|
22
|
+
configOverrides: ConfigurationOverrides | null;
|
23
|
+
runOptions: RunOptions | null;
|
24
24
|
}
|
25
|
-
export declare const accessibilityStandardsError: string;
|
26
25
|
/** Initialize a new session. */
|
27
|
-
declare function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, buildID, gitCommitSha, gitUrl, gitBranch, gitCommitAuthor, gitIsDirty, gitDefaultBranch, gitCommitMessage, gitTag, gitCommitEmail,
|
26
|
+
declare function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, buildID, gitCommitSha, gitUrl, gitBranch, gitCommitAuthor, gitIsDirty, gitDefaultBranch, gitCommitMessage, gitTag, gitCommitEmail, configOverrides, runOptions }: InitializeSessionParams): {
|
28
27
|
axe_core_settings?: AxeCoreSettings;
|
29
28
|
session_id: string;
|
30
29
|
};
|
@@ -3,51 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.accessibilityStandardsError = void 0;
|
7
6
|
const sync_request_1 = __importDefault(require("sync-request"));
|
8
7
|
const assert_1 = __importDefault(require("assert"));
|
9
8
|
const createDebugger_1 = __importDefault(require("../createDebugger"));
|
10
9
|
const debugLogger = (0, createDebugger_1.default)('config:initializeSession');
|
11
|
-
|
12
|
-
All: 'all',
|
13
|
-
'WCAG 2.2 AAA': 'wcag22aaa',
|
14
|
-
'WCAG 2.2 AA': 'wcag22aa',
|
15
|
-
'WCAG 2.2 A': 'wcag22a',
|
16
|
-
'WCAG 2.1 AAA': 'wcag21aaa',
|
17
|
-
'WCAG 2.1 AA': 'wcag21aa',
|
18
|
-
'WCAG 2.1 A': 'wcag21a',
|
19
|
-
'WCAG 2.0 AAA': 'wcag2aaa',
|
20
|
-
'WCAG 2.0 AA': 'wcag2aa',
|
21
|
-
'WCAG 2.0 A': 'wcag2a',
|
22
|
-
'Trusted Tester v5': 'TTv5',
|
23
|
-
'EN 301 549': 'EN-301-549'
|
24
|
-
};
|
25
|
-
exports.accessibilityStandardsError = `Invalid accessibility standard provided. Must be one of: ${Object.keys(accessibilityStandardMap).join(', ')}`;
|
26
|
-
const convertConfigOverridesForRequest = (overrides) => {
|
27
|
-
if (!overrides)
|
28
|
-
return {};
|
29
|
-
const { accessibilityStandard, axeCoreVersion, bestPractices, experimentalRules } = overrides;
|
30
|
-
const configuration_overrides = {};
|
31
|
-
if (accessibilityStandard) {
|
32
|
-
(0, assert_1.default)(Object.keys(accessibilityStandardMap).includes(accessibilityStandard), exports.accessibilityStandardsError);
|
33
|
-
configuration_overrides.accessibility_standard =
|
34
|
-
accessibilityStandardMap[accessibilityStandard];
|
35
|
-
}
|
36
|
-
if (axeCoreVersion) {
|
37
|
-
configuration_overrides.axe_core_version = axeCoreVersion;
|
38
|
-
}
|
39
|
-
if (bestPractices !== undefined) {
|
40
|
-
configuration_overrides.best_practices = bestPractices;
|
41
|
-
}
|
42
|
-
if (experimentalRules !== undefined) {
|
43
|
-
configuration_overrides.experimental_rules = experimentalRules;
|
44
|
-
}
|
45
|
-
return {
|
46
|
-
configuration_overrides
|
47
|
-
};
|
48
|
-
};
|
49
|
-
function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, buildID, gitCommitSha, gitUrl, gitBranch, gitCommitAuthor, gitIsDirty, gitDefaultBranch, gitCommitMessage, gitTag, gitCommitEmail, configurationOverrides, runOptions }) {
|
50
|
-
var _a;
|
10
|
+
function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, buildID, gitCommitSha, gitUrl, gitBranch, gitCommitAuthor, gitIsDirty, gitDefaultBranch, gitCommitMessage, gitTag, gitCommitEmail, configOverrides, runOptions }) {
|
51
11
|
(0, assert_1.default)(apiKey, 'API key is required');
|
52
12
|
(0, assert_1.default)(serverURL, 'Server URL is required');
|
53
13
|
(0, assert_1.default)(watcherVersion, 'Watcher version is required');
|
@@ -63,35 +23,42 @@ function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, build
|
|
63
23
|
(0, assert_1.default)(gitCommitMessage === null || typeof gitCommitMessage === 'string', 'Git Commit Message must be a string or null');
|
64
24
|
(0, assert_1.default)(gitTag === null || typeof gitTag === 'string', 'Git Tag must be a string or null');
|
65
25
|
(0, assert_1.default)(gitCommitEmail === null || typeof gitCommitEmail === 'string', 'Git Commit Email must be a string or null');
|
66
|
-
|
26
|
+
(0, assert_1.default)(configOverrides === null || typeof configOverrides === 'object', 'Configuration Overrides must be an object or null');
|
27
|
+
(0, assert_1.default)(runOptions === null || typeof runOptions === 'object', 'Run Options must be an object or null');
|
67
28
|
const url = new URL(`/api-pub/watcher/sessions`, serverURL);
|
29
|
+
const payload = {
|
30
|
+
watcher_version: watcherVersion,
|
31
|
+
session_id: sessionID,
|
32
|
+
build_id: buildID,
|
33
|
+
git_commit_sha: gitCommitSha,
|
34
|
+
git_url: gitUrl,
|
35
|
+
git_branch: gitBranch,
|
36
|
+
git_commit_author: gitCommitAuthor,
|
37
|
+
git_is_dirty: gitIsDirty,
|
38
|
+
git_default_branch: gitDefaultBranch,
|
39
|
+
git_commit_message: gitCommitMessage,
|
40
|
+
git_tag: gitTag,
|
41
|
+
git_commit_email: gitCommitEmail,
|
42
|
+
watcher_config: {
|
43
|
+
configuration_overrides: configOverrides
|
44
|
+
? {
|
45
|
+
accessibility_standard: configOverrides?.accessibilityStandard,
|
46
|
+
axe_core_version: configOverrides?.axeCoreVersion,
|
47
|
+
best_practices: configOverrides?.bestPractices,
|
48
|
+
experimental_rules: configOverrides?.experimentalRules
|
49
|
+
}
|
50
|
+
: null,
|
51
|
+
run_options: runOptions
|
52
|
+
}
|
53
|
+
};
|
68
54
|
const res = (0, sync_request_1.default)('POST', url.toString(), {
|
69
55
|
headers: {
|
70
56
|
'X-API-Key': apiKey
|
71
57
|
},
|
72
|
-
json:
|
73
|
-
watcher_version: watcherVersion,
|
74
|
-
session_id: sessionID,
|
75
|
-
build_id: buildID,
|
76
|
-
git_commit_sha: gitCommitSha,
|
77
|
-
git_url: gitUrl,
|
78
|
-
git_branch: gitBranch,
|
79
|
-
git_commit_author: gitCommitAuthor,
|
80
|
-
git_is_dirty: gitIsDirty,
|
81
|
-
git_default_branch: gitDefaultBranch,
|
82
|
-
git_commit_message: gitCommitMessage,
|
83
|
-
git_tag: gitTag,
|
84
|
-
git_commit_email: gitCommitEmail,
|
85
|
-
...(useGlobalConfigReconciliaton && {
|
86
|
-
watcher_config: {
|
87
|
-
...convertConfigOverridesForRequest(configurationOverrides),
|
88
|
-
runOptions
|
89
|
-
}
|
90
|
-
})
|
91
|
-
}
|
58
|
+
json: payload
|
92
59
|
});
|
93
60
|
const body = JSON.parse(res.getBody('utf8'));
|
94
|
-
const error = body.error || (
|
61
|
+
const error = body.error || (body.errors?.length && body.errors[0]);
|
95
62
|
if (error) {
|
96
63
|
debugLogger('Error initializing session:', error);
|
97
64
|
throw new Error(error);
|
@@ -106,9 +73,7 @@ function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, build
|
|
106
73
|
}
|
107
74
|
return {
|
108
75
|
session_id: body.session_id,
|
109
|
-
|
110
|
-
axe_core_settings: body.axe_core_settings
|
111
|
-
})
|
76
|
+
axe_core_settings: body.axe_core_settings
|
112
77
|
};
|
113
78
|
}
|
114
79
|
exports.default = initializeSession;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"initializeSession.js","sourceRoot":"","sources":["../../src/utils/initializeSession.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"initializeSession.js","sourceRoot":"","sources":["../../src/utils/initializeSession.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export declare const BACKOFF_FACTOR = 1000;
|
2
|
+
/**
|
3
|
+
* Linear backoff function that waits for a given amount of time
|
4
|
+
* before resolving
|
5
|
+
*
|
6
|
+
* @param retryAttempts The number of retry attempts (default 1)
|
7
|
+
*
|
8
|
+
*/
|
9
|
+
declare function linearBackoff(retryAttempts?: number): Promise<void>;
|
10
|
+
export default linearBackoff;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
19
|
+
var ownKeys = function(o) {
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
+
var ar = [];
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
+
return ar;
|
24
|
+
};
|
25
|
+
return ownKeys(o);
|
26
|
+
};
|
27
|
+
return function (mod) {
|
28
|
+
if (mod && mod.__esModule) return mod;
|
29
|
+
var result = {};
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
+
__setModuleDefault(result, mod);
|
32
|
+
return result;
|
33
|
+
};
|
34
|
+
})();
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
36
|
+
exports.BACKOFF_FACTOR = void 0;
|
37
|
+
const timersPromises = __importStar(require("timers/promises"));
|
38
|
+
exports.BACKOFF_FACTOR = 1000;
|
39
|
+
async function linearBackoff(retryAttempts = 1) {
|
40
|
+
if (retryAttempts <= 0) {
|
41
|
+
throw new Error('retryAttempts must be greater than 0');
|
42
|
+
}
|
43
|
+
const delay = retryAttempts * exports.BACKOFF_FACTOR;
|
44
|
+
await timersPromises.setTimeout(delay);
|
45
|
+
}
|
46
|
+
exports.default = linearBackoff;
|
47
|
+
//# sourceMappingURL=linearBackoff.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"linearBackoff.js","sourceRoot":"","sources":["../../src/utils/linearBackoff.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAiD;AAGpC,QAAA,cAAc,GAAG,IAAI,CAAA;AAUlC,KAAK,UAAU,aAAa,CAAC,gBAAwB,CAAC;IACpD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,GAAG,sBAAc,CAAA;IAC5C,MAAM,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACxC,CAAC;AAED,kBAAe,aAAa,CAAA"}
|
@@ -11,16 +11,16 @@ function validateHeadlessPlaywright({ isPlaywrightTest, playwrightConfig }) {
|
|
11
11
|
if (playwrightConfig.headless) {
|
12
12
|
throw new headlessNotSupportedError_1.HeadlessNotSupportedError(preHeadlessChangeMessage());
|
13
13
|
}
|
14
|
+
validatePlaywrightChannel(playwrightConfig.channel);
|
14
15
|
return;
|
15
16
|
}
|
16
17
|
if (playwrightConfig.headless === undefined) {
|
17
18
|
throw new newHeadlessPlaywrightNotSupportedError_1.HeadlessPlaywrightNotSupportedError('@axe-core/watcher is not supported in chromium-headless-shell mode.');
|
18
19
|
}
|
19
|
-
|
20
|
-
const isChromeChannel = playwrightConfig.channel === 'chrome';
|
21
|
-
if (playwrightConfig.headless && !(isChromiumChannel || isChromeChannel)) {
|
20
|
+
if (playwrightConfig.headless && !playwrightConfig.channel) {
|
22
21
|
throw new newHeadlessPlaywrightNotSupportedError_1.HeadlessPlaywrightNotSupportedError('@axe-core/watcher requires either fully headed mode or new headless mode.');
|
23
22
|
}
|
23
|
+
validatePlaywrightChannel(playwrightConfig.channel);
|
24
24
|
}
|
25
25
|
catch (error) {
|
26
26
|
if (error instanceof headlessNotSupportedError_1.HeadlessNotSupportedError ||
|
@@ -32,5 +32,11 @@ function validateHeadlessPlaywright({ isPlaywrightTest, playwrightConfig }) {
|
|
32
32
|
}
|
33
33
|
}
|
34
34
|
}
|
35
|
+
function validatePlaywrightChannel(channel) {
|
36
|
+
const SUPPORTED_CHANNELS = ['chromium', 'chrome'];
|
37
|
+
if (channel && !SUPPORTED_CHANNELS.includes(channel)) {
|
38
|
+
throw new newHeadlessPlaywrightNotSupportedError_1.HeadlessPlaywrightNotSupportedError('@axe-core/watcher requires either fully headed mode or new headless mode.');
|
39
|
+
}
|
40
|
+
}
|
35
41
|
exports.default = validateHeadlessPlaywright;
|
36
42
|
//# sourceMappingURL=validateHeadlessPlaywright.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"validateHeadlessPlaywright.js","sourceRoot":"","sources":["../../src/utils/validateHeadlessPlaywright.ts"],"names":[],"mappings":";;AACA,2EAAuE;AACvE,qGAA8F;AAO9F,SAAS,0BAA0B,CAAC,EAClC,gBAAgB,EAChB,gBAAgB,EACiB;IACjC,MAAM,wBAAwB,GAAG,GAAW,EAAE,CAC5C,OAAO,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,sGAAsG,CAAA;IAMnK,IAAI,CAAC;QACH,MAAM,qBAAqB,GAEzB,OAAO,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAA;QACjD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAGjE,CAAA;QAGD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,qDAAyB,CAAC,wBAAwB,EAAE,CAAC,CAAA;YACjE,CAAC;
|
1
|
+
{"version":3,"file":"validateHeadlessPlaywright.js","sourceRoot":"","sources":["../../src/utils/validateHeadlessPlaywright.ts"],"names":[],"mappings":";;AACA,2EAAuE;AACvE,qGAA8F;AAO9F,SAAS,0BAA0B,CAAC,EAClC,gBAAgB,EAChB,gBAAgB,EACiB;IACjC,MAAM,wBAAwB,GAAG,GAAW,EAAE,CAC5C,OAAO,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,sGAAsG,CAAA;IAMnK,IAAI,CAAC;QACH,MAAM,qBAAqB,GAEzB,OAAO,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAA;QACjD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAGjE,CAAA;QAGD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,qDAAyB,CAAC,wBAAwB,EAAE,CAAC,CAAA;YACjE,CAAC;YAGD,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAEnD,OAAM;QACR,CAAC;QAGD,IAAI,gBAAgB,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,IAAI,4EAAmC,CAC3C,qEAAqE,CACtE,CAAA;QACH,CAAC;QAGD,IAAI,gBAAgB,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,IAAI,4EAAmC,CAC3C,2EAA2E,CAC5E,CAAA;QACH,CAAC;QAID,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,qDAAyB;YAC1C,KAAK,YAAY,4EAAmC,EACpD,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QAID,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,qDAAyB,CAAC,wBAAwB,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;AACH,CAAC;AAGD,SAAS,yBAAyB,CAAC,OAA2B;IAC5D,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAEjD,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,4EAAmC,CAC3C,2EAA2E,CAC5E,CAAA;IACH,CAAC;AACH,CAAC;AAED,kBAAe,0BAA0B,CAAA"}
|