accessibility-checker 3.1.49 → 3.1.51

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 (94) hide show
  1. package/README.md +75 -67
  2. package/bin/achecker.js +14 -17
  3. package/bin/achecker.js.map +1 -1
  4. package/index.d.ts +6 -4
  5. package/index.js +9 -8
  6. package/index.js.map +1 -1
  7. package/lib/ACBrowserManager.d.ts +2 -2
  8. package/lib/ACBrowserManager.js +2 -3
  9. package/lib/ACBrowserManager.js.map +1 -1
  10. package/lib/ACEngineManager.d.ts +1 -12
  11. package/lib/ACEngineManager.js +72 -40
  12. package/lib/ACEngineManager.js.map +1 -1
  13. package/lib/ACHelper.js +126 -137
  14. package/lib/ACHelper.js.map +1 -1
  15. package/lib/api/IChecker.d.ts +3 -114
  16. package/lib/api/IChecker.js +1 -1
  17. package/lib/api/IChecker.js.map +1 -1
  18. package/lib/common/api-ext/Fetch.d.ts +16 -0
  19. package/lib/common/api-ext/Fetch.js +83 -0
  20. package/lib/common/api-ext/Fetch.js.map +1 -0
  21. package/lib/common/api-ext/IAbstractAPI.d.ts +34 -0
  22. package/lib/common/api-ext/IAbstractAPI.js +18 -0
  23. package/lib/common/api-ext/IAbstractAPI.js.map +1 -0
  24. package/lib/common/config/ACConfigManager.d.ts +7 -0
  25. package/lib/{ACConfigManager.js → common/config/ACConfigManager.js} +28 -19
  26. package/lib/common/config/ACConfigManager.js.map +1 -0
  27. package/lib/{ACConstants.d.ts → common/config/ACConstants.d.ts} +2 -2
  28. package/lib/{ACConstants.js → common/config/ACConstants.js} +7 -5
  29. package/lib/common/config/ACConstants.js.map +1 -0
  30. package/lib/common/config/IArchive.d.ts +37 -0
  31. package/lib/{reporters/multiScanReportUtil.d.ts → common/config/IArchive.js} +4 -5
  32. package/lib/common/config/IArchive.js.map +1 -0
  33. package/lib/common/config/IConfig.d.ts +146 -0
  34. package/lib/common/config/IConfig.js +36 -0
  35. package/lib/common/config/IConfig.js.map +1 -0
  36. package/lib/common/report/ACReporterCSV.d.ts +27 -0
  37. package/lib/common/report/ACReporterCSV.js +105 -0
  38. package/lib/common/report/ACReporterCSV.js.map +1 -0
  39. package/lib/common/report/ACReporterHTML.d.ts +26 -0
  40. package/lib/common/report/ACReporterHTML.js +94 -0
  41. package/lib/common/report/ACReporterHTML.js.map +1 -0
  42. package/lib/common/report/ACReporterJSON.d.ts +46 -0
  43. package/lib/common/report/ACReporterJSON.js +140 -0
  44. package/lib/common/report/ACReporterJSON.js.map +1 -0
  45. package/lib/{log/ACMetricsLogger.d.ts → common/report/ACReporterMetrics.d.ts} +11 -6
  46. package/lib/{log/ACMetricsLogger.js → common/report/ACReporterMetrics.js} +85 -70
  47. package/lib/common/report/ACReporterMetrics.js.map +1 -0
  48. package/lib/common/report/ACReporterXLSX.d.ts +37 -0
  49. package/lib/common/report/ACReporterXLSX.js +1004 -0
  50. package/lib/common/report/ACReporterXLSX.js.map +1 -0
  51. package/lib/common/report/BaselineManager.d.ts +169 -0
  52. package/lib/common/report/BaselineManager.js +355 -0
  53. package/lib/common/report/BaselineManager.js.map +1 -0
  54. package/lib/common/report/ReporterManager.d.ts +79 -0
  55. package/lib/common/report/ReporterManager.js +552 -0
  56. package/lib/common/report/ReporterManager.js.map +1 -0
  57. package/lib/common/report/genReport.js.map +1 -0
  58. package/package.json +1 -1
  59. package/lib/ACConfigManager.d.ts +0 -7
  60. package/lib/ACConfigManager.js.map +0 -1
  61. package/lib/ACConstants.js.map +0 -1
  62. package/lib/ACReportManager.d.ts +0 -590
  63. package/lib/ACReportManager.js +0 -1201
  64. package/lib/ACReportManager.js.map +0 -1
  65. package/lib/api/IEngine.d.ts +0 -129
  66. package/lib/api/IEngine.js +0 -110
  67. package/lib/api/IEngine.js.map +0 -1
  68. package/lib/log/ACMetricsLogger.js.map +0 -1
  69. package/lib/reporters/ACReporterCSV.d.ts +0 -103
  70. package/lib/reporters/ACReporterCSV.js +0 -193
  71. package/lib/reporters/ACReporterCSV.js.map +0 -1
  72. package/lib/reporters/ACReporterHTML.d.ts +0 -114
  73. package/lib/reporters/ACReporterHTML.js +0 -360
  74. package/lib/reporters/ACReporterHTML.js.map +0 -1
  75. package/lib/reporters/ACReporterJSON.d.ts +0 -114
  76. package/lib/reporters/ACReporterJSON.js +0 -277
  77. package/lib/reporters/ACReporterJSON.js.map +0 -1
  78. package/lib/reporters/ACReporterXLSX.d.ts +0 -109
  79. package/lib/reporters/ACReporterXLSX.js +0 -405
  80. package/lib/reporters/ACReporterXLSX.js.map +0 -1
  81. package/lib/reporters/ReportUtil.d.ts +0 -33
  82. package/lib/reporters/ReportUtil.js +0 -65
  83. package/lib/reporters/ReportUtil.js.map +0 -1
  84. package/lib/reporters/genReport.js.map +0 -1
  85. package/lib/reporters/multiScanData.d.ts +0 -27
  86. package/lib/reporters/multiScanData.js +0 -190
  87. package/lib/reporters/multiScanData.js.map +0 -1
  88. package/lib/reporters/multiScanReport.d.ts +0 -25
  89. package/lib/reporters/multiScanReport.js +0 -1729
  90. package/lib/reporters/multiScanReport.js.map +0 -1
  91. package/lib/reporters/multiScanReportUtil.js +0 -49
  92. package/lib/reporters/multiScanReportUtil.js.map +0 -1
  93. /package/lib/{reporters → common/report}/genReport.d.ts +0 -0
  94. /package/lib/{reporters → common/report}/genReport.js +0 -0
