@sap_oss/wdio-qmate-service 2.12.2 → 2.13.1

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 (75) hide show
  1. package/docs/doc.md +140 -7
  2. package/docs/index.md +1 -1
  3. package/docs/sections/bestPractices/authentication.md +2 -2
  4. package/docs/sections/bestPractices/dataHandling.md +1 -1
  5. package/docs/sections/contact.md +1 -1
  6. package/docs/sections/features/config.md +1 -1
  7. package/docs/sections/features/dataHandling.md +2 -2
  8. package/docs/sections/features/selectors.md +2 -2
  9. package/docs/sections/gettingStarted/config.md +1 -1
  10. package/docs/sections/gettingStarted/setup.md +2 -2
  11. package/docs/sections/support/bugReporting.md +4 -4
  12. package/docs/sections/support/troubleshooting.md +1 -1
  13. package/lib/index.js +5 -2
  14. package/lib/index.js.map +1 -1
  15. package/lib/reuse/index.js +2 -1
  16. package/lib/reuse/index.js.map +1 -1
  17. package/lib/reuse/modules/flp/userLocks.d.ts +3 -3
  18. package/lib/reuse/modules/flp/userLocks.js +5 -5
  19. package/lib/reuse/modules/flp/userLocks.js.map +1 -1
  20. package/lib/reuse/modules/util/Util.d.ts +2 -0
  21. package/lib/reuse/modules/util/Util.js +2 -0
  22. package/lib/reuse/modules/util/Util.js.map +1 -1
  23. package/lib/reuse/modules/util/userSettings.d.ts +27 -0
  24. package/lib/reuse/modules/util/userSettings.js +181 -0
  25. package/lib/reuse/modules/util/userSettings.js.map +1 -0
  26. package/lib/scripts/hooks/onComplete.d.ts +1 -1
  27. package/lib/scripts/hooks/onComplete.js +14 -1
  28. package/lib/scripts/hooks/onComplete.js.map +1 -1
  29. package/lib/scripts/hooks/onPrepare.d.ts +1 -1
  30. package/lib/scripts/hooks/onPrepare.js +33 -2
  31. package/lib/scripts/hooks/onPrepare.js.map +1 -1
  32. package/lib/scripts/stats/createUsage.d.ts +11 -0
  33. package/lib/scripts/stats/createUsage.js +33 -0
  34. package/lib/scripts/stats/createUsage.js.map +1 -0
  35. package/lib/scripts/stats/getConfigurationInformation.d.ts +1 -0
  36. package/lib/scripts/stats/getConfigurationInformation.js +57 -0
  37. package/lib/scripts/stats/getConfigurationInformation.js.map +1 -0
  38. package/lib/scripts/stats/getEnvironment.d.ts +1 -0
  39. package/lib/scripts/stats/getEnvironment.js +8 -0
  40. package/lib/scripts/stats/getEnvironment.js.map +1 -0
  41. package/lib/scripts/stats/getOperatingSystem.d.ts +3 -0
  42. package/lib/scripts/stats/getOperatingSystem.js +39 -0
  43. package/lib/scripts/stats/getOperatingSystem.js.map +1 -0
  44. package/lib/scripts/stats/getRepositoryInformation.d.ts +1 -0
  45. package/lib/scripts/stats/getRepositoryInformation.js +49 -0
  46. package/lib/scripts/stats/getRepositoryInformation.js.map +1 -0
  47. package/lib/scripts/stats/getUserId.d.ts +1 -0
  48. package/lib/scripts/stats/getUserId.js +75 -0
  49. package/lib/scripts/stats/getUserId.js.map +1 -0
  50. package/lib/scripts/stats/getVersion.d.ts +1 -0
  51. package/lib/scripts/stats/getVersion.js +7 -0
  52. package/lib/scripts/stats/getVersion.js.map +1 -0
  53. package/lib/scripts/stats/stats.d.ts +2 -0
  54. package/lib/scripts/stats/stats.js +41 -0
  55. package/lib/scripts/stats/stats.js.map +1 -0
  56. package/lib/scripts/stats/updateUsage.d.ts +3 -0
  57. package/lib/scripts/stats/updateUsage.js +28 -0
  58. package/lib/scripts/stats/updateUsage.js.map +1 -0
  59. package/package.json +9 -4
  60. package/test/reuse/flp/userLocks/data/data.json +3 -3
  61. package/test/reuse/flp/userLocks/deleteExistingLockEntries.spec.js +18 -0
  62. package/test/reuse/flp/userLocks/getNumberOfLockEntries.spec.js +1 -0
  63. package/test/reuse/util/userSettings/data/data.json +6 -0
  64. package/test/reuse/util/userSettings/getDateFormatFromUserSettings.spec.js +21 -0
  65. package/test/reuse/util/userSettings/getLanguageFromUserSettings.spec.js +15 -0
  66. package/test/reuse/util/userSettings/getTimeFormatFromUserSettings.spec.js +17 -0
  67. package/test/reuse/util/userSettings/getTimeZoneFromUserSettings.spec.js +16 -0
  68. package/test/reuse/util/userSettings/setDateFormatFromUserSettings.spec.js +33 -0
  69. package/test/reuse/util/userSettings/setLanguageFromUserSettings.spec.js +16 -0
  70. package/test/reuse/util/userSettings/setNumberFormatFromUserSettings.spec.js +16 -0
  71. package/test/reuse/util/userSettings/setS4UserSettings.spec.js +37 -0
  72. package/test/reuse/util/userSettings/setTimeFormatFromUserSettings.spec.js +17 -0
  73. package/test/reuse/util/userSettings/setTimeZoneFromUserSettings.spec.js +16 -0
  74. package/test/reuse/util/userSettings/test.userSettings.apply.conf.js +16 -0
  75. package/test/reuse/util/userSettings/test.userSettings.conf.js +24 -0
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserSettings = void 0;
4
+ const verboseLogger_1 = require("../../helper/verboseLogger");
5
+ /**
6
+ * @class userSettings
7
+ * @memberof util
8
+ */
9
+ class UserSettings {
10
+ constructor() {
11
+ this.vlf = new verboseLogger_1.VerboseLoggerFactory("util", "userSettings");
12
+ this._srvInstance = null;
13
+ }
14
+ async initS4UserSettingService(user, password) {
15
+ if (!this._srvInstance) {
16
+ const vl = this.vlf.initLog(await this.initS4UserSettingService);
17
+ const params = browser.config.params;
18
+ if (params?.systemUrl) {
19
+ try {
20
+ this._srvInstance = await service.odata.init(`${params.systemUrl}/sap/opu/odata/UI2/INTEROP`, user, password);
21
+ }
22
+ catch (error) {
23
+ if (error instanceof Error) {
24
+ throw new Error(`Failed to initialize S4 User Setting Service: ${error.message}.`);
25
+ }
26
+ else {
27
+ throw new Error("Failed to initialize S4 User Setting Service.");
28
+ }
29
+ }
30
+ }
31
+ else {
32
+ throw new Error("System URL is missing in the config file.");
33
+ }
34
+ }
35
+ }
36
+ async setLanguageFromUserSettings(user, password) {
37
+ const vl = this.vlf.initLog(this.setLanguageFromUserSettings);
38
+ await this.initS4UserSettingService(user, password);
39
+ process.env.USER_SETTINGS_LANG_KEY = await this._getLanguageResponse(this._srvInstance);
40
+ util.console.info(`Language Key: ${process.env.USER_SETTINGS_LANG_KEY} was set.`);
41
+ }
42
+ async setDateFormatFromUserSettings(user, password) {
43
+ const vl = this.vlf.initLog(this.setDateFormatFromUserSettings);
44
+ await this.initS4UserSettingService(user, password);
45
+ process.env.USER_SETTINGS_DATE_FORMAT = await this._getDateFormatsResponse(this._srvInstance); //removes: the whitespace characters 0-* and the brackets including the content of the brackets.
46
+ util.console.info(`Date Format: ${process.env.USER_SETTINGS_DATE_FORMAT} was set.`);
47
+ }
48
+ async setTimeFormatFromUserSettings(user, password) {
49
+ const vl = this.vlf.initLog(this.setTimeFormatFromUserSettings);
50
+ await this.initS4UserSettingService(user, password);
51
+ process.env.USER_SETTINGS_TIME_FORMAT = await this._getTimeFormatResponse(this._srvInstance);
52
+ util.console.info(`Time Format: ${process.env.USER_SETTINGS_TIME_FORMAT} was set.`);
53
+ }
54
+ async setTimeZoneFromUserSettings(user, password) {
55
+ const vl = this.vlf.initLog(this.setTimeZoneFromUserSettings);
56
+ await this.initS4UserSettingService(user, password);
57
+ const res = await service.odata.get(this._srvInstance, "UserProfileProperties", { id: "TIME_ZONE", shellType: "FLP" });
58
+ process.env.USER_SETTINGS_TIME_ZONE = await this._getTimeZoneResponse(this._srvInstance);
59
+ util.console.info(`Time Zone: ${process.env.USER_SETTINGS_TIME_ZONE} was set.`);
60
+ }
61
+ async setNumberFormatFromUserSettings(user, password) {
62
+ const vl = this.vlf.initLog(this.setNumberFormatFromUserSettings);
63
+ await this.initS4UserSettingService(user, password);
64
+ process.env.USER_SETTINGS_NUMBER_FORMAT = await this._getNumberFormatResponse(this._srvInstance);
65
+ util.console.info(`Number Format: ${process.env.USER_SETTINGS_NUMBER_FORMAT} was set.`);
66
+ }
67
+ async setS4UserSettings(user, password) {
68
+ const vl = this.vlf.initLog(this.setS4UserSettings);
69
+ try {
70
+ await this.initS4UserSettingService(user, password);
71
+ await this.setDateFormatFromUserSettings(user, password);
72
+ await this.setLanguageFromUserSettings(user, password);
73
+ await this.setNumberFormatFromUserSettings(user, password);
74
+ await this.setTimeFormatFromUserSettings(user, password);
75
+ await this.setTimeZoneFromUserSettings(user, password);
76
+ }
77
+ catch (error) {
78
+ vl.log(`Function: 'setUserSettingsForS4' failed: Unable to set the UserSettings: ${error}`);
79
+ }
80
+ }
81
+ async getLanguageFromUserSettings(user, password) {
82
+ const vl = this.vlf.initLog(this.getLanguageFromUserSettings);
83
+ await this.initS4UserSettingService(user, password);
84
+ return await this._getLanguageResponse(this._srvInstance);
85
+ }
86
+ async getDateFormatFromUserSettings(user, password) {
87
+ const vl = this.vlf.initLog(this.getDateFormatFromUserSettings);
88
+ await this.initS4UserSettingService(user, password);
89
+ return await this._getDateFormatsResponse(this._srvInstance);
90
+ }
91
+ async getTimeFormatFromUserSettings(user, password) {
92
+ const vl = this.vlf.initLog(this.getTimeFormatFromUserSettings);
93
+ await this.initS4UserSettingService(user, password);
94
+ return await this._getTimeFormatResponse(this._srvInstance);
95
+ }
96
+ async getTimeZoneFromUserSettings(user, password) {
97
+ const vl = this.vlf.initLog(this.getTimeZoneFromUserSettings);
98
+ await this.initS4UserSettingService(user, password);
99
+ return await this._getTimeZoneResponse(this._srvInstance);
100
+ }
101
+ async getNumberFormatFromUserSettings(user, password) {
102
+ const vl = this.vlf.initLog(this.getNumberFormatFromUserSettings);
103
+ return await this._getNumberFormatResponse(this._srvInstance);
104
+ }
105
+ async _getTimeZoneResponse(srvInstance) {
106
+ try {
107
+ const res = await service.odata.get(srvInstance, "UserProfileProperties", { id: "TIME_ZONE", shellType: "FLP" });
108
+ return res.value.replace("/", ", ");
109
+ }
110
+ catch (error) {
111
+ if (error instanceof Error) {
112
+ throw new Error(`Failed to get Time Zone from User Settings: ${error.message}.`);
113
+ }
114
+ else {
115
+ throw new Error("Failed to get Time Zone from User Settings.");
116
+ }
117
+ }
118
+ }
119
+ async _getTimeFormatResponse(srvInstance) {
120
+ try {
121
+ const res = await service.odata.get(srvInstance, "UserProfileProperties", { id: "TIME_FORMAT", shellType: "FLP" });
122
+ const resUserData = await service.odata.get(this._srvInstance, "UserProfilePropertyValues", { id: "TIME_FORMAT", shellType: "FLP", value: res.value });
123
+ return resUserData.description.replace(/\s*\(.*?\)$/, "");
124
+ }
125
+ catch (error) {
126
+ if (error instanceof Error) {
127
+ throw new Error(`Failed to get Time Format from User Settings: ${error.message}.`);
128
+ }
129
+ else {
130
+ throw new Error("Failed to get Time Format from User Settings.");
131
+ }
132
+ }
133
+ }
134
+ async _getDateFormatsResponse(srvInstance) {
135
+ try {
136
+ const res = await service.odata.get(srvInstance, "UserProfileProperties", { id: "DATE_FORMAT", shellType: "FLP" });
137
+ const resUserData = await service.odata.get(this._srvInstance, "UserProfilePropertyValues", { id: "DATE_FORMAT", shellType: "FLP", value: res.value });
138
+ return resUserData.description.replace(/\s*\(.*?\)$/, "");
139
+ }
140
+ catch (error) {
141
+ if (error instanceof Error) {
142
+ throw new Error(`Failed to get Date Format from User Settings: ${error.message}.`);
143
+ }
144
+ else {
145
+ throw new Error("Failed to get Date Format from User Settings.");
146
+ }
147
+ }
148
+ }
149
+ async _getLanguageResponse(srvInstance) {
150
+ try {
151
+ const res = await service.odata.get(srvInstance, "UserProfileProperties", { id: "LANGUAGE", shellType: "FLP" });
152
+ return res.value;
153
+ }
154
+ catch (error) {
155
+ if (error instanceof Error) {
156
+ throw new Error(`Failed to get Language from User Settings: ${error.message}.`);
157
+ }
158
+ else {
159
+ throw new Error("Failed to get Language from User Settings.");
160
+ }
161
+ }
162
+ }
163
+ async _getNumberFormatResponse(srvInstance) {
164
+ try {
165
+ const res = await service.odata.get(srvInstance, "UserProfileProperties", { id: "NUMBER_FORMAT", shellType: "FLP" });
166
+ const resUserData = await service.odata.get(srvInstance, "UserProfilePropertyValues", { id: "NUMBER_FORMAT", shellType: "FLP", value: res.value });
167
+ return resUserData.description.replace(/\s*\(.*?\)$/, "");
168
+ }
169
+ catch (error) {
170
+ if (error instanceof Error) {
171
+ throw new Error(`Failed to get Number Format from User Settings: ${error.message}.`);
172
+ }
173
+ else {
174
+ throw new Error("Failed to get Number Format from User Settings.");
175
+ }
176
+ }
177
+ }
178
+ }
179
+ exports.UserSettings = UserSettings;
180
+ exports.default = new UserSettings();
181
+ //# sourceMappingURL=userSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userSettings.js","sourceRoot":"","sources":["../../../../src/reuse/modules/util/userSettings.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,4 @@
6
6
  * @param {Array.<Object>} capabilities list of capabilities details
