accessibility-checker 4.0.1 → 4.0.2

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.
Files changed (209) hide show
  1. package/bin/achecker.js +213 -262
  2. package/bin/achecker.js.map +1 -1
  3. package/cjs/bin/achecker.d.ts +2 -0
  4. package/cjs/bin/achecker.js +306 -0
  5. package/cjs/bin/achecker.js.map +1 -0
  6. package/cjs/index.d.ts +319 -0
  7. package/cjs/index.js +402 -0
  8. package/cjs/index.js.map +1 -0
  9. package/cjs/lib/ACBrowserManager.d.ts +22 -0
  10. package/cjs/lib/ACBrowserManager.js +172 -0
  11. package/cjs/lib/ACBrowserManager.js.map +1 -0
  12. package/cjs/lib/ACEngineManager.d.ts +19 -0
  13. package/cjs/lib/ACEngineManager.js +457 -0
  14. package/cjs/lib/ACEngineManager.js.map +1 -0
  15. package/cjs/lib/ACHelper.d.ts +2 -0
  16. package/cjs/lib/ACHelper.js +678 -0
  17. package/cjs/lib/ACHelper.js.map +1 -0
  18. package/cjs/lib/api/IChecker.d.ts +28 -0
  19. package/cjs/lib/api/IChecker.js +11 -0
  20. package/cjs/lib/api/IChecker.js.map +1 -0
  21. package/cjs/lib/api/IMapper.d.ts +37 -0
  22. package/cjs/lib/api/IMapper.js +18 -0
  23. package/cjs/lib/api/IMapper.js.map +1 -0
  24. package/cjs/lib/common/api-ext/Fetch.d.ts +17 -0
  25. package/cjs/lib/common/api-ext/Fetch.js +95 -0
  26. package/cjs/lib/common/api-ext/Fetch.js.map +1 -0
  27. package/cjs/lib/common/api-ext/IAbstractAPI.d.ts +33 -0
  28. package/cjs/lib/common/api-ext/IAbstractAPI.js +18 -0
  29. package/cjs/lib/common/api-ext/IAbstractAPI.js.map +1 -0
  30. package/cjs/lib/common/config/ACConfigManager.d.ts +13 -0
  31. package/cjs/lib/common/config/ACConfigManager.js +483 -0
  32. package/cjs/lib/common/config/ACConfigManager.js.map +1 -0
  33. package/cjs/lib/common/config/ACConstants.d.ts +17 -0
  34. package/cjs/lib/common/config/ACConstants.js +111 -0
  35. package/cjs/lib/common/config/ACConstants.js.map +1 -0
  36. package/cjs/lib/common/config/IArchive.d.ts +37 -0
  37. package/cjs/lib/common/config/IArchive.js +18 -0
  38. package/cjs/lib/common/config/IArchive.js.map +1 -0
  39. package/cjs/lib/common/config/IConfig.d.ts +152 -0
  40. package/cjs/lib/common/config/IConfig.js +36 -0
  41. package/cjs/lib/common/config/IConfig.js.map +1 -0
  42. package/cjs/lib/common/engine/IBounds.d.ts +21 -0
  43. package/cjs/lib/common/engine/IBounds.js +18 -0
  44. package/cjs/lib/common/engine/IBounds.js.map +1 -0
  45. package/cjs/lib/common/engine/IChecker.d.ts +23 -0
  46. package/cjs/lib/common/engine/IChecker.js +18 -0
  47. package/cjs/lib/common/engine/IChecker.js.map +1 -0
  48. package/cjs/lib/common/engine/IEngine.d.ts +39 -0
  49. package/cjs/lib/common/engine/IEngine.js +18 -0
  50. package/cjs/lib/common/engine/IEngine.js.map +1 -0
  51. package/cjs/lib/common/engine/IGuideline.d.ts +53 -0
  52. package/cjs/lib/common/engine/IGuideline.js +37 -0
  53. package/cjs/lib/common/engine/IGuideline.js.map +1 -0
  54. package/cjs/lib/common/engine/IMapper.d.ts +32 -0
  55. package/cjs/lib/common/engine/IMapper.js +18 -0
  56. package/cjs/lib/common/engine/IMapper.js.map +1 -0
  57. package/cjs/lib/common/engine/IReport.d.ts +143 -0
  58. package/cjs/lib/common/engine/IReport.js +44 -0
  59. package/cjs/lib/common/engine/IReport.js.map +1 -0
  60. package/cjs/lib/common/engine/IRule.d.ts +100 -0
  61. package/cjs/lib/common/engine/IRule.js +87 -0
  62. package/cjs/lib/common/engine/IRule.js.map +1 -0
  63. package/cjs/lib/common/engine/IRuleset.d.ts +20 -0
  64. package/cjs/lib/common/engine/IRuleset.js +18 -0
  65. package/cjs/lib/common/engine/IRuleset.js.map +1 -0
  66. package/cjs/lib/common/report/ACReporterCSV.d.ts +28 -0
  67. package/cjs/lib/common/report/ACReporterCSV.js +75 -0
  68. package/cjs/lib/common/report/ACReporterCSV.js.map +1 -0
  69. package/cjs/lib/common/report/ACReporterHTML.d.ts +27 -0
  70. package/cjs/lib/common/report/ACReporterHTML.js +61 -0
  71. package/cjs/lib/common/report/ACReporterHTML.js.map +1 -0
  72. package/cjs/lib/common/report/ACReporterJSON.d.ts +36 -0
  73. package/cjs/lib/common/report/ACReporterJSON.js +109 -0
  74. package/cjs/lib/common/report/ACReporterJSON.js.map +1 -0
  75. package/cjs/lib/common/report/ACReporterMetrics.d.ts +78 -0
  76. package/cjs/lib/common/report/ACReporterMetrics.js +135 -0
  77. package/cjs/lib/common/report/ACReporterMetrics.js.map +1 -0
  78. package/cjs/lib/common/report/ACReporterXLSX.d.ts +38 -0
  79. package/cjs/lib/common/report/ACReporterXLSX.js +996 -0
  80. package/cjs/lib/common/report/ACReporterXLSX.js.map +1 -0
  81. package/cjs/lib/common/report/BaselineManager.d.ts +169 -0
  82. package/cjs/lib/common/report/BaselineManager.js +382 -0
  83. package/cjs/lib/common/report/BaselineManager.js.map +1 -0
  84. package/cjs/lib/common/report/ReporterManager.d.ts +79 -0
  85. package/cjs/lib/common/report/ReporterManager.js +469 -0
  86. package/cjs/lib/common/report/ReporterManager.js.map +1 -0
  87. package/cjs/lib/common/report/genReport.d.ts +1 -0
  88. package/cjs/lib/common/report/genReport.js +12 -0
  89. package/cjs/lib/common/report/genReport.js.map +1 -0
  90. package/cjs/package.json +3 -0
  91. package/index.js +21 -63
  92. package/index.js.map +1 -1
  93. package/lib/ACBrowserManager.js +138 -203
  94. package/lib/ACBrowserManager.js.map +1 -1
  95. package/lib/ACEngineManager.js +395 -402
  96. package/lib/ACEngineManager.js.map +1 -1
  97. package/lib/ACHelper.js +581 -642
  98. package/lib/ACHelper.js.map +1 -1
  99. package/lib/common/api-ext/Fetch.js +58 -78
  100. package/lib/common/api-ext/Fetch.js.map +1 -1
  101. package/lib/common/config/ACConfigManager.js +271 -281
  102. package/lib/common/config/ACConfigManager.js.map +1 -1
  103. package/lib/common/config/ACConstants.js +38 -4
  104. package/lib/common/config/ACConstants.js.map +1 -1
  105. package/lib/common/config/IConfig.d.ts +1 -1
  106. package/lib/common/report/ACReporterCSV.js +42 -77
  107. package/lib/common/report/ACReporterCSV.js.map +1 -1
  108. package/lib/common/report/ACReporterHTML.js +15 -48
  109. package/lib/common/report/ACReporterHTML.js.map +1 -1
  110. package/lib/common/report/ACReporterJSON.js +59 -94
  111. package/lib/common/report/ACReporterJSON.js.map +1 -1
  112. package/lib/common/report/ACReporterMetrics.js +45 -108
  113. package/lib/common/report/ACReporterMetrics.js.map +1 -1
  114. package/lib/common/report/ACReporterXLSX.js +282 -300
  115. package/lib/common/report/ACReporterXLSX.js.map +1 -1
  116. package/lib/common/report/BaselineManager.js +82 -56
  117. package/lib/common/report/BaselineManager.js.map +1 -1
  118. package/lib/common/report/ReporterManager.js +125 -190
  119. package/lib/common/report/ReporterManager.js.map +1 -1
  120. package/lib/common/report/genReport.js +2 -2
  121. package/mjs/bin/achecker.d.ts +2 -0
  122. package/mjs/bin/achecker.js +236 -0
  123. package/mjs/bin/achecker.js.map +1 -0
  124. package/mjs/index.d.ts +319 -0
  125. package/mjs/index.js +368 -0
  126. package/mjs/index.js.map +1 -0
  127. package/mjs/lib/ACBrowserManager.d.ts +22 -0
  128. package/mjs/lib/ACBrowserManager.js +121 -0
  129. package/mjs/lib/ACBrowserManager.js.map +1 -0
  130. package/mjs/lib/ACEngineManager.d.ts +19 -0
  131. package/mjs/lib/ACEngineManager.js +397 -0
  132. package/mjs/lib/ACEngineManager.js.map +1 -0
  133. package/mjs/lib/ACHelper.d.ts +2 -0
  134. package/mjs/lib/ACHelper.js +614 -0
  135. package/mjs/lib/ACHelper.js.map +1 -0
  136. package/mjs/lib/api/IChecker.d.ts +28 -0
  137. package/mjs/lib/api/IChecker.js +8 -0
  138. package/mjs/lib/api/IChecker.js.map +1 -0
  139. package/mjs/lib/api/IMapper.d.ts +37 -0
  140. package/mjs/lib/api/IMapper.js +17 -0
  141. package/mjs/lib/api/IMapper.js.map +1 -0
  142. package/mjs/lib/common/api-ext/Fetch.d.ts +17 -0
  143. package/mjs/lib/common/api-ext/Fetch.js +45 -0
  144. package/mjs/lib/common/api-ext/Fetch.js.map +1 -0
  145. package/mjs/lib/common/api-ext/IAbstractAPI.d.ts +33 -0
  146. package/mjs/lib/common/api-ext/IAbstractAPI.js +17 -0
  147. package/mjs/lib/common/api-ext/IAbstractAPI.js.map +1 -0
  148. package/mjs/lib/common/config/ACConfigManager.d.ts +13 -0
  149. package/mjs/lib/common/config/ACConfigManager.js +421 -0
  150. package/mjs/lib/common/config/ACConfigManager.js.map +1 -0
  151. package/mjs/lib/common/config/ACConstants.d.ts +17 -0
  152. package/mjs/lib/common/config/ACConstants.js +75 -0
  153. package/mjs/lib/common/config/ACConstants.js.map +1 -0
  154. package/mjs/lib/common/config/IArchive.d.ts +37 -0
  155. package/mjs/lib/common/config/IArchive.js +17 -0
  156. package/mjs/lib/common/config/IArchive.js.map +1 -0
  157. package/mjs/lib/common/config/IConfig.d.ts +152 -0
  158. package/mjs/lib/common/config/IConfig.js +33 -0
  159. package/mjs/lib/common/config/IConfig.js.map +1 -0
  160. package/mjs/lib/common/engine/IBounds.d.ts +21 -0
  161. package/mjs/lib/common/engine/IBounds.js +17 -0
  162. package/mjs/lib/common/engine/IBounds.js.map +1 -0
  163. package/mjs/lib/common/engine/IChecker.d.ts +23 -0
  164. package/mjs/lib/common/engine/IChecker.js +17 -0
  165. package/mjs/lib/common/engine/IChecker.js.map +1 -0
  166. package/mjs/lib/common/engine/IEngine.d.ts +39 -0
  167. package/mjs/lib/common/engine/IEngine.js +17 -0
  168. package/mjs/lib/common/engine/IEngine.js.map +1 -0
  169. package/mjs/lib/common/engine/IGuideline.d.ts +53 -0
  170. package/mjs/lib/common/engine/IGuideline.js +34 -0
  171. package/mjs/lib/common/engine/IGuideline.js.map +1 -0
  172. package/mjs/lib/common/engine/IMapper.d.ts +32 -0
  173. package/mjs/lib/common/engine/IMapper.js +17 -0
  174. package/mjs/lib/common/engine/IMapper.js.map +1 -0
  175. package/mjs/lib/common/engine/IReport.d.ts +143 -0
  176. package/mjs/lib/common/engine/IReport.js +36 -0
  177. package/mjs/lib/common/engine/IReport.js.map +1 -0
  178. package/mjs/lib/common/engine/IRule.d.ts +100 -0
  179. package/mjs/lib/common/engine/IRule.js +79 -0
  180. package/mjs/lib/common/engine/IRule.js.map +1 -0
  181. package/mjs/lib/common/engine/IRuleset.d.ts +20 -0
  182. package/mjs/lib/common/engine/IRuleset.js +17 -0
  183. package/mjs/lib/common/engine/IRuleset.js.map +1 -0
  184. package/mjs/lib/common/report/ACReporterCSV.d.ts +28 -0
  185. package/mjs/lib/common/report/ACReporterCSV.js +60 -0
  186. package/mjs/lib/common/report/ACReporterCSV.js.map +1 -0
  187. package/mjs/lib/common/report/ACReporterHTML.d.ts +27 -0
  188. package/mjs/lib/common/report/ACReporterHTML.js +46 -0
  189. package/mjs/lib/common/report/ACReporterHTML.js.map +1 -0
  190. package/mjs/lib/common/report/ACReporterJSON.d.ts +36 -0
  191. package/mjs/lib/common/report/ACReporterJSON.js +94 -0
  192. package/mjs/lib/common/report/ACReporterJSON.js.map +1 -0
  193. package/mjs/lib/common/report/ACReporterMetrics.d.ts +78 -0
  194. package/mjs/lib/common/report/ACReporterMetrics.js +122 -0
  195. package/mjs/lib/common/report/ACReporterMetrics.js.map +1 -0
  196. package/mjs/lib/common/report/ACReporterXLSX.d.ts +38 -0
  197. package/mjs/lib/common/report/ACReporterXLSX.js +948 -0
  198. package/mjs/lib/common/report/ACReporterXLSX.js.map +1 -0
  199. package/mjs/lib/common/report/BaselineManager.d.ts +169 -0
  200. package/mjs/lib/common/report/BaselineManager.js +348 -0
  201. package/mjs/lib/common/report/BaselineManager.js.map +1 -0
  202. package/mjs/lib/common/report/ReporterManager.d.ts +79 -0
  203. package/mjs/lib/common/report/ReporterManager.js +469 -0
  204. package/mjs/lib/common/report/ReporterManager.js.map +1 -0
  205. package/mjs/lib/common/report/genReport.d.ts +1 -0
  206. package/mjs/lib/common/report/genReport.js +9 -0
  207. package/mjs/lib/common/report/genReport.js.map +1 -0
  208. package/mjs/package.json +3 -0
  209. package/package.json +10 -4