@@ -13,12 +13,14 @@
13
13
  See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  *****************************************************************************/
16
+ import { IConfigInternal } from "../config/IConfig";
17
+ import { CompressedReport, IRuleset } from "../engine/IReport";
18
+ import { GenSummReturn, IReporter, IReporterStored } from "./ReporterManager";
16
19
  /*******************************************************************************
17
20
  * NAME: ACMetricsLogger.js
18
21
  * DESCRIPTION: Common Metrics logger object which can be shared between tools
19
22
  * to upload metrics of the tool to the metrics server.
20
23
  *******************************************************************************/
21
- import { ILogger } from "../api/IChecker";
22
24
  /**
23
25
  * This function is responsible for constructing the accessibility-checker Metrics object which contains all the function
24
26
  * that are needed to upload scan metrics to the metric server.
@@ -31,16 +33,16 @@ import { ILogger } from "../api/IChecker";
31
33
  *
32
34
  * @memberOf this
33
35
  */
34
- export declare class ACMetricsLogger {
36
+ export declare class ACReporterMetrics implements IReporter {
37
+ name(): string;
35
38
  policies: string;
36
39
  metricsURLV2: string;
37
- log: ILogger;
38
40
  toolName: string;
39
41
  scanTimesV1: any[];
40
42
  scanTimesV2: {
41
43
  [profile: string]: number[];
42
44
  };
43
- constructor(toolName: string, logger: ILogger, policies: string[]);
45
+ constructor(toolName: string, policies: string[]);
44
46
  /**
45
47
  * This function is responsible for profiling the testcases and adding the scan time to the global
46
48
  * array which will be sent to the metrics server to log the number of scans that were performed.
@@ -57,7 +59,10 @@ export declare class ACMetricsLogger {
57
59
  *
58
60
  * @memberOf this
59
61
  */
60
- profileV2(scanTime: number, profile: string): void;
62
+ generateReport(config: IConfigInternal, rulesets: IRuleset[], storedReport: IReporterStored): {
63
+ reportPath: string;
64
+ report: string;
65
+ } | void;
61
66
  /**
62
67
  * This function is responsible for uploading scan results to the metrics server:
63
68
  * https://aat.w3ibm.mybluemix.net
@@ -68,5 +73,5 @@ export declare class ACMetricsLogger {
68
73
  *
69
74
  * @memberOf this
70
75
  */
71
- sendLogsV2(done: any, rulePack: any): Promise<void>;
76
+ generateSummary(config: IConfigInternal, rulesets: IRuleset[], endReport: number, summaryData: CompressedReport[]): Promise<GenSummReturn>;
72
77
  }
@@ -51,8 +51,13 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
51
51
  }
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.ACMetricsLogger = void 0;
55
- var axios_1 = require("axios");
54
+ exports.ACReporterMetrics = void 0;
55
+ var Fetch_1 = require("../api-ext/Fetch");
56
+ /*******************************************************************************
57
+ * NAME: ACMetricsLogger.js
58
+ * DESCRIPTION: Common Metrics logger object which can be shared between tools
59
+ * to upload metrics of the tool to the metrics server.
60
+ *******************************************************************************/
56
61
  /**
57
62
  * This function is responsible for constructing the accessibility-checker Metrics object which contains all the function
58
63
  * that are needed to upload scan metrics to the metric server.
@@ -65,17 +70,18 @@ var axios_1 = require("axios");
65
70
  *
66
71
  * @memberOf this
67
72
  */
