@zohodesk/testinglibrary 2.9.8 → 2.9.10

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.
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _page = require("./page");
8
+ var _default = exports.default = {
9
+ executionContext: async ({
10
+ $tags
11
+ }, use) => {
12
+ let testPortalActorDetails = {
13
+ actorInfo: (0, _page.getCustomAccountDetails)($tags)
14
+ };
15
+ await use(testPortalActorDetails);
16
+ }
17
+ };
@@ -11,6 +11,7 @@ var _cacheLayer = _interopRequireDefault(require("./cacheLayer"));
11
11
  var _addTags = _interopRequireDefault(require("./addTags"));
12
12
  var _i18N = _interopRequireDefault(require("./i18N"));
13
13
  var _unauthenticatedPage = _interopRequireDefault(require("./unauthenticatedPage"));
14
+ var _executionContext = _interopRequireDefault(require("./executionContext"));
14
15
  function extractTagsFromTitle(text) {
15
16
  return text.match(/@\w+/g) || [];
16
17
  }
@@ -20,7 +21,8 @@ function getBuiltInFixtures(bddMode) {
20
21
  ..._context.default,
21
22
  ..._cacheLayer.default,
22
23
  ..._i18N.default,
23
- ..._unauthenticatedPage.default
24
+ ..._unauthenticatedPage.default,
25
+ ..._executionContext.default
24
26
  };
