@zeesoft/i18n-verify 1.0.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.
Files changed (48) hide show
  1. package/dist/driver/adapters/cypress.js +160 -0
  2. package/dist/driver/adapters/nightwatch.js +95 -0
  3. package/dist/driver/adapters/selenium.js +94 -0
  4. package/dist/driver/adapters/webdriver.io.js +81 -0
  5. package/dist/driver/baseDriver.js +69 -0
  6. package/dist/driver/factory.js +27 -0
  7. package/dist/index.js +47 -0
  8. package/dist/lib/config.js +99 -0
  9. package/dist/lib/i18n.js +177 -0
  10. package/dist/lib/validator/base.js +125 -0
  11. package/dist/lib/validator/currency.js +94 -0
  12. package/dist/lib/validator/date.js +72 -0
  13. package/dist/lib/validator/datetime.js +72 -0
  14. package/dist/lib/validator/index.js +156 -0
  15. package/dist/lib/validator/number.js +58 -0
  16. package/dist/lib/validator/percentage.js +78 -0
  17. package/dist/lib/validator/string.js +172 -0
  18. package/dist/lib/validator/time.js +72 -0
  19. package/dist/utils/2Dgraphic.js +57 -0
  20. package/dist/utils/cache.js +47 -0
  21. package/dist/utils/common.js +18 -0
  22. package/dist/utils/configFile.js +64 -0
  23. package/dist/utils/constants.js +145 -0
  24. package/dist/utils/cypress.js +120 -0
  25. package/dist/utils/dateUtils/chronoNode.js +52 -0
  26. package/dist/utils/file.js +57 -0
  27. package/dist/utils/logs.js +61 -0
  28. package/dist/utils/objects/cacheData.js +91 -0
  29. package/dist/utils/objects/metaData.js +48 -0
  30. package/dist/utils/objects/reportData.js +48 -0
  31. package/dist/utils/objects/statData.js +365 -0
  32. package/dist/utils/objects/stringData.js +67 -0
  33. package/dist/utils/objects/stringInfo.js +51 -0
  34. package/dist/utils/regex.js +8 -0
  35. package/dist/utils/reportFactory/base.js +51 -0
  36. package/dist/utils/reportFactory/html/index.js +36 -0
  37. package/dist/utils/reportFactory/html/template/css.js +133 -0
  38. package/dist/utils/reportFactory/html/template/html.js +79 -0
  39. package/dist/utils/reportFactory/html/template/javascript.js +106 -0
  40. package/dist/utils/reportFactory/index.js +38 -0
  41. package/dist/utils/reports.js +120 -0
  42. package/dist/utils/reportsTable.js +71 -0
  43. package/dist/utils/resource.js +54 -0
  44. package/dist/utils/runtime.js +16 -0
  45. package/dist/utils/scripts/genreport.js +1 -0
  46. package/dist/utils/scripts/postinstall.js +21 -0
  47. package/package.json +59 -0
  48. package/readme.md +15 -0
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _cypress = require("../../utils/cypress.js");
8
+ var _baseDriver = _interopRequireDefault(require("../baseDriver.js"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class CypressDriver extends _baseDriver.default {
11
+ /**
12
+ *
13
+ * @param {this.$driver} driver
14
+ */
15
+ constructor(driver) {
16
+ super(driver);
17
+ }
18
+ async getElement(el) {
19
+ if (typeof el !== 'string') {
20
+ return this.$driver.wrap(el);
21
+ } else if (el.startsWith('//')) {
22
+ return await this.xpath(el).first();
23
+ } else {
24
+ return await this.$driver.get(el).first();
25
+ }
26
+ }
27
+ async getElements(el) {
28
+ if (typeof el !== 'string') {
29
+ return this.$driver.wrap(el);
30
+ } else if (el.startsWith('//')) {
31
+ return await this.xpath(el);
32
+ } else {
33
+ return await this.$driver.get(el);
34
+ }
35
+ }
36
+ async getText(el) {
37
+ return typeof el === 'string' ? await this.$driver.get(el).invoke('text') : await this.$driver.wrap(el).invoke('text');
38
+ }
39
+ async getTitle(el) {
40
+ return typeof el === 'string' ? await this.$driver.get(el).title() : this.$driver.wrap().title();
41
+ }
42
+ async getPlaceholderText(el) {
43
+ if (typeof el === 'string') {
44
+ return this.$driver.get(el).filter('input').invoke('attr', 'placeholder').then(placeholder => {
45
+ return placeholder;
46
+ });
47
+ } else {
48
+ return this.$driver.$$(el).attr('placeholder');
49
+ }
50
+ }
51
+ async getAltText(locator) {
52
+ return this.$driver.get(locator).invoke('attr', 'alt');
53
+ }
54
+ async getWidth(el) {
55
+ if (typeof el === 'string') {
56
+ return this.$driver.get(el).invoke('width');
57
+ } else {
58
+ return this.$driver.$$(el).width();
59
+ }
60
+ }
61
+ async getHeight(el) {
62
+ if (typeof el === 'string') {
63
+ return this.$driver.get(el).invoke('height');
64
+ } else {
65
+ return this.$driver.$$(el).height();
66
+ }
67
+ }
68
+ async getTagName(el) {
69
+ if (typeof el === 'string') {
70
+ return this.$driver.get(el).invoke('prop', 'tagName').then(tagName => tagName.toLowerCase());
71
+ } else {
72
+ return this.$driver.$$(el).tagName; // zTodo
73
+ }
74
+ }
75
+ async getValue(el) {
76
+ if (typeof el === 'string') {
77
+ return this.$driver.get(el).invoke('val');
78
+ } else {
79
+ return this.$driver.wrap(el).invoke('val');
80
+ }
81
+ }
82
+ async getLocation(el) {
83
+ if (typeof el === 'string') {
84
+ return this.$driver.get(el).invoke('offset').then(offset => {
85
+ return {
86
+ x: offset.left,
87
+ y: offset.top
88
+ };
89
+ });
90
+ } else {
91
+ const offset = this.$driver.$$(el).offset();
92
+ return {
93
+ x: offset.left,
94
+ y: offset.top
95
+ };
96
+ }
97
+ }
98
+ async isElementDisplayed(el) {
99
+ if (typeof el === 'string') {
100
+ return this.$driver.get(el).then($element => {
101
+ return $element.is(':visible');
102
+ });
103
+ } else {
104
+ return this.$driver.$$(el).is(':visible');
105
+ }
106
+ }
107
+ async captureScreenshot(file) {
108
+ this.$driver.screenshot(file);
109
+ }
110
+ async getElementsCount(el) {
111
+ return new Promise(res => {
112
+ if (typeof el === 'string') {
113
+ return this.$driver.get(el).its('length').then(l => res(l));
114
+ } else {
115
+ return this.$driver.wrap(el, {
116
+ timeout: 8000
117
+ }).its('length').then(l => res(l));
118
+ }
119
+ });
120
+ }
121
+ async getElementStrings(el) {
122
+ const elementStrings = [];
123
+ try {
124
+ const textFields = [{
125
+ type: 'eleTxt',
126
+ value: await this.getText(el)
127
+ }, {
128
+ type: 'altTxt',
129
+ value: await this.getAltText(el)
130
+ },
131
+ // { type: 'titleTxt', value: await this.getTitle(el) },
132
+ {
133
+ type: 'placetxt',
134
+ value: await this.getPlaceholderText(el)
135
+ }];
136
+ textFields.forEach(({
137
+ value
138
+ }) => {
139
+ if (this.checkIfNullOrEmpty(value)) {
140
+ elementStrings.push(value);
141
+ }
142
+ });
143
+ } catch (textError) {
144
+ console.error('Error getting text of element:', textError);
145
+ }
146
+ return elementStrings;
147
+ }
148
+ printOnConsole(str) {
149
+ this.$driver.log(str);
150
+ }
151
+ xpath(subject, selector, options = {}) {
152
+ return (0, _cypress.xpath)({
153
+ subject,
154
+ selector,
155
+ options,
156
+ driver: this.$driver
157
+ });
158
+ }
159
+ }
160
+ exports.default = CypressDriver;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _baseDriver = _interopRequireDefault(require("../baseDriver.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ class NightWatchDriver extends _baseDriver.default {
10
+ constructor(driver) {
11
+ super(driver);
12
+ }
13
+ getElement(locator) {
14
+ return this.$driver.element.find({
15
+ selector: locator,
16
+ locateStrategy: locator.startsWith('/') ? 'xpath' : 'css selector'
17
+ });
18
+ }
19
+ async getElements(locator) {
20
+ return await this.$driver.element.findAll({
21
+ selector: locator,
22
+ locateStrategy: locator.startsWith('/') ? 'xpath' : 'css selector'
23
+ });
24
+ }
25
+ async getText(element) {
26
+ return await element.getText();
27
+ }
28
+ async getTitle(element) {
29
+ return await element.getAttribute('title');
30
+ }
31
+ async getPlaceholderText(element) {
32
+ return await element.getAttribute('placeholder');
33
+ }
34
+ async getAltText(element) {
35
+ return await element.getAttribute('alt');
36
+ }
37
+ async getTagName(element) {
38
+ return await element.getTagName();
39
+ }
40
+ async getValue(element) {
41
+ return await element.getAttribute('value');
42
+ }
43
+ async getElementDimension(element) {
44
+ const eleSize = await element.getRect();
45
+ if (![null, '', undefined].includes(eleSize)) {
46
+ return [eleSize.x, eleSize.y, eleSize.height, eleSize.width];
47
+ }
48
+ }
49
+ isElementDisplayed(element) {
50
+ return this.$driver.isVisible(element);
51
+ }
52
+ async getElementStrings(element) {
53
+ const elementStrings = [];
54
+ const textFields = [{
55
+ type: 'eleTxt',
56
+ value: await this.getText(element)
57
+ }, {
58
+ type: 'altTxt',
59
+ value: await this.getAltText(element)
60
+ }, {
61
+ type: 'titleTxt',
62
+ value: await this.getTitle(element)
63
+ }, {
64
+ type: 'placeTxt',
65
+ value: await this.getPlaceholderText(element)
66
+ }, {
67
+ type: 'valueTxt',
68
+ value: await this.getValue(element)
69
+ }];
70
+ textFields.forEach(({
71
+ value
72
+ }) => {
73
+ if (this.checkIfNullOrEmpty(value)) {
74
+ elementStrings.push(value);
75
+ }
76
+ });
77
+ return elementStrings;
78
+ }
79
+ async getElementString(element) {
80
+ let eleStr = null;
81
+ const textFunctions = [this.getText, this.getAltText, this.getTitle, this.getPlaceholderText, this.getValue];
82
+ for (const func of textFunctions) {
83
+ eleStr = await func(element);
84
+ if (eleStr !== null) return eleStr;
85
+ }
86
+ return eleStr;
87
+ }
88
+ async captureScreenshot(file) {
89
+ await this.$driver.saveScreenshot(file);
90
+ }
91
+ async getElementsCount(elements) {
92
+ return elements.length;
93
+ }
94
+ }
95
+ exports.default = NightWatchDriver;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _baseDriver = _interopRequireDefault(require("../baseDriver.js"));
8
+ var _fs = _interopRequireDefault(require("fs"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class SeleniumDriver extends _baseDriver.default {
11
+ constructor(driver) {
12
+ super(driver);
13
+ }
14
+ async getElement(locator) {
15
+ return await this.driver.findElement(locator);
16
+ }
17
+ async getElements(locator) {
18
+ return await this.driver.findElements(locator);
19
+ }
20
+ async getText(element) {
21
+ return await element.getText();
22
+ }
23
+ async getTitle() {
24
+ return await this.driver.getTitle();
25
+ }
26
+
27
+ // async getTitle(element) {
28
+ // return await element.getAttribute('title');
29
+ // }
30
+
31
+ // async getPlaceholderText(element, placeholder) {
32
+ // return await element.getAttribute(placeholder);
33
+ // }
34
+
35
+ // async getAltText(element, alt) {
36
+ // return await element.getAttribute(alt);
37
+ // }
38
+
39
+ async getAttribute(element, attributeName) {
40
+ return await element.getAttribute(attributeName);
41
+ }
42
+ async getTagName(element) {
43
+ return await element.getTagName();
44
+ }
45
+
46
+ // async getValue(element, value) {
47
+ // return await element.getAttribute(value);
48
+ // }
49
+
50
+ async getElementDimension(element) {
51
+ const eleSize = await element.getRect();
52
+ if (![null, '', undefined].includes(eleSize)) {
53
+ return [eleSize.x, eleSize.y, eleSize.height, eleSize.width];
54
+ }
55
+ }
56
+ async isElementDisplayed(element) {
57
+ return await element.isDisplayed();
58
+ }
59
+ async getElementStrings(element) {
60
+ const elementStrings = [];
61
+ const textFields = [{
62
+ type: 'eleTxt',
63
+ value: await this.getText(element)
64
+ }, {
65
+ type: 'altTxt',
66
+ value: await this.getAttribute(element, 'alt')
67
+ }, {
68
+ type: 'titleTxt',
69
+ value: await this.getAttribute(element, 'title')
70
+ }, {
71
+ type: 'placeTxt',
72
+ value: await this.getAttribute(element, 'placeholder')
73
+ }, {
74
+ type: 'valueTxt',
75
+ value: await this.getAttribute(element, 'value')
76
+ }];
77
+ textFields.forEach(({
78
+ value
79
+ }) => {
80
+ if (this.checkIfNullOrEmpty(value)) {
81
+ elementStrings.push(value);
82
+ }
83
+ });
84
+ return elementStrings;
85
+ }
86
+ async captureScreenshot(file) {
87
+ const screenshot = await this.driver.takeScreenshot();
88
+ _fs.default.writeFileSync(file, screenshot, 'base64');
89
+ }
90
+ async getElementsCount(elements) {
91
+ return elements.length;
92
+ }
93
+ }
94
+ exports.default = SeleniumDriver;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _baseDriver = _interopRequireDefault(require("../baseDriver.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ class WebDriverIoDriver extends _baseDriver.default {
10
+ constructor(driver) {
11
+ super(driver);
12
+ }
13
+ getElement(locator) {
14
+ return this.$driver.findElement('xpath', locator);
15
+ }
16
+ async getElements(locator) {
17
+ const eleArray = await this.$driver.findElements('xpath', locator);
18
+ return eleArray;
19
+ }
20
+ async getText(element) {
21
+ return await $(element).getText();
22
+ }
23
+ async getTitle(element) {
24
+ return await $(element).getAttribute('title');
25
+ }
26
+ async getPlaceholderText(element) {
27
+ return await $(element).getAttribute('placeholder');
28
+ }
29
+ async getAltText(element) {
30
+ return await $(element).getAttribute('alt');
31
+ }
32
+ async getTagName(element) {
33
+ return await $(element).getTagName();
34
+ }
35
+ async getValue(element) {
36
+ return await $(element).getValue();
37
+ }
38
+ async getElementDimension(element) {
39
+ const eleSize = await this.$driver.getElementRect(element['element-6066-11e4-a52e-4f735466cecf']);
40
+ if (![null, '', undefined].includes(eleSize)) {
41
+ return [eleSize.x, eleSize.y, eleSize.height, eleSize.width];
42
+ }
43
+ }
44
+ isElementDisplayed(element) {
45
+ return $(element).isDisplayed();
46
+ }
47
+ async getElementStrings(element) {
48
+ const elementStrings = [];
49
+ const textFields = [{
50
+ type: 'eleTxt',
51
+ value: await this.getText(element)
52
+ }, {
53
+ type: 'altTxt',
54
+ value: await this.getAltText(element)
55
+ }, {
56
+ type: 'titleTxt',
57
+ value: await this.getTitle(element)
58
+ }, {
59
+ type: 'placeTxt',
60
+ value: await this.getPlaceholderText(element)
61
+ }, {
62
+ type: 'valueTxt',
63
+ value: await this.getValue(element)
64
+ }];
65
+ textFields.forEach(({
66
+ value
67
+ }) => {
68
+ if (this.checkIfNullOrEmpty(value)) {
69
+ elementStrings.push(value);
70
+ }
71
+ });
72
+ return elementStrings;
73
+ }
74
+ async captureScreenshot(file) {
75
+ await this.$driver.saveScreenshot(file);
76
+ }
77
+ async getElementsCount(elements) {
78
+ return elements.length;
79
+ }
80
+ }
81
+ exports.default = WebDriverIoDriver;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ class BaseDriver {
8
+ constructor(driver) {
9
+ this.$driver = driver;
10
+ }
11
+ checkIfNullOrEmpty(value) {
12
+ return ![null, '', undefined].includes(value);
13
+ }
14
+ getElement() {
15
+ throw new Error('implementation is missing');
16
+ }
17
+ getElements() {
18
+ throw new Error('implementation is missing');
19
+ }
20
+ getText() {
21
+ throw new Error('implementation is missing');
22
+ }
23
+ getTitle() {
24
+ throw new Error('implementation is missing');
25
+ }
26
+ getPlaceholderText() {
27
+ throw new Error('implementation is missing');
28
+ }
29
+ getAltText() {
30
+ throw new Error('implementation is missing');
31
+ }
32
+ getWidth() {
33
+ throw new Error('implementation is missing');
34
+ }
35
+ getHeight() {
36
+ throw new Error('implementation is missing');
37
+ }
38
+ getTagName() {
39
+ throw new Error('implementation is missing');
40
+ }
41
+ getValue() {
42
+ throw new Error('implementation is missing');
43
+ }
44
+ getLocation() {
45
+ throw new Error('implementation is missing');
46
+ }
47
+ getElementDimension() {
48
+ throw new Error('implementation is missing');
49
+ }
50
+ isElementDisplayed() {
51
+ throw new Error('implementation is missing');
52
+ }
53
+ getElementString() {
54
+ throw new Error('implementation is missing');
55
+ }
56
+ getElementStrings() {
57
+ throw new Error('implementation is missing');
58
+ }
59
+ captureScreenshot() {
60
+ throw new Error('implementation is missing');
61
+ }
62
+ getElementsCount() {
63
+ throw new Error('implementation is missing');
64
+ }
65
+ printOnConsole(str) {
66
+ console.log(str);
67
+ }
68
+ }
69
+ exports.default = BaseDriver;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.build = void 0;
7
+ var _constants = require("../utils/constants.js");
8
+ var _nightwatch = _interopRequireDefault(require("./adapters/nightwatch.js"));
9
+ var _webdriverIo = _interopRequireDefault(require("./adapters/webdriver.io.js"));
10
+ var _cypress = _interopRequireDefault(require("./adapters/cypress.js"));
11
+ var _selenium = _interopRequireDefault(require("./adapters/selenium.js"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const build = (type, driver) => {
14
+ switch (type) {
15
+ case _constants.SYSTEM_TYPES.NIGHT_WATCH:
16
+ return new _nightwatch.default(driver);
17
+ case _constants.SYSTEM_TYPES.WEB_DRIVER_IO:
18
+ return new _webdriverIo.default(driver);
19
+ case _constants.SYSTEM_TYPES.CYPRESS:
20
+ return new _cypress.default(driver);
21
+ case _constants.SYSTEM_TYPES.SELENIUMJS:
22
+ return new _selenium.default(driver);
23
+ default:
24
+ throw new Error("Unsupported framework");
25
+ }
26
+ };
27
+ exports.build = build;
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.verify = exports.systems = exports.setLocale = exports.getReportCounts = exports.getLocale = exports.config = void 0;
7
+ var _i18n = _interopRequireDefault(require("./lib/i18n.js"));
8
+ var _constants = require("./utils/constants.js");
9
+ var _config = _interopRequireDefault(require("./lib/config.js"));
10
+ var _runtime = require("./utils/runtime.js");
11
+ var _reportsTable = _interopRequireDefault(require("./utils/reportsTable.js"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const config = (driver, locale) => {
14
+ _config.default.set(driver, locale);
15
+ (0, _runtime.loadDependencies)();
16
+ };
17
+ exports.config = config;
18
+ const setLocale = locale => {
19
+ _config.default.setLocale(locale);
20
+ };
21
+ exports.setLocale = setLocale;
22
+ const getReportCounts = () => {
23
+ _reportsTable.default.generateTable();
24
+ };
25
+ exports.getReportCounts = getReportCounts;
26
+ const getLocale = () => {
27
+ return _config.default.getLocale();
28
+ };
29
+ exports.getLocale = getLocale;
30
+ const verify = async ({
31
+ verificationArea,
32
+ staticLocators,
33
+ description
34
+ }) => {
35
+ const runner = _config.default.getRunner();
36
+ if (!runner || !(runner instanceof _i18n.default)) {
37
+ throw new Error('I18n runner is missing, make sure to set configuration');
38
+ }
39
+ await runner.verify({
40
+ verificationArea,
41
+ staticLocators,
42
+ description
43
+ });
44
+ };
45
+ exports.verify = verify;
46
+ _config.default.init();
47
+ const systems = exports.systems = _constants.SYSTEM_TYPES;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _factory = require("../driver/factory.js");
8
+ var _i18n = _interopRequireDefault(require("./i18n.js"));
9
+ var _constants = require("../utils/constants.js");
10
+ var _configFile = require("../utils/configFile.js");
11
+ var _logs = _interopRequireDefault(require("../utils/logs.js"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ class Config {
14
+ static #driver;
15
+ static #runner;
16
+ static #type;
17
+ static #locale;
18
+ static #qaLocale;
19
+ static #options;
20
+ static #resources;
21
+ static #ssCount;
22
+ static init() {
23
+ try {
24
+ const config = (0, _configFile.readConfigFile)();
25
+ (0, _configFile.validateConfig)(config);
26
+ this.#type = config?.type;
27
+ this.#qaLocale = config?.qaLocale;
28
+ this.#options = config;
29
+ this.#ssCount = 0;
30
+ this.getGarbledChars();
31
+ } catch (ex) {
32
+ _logs.default.error(ex.message);
33
+ throw ex;
34
+ }
35
+ }
36
+ static set(driver, locale) {
37
+ this.#locale = locale;
38
+ this.#driver = (0, _factory.build)(this.#type, driver);
39
+ }
40
+ static getGarbledChars() {
41
+ return [...(this.#options.garbledChars || []), ..._constants.GARBLED_CHARACTERS];
42
+ }
43
+ static setDriver(driver) {
44
+ this.#driver = driver;
45
+ }
46
+ static setType(type) {
47
+ this.#type = type;
48
+ }
49
+ static setLocale(locale) {
50
+ this.#locale = locale;
51
+ }
52
+ static setOptions(options) {
53
+ this.#options = options;
54
+ }
55
+ static getRunner() {
56
+ if (Config.#runner) {
57
+ return Config.#runner;
58
+ }
59
+ if (!Config.#driver) {
60
+ throw new Error('Unable to initialize I18n Runner');
61
+ }
62
+ this.#runner = new _i18n.default(this.#driver);
63
+ return this.#runner;
64
+ }
65
+ static getDriver() {
66
+ return this.#driver;
67
+ }
68
+ static getLocale() {
69
+ return this.#locale;
70
+ }
71
+ static getDefaultLocale() {
72
+ return this.#options.defaultLocale;
73
+ }
74
+ static getType() {
75
+ return this.#type;
76
+ }
77
+ static getOptions() {
78
+ return this.#options;
79
+ }
80
+ static setQALocale(locale) {
81
+ this.#qaLocale = locale;
82
+ }
83
+ static getQALocale() {
84
+ return this.#qaLocale;
85
+ }
86
+ static setResourceBundle(resources) {
87
+ this.#resources = resources;
88
+ }
89
+ static getResourceBundle(value) {
90
+ return this.#resources?.[value] || this.#resources || [];
91
+ }
92
+ static incrementCounter() {
93
+ this.#ssCount++;
94
+ }
95
+ static getSSCount() {
96
+ return this.#ssCount;
97
+ }
98
+ }
99
+ exports.default = Config;