68
- var ACMetricsLogger = /** @class */ (function () {
69
- function ACMetricsLogger(toolName, logger, policies) {
73
+ var ACReporterMetrics = /** @class */ (function () {
74
+ function ACReporterMetrics(toolName, policies) {
70
75
  this.metricsURLV2 = "https://able.ibm.com/tools";
71
76
  this.scanTimesV1 = [];
72
77
  this.scanTimesV2 = {};
73
78
  this.policies = policies.join(",");
74
- // accessibility-checker Metrics Logger
75
- this.log = logger;
76
79
  // Init all the local object variables
77
80
  this.toolName = toolName;
78
81
  }
82
+ ACReporterMetrics.prototype.name = function () {
83
+ return "metrics";
84
+ };
79
85
  /**
80
86
  * This function is responsible for profiling the testcases and adding the scan time to the global
81
87
  * array which will be sent to the metrics server to log the number of scans that were performed.
@@ -92,14 +98,14 @@ var ACMetricsLogger = /** @class */ (function () {
92
98
  *
93
99
  * @memberOf this
94
100
  */
95
- ACMetricsLogger.prototype.profileV2 = function (scanTime, profile) {
96
- this.log.debug("START 'profileV2' function");
97
- // URI encode the profile text provided
98
- profile = encodeURIComponent(profile);
99
- // Add the time it took for the testcase to run to the global array, indexed by the profile
100
- this.scanTimesV2[profile] = this.scanTimesV2[profile] || [];
101
- this.scanTimesV2[profile].push(scanTime);
102
- this.log.debug("END 'profileV2' function");
101
+ ACReporterMetrics.prototype.generateReport = function (config, rulesets, storedReport) {
102
+ if (!config.label || !config.label.includes("IBMa-Node-TeSt")) {
103
+ // URI encode the profile text provided
104
+ var profile = encodeURIComponent(storedReport.scanProfile);
105
+ // Add the time it took for the testcase to run to the global array, indexed by the profile
106
+ this.scanTimesV2[profile] = this.scanTimesV2[profile] || [];
107
+ this.scanTimesV2[profile].push(storedReport.engineReport.summary.scanTime);
108
+ }
103
109
  };
104
110
  ;
105
111
  /**
@@ -112,72 +118,81 @@ var ACMetricsLogger = /** @class */ (function () {
112
118
  *
113
119
  * @memberOf this
114
120
  */
115
- ACMetricsLogger.prototype.sendLogsV2 = function (done, rulePack) {
121
+ ACReporterMetrics.prototype.generateSummary = function (config, rulesets, endReport, summaryData) {
116
122
  return __awaiter(this, void 0, void 0, function () {
117
- var loggerInScope, numProfiles_1, accountId, profile, _loop_1, this_1;
118
- return __generator(this, function (_a) {
119
- this.log.debug("START 'sendLogsV2' function");
120
- loggerInScope = this.log;
121
- try {
122
- numProfiles_1 = 0;
123
- accountId = "";
124
- // Loop over all the profiles with in the scanTime Object
125
- for (profile in this.scanTimesV2) {
123
+ var numProfiles_1, accountId, _a, _b, _c, _i, profile, _loop_1, this_1, e_1;
124
+ return __generator(this, function (_d) {
125
+ switch (_d.label) {
126
+ case 0:
127
+ _d.trys.push([0, 6, , 7]);
128
+ numProfiles_1 = 0;
129
+ accountId = "";
130
+ _a = this.scanTimesV2;
131
+ _b = [];
132
+ for (_c in _a)
133
+ _b.push(_c);
134
+ _i = 0;
135
+ _d.label = 1;
136
+ case 1:
137
+ if (!(_i < _b.length)) return [3 /*break*/, 5];
138
+ _c = _b[_i];
139
+ if (!(_c in _a)) return [3 /*break*/, 4];
140
+ profile = _c;
126
141
  _loop_1 = function () {
127
- // Build a truncatedScanTime Array to upload to the metrics server chunck by chunck
128
- var subScanTimes = this_1.scanTimesV2[profile].splice(0, 150);
129
- // Increment the num Profile
130
- ++numProfiles_1;
131
- // Start building the Query string to be sent to the metrics server
132
- var qs = "?t=" + this_1.toolName + "&tag=" + profile + "&a=" + accountId + "&pol=" + this_1.policies + "&st=";
133
- subScanTimes.forEach(function (t) {
134
- qs += t;
135
- qs += ",";
136
- });
137
- qs = qs.substr(0, qs.length - 1);
138
- this_1.log.debug("Uploading: " + this_1.metricsURLV2 + "/api/pub/meter/v2" + qs);
139
- // Dispatch the call to the metrics server
140
- // Istanbul is not able to capture the coverate of functions call in a callback therefore we need to skip
141
- /* istanbul ignore next */
142
- axios_1.default.get(this_1.metricsURLV2 + "/api/pub/meter/v2" + qs).then(function () {
143
- }).catch(function (_err) {
144
- }).finally(function () {
145
- // Decrement the numProfiles to identify that scan has finished
146
- --numProfiles_1;
147
- // Once all metrics for all profiles have been uploaded we end this function call
148
- if (numProfiles_1 === 0) {
149
- loggerInScope.debug("END 'sendLogsV2' function");
150
- done && done();
142
+ var subScanTimes, qs;
143
+ return __generator(this, function (_e) {
144
+ switch (_e.label) {
145
+ case 0:
146
+ subScanTimes = this_1.scanTimesV2[profile].splice(0, 150);
147
+ // Increment the num Profile
148
+ ++numProfiles_1;
149
+ qs = "?t=" + this_1.toolName + "&tag=" + profile + "&a=" + accountId + "&pol=" + this_1.policies + "&st=";
150
+ subScanTimes.forEach(function (t) {
151
+ qs += t;
152
+ qs += ",";
153
+ });
154
+ qs = qs.substr(0, qs.length - 1);
155
+ // Dispatch the call to the metrics server
156
+ // Istanbul is not able to capture the coverate of functions call in a callback therefore we need to skip
157
+ /* istanbul ignore next */
158
+ return [4 /*yield*/, (0, Fetch_1.fetch_get)(this_1.metricsURLV2 + "/api/pub/meter/v2" + qs).then(function () {
159
+ }).catch(function (_err) {
160
+ }).finally(function () {
161
+ // Decrement the numProfiles to identify that scan has finished
162
+ --numProfiles_1;
163
+ })];
164
+ case 1:
165
+ // Dispatch the call to the metrics server
166
+ // Istanbul is not able to capture the coverate of functions call in a callback therefore we need to skip
167
+ /* istanbul ignore next */
168
+ _e.sent();
169
+ return [2 /*return*/];
151
170
  }
152
171
  });
153
172
  };
154
173
  this_1 = this;
155
- // Loop over all the V2 Scan Times until it reaches 0
156
- while (this.scanTimesV2[profile].length > 0) {
157
- _loop_1();
158
- }
159
- }
160
- // Once all metrics for all profiles have been uploaded we end this function call
161
- if (numProfiles_1 === 0) {
162
- this.log.debug("END 'sendLogsV2' function");
163
- done && done();
164
- }
165
- }
166
- catch (e) {
167
- /* istanbul ignore next */
168
- this.log.debug("Error uploading metrics logs: " + e);
169
- /* istanbul ignore next */
170
- this.log.debug("END 'sendLogsV2' function");
171
- /* istanbul ignore next */
172
- done && done();
174
+ _d.label = 2;
175
+ case 2:
176
+ if (!(this.scanTimesV2[profile].length > 0)) return [3 /*break*/, 4];
177
+ return [5 /*yield**/, _loop_1()];
178
+ case 3:
179
+ _d.sent();
180
+ return [3 /*break*/, 2];
181
+ case 4:
182
+ _i++;
183
+ return [3 /*break*/, 1];
184
+ case 5: return [3 /*break*/, 7];
185
+ case 6:
186
+ e_1 = _d.sent();
187
+ return [3 /*break*/, 7];
188
+ case 7: return [2 /*return*/];
173
189
  }
174
- return [2 /*return*/];
175
190
  });
176
191
  });
177
192
  };
178
193
  ;
179
- return ACMetricsLogger;
194
+ return ACReporterMetrics;
180
195
  }());
181
- exports.ACMetricsLogger = ACMetricsLogger;
196
+ exports.ACReporterMetrics = ACReporterMetrics;
182
197
  ;
183
- //# sourceMappingURL=ACMetricsLogger.js.map
198
+ //# sourceMappingURL=ACReporterMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ACReporterMetrics.js","sourceRoot":"","sources":["../../../../src-ts/lib/common/report/ACReporterMetrics.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;+EAc+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/E,0CAA6C;AAK7C;;;;iFAIiF;AAEjF;;;;;;;;;;;GAWG;AACH;IAYI,2BAAY,QAAgB,EAAE,QAAkB;QAPhD,iBAAY,GAAW,4BAA4B,CAAC;QAEpD,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAEP,EAAE,CAAC;QAGH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnC,sCAAsC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAhBM,gCAAI,GAAX;QACI,OAAO,SAAS,CAAC;IACrB,CAAC;IAgBD;;;;;;;;;;;;;;;OAeG;IACI,0CAAc,GAArB,UAAsB,MAAuB,EAAE,QAAoB,EAAE,YAA6B;QAC9F,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YAC3D,uCAAuC;YACvC,IAAI,OAAO,GAAG,kBAAkB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE3D,2FAA2F;YAC3F,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC9E;IACL,CAAC;IAAA,CAAC;IAEF;;;;;;;;;OASG;IACU,2CAAe,GAA5B,UAA6B,MAAuB,EAAE,QAAoB,EAAE,SAAiB,EAAE,WAA+B;;;;;;;wBAGlH,gBAAc,CAAC,CAAC;wBAChB,SAAS,GAAG,EAAE,CAAC;6BAGC,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;wCAKxB,YAAY,GAAG,OAAK,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wCAE5D,4BAA4B;wCAC5B,EAAE,aAAW,CAAC;wCAGV,EAAE,GAAG,KAAK,GAAG,OAAK,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,OAAK,QAAQ,GAAG,MAAM,CAAC;wCAE1G,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;4CAC5B,EAAE,IAAI,CAAC,CAAC;4CACR,EAAE,IAAI,GAAG,CAAC;wCACd,CAAC,CAAC,CAAC;wCACH,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wCAEjC,0CAA0C;wCAC1C,yGAAyG;wCACzG,0BAA0B;wCAC1B,qBAAM,IAAA,iBAAS,EAAC,OAAK,YAAY,GAAG,mBAAmB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC;4CACnE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAC,IAAI;4CACd,CAAC,CAAC,CAAC,OAAO,CAAC;gDACP,+DAA+D;gDAC/D,EAAE,aAAW,CAAC;4CAClB,CAAC,CAAC,EAAA;;wCARF,0CAA0C;wCAC1C,yGAAyG;wCACzG,0BAA0B;wCAC1B,SAKE,CAAA;;;;;;;;6BAxBC,CAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;;;;;;;;;;;;;;;;KA6BtD;IAAA,CAAC;IACN,wBAAC;AAAD,CAAC,AAhGD,IAgGC;AAhGY,8CAAiB;AAgG7B,CAAC"}
@@ -0,0 +1,37 @@
1
+ /******************************************************************************
2
+ Copyright:: 2020- IBM, Inc
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ *****************************************************************************/
16
+ import { IConfigInternal } from "../config/IConfig";
17
+ import { CompressedReport, IRuleset } from "../engine/IReport";
18
+ import { GenSummReturn, IReporter } from "./ReporterManager";
19
+ export declare class ACReporterXLSX implements IReporter {
20
+ name(): string;
21
+ generateReport(_reportData: any): {
22
+ reportPath: string;
23
+ report: string;
24
+ } | void;
25
+ generateSummary(config: IConfigInternal, rulesets: IRuleset[], endReport: number, summaryData: CompressedReport[]): Promise<GenSummReturn>;
26
+ private static createOverviewSheet;
27
+ private static createScanSummarySheet;
28
+ private static buildIssueSummaryLevel;
29
+ private static buildIssueSummaryTKLevel;
30
+ private static createIssueSummarySheet;
31
+ private static createIssuesSheet;
32
+ private static createDefinitionsSheet;
33
+ private static countDuplicatesInArray;
34
+ private static get_element;
35
+ private static format_date;
36
+ private static stringHash;
37
+ }