@qualweb/cui-checks 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CuiChecksModule.d.ts.map +1 -1
- package/dist/CuiChecksModule.js +3 -2
- package/dist/CuiChecksRunner.d.ts +3 -1
- package/dist/CuiChecksRunner.d.ts.map +1 -1
- package/dist/CuiChecksRunner.js +19 -1
- package/dist/__webpack/common-words-pt.txt +10929 -0
- package/dist/__webpack/cui.bundle.js +64533 -1
- package/dist/checks/QW-CUI-C1.d.ts +1 -1
- package/dist/checks/QW-CUI-C1.d.ts.map +1 -1
- package/dist/checks/QW-CUI-C1.js +10 -21
- package/dist/checks/QW-CUI-C10.d.ts +7 -0
- package/dist/checks/QW-CUI-C10.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C10.js +27 -0
- package/dist/checks/QW-CUI-C2.d.ts +7 -0
- package/dist/checks/QW-CUI-C2.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C2.js +63 -0
- package/dist/checks/QW-CUI-C3.d.ts +7 -0
- package/dist/checks/QW-CUI-C3.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C3.js +56 -0
- package/dist/checks/QW-CUI-C4.d.ts +7 -0
- package/dist/checks/QW-CUI-C4.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C4.js +41 -0
- package/dist/checks/QW-CUI-C5.d.ts +7 -0
- package/dist/checks/QW-CUI-C5.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C5.js +66 -0
- package/dist/checks/QW-CUI-C6.d.ts +7 -0
- package/dist/checks/QW-CUI-C6.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C6.js +52 -0
- package/dist/checks/QW-CUI-C7.d.ts +7 -0
- package/dist/checks/QW-CUI-C7.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C7.js +52 -0
- package/dist/checks/QW-CUI-C8.d.ts +7 -0
- package/dist/checks/QW-CUI-C8.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C8.js +27 -0
- package/dist/checks/QW-CUI-C9.d.ts +7 -0
- package/dist/checks/QW-CUI-C9.d.ts.map +1 -0
- package/dist/checks/QW-CUI-C9.js +27 -0
- package/dist/checks/index.d.ts +9 -0
- package/dist/checks/index.d.ts.map +1 -1
- package/dist/checks/index.js +9 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/CUIChecksTester.object.d.ts +9 -1
- package/dist/lib/CUIChecksTester.object.d.ts.map +1 -1
- package/dist/lib/CUIChecksTester.object.js +34 -15
- package/dist/lib/Check.object.d.ts +9 -2
- package/dist/lib/Check.object.d.ts.map +1 -1
- package/dist/lib/Check.object.js +4 -2
- package/dist/lib/checks.json +116 -19
- package/dist/lib/currency.d.ts +8 -0
- package/dist/lib/currency.d.ts.map +1 -0
- package/dist/lib/currency.js +76 -0
- package/dist/lib/dates.d.ts +2 -0
- package/dist/lib/dates.d.ts.map +1 -0
- package/dist/lib/dates.js +99 -0
- package/dist/lib/decorator.d.ts +5 -0
- package/dist/lib/decorator.d.ts.map +1 -0
- package/dist/lib/decorator.js +45 -0
- package/dist/lib/language.d.ts +9 -0
- package/dist/lib/language.d.ts.map +1 -0
- package/dist/lib/language.js +21 -0
- package/dist/lib/mapping.d.ts +7 -3
- package/dist/lib/mapping.d.ts.map +1 -1
- package/dist/lib/mapping.js +27 -2
- package/dist/lib/readability.d.ts +23 -0
- package/dist/lib/readability.d.ts.map +1 -0
- package/dist/lib/readability.js +161 -0
- package/dist/lib/selectors.d.ts +8 -0
- package/dist/lib/selectors.d.ts.map +1 -0
- package/dist/lib/selectors.js +2 -0
- package/dist/lib/types.d.ts +6 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/units.d.ts +2 -0
- package/dist/lib/units.d.ts.map +1 -0
- package/dist/lib/units.js +34 -0
- package/package.json +38 -8
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { ModuleTranslator } from '@qualweb/core/locale';
|
|
2
2
|
import { Tester } from '@qualweb/core/evaluation';
|
|
3
|
+
import { QWCUI_Selectors } from './selectors';
|
|
4
|
+
import { RuleTest } from './types';
|
|
3
5
|
export declare class CUIChecksTester extends Tester {
|
|
6
|
+
private mapping;
|
|
7
|
+
private settings;
|
|
8
|
+
private rules;
|
|
4
9
|
init(translator: ModuleTranslator): this;
|
|
5
|
-
execute(): void
|
|
10
|
+
execute(): Promise<void>;
|
|
11
|
+
configure(settings: {
|
|
12
|
+
[key: string]: string | number | boolean;
|
|
13
|
+
}, uiSelectors: QWCUI_Selectors, rules?: RuleTest[]): void;
|
|
6
14
|
private executeChecks;
|
|
7
15
|
private executeCheck;
|
|
8
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CUIChecksTester.object.d.ts","sourceRoot":"","sources":["../../src/lib/CUIChecksTester.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"CUIChecksTester.object.d.ts","sourceRoot":"","sources":["../../src/lib/CUIChecksTester.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,qBAAa,eAAgB,SAAQ,MAAM;IACzC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,KAAK,CAAgC;IACtC,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAUlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,SAAS,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,EAAC,WAAW,EAAE,eAAe,EAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI;YAchH,aAAa;YAWb,YAAY;CAe3B"}
|
|
@@ -22,47 +22,66 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
exports.CUIChecksTester = void 0;
|
|
30
27
|
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
31
|
-
const mapping_1 =
|
|
28
|
+
const mapping_1 = require("./mapping");
|
|
32
29
|
const checks = __importStar(require("../checks"));
|
|
33
30
|
class CUIChecksTester extends evaluation_1.Tester {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.mapping = {};
|
|
34
|
+
this.settings = {};
|
|
35
|
+
this.rules = {};
|
|
36
|
+
}
|
|
34
37
|
init(translator) {
|
|
35
38
|
for (const check in checks) {
|
|
36
|
-
const
|
|
39
|
+
const normalizedCode = check.replace(/_/g, "-");
|
|
40
|
+
const checkObject = new checks[check](translator, this.settings, this.rules[normalizedCode]);
|
|
37
41
|
this.assertions.set(checkObject.getCode(), checkObject);
|
|
38
42
|
this.toExecute[checkObject.getCode()] = true;
|
|
39
43
|
}
|
|
40
44
|
return this;
|
|
41
45
|
}
|
|
42
|
-
execute() {
|
|
43
|
-
this.executeChecks();
|
|
46
|
+
async execute() {
|
|
47
|
+
await this.executeChecks();
|
|
48
|
+
}
|
|
49
|
+
configure(settings, uiSelectors, rules) {
|
|
50
|
+
let rulesSelectors = {};
|
|
51
|
+
this.settings = settings;
|
|
52
|
+
if (rules) {
|
|
53
|
+
rulesSelectors = rules.reduce((acc, rule) => {
|
|
54
|
+
this.rules[rule.code] = rule;
|
|
55
|
+
acc[rule.code] = rule.selector;
|
|
56
|
+
return acc;
|
|
57
|
+
}, {});
|
|
58
|
+
}
|
|
59
|
+
const selectors = { ...uiSelectors, ...rulesSelectors };
|
|
60
|
+
this.mapping = (0, mapping_1.generateMappings)(selectors);
|
|
44
61
|
}
|
|
45
|
-
executeChecks() {
|
|
62
|
+
async executeChecks() {
|
|
46
63
|
var _a;
|
|
47
|
-
const selectors = Object.keys(
|
|
64
|
+
const selectors = Object.keys(this.mapping);
|
|
48
65
|
for (const selector of selectors !== null && selectors !== void 0 ? selectors : []) {
|
|
49
|
-
for (const check of (_a =
|
|
66
|
+
for (const check of (_a = this.mapping[selector]) !== null && _a !== void 0 ? _a : []) {
|
|
50
67
|
if (this.toExecute[check]) {
|
|
51
|
-
this.executeCheck(check, selector);
|
|
68
|
+
await this.executeCheck(check, selector);
|
|
52
69
|
}
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
72
|
}
|
|
56
|
-
executeCheck(check, selector) {
|
|
57
|
-
var _a;
|
|
73
|
+
async executeCheck(check, selector) {
|
|
74
|
+
var _a, _b, _c, _d;
|
|
58
75
|
const checkObject = this.assertions.get(check);
|
|
59
76
|
if (checkObject) {
|
|
60
77
|
const elements = window.qwPage.getElements(selector);
|
|
61
78
|
if (elements.length > 0) {
|
|
62
|
-
|
|
79
|
+
for (const element of elements) {
|
|
80
|
+
await ((_b = (_a = checkObject).execute) === null || _b === void 0 ? void 0 : _b.call(_a, element));
|
|
81
|
+
}
|
|
63
82
|
}
|
|
64
83
|
else {
|
|
65
|
-
(
|
|
84
|
+
await ((_d = (_c = checkObject).execute) === null || _d === void 0 ? void 0 : _d.call(_c));
|
|
66
85
|
}
|
|
67
86
|
this.report.addAssertionResult(checkObject);
|
|
68
87
|
}
|
|
@@ -3,15 +3,22 @@ import type { TranslationValues } from '@qualweb/locale';
|
|
|
3
3
|
import type { QWElement } from '@qualweb/qw-element';
|
|
4
4
|
import type { Assertion, Level, Principle, Test } from '@qualweb/core/evaluation';
|
|
5
5
|
import { Guideline } from '@qualweb/core/evaluation';
|
|
6
|
+
import { RuleTest } from './types';
|
|
6
7
|
declare abstract class Check extends Guideline {
|
|
7
8
|
protected readonly check: Assertion;
|
|
8
9
|
protected readonly translator: ModuleTranslator;
|
|
9
|
-
|
|
10
|
+
protected readonly settings: {
|
|
11
|
+
[key: string]: string | number | boolean;
|
|
12
|
+
};
|
|
13
|
+
protected readonly testResult: RuleTest | undefined;
|
|
14
|
+
constructor(translator: ModuleTranslator, settings: {
|
|
15
|
+
[key: string]: string | number | boolean;
|
|
16
|
+
}, test?: RuleTest);
|
|
10
17
|
protected translate(resultCode: string, values?: TranslationValues): string;
|
|
11
18
|
getCode(): string;
|
|
12
19
|
getMapping(): string;
|
|
13
20
|
hasPrincipleAndLevels(principles: Principle[], levels: Level[]): boolean;
|
|
14
|
-
abstract execute(element?: QWElement): void
|
|
21
|
+
abstract execute(element?: QWElement): Promise<void>;
|
|
15
22
|
getFinalResults(): Assertion;
|
|
16
23
|
protected addTestResult(test: Test): void;
|
|
17
24
|
private generateOutcome;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Check.object.d.ts","sourceRoot":"","sources":["../../src/lib/Check.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAc,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAW,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"Check.object.d.ts","sourceRoot":"","sources":["../../src/lib/Check.object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAc,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAW,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,uBAAe,KAAM,SAAQ,SAAS;IACpC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC1E,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAC,QAAQ,GAAC,SAAS,CAAC;gBACrC,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,EAAC,IAAI,CAAC,EAAC,QAAQ;IAgB/G,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAIpE,OAAO,IAAI,MAAM;IAIjB,UAAU,IAAI,MAAM;IAIpB,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;aAM/D,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpD,eAAe,IAAI,SAAS;IAKnC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAazC,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,cAAc;CAQvB;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/lib/Check.object.js
CHANGED
|
@@ -7,10 +7,12 @@ exports.Check = void 0;
|
|
|
7
7
|
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
8
8
|
const checks_json_1 = __importDefault(require("./checks.json"));
|
|
9
9
|
class Check extends evaluation_1.Guideline {
|
|
10
|
-
constructor(translator) {
|
|
10
|
+
constructor(translator, settings, test) {
|
|
11
11
|
super();
|
|
12
12
|
this.translator = translator;
|
|
13
13
|
const check = checks_json_1.default[new.target.name];
|
|
14
|
+
this.testResult = test;
|
|
15
|
+
this.settings = settings;
|
|
14
16
|
check.metadata.passed = 0;
|
|
15
17
|
check.metadata.warning = 0;
|
|
16
18
|
check.metadata.failed = 0;
|
|
@@ -38,7 +40,7 @@ class Check extends evaluation_1.Guideline {
|
|
|
38
40
|
}
|
|
39
41
|
addTestResult(test) {
|
|
40
42
|
if (!test.description || test.description.trim() === '') {
|
|
41
|
-
test.description = this.
|
|
43
|
+
test.description = this.check.description;
|
|
42
44
|
}
|
|
43
45
|
this.check.results.push(test);
|
|
44
46
|
if (test.verdict && test.verdict !== evaluation_1.Verdict.INAPPLICABLE) {
|
package/dist/lib/checks.json
CHANGED
|
@@ -1,25 +1,122 @@
|
|
|
1
1
|
{
|
|
2
2
|
"QW_CUI_C1": {
|
|
3
|
-
"name": "
|
|
3
|
+
"name": "Voice Input Availability",
|
|
4
4
|
"code": "QW-CUI-C1",
|
|
5
|
-
"description": "This
|
|
6
|
-
"metadata": {
|
|
7
|
-
"target": {
|
|
8
|
-
"element": "
|
|
9
|
-
},
|
|
10
|
-
"success-criteria": [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
5
|
+
"description": "This test checks whether the chatbot includes a voice input option, such as a microphone button.",
|
|
6
|
+
"metadata": {
|
|
7
|
+
"target": {
|
|
8
|
+
"element": "button"
|
|
9
|
+
},
|
|
10
|
+
"success-criteria": [],
|
|
11
|
+
"url": ""
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"QW_CUI_C2": {
|
|
15
|
+
"name": "Clarity of Chatbot Responses",
|
|
16
|
+
"code": "QW-CUI-C2",
|
|
17
|
+
"description": "This test checks whether the chatbot's responses are written in clear and simple language.",
|
|
18
|
+
"metadata": {
|
|
19
|
+
"target": {
|
|
20
|
+
"element": "div"
|
|
21
|
+
},
|
|
22
|
+
"success-criteria": [],
|
|
23
|
+
"url": ""
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"QW_CUI_C3": {
|
|
27
|
+
"name": "Localized Date Format in Chatbot Responses",
|
|
28
|
+
"code": "QW-CUI-C3",
|
|
29
|
+
"description": "This test checks whether the chatbot displays dates using the user's local format.",
|
|
30
|
+
"metadata": {
|
|
31
|
+
"target": {
|
|
32
|
+
"element": "div"
|
|
33
|
+
},
|
|
34
|
+
"success-criteria": [],
|
|
35
|
+
"url": ""
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"QW_CUI_C4": {
|
|
39
|
+
"name": "Chatbot Response Language Consistency",
|
|
40
|
+
"code": "QW-CUI-C4",
|
|
41
|
+
"description": "This test checks whether the chatbot replies in the same language as the website.",
|
|
42
|
+
"metadata": {
|
|
43
|
+
"target": {
|
|
44
|
+
"element": "div"
|
|
45
|
+
},
|
|
46
|
+
"success-criteria": [],
|
|
47
|
+
"url": ""
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"QW_CUI_C5": {
|
|
51
|
+
"name": "Chatbot Response Matches User Language",
|
|
52
|
+
"code": "QW-CUI-C5",
|
|
53
|
+
"description": "This test checks whether the chatbot replies in the same language used by the user.",
|
|
54
|
+
"metadata": {
|
|
55
|
+
"target": {
|
|
56
|
+
"element": "div"
|
|
57
|
+
},
|
|
58
|
+
"success-criteria": [],
|
|
59
|
+
"url": ""
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"QW_CUI_C6": {
|
|
63
|
+
"name": "Localized Currency Format in Chatbot Responses",
|
|
64
|
+
"code": "QW-CUI-C6",
|
|
65
|
+
"description": "This test checks whether the chatbot displays currency values using the user's local format.",
|
|
66
|
+
"metadata": {
|
|
67
|
+
"target": {
|
|
68
|
+
"element": "div"
|
|
69
|
+
},
|
|
70
|
+
"success-criteria": [],
|
|
71
|
+
"url": ""
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"QW_CUI_C7": {
|
|
75
|
+
"name": "Localized Units of Measurement in Chatbot Responses",
|
|
76
|
+
"code": "QW-CUI-C7",
|
|
77
|
+
"description": "This test checks whether the chatbot displays units of measurement according to the user's local format.",
|
|
78
|
+
"metadata": {
|
|
79
|
+
"target": {
|
|
80
|
+
"element": "div"
|
|
81
|
+
},
|
|
82
|
+
"success-criteria": [],
|
|
83
|
+
"url": ""
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"QW_CUI_C8": {
|
|
87
|
+
"name": "Availability of Chatbot Help Commands",
|
|
88
|
+
"code": "QW-CUI-C8",
|
|
89
|
+
"description": "This test checks whether the chatbot offers a clear way for users to request information about its purpose and available functions.",
|
|
90
|
+
"metadata": {
|
|
91
|
+
"target": {
|
|
92
|
+
"element": "div"
|
|
93
|
+
},
|
|
94
|
+
"success-criteria": [],
|
|
95
|
+
"url": ""
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"QW_CUI_C9": {
|
|
99
|
+
"name": "Privacy Terms and Policy Disclosure in Chatbot",
|
|
100
|
+
"code": "QW-CUI-C9",
|
|
101
|
+
"description": "This test checks whether the chatbot provides clear information about how user data is collected, stored, or used when asked about privacy.",
|
|
102
|
+
"metadata": {
|
|
103
|
+
"target": {
|
|
104
|
+
"element": "div"
|
|
105
|
+
},
|
|
106
|
+
"success-criteria": [],
|
|
107
|
+
"url": ""
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"QW_CUI_C10": {
|
|
111
|
+
"name": "Human Assistance Availability in Chatbot",
|
|
112
|
+
"code": "QW-CUI-C10",
|
|
113
|
+
"description": "This test checks whether the chatbot provides a clear option to reach a human representative when users request human assistance or when automated support is insufficient.",
|
|
114
|
+
"metadata": {
|
|
115
|
+
"target": {
|
|
116
|
+
"element": "div"
|
|
117
|
+
},
|
|
118
|
+
"success-criteria": [],
|
|
119
|
+
"url": ""
|
|
23
120
|
}
|
|
24
121
|
}
|
|
25
122
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface CurrencyInfo {
|
|
2
|
+
code: string;
|
|
3
|
+
name: string;
|
|
4
|
+
symbol: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function recognizeCurrencyByLocale(locale: string, text: string): boolean | null;
|
|
7
|
+
export declare function getCurrencyInfo(locale: string, currencyCode: string): CurrencyInfo | null;
|
|
8
|
+
//# sourceMappingURL=currency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/lib/currency.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAC,IAAI,EAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAkCpF;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA+BzF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getCurrencyInfo = exports.recognizeCurrencyByLocale = void 0;
|
|
7
|
+
const locale_currency_1 = __importDefault(require("locale-currency"));
|
|
8
|
+
const recognizers_text_number_with_unit_1 = require("@microsoft/recognizers-text-number-with-unit");
|
|
9
|
+
const cultureMapping = {
|
|
10
|
+
'en': recognizers_text_number_with_unit_1.Culture.English,
|
|
11
|
+
'fr': recognizers_text_number_with_unit_1.Culture.French,
|
|
12
|
+
'de': recognizers_text_number_with_unit_1.Culture.German,
|
|
13
|
+
'it': recognizers_text_number_with_unit_1.Culture.Italian,
|
|
14
|
+
'es': recognizers_text_number_with_unit_1.Culture.Spanish,
|
|
15
|
+
'pt': recognizers_text_number_with_unit_1.Culture.Portuguese,
|
|
16
|
+
'nl': recognizers_text_number_with_unit_1.Culture.Dutch,
|
|
17
|
+
};
|
|
18
|
+
function recognizeCurrencyByLocale(locale, text) {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
const language = locale.split('-')[0];
|
|
21
|
+
if (!(language in cultureMapping))
|
|
22
|
+
return null;
|
|
23
|
+
let symbolCodeCurrency = locale_currency_1.default.getCurrency(locale);
|
|
24
|
+
console.log(`Recognizing currency for locale: ${locale}, symbolCodeCurrency: ${symbolCodeCurrency}`);
|
|
25
|
+
if (!symbolCodeCurrency) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
let currencyInfo = getCurrencyInfo(locale, symbolCodeCurrency);
|
|
29
|
+
if (!currencyInfo)
|
|
30
|
+
return null;
|
|
31
|
+
const culture = cultureMapping[language];
|
|
32
|
+
const results = (0, recognizers_text_number_with_unit_1.recognizeCurrency)(text, culture);
|
|
33
|
+
let result = false;
|
|
34
|
+
if (results.length === 0)
|
|
35
|
+
return null;
|
|
36
|
+
for (const recognizedCurrency of results) {
|
|
37
|
+
const unitCurrency = (_b = (_a = recognizedCurrency.resolution) === null || _a === void 0 ? void 0 : _a.unit) !== null && _b !== void 0 ? _b : {};
|
|
38
|
+
const isoCurrency = (_d = (_c = recognizedCurrency.resolution) === null || _c === void 0 ? void 0 : _c.isoCurrency) !== null && _d !== void 0 ? _d : '';
|
|
39
|
+
if (currencyInfo.name.toLowerCase().includes(unitCurrency.toLowerCase()) ||
|
|
40
|
+
currencyInfo.code.toLowerCase().includes(isoCurrency.toLowerCase())) {
|
|
41
|
+
result = true;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
exports.recognizeCurrencyByLocale = recognizeCurrencyByLocale;
|
|
48
|
+
function getCurrencyInfo(locale, currencyCode) {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
try {
|
|
51
|
+
const nameParts = new Intl.NumberFormat(locale, {
|
|
52
|
+
style: 'currency',
|
|
53
|
+
currency: currencyCode,
|
|
54
|
+
currencyDisplay: 'name'
|
|
55
|
+
}).formatToParts(0);
|
|
56
|
+
const symbolParts = new Intl.NumberFormat(locale, {
|
|
57
|
+
style: 'currency',
|
|
58
|
+
currency: currencyCode
|
|
59
|
+
}).formatToParts(0);
|
|
60
|
+
const currencyName = ((_a = nameParts.find(part => part.type === 'currency')) === null || _a === void 0 ? void 0 : _a.value) || '';
|
|
61
|
+
const currencySymbol = ((_b = symbolParts.find(part => part.type === 'currency')) === null || _b === void 0 ? void 0 : _b.value) || '';
|
|
62
|
+
if (!currencyName || !currencySymbol) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
code: currencyCode,
|
|
67
|
+
name: currencyName,
|
|
68
|
+
symbol: currencySymbol
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error(`Error getting currency info for ${locale} and ${currencyCode}:`, error);
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.getCurrencyInfo = getCurrencyInfo;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../src/lib/dates.ts"],"names":[],"mappings":"AAkDA,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,GAAG,IAAI,CA4B3G"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.detectLocaleFromDateString = void 0;
|
|
7
|
+
const luxon_1 = require("luxon");
|
|
8
|
+
const utf8_1 = __importDefault(require("utf8"));
|
|
9
|
+
const localeFormats = {
|
|
10
|
+
'pt-PT': ["d 'de' MMMM 'de' yyyy", "d 'de' MMMM", "MMMM 'de' yyyy", 'dd/MM/yyyy', 'd/MM/yyyy',
|
|
11
|
+
"d 'de' LLL 'de' yyyy",
|
|
12
|
+
"dd 'de' LLL 'de' yyyy",
|
|
13
|
+
"d 'de' LLL",
|
|
14
|
+
"dd 'de' LLL",
|
|
15
|
+
"LLL 'de' yyyy"
|
|
16
|
+
],
|
|
17
|
+
'en-US': ["d 'of' MMMM yyyy",
|
|
18
|
+
"d 'of' MMMM",
|
|
19
|
+
"d 'of' LLL yyyy",
|
|
20
|
+
"d 'of' LLL",
|
|
21
|
+
"d MMMM yyyy",
|
|
22
|
+
"d MMMM",
|
|
23
|
+
"d LLL yyyy",
|
|
24
|
+
"d LLL",
|
|
25
|
+
"MMMM d',' yyyy",
|
|
26
|
+
'MMMM d',
|
|
27
|
+
'MM/dd/yyyy',
|
|
28
|
+
'M/d/yy',
|
|
29
|
+
"MMM d',' yy",
|
|
30
|
+
'd LLL yyyy',
|
|
31
|
+
'dd LLL yyyy',
|
|
32
|
+
'd LLL',
|
|
33
|
+
'LLL yyyy'
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
function normalizeOrdinalDate(dateStr) {
|
|
37
|
+
let cleaned = dateStr.replace(/\bthe\s+/gi, '');
|
|
38
|
+
cleaned = cleaned.replace(/\b(\d{1,2})(st|nd|rd|th)\b/gi, '$1');
|
|
39
|
+
return cleaned.trim();
|
|
40
|
+
}
|
|
41
|
+
function detectLocaleFromDateString(text, systemLocale) {
|
|
42
|
+
if (!(systemLocale in localeFormats)) {
|
|
43
|
+
throw new Error(`Locale ${systemLocale} not supported`);
|
|
44
|
+
}
|
|
45
|
+
let dates = getDatesFromText(text);
|
|
46
|
+
if (systemLocale === 'en-US') {
|
|
47
|
+
dates = dates.map(date => normalizeOrdinalDate(date));
|
|
48
|
+
}
|
|
49
|
+
if (dates.length === 0)
|
|
50
|
+
return null;
|
|
51
|
+
const dateResult = Object.fromEntries(dates.map((date) => ([date.trim(), false])));
|
|
52
|
+
for (const [date, _] of Object.entries(dateResult)) {
|
|
53
|
+
console.log(`Validating date "${date}" for locale ${systemLocale}`);
|
|
54
|
+
const locale = systemLocale;
|
|
55
|
+
const format = localeFormats[systemLocale];
|
|
56
|
+
for (const pattern of format) {
|
|
57
|
+
const dt = luxon_1.DateTime.fromFormat(date, pattern, { locale });
|
|
58
|
+
if (dt.isValid) {
|
|
59
|
+
dateResult[date] = true;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return dateResult;
|
|
65
|
+
}
|
|
66
|
+
exports.detectLocaleFromDateString = detectLocaleFromDateString;
|
|
67
|
+
function buildMultiLangDateRegex() {
|
|
68
|
+
const allMonthsPattern = "(" +
|
|
69
|
+
"janeiro|jan|fevereiro|fev|março|mar|abril|abr|maio|mai|junho|jun|julho|jul|agosto|ago|setembro|set|outubro|out|novembro|nov|dezembro|dez|" +
|
|
70
|
+
"january|jan|february|feb|march|mar|april|apr|may|jun|july|jul|august|aug|september|sep|october|oct|november|nov|december|dec|" +
|
|
71
|
+
"janvier|janv|février|févr|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre|" +
|
|
72
|
+
"enero|ene|febrero|feb|marzo|may|junio|jun|julio|jul|septiembre|sep|octubre|oct|noviembre|nov|diciembre|dic|" +
|
|
73
|
+
"januar|jan|februar|feb|märz|mär|april|mai|juni|jun|juli|jul|august|aug|september|sep|oktober|okt|dezember|dez" +
|
|
74
|
+
")";
|
|
75
|
+
const ordinal = "(1st|2nd|3rd|[4-9]th|1[0-9]th|2[0-9]th|3[0-1]th|21st|22nd|23rd|31st)";
|
|
76
|
+
const day = "\\d{1,2}";
|
|
77
|
+
return new RegExp(`\\b${ordinal}\\b\\s+(?:\\bof\\b\\s+)?${allMonthsPattern}\\b(?:\\s+\\bof\\b)?\\s+\\d{4}\\b|` +
|
|
78
|
+
`\\b${ordinal}\\b\\s+(?:of\\s+)?${allMonthsPattern}\\b|` +
|
|
79
|
+
`\\b${day}\\b\\s+(?:de\\s+|of\\s+|von\\s+)?${allMonthsPattern}\\s+(?:de\\s+|of\\s+|von\\s+)?\\d{4}\\b|` +
|
|
80
|
+
`\\b${day}\\b\\s+(?:de\\s+|of\\s+|von\\s+)?${allMonthsPattern}\\b|` +
|
|
81
|
+
`\\b${allMonthsPattern}\\s+(?:de\\s+|of\\s+|von\\s+)?\\d{4}\\b|` +
|
|
82
|
+
`\\b${allMonthsPattern}\\s+${day}(?:,?\\s*\\d{4})?\\b`, "giu");
|
|
83
|
+
}
|
|
84
|
+
function getDatesFromText(text) {
|
|
85
|
+
console.log('Original text:', text);
|
|
86
|
+
let textFixedEncoding;
|
|
87
|
+
try {
|
|
88
|
+
textFixedEncoding = utf8_1.default.decode(text);
|
|
89
|
+
}
|
|
90
|
+
catch (_a) {
|
|
91
|
+
textFixedEncoding = text.normalize('NFC');
|
|
92
|
+
}
|
|
93
|
+
console.log('Fixed encoding text:', textFixedEncoding);
|
|
94
|
+
const dateRegex = buildMultiLangDateRegex();
|
|
95
|
+
const numericDateRegex = /\b(\d{1,2})([\/\-.])(\d{1,2})\2(\d{4}|\d{2})\b/g;
|
|
96
|
+
const textDates = [...textFixedEncoding.matchAll(dateRegex)].map(m => m[0]);
|
|
97
|
+
const numericDates = [...textFixedEncoding.matchAll(numericDateRegex)].map(m => m[0]);
|
|
98
|
+
return [...textDates, ...numericDates];
|
|
99
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { QWElement } from '@qualweb/qw-element';
|
|
2
|
+
type ExecuteMethod = (element?: QWElement) => Promise<void>;
|
|
3
|
+
export declare function QWBrowserTest(_target: any, _propertyKey: string, descriptor: TypedPropertyDescriptor<ExecuteMethod>): void;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/lib/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,KAAK,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D,wBAAgB,aAAa,CAC3B,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,QA4CnD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QWBrowserTest = void 0;
|
|
4
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
5
|
+
function QWBrowserTest(_target, _propertyKey, descriptor) {
|
|
6
|
+
if (!descriptor.value)
|
|
7
|
+
return;
|
|
8
|
+
descriptor.value = async function (element) {
|
|
9
|
+
var _a;
|
|
10
|
+
const test = new evaluation_1.Test();
|
|
11
|
+
const outcome = (_a = this.testResult) === null || _a === void 0 ? void 0 : _a.result;
|
|
12
|
+
let verdict;
|
|
13
|
+
let resultCode;
|
|
14
|
+
switch (outcome) {
|
|
15
|
+
case "passed":
|
|
16
|
+
verdict = evaluation_1.Verdict.PASSED;
|
|
17
|
+
resultCode = "P1";
|
|
18
|
+
break;
|
|
19
|
+
case "failed":
|
|
20
|
+
verdict = evaluation_1.Verdict.FAILED;
|
|
21
|
+
resultCode = "F1";
|
|
22
|
+
break;
|
|
23
|
+
case "warning":
|
|
24
|
+
verdict = evaluation_1.Verdict.WARNING;
|
|
25
|
+
resultCode = "W1";
|
|
26
|
+
break;
|
|
27
|
+
case undefined:
|
|
28
|
+
verdict = evaluation_1.Verdict.INAPPLICABLE;
|
|
29
|
+
resultCode = "I1";
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
verdict = evaluation_1.Verdict.INAPPLICABLE;
|
|
33
|
+
resultCode = "I2";
|
|
34
|
+
}
|
|
35
|
+
test.verdict = verdict;
|
|
36
|
+
test.resultCode = resultCode;
|
|
37
|
+
if (element && ["passed", "failed", "warning"].includes(outcome)) {
|
|
38
|
+
test.addElement(element);
|
|
39
|
+
}
|
|
40
|
+
if (typeof this.addTestResult === "function") {
|
|
41
|
+
this.addTestResult(test);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
exports.QWBrowserTest = QWBrowserTest;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ILanguageDetect {
|
|
2
|
+
lang: string;
|
|
3
|
+
accuracy: number;
|
|
4
|
+
}
|
|
5
|
+
declare function detectLanguage(text: string): string;
|
|
6
|
+
declare function detectAllLanguages(text: string): ILanguageDetect[];
|
|
7
|
+
declare function detectMainLanguage(text: string): ILanguageDetect;
|
|
8
|
+
export { detectLanguage, detectAllLanguages, detectMainLanguage };
|
|
9
|
+
//# sourceMappingURL=language.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/lib/language.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,iBAAS,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG5C;AAQD,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAG3D;AAOD,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAIzD;AAED,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.detectMainLanguage = exports.detectAllLanguages = exports.detectLanguage = void 0;
|
|
4
|
+
const tinyld_1 = require("tinyld");
|
|
5
|
+
const languagesRange = ['en', 'es', 'fr', 'de', 'it', 'pt', 'nl', 'ru', 'ja', 'zh', 'lt', 'pl'];
|
|
6
|
+
function detectLanguage(text) {
|
|
7
|
+
const language = (0, tinyld_1.detect)(text, { only: languagesRange });
|
|
8
|
+
return language;
|
|
9
|
+
}
|
|
10
|
+
exports.detectLanguage = detectLanguage;
|
|
11
|
+
function detectAllLanguages(text) {
|
|
12
|
+
const language = (0, tinyld_1.detectAll)(text, { only: languagesRange });
|
|
13
|
+
return language;
|
|
14
|
+
}
|
|
15
|
+
exports.detectAllLanguages = detectAllLanguages;
|
|
16
|
+
function detectMainLanguage(text) {
|
|
17
|
+
const language = (0, tinyld_1.detectAll)(text, { only: languagesRange });
|
|
18
|
+
let mostAccurate = language.reduce((prev, current) => (prev.accuracy > current.accuracy ? prev : current));
|
|
19
|
+
return mostAccurate;
|
|
20
|
+
}
|
|
21
|
+
exports.detectMainLanguage = detectMainLanguage;
|
package/dist/lib/mapping.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { QWCUI_Selectors } from './selectors';
|
|
2
|
+
declare let mapping: {
|
|
3
|
+
[key: string]: string[];
|
|
3
4
|
};
|
|
4
|
-
|
|
5
|
+
declare function generateMappings(uiSelectors: QWCUI_Selectors): {
|
|
6
|
+
[key: string]: string[];
|
|
7
|
+
};
|
|
8
|
+
export { generateMappings, mapping };
|
|
5
9
|
//# sourceMappingURL=mapping.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/lib/mapping.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/lib/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,QAAA,IAAI,OAAO,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAUrC,CAAC;AAEF,iBAAS,gBAAgB,CAAC,WAAW,EAAE,eAAe,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAiBnF;AAED,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/lib/mapping.js
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.mapping = exports.generateMappings = void 0;
|
|
4
|
+
let mapping = {
|
|
5
|
+
QW_CC_MIC: ['QW-CUI-C1'],
|
|
6
|
+
QW_CC_MESSAGES: ['QW-CUI-C2', 'QW-CUI-C4'],
|
|
7
|
+
"[qw-cui-question]": ['QW-CUI-C5'],
|
|
8
|
+
"[qw-cui-currency]": ['QW-CUI-C6'],
|
|
9
|
+
"[qw-cui-date]": ['QW-CUI-C3'],
|
|
10
|
+
"[qw-cui-unit]": ['QW-CUI-C7'],
|
|
11
|
+
"[qw-cui-services-list]": ['QW-CUI-C8'],
|
|
12
|
+
"[qw-cui-privacy-terms]": ['QW-CUI-C9'],
|
|
13
|
+
"[qw-cui-human-assistance]": ['QW-CUI-C10']
|
|
5
14
|
};
|
|
15
|
+
exports.mapping = mapping;
|
|
16
|
+
function generateMappings(uiSelectors) {
|
|
17
|
+
if (!uiSelectors) {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
return Object.entries(mapping).reduce((acc, [key, value]) => {
|
|
21
|
+
if (key in uiSelectors) {
|
|
22
|
+
acc[uiSelectors.QW_CC_WINDOW + ' ' + uiSelectors[key]] = value;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
acc[uiSelectors.QW_CC_WINDOW + ' ' + key] = value;
|
|
26
|
+
}
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
}
|
|
30
|
+
exports.generateMappings = generateMappings;
|