25
27
  if (bddMode) {
26
28
  builtInFixtures = {
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ exports.getCustomAccountDetails = getCustomAccountDetails;
7
8
  var _auth = require("../helpers/auth");
8
9
  var _readConfigFile = require("../readConfigFile");
9
10
  /* eslint-disable global-require */
@@ -57,9 +58,10 @@ var _default = exports.default = {
57
58
  page: async ({
58
59
  context,
59
60
  $tags,
60
- page
61
+ page,
62
+ executionContext
61
63
  }, use, testInfo) => {
62
- let testPortalDetails = getCustomAccountDetails($tags);
64
+ let testPortalDetails = executionContext.actorInfo;
63
65
  let testDetails = {
64
66
  page,
65
67
  $tags,
@@ -24,11 +24,7 @@ function getAuthFileDirectory() {
24
24
  return _path.default.resolve(_path.default.join(uatDirectory, 'playwright', '.auth'));
25
25
  }
26
26
  function verifyIfCookieFileExists(authFile) {
27
- (0, _checkAuthDirectory.createAuthDirectoryIfNotExist)();
28
- if (!(0, _fs.existsSync)(authFile)) {
29
- console.log('creating auth file..');
30
- (0, _fs.writeFileSync)(authFile, JSON.stringify(authContent, null, 2));
31
- }
27
+ return (0, _fs.existsSync)(authFile);
32
28
  }
33
29
  function convertCookiesToParse(cookies, authFilePath) {
34
30
  try {
@@ -39,8 +35,11 @@ function convertCookiesToParse(cookies, authFilePath) {
39
35
  }
40
36
  }
41
37
  async function loadCookiesIfPresent(page, authFile) {
42
- verifyIfCookieFileExists(authFile);
43
- const cookies = (0, _fs.readFileSync)(authFile);
44
- const parsedCookies = convertCookiesToParse(cookies, authFile);
45
- await page.context().addCookies(parsedCookies.cookies === undefined ? [] : parsedCookies.cookies);
38
+ if (verifyIfCookieFileExists(authFile)) {
39
+ const fileContent = (0, _fs.readFileSync)(authFile);
40
+ const stroageState = convertCookiesToParse(fileContent, authFile);
41
+ if (stroageState.cookies) {
42
+ await page.context().addCookies(stroageState.cookies);
43
+ }
44
+ }
46
45
  }
@@ -10,6 +10,7 @@ var _fileMutex = _interopRequireDefault(require("../fileMutex"));
10
10
  var _fileMutexConfig = require("../../constants/fileMutexConfig");
11
11
  var _checkAuthCookies = require("./checkAuthCookies");
12
12
  var _checkAuthDirectory = require("../checkAuthDirectory");
13
+ var _fs = require("fs");
13
14
  /* eslint-disable no-console */
14
15
 
15
16
  async function performLoginSteps(testInfo, isLoggedIn, loginSteps) {
@@ -21,9 +22,15 @@ async function performLoginSteps(testInfo, isLoggedIn, loginSteps) {
21
22
  authFilePrefix = authFilePrefix || email;
22
23
  const authFile = _path.default.resolve(_path.default.join((0, _checkAuthCookies.getAuthFileDirectory)(), `${authFilePrefix}-cookies.json`));
23
24
  const lockFileName = email.replace(/[@.]/g, '_');
24
- const fileMutex = new _fileMutex.default((0, _checkAuthDirectory.getLockDirectoryPath)(), lockFileName, email, authFile, _fileMutexConfig.fileDeletionTimeoutConfig);
25
+ const fileMutex = new _fileMutex.default((0, _checkAuthDirectory.getLockDirectoryPath)(), lockFileName, _fileMutexConfig.fileDeletionTimeoutConfig);
26
+ let loginUsingCookie = false;
25
27
  try {
26
- await fileMutex.acquire();
28
+ if ((0, _checkAuthCookies.verifyIfCookieFileExists)(authFile)) {
29
+ console.log(`${email} Cookie file exists. Loading cookies, worker index - ${process.env.TEST_WORKER_INDEX}`);
30
+ loginUsingCookie = true;
31
+ } else {
32
+ await fileMutex.acquire();
33
+ }
27
34
  await (0, _checkAuthCookies.loadCookiesIfPresent)(page, authFile);
28
35
  const isAlreadyLoggedIn = await isLoggedIn(testInfo);
29
36
  if (!isAlreadyLoggedIn) {
@@ -36,7 +43,9 @@ async function performLoginSteps(testInfo, isLoggedIn, loginSteps) {
36
43
  } catch (error) {
37
44
  console.error(`Error during login for ${email}:`, error);
38
45
  } finally {
39
- await fileMutex.release();
46
+ if (!loginUsingCookie) {
47
+ await fileMutex.release();
48
+ }
40
49
  }
41
50
  }
42
51
  var _default = exports.default = performLoginSteps;
@@ -12,25 +12,19 @@ function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("C
12
12
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
13
13
  var _FileMutex_brand = /*#__PURE__*/new WeakSet();
14
14
  class FileMutex {
15
- constructor(directory, lockFileName, email, authFile, fileDeletionTimeoutConfig) {
15
+ constructor(directory, lockFileName, fileDeletionTimeoutConfig) {
16
16
  _classPrivateMethodInitSpec(this, _FileMutex_brand);
17
17
  this.directory = directory;
18
18
  this.lockFileName = lockFileName + ".lock";
19
- this.email = email;
20
- this.authFile = authFile;
21
19
  this.fileDeletionTimeout = fileDeletionTimeoutConfig.timeout;
22
- this.createDirectoryIfNotExist();
23
20
  this.lockFilePath = _assertClassBrand(_FileMutex_brand, this, _getLockFilePath).call(this);
21
+ _assertClassBrand(_FileMutex_brand, this, _createDirectoryIfNotExist).call(this);
24
22
  }
25
23
  async acquire() {
26
- if ((0, _fs.existsSync)(this.authFile)) {
27
- console.log(`${this.email} Cookie file exists. Loading cookies...`);
28
- return;
29
- }
30
24
  return new Promise((resolve, reject) => {
31
25
  if (!(0, _fs.existsSync)(this.lockFilePath)) {
32
26
  (0, _fs.writeFileSync)(this.lockFilePath, 'locked');
33
- console.log(`Lock file created: ${this.lockFilePath}`);
27
+ console.log(`Lock file created: ${this.lockFilePath}, worker index - ${process.env.TEST_WORKER_INDEX}`);
34
28
  return resolve();
35
29
  }
36
30
  const timeout = setTimeout(() => {
@@ -41,7 +35,7 @@ class FileMutex {
41
35
  try {
42
36
  if (eventType === 'rename' && filename === this.lockFileName) {
43
37
  clearTimeout(timeout);
44
- console.log(`Lock file deleted! Proceeding...`);
38
+ console.log(`Lock file deleted! Proceeding, worker index - ${process.env.TEST_WORKER_INDEX}`);
45
39
  watcher.close();
46
40
  resolve();
47
41
  }
@@ -56,21 +50,22 @@ class FileMutex {
56
50
  try {
57
51
  if ((0, _fs.existsSync)(this.lockFilePath)) {
58
52
  (0, _fs.unlinkSync)(this.lockFilePath);
59
- console.log(`Lock file deleted: ${this.lockFilePath}`);
53
+ console.log(`Lock file deleted: ${this.lockFilePath}, worker index - ${process.env.TEST_WORKER_INDEX}`);
60
54
  }
61
55
  } catch (err) {
62
- console.error(`Error deleting lock file: ${err.message}`);
63
- }
64
- }
65
- async createDirectoryIfNotExist() {
66
- if (!(0, _fs.existsSync)(this.directory)) {
67
- (0, _fs.mkdirSync)(this.directory, {
68
- recursive: true
69
- });
56
+ console.error(`Error deleting lock file: ${err.message}, worker index - ${process.env.TEST_WORKER_INDEX}`);
57
+ throw err;
70
58
  }
71
59
  }
72
60
  }
73
61
  function _getLockFilePath() {
74
62
  return _path.default.resolve(_path.default.join(this.directory, this.lockFileName));
75
63
  }
64
+ async function _createDirectoryIfNotExist() {
65
+ if (!(0, _fs.existsSync)(this.directory)) {
66
+ (0, _fs.mkdirSync)(this.directory, {
67
+ recursive: true
68
+ });
69
+ }
70
+ }
76
71
  var _default = exports.default = FileMutex;
@@ -8,8 +8,6 @@ jest.mock('fs');
8
8
  describe('FileMutex', () => {
9
9
  const directory = '/tmp/locks';
10
10
  const lockFileName = 'test-lock';
11
- const email = 'test@example.com';
12
- const authFile = '/tmp/authFile';
13
11
  const fileDeletionTimeoutConfig = {
14
12
  timeout: 1000
15
13
  };
@@ -17,27 +15,14 @@ describe('FileMutex', () => {
17
15
  let fileMutex;
18
16
  beforeEach(() => {
19
17
  jest.clearAllMocks();
20
- fileMutex = new _fileMutex.default(directory, lockFileName, email, authFile, fileDeletionTimeoutConfig);
18
+ fileMutex = new _fileMutex.default(directory, lockFileName, fileDeletionTimeoutConfig);
21
19
  });
22
20
  describe('acquire', () => {
23
- it('should create directory if it does not exist', async () => {
24
- _fs.existsSync.mockReturnValue(false);
25
- await fileMutex.createDirectoryIfNotExist();
26
- expect(_fs.mkdirSync).toHaveBeenCalledWith(directory, {
27
- recursive: true
28
- });
29
- });
30
21
  it('should create the lock file if it does not exist', async () => {
31
- _fs.existsSync.mockImplementation(filePath => filePath === authFile ? false : false);
32
22
  _fs.writeFileSync.mockImplementation(() => {});
33
23
  await fileMutex.acquire();
34
24
  expect(_fs.writeFileSync).toHaveBeenCalledWith(fileMutex.lockFilePath, 'locked');
35
25
  });
36
- it('should resolve immediately if auth file exists', async () => {
37
- _fs.existsSync.mockImplementation(filePath => filePath === authFile);
38
- await fileMutex.acquire();
39
- expect(_fs.existsSync).toHaveBeenCalledWith(authFile);
40
- });
41
26
  it('should wait for lock file deletion if it exists', async () => {
42
27
  _fs.existsSync.mockImplementation(filePath => filePath === fileMutex.lockFilePath);
43
28
  _fs.watch.mockImplementation((dir, callback) => {
@@ -88,9 +73,7 @@ describe('FileMutex', () => {
88
73
  _fs.unlinkSync.mockImplementation(() => {
89
74
  throw new Error(errorMessage);
90
75
  });
91
- console.error = jest.fn();
92
- await fileMutex.release();
93
- expect(console.error).toHaveBeenCalledWith(`Error deleting lock file: ${errorMessage}`);
76
+ await expect(fileMutex.release()).rejects.toThrow(errorMessage);
94
77
  });
95
78
  });
96
79
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "2.9.8",
3
+ "version": "0.4.57-n14-experimental",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
@@ -77,9 +77,9 @@
77
77
  }
78
78
  },
79
79
  "@babel/compat-data": {
80
- "version": "7.26.5",
81
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
82
- "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg=="
80
+ "version": "7.26.8",
81
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
82
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ=="
83
83
  },
84
84
  "@babel/core": {
85
85
  "version": "7.22.17",
@@ -119,12 +119,12 @@
119
119
  }
120
120
  },
121
121
  "@babel/generator": {
122
- "version": "7.26.5",
123
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
124
- "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
122
+ "version": "7.26.9",
123
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
124
+ "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
125
125
  "requires": {
126
- "@babel/parser": "^7.26.5",
127
- "@babel/types": "^7.26.5",
126
+ "@babel/parser": "^7.26.9",
127
+ "@babel/types": "^7.26.9",
128
128
  "@jridgewell/gen-mapping": "^0.3.5",
129
129
  "@jridgewell/trace-mapping": "^0.3.25",
130
130
  "jsesc": "^3.0.2"
@@ -171,17 +171,17 @@
171
171
  }
172
172
  },
173
173
  "@babel/helper-create-class-features-plugin": {
174
- "version": "7.25.9",
175
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
176
- "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
174
+ "version": "7.26.9",
175
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz",
176
+ "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==",
177
177
  "dev": true,
178
178
  "requires": {
179
179
  "@babel/helper-annotate-as-pure": "^7.25.9",
180
180
  "@babel/helper-member-expression-to-functions": "^7.25.9",
181
181
  "@babel/helper-optimise-call-expression": "^7.25.9",
182
- "@babel/helper-replace-supers": "^7.25.9",
182
+ "@babel/helper-replace-supers": "^7.26.5",
183
183
  "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
184
- "@babel/traverse": "^7.25.9",
184
+ "@babel/traverse": "^7.26.9",
185
185
  "semver": "^6.3.1"
186
186
  },
187
187
  "dependencies": {
@@ -327,12 +327,12 @@
327
327
  }
328
328
  },
329
329
  "@babel/helpers": {
330
- "version": "7.26.7",
331
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz",
332
- "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==",
330
+ "version": "7.26.9",
331
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz",
332
+ "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==",
333
333
  "requires": {
334
- "@babel/template": "^7.25.9",
335
- "@babel/types": "^7.26.7"
334
+ "@babel/template": "^7.26.9",
335
+ "@babel/types": "^7.26.9"
336
336
  }
337
337
  },
338
338
  "@babel/node": {
@@ -358,11 +358,11 @@
358
358
  }
359
359
  },
360
360
  "@babel/parser": {
361
- "version": "7.26.7",
362
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
363
- "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
361
+ "version": "7.26.9",
362
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz",
363
+ "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
364
364
  "requires": {
365
- "@babel/types": "^7.26.7"
365
+ "@babel/types": "^7.26.9"
366
366
  }
367
367
  },
368
368
  "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
@@ -573,14 +573,14 @@
573
573
  }
574
574
  },
575
575
  "@babel/plugin-transform-async-generator-functions": {
576
- "version": "7.25.9",
577
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
578
- "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
576
+ "version": "7.26.8",
577
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz",
578
+ "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==",
579
579
  "dev": true,
580
580
  "requires": {
581
- "@babel/helper-plugin-utils": "^7.25.9",
581
+ "@babel/helper-plugin-utils": "^7.26.5",
582
582
  "@babel/helper-remap-async-to-generator": "^7.25.9",
583
- "@babel/traverse": "^7.25.9"
583
+ "@babel/traverse": "^7.26.8"
584
584
  }
585
585
  },
586
586
  "@babel/plugin-transform-async-to-generator": {
@@ -712,12 +712,12 @@
712
712
  }
713
713
  },
714
714
  "@babel/plugin-transform-for-of": {
715
- "version": "7.25.9",
716
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
717
- "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
715
+ "version": "7.26.9",
716
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz",
717
+ "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==",
718
718
  "dev": true,
719
719
  "requires": {
720
- "@babel/helper-plugin-utils": "^7.25.9",
720
+ "@babel/helper-plugin-utils": "^7.26.5",
721
721
  "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
722
722
  }
723
723
  },
@@ -1033,12 +1033,12 @@
1033
1033
  }
1034
1034
  },
1035
1035
  "@babel/plugin-transform-template-literals": {
1036
- "version": "7.25.9",
1037
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
1038
- "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
1036
+ "version": "7.26.8",
1037
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz",
1038
+ "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==",
1039
1039
  "dev": true,
1040
1040
  "requires": {
1041
- "@babel/helper-plugin-utils": "^7.25.9"
1041
+ "@babel/helper-plugin-utils": "^7.26.5"
1042
1042
  }
1043
1043
  },
1044
1044
  "@babel/plugin-transform-typeof-symbol": {
@@ -1274,42 +1274,42 @@
1274
1274
  }
1275
1275
  },
1276
1276
  "@babel/runtime-corejs3": {
1277
- "version": "7.26.7",
1278
- "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.7.tgz",
1279
- "integrity": "sha512-55gRV8vGrCIYZnaQHQrD92Lo/hYE3Sj5tmbuf0hhHR7sj2CWhEhHU89hbq+UVDXvFG1zUVXJhUkEq1eAfqXtFw==",
1277
+ "version": "7.26.9",
1278
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.9.tgz",
1279
+ "integrity": "sha512-5EVjbTegqN7RSJle6hMWYxO4voo4rI+9krITk+DWR+diJgGrjZjrIBnJhjrHYYQsFgI7j1w1QnrvV7YSKBfYGg==",
1280
1280
  "requires": {
1281
1281
  "core-js-pure": "^3.30.2",
1282
1282
  "regenerator-runtime": "^0.14.0"
1283
1283
  }
1284
1284
  },
1285
1285
  "@babel/template": {
1286
- "version": "7.25.9",
1287
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
1288
- "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
1286
+ "version": "7.26.9",
1287
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
1288
+ "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
1289
1289
  "requires": {
1290
- "@babel/code-frame": "^7.25.9",
1291
- "@babel/parser": "^7.25.9",
1292
- "@babel/types": "^7.25.9"
1290
+ "@babel/code-frame": "^7.26.2",
1291
+ "@babel/parser": "^7.26.9",
1292
+ "@babel/types": "^7.26.9"
1293
1293
  }
1294
1294
  },
1295
1295
  "@babel/traverse": {
1296
- "version": "7.26.7",
1297
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz",
1298
- "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==",
1296
+ "version": "7.26.9",
1297
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz",
1298
+ "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==",
1299
1299
  "requires": {
1300
1300
  "@babel/code-frame": "^7.26.2",
1301
- "@babel/generator": "^7.26.5",
1302
- "@babel/parser": "^7.26.7",
1303
- "@babel/template": "^7.25.9",
1304
- "@babel/types": "^7.26.7",
1301
+ "@babel/generator": "^7.26.9",
1302
+ "@babel/parser": "^7.26.9",
1303
+ "@babel/template": "^7.26.9",
1304
+ "@babel/types": "^7.26.9",
1305
1305
  "debug": "^4.3.1",
1306
1306
  "globals": "^11.1.0"
1307
1307
  }
1308
1308
  },
1309
1309
  "@babel/types": {
1310
- "version": "7.26.7",
1311
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
1312
- "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
1310
+ "version": "7.26.9",
1311
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz",
1312
+ "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
1313
1313
  "requires": {
1314
1314
  "@babel/helper-string-parser": "^7.25.9",
1315
1315
  "@babel/helper-validator-identifier": "^7.25.9"
@@ -1635,20 +1635,20 @@
1635
1635
  },
1636
1636
  "dependencies": {
1637
1637
  "@babel/core": {
1638
- "version": "7.26.7",
1639
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
1640
- "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
1638
+ "version": "7.26.9",
1639
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
1640
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
1641
1641
  "requires": {
1642
1642
  "@ampproject/remapping": "^2.2.0",
1643
1643
  "@babel/code-frame": "^7.26.2",
1644
- "@babel/generator": "^7.26.5",
1644
+ "@babel/generator": "^7.26.9",
1645
1645
  "@babel/helper-compilation-targets": "^7.26.5",
1646
1646
  "@babel/helper-module-transforms": "^7.26.0",
1647
- "@babel/helpers": "^7.26.7",
1648
- "@babel/parser": "^7.26.7",
1649
- "@babel/template": "^7.25.9",
1650
- "@babel/traverse": "^7.26.7",
1651
- "@babel/types": "^7.26.7",
1647
+ "@babel/helpers": "^7.26.9",
1648
+ "@babel/parser": "^7.26.9",
1649
+ "@babel/template": "^7.26.9",
1650
+ "@babel/traverse": "^7.26.9",
1651
+ "@babel/types": "^7.26.9",
1652
1652
  "convert-source-map": "^2.0.0",
1653
1653
  "debug": "^4.1.0",
1654
1654
  "gensync": "^1.0.0-beta.2",
@@ -1745,20 +1745,20 @@
1745
1745
  },
1746
1746
  "dependencies": {
1747
1747
  "@babel/core": {
1748
- "version": "7.26.7",
1749
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
1750
- "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
1748
+ "version": "7.26.9",
1749
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
1750
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
1751
1751
  "requires": {
1752
1752
  "@ampproject/remapping": "^2.2.0",
1753
1753
  "@babel/code-frame": "^7.26.2",
1754
- "@babel/generator": "^7.26.5",
1754
+ "@babel/generator": "^7.26.9",
1755
1755
  "@babel/helper-compilation-targets": "^7.26.5",
1756
1756
  "@babel/helper-module-transforms": "^7.26.0",
1757
- "@babel/helpers": "^7.26.7",
1758
- "@babel/parser": "^7.26.7",
1759
- "@babel/template": "^7.25.9",
1760
- "@babel/traverse": "^7.26.7",
1761
- "@babel/types": "^7.26.7",
1757
+ "@babel/helpers": "^7.26.9",
1758
+ "@babel/parser": "^7.26.9",
1759
+ "@babel/template": "^7.26.9",
1760
+ "@babel/traverse": "^7.26.9",
1761
+ "@babel/types": "^7.26.9",
1762
1762
  "convert-source-map": "^2.0.0",
1763
1763
  "debug": "^4.1.0",
1764
1764
  "gensync": "^1.0.0-beta.2",
@@ -1944,9 +1944,9 @@
1944
1944
  },
1945
1945
  "dependencies": {
1946
1946
  "@babel/runtime": {
1947
- "version": "7.26.7",
1948
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
1949
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
1947
+ "version": "7.26.9",
1948
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
1949
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
1950
1950
  "requires": {
1951
1951
  "regenerator-runtime": "^0.14.0"
1952
1952
  }
@@ -2005,9 +2005,9 @@
2005
2005
  },
2006
2006
  "dependencies": {
2007
2007
  "@babel/runtime": {
2008
- "version": "7.26.7",
2009
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
2010
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
2008
+ "version": "7.26.9",
2009
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
2010
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
2011
2011
  "requires": {
2012
2012
  "regenerator-runtime": "^0.14.0"
2013
2013
  }
@@ -2041,9 +2041,9 @@
2041
2041
  },
2042
2042
  "dependencies": {
2043
2043
  "@babel/runtime": {
2044
- "version": "7.26.7",
2045
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
2046
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
2044
+ "version": "7.26.9",
2045
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
2046
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
2047
2047
  "requires": {
2048
2048
  "regenerator-runtime": "^0.14.0"
2049
2049
  }
@@ -2063,9 +2063,9 @@
2063
2063
  },
2064
2064
  "dependencies": {
2065
2065
  "@babel/runtime": {
2066
- "version": "7.26.7",
2067
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
2068
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
2066
+ "version": "7.26.9",
2067
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
2068
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
2069
2069
  "requires": {
2070
2070
  "regenerator-runtime": "^0.14.0"
2071
2071
  }
@@ -2196,25 +2196,25 @@
2196
2196
  "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="
2197
2197
  },
2198
2198
  "@types/node": {
2199
- "version": "22.13.1",
2200
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz",
2201
- "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==",
2199
+ "version": "22.13.4",
2200
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz",
2201
+ "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==",
2202
2202
  "requires": {
2203
2203
  "undici-types": "~6.20.0"
2204
2204
  }
2205
2205
  },
2206
2206
  "@types/react": {
2207
- "version": "19.0.8",
2208
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.8.tgz",
2209
- "integrity": "sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==",
2207
+ "version": "19.0.10",
2208
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz",
2209
+ "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==",
2210
2210
  "requires": {
2211
2211
  "csstype": "^3.0.2"
2212
2212
  }
2213
2213
  },
2214
2214
  "@types/react-dom": {
2215
- "version": "19.0.3",
2216
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.3.tgz",
2217
- "integrity": "sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA=="
2215
+ "version": "19.0.4",
2216
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz",
2217
+ "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg=="
2218
2218
  },
2219
2219
  "@types/react-test-renderer": {
2220
2220
  "version": "19.0.0",
@@ -2367,9 +2367,9 @@
2367
2367
  },
2368
2368
  "dependencies": {
2369
2369
  "@babel/runtime": {
2370
- "version": "7.26.7",
2371
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
2372
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
2370
+ "version": "7.26.9",
2371
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
2372
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
2373
2373
  "requires": {
2374
2374
  "regenerator-runtime": "^0.14.0"
2375
2375
  }
@@ -2686,9 +2686,9 @@
2686
2686
  }
2687
2687
  },
2688
2688
  "call-bind-apply-helpers": {
2689
- "version": "1.0.1",
2690
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
2691
- "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
2689
+ "version": "1.0.2",
2690
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
2691
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
2692
2692
  "requires": {
2693
2693
  "es-errors": "^1.3.0",
2694
2694
  "function-bind": "^1.1.2"
@@ -2714,9 +2714,9 @@
2714
2714
  "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
2715
2715
  },
2716
2716
  "caniuse-lite": {
2717
- "version": "1.0.30001698",
2718
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001698.tgz",
2719
- "integrity": "sha512-xJ3km2oiG/MbNU8G6zIq6XRZ6HtAOVXsbOrP/blGazi52kc5Yy7b6sDA5O+FbROzRrV7BSTllLHuNvmawYUJjw=="
2717
+ "version": "1.0.30001700",
2718
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz",
2719
+ "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ=="
2720
2720
  },
2721
2721
  "capital-case": {
2722
2722
  "version": "1.0.4",
@@ -3137,9 +3137,9 @@
3137
3137
  }
3138
3138
  },
3139
3139
  "electron-to-chromium": {
3140
- "version": "1.5.95",
3141
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.95.tgz",
3142
- "integrity": "sha512-XNsZaQrgQX+BG37BRQv+E+HcOZlWhqYaDoVVNCws/WrYYdbGrkR1qCDJ2mviBF3flCs6/BTa4O7ANfFTFZk6Dg=="
3140
+ "version": "1.5.102",
3141
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz",
3142
+ "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q=="
3143
3143
  },
3144
3144
  "emittery": {
3145
3145
  "version": "0.13.1",
@@ -3259,7 +3259,6 @@
3259
3259
  "version": "2.1.0",
3260
3260
  "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
3261
3261
  "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
3262
- "dev": true,
3263
3262
  "requires": {
3264
3263
  "es-errors": "^1.3.0",
3265
3264
  "get-intrinsic": "^1.2.6",
@@ -3516,20 +3515,21 @@
3516
3515
  }
3517
3516
  },
3518
3517
  "for-each": {
3519
- "version": "0.3.4",
3520
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz",
3521
- "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==",
3518
+ "version": "0.3.5",
3519
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
3520
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
3522
3521
  "requires": {
3523
3522
  "is-callable": "^1.2.7"
3524
3523
  }
3525
3524
  },
3526
3525
  "form-data": {
3527
- "version": "4.0.1",
3528
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
3529
- "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
3526
+ "version": "4.0.2",
3527
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
3528
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
3530
3529
  "requires": {
3531
3530
  "asynckit": "^0.4.0",
3532
3531
  "combined-stream": "^1.0.8",
3532
+ "es-set-tostringtag": "^2.1.0",
3533
3533
  "mime-types": "^2.1.12"
3534
3534
  }
3535
3535
  },
@@ -4228,20 +4228,20 @@
4228
4228
  },
4229
4229
  "dependencies": {
4230
4230
  "@babel/core": {
4231
- "version": "7.26.7",
4232
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
4233
- "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
4231
+ "version": "7.26.9",
4232
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
4233
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
4234
4234
  "requires": {
4235
4235
  "@ampproject/remapping": "^2.2.0",
4236
4236
  "@babel/code-frame": "^7.26.2",
4237
- "@babel/generator": "^7.26.5",
4237
+ "@babel/generator": "^7.26.9",
4238
4238
  "@babel/helper-compilation-targets": "^7.26.5",
4239
4239
  "@babel/helper-module-transforms": "^7.26.0",
4240
- "@babel/helpers": "^7.26.7",
4241
- "@babel/parser": "^7.26.7",
4242
- "@babel/template": "^7.25.9",
4243
- "@babel/traverse": "^7.26.7",
4244
- "@babel/types": "^7.26.7",
4240
+ "@babel/helpers": "^7.26.9",
4241
+ "@babel/parser": "^7.26.9",
4242
+ "@babel/template": "^7.26.9",
4243
+ "@babel/traverse": "^7.26.9",
4244
+ "@babel/types": "^7.26.9",
4245
4245
  "convert-source-map": "^2.0.0",
4246
4246
  "debug": "^4.1.0",
4247
4247
  "gensync": "^1.0.0-beta.2",
@@ -4413,20 +4413,20 @@
4413
4413
  },
4414
4414
  "dependencies": {
4415
4415
  "@babel/core": {
4416
- "version": "7.26.7",
4417
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
4418
- "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
4416
+ "version": "7.26.9",
4417
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
4418
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
4419
4419
  "requires": {
4420
4420
  "@ampproject/remapping": "^2.2.0",
4421
4421
  "@babel/code-frame": "^7.26.2",
4422
- "@babel/generator": "^7.26.5",
4422
+ "@babel/generator": "^7.26.9",
4423
4423
  "@babel/helper-compilation-targets": "^7.26.5",
4424
4424
  "@babel/helper-module-transforms": "^7.26.0",
4425
- "@babel/helpers": "^7.26.7",
4426
- "@babel/parser": "^7.26.7",
4427
- "@babel/template": "^7.25.9",
4428
- "@babel/traverse": "^7.26.7",
4429
- "@babel/types": "^7.26.7",
4425
+ "@babel/helpers": "^7.26.9",
4426
+ "@babel/parser": "^7.26.9",
4427
+ "@babel/template": "^7.26.9",
4428
+ "@babel/traverse": "^7.26.9",
4429
+ "@babel/types": "^7.26.9",
4430
4430
  "convert-source-map": "^2.0.0",
4431
4431
  "debug": "^4.1.0",
4432
4432
  "gensync": "^1.0.0-beta.2",
@@ -4751,20 +4751,20 @@
4751
4751
  },
4752
4752
  "dependencies": {
4753
4753
  "@babel/core": {
4754
- "version": "7.26.7",
4755
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz",
4756
- "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==",
4754
+ "version": "7.26.9",
4755
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz",
4756
+ "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==",
4757
4757
  "requires": {
4758
4758
  "@ampproject/remapping": "^2.2.0",
4759
4759
  "@babel/code-frame": "^7.26.2",
4760
- "@babel/generator": "^7.26.5",
4760
+ "@babel/generator": "^7.26.9",
4761
4761
  "@babel/helper-compilation-targets": "^7.26.5",
4762
4762
  "@babel/helper-module-transforms": "^7.26.0",
4763
- "@babel/helpers": "^7.26.7",
4764
- "@babel/parser": "^7.26.7",
4765
- "@babel/template": "^7.25.9",
4766
- "@babel/traverse": "^7.26.7",
4767
- "@babel/types": "^7.26.7",
4763
+ "@babel/helpers": "^7.26.9",
4764
+ "@babel/parser": "^7.26.9",
4765
+ "@babel/template": "^7.26.9",
4766
+ "@babel/traverse": "^7.26.9",
4767
+ "@babel/types": "^7.26.9",
4768
4768
  "convert-source-map": "^2.0.0",
4769
4769
  "debug": "^4.1.0",
4770
4770
  "gensync": "^1.0.0-beta.2",
@@ -5556,9 +5556,9 @@
5556
5556
  },
5557
5557
  "dependencies": {
5558
5558
  "@babel/runtime": {
5559
- "version": "7.26.7",
5560
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
5561
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
5559
+ "version": "7.26.9",
5560
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
5561
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
5562
5562
  "requires": {
5563
5563
  "regenerator-runtime": "^0.14.0"
5564
5564
  }
@@ -6590,9 +6590,9 @@
6590
6590
  }
6591
6591
  },
6592
6592
  "ws": {
6593
- "version": "8.18.0",
6594
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
6595
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="
6593
+ "version": "8.18.1",
6594
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
6595
+ "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w=="
6596
6596
  },
6597
6597
  "xml-name-validator": {
6598
6598
  "version": "4.0.0",
@@ -6663,9 +6663,9 @@
6663
6663
  },
6664
6664
  "dependencies": {
6665
6665
  "@babel/runtime": {
6666
- "version": "7.26.7",
6667
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
6668
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
6666
+ "version": "7.26.9",
6667
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
6668
+ "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
6669
6669
  "requires": {
6670
6670
  "regenerator-runtime": "^0.14.0"
6671
6671
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "2.9.8",
3
+ "version": "2.9.10",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -56,4 +56,4 @@
56
56
  "jest-html-reporter": "3.10.2",
57
57
  "typescript": "5.4.2"
58
58
  }
59
- }
59
+ }
@@ -257,4 +257,4 @@ header {
257
257
  font-size: 1rem;
258
258
  padding: 0 0.5rem;
259
259
  }
260
- </style></head><body><div class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><div id="metadata-container"><div id="timestamp">Started: 2024-12-18 15:33:53</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed ">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (9)</div><div class="summary-passed ">9 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><input id="collapsible-0" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-0"><div class="suite-info"><div class="suite-path">/Users/durai-19814/Documents/Git/testing-framework/src/test/core/playwright/__tests__/tagProcessor.test.js</div><div class="suite-time">1.168s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should return tagArgs if no edition is provided</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &lt;= operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &gt;= operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &lt; operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &gt; operator</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with no operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should log a message if edition is not found</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle multiple editions</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should build tags correctly when tags are empty</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div></div></body></html>
260
+ </style></head><body><div class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><div id="metadata-container"><div id="timestamp">Started: 2025-02-21 13:58:46</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (10)</div><div class="summary-passed ">10 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (35)</div><div class="summary-passed ">35 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><input id="collapsible-0" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-0"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/configuration/__tests__/Configuration.test.js</div><div class="suite-time">2.12s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">Configuration Class</div><div class="test-title">should add new key-value pair to the configuration</div><div class="test-status">passed</div><div class="test-duration">0.017s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">Configuration Class</div><div class="test-title">should combine configurations correctly using addAll</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">Configuration Class</div><div class="test-title">should return correct value for a given key</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-2" class="suite-container"><input id="collapsible-1" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-1"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js</div><div class="suite-time">2.324s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">throws an error when config file cannot be loaded</div><div class="test-status">passed</div><div class="test-duration">0.063s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">throws an error when beta feature config does not exist</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">loads main configuration when betaFeature is not provided and main config file exists</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">falls back to default configuration if main config file does not exist</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getListOfActors</div><div class="test-title">loads beta feature configuration when betaFeature is provided</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-3" class="suite-container"><input id="collapsible-2" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-2"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/__tests__/tagProcessor.test.js</div><div class="suite-time">2.342s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should return tagArgs if no edition is provided</div><div class="test-status">passed</div><div class="test-duration">0.007s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &lt;= operator</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &gt;= operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &lt; operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with &gt; operator</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle a single edition with no operator</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should log a message if edition is not found</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should handle multiple editions</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">TagProcessor</div><div class="test-title">should build tags correctly when tags are empty</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-4" class="suite-container"><input id="collapsible-3" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-3"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/examples/src/__tests__/App.test.js</div><div class="suite-time">2.318s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">example functions</div><div class="test-title">add function adds two numbers correctly</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">example functions</div><div class="test-title">greet function greets a person with their name</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-5" class="suite-container"><input id="collapsible-4" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-4"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js</div><div class="suite-time">2.445s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">getUATFileName</div><div class="test-title">return the pipeline matched config files for pipeline matched files exists</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">getUATFileName</div><div class="test-title">return the default config files for pipeline matched files not exists</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-6" class="suite-container"><input id="collapsible-5" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-5"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js</div><div class="suite-time">2.487s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">executionContext</div><div class="test-title">should pass actorInfo with details from getCustomAccountDetails to use</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div></div></div><div id="suite-7" class="suite-container"><input id="collapsible-6" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-6"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/runner/__tests__/RunnerHelper.test.js</div><div class="suite-time">0.663s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">RunnerHelper &gt; createRunner</div><div class="test-title">should throw error on invalid runner type</div><div class="test-status">passed</div><div class="test-duration">0.003s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">RunnerHelper &gt; createRunner</div><div class="test-title">should create a valid runner class</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-8" class="suite-container"><input id="collapsible-7" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-7"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/runner/__tests__/SpawnRunner.test.js</div><div class="suite-time">0.728s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">SpawnRunner &gt; run</div><div class="test-title">should call runPreprocessing when bddMode is true</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></div><div id="suite-9" class="suite-container"><input id="collapsible-8" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-8"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/__tests__/validateFeature.test.js</div><div class="suite-time">0.657s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">validateFeatureFiles</div><div class="test-title">runPreprocessing with correct arguments and log success</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">validateFeatureFiles</div><div class="test-title">runPreprocessing with playwright conf</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">validateFeatureFiles</div><div class="test-title">error when runPreprocessing fails</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div></div></div><div id="suite-10" class="suite-container"><input id="collapsible-9" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-9"><div class="suite-info"><div class="suite-path">/Users/maha-19788/office-work/application/repository/gitlab/zoho-apps/zohodesk/testing-framework/src/test/core/playwright/helpers/__tests__/fileMutex.test.js</div><div class="suite-time">3.452s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; acquire</div><div class="test-title">should create the lock file if it does not exist</div><div class="test-status">passed</div><div class="test-duration">0.042s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; acquire</div><div class="test-title">should wait for lock file deletion if it exists</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; acquire</div><div class="test-title">should reject if watch timeout exceeds</div><div class="test-status">passed</div><div class="test-duration">1.027s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should delete the lock file if it exists</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should release lock by deleting lock file</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should not attempt to delete the lock file if it does not exist</div><div class="test-status">passed</div><div class="test-duration">0s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">FileMutex &gt; release</div><div class="test-title">should log an error if deleting the lock file fails</div><div class="test-status">passed</div><div class="test-duration">0.007s</div></div></div></div></div></div></body></html>