@@ -0,0 +1,678 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.getComplianceHelper = getComplianceHelper;
46
+ const fs_1 = require("fs");
47
+ const path_1 = require("path");
48
+ const ACBrowserManager_js_1 = require("./ACBrowserManager.js");
49
+ const ACEngineManager_js_1 = require("./ACEngineManager.js");
50
+ const ACConfigManager_js_1 = require("./common/config/ACConfigManager.js");
51
+ const ReporterManager_js_1 = require("./common/report/ReporterManager.js");
52
+ const BaselineManager_js_1 = require("./common/report/BaselineManager.js");
53
+ let loggerCreate = function (type) {
54
+ return logger;
55
+ };
56
+ let logger = {
57
+ debug: (...output) => { Config && Config.DEBUG && console.debug(...output); },
58
+ info: (...output) => { Config && Config.DEBUG && console.info(...output); },
59
+ error: (...output) => { Config && Config.DEBUG && console.error(...output); },
60
+ warn: (...output) => { Config && Config.DEBUG && console.warn(...output); },
61
+ create: loggerCreate
62
+ };
63
+ let Config;
64
+ let checkPolicy = false;
65
+ class MyFS {
66
+ writeFileSync(filePath, data) {
67
+ let outFile = this.prepFileSync(filePath);
68
+ (0, fs_1.writeFileSync)(outFile, data);
69
+ }
70
+ prepFileSync(filePath) {
71
+ let outDir = (0, path_1.resolve)(Config.outputFolder);
72
+ let outFile = (0, path_1.join)(outDir, filePath);
73
+ if (!(0, fs_1.existsSync)((0, path_1.dirname)(outFile))) {
74
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(outFile), { recursive: true });
75
+ }
76
+ return outFile;
77
+ }
78
+ log(...output) { Config && Config.DEBUG && console.debug(...output); }
79
+ info(...output) { Config && Config.DEBUG && console.info(...output); }
80
+ error(...output) { Config && Config.DEBUG && console.error(...output); }
81
+ loadBaseline(label) {
82
+ let baselineFile = (0, path_1.join)((0, path_1.join)(process.cwd(), Config.baselineFolder), label + ".json");
83
+ if (!(0, fs_1.existsSync)(baselineFile))
84
+ return null;
85
+ if (typeof require !== "undefined") {
86
+ return require(baselineFile);
87
+ }
88
+ else {
89
+ return JSON.parse((0, fs_1.readFileSync)(baselineFile).toString());
90
+ }
91
+ }
92
+ getChecker() {
93
+ return ACEngineManager_js_1.ACEngineManager.getChecker();
94
+ }
95
+ }
96
+ function initialize() {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ if (Config)
99
+ return;
100
+ Config = yield ACConfigManager_js_1.ACConfigManager.getConfigUnsupported();
101
+ yield ACEngineManager_js_1.ACEngineManager.loadEngineLocal();
102
+ let absAPI = new MyFS();
103
+ let refactorMap = {};
104
+ let rules = ACEngineManager_js_1.ACEngineManager.getRulesSync();
105
+ for (const rule of rules) {
106
+ if (rule.refactor) {
107
+ for (const key in rule.refactor) {
108
+ refactorMap[key] = rule;
109
+ }
110
+ }
111
+ }
112
+ ReporterManager_js_1.ReporterManager.initialize(Config, absAPI, yield ACEngineManager_js_1.ACEngineManager.getRulesets());
113
+ BaselineManager_js_1.BaselineManager.initialize(Config, absAPI, refactorMap);
114
+ });
115
+ }
116
+ (() => __awaiter(void 0, void 0, void 0, function* () {
117
+ try {
118
+ // If cucumber is the platform...
119
+ let module = (yield Promise.resolve(`${"cucumber"}`).then(s => __importStar(require(s))));
120
+ let { AfterAll } = require('cucumber');
121
+ if (module.default.AfterAll) {
122
+ module.default.AfterAll(function (done) {
123
+ // const rulePack = `${Config.rulePack}`;
124
+ initialize()
125
+ .then(() => ReporterManager_js_1.ReporterManager.generateSummaries())
126
+ .then(() => ACBrowserManager_js_1.ACBrowserManager.close())
127
+ .then(done);
128
+ });
129
+ }
130
+ }
131
+ catch (e) {
132
+ if (typeof (after) !== "undefined") {
133
+ after(function (done) {
134
+ if (Config) {
135
+ if (this.timeout) {
136
+ this.timeout(300000);
137
+ }
138
+ // const rulePack = `${Config.rulePack}/ace`;
139
+ initialize()
140
+ .then(() => ReporterManager_js_1.ReporterManager.generateSummaries())
141
+ .then(() => ACBrowserManager_js_1.ACBrowserManager.close())
142
+ .then(done);
143
+ }
144
+ else {
145
+ done();
146
+ }
147
+ });
148
+ }
149
+ else {
150
+ process.on('beforeExit', function () {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ if (Config) {
153
+ initialize()
154
+ .then(() => ReporterManager_js_1.ReporterManager.generateSummaries());
155
+ ACBrowserManager_js_1.ACBrowserManager.close();
156
+ }
157
+ });
158
+ });
159
+ }
160
+ }
161
+ }))();
162
+ function areValidPolicy(valPolicies, curPol) {
163
+ let isValPol = false;
164
+ let errorPolicy = "";
165
+ for (let i = 0; i < curPol.length; ++i) {
166
+ if (valPolicies.indexOf(curPol[i]) === -1) {
167
+ errorPolicy += "" + curPol[i] + ",";
168
+ }
169
+ else {
170
+ isValPol = true;
171
+ }
172
+ }
173
+ if (errorPolicy.length > 0) {
174
+ errorPolicy = errorPolicy.substr(0, errorPolicy.length - 1);
175
+ console.log(`[WARN] InvalidPolicies: Invalid policies "${errorPolicy}". Valid policy ids are: ${valPolicies}`);
176
+ }
177
+ if (!isValPol) {
178
+ const errStr = `[ERROR] ValidPoliciesMissing: No valid policy has been provided. Valid policy ids for the specified archive are: ${valPolicies}`;
179
+ console.error(errStr);
180
+ throw new Error(errStr);
181
+ }
182
+ }
183
+ function getComplianceHelper(content, label) {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ yield initialize();
186
+ Config.DEBUG && console.log("START 'aChecker.getCompliance' function");
187
+ if (!content) {
188
+ console.error("aChecker: Unable to get compliance of null or undefined object");
189
+ //return null;
190
+ throw new Error("aChecker: Unable to get compliance of null or undefined object");
191
+ }
192
+ // Variable Decleration
193
+ let URL;
194
+ // Since we need to handle multiple variation of possible ways to scan items, we need to handle
195
+ // each one differently as each one requires specific actions/setup.
196
+ // Handle the following:
197
+ // Single node (HTMLElement)
198
+ // Multiple node (Array of HTMLElements)
199
+ // Local file (String)
200
+ // URL (String)
201
+ // document
202
+ function getParsed(content) {
203
+ return __awaiter(this, void 0, void 0, function* () {
204
+ if (!content)
205
+ return null;
206
+ // Handle local file and URL's
207
+ if (typeof content === "string") {
208
+ let isURLRegex = /^(ftp|http|https):\/\//;
209
+ if (isURLRegex.test(content)) {
210
+ URL = content;
211
+ }
212
+ // Since this is a string, we consider this as either URL or local file
213
+ // so build an iframe based on this and get the frame doc and then scan this.
214
+ return ACBrowserManager_js_1.ACBrowserManager.buildIframeAndGetDoc(content);
215
+ }
216
+ else if (ACEngineManager_js_1.ACEngineManager.isSelenium(content) || ACEngineManager_js_1.ACEngineManager.isPuppeteer(content) || ACEngineManager_js_1.ACEngineManager.isPlaywright(content) || ACEngineManager_js_1.ACEngineManager.isWebDriverIO(content)) {
217
+ }
218
+ // Handle Array of nodes
219
+ else if (content instanceof Array) {
220
+ // TODO: Supporting Array of nodes, possible future enhancenment
221
+ }
222
+ // Handle single node (HTMLElement)
223
+ else if (content.nodeType === 1) {
224
+ // In the case this is a node, there is nothing special that needs to be done at this time,
225
+ // the engine will be able to handle this. Adding this block here as we may need to add some filtering
226
+ // of rules or rule sets for this case depending on if a special ruleset needs to be created or not.
227
+ content = content;
228
+ }
229
+ // handle scanning document
230
+ else if (content.nodeType === 9) {
231
+ // In the case this is a document element, simply send the document object to the engine for now
232
+ // we will need to do some filtering to remove any karma related aspects, which requires to do a
233
+ // document clone, and then string the karma scripts that are added and then send this document
234
+ // to the engine.
235
+ // TODO: Investigate best approach to perform filtering
236
+ content = content;
237
+ }
238
+ return content;
239
+ });
240
+ }
241
+ let parsed = yield getParsed(content);
242
+ if (!parsed) {
243
+ console.error("Invalid content: " + content);
244
+ throw new Error("Invalid content: " + content);
245
+ }
246
+ yield ACEngineManager_js_1.ACEngineManager.loadEngine(parsed);
247
+ // Get the Data when the scan is started
248
+ // Start time will be in milliseconds elapsed since 1 January 1970 00:00:00 UTC up until now.
249
+ let policies = Config.policies;
250
+ let curPol = null;
251
+ if (policies) {
252
+ curPol = JSON.parse(JSON.stringify(policies));
253
+ }
254
+ if (ACEngineManager_js_1.ACEngineManager.isSelenium(parsed)) {
255
+ Config.DEBUG && console.log("getComplianceHelper:Selenium");
256
+ return yield getComplianceHelperSelenium(label, parsed, curPol);
257
+ }
258
+ else if (ACEngineManager_js_1.ACEngineManager.isPuppeteer(parsed)) {
259
+ Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Puppeteer");
260
+ return yield getComplianceHelperPuppeteer(label, parsed, curPol);
261
+ }
262
+ else if (ACEngineManager_js_1.ACEngineManager.isPlaywright(parsed)) {
263
+ Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Playwright");
264
+ return yield getComplianceHelperPuppeteer(label, parsed, curPol);
265
+ }
266
+ else if (ACEngineManager_js_1.ACEngineManager.isWebDriverIO(parsed)) {
267
+ Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Playwright");
268
+ return yield getComplianceHelperWebDriverIO(label, parsed, curPol);
269
+ }
270
+ else {
271
+ Config.DEBUG && console.log("ACHelper.ts:getComplianceHelper:Local");
272
+ return yield getComplianceHelperLocal(label, parsed, curPol);
273
+ }
274
+ });
275
+ }
276
+ function getComplianceHelperSelenium(label, parsed, curPol) {
277
+ return __awaiter(this, void 0, void 0, function* () {
278
+ try {
279
+ let startScan = Date.now();
280
+ // NOTE: Engine should already be loaded
281
+ let browser = parsed;
282
+ // Selenium
283
+ let scriptStr = `let cb = arguments[arguments.length - 1];
284
+ try {
285
+
286
+ const valueToLevel = (reportValue) => {
287
+ let reportLevel;
288
+ if (reportValue[1] === "PASS") {
289
+ reportLevel = "pass";
290
+ }
291
+ else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
292
+ reportLevel = "manual";
293
+ }
294
+ else if (reportValue[0] === "VIOLATION") {
295
+ if (reportValue[1] === "FAIL") {
296
+ reportLevel = "violation";
297
+ }
298
+ else if (reportValue[1] === "POTENTIAL") {
299
+ reportLevel = "potentialviolation";
300
+ }
301
+ }
302
+ else if (reportValue[0] === "RECOMMENDATION") {
303
+ if (reportValue[1] === "FAIL") {
304
+ reportLevel = "recommendation";
305
+ }
306
+ else if (reportValue[1] === "POTENTIAL") {
307
+ reportLevel = "potentialrecommendation";
308
+ }
309
+ }
310
+ return reportLevel;
311
+ }
312
+
313
+ const getCounts = (engineReport) => {
314
+ let counts = {
315
+ violation: 0,
316
+ potentialviolation: 0,
317
+ recommendation: 0,
318
+ potentialrecommendation: 0,
319
+ manual: 0,
320
+ pass: 0
321
+ }
322
+ for (const issue of engineReport.results) {
323
+ ++counts[issue.level];
324
+ }
325
+ return counts;
326
+ }
327
+
328
+
329
+ let policies = ${JSON.stringify(Config.policies)};
330
+
331
+ let checker = new window.ace_ibma.Checker();
332
+ let customRulesets = ${JSON.stringify(ACEngineManager_js_1.ACEngineManager.customRulesets)};
333
+ customRulesets.forEach((rs) => checker.addRuleset(rs));
334
+ setTimeout(function() {
335
+ checker.check(document, policies).then(function(report) {
336
+ for (const result of report.results) {
337
+ delete result.node;
338
+ result.level = valueToLevel(result.value)
339
+ }
340
+ report.summary ||= {};
341
+ report.summary.counts ||= getCounts(report);
342
+ let reportLevels = ${JSON.stringify((Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString()))};
343
+ // Filter out pass results unless they asked for them in reports
344
+ // We don't want to mess with baseline functions, but pass results can break the response object
345
+ report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
346
+ cb(report);
347
+ })
348
+ },0)
349
+ } catch (e) {
350
+ cb(e);
351
+ }`;
352
+ let manage = browser.manage();
353
+ if (manage.timeouts) {
354
+ manage.timeouts().setScriptTimeout(60000);
355
+ }
356
+ else if (manage.setTimeouts) {
357
+ manage.setTimeouts({
358
+ "script": 60000
359
+ });
360
+ }
361
+ let report = yield browser.executeAsyncScript(scriptStr);
362
+ const getPolicies = "return new window.ace_ibma.Checker().rulesetIds;";
363
+ if (curPol != null && !checkPolicy) {
364
+ checkPolicy = true;
365
+ const valPolicies = ACEngineManager_js_1.ACEngineManager.customRulesets.map(rs => rs.id).concat(yield browser.executeScript(getPolicies));
366
+ areValidPolicy(valPolicies, curPol);
367
+ }
368
+ // If there is something to report...
369
+ let finalReport;
370
+ if (report.results) {
371
+ // Add URL to the result object
372
+ const url = yield browser.getCurrentUrl();
373
+ const title = yield browser.getTitle();
374
+ let origReport = JSON.parse(JSON.stringify(report));
375
+ if (Config.captureScreenshots && browser.takeScreenshot) {
376
+ const image = yield browser.takeScreenshot();
377
+ origReport.screenshot = image;
378
+ }
379
+ finalReport = ReporterManager_js_1.ReporterManager.addEngineReport("Selenium", startScan, url, title, label, origReport);
380
+ }
381
+ return {
382
+ "report": finalReport,
383
+ "webdriver": parsed
384
+ };
385
+ }
386
+ catch (err) {
387
+ console.error(err);
388
+ return Promise.reject(err);
389
+ }
390
+ ;
391
+ });
392
+ }
393
+ function getComplianceHelperWebDriverIO(label, parsed, curPol) {
394
+ return __awaiter(this, void 0, void 0, function* () {
395
+ try {
396
+ const startScan = Date.now();
397
+ // NOTE: Engine should already be loaded
398
+ const page = parsed;
399
+ let report = yield page.executeAsync(({ policies, customRulesets, reportLevels }, done) => {
400
+ const valueToLevel = (reportValue) => {
401
+ let reportLevel;
402
+ if (reportValue[1] === "PASS") {
403
+ reportLevel = "pass";
404
+ }
405
+ else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
406
+ reportLevel = "manual";
407
+ }
408
+ else if (reportValue[0] === "VIOLATION") {
409
+ if (reportValue[1] === "FAIL") {
410
+ reportLevel = "violation";
411
+ }
412
+ else if (reportValue[1] === "POTENTIAL") {
413
+ reportLevel = "potentialviolation";
414
+ }
415
+ }
416
+ else if (reportValue[0] === "RECOMMENDATION") {
417
+ if (reportValue[1] === "FAIL") {
418
+ reportLevel = "recommendation";
419
+ }
420
+ else if (reportValue[1] === "POTENTIAL") {
421
+ reportLevel = "potentialrecommendation";
422
+ }
423
+ }
424
+ return reportLevel;
425
+ };
426
+ const getCounts = (engineReport) => {
427
+ let counts = {
428
+ violation: 0,
429
+ potentialviolation: 0,
430
+ recommendation: 0,
431
+ potentialrecommendation: 0,
432
+ manual: 0,
433
+ pass: 0
434
+ };
435
+ for (const issue of engineReport.results) {
436
+ ++counts[issue.level];
437
+ }
438
+ return counts;
439
+ };
440
+ let checker = new window.ace_ibma.Checker();
441
+ customRulesets.forEach((rs) => checker.addRuleset(rs));
442
+ return new Promise((resolve, reject) => {
443
+ setTimeout(function () {
444
+ checker.check(document, policies).then(function (report) {
445
+ var _a;
446
+ for (const result of report.results) {
447
+ delete result.node;
448
+ result.level = valueToLevel(result.value);
449
+ }
450
+ report.summary || (report.summary = {});
451
+ (_a = report.summary).counts || (_a.counts = getCounts(report));
452
+ // Filter out pass results unless they asked for them in reports
453
+ // We don't want to mess with baseline functions, but pass results can break the response object
454
+ report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
455
+ resolve(report);
456
+ done(report);
457
+ });
458
+ }, 0);
459
+ });
460
+ }, { policies: Config.policies, customRulesets: ACEngineManager_js_1.ACEngineManager.customRulesets, reportLevels: (Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString()) });
461
+ if (curPol != null && !checkPolicy) {
462
+ const valPolicies = ACEngineManager_js_1.ACEngineManager.customRulesets.map(rs => rs.id).concat(yield page.execute(() => (new window.ace_ibma.Checker().rulesetIds)));
463
+ checkPolicy = true;
464
+ areValidPolicy(valPolicies, curPol);
465
+ }
466
+ let finalReport;
467
+ // If there is something to report...
468
+ if (report.results) {
469
+ let url = yield page.execute(() => document.location.href);
470
+ let title = yield page.execute(() => document.location.title);
471
+ let origReport = JSON.parse(JSON.stringify(report));
472
+ if (Config.captureScreenshots) {
473
+ let image = yield page.screenshot({
474
+ fullPage: true,
475
+ encoding: "base64"
476
+ });
477
+ origReport.screenshot = image;
478
+ }
479
+ finalReport = ReporterManager_js_1.ReporterManager.addEngineReport("Puppeteer", startScan, url, title, label, origReport);
480
+ }
481
+ page.aceBusy = false;
482
+ return {
483
+ "report": finalReport,
484
+ "puppeteer": parsed
485
+ };
486
+ }
487
+ catch (err) {
488
+ console.error(err);
489
+ return Promise.reject(err);
490
+ }
491
+ ;
492
+ });
493
+ }
494
+ function getComplianceHelperPuppeteer(label, parsed, curPol) {
495
+ return __awaiter(this, void 0, void 0, function* () {
496
+ try {
497
+ const startScan = Date.now();
498
+ // NOTE: Engine should already be loaded
499
+ const page = parsed;
500
+ let report = yield page.evaluate(({ policies, customRulesets, reportLevels }) => {
501
+ const valueToLevel = (reportValue) => {
502
+ let reportLevel;
503
+ if (reportValue[1] === "PASS") {
504
+ reportLevel = "pass";
505
+ }
506
+ else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
507
+ reportLevel = "manual";
508
+ }
509
+ else if (reportValue[0] === "VIOLATION") {
510
+ if (reportValue[1] === "FAIL") {
511
+ reportLevel = "violation";
512
+ }
513
+ else if (reportValue[1] === "POTENTIAL") {
514
+ reportLevel = "potentialviolation";
515
+ }
516
+ }
517
+ else if (reportValue[0] === "RECOMMENDATION") {
518
+ if (reportValue[1] === "FAIL") {
519
+ reportLevel = "recommendation";
520
+ }
521
+ else if (reportValue[1] === "POTENTIAL") {
522
+ reportLevel = "potentialrecommendation";
523
+ }
524
+ }
525
+ return reportLevel;
526
+ };
527
+ const getCounts = (engineReport) => {
528
+ let counts = {
529
+ violation: 0,
530
+ potentialviolation: 0,
531
+ recommendation: 0,
532
+ potentialrecommendation: 0,
533
+ manual: 0,
534
+ pass: 0
535
+ };
536
+ for (const issue of engineReport.results) {
537
+ ++counts[issue.level];
538
+ }
539
+ return counts;
540
+ };
541
+ let checker = new window.ace_ibma.Checker();
542
+ customRulesets.forEach((rs) => checker.addRuleset(rs));
543
+ return new Promise((resolve, reject) => {
544
+ setTimeout(function () {
545
+ checker.check(document, policies).then(function (report) {
546
+ var _a;
547
+ for (const result of report.results) {
548
+ delete result.node;
549
+ result.level = valueToLevel(result.value);
550
+ }
551
+ report.summary || (report.summary = {});
552
+ (_a = report.summary).counts || (_a.counts = getCounts(report));
553
+ // Filter out pass results unless they asked for them in reports
554
+ // We don't want to mess with baseline functions, but pass results can break the response object
555
+ report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
556
+ resolve(report);
557
+ });
558
+ }, 0);
559
+ });
560
+ }, { policies: Config.policies, customRulesets: ACEngineManager_js_1.ACEngineManager.customRulesets, reportLevels: (Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString()) });
561
+ if (curPol != null && !checkPolicy) {
562
+ const valPolicies = ACEngineManager_js_1.ACEngineManager.customRulesets.map(rs => rs.id).concat(yield page.evaluate("new window.ace_ibma.Checker().rulesetIds"));
563
+ checkPolicy = true;
564
+ areValidPolicy(valPolicies, curPol);
565
+ }
566
+ let finalReport;
567
+ // If there is something to report...
568
+ if (report.results) {
569
+ let url = yield page.evaluate("document.location.href");
570
+ let title = yield page.evaluate("document.location.title");
571
+ let origReport = JSON.parse(JSON.stringify(report));
572
+ if (Config.captureScreenshots) {
573
+ let image = yield page.screenshot({
574
+ fullPage: true,
575
+ encoding: "base64"
576
+ });
577
+ origReport.screenshot = image;
578
+ }
579
+ finalReport = ReporterManager_js_1.ReporterManager.addEngineReport("Puppeteer", startScan, url, title, label, origReport);
580
+ }
581
+ page.aceBusy = false;
582
+ return {
583
+ "report": finalReport,
584
+ "puppeteer": parsed
585
+ };
586
+ }
587
+ catch (err) {
588
+ console.error(err);
589
+ return Promise.reject(err);
590
+ }
591
+ ;
592
+ });
593
+ }
594
+ function getComplianceHelperLocal(label, parsed, curPol) {
595
+ return __awaiter(this, void 0, void 0, function* () {
596
+ try {
597
+ const valueToLevel = (reportValue) => {
598
+ let reportLevel;
599
+ if (reportValue[1] === "PASS") {
600
+ reportLevel = "pass";
601
+ }
602
+ else if ((reportValue[0] === "VIOLATION" || reportValue[0] === "RECOMMENDATION") && reportValue[1] === "MANUAL") {
603
+ reportLevel = "manual";
604
+ }
605
+ else if (reportValue[0] === "VIOLATION") {
606
+ if (reportValue[1] === "FAIL") {
607
+ reportLevel = "violation";
608
+ }
609
+ else if (reportValue[1] === "POTENTIAL") {
610
+ reportLevel = "potentialviolation";
611
+ }
612
+ }
613
+ else if (reportValue[0] === "RECOMMENDATION") {
614
+ if (reportValue[1] === "FAIL") {
615
+ reportLevel = "recommendation";
616
+ }
617
+ else if (reportValue[1] === "POTENTIAL") {
618
+ reportLevel = "potentialrecommendation";
619
+ }
620
+ }
621
+ return reportLevel;
622
+ };
623
+ const getCounts = (engineReport) => {
624
+ let counts = {
625
+ violation: 0,
626
+ potentialviolation: 0,
627
+ recommendation: 0,
628
+ potentialrecommendation: 0,
629
+ manual: 0,
630
+ pass: 0
631
+ };
632
+ for (const issue of engineReport.results) {
633
+ ++counts[issue.level];
634
+ }
635
+ return counts;
636
+ };
637
+ let startScan = Date.now();
638
+ let checker = ACEngineManager_js_1.ACEngineManager.getChecker();
639
+ ACEngineManager_js_1.ACEngineManager.customRulesets.forEach((rs) => checker.addGuideline(rs));
640
+ let report = yield checker.check(parsed, Config.policies)
641
+ .then(function (report) {
642
+ var _a;
643
+ for (const result of report.results) {
644
+ delete result.node;
645
+ result.level = valueToLevel(result.value);
646
+ }
647
+ report.summary || (report.summary = {});
648
+ (_a = report.summary).counts || (_a.counts = getCounts(report));
649
+ let reportLevels = (Config.reportLevels || []).concat(Config.failLevels || []).map(lvl => lvl.toString());
650
+ // Filter out pass results unless they asked for them in reports
651
+ // We don't want to mess with baseline functions, but pass results can break the response object
652
+ report.results = report.results.filter(result => reportLevels.includes(result.level) || result.level !== "pass");
653
+ return report;
654
+ });
655
+ if (curPol != null && !checkPolicy) {
656
+ let valPolicies = checker.getGuidelineIds();
657
+ checkPolicy = true;
658
+ areValidPolicy(valPolicies, curPol);
659
+ }
660
+ let finalReport;
661
+ // If there is something to report...
662
+ if (report.results) {
663
+ let url = parsed.location && parsed.location.href;
664
+ let origReport = JSON.parse(JSON.stringify(report));
665
+ finalReport = ReporterManager_js_1.ReporterManager.addEngineReport("Native", startScan, url, parsed.title, label, origReport);
666
+ }
667
+ return {
668
+ "report": finalReport
669
+ };
670
+ }
671
+ catch (err) {
672
+ console.error(err);
673
+ return Promise.reject(err);
674
+ }
675
+ ;
676
+ });
677
+ }
678
+ //# sourceMappingURL=ACHelper.js.map