accessibility-checker 3.1.0 → 3.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/bin/achecker.d.ts +2 -0
- package/bin/achecker.js +293 -177
- package/bin/achecker.js.map +1 -0
- package/index.d.ts +317 -0
- package/index.js +359 -13
- package/index.js.map +1 -0
- package/lib/ACBrowserManager.d.ts +22 -0
- package/lib/ACBrowserManager.js +237 -0
- package/lib/ACBrowserManager.js.map +1 -0
- package/lib/ACConfigManager.d.ts +6 -0
- package/lib/ACConfigManager.js +399 -0
- package/lib/ACConfigManager.js.map +1 -0
- package/lib/ACConstants.d.ts +17 -0
- package/lib/ACConstants.js +12 -38
- package/lib/ACConstants.js.map +1 -0
- package/lib/ACEngineManager.d.ts +21 -0
- package/lib/ACEngineManager.js +220 -0
- package/lib/ACEngineManager.js.map +1 -0
- package/lib/ACHelper.d.ts +2 -0
- package/lib/ACHelper.js +485 -2085
- package/lib/ACHelper.js.map +1 -0
- package/lib/ACReportManager.d.ts +586 -0
- package/lib/ACReportManager.js +1150 -0
- package/lib/ACReportManager.js.map +1 -0
- package/lib/api/IChecker.d.ts +131 -0
- package/lib/api/IChecker.js +11 -0
- package/lib/api/IChecker.js.map +1 -0
- package/lib/api/IEngine.d.ts +124 -0
- package/lib/api/IEngine.js +110 -0
- package/lib/api/IEngine.js.map +1 -0
- package/lib/api/IMapper.d.ts +37 -0
- package/lib/api/IMapper.js +18 -0
- package/lib/api/IMapper.js.map +1 -0
- package/lib/log/ACMetricsLogger.d.ts +67 -0
- package/lib/log/ACMetricsLogger.js +40 -66
- package/lib/log/ACMetricsLogger.js.map +1 -0
- package/lib/reporters/ACReporterCSV.d.ts +103 -0
- package/lib/reporters/ACReporterCSV.js +83 -152
- package/lib/reporters/ACReporterCSV.js.map +1 -0
- package/lib/reporters/ACReporterHTML.d.ts +114 -0
- package/lib/reporters/ACReporterHTML.js +150 -293
- package/lib/reporters/ACReporterHTML.js.map +1 -0
- package/lib/reporters/ACReporterJSON.d.ts +114 -0
- package/lib/reporters/ACReporterJSON.js +95 -249
- package/lib/reporters/ACReporterJSON.js.map +1 -0
- package/lib/reporters/ReportUtil.d.ts +33 -0
- package/lib/reporters/ReportUtil.js +65 -0
- package/lib/reporters/ReportUtil.js.map +1 -0
- package/lib/reporters/genReport.d.ts +1 -0
- package/lib/reporters/genReport.js +13 -11
- package/lib/reporters/genReport.js.map +1 -0
- package/package.json +4 -3
- package/lib/ACConfigLoader.js +0 -358
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
`accessibility-checker` is a NodeJS Module that allows you to perform integrated accessibility testing within a continuous integration pipeline such as Travis CI. It works with parsing engines such as Selenium, Puppeteer, and Zombie. Note that we have seen some non-standard CSS parsing with Zombie, so be aware of inconsistencies as a result.
|
|
5
|
+
`accessibility-checker` is a NodeJS Module that allows you to perform integrated accessibility testing within a continuous integration pipeline such as Travis CI. It works with parsing engines such as Selenium, Puppeteer, Playwright, and Zombie. Note that we have seen some non-standard CSS parsing with Zombie, so be aware of inconsistencies as a result.
|
|
6
6
|
|
|
7
7
|
`accessibility-checker` works with a variety of test frameworks such as Cucumber, Mocha, or Jasmine. `accessibility-checker` allows users to scan HTML nodes/widgets, URLs, local files, HTML documents, and HTML content in the form of a string. Aside from just performing accessibility scanning, `accessibility-checker` provides a framework to validate accessibility scan results against baseline files and/or simply failing the testcases based on the levels of violations found during the scan.
|
|
8
8
|
|
|
@@ -37,7 +37,7 @@ $ achecker
|
|
|
37
37
|
|
|
38
38
|
1. Install [NodeJS and NPM](https://nodejs.org/en/download/)
|
|
39
39
|
2. Some testing framework (e.g., mocha, jasmine)
|
|
40
|
-
3. Browser automation / parser (e.g., Selenium, Puppeteer, Zombie)
|
|
40
|
+
3. Browser automation / parser (e.g., Selenium, Puppeteer, Playwright, Zombie)
|
|
41
41
|
|
|
42
42
|
#### Install
|
|
43
43
|
|
|
@@ -183,6 +183,7 @@ Execute accessibility scan on provided content. `content` can be in the followin
|
|
|
183
183
|
- Document node (HTMLDocument)
|
|
184
184
|
- Selenium WebDriver (WebDriver)
|
|
185
185
|
- Puppeteer page
|
|
186
|
+
- Playwright page
|
|
186
187
|
|
|
187
188
|
Note: When using Selenium WebDriver the aChecker.getCompliance API will only take Selenium WebDriver (WebDriver) instance. When using puppeteer, aChecker.getCompliance expects the Page object.
|
|
188
189
|
|
package/bin/achecker.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
"use strict";
|
|
3
3
|
/******************************************************************************
|
|
4
4
|
Copyright:: 2020- IBM, Inc
|
|
5
5
|
|
|
@@ -15,34 +15,75 @@
|
|
|
15
15
|
See the License for the specific language governing permissions and
|
|
16
16
|
limitations under the License.
|
|
17
17
|
*****************************************************************************/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
19
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
20
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
21
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
22
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
23
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
24
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
28
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
29
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
30
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
31
|
+
function step(op) {
|
|
32
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
33
|
+
while (_) try {
|
|
34
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
35
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
36
|
+
switch (op[0]) {
|
|
37
|
+
case 0: case 1: t = op; break;
|
|
38
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
39
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
40
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
41
|
+
default:
|
|
42
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
43
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
44
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
45
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
46
|
+
if (t[2]) _.ops.pop();
|
|
47
|
+
_.trys.pop(); continue;
|
|
48
|
+
}
|
|
49
|
+
op = body.call(thisArg, _);
|
|
50
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
51
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
55
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
56
|
+
var m = o[Symbol.asyncIterator], i;
|
|
57
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
58
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
59
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
60
|
+
};
|
|
61
|
+
var aChecker = require("../index.js");
|
|
62
|
+
var fs = require('fs');
|
|
63
|
+
var readline = require('readline');
|
|
64
|
+
var path = require("path");
|
|
65
|
+
var request = require("request");
|
|
66
|
+
var validCLParams = [
|
|
26
67
|
"inputFile"
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
let splitCLParams = [
|
|
68
|
+
];
|
|
69
|
+
var splitCLParams = [
|
|
30
70
|
"policies",
|
|
31
71
|
"failLevels",
|
|
32
72
|
"reportLevels",
|
|
33
73
|
"outputFormat",
|
|
34
74
|
"label"
|
|
35
|
-
]
|
|
36
|
-
|
|
75
|
+
];
|
|
37
76
|
function processCommandLine(ACConfig) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
for (
|
|
77
|
+
var _a = process.argv, args = _a.slice(2);
|
|
78
|
+
var lastArg = null;
|
|
79
|
+
var lastFlag = null;
|
|
80
|
+
for (var _i = 0, args_1 = args; _i < args_1.length; _i++) {
|
|
81
|
+
var arg = args_1[_i];
|
|
42
82
|
if (arg.match(/^--.*$/)) {
|
|
43
83
|
lastFlag = arg.substring(2);
|
|
44
84
|
lastArg = null;
|
|
45
|
-
}
|
|
85
|
+
}
|
|
86
|
+
else if (lastFlag) {
|
|
46
87
|
if (lastFlag in ACConfig || validCLParams.includes(lastFlag)) {
|
|
47
88
|
if (splitCLParams.includes(lastFlag)) {
|
|
48
89
|
arg = arg.split(",");
|
|
@@ -50,7 +91,8 @@ function processCommandLine(ACConfig) {
|
|
|
50
91
|
ACConfig[lastFlag] = arg;
|
|
51
92
|
}
|
|
52
93
|
lastFlag = lastArg = null;
|
|
53
|
-
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
54
96
|
lastArg = arg;
|
|
55
97
|
}
|
|
56
98
|
}
|
|
@@ -58,169 +100,243 @@ function processCommandLine(ACConfig) {
|
|
|
58
100
|
ACConfig.inputFile = lastArg;
|
|
59
101
|
}
|
|
60
102
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
103
|
+
function getFiles(dir) {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
105
|
+
var retVal, _i, _a, f, _b, _c;
|
|
106
|
+
return __generator(this, function (_d) {
|
|
107
|
+
switch (_d.label) {
|
|
108
|
+
case 0:
|
|
109
|
+
retVal = [];
|
|
110
|
+
_i = 0, _a = fs.readdirSync(dir);
|
|
111
|
+
_d.label = 1;
|
|
112
|
+
case 1:
|
|
113
|
+
if (!(_i < _a.length)) return [3 /*break*/, 6];
|
|
114
|
+
f = _a[_i];
|
|
115
|
+
if (!(f[0] === ".")) return [3 /*break*/, 2];
|
|
116
|
+
return [3 /*break*/, 5];
|
|
117
|
+
case 2:
|
|
118
|
+
f = path.join(dir, f);
|
|
119
|
+
if (!fs.lstatSync(f).isDirectory()) return [3 /*break*/, 4];
|
|
120
|
+
_c = (_b = retVal).concat;
|
|
121
|
+
return [4 /*yield*/, getFiles(f)];
|
|
122
|
+
case 3:
|
|
123
|
+
retVal = _c.apply(_b, [_d.sent()]);
|
|
124
|
+
return [3 /*break*/, 5];
|
|
125
|
+
case 4:
|
|
126
|
+
if (f.endsWith(".htm") || f.endsWith(".html")) {
|
|
127
|
+
retVal.push(f);
|
|
128
|
+
}
|
|
129
|
+
_d.label = 5;
|
|
130
|
+
case 5:
|
|
131
|
+
_i++;
|
|
132
|
+
return [3 /*break*/, 1];
|
|
133
|
+
case 6: return [2 /*return*/, retVal];
|
|
73
134
|
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return retVal;
|
|
135
|
+
});
|
|
136
|
+
});
|
|
77
137
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
archives : Display valid archive ids and policy ids
|
|
87
|
-
|
|
88
|
-
Flags:
|
|
89
|
-
Flags can be set via .achecker.yml or achecker.js files. Specifying the flags here
|
|
90
|
-
will override those options.
|
|
91
|
-
|
|
92
|
-
--ruleArchive : Archive id to use. Run "achecker archives" for valid ids
|
|
93
|
-
--policies : Comma separated list of policies. Run "achecker archives"
|
|
94
|
-
for valid ids
|
|
95
|
-
--failLevels : Comma separated list of levels that will indicate
|
|
96
|
-
a failure. Valid values: violation,
|
|
97
|
-
potentialviolation, recommendation,
|
|
98
|
-
potentialrecommendation, manual
|
|
99
|
-
--reportLevels : Comma separated list of levels that will be included
|
|
100
|
-
in reports. Valid values: violation,
|
|
101
|
-
potentialviolation, recommendation,
|
|
102
|
-
potentialrecommendation, manual, pass
|
|
103
|
-
--outputFormat : Comma separated list of output report formats.
|
|
104
|
-
Valid values: json, csv
|
|
105
|
-
--label : Comma separated list of labels to include in reports
|
|
106
|
-
--outputFolder : Folder to output results and reports
|
|
107
|
-
--baselineFolder : Folder that includes baseline files
|
|
108
|
-
`);
|
|
109
|
-
process.exit(-1);
|
|
110
|
-
} else if (lastArg === "archives") {
|
|
111
|
-
let archiveInfo = {
|
|
112
|
-
"latest":[]
|
|
113
|
-
}
|
|
114
|
-
console.log();
|
|
115
|
-
console.log("Archive [Archive Id]");
|
|
116
|
-
console.log(" - Policy [Policy Id]:");
|
|
117
|
-
console.log("-----------------------");
|
|
118
|
-
console.log();
|
|
119
|
-
for (const archive of config.ruleArchiveSet) {
|
|
120
|
-
if (archive.sunset) continue;
|
|
121
|
-
console.log(`${archive.name} [${archive.id}]`);
|
|
122
|
-
for (const policy of archive.policies) {
|
|
123
|
-
console.log(` - ${policy.name} [${policy.id}]`);
|
|
138
|
+
function showHelp(config) {
|
|
139
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
140
|
+
var lastArg, archiveInfo, _i, _a, archive, _b, _c, policy;
|
|
141
|
+
return __generator(this, function (_d) {
|
|
142
|
+
lastArg = config.inputFile;
|
|
143
|
+
if (!lastArg || lastArg === "help") {
|
|
144
|
+
console.log("Usage: achecker [flags] [command / file / directory / URL]\n\nCommands:\n archives : Display valid archive ids and policy ids\n\nFlags:\n Flags can be set via .achecker.yml or achecker.js files. Specifying the flags here\n will override those options.\n\n --ruleArchive : Archive id to use. Run \"achecker archives\" for valid ids\n --policies : Comma separated list of policies. Run \"achecker archives\"\n for valid ids\n --failLevels : Comma separated list of levels that will indicate\n a failure. Valid values: violation,\n potentialviolation, recommendation,\n potentialrecommendation, manual\n --reportLevels : Comma separated list of levels that will be included\n in reports. Valid values: violation,\n potentialviolation, recommendation,\n potentialrecommendation, manual, pass\n --outputFormat : Comma separated list of output report formats.\n Valid values: json, csv\n --label : Comma separated list of labels to include in reports\n --outputFolder : Folder to output results and reports\n --baselineFolder : Folder that includes baseline files\n");
|
|
145
|
+
process.exit(-1);
|
|
124
146
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
147
|
+
else if (lastArg === "archives") {
|
|
148
|
+
archiveInfo = {
|
|
149
|
+
"latest": []
|
|
150
|
+
};
|
|
151
|
+
console.log();
|
|
152
|
+
console.log("Archive [Archive Id]");
|
|
153
|
+
console.log(" - Policy [Policy Id]:");
|
|
154
|
+
console.log("-----------------------");
|
|
155
|
+
console.log();
|
|
156
|
+
for (_i = 0, _a = config.ruleArchiveSet; _i < _a.length; _i++) {
|
|
157
|
+
archive = _a[_i];
|
|
158
|
+
if (archive.sunset)
|
|
159
|
+
continue;
|
|
160
|
+
console.log(archive.name + " [" + archive.id + "]");
|
|
161
|
+
for (_b = 0, _c = archive.policies; _b < _c.length; _b++) {
|
|
162
|
+
policy = _c[_b];
|
|
163
|
+
console.log(" - " + policy.name + " [" + policy.id + "]");
|
|
164
|
+
}
|
|
165
|
+
archiveInfo[archive.id] = archive.policies;
|
|
166
|
+
if (archive.latest) {
|
|
167
|
+
archiveInfo['latest'] = archiveInfo[archive.id];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
process.exit(-1);
|
|
128
171
|
}
|
|
129
|
-
|
|
130
|
-
process.exit(-1);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
async function getInputFileList() {
|
|
135
|
-
let config = await aChecker.getConfig();
|
|
136
|
-
processCommandLine(config);
|
|
137
|
-
await showHelp(config);
|
|
138
|
-
let inputs = [];
|
|
139
|
-
let filename = config.inputFile.trim();
|
|
140
|
-
if (filename.endsWith(".txt")) {
|
|
141
|
-
const fileStream = fs.createReadStream(filename);
|
|
142
|
-
|
|
143
|
-
const rl = readline.createInterface({
|
|
144
|
-
input: fileStream,
|
|
145
|
-
crlfDelay: Infinity
|
|
172
|
+
return [2 /*return*/];
|
|
146
173
|
});
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
function getInputFileList() {
|
|
177
|
+
var e_1, _a;
|
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
+
var config, inputs, filename, fileStream, rl, rl_1, rl_1_1, line, e_1_1, retVal, _i, inputs_1, input, isDirectory, _b, _c;
|
|
180
|
+
return __generator(this, function (_d) {
|
|
181
|
+
switch (_d.label) {
|
|
182
|
+
case 0: return [4 /*yield*/, aChecker.getConfig()];
|
|
183
|
+
case 1:
|
|
184
|
+
config = _d.sent();
|
|
185
|
+
processCommandLine(config);
|
|
186
|
+
return [4 /*yield*/, showHelp(config)];
|
|
187
|
+
case 2:
|
|
188
|
+
_d.sent();
|
|
189
|
+
inputs = [];
|
|
190
|
+
filename = config.inputFile.trim();
|
|
191
|
+
if (!filename.endsWith(".txt")) return [3 /*break*/, 15];
|
|
192
|
+
fileStream = fs.createReadStream(filename);
|
|
193
|
+
rl = readline.createInterface({
|
|
194
|
+
input: fileStream,
|
|
195
|
+
crlfDelay: Infinity
|
|
196
|
+
});
|
|
197
|
+
_d.label = 3;
|
|
198
|
+
case 3:
|
|
199
|
+
_d.trys.push([3, 8, 9, 14]);
|
|
200
|
+
rl_1 = __asyncValues(rl);
|
|
201
|
+
_d.label = 4;
|
|
202
|
+
case 4: return [4 /*yield*/, rl_1.next()];
|
|
203
|
+
case 5:
|
|
204
|
+
if (!(rl_1_1 = _d.sent(), !rl_1_1.done)) return [3 /*break*/, 7];
|
|
205
|
+
line = rl_1_1.value;
|
|
206
|
+
if (line.trim().length === 0) {
|
|
207
|
+
}
|
|
208
|
+
else if (line.startsWith(path.sep)) {
|
|
209
|
+
inputs.push(line);
|
|
210
|
+
}
|
|
211
|
+
else if (line.match(/[a-z]{4,5}:\/\//)) {
|
|
212
|
+
inputs.push(line);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
inputs.push(path.join(path.dirname(filename), line));
|
|
216
|
+
}
|
|
217
|
+
_d.label = 6;
|
|
218
|
+
case 6: return [3 /*break*/, 4];
|
|
219
|
+
case 7: return [3 /*break*/, 14];
|
|
220
|
+
case 8:
|
|
221
|
+
e_1_1 = _d.sent();
|
|
222
|
+
e_1 = { error: e_1_1 };
|
|
223
|
+
return [3 /*break*/, 14];
|
|
224
|
+
case 9:
|
|
225
|
+
_d.trys.push([9, , 12, 13]);
|
|
226
|
+
if (!(rl_1_1 && !rl_1_1.done && (_a = rl_1.return))) return [3 /*break*/, 11];
|
|
227
|
+
return [4 /*yield*/, _a.call(rl_1)];
|
|
228
|
+
case 10:
|
|
229
|
+
_d.sent();
|
|
230
|
+
_d.label = 11;
|
|
231
|
+
case 11: return [3 /*break*/, 13];
|
|
232
|
+
case 12:
|
|
233
|
+
if (e_1) throw e_1.error;
|
|
234
|
+
return [7 /*endfinally*/];
|
|
235
|
+
case 13: return [7 /*endfinally*/];
|
|
236
|
+
case 14: return [3 /*break*/, 16];
|
|
237
|
+
case 15:
|
|
238
|
+
inputs = [filename];
|
|
239
|
+
_d.label = 16;
|
|
240
|
+
case 16:
|
|
241
|
+
retVal = [];
|
|
242
|
+
_i = 0, inputs_1 = inputs;
|
|
243
|
+
_d.label = 17;
|
|
244
|
+
case 17:
|
|
245
|
+
if (!(_i < inputs_1.length)) return [3 /*break*/, 21];
|
|
246
|
+
input = inputs_1[_i];
|
|
247
|
+
isDirectory = false;
|
|
248
|
+
try {
|
|
249
|
+
isDirectory = fs.lstatSync(input).isDirectory();
|
|
250
|
+
}
|
|
251
|
+
catch (e) { }
|
|
252
|
+
if (!isDirectory) return [3 /*break*/, 19];
|
|
253
|
+
_c = (_b = retVal).concat;
|
|
254
|
+
return [4 /*yield*/, getFiles(input)];
|
|
255
|
+
case 18:
|
|
256
|
+
retVal = _c.apply(_b, [_d.sent()]);
|
|
257
|
+
return [3 /*break*/, 20];
|
|
258
|
+
case 19:
|
|
259
|
+
retVal.push(input);
|
|
260
|
+
_d.label = 20;
|
|
261
|
+
case 20:
|
|
262
|
+
_i++;
|
|
263
|
+
return [3 /*break*/, 17];
|
|
264
|
+
case 21: return [2 /*return*/, retVal];
|
|
159
265
|
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
inputs = [filename];
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
let retVal = [];
|
|
166
|
-
for (const input of inputs) {
|
|
167
|
-
let isDirectory = false;
|
|
168
|
-
try {
|
|
169
|
-
isDirectory = fs.lstatSync(input).isDirectory();
|
|
170
|
-
} catch (e) {}
|
|
171
|
-
if (isDirectory) {
|
|
172
|
-
retVal = retVal.concat(await getFiles(input));
|
|
173
|
-
} else {
|
|
174
|
-
retVal.push(input);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return retVal;
|
|
266
|
+
});
|
|
267
|
+
});
|
|
178
268
|
}
|
|
179
|
-
|
|
180
269
|
// Prepare the configuration
|
|
181
|
-
getInputFileList().then(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
270
|
+
getInputFileList().then(function (rptInputFiles) { return __awaiter(void 0, void 0, void 0, function () {
|
|
271
|
+
var idx, failures, errors, _i, rptInputFiles_1, f, result, isFile, _a, failures_1, fail;
|
|
272
|
+
return __generator(this, function (_b) {
|
|
273
|
+
switch (_b.label) {
|
|
274
|
+
case 0:
|
|
275
|
+
idx = 0;
|
|
276
|
+
failures = [];
|
|
277
|
+
errors = 0;
|
|
278
|
+
_i = 0, rptInputFiles_1 = rptInputFiles;
|
|
279
|
+
_b.label = 1;
|
|
280
|
+
case 1:
|
|
281
|
+
if (!(_i < rptInputFiles_1.length)) return [3 /*break*/, 7];
|
|
282
|
+
f = rptInputFiles_1[_i];
|
|
283
|
+
result = void 0;
|
|
284
|
+
isFile = false;
|
|
285
|
+
try {
|
|
286
|
+
isFile = fs.lstatSync(f).isFile();
|
|
287
|
+
f = path.resolve(f);
|
|
288
|
+
}
|
|
289
|
+
catch (e) { }
|
|
290
|
+
if (!isFile) return [3 /*break*/, 3];
|
|
291
|
+
return [4 /*yield*/, aChecker.getCompliance("file://" + f, f.replace(/^file:\/\//, "").replace(/:/g, "_"))];
|
|
292
|
+
case 2:
|
|
293
|
+
result = _b.sent();
|
|
294
|
+
return [3 /*break*/, 5];
|
|
295
|
+
case 3: return [4 /*yield*/, aChecker.getCompliance(f, f.replace(/^(https?:|file:)\/\//, "").replace(/:/g, "_"))];
|
|
296
|
+
case 4:
|
|
297
|
+
result = _b.sent();
|
|
298
|
+
_b.label = 5;
|
|
299
|
+
case 5:
|
|
300
|
+
if (result) {
|
|
301
|
+
if (aChecker.assertCompliance(result.report) === 0) {
|
|
302
|
+
console.log("Passed:", f);
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
failures.push({
|
|
306
|
+
file: f,
|
|
307
|
+
report: result.report
|
|
308
|
+
});
|
|
309
|
+
console.log("Failed:", f);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
++errors;
|
|
314
|
+
console.log("Error:", f);
|
|
315
|
+
}
|
|
316
|
+
_b.label = 6;
|
|
317
|
+
case 6:
|
|
318
|
+
_i++;
|
|
319
|
+
return [3 /*break*/, 1];
|
|
320
|
+
case 7:
|
|
321
|
+
if (failures.length > 0) {
|
|
322
|
+
console.log();
|
|
323
|
+
console.log("Failing scan details:");
|
|
324
|
+
console.log();
|
|
325
|
+
for (_a = 0, failures_1 = failures; _a < failures_1.length; _a++) {
|
|
326
|
+
fail = failures_1[_a];
|
|
327
|
+
console.log(aChecker.stringifyResults(fail.report));
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
console.log();
|
|
331
|
+
console.log(rptInputFiles.length - failures.length - errors + " of " + rptInputFiles.length + " passed.");
|
|
332
|
+
return [4 /*yield*/, aChecker.close()];
|
|
333
|
+
case 8:
|
|
334
|
+
_b.sent();
|
|
335
|
+
if (failures.length !== 0 || errors !== 0) {
|
|
336
|
+
process.exitCode = 1;
|
|
337
|
+
}
|
|
338
|
+
return [2 /*return*/];
|
|
218
339
|
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
await aChecker.close();
|
|
223
|
-
if (failures.length !== 0 || errors !== 0) {
|
|
224
|
-
process.exitCode = 1;
|
|
225
|
-
}
|
|
226
|
-
})
|
|
340
|
+
});
|
|
341
|
+
}); });
|
|
342
|
+
//# sourceMappingURL=achecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"achecker.js","sourceRoot":"","sources":["../../src-ts/bin/achecker.js"],"names":[],"mappings":"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"}
|