7
7
  * @param {<Object>} results object containing test results
8
8
  */
9
- export default function (exitCode: any, config: any, capabilities: any, results: any): Promise<void>;
9
+ export default function (exitCode: any, config: any, capabilities: any, results: any, statsUsageId: string | null): Promise<void>;
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = default_1;
7
7
  const dataExchangeCommands_1 = __importDefault(require("./utils/dataExchangeCommands"));
8
+ const stats_1 = require("../stats/stats");
8
9
  /**
9
10
  * Gets executed after all workers got shut down and the process is about to exit. An error
10
11
  * thrown in the onComplete hook will result in the test run failing.
@@ -13,8 +14,20 @@ const dataExchangeCommands_1 = __importDefault(require("./utils/dataExchangeComm
13
14
  * @param {Array.<Object>} capabilities list of capabilities details
14
15
  * @param {<Object>} results object containing test results
15
16
  */
16
- async function default_1(exitCode, config, capabilities, results) {
17
+ async function default_1(exitCode, config, capabilities, results, statsUsageId) {
17
18
  await dataExchangeCommands_1.default.writeExportData();
19
+ if (statsUsageId !== null) {
20
+ if (config.params && config.params.qmateStatsOptions) {
21
+ if (!config.params.qmateStatsOptions.optOut) {
22
+ if (exitCode === 0) {
23
+ (0, stats_1.updateUsageRequests)(statsUsageId, 'success');
24
+ }
25
+ else if (exitCode === 1) {
26
+ (0, stats_1.updateUsageRequests)(statsUsageId, 'fail');
27
+ }
28
+ }
29
+ }
30
+ }
18
31
  }
19
32
  ;
20
33
  //# sourceMappingURL=onComplete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onComplete.js","sourceRoot":"","sources":["../../../src/scripts/hooks/onComplete.ts"],"names":[],"mappings":";;;;;AAWA,4BAEC;AAbD,wFAAgE;AAEhE;;;;;;;GAOG;AAEY,KAAK,oBAAW,QAAa,EAAE,MAAW,EAAE,YAAiB,EAAE,OAAY;IACxF,MAAM,8BAAoB,CAAC,eAAe,EAAE,CAAC;AAC/C,CAAC;AAAA,CAAC"}
1
+ {"version":3,"file":"onComplete.js","sourceRoot":"","sources":["../../../src/scripts/hooks/onComplete.ts"],"names":[],"mappings":";;;;;AAYA,4BAaC;AAzBD,wFAAgE;AAChE,0CAAqD;AAErD;;;;;;;GAOG;AAEY,KAAK,oBAAW,QAAa,EAAE,MAAW,EAAE,YAAiB,EAAE,OAAY,EAAE,YAA2B;IACrH,MAAM,8BAAoB,CAAC,eAAe,EAAE,CAAC;IAC7C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnB,IAAA,2BAAmB,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gBAC/C,CAAC;qBAAM,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAA,2BAAmB,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAAA,CAAC"}
@@ -3,4 +3,4 @@
3
3
  * @param {Object} config wdio configuration object
4
4
  * @param {Array.<Object>} capabilities list of capabilities details
5
5
  */
6
- export default function (config: any, capabilities: Array<object>): Promise<void>;
6
+ export default function (config: any, capabilities: Array<object>, callbackStatsUsageId: (statsUsageId: string) => void): Promise<void>;
@@ -5,21 +5,52 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = default_1;
7
7
  const path = require("path");
8
+ const stats_1 = require("../stats/stats");
8
9
  const dataExchangeCommands_1 = __importDefault(require("./utils/dataExchangeCommands"));
9
10
  /**
10
11
  * Gets executed once before all workers get launched.
11
12
  * @param {Object} config wdio configuration object
12
13
  * @param {Array.<Object>} capabilities list of capabilities details
13
14
  */
14
- async function default_1(config, capabilities) {
15
+ async function default_1(config, capabilities, callbackStatsUsageId) {
16
+ // Set the CONFIG_PATH environment variable to the directory of the config file
15
17
  if (!process.env.CONFIG_PATH) {
16
18
  process.env.CONFIG_PATH = path.dirname(config._[0]);
17
19
  }
20
+ const specCounter = config.specs ? countNestedArrayElements(config.specs) : 0;
21
+ // Send usage requests
22
+ if (config.params && config.params.qmateStatsOptions) {
23
+ if (!config.params.qmateStatsOptions.optOut) {
24
+ try {
25
+ (0, stats_1.sendUsageRequests)(specCounter).then((res) => {
26
+ if (res != null) {
27
+ callbackStatsUsageId(res);
28
+ }
29
+ });
30
+ }
31
+ catch (error) {
32
+ // Intentionally left empty -> call only succeeds when done SAP internally
33
+ }
34
+ }
35
+ }
36
+ // Set Qmate custom timeouts
18
37
  if (config.params && config.params.qmateCustomTimeout) {
19
38
  process.env.QMATE_CUSTOM_TIMEOUT = config.params.qmateCustomTimeout;
20
39
  process.env.LOAD_PROPERTY_TIMEOUT = config.params.loadPropertyTimeout;
21
40
  }
41
+ // Create a temporary data folder
22
42
  await dataExchangeCommands_1.default.createTmpDataFolder();
23
43
  }
24
- ;
44
+ function countNestedArrayElements(arr) {
45
+ let count = 0;
46
+ for (const element of arr) {
47
+ if (Array.isArray(element)) {
48
+ count += countNestedArrayElements(element);
49
+ }
50
+ else {
51
+ count++;
52
+ }
53
+ }
54
+ return count;
55
+ }
25
56
  //# sourceMappingURL=onPrepare.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onPrepare.js","sourceRoot":"","sources":["../../../src/scripts/hooks/onPrepare.ts"],"names":[],"mappings":";;;;;AAQA,4BAUC;AAlBD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,wFAAgE;AAEhE;;;;GAIG;AACY,KAAK,oBAAW,MAAW,EAAE,YAA2B;IACrE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAExE,CAAC;IACD,MAAM,8BAAoB,CAAC,mBAAmB,EAAE,CAAC;AACnD,CAAC;AAAA,CAAC"}
1
+ {"version":3,"file":"onPrepare.js","sourceRoot":"","sources":["../../../src/scripts/hooks/onPrepare.ts"],"names":[],"mappings":";;;;;AASA,4BA+BC;AAxCD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,0CAAmD;AACnD,wFAAgE;AAEhE;;;;GAIG;AACY,KAAK,oBAAW,MAAW,EAAE,YAA2B,EAAE,oBAAoD;IAC3H,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,sBAAsB;IACtB,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAA,yBAAiB,EAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;wBAChB,oBAAoB,CAAC,GAAG,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0EAA0E;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACxE,CAAC;IAED,iCAAiC;IACjC,MAAM,8BAAoB,CAAC,mBAAmB,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAU;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare function createUsage(usageData: {
2
+ userId: string;
3
+ version: string;
4
+ osType: string;
5
+ osRelease: string;
6
+ osVersion: string;
7
+ environment: string[];
8
+ configHash: string;
9
+ repoHash: string | null;
10
+ specCounter: number;
11
+ }): Promise<string | null>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUsage = createUsage;
4
+ const undici_1 = require("undici");
5
+ async function createUsage(usageData) {
6
+ const urlUsage = "https://stats.qmate.proc.only.sap/api/usage/qmate";
7
+ try {
8
+ const response = await (0, undici_1.fetch)(urlUsage, {
9
+ method: "POST",
10
+ headers: {
11
+ "Content-Type": "application/json",
12
+ },
13
+ body: JSON.stringify(usageData),
14
+ dispatcher: new undici_1.Agent({
15
+ connect: {
16
+ rejectUnauthorized: false,
17
+ }
18
+ })
19
+ });
20
+ if (!response.ok) {
21
+ return null;
22
+ }
23
+ else {
24
+ const responseText = await response.text();
25
+ const responseData = JSON.parse(responseText);
26
+ return responseData.id;
27
+ }
28
+ }
29
+ catch (error) {
30
+ return null;
31
+ }
32
+ }
33
+ //# sourceMappingURL=createUsage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUsage.js","sourceRoot":"","sources":["../../../src/scripts/stats/createUsage.ts"],"names":[],"mappings":";;AAEA,kCAoCC;AAtCD,mCAAsC;AAE/B,KAAK,UAAU,WAAW,CAAC,SAUjC;IACC,MAAM,QAAQ,GAAG,mDAAmD,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAK,EAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/B,UAAU,EAAE,IAAI,cAAK,CAAC;gBACpB,OAAO,EAAE;oBACP,kBAAkB,EAAE,KAAK;iBAC1B;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,YAAY,CAAC,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getConfigurationHash(): string;
@@ -0,0 +1,57 @@
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.getConfigurationHash = getConfigurationHash;
7
+ const child_process_1 = require("child_process");
8
+ const sha_js_1 = __importDefault(require("sha.js"));
9
+ const path_1 = __importDefault(require("path"));
10
+ function azureGetGitRoot() {
11
+ if (process.env.BUILD_REPOSITORY_LOCALPATH) {
12
+ return process.env.BUILD_REPOSITORY_LOCALPATH;
13
+ }
14
+ else {
15
+ throw Error();
16
+ }
17
+ }
18
+ function getGitRoot() {
19
+ try {
20
+ return (0, child_process_1.execSync)("git rev-parse --show-toplevel").toString().trim();
21
+ }
22
+ catch (error) {
23
+ // Intentionally left blank
24
+ }
25
+ try {
26
+ return azureGetGitRoot();
27
+ }
28
+ catch (error) {
29
+ // Intentionally left blank
30
+ }
31
+ throw Error();
32
+ }
33
+ function getConfigurationHash() {
34
+ const FALLBACK_NO_CONFIG_HASH = "FALLBACK_NO_CONFIG_HASH";
35
+ const FALLBACK_NO_GIT_PATH = "FALLBACK_NO_GIT_PATH";
36
+ const FALLBACK_HASHING_FAILED = "FALLBACK_HASHING_FAILED";
37
+ if (process.env.CONFIG_PATH) {
38
+ const configPath = process.env.CONFIG_PATH;
39
+ try {
40
+ const gitRoot = getGitRoot();
41
+ const relativePath = path_1.default.relative(gitRoot, configPath);
42
+ try {
43
+ return (0, sha_js_1.default)("sha256").update(relativePath).digest("hex");
44
+ }
45
+ catch (error) {
46
+ return FALLBACK_HASHING_FAILED;
47
+ }
48
+ }
49
+ catch (error) {
50
+ return FALLBACK_NO_GIT_PATH;
51
+ }
52
+ }
53
+ else {
54
+ return FALLBACK_NO_CONFIG_HASH;
55
+ }
56
+ }
57
+ //# sourceMappingURL=getConfigurationInformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getConfigurationInformation.js","sourceRoot":"","sources":["../../../src/scripts/stats/getConfigurationInformation.ts"],"names":[],"mappings":";;;;;AA4BA,oDAqBC;AAjDD,iDAAyC;AACzC,oDAA2B;AAC3B,gDAAwB;AAExB,SAAS,eAAe;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,OAAO,IAAA,wBAAQ,EAAC,+BAA+B,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2BAA2B;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,OAAO,eAAe,EAAE,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2BAA2B;IAC7B,CAAC;IAED,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAgB,oBAAoB;IAClC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;IAC1D,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;IACpD,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;IAE1D,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,OAAO,IAAA,gBAAK,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,uBAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,oBAAoB,CAAC;QAC9B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,uBAAuB,CAAC;IACjC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getEnvironmentVariables(): string[];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnvironmentVariables = getEnvironmentVariables;
4
+ const ENVIRONMENT_VARIABLES = ["JENKINS_URL", "GITHUB_ACTIONS", "TF_BUILD", "QMATE_EXEC_CONFIG"];
5
+ function getEnvironmentVariables() {
6
+ return ENVIRONMENT_VARIABLES.filter((variableName) => process.env[variableName] !== undefined);
7
+ }
8
+ //# sourceMappingURL=getEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEnvironment.js","sourceRoot":"","sources":["../../../src/scripts/stats/getEnvironment.ts"],"names":[],"mappings":";;AAEA,0DAEC;AAJD,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAEjG,SAAgB,uBAAuB;IACrC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC;AACjG,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function getOperatingSystemType(): string;
2
+ export declare function getOperatingSystemRelease(): string;
3
+ export declare function getOperatingSystemVersion(): string;
@@ -0,0 +1,39 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getOperatingSystemType = getOperatingSystemType;
27
+ exports.getOperatingSystemRelease = getOperatingSystemRelease;
28
+ exports.getOperatingSystemVersion = getOperatingSystemVersion;
29
+ const os = __importStar(require("os"));
30
+ function getOperatingSystemType() {
31
+ return os.type();
32
+ }
33
+ function getOperatingSystemRelease() {
34
+ return os.release();
35
+ }
36
+ function getOperatingSystemVersion() {
37
+ return os.version();
38
+ }
39
+ //# sourceMappingURL=getOperatingSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOperatingSystem.js","sourceRoot":"","sources":["../../../src/scripts/stats/getOperatingSystem.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wDAEC;AAED,8DAEC;AAED,8DAEC;AAZD,uCAAyB;AAEzB,SAAgB,sBAAsB;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,SAAgB,yBAAyB;IACrC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC;AAED,SAAgB,yBAAyB;IACrC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getCwdGitRemoteUrlHash(): string;
@@ -0,0 +1,49 @@
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.getCwdGitRemoteUrlHash = getCwdGitRemoteUrlHash;
7
+ const child_process_1 = require("child_process");
8
+ const sha_js_1 = __importDefault(require("sha.js"));
9
+ function azureGetGitRemoteUrl() {
10
+ if (process.env.BUILD_REPOSITORY_URI) {
11
+ return process.env.BUILD_REPOSITORY_URI;
12
+ }
13
+ else {
14
+ throw Error();
15
+ }
16
+ }
17
+ function getGitRemoteUrl() {
18
+ try {
19
+ return (0, child_process_1.execSync)("git config --get remote.origin.url").toString().trim();
20
+ }
21
+ catch (error) {
22
+ // Intentionally left blank
23
+ }
24
+ try {
25
+ return azureGetGitRemoteUrl();
26
+ }
27
+ catch (error) {
28
+ // Intentionally left blank
29
+ }
30
+ throw Error();
31
+ }
32
+ function getCwdGitRemoteUrlHash() {
33
+ const FALLBACK_NO_GIT_ORIGIN_REMOTE = "FALLBACK_NO_GIT_ORIGIN_REMOTE";
34
+ const FALLBACK_HASHING_FAILED = "FALLBACK_HASHING_FAILED";
35
+ try {
36
+ const remoteUrl = getGitRemoteUrl();
37
+ try {
38
+ const remoteUrlHash = (0, sha_js_1.default)("sha256").update(remoteUrl).digest("hex");
39
+ return remoteUrlHash;
40
+ }
41
+ catch (error) {
42
+ return FALLBACK_HASHING_FAILED;
43
+ }
44
+ }
45
+ catch (error) {
46
+ return FALLBACK_NO_GIT_ORIGIN_REMOTE;
47
+ }
48
+ }
49
+ //# sourceMappingURL=getRepositoryInformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRepositoryInformation.js","sourceRoot":"","sources":["../../../src/scripts/stats/getRepositoryInformation.ts"],"names":[],"mappings":";;;;;AA2BA,wDAeC;AA1CD,iDAAyC;AACzC,oDAA2B;AAE3B,SAAS,oBAAoB;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,OAAO,IAAA,wBAAQ,EAAC,oCAAoC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2BAA2B;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,OAAO,oBAAoB,EAAE,CAAA;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2BAA2B;IAC7B,CAAC;IAED,MAAM,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAgB,sBAAsB;IACpC,MAAM,6BAA6B,GAAG,+BAA+B,CAAC;IACtE,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAA,gBAAK,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,uBAAuB,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,6BAA6B,CAAA;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getUserId(): Promise<string | null>;
@@ -0,0 +1,75 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getUserId = getUserId;
30
+ const os = __importStar(require("os"));
31
+ const path_1 = __importDefault(require("path"));
32
+ const node_localstorage_1 = require("node-localstorage");
33
+ const undici_1 = require("undici");
34
+ const localStorage = new node_localstorage_1.LocalStorage(path_1.default.join(os.homedir(), '.qmate-userId'));
35
+ async function getUserId() {
36
+ const urlUser = "https://stats.qmate.proc.only.sap/api/user";
37
+ if (isUserIdStored()) {
38
+ return getUserIdFromStore();
39
+ }
40
+ else {
41
+ try {
42
+ const response = await (0, undici_1.fetch)(urlUser, {
43
+ method: "POST",
44
+ dispatcher: new undici_1.Agent({
45
+ connect: {
46
+ rejectUnauthorized: false,
47
+ }
48
+ })
49
+ });
50
+ if (!response.ok) {
51
+ console.log(`Failed to create Qmate Stats User: ${response.status} ${response.statusText}`);
52
+ return null;
53
+ }
54
+ else {
55
+ const responseText = await response.text();
56
+ const responseData = JSON.parse(responseText);
57
+ saveUserIdToStore(responseData.id);
58
+ return responseData.id;
59
+ }
60
+ }
61
+ catch (error) {
62
+ return null;
63
+ }
64
+ }
65
+ }
66
+ function isUserIdStored() {
67
+ return localStorage.getItem("UserId") !== null;
68
+ }
69
+ function saveUserIdToStore(userId) {
70
+ localStorage.setItem("UserId", userId);
71
+ }
72
+ function getUserIdFromStore() {
73
+ return localStorage.getItem("UserId");
74
+ }
75
+ //# sourceMappingURL=getUserId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUserId.js","sourceRoot":"","sources":["../../../src/scripts/stats/getUserId.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,8BA2BC;AAlCD,uCAAyB;AACzB,gDAAwB;AACxB,yDAAiD;AACjD,mCAAsC;AAEtC,MAAM,YAAY,GAAG,IAAI,gCAAY,CAAC,cAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;AAEzE,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,4CAA4C,CAAC;IAC7D,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAK,EAAC,OAAO,EAAE;gBACpC,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,IAAI,cAAK,CAAC;oBACpB,OAAO,EAAE;wBACP,kBAAkB,EAAE,KAAK;qBAC1B;iBACF,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,sCAAsC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC5F,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC9C,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACnC,OAAO,YAAY,CAAC,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getVersion(): string;