From bd7ba3a57fc94c50116ff2cac7837da298a9dbd1 Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Thu, 20 Feb 2025 08:33:06 +0100 Subject: [PATCH 01/15] [INT-16] Initial visual-snapshots package (#188) Generate visual-snapshots CLI package with pdf command which for now does nothing --- visual-js/visual-snapshots/.eslintrc.cjs | 36 + visual-js/visual-snapshots/.gitignore | 5 + visual-js/visual-snapshots/README.md | 29 + visual-js/visual-snapshots/jest.config.cjs | 19 + visual-js/visual-snapshots/package-lock.json | 8043 +++++++++++++++++ visual-js/visual-snapshots/package.json | 42 + .../visual-snapshots/src/commands/options.ts | 73 + .../visual-snapshots/src/commands/pdf.ts | 33 + visual-js/visual-snapshots/src/index.ts | 15 + visual-js/visual-snapshots/tsconfig.json | 19 + 10 files changed, 8314 insertions(+) create mode 100644 visual-js/visual-snapshots/.eslintrc.cjs create mode 100644 visual-js/visual-snapshots/.gitignore create mode 100644 visual-js/visual-snapshots/README.md create mode 100644 visual-js/visual-snapshots/jest.config.cjs create mode 100644 visual-js/visual-snapshots/package-lock.json create mode 100644 visual-js/visual-snapshots/package.json create mode 100644 visual-js/visual-snapshots/src/commands/options.ts create mode 100644 visual-js/visual-snapshots/src/commands/pdf.ts create mode 100644 visual-js/visual-snapshots/src/index.ts create mode 100644 visual-js/visual-snapshots/tsconfig.json diff --git a/visual-js/visual-snapshots/.eslintrc.cjs b/visual-js/visual-snapshots/.eslintrc.cjs new file mode 100644 index 00000000..11bcbed2 --- /dev/null +++ b/visual-js/visual-snapshots/.eslintrc.cjs @@ -0,0 +1,36 @@ +module.exports = { + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + plugins: ['@typescript-eslint'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js', 'codegen.ts', 'jest.config.js', 'src/graphql/__generated__'], + rules: { + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + + // Allow unused vars that start with _ + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ], + }, +}; diff --git a/visual-js/visual-snapshots/.gitignore b/visual-js/visual-snapshots/.gitignore new file mode 100644 index 00000000..c44a2ccd --- /dev/null +++ b/visual-js/visual-snapshots/.gitignore @@ -0,0 +1,5 @@ +.work +build/ +lib/ +coverage/ +.parent/ diff --git a/visual-js/visual-snapshots/README.md b/visual-js/visual-snapshots/README.md new file mode 100644 index 00000000..3f882964 --- /dev/null +++ b/visual-js/visual-snapshots/README.md @@ -0,0 +1,29 @@ +# Sauce Labs Visual Snapshot CLI + +This package provides a CLI tool to create Visual snapshots of a provided PDF document. + +## Installation + +```sh +npm install --save @saucelabs/visual-snapshots +``` + +## Development + +Build: + +```sh +npm run build +``` + +Execute: + +```sh +node lib/index.js [command] [params] +``` + +Run tests: + +```sh +npm run test +``` diff --git a/visual-js/visual-snapshots/jest.config.cjs b/visual-js/visual-snapshots/jest.config.cjs new file mode 100644 index 00000000..714e5af1 --- /dev/null +++ b/visual-js/visual-snapshots/jest.config.cjs @@ -0,0 +1,19 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + // [...] + preset: 'ts-jest/presets/default-esm', // or other ESM presets + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + testPathIgnorePatterns: ['/lib/'], + transform: { + // '^.+\\.[tj]sx?$' to process js/ts with `ts-jest` + // '^.+\\.m?[tj]sx?$' to process js/ts/mjs/mts with `ts-jest` + '^.+\\.tsx?$': [ + 'ts-jest', + { + useESM: true, + }, + ], + }, +} diff --git a/visual-js/visual-snapshots/package-lock.json b/visual-js/visual-snapshots/package-lock.json new file mode 100644 index 00000000..0c6c30db --- /dev/null +++ b/visual-js/visual-snapshots/package-lock.json @@ -0,0 +1,8043 @@ +{ + "name": "@saucelabs/visual-snapshots", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@saucelabs/visual-snapshots", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "commander": "^12.0.0" + }, + "devDependencies": { + "@types/jest": "29.5.14", + "eslint": "8.57.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "5.0.0", + "globals": "15.15.0", + "jest": "29.7.0", + "ts-jest": "29.2.5", + "typescript": "^5.0.4", + "typescript-eslint": "8.24.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.26.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/node": { + "version": "22.13.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "dev": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", + "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/type-utils": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/parser/-/parser-8.24.0.tgz", + "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", + "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", + "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/types/-/types-8.24.0.tgz", + "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", + "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/utils/-/utils-8.24.0.tgz", + "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", + "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001700", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.102", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.19.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-jest": { + "version": "29.2.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "dependencies": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript-eslint/-/typescript-eslint-8.24.0.tgz", + "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.24.0", + "@typescript-eslint/parser": "8.24.0", + "@typescript-eslint/utils": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true + }, + "@babel/core": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "dev": true, + "requires": { + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true + }, + "@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "dev": true, + "requires": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" + } + }, + "@babel/parser": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "dev": true, + "requires": { + "@babel/types": "^7.26.9" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/template": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" + } + }, + "@babel/traverse": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.26.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.4.3" + } + }, + "@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + } + }, + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/source-map": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgr/core": { + "version": "0.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.5.14", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/node": { + "version": "22.13.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "dev": true, + "requires": { + "undici-types": "~6.20.0" + } + }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.33", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", + "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/type-utils": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + } + }, + "@typescript-eslint/parser": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/parser/-/parser-8.24.0.tgz", + "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", + "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", + "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + } + }, + "@typescript-eslint/types": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/types/-/types-8.24.0.tgz", + "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", + "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + } + } + }, + "@typescript-eslint/utils": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/utils/-/utils-8.24.0.tgz", + "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", + "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.24.0", + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + } + } + }, + "@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true + }, + "acorn": { + "version": "8.14.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "async": { + "version": "3.2.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "babel-jest": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "requires": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + } + }, + "babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.24.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001700", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "12.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + } + }, + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "dedent": { + "version": "1.5.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "requires": {} + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ejs": { + "version": "3.1.10", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.5.102", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "dev": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.57.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "@eslint/js": { + "version": "8.57.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true + }, + "globals": { + "version": "13.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", + "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.5" + } + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "fast-glob": { + "version": "3.3.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.19.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "15.15.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "ignore": { + "version": "5.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true + }, + "import-fresh": { + "version": "3.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-core-module": { + "version": "2.16.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "requires": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.9.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + } + }, + "jest": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + } + }, + "jest-changed-files": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-cli": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-docblock": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "requires": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + } + }, + "jest-runner": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + } + }, + "jest-runtime": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + } + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "requires": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.19", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "3.5.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "dev": true, + "peer": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "pure-rand": { + "version": "6.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "react-is": { + "version": "18.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resolve": { + "version": "1.22.10", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "requires": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve.exports": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "synckit": { + "version": "0.8.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "requires": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-api-utils": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "requires": {} + }, + "ts-jest": { + "version": "29.2.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "requires": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "5.7.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true + }, + "typescript-eslint": { + "version": "8.24.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript-eslint/-/typescript-eslint-8.24.0.tgz", + "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.24.0", + "@typescript-eslint/parser": "8.24.0", + "@typescript-eslint/utils": "8.24.0" + } + }, + "undici-types": { + "version": "6.20.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json new file mode 100644 index 00000000..9a51c6bd --- /dev/null +++ b/visual-js/visual-snapshots/package.json @@ -0,0 +1,42 @@ +{ + "name": "@saucelabs/visual-snapshots", + "description": "CLI which generates Visual snapshots from a data source such as pdf", + "version": "0.1.0", + "main": "lib/index.js", + "license": "MIT", + "bin": "./lib/index.js", + "files": [ + "lib", + "README.md" + ], + "type": "module", + "engines": { + "node": "^16.13 || >=18" + }, + "keywords": [ + "saucelabs", + "visual", + "snapshots", + "pdf" + ], + "scripts": { + "build": "tsc", + "watch": "tsc-watch --declaration -p .", + "lint": "eslint \"{src,test}/**/*.ts\"", + "lint-fix": "eslint \"{src,test}/**/*.ts\" --fix", + "test": "jest" + }, + "dependencies": { + "commander": "^12.0.0" + }, + "devDependencies": { + "@types/jest": "29.5.14", + "eslint": "8.57.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "5.0.0", + "jest": "29.7.0", + "ts-jest": "29.2.5", + "typescript": "^5.0.4", + "typescript-eslint": "8.24.0" + } +} diff --git a/visual-js/visual-snapshots/src/commands/options.ts b/visual-js/visual-snapshots/src/commands/options.ts new file mode 100644 index 00000000..5106bc57 --- /dev/null +++ b/visual-js/visual-snapshots/src/commands/options.ts @@ -0,0 +1,73 @@ +import { Option } from "commander"; +import { EOL } from "os"; + +export const usernameOption = new Option( + "-u, --username ", + "Your Sauce Labs username. You can get this from the header of app.saucelabs.com." + + EOL + + "If not provided, SAUCE_USERNAME environment variable will be used.", +) + .env("SAUCE_USERNAME") + .makeOptionMandatory(true); + +export const accessKeyOption = new Option( + "-k, --access-key ", + "Your Sauce Labs access key. You can get this from the header of app.saucelabs.com" + + EOL + + "If not provided, SAUCE_ACCESS_KEY environment variable will be used.", +) + .env("SAUCE_ACCESS_KEY") + .makeOptionMandatory(true); + +export const regionOption = new Option( + "-r, --region ", + "The region you\'d like to run your Visual tests in. Defaults to \'us-west-1\' if not supplied. Can be one of the following: \'eu-central-1\', \'us-west-1\' or \'us-east-4\'." + + EOL + + "If not provided, SAUCE_REGION environment variable will be used.", +) + .env("SAUCE_REGION") + .default("us-west-1"); + +export const buildNameOption = new Option( + "-n, --build-name ", + "The name you would like to appear in the Sauce Visual dashboard." + + EOL + + "If not provided, SAUCE_VISUAL_BUILD_NAME environment variable will be used.", +).env("SAUCE_VISUAL_BUILD_NAME"); + +export const branchOption = new Option( + "-b, --branch ", + "The branch name you would like to associate this build with. We recommend using your current VCS branch in CI." + + EOL + + "If not provided, SAUCE_VISUAL_BRANCH environment variable will be used.", +).env("SAUCE_VISUAL_BRANCH"); + +export const defaultBranchOption = new Option( + "-d, --default-branch ", + " The main branch name you would like to associate this build with. Usually \'main\' or \'master\' or alternatively the branch name your current branch was derived from." + + EOL + + "If not provided, SAUCE_VISUAL_DEFAULT_BRANCH environment variable will be used.", +).env("SAUCE_VISUAL_DEFAULT_BRANCH"); + +export const projectOption = new Option( + "-p, --project ", + "The label / project you would like to associate this build with." + + EOL + + "If not provided, SAUCE_VISUAL_PROJECT environment variable will be used.", +).env("SAUCE_VISUAL_PROJECT"); + +export const buildIdOption = new Option( + "--build-id ", + "For advanced users, a user-supplied SauceLabs Visual build ID. Can be used to create builds in advance using the GraphQL API. This can be used to parallelize tests with multiple browsers, shard, or more." + + EOL + + "By default, this is not set and we create / finish a build during setup / teardown." + + EOL + + "If not provided, SAUCE_VISUAL_BUILD_ID environment variable will be used.", +).env("SAUCE_VISUAL_BUILD_ID"); + +export const customIdOption = new Option( + "--custom-id ", + "For advanced users, a user-supplied custom ID to identify this build. Can be used in CI to identify / check / re-check the status of a single build. Usage suggestions: CI pipeline ID." + + EOL + + "If not provided, SAUCE_VISUAL_CUSTOM_ID environment variable will be used.", +).env("SAUCE_VISUAL_CUSTOM_ID"); diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts new file mode 100644 index 00000000..9fcf8501 --- /dev/null +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -0,0 +1,33 @@ +import { Command } from "commander"; +import { + accessKeyOption, + branchOption, + buildIdOption, + buildNameOption, + customIdOption, + defaultBranchOption, + projectOption, + regionOption, + usernameOption, +} from "./options.js"; + +export const pdfCommand = () => { + return new Command() + .name("pdf") + .description("Create visual snapshots for each page of a PDF file") + .argument("", "A path to a PDF file") + .addOption(usernameOption) + .addOption(accessKeyOption) + .addOption(regionOption) + .addOption(buildNameOption) + .addOption(branchOption) + .addOption(defaultBranchOption) + .addOption(projectOption) + .addOption(buildIdOption) + .addOption(customIdOption) + .action((pdfFilePath: string, options: Record) => { + console.info( + `Create snapshots of a pdf file: '${pdfFilePath}' with options: ${Object.entries(options)}`, + ); + }); +}; diff --git a/visual-js/visual-snapshots/src/index.ts b/visual-js/visual-snapshots/src/index.ts new file mode 100644 index 00000000..71f9672a --- /dev/null +++ b/visual-js/visual-snapshots/src/index.ts @@ -0,0 +1,15 @@ +#! /usr/bin/env node + +import { Command } from "commander"; +import { pdfCommand } from "./commands/pdf.js"; + +const program = new Command(); + +program + .name("visual-snapshots") + .description("Create visual snapshots of a document.") + .version("0.1.0"); + +program.addCommand(pdfCommand()); + +program.parse(); diff --git a/visual-js/visual-snapshots/tsconfig.json b/visual-js/visual-snapshots/tsconfig.json new file mode 100644 index 00000000..7c5700e8 --- /dev/null +++ b/visual-js/visual-snapshots/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + "module": "NodeNext", /* Specify what module code is generated. */ + "moduleResolution": "nodenext", /* Specify how TypeScript looks up a file from a given module specifier. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + "outDir": "./lib", /* Specify an output folder for all emitted files. */ + "removeComments": true, /* Disable emitting comments. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + "strict": true, /* Enable all strict type-checking options. */ + "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From d8feea23ed4cb8cb7236b8fedbd273bb5d836ba6 Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Thu, 27 Feb 2025 16:44:34 +0100 Subject: [PATCH 02/15] [INT-18] send pdf snapshots to Visual (#191) - convert pdf file into images (one image per page) - create a build - create a snapshot for each pdf page image - finish the build --- visual-js/visual-snapshots/README.md | 11 + visual-js/visual-snapshots/package-lock.json | 2777 ++++++++++++++++- visual-js/visual-snapshots/package.json | 14 +- .../visual-snapshots/src/api/visual-client.ts | 8 + .../src/api/visual-snapshots-api.ts | 93 + .../visual-snapshots/src/app/pdf-converter.ts | 11 + .../visual-snapshots/src/app/pdf-handler.ts | 25 + .../visual-snapshots/src/commands/options.ts | 4 +- .../visual-snapshots/src/commands/pdf.ts | 14 +- .../api/__snapshots__/visual-api.spec.ts.snap | 79 + .../test/api/visual-api.spec.ts | 160 + .../test/api/visual-client.spec.ts | 25 + .../test/app/pdf-converter.spec.ts | 34 + 13 files changed, 3126 insertions(+), 129 deletions(-) create mode 100644 visual-js/visual-snapshots/src/api/visual-client.ts create mode 100644 visual-js/visual-snapshots/src/api/visual-snapshots-api.ts create mode 100644 visual-js/visual-snapshots/src/app/pdf-converter.ts create mode 100644 visual-js/visual-snapshots/src/app/pdf-handler.ts create mode 100644 visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap create mode 100644 visual-js/visual-snapshots/test/api/visual-api.spec.ts create mode 100644 visual-js/visual-snapshots/test/api/visual-client.spec.ts create mode 100644 visual-js/visual-snapshots/test/app/pdf-converter.spec.ts diff --git a/visual-js/visual-snapshots/README.md b/visual-js/visual-snapshots/README.md index 3f882964..5f97eda7 100644 --- a/visual-js/visual-snapshots/README.md +++ b/visual-js/visual-snapshots/README.md @@ -2,6 +2,12 @@ This package provides a CLI tool to create Visual snapshots of a provided PDF document. +## Requirements + +```sh +node >= 18 +``` + ## Installation ```sh @@ -27,3 +33,8 @@ Run tests: ```sh npm run test ``` + +## Reusing pdf conversion code + +While it is possible to use `VisualSnapshotsApi` outside this package, please bear in mind it can only be used with ESM modules. +CommonJS modules are not supported. diff --git a/visual-js/visual-snapshots/package-lock.json b/visual-js/visual-snapshots/package-lock.json index 0c6c30db..761935e0 100644 --- a/visual-js/visual-snapshots/package-lock.json +++ b/visual-js/visual-snapshots/package-lock.json @@ -9,14 +9,18 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "commander": "^12.0.0" + "@saucelabs/visual": "0.13.0", + "commander": "^12.0.0", + "pdf-to-img": "4.4.0" + }, + "bin": { + "visual-snapshots": "lib/src/index.js" }, "devDependencies": { "@types/jest": "29.5.14", "eslint": "8.57.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "5.0.0", - "globals": "15.15.0", "jest": "29.7.0", "ts-jest": "29.2.5", "typescript": "^5.0.4", @@ -39,6 +43,47 @@ "node": ">=6.0.0" } }, + "node_modules/@apollo/client": { + "version": "3.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@apollo/client/-/client-3.13.1.tgz", + "integrity": "sha512-HaAt62h3jNUXpJ1v5HNgUiCzPP1c5zc2Q/FeTb2cTk/v09YlhoqKKHQFJI7St50VCJ5q8JVIc03I5bRcBrQxsg==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.18.0", + "prop-types": "^15.7.2", + "rehackt": "^0.1.0", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5 || ^6.0.3", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -496,6 +541,15 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -552,6 +606,14 @@ "node": ">=8" } }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -1014,6 +1076,84 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1058,6 +1198,28 @@ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" } }, + "node_modules/@saucelabs/visual": { + "version": "0.13.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@saucelabs/visual/-/visual-0.13.0.tgz", + "integrity": "sha512-MSbMZl3+u11JYFhm1V5jShXIIIEg4DbfqWSfrWLJJsHUJ3hKeYbJjjes7tXQ3Q9Pa5OwdlzcxDYinQDzecEXTw==", + "dependencies": { + "@apollo/client": "^3.7.14", + "@graphql-typed-document-node/core": "3.2.0", + "arktype": "^1.0.29-alpha", + "axios": "^1.7.4", + "chalk": "^4.0.0", + "cli-table3": "^0.6.3", + "commander": "^12.0.0", + "exponential-backoff": "^3.1.1", + "proxy-agent": "^6.3.1" + }, + "bin": { + "visual": "build/cli.js" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -1082,6 +1244,11 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1384,6 +1551,56 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true }, + "node_modules/@wry/caches": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/context": { + "version": "0.7.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie": { + "version": "0.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn/-/acorn-8.14.0.tgz", @@ -1405,6 +1622,14 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ajv/-/ajv-6.12.6.tgz", @@ -1442,7 +1667,6 @@ "version": "5.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1451,7 +1675,6 @@ "version": "4.3.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1472,18 +1695,69 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/arktype": { + "version": "1.0.29-alpha", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/arktype/-/arktype-1.0.29-alpha.tgz", + "integrity": "sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-jest/-/babel-jest-29.7.0.tgz", @@ -1598,13 +1872,36 @@ "version": "1.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "devOptional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "devOptional": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1661,12 +1958,33 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/callsites/-/callsites-3.1.0.tgz", @@ -1691,11 +2009,23 @@ "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true }, + "node_modules/canvas": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-3.1.0.tgz", + "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || >= 20.9.0" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1713,6 +2043,11 @@ "node": ">=10" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ci-info/-/ci-info-3.9.0.tgz", @@ -1728,6 +2063,20 @@ "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cliui/-/cliui-8.0.1.tgz", @@ -1762,7 +2111,6 @@ "version": "2.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1773,8 +2121,27 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/commander": { "version": "12.1.0", @@ -1788,7 +2155,13 @@ "version": "0.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "devOptional": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "optional": true }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -1831,11 +2204,18 @@ "node": ">= 8" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "engines": { + "node": ">= 14" + } + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -1848,6 +2228,17 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dedent/-/dedent-1.5.3.tgz", @@ -1862,6 +2253,14 @@ } } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-is/-/deep-is-0.1.4.tgz", @@ -1877,6 +2276,41 @@ "node": ">=0.10.0" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-newline/-/detect-newline-3.1.0.tgz", @@ -1907,6 +2341,19 @@ "node": ">=6.0.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ejs/-/ejs-3.1.10.tgz", @@ -1940,8 +2387,15 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } }, "node_modules/error-ex": { "version": "1.3.2", @@ -1952,25 +2406,86 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/eslint": { + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { "version": "8.57.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", @@ -2122,7 +2637,6 @@ "version": "4.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -2159,7 +2673,6 @@ "version": "5.3.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -2168,7 +2681,6 @@ "version": "2.0.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2202,6 +2714,14 @@ "node": ">= 0.8.0" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expect/-/expect-29.7.0.tgz", @@ -2218,6 +2738,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2375,11 +2900,73 @@ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "devOptional": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -2395,8 +2982,28 @@ "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -2416,6 +3023,26 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-package-type/-/get-package-type-0.1.0.tgz", @@ -2425,6 +3052,18 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-stream/-/get-stream-6.0.1.tgz", @@ -2434,12 +3073,30 @@ "node": ">=10" } }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "devOptional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2464,13 +3121,12 @@ "node": ">=10.13.0" } }, - "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "engines": { - "node": ">=18" + "node": ">= 0.4" } }, "node_modules/graceful-fs": { @@ -2485,20 +3141,66 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/graphql": { + "version": "16.10.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -2506,12 +3208,49 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/human-signals/-/human-signals-2.1.0.tgz", @@ -2521,6 +3260,11 @@ "node": ">=10.17.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ignore/-/ignore-5.3.2.tgz", @@ -2573,7 +3317,7 @@ "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, + "devOptional": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2582,8 +3326,29 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -2616,7 +3381,6 @@ "version": "3.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -3335,8 +4099,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -3350,6 +4113,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsesc/-/jsesc-3.1.0.tgz", @@ -3468,6 +4236,17 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3516,6 +4295,14 @@ "tmpl": "1.0.5" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3544,6 +4331,25 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -3553,11 +4359,19 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "devOptional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3565,11 +4379,83 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nan": { + "version": "2.22.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "optional": true + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -3577,8 +4463,63 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-int64": { - "version": "0.4.0", + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-abi": { + "version": "3.74.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true @@ -3589,6 +4530,21 @@ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3610,11 +4566,31 @@ "node": ">=8" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "optional": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -3631,6 +4607,17 @@ "node": ">=6" } }, + "node_modules/optimism": { + "version": "0.18.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optimism/-/optimism-0.18.1.tgz", + "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", + "dependencies": { + "@wry/caches": "^1.0.0", + "@wry/context": "^0.7.0", + "@wry/trie": "^0.5.0", + "tslib": "^2.3.0" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optionator/-/optionator-0.9.4.tgz", @@ -3681,6 +4668,36 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parent-module/-/parent-module-1.0.1.tgz", @@ -3721,7 +4738,7 @@ "version": "1.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -3741,6 +4758,89 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path2d": { + "version": "0.2.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path2d/-/path2d-0.2.2.tgz", + "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pdf-to-img": { + "version": "4.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdf-to-img/-/pdf-to-img-4.4.0.tgz", + "integrity": "sha512-IRhRpx7dFZNwsao6yV+emUXC9Iz7CaBLUwEbCcGpHEI/frFJUYZ1SriKJNYrFCy4UbWH92anXWTatItKNSZ7hA==", + "dependencies": { + "canvas": "3.1.0", + "pdfjs-dist": "4.2.67" + }, + "bin": { + "pdf2img": "bin/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pdf-to-img/node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "optional": true, + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pdf-to-img/node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pdf-to-img/node_modules/pdfjs-dist": { + "version": "4.2.67", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz", + "integrity": "sha512-rJmuBDFpD7cqC8WIkQUEClyB4UAH05K4AsyewToMTp2gSy3Rrx8c1ydAVqlJlGv3yZSOrhEERQU/4ScQQFlLHA==", + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d": "^0.2.0" + } + }, + "node_modules/pdf-to-img/node_modules/pdfjs-dist/node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pdf-to-img/node_modules/simple-get": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "optional": true, + "dependencies": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picocolors/-/picocolors-1.1.1.tgz", @@ -3826,6 +4926,31 @@ "node": ">=8" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3896,6 +5021,61 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/punycode/-/punycode-2.3.1.tgz", @@ -3917,12 +5097,64 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rehackt": { + "version": "0.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "peerDependencies": { + "@types/react": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/require-directory/-/require-directory-2.1.1.tgz", @@ -4003,7 +5235,7 @@ "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, + "devOptional": true, "dependencies": { "glob": "^7.1.3" }, @@ -4020,6 +5252,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", @@ -4029,6 +5266,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "optional": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4054,7 +5297,22 @@ "version": "3.0.7", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "devOptional": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } }, "node_modules/sisteransi": { "version": "1.0.5", @@ -4071,11 +5329,46 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -4117,6 +5410,14 @@ "node": ">=8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-length/-/string-length-4.0.2.tgz", @@ -4134,7 +5435,6 @@ "version": "4.2.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4148,7 +5448,6 @@ "version": "6.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4187,7 +5486,6 @@ "version": "7.2.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4204,6 +5502,14 @@ "node": ">= 0.4" } }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "engines": { + "node": ">=0.10" + } + }, "node_modules/synckit": { "version": "0.8.8", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/synckit/-/synckit-0.8.8.tgz", @@ -4217,6 +5523,64 @@ "node": "^14.18.0 || >=16.0.0" } }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "optional": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/test-exclude/-/test-exclude-6.0.0.tgz", @@ -4255,6 +5619,12 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "optional": true + }, "node_modules/ts-api-utils": { "version": "2.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-api-utils/-/ts-api-utils-2.0.1.tgz", @@ -4267,6 +5637,17 @@ "typescript": ">=4.8.4" } }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ts-jest": { "version": "29.2.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-jest/-/ts-jest-29.2.5.tgz", @@ -4330,8 +5711,18 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } }, "node_modules/type-check": { "version": "0.4.0", @@ -4425,6 +5816,11 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -4448,6 +5844,22 @@ "makeerror": "1.0.12" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "optional": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "optional": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/which/-/which-2.0.2.tgz", @@ -4463,6 +5875,15 @@ "node": ">= 8" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/word-wrap/-/word-wrap-1.2.5.tgz", @@ -4489,8 +5910,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -4555,6 +5975,19 @@ "engines": { "node": ">=10" } + }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "dependencies": { + "zen-observable": "0.8.15" + } } }, "dependencies": { @@ -4568,6 +6001,26 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "@apollo/client": { + "version": "3.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@apollo/client/-/client-3.13.1.tgz", + "integrity": "sha512-HaAt62h3jNUXpJ1v5HNgUiCzPP1c5zc2Q/FeTb2cTk/v09YlhoqKKHQFJI7St50VCJ5q8JVIc03I5bRcBrQxsg==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.18.0", + "prop-types": "^15.7.2", + "rehackt": "^0.1.0", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + } + }, "@babel/code-frame": { "version": "7.26.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -4901,6 +6354,12 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true + }, "@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -4944,6 +6403,12 @@ } } }, + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "requires": {} + }, "@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -5309,6 +6774,67 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "optional": true, + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "optional": true, + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "optional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "optional": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "optional": true + } + } + }, + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "optional": true + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -5341,6 +6867,22 @@ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true }, + "@saucelabs/visual": { + "version": "0.13.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@saucelabs/visual/-/visual-0.13.0.tgz", + "integrity": "sha512-MSbMZl3+u11JYFhm1V5jShXIIIEg4DbfqWSfrWLJJsHUJ3hKeYbJjjes7tXQ3Q9Pa5OwdlzcxDYinQDzecEXTw==", + "requires": { + "@apollo/client": "^3.7.14", + "@graphql-typed-document-node/core": "3.2.0", + "arktype": "^1.0.29-alpha", + "axios": "^1.7.4", + "chalk": "^4.0.0", + "cli-table3": "^0.6.3", + "commander": "^12.0.0", + "exponential-backoff": "^3.1.1", + "proxy-agent": "^6.3.1" + } + }, "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -5365,6 +6907,11 @@ "@sinonjs/commons": "^3.0.0" } }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -5615,6 +7162,44 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true }, + "@wry/caches": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@wry/context": { + "version": "0.7.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@wry/equality": { + "version": "0.5.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@wry/trie": { + "version": "0.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, "acorn": { "version": "8.14.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn/-/acorn-8.14.0.tgz", @@ -5628,6 +7213,11 @@ "dev": true, "requires": {} }, + "agent-base": { + "version": "7.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==" + }, "ajv": { "version": "6.12.6", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ajv/-/ajv-6.12.6.tgz", @@ -5660,14 +7250,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -5682,18 +7270,62 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "optional": true + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "argparse": { "version": "2.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "arktype": { + "version": "1.0.29-alpha", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/arktype/-/arktype-1.0.29-alpha.tgz", + "integrity": "sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==" + }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "requires": { + "tslib": "^2.0.1" + } + }, "async": { "version": "3.2.6", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.7.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "babel-jest": { "version": "29.7.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-jest/-/babel-jest-29.7.0.tgz", @@ -5786,13 +7418,33 @@ "version": "1.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "devOptional": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "basic-ftp": { + "version": "5.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } }, "brace-expansion": { "version": "1.1.11", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "devOptional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5837,12 +7489,30 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/callsites/-/callsites-3.1.0.tgz", @@ -5861,11 +7531,19 @@ "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true }, + "canvas": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-3.1.0.tgz", + "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==", + "requires": { + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5877,6 +7555,11 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "chownr": { + "version": "1.1.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, "ci-info": { "version": "3.9.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ci-info/-/ci-info-3.9.0.tgz", @@ -5889,6 +7572,15 @@ "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true }, + "cli-table3": { + "version": "0.6.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, "cliui": { "version": "8.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cliui/-/cliui-8.0.1.tgz", @@ -5916,7 +7608,6 @@ "version": "2.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -5924,8 +7615,21 @@ "color-name": { "version": "1.1.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } }, "commander": { "version": "12.1.0", @@ -5936,7 +7640,13 @@ "version": "0.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "devOptional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "optional": true }, "convert-source-map": { "version": "2.0.0", @@ -5970,15 +7680,27 @@ "which": "^2.0.1" } }, + "data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==" + }, "debug": { "version": "4.4.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, "requires": { "ms": "^2.1.3" } }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + } + }, "dedent": { "version": "1.5.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dedent/-/dedent-1.5.3.tgz", @@ -5986,6 +7708,11 @@ "dev": true, "requires": {} }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "deep-is": { "version": "0.1.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-is/-/deep-is-0.1.4.tgz", @@ -5998,6 +7725,32 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true + }, + "detect-libc": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, "detect-newline": { "version": "3.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-newline/-/detect-newline-3.1.0.tgz", @@ -6019,6 +7772,16 @@ "esutils": "^2.0.2" } }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "ejs": { "version": "3.1.10", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ejs/-/ejs-3.1.10.tgz", @@ -6043,8 +7806,15 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } }, "error-ex": { "version": "1.3.2", @@ -6055,6 +7825,35 @@ "is-arrayish": "^0.2.1" } }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, "escalade": { "version": "3.2.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", @@ -6067,6 +7866,17 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + } + }, "eslint": { "version": "8.57.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint/-/eslint-8.57.1.tgz", @@ -6177,8 +7987,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.6.0", @@ -6201,14 +8010,12 @@ "estraverse": { "version": "5.3.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "esutils": { "version": "2.0.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "execa": { "version": "5.1.1", @@ -6233,6 +8040,11 @@ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, "expect": { "version": "29.7.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expect/-/expect-29.7.0.tgz", @@ -6246,6 +8058,11 @@ "jest-util": "^29.7.0" } }, + "exponential-backoff": { + "version": "3.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -6386,11 +8203,58 @@ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "form-data": { + "version": "4.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "devOptional": true }, "fsevents": { "version": "2.3.3", @@ -6402,8 +8266,24 @@ "function-bind": { "version": "1.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "optional": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + } }, "gensync": { "version": "1.0.0-beta.2", @@ -6417,23 +8297,64 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.2.7", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, "get-package-type": { "version": "0.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, "get-stream": { "version": "6.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, + "get-uri": { + "version": "6.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, "glob": { "version": "7.2.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, + "devOptional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6452,11 +8373,10 @@ "is-glob": "^4.0.3" } }, - "globals": { - "version": "15.15.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true + "gopd": { + "version": "1.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "graceful-fs": { "version": "4.2.11", @@ -6470,33 +8390,102 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "graphql": { + "version": "16.10.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "peer": true + }, + "graphql-tag": { + "version": "2.12.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "requires": { + "tslib": "^2.1.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true }, "hasown": { "version": "2.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "requires": { "function-bind": "^1.1.2" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, "html-escaper": { "version": "2.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } + }, "human-signals": { "version": "2.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.3.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ignore/-/ignore-5.3.2.tgz", @@ -6533,7 +8522,7 @@ "version": "1.0.6", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, + "devOptional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6542,8 +8531,28 @@ "inherits": { "version": "2.0.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + } + } }, "is-arrayish": { "version": "0.2.1", @@ -6569,8 +8578,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-generator-fn": { "version": "2.1.0", @@ -7119,8 +9127,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "4.1.0", @@ -7131,6 +9138,11 @@ "argparse": "^2.0.1" } }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "jsesc": { "version": "3.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsesc/-/jsesc-3.1.0.tgz", @@ -7225,6 +9237,14 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-5.1.1.tgz", @@ -7266,6 +9286,11 @@ "tmpl": "1.0.5" } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "merge-stream": { "version": "2.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge-stream/-/merge-stream-2.0.0.tgz", @@ -7288,26 +9313,103 @@ "picomatch": "^2.3.1" } }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, "minimatch": { "version": "3.1.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "devOptional": true, "requires": { "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "optional": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "ms": { "version": "2.1.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "nan": { + "version": "2.22.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "optional": true + }, + "napi-build-utils": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" }, "natural-compare": { "version": "1.4.0", @@ -7315,6 +9417,40 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "netmask": { + "version": "2.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" + }, + "node-abi": { + "version": "3.74.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.7.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" + } + } + }, + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-int64/-/node-int64-0.4.0.tgz", @@ -7327,6 +9463,15 @@ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, + "nopt": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "requires": { + "abbrev": "1" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7342,11 +9487,27 @@ "path-key": "^3.0.0" } }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "optional": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, "once": { "version": "1.4.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -7360,6 +9521,17 @@ "mimic-fn": "^2.1.0" } }, + "optimism": { + "version": "0.18.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optimism/-/optimism-0.18.1.tgz", + "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", + "requires": { + "@wry/caches": "^1.0.0", + "@wry/context": "^0.7.0", + "@wry/trie": "^0.5.0", + "tslib": "^2.3.0" + } + }, "optionator": { "version": "0.9.4", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optionator/-/optionator-0.9.4.tgz", @@ -7398,6 +9570,30 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + } + }, + "pac-resolver": { + "version": "7.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "requires": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parent-module/-/parent-module-1.0.1.tgz", @@ -7429,7 +9625,7 @@ "version": "1.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "devOptional": true }, "path-key": { "version": "3.1.1", @@ -7443,6 +9639,71 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path2d": { + "version": "0.2.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path2d/-/path2d-0.2.2.tgz", + "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", + "optional": true + }, + "pdf-to-img": { + "version": "4.4.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdf-to-img/-/pdf-to-img-4.4.0.tgz", + "integrity": "sha512-IRhRpx7dFZNwsao6yV+emUXC9Iz7CaBLUwEbCcGpHEI/frFJUYZ1SriKJNYrFCy4UbWH92anXWTatItKNSZ7hA==", + "requires": { + "canvas": "3.1.0", + "pdfjs-dist": "4.2.67" + }, + "dependencies": { + "decompress-response": { + "version": "4.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "optional": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "optional": true + }, + "pdfjs-dist": { + "version": "4.2.67", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz", + "integrity": "sha512-rJmuBDFpD7cqC8WIkQUEClyB4UAH05K4AsyewToMTp2gSy3Rrx8c1ydAVqlJlGv3yZSOrhEERQU/4ScQQFlLHA==", + "requires": { + "canvas": "^2.11.2", + "path2d": "^0.2.0" + }, + "dependencies": { + "canvas": { + "version": "2.11.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "optional": true, + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" + } + } + } + }, + "simple-get": { + "version": "3.1.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "optional": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + } + } + }, "picocolors": { "version": "1.1.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picocolors/-/picocolors-1.1.1.tgz", @@ -7509,6 +9770,25 @@ } } }, + "prebuild-install": { + "version": "7.1.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -7560,6 +9840,59 @@ "sisteransi": "^1.0.5" } }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "proxy-agent": { + "version": "6.5.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pump": { + "version": "3.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.3.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/punycode/-/punycode-2.3.1.tgz", @@ -7578,12 +9911,46 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "rc": { + "version": "1.2.8", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, "react-is": { "version": "18.3.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "rehackt": { + "version": "0.1.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "requires": {} + }, "require-directory": { "version": "2.1.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/require-directory/-/require-directory-2.1.1.tgz", @@ -7640,7 +10007,7 @@ "version": "3.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, + "devOptional": true, "requires": { "glob": "^7.1.3" } @@ -7654,12 +10021,23 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "semver": { "version": "6.3.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "optional": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7679,7 +10057,22 @@ "version": "3.0.7", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "devOptional": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } }, "sisteransi": { "version": "1.0.5", @@ -7693,11 +10086,35 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.8.4", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "devOptional": true }, "source-map-support": { "version": "0.5.13", @@ -7732,6 +10149,14 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-length": { "version": "4.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-length/-/string-length-4.0.2.tgz", @@ -7746,7 +10171,6 @@ "version": "4.2.3", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7757,7 +10181,6 @@ "version": "6.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -7784,7 +10207,6 @@ "version": "7.2.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -7795,6 +10217,11 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" + }, "synckit": { "version": "0.8.8", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/synckit/-/synckit-0.8.8.tgz", @@ -7805,6 +10232,57 @@ "tslib": "^2.6.2" } }, + "tar": { + "version": "6.2.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "optional": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "optional": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + } + } + }, + "tar-fs": { + "version": "2.1.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/test-exclude/-/test-exclude-6.0.0.tgz", @@ -7837,6 +10315,12 @@ "is-number": "^7.0.0" } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "optional": true + }, "ts-api-utils": { "version": "2.0.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-api-utils/-/ts-api-utils-2.0.1.tgz", @@ -7844,6 +10328,14 @@ "dev": true, "requires": {} }, + "ts-invariant": { + "version": "0.10.3", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "requires": { + "tslib": "^2.1.0" + } + }, "ts-jest": { "version": "29.2.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-jest/-/ts-jest-29.2.5.tgz", @@ -7872,8 +10364,15 @@ "tslib": { "version": "2.8.1", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } }, "type-check": { "version": "0.4.0", @@ -7938,6 +10437,11 @@ "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "v8-to-istanbul": { "version": "9.3.0", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -7958,6 +10462,22 @@ "makeerror": "1.0.12" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "optional": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "optional": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { "version": "2.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/which/-/which-2.0.2.tgz", @@ -7967,6 +10487,15 @@ "isexe": "^2.0.0" } }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "word-wrap": { "version": "1.2.5", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/word-wrap/-/word-wrap-1.2.5.tgz", @@ -7987,8 +10516,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "4.0.2", @@ -8038,6 +10566,19 @@ "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "zen-observable": { + "version": "0.8.15", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "requires": { + "zen-observable": "0.8.15" + } } } } diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index 9a51c6bd..b277f1cf 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -2,16 +2,16 @@ "name": "@saucelabs/visual-snapshots", "description": "CLI which generates Visual snapshots from a data source such as pdf", "version": "0.1.0", - "main": "lib/index.js", + "main": "./lib/src/index.js", "license": "MIT", - "bin": "./lib/index.js", + "bin": "./lib/src/index.js", "files": [ "lib", "README.md" ], "type": "module", "engines": { - "node": "^16.13 || >=18" + "node": ">=18" }, "keywords": [ "saucelabs", @@ -24,10 +24,14 @@ "watch": "tsc-watch --declaration -p .", "lint": "eslint \"{src,test}/**/*.ts\"", "lint-fix": "eslint \"{src,test}/**/*.ts\" --fix", - "test": "jest" + "test": "jest", + "test-update-snapshots": "jest -u", + "test-with-coverage": "jest --collect-coverage" }, "dependencies": { - "commander": "^12.0.0" + "@saucelabs/visual": "^0.13.0", + "commander": "^12.0.0", + "pdf-to-img": "~4.4.0" }, "devDependencies": { "@types/jest": "29.5.14", diff --git a/visual-js/visual-snapshots/src/api/visual-client.ts b/visual-js/visual-snapshots/src/api/visual-client.ts new file mode 100644 index 00000000..b789fb3d --- /dev/null +++ b/visual-js/visual-snapshots/src/api/visual-client.ts @@ -0,0 +1,8 @@ +import { getApi, VisualConfig } from "@saucelabs/visual"; + +const clientVersion = "PKG_VERSION"; + +export const initializeVisualApi = (params: VisualConfig) => + getApi(params, { + userAgent: `visual-snapshots/${clientVersion}`, + }); diff --git a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts new file mode 100644 index 00000000..4ef1bde6 --- /dev/null +++ b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts @@ -0,0 +1,93 @@ +import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; + +export interface CreateVisualSnapshotsParams { + branch: string; + buildName: string; + defaultBranch: string; + project: string; + customId: string; + buildId: string; +} + +export class VisualSnapshotsApi { + private api: VisualApi; + + constructor(api: VisualApi) { + this.api = api; + } + + public async generateAndSendPdfFileSnapshots( + pdfFilePages: AsyncGenerator, + params: CreateVisualSnapshotsParams, + ) { + const buildId = await this.createBuild(params); + + let pageNumber = 1; + for await (const pdfPageImage of pdfFilePages) { + await this.uploadImageAndCreateSnapshot( + pdfPageImage, + buildId, + `page-${pageNumber}`, + ); + pageNumber++; + } + + await this.finishBuild(buildId); + } + + private async createBuild( + params: CreateVisualSnapshotsParams, + ): Promise { + const build = await this.api.createBuild({ + name: params.buildName, + branch: params.branch, + defaultBranch: params.defaultBranch, + project: params.project, + customId: params.customId, + }); + console.info(`Build ${build.id} created: ${build.url}`); + return build.id; + } + + private async uploadImageAndCreateSnapshot( + snapshot: Buffer, + buildId: string, + snapshotName: string, + ) { + const uploadId = await this.api.uploadSnapshot({ + buildId, + image: { data: snapshot }, + }); + + console.info(`Uploaded image to build ${buildId}: upload id=${uploadId}.`); + + await this.api.createSnapshot({ + buildId, + uploadId, + name: snapshotName, + diffingMethod: DiffingMethod.Balanced, + }); + + console.info(`Created a snapshot ${snapshotName} for build ${buildId}.`); + } + + private async finishBuild(buildId: string) { + await this.api.finishBuild({ + uuid: buildId, + }); + console.info(`Build ${buildId} finished.`); + + const buildStatus = (await this.api.buildStatus(buildId))!; + if ( + [BuildStatus.Running, BuildStatus.Queued].includes(buildStatus.status) + ) { + console.info( + `Build ${buildId} finished but snapshots haven't been compared yet. Check the build status in a few moments.`, + ); + } else { + console.info( + `Build ${buildId} finished (status=${buildStatus.status}, unapprovedCount=${buildStatus.unapprovedCount}, errorCount=${buildStatus.errorCount}).`, + ); + } + } +} diff --git a/visual-js/visual-snapshots/src/app/pdf-converter.ts b/visual-js/visual-snapshots/src/app/pdf-converter.ts new file mode 100644 index 00000000..e316ffa7 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/pdf-converter.ts @@ -0,0 +1,11 @@ +import { pdf } from "pdf-to-img"; + +export class PdfConverter { + public async *convertPagesToImages( + pdfFilePath: string, + ): AsyncGenerator { + for await (const pdfPageImage of await pdf(pdfFilePath, { scale: 1 })) { + yield pdfPageImage; + } + } +} diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts new file mode 100644 index 00000000..363bcdf6 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -0,0 +1,25 @@ +import { + CreateVisualSnapshotsParams, + VisualSnapshotsApi, +} from "../api/visual-snapshots-api.js"; +import { initializeVisualApi } from "../api/visual-client.js"; +import { PdfConverter } from "./pdf-converter.js"; +import { VisualConfig } from "@saucelabs/visual"; + +export interface PdfCommandParams + extends VisualConfig, + CreateVisualSnapshotsParams {} + +export class PdfCommandHandler { + public async handle(pdfFilePath: string, params: PdfCommandParams) { + const visualApi = initializeVisualApi(params); + const visualSnapshots = new VisualSnapshotsApi(visualApi); + const pdfConverter = new PdfConverter(); + + const pdfPageImages = pdfConverter.convertPagesToImages(pdfFilePath); + await visualSnapshots.generateAndSendPdfFileSnapshots( + pdfPageImages, + params, + ); + } +} diff --git a/visual-js/visual-snapshots/src/commands/options.ts b/visual-js/visual-snapshots/src/commands/options.ts index 5106bc57..a9346f7a 100644 --- a/visual-js/visual-snapshots/src/commands/options.ts +++ b/visual-js/visual-snapshots/src/commands/options.ts @@ -2,7 +2,7 @@ import { Option } from "commander"; import { EOL } from "os"; export const usernameOption = new Option( - "-u, --username ", + "-u, --user ", "Your Sauce Labs username. You can get this from the header of app.saucelabs.com." + EOL + "If not provided, SAUCE_USERNAME environment variable will be used.", @@ -11,7 +11,7 @@ export const usernameOption = new Option( .makeOptionMandatory(true); export const accessKeyOption = new Option( - "-k, --access-key ", + "-k, --key ", "Your Sauce Labs access key. You can get this from the header of app.saucelabs.com" + EOL + "If not provided, SAUCE_ACCESS_KEY environment variable will be used.", diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index 9fcf8501..9890b766 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -10,6 +10,7 @@ import { regionOption, usernameOption, } from "./options.js"; +import { PdfCommandHandler, PdfCommandParams } from "../app/pdf-handler.js"; export const pdfCommand = () => { return new Command() @@ -25,9 +26,14 @@ export const pdfCommand = () => { .addOption(projectOption) .addOption(buildIdOption) .addOption(customIdOption) - .action((pdfFilePath: string, options: Record) => { - console.info( - `Create snapshots of a pdf file: '${pdfFilePath}' with options: ${Object.entries(options)}`, - ); + .action((pdfFilePath: string, params: PdfCommandParams) => { + new PdfCommandHandler() + .handle(pdfFilePath, params) + .then(() => { + console.log("Successfully created PDF snapshots"); + }) + .catch((err) => { + console.error(`An error occured when creating PDF snapshots: ${err}`); + }); }); }; diff --git a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap new file mode 100644 index 00000000..72dbb15f --- /dev/null +++ b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap @@ -0,0 +1,79 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing finished 1`] = ` +[ + [ + "Build build-id created: http://build-url/build-id", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-0.", + ], + [ + "Created a snapshot page-1 for build build-id.", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-1.", + ], + [ + "Created a snapshot page-2 for build build-id.", + ], + [ + "Build build-id finished.", + ], + [ + "Build build-id finished (status=APPROVED, unapprovedCount=0, errorCount=0).", + ], +] +`; + +exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing unfinished 1`] = ` +[ + [ + "Build build-id created: http://build-url/build-id", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-0.", + ], + [ + "Created a snapshot page-1 for build build-id.", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-1.", + ], + [ + "Created a snapshot page-2 for build build-id.", + ], + [ + "Build build-id finished.", + ], + [ + "Build build-id finished but snapshots haven't been compared yet. Check the build status in a few moments.", + ], +] +`; + +exports[`VisualSnapshots generateAndSendPdfFileSnapshots without params 1`] = ` +[ + [ + "Build build-id created: http://build-url/build-id", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-0.", + ], + [ + "Created a snapshot page-1 for build build-id.", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-1.", + ], + [ + "Created a snapshot page-2 for build build-id.", + ], + [ + "Build build-id finished.", + ], + [ + "Build build-id finished (status=UNAPPROVED, unapprovedCount=2, errorCount=0).", + ], +] +`; diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts new file mode 100644 index 00000000..8ed74ce7 --- /dev/null +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -0,0 +1,160 @@ +import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; +import { + CreateVisualSnapshotsParams, + VisualSnapshotsApi, +} from "../../src/api/visual-snapshots-api.js"; + +async function* pdfPagesGenerator(): AsyncGenerator { + for (let i = 0; i < 2; ++i) { + yield Promise.resolve(Buffer.from(`fake-image-buffer-${i}`)); + } +} + +describe("VisualSnapshots", () => { + describe("generateAndSendPdfFileSnapshots", () => { + const consoleInfoSpy = jest + .spyOn(console, "info") + .mockImplementation(() => {}); + + let pdfPages: AsyncGenerator; + + const createBuildMock = jest.fn(); + const uploadSnapshotMock = jest.fn(); + const createSnapshotMock = jest.fn(); + const finishBuildMock = jest.fn(); + const buildStatusMock = jest.fn(); + const visualApiMock: VisualApi = { + ...jest.requireActual("@saucelabs/visual"), + createBuild: createBuildMock, + uploadSnapshot: uploadSnapshotMock, + createSnapshot: createSnapshotMock, + finishBuild: finishBuildMock, + buildStatus: buildStatusMock, + }; + const visualSnapshots = new VisualSnapshotsApi(visualApiMock); + beforeEach(() => { + createBuildMock.mockReset(); + createBuildMock.mockReturnValueOnce( + Promise.resolve({ id: "build-id", url: "http://build-url/build-id" }), + ); + uploadSnapshotMock.mockReset(); + uploadSnapshotMock + .mockReturnValueOnce(Promise.resolve("upload-id-0")) + .mockReturnValueOnce(Promise.resolve("upload-id-1")); + createSnapshotMock.mockReset(); + finishBuildMock.mockReset(); + buildStatusMock.mockReset(); + consoleInfoSpy.mockReset(); + + pdfPages = pdfPagesGenerator(); + }); + + const assertSuccessfulPdfSnapshotsGeneration = ( + params: CreateVisualSnapshotsParams, + ) => { + expect(createBuildMock).toHaveBeenCalledWith({ + name: params.buildName, + branch: params.branch, + defaultBranch: params.defaultBranch, + project: params.project, + customId: params.customId, + }); + + expect(uploadSnapshotMock.mock.calls).toEqual([ + [ + { + buildId: "build-id", + image: { data: Buffer.from("fake-image-buffer-0") }, + }, + ], + [ + { + buildId: "build-id", + image: { data: Buffer.from("fake-image-buffer-1") }, + }, + ], + ]); + + expect(createSnapshotMock.mock.calls).toEqual([ + [ + { + diffingMethod: DiffingMethod.Balanced, + buildId: "build-id", + name: "page-1", + uploadId: "upload-id-0", + }, + ], + [ + { + diffingMethod: DiffingMethod.Balanced, + buildId: "build-id", + name: "page-2", + uploadId: "upload-id-1", + }, + ], + ]); + + expect(finishBuildMock).toHaveBeenCalledWith({ + uuid: "build-id", + }); + + expect(buildStatusMock).toHaveBeenCalledWith("build-id"); + + expect(consoleInfoSpy.mock.calls).toMatchSnapshot(); + }; + + describe("with params", () => { + const params = { + branch: "fake-branch", + buildName: "fake-build-name", + defaultBranch: "fake-default-branch", + project: "fake-project", + customId: "fake-custom-id", + buildId: "fake-build-id", + } as CreateVisualSnapshotsParams; + + test("difffing unfinished", async () => { + buildStatusMock.mockReturnValueOnce( + Promise.resolve({ + status: BuildStatus.Running, + unapprovedCount: 2, + errorCount: 0, + }), + ); + + await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); + + assertSuccessfulPdfSnapshotsGeneration(params); + }); + + test("difffing finished", async () => { + buildStatusMock.mockReturnValueOnce( + Promise.resolve({ + status: BuildStatus.Approved, + unapprovedCount: 0, + errorCount: 0, + }), + ); + + await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); + + assertSuccessfulPdfSnapshotsGeneration(params); + }); + }); + + test("without params", async () => { + buildStatusMock.mockReturnValueOnce( + Promise.resolve({ + status: BuildStatus.Unapproved, + unapprovedCount: 2, + errorCount: 0, + }), + ); + + const params = {} as CreateVisualSnapshotsParams; + await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); + + assertSuccessfulPdfSnapshotsGeneration(params); + }); + }); +}); diff --git a/visual-js/visual-snapshots/test/api/visual-client.spec.ts b/visual-js/visual-snapshots/test/api/visual-client.spec.ts new file mode 100644 index 00000000..9d1e821e --- /dev/null +++ b/visual-js/visual-snapshots/test/api/visual-client.spec.ts @@ -0,0 +1,25 @@ +import { initializeVisualApi } from "../../src/api/visual-client.js"; +import * as sauceVisual from "@saucelabs/visual"; + +jest.mock("@saucelabs/visual", () => { + return { + getApi: jest.fn(), + }; +}); + +describe("visual api client", () => { + test("initializeVisualApi", async () => { + const getApiSpy = sauceVisual.getApi; + + const params = { + user: "fake-username", + key: "fake-access-key", + region: "us-west-1", + } as sauceVisual.VisualConfig; + initializeVisualApi(params); + + expect(getApiSpy).toHaveBeenCalledWith(params, { + userAgent: "visual-snapshots/PKG_VERSION", + }); + }); +}); diff --git a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts new file mode 100644 index 00000000..5b00916b --- /dev/null +++ b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts @@ -0,0 +1,34 @@ +import { PdfConverter } from "../../src/app/pdf-converter.js"; + +jest.mock("pdf-to-img", () => { + async function* asyncIterable() { + for (let i = 0; i < 2; i++) { + yield `fake-image-buffer-${i}`; + } + } + + return { + pdf: asyncIterable, + }; +}); + +describe("PdfConverter", () => { + test("convertPagesToImages", async () => { + const pdfFilePath = "./fake-pdf-file-path.pdf"; + const pdfConverter = new PdfConverter(); + const pdfPageImagesGenerator = + await pdfConverter.convertPagesToImages(pdfFilePath); + + for (let i = 0; i < 2; ++i) { + const pdfPageImage = await pdfPageImagesGenerator.next(); + expect(pdfPageImage).toEqual({ + done: false, + value: `fake-image-buffer-${i}`, + }); + } + expect(await pdfPageImagesGenerator.next()).toEqual({ + done: true, + value: undefined, + }); + }); +}); From 9dedd1c8125fa545f7de8082b08ae47a352e0ad9 Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Wed, 5 Mar 2025 11:12:41 +0100 Subject: [PATCH 03/15] [no-ticket] fix visual-snapshots setup (#192) - include visual-snapshots in replace_pkg_version.sh mapping - include visual-snapshots in packages.json --- visual-js/package.json | 1 + visual-js/replace_pkg_version.sh | 1 + visual-js/visual-snapshots/README.md | 8 +- visual-js/visual-snapshots/package-lock.json | 10584 ---------------- visual-js/visual-snapshots/package.json | 5 +- .../visual-snapshots/src/api/visual-client.ts | 7 +- .../src/api/visual-snapshots-api.ts | 12 +- .../visual-snapshots/src/app/pdf-converter.ts | 2 +- .../visual-snapshots/src/app/pdf-handler.ts | 10 +- .../visual-snapshots/src/commands/options.ts | 22 +- .../visual-snapshots/src/commands/pdf.ts | 4 +- visual-js/visual-snapshots/src/index.ts | 6 +- .../test/api/visual-api.spec.ts | 12 +- .../test/api/visual-client.spec.ts | 5 +- .../test/app/pdf-converter.spec.ts | 5 +- visual-js/yarn.lock | 560 +- 16 files changed, 605 insertions(+), 10639 deletions(-) delete mode 100644 visual-js/visual-snapshots/package-lock.json diff --git a/visual-js/package.json b/visual-js/package.json index 8ebe7f8b..16def4bb 100644 --- a/visual-js/package.json +++ b/visual-js/package.json @@ -7,6 +7,7 @@ "visual-cypress", "visual-nightwatch", "visual-playwright", + "visual-snapshots", "visual-storybook" ], "lint-staged": { diff --git a/visual-js/replace_pkg_version.sh b/visual-js/replace_pkg_version.sh index 23be0fa1..e98ec22e 100755 --- a/visual-js/replace_pkg_version.sh +++ b/visual-js/replace_pkg_version.sh @@ -34,6 +34,7 @@ FILE_MAP=( ["@saucelabs/nightwatch-sauce-visual-service"]="visual-nightwatch/src/utils/constants.ts" ["@saucelabs/visual-storybook"]="visual-storybook/src/api.ts" ["@saucelabs/wdio-sauce-visual-service"]="visual-wdio/src/SauceVisualService.ts" + ["@saucelabs/visual-snapshots"]="visual-snapshots/src/index.ts" ["@saucelabs/visual-playwright"]="visual-playwright/src/api.ts" # Add more mappings as needed ) diff --git a/visual-js/visual-snapshots/README.md b/visual-js/visual-snapshots/README.md index 5f97eda7..bccf013e 100644 --- a/visual-js/visual-snapshots/README.md +++ b/visual-js/visual-snapshots/README.md @@ -11,7 +11,7 @@ node >= 18 ## Installation ```sh -npm install --save @saucelabs/visual-snapshots +yarn install --save @saucelabs/visual-snapshots ``` ## Development @@ -19,19 +19,19 @@ npm install --save @saucelabs/visual-snapshots Build: ```sh -npm run build +yarn run build ``` Execute: ```sh -node lib/index.js [command] [params] +node lib/src/index.js pdf [params] ``` Run tests: ```sh -npm run test +yarn run test ``` ## Reusing pdf conversion code diff --git a/visual-js/visual-snapshots/package-lock.json b/visual-js/visual-snapshots/package-lock.json deleted file mode 100644 index 761935e0..00000000 --- a/visual-js/visual-snapshots/package-lock.json +++ /dev/null @@ -1,10584 +0,0 @@ -{ - "name": "@saucelabs/visual-snapshots", - "version": "0.1.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@saucelabs/visual-snapshots", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@saucelabs/visual": "0.13.0", - "commander": "^12.0.0", - "pdf-to-img": "4.4.0" - }, - "bin": { - "visual-snapshots": "lib/src/index.js" - }, - "devDependencies": { - "@types/jest": "29.5.14", - "eslint": "8.57.1", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "5.0.0", - "jest": "29.7.0", - "ts-jest": "29.2.5", - "typescript": "^5.0.4", - "typescript-eslint": "8.24.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@apollo/client": { - "version": "3.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@apollo/client/-/client-3.13.1.tgz", - "integrity": "sha512-HaAt62h3jNUXpJ1v5HNgUiCzPP1c5zc2Q/FeTb2cTk/v09YlhoqKKHQFJI7St50VCJ5q8JVIc03I5bRcBrQxsg==", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/caches": "^1.0.0", - "@wry/equality": "^0.5.6", - "@wry/trie": "^0.5.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.18.0", - "prop-types": "^15.7.2", - "rehackt": "^0.1.0", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5 || ^6.0.3", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helpers/-/helpers-7.26.9.tgz", - "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", - "dev": true, - "dependencies": { - "@babel/types": "^7.26.9" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "optional": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "optional": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - } - }, - "node_modules/@saucelabs/visual": { - "version": "0.13.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@saucelabs/visual/-/visual-0.13.0.tgz", - "integrity": "sha512-MSbMZl3+u11JYFhm1V5jShXIIIEg4DbfqWSfrWLJJsHUJ3hKeYbJjjes7tXQ3Q9Pa5OwdlzcxDYinQDzecEXTw==", - "dependencies": { - "@apollo/client": "^3.7.14", - "@graphql-typed-document-node/core": "3.2.0", - "arktype": "^1.0.29-alpha", - "axios": "^1.7.4", - "chalk": "^4.0.0", - "cli-table3": "^0.6.3", - "commander": "^12.0.0", - "exponential-backoff": "^3.1.1", - "proxy-agent": "^6.3.1" - }, - "bin": { - "visual": "build/cli.js" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", - "dev": true, - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", - "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/type-utils": "8.24.0", - "@typescript-eslint/utils": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/parser/-/parser-8.24.0.tgz", - "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/typescript-estree": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", - "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", - "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "8.24.0", - "@typescript-eslint/utils": "8.24.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/types/-/types-8.24.0.tgz", - "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", - "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/utils/-/utils-8.24.0.tgz", - "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/typescript-estree": "8.24.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", - "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true - }, - "node_modules/@wry/caches": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/context": { - "version": "0.7.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "optional": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/arktype": { - "version": "1.0.29-alpha", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/arktype/-/arktype-1.0.29-alpha.tgz", - "integrity": "sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==" - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", - "dev": true - }, - "node_modules/canvas": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-3.1.0.tgz", - "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.1" - }, - "engines": { - "node": "^18.12.0 || >= 20.9.0" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "optional": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "engines": { - "node": ">=18" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "optional": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "optional": true - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.102", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", - "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.19.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs-minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "devOptional": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "optional": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-uri": { - "version": "6.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "devOptional": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "optional": true - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "devOptional": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/nan": { - "version": "2.22.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", - "optional": true - }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/node-abi": { - "version": "3.74.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-abi/-/node-abi-3.74.0.tgz", - "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "optional": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "optional": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/optimism": { - "version": "0.18.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optimism/-/optimism-0.18.1.tgz", - "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", - "dependencies": { - "@wry/caches": "^1.0.0", - "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", - "tslib": "^2.3.0" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pac-proxy-agent": { - "version": "7.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", - "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path2d": { - "version": "0.2.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path2d/-/path2d-0.2.2.tgz", - "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pdf-to-img": { - "version": "4.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdf-to-img/-/pdf-to-img-4.4.0.tgz", - "integrity": "sha512-IRhRpx7dFZNwsao6yV+emUXC9Iz7CaBLUwEbCcGpHEI/frFJUYZ1SriKJNYrFCy4UbWH92anXWTatItKNSZ7hA==", - "dependencies": { - "canvas": "3.1.0", - "pdfjs-dist": "4.2.67" - }, - "bin": { - "pdf2img": "bin/cli.mjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/pdf-to-img/node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "optional": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pdf-to-img/node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pdf-to-img/node_modules/pdfjs-dist": { - "version": "4.2.67", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz", - "integrity": "sha512-rJmuBDFpD7cqC8WIkQUEClyB4UAH05K4AsyewToMTp2gSy3Rrx8c1ydAVqlJlGv3yZSOrhEERQU/4ScQQFlLHA==", - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "canvas": "^2.11.2", - "path2d": "^0.2.0" - } - }, - "node_modules/pdf-to-img/node_modules/pdfjs-dist/node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pdf-to-img/node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "optional": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", - "dev": true, - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/proxy-agent": { - "version": "6.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-agent/-/proxy-agent-6.5.0.tgz", - "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.6", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.1.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rehackt": { - "version": "0.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rehackt/-/rehackt-0.1.0.tgz", - "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", - "peerDependencies": { - "@types/react": "*", - "react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "devOptional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "optional": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "devOptional": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", - "dev": true, - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "optional": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar-fs": { - "version": "2.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "optional": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", - "dev": true, - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", - "dev": true, - "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript-eslint/-/typescript-eslint-8.24.0.tgz", - "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.24.0", - "@typescript-eslint/parser": "8.24.0", - "@typescript-eslint/utils": "8.24.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true - }, - "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", - "dev": true, - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "optional": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "optional": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "dependencies": { - "zen-observable": "0.8.15" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@apollo/client": { - "version": "3.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@apollo/client/-/client-3.13.1.tgz", - "integrity": "sha512-HaAt62h3jNUXpJ1v5HNgUiCzPP1c5zc2Q/FeTb2cTk/v09YlhoqKKHQFJI7St50VCJ5q8JVIc03I5bRcBrQxsg==", - "requires": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/caches": "^1.0.0", - "@wry/equality": "^0.5.6", - "@wry/trie": "^0.5.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.18.0", - "prop-types": "^15.7.2", - "rehackt": "^0.1.0", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - } - }, - "@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - } - }, - "@babel/compat-data": { - "version": "7.26.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/compat-data/-/compat-data-7.26.8.tgz", - "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", - "dev": true - }, - "@babel/core": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/core/-/core-7.26.9.tgz", - "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/generator": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/generator/-/generator-7.26.9.tgz", - "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", - "dev": true, - "requires": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - } - }, - "@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true - }, - "@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/helpers/-/helpers-7.26.9.tgz", - "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", - "dev": true, - "requires": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" - } - }, - "@babel/parser": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/parser/-/parser-7.26.9.tgz", - "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", - "dev": true, - "requires": { - "@babel/types": "^7.26.9" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.25.9" - } - }, - "@babel/template": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/template/-/template-7.26.9.tgz", - "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" - } - }, - "@babel/traverse": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/traverse/-/traverse-7.26.9.tgz", - "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.26.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@babel/types/-/types-7.26.9.tgz", - "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.4.3" - } - }, - "@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "requires": {} - }, - "@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "@jest/environment": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - } - }, - "@jest/expect": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "requires": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - } - }, - "@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3" - } - }, - "@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "@jest/globals": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - } - }, - "@jest/reporters": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - } - }, - "@jest/types": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "optional": true, - "requires": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "optional": true, - "requires": { - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "optional": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "optional": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "optional": true - } - } - }, - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "optional": true - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@pkgr/core": { - "version": "0.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true - }, - "@saucelabs/visual": { - "version": "0.13.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@saucelabs/visual/-/visual-0.13.0.tgz", - "integrity": "sha512-MSbMZl3+u11JYFhm1V5jShXIIIEg4DbfqWSfrWLJJsHUJ3hKeYbJjjes7tXQ3Q9Pa5OwdlzcxDYinQDzecEXTw==", - "requires": { - "@apollo/client": "^3.7.14", - "@graphql-typed-document-node/core": "3.2.0", - "arktype": "^1.0.29-alpha", - "axios": "^1.7.4", - "chalk": "^4.0.0", - "cli-table3": "^0.6.3", - "commander": "^12.0.0", - "exponential-backoff": "^3.1.1", - "proxy-agent": "^6.3.1" - } - }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" - }, - "@types/babel__core": { - "version": "7.20.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.14", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/node": { - "version": "22.13.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", - "dev": true, - "requires": { - "undici-types": "~6.20.0" - } - }, - "@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "@types/yargs": { - "version": "17.0.33", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", - "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/type-utils": "8.24.0", - "@typescript-eslint/utils": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - } - }, - "@typescript-eslint/parser": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/parser/-/parser-8.24.0.tgz", - "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/typescript-estree": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", - "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", - "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "8.24.0", - "@typescript-eslint/utils": "8.24.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" - } - }, - "@typescript-eslint/types": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/types/-/types-8.24.0.tgz", - "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", - "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - } - } - }, - "@typescript-eslint/utils": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/utils/-/utils-8.24.0.tgz", - "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/typescript-estree": "8.24.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", - "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.0", - "eslint-visitor-keys": "^4.2.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true - } - } - }, - "@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true - }, - "@wry/caches": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/context": { - "version": "0.7.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/equality": { - "version": "0.5.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@wry/trie": { - "version": "0.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "acorn": { - "version": "8.14.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "7.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "optional": true - }, - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "arktype": { - "version": "1.0.29-alpha", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/arktype/-/arktype-1.0.29-alpha.tgz", - "integrity": "sha512-glMLgVhIQRSkR3tymiS+POAcWVJH09sfrgic0jHnyFL8BlhHAJZX2BzdImU9zYr1y9NBqy+U93ZNrRTHXsKRDw==" - }, - "ast-types": { - "version": "0.13.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "requires": { - "tslib": "^2.0.1" - } - }, - "async": { - "version": "3.2.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.7.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "babel-jest": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "requires": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - } - } - }, - "babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - } - }, - "babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "basic-ftp": { - "version": "5.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.24.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", - "dev": true - }, - "canvas": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-3.1.0.tgz", - "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==", - "requires": { - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "ci-info": { - "version": "3.9.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true - }, - "cli-table3": { - "version": "0.6.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "optional": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "12.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "optional": true - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "create-jest": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - } - }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==" - }, - "debug": { - "version": "4.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "requires": { - "ms": "^2.1.3" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, - "dedent": { - "version": "1.5.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "requires": {} - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "degenerator": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "requires": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "optional": true - }, - "detect-libc": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff-sequences": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dunder-proto": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "requires": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - } - }, - "ejs": { - "version": "3.1.10", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.5.102", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", - "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", - "dev": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-define-property": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "es-object-atoms": { - "version": "1.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "requires": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "escodegen": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "source-map": "~0.6.1" - } - }, - "eslint": { - "version": "8.57.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "@eslint/js": { - "version": "8.57.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true - }, - "globals": { - "version": "13.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } - } - }, - "eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" - } - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, - "expect": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "exponential-backoff": { - "version": "3.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "fast-glob": { - "version": "3.3.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.19.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "filelist": { - "version": "1.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.9", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" - }, - "form-data": { - "version": "4.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - } - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "optional": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "optional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "devOptional": true - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "optional": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "requires": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-proto": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "requires": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-uri": { - "version": "6.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", - "requires": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" - } - }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "glob": { - "version": "7.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "devOptional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "gopd": { - "version": "1.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "graphql": { - "version": "16.10.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", - "peer": true - }, - "graphql-tag": { - "version": "2.12.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "optional": true - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "requires": { - "agent-base": "^7.1.2", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.3.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true - }, - "import-fresh": { - "version": "3.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "devOptional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "ip-address": { - "version": "9.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "requires": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "dependencies": { - "sprintf-js": { - "version": "1.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-core-module": { - "version": "2.16.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "requires": { - "hasown": "^2.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "requires": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jake": { - "version": "10.9.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - } - }, - "jest": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - } - }, - "jest-changed-files": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "requires": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - } - }, - "jest-config": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-docblock": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - } - }, - "jest-environment-node": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - }, - "jest-haste-map": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - } - }, - "jest-message-util": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.6.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true - }, - "jest-resolve": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "requires": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - } - }, - "jest-runner": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - } - } - }, - "jest-util": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, - "jsesc": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "keyv": { - "version": "4.5.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "requires": { - "semver": "^7.5.3" - }, - "dependencies": { - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "math-intrinsics": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "optional": true - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "optional": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "optional": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - } - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "nan": { - "version": "2.22.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nan/-/nan-2.22.0.tgz", - "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", - "optional": true - }, - "napi-build-utils": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "netmask": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" - }, - "node-abi": { - "version": "3.74.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-abi/-/node-abi-3.74.0.tgz", - "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", - "requires": { - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" - } - } - }, - "node-addon-api": { - "version": "7.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" - }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.19", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "optional": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "optional": true, - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optimism": { - "version": "0.18.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optimism/-/optimism-0.18.1.tgz", - "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", - "requires": { - "@wry/caches": "^1.0.0", - "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", - "tslib": "^2.3.0" - } - }, - "optionator": { - "version": "0.9.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pac-proxy-agent": { - "version": "7.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", - "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", - "requires": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" - } - }, - "pac-resolver": { - "version": "7.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "requires": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path2d": { - "version": "0.2.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/path2d/-/path2d-0.2.2.tgz", - "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", - "optional": true - }, - "pdf-to-img": { - "version": "4.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdf-to-img/-/pdf-to-img-4.4.0.tgz", - "integrity": "sha512-IRhRpx7dFZNwsao6yV+emUXC9Iz7CaBLUwEbCcGpHEI/frFJUYZ1SriKJNYrFCy4UbWH92anXWTatItKNSZ7hA==", - "requires": { - "canvas": "3.1.0", - "pdfjs-dist": "4.2.67" - }, - "dependencies": { - "decompress-response": { - "version": "4.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "optional": true, - "requires": { - "mimic-response": "^2.0.0" - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "optional": true - }, - "pdfjs-dist": { - "version": "4.2.67", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz", - "integrity": "sha512-rJmuBDFpD7cqC8WIkQUEClyB4UAH05K4AsyewToMTp2gSy3Rrx8c1ydAVqlJlGv3yZSOrhEERQU/4ScQQFlLHA==", - "requires": { - "canvas": "^2.11.2", - "path2d": "^0.2.0" - }, - "dependencies": { - "canvas": { - "version": "2.11.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "optional": true, - "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - } - } - } - }, - "simple-get": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "optional": true, - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - } - } - }, - "picocolors": { - "version": "1.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "prebuild-install": { - "version": "7.1.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "3.5.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", - "dev": true, - "peer": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, - "proxy-agent": { - "version": "6.5.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-agent/-/proxy-agent-6.5.0.tgz", - "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", - "requires": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.6", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.1.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.5" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" - } - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "pump": { - "version": "3.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "pure-rand": { - "version": "6.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - } - } - }, - "react-is": { - "version": "18.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rehackt": { - "version": "0.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rehackt/-/rehackt-0.1.0.tgz", - "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", - "requires": {} - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resolve": { - "version": "1.22.10", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "requires": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "devOptional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "optional": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "devOptional": true - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "socks": { - "version": "2.8.4", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", - "requires": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "requires": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" - }, - "synckit": { - "version": "0.8.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", - "dev": true, - "requires": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - } - }, - "tar": { - "version": "6.2.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "optional": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "optional": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - } - } - }, - "tar-fs": { - "version": "2.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "ts-api-utils": { - "version": "2.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", - "dev": true, - "requires": {} - }, - "ts-invariant": { - "version": "0.10.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "requires": { - "tslib": "^2.1.0" - } - }, - "ts-jest": { - "version": "29.2.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", - "dev": true, - "requires": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "semver": { - "version": "7.7.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - } - } - }, - "tslib": { - "version": "2.8.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typescript": { - "version": "5.7.3", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true - }, - "typescript-eslint": { - "version": "8.24.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/typescript-eslint/-/typescript-eslint-8.24.0.tgz", - "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "8.24.0", - "@typescript-eslint/parser": "8.24.0", - "@typescript-eslint/utils": "8.24.0" - } - }, - "undici-types": { - "version": "6.20.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", - "dev": true, - "requires": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "optional": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "optional": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zen-observable": { - "version": "0.8.15", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://artifactory.tools.saucelabs.net:443/artifactory/api/npm/all-npm/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "requires": { - "zen-observable": "0.8.15" - } - } - } -} diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index b277f1cf..ca2c1390 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -35,10 +35,11 @@ }, "devDependencies": { "@types/jest": "29.5.14", - "eslint": "8.57.1", + "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "5.0.0", + "eslint-plugin-prettier": "^4.0.0", "jest": "29.7.0", + "prettier": "^2.8.8", "ts-jest": "29.2.5", "typescript": "^5.0.4", "typescript-eslint": "8.24.0" diff --git a/visual-js/visual-snapshots/src/api/visual-client.ts b/visual-js/visual-snapshots/src/api/visual-client.ts index b789fb3d..f0dcdb4c 100644 --- a/visual-js/visual-snapshots/src/api/visual-client.ts +++ b/visual-js/visual-snapshots/src/api/visual-client.ts @@ -1,8 +1,9 @@ import { getApi, VisualConfig } from "@saucelabs/visual"; -const clientVersion = "PKG_VERSION"; - -export const initializeVisualApi = (params: VisualConfig) => +export const initializeVisualApi = ( + params: VisualConfig, + clientVersion: string +) => getApi(params, { userAgent: `visual-snapshots/${clientVersion}`, }); diff --git a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts index 4ef1bde6..6357600a 100644 --- a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts +++ b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts @@ -18,7 +18,7 @@ export class VisualSnapshotsApi { public async generateAndSendPdfFileSnapshots( pdfFilePages: AsyncGenerator, - params: CreateVisualSnapshotsParams, + params: CreateVisualSnapshotsParams ) { const buildId = await this.createBuild(params); @@ -27,7 +27,7 @@ export class VisualSnapshotsApi { await this.uploadImageAndCreateSnapshot( pdfPageImage, buildId, - `page-${pageNumber}`, + `page-${pageNumber}` ); pageNumber++; } @@ -36,7 +36,7 @@ export class VisualSnapshotsApi { } private async createBuild( - params: CreateVisualSnapshotsParams, + params: CreateVisualSnapshotsParams ): Promise { const build = await this.api.createBuild({ name: params.buildName, @@ -52,7 +52,7 @@ export class VisualSnapshotsApi { private async uploadImageAndCreateSnapshot( snapshot: Buffer, buildId: string, - snapshotName: string, + snapshotName: string ) { const uploadId = await this.api.uploadSnapshot({ buildId, @@ -82,11 +82,11 @@ export class VisualSnapshotsApi { [BuildStatus.Running, BuildStatus.Queued].includes(buildStatus.status) ) { console.info( - `Build ${buildId} finished but snapshots haven't been compared yet. Check the build status in a few moments.`, + `Build ${buildId} finished but snapshots haven't been compared yet. Check the build status in a few moments.` ); } else { console.info( - `Build ${buildId} finished (status=${buildStatus.status}, unapprovedCount=${buildStatus.unapprovedCount}, errorCount=${buildStatus.errorCount}).`, + `Build ${buildId} finished (status=${buildStatus.status}, unapprovedCount=${buildStatus.unapprovedCount}, errorCount=${buildStatus.errorCount}).` ); } } diff --git a/visual-js/visual-snapshots/src/app/pdf-converter.ts b/visual-js/visual-snapshots/src/app/pdf-converter.ts index e316ffa7..70bdbc37 100644 --- a/visual-js/visual-snapshots/src/app/pdf-converter.ts +++ b/visual-js/visual-snapshots/src/app/pdf-converter.ts @@ -2,7 +2,7 @@ import { pdf } from "pdf-to-img"; export class PdfConverter { public async *convertPagesToImages( - pdfFilePath: string, + pdfFilePath: string ): AsyncGenerator { for await (const pdfPageImage of await pdf(pdfFilePath, { scale: 1 })) { yield pdfPageImage; diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts index 363bcdf6..06b5c762 100644 --- a/visual-js/visual-snapshots/src/app/pdf-handler.ts +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -11,15 +11,21 @@ export interface PdfCommandParams CreateVisualSnapshotsParams {} export class PdfCommandHandler { + private clientVersion: string; + + constructor(clientVersion: string) { + this.clientVersion = clientVersion; + } + public async handle(pdfFilePath: string, params: PdfCommandParams) { - const visualApi = initializeVisualApi(params); + const visualApi = initializeVisualApi(params, this.clientVersion); const visualSnapshots = new VisualSnapshotsApi(visualApi); const pdfConverter = new PdfConverter(); const pdfPageImages = pdfConverter.convertPagesToImages(pdfFilePath); await visualSnapshots.generateAndSendPdfFileSnapshots( pdfPageImages, - params, + params ); } } diff --git a/visual-js/visual-snapshots/src/commands/options.ts b/visual-js/visual-snapshots/src/commands/options.ts index a9346f7a..3e37c743 100644 --- a/visual-js/visual-snapshots/src/commands/options.ts +++ b/visual-js/visual-snapshots/src/commands/options.ts @@ -5,7 +5,7 @@ export const usernameOption = new Option( "-u, --user ", "Your Sauce Labs username. You can get this from the header of app.saucelabs.com." + EOL + - "If not provided, SAUCE_USERNAME environment variable will be used.", + "If not provided, SAUCE_USERNAME environment variable will be used." ) .env("SAUCE_USERNAME") .makeOptionMandatory(true); @@ -14,16 +14,16 @@ export const accessKeyOption = new Option( "-k, --key ", "Your Sauce Labs access key. You can get this from the header of app.saucelabs.com" + EOL + - "If not provided, SAUCE_ACCESS_KEY environment variable will be used.", + "If not provided, SAUCE_ACCESS_KEY environment variable will be used." ) .env("SAUCE_ACCESS_KEY") .makeOptionMandatory(true); export const regionOption = new Option( "-r, --region ", - "The region you\'d like to run your Visual tests in. Defaults to \'us-west-1\' if not supplied. Can be one of the following: \'eu-central-1\', \'us-west-1\' or \'us-east-4\'." + + "The region you'd like to run your Visual tests in. Defaults to 'us-west-1' if not supplied. Can be one of the following: 'eu-central-1', 'us-west-1' or 'us-east-4'." + EOL + - "If not provided, SAUCE_REGION environment variable will be used.", + "If not provided, SAUCE_REGION environment variable will be used." ) .env("SAUCE_REGION") .default("us-west-1"); @@ -32,28 +32,28 @@ export const buildNameOption = new Option( "-n, --build-name ", "The name you would like to appear in the Sauce Visual dashboard." + EOL + - "If not provided, SAUCE_VISUAL_BUILD_NAME environment variable will be used.", + "If not provided, SAUCE_VISUAL_BUILD_NAME environment variable will be used." ).env("SAUCE_VISUAL_BUILD_NAME"); export const branchOption = new Option( "-b, --branch ", "The branch name you would like to associate this build with. We recommend using your current VCS branch in CI." + EOL + - "If not provided, SAUCE_VISUAL_BRANCH environment variable will be used.", + "If not provided, SAUCE_VISUAL_BRANCH environment variable will be used." ).env("SAUCE_VISUAL_BRANCH"); export const defaultBranchOption = new Option( "-d, --default-branch ", - " The main branch name you would like to associate this build with. Usually \'main\' or \'master\' or alternatively the branch name your current branch was derived from." + + " The main branch name you would like to associate this build with. Usually 'main' or 'master' or alternatively the branch name your current branch was derived from." + EOL + - "If not provided, SAUCE_VISUAL_DEFAULT_BRANCH environment variable will be used.", + "If not provided, SAUCE_VISUAL_DEFAULT_BRANCH environment variable will be used." ).env("SAUCE_VISUAL_DEFAULT_BRANCH"); export const projectOption = new Option( "-p, --project ", "The label / project you would like to associate this build with." + EOL + - "If not provided, SAUCE_VISUAL_PROJECT environment variable will be used.", + "If not provided, SAUCE_VISUAL_PROJECT environment variable will be used." ).env("SAUCE_VISUAL_PROJECT"); export const buildIdOption = new Option( @@ -62,12 +62,12 @@ export const buildIdOption = new Option( EOL + "By default, this is not set and we create / finish a build during setup / teardown." + EOL + - "If not provided, SAUCE_VISUAL_BUILD_ID environment variable will be used.", + "If not provided, SAUCE_VISUAL_BUILD_ID environment variable will be used." ).env("SAUCE_VISUAL_BUILD_ID"); export const customIdOption = new Option( "--custom-id ", "For advanced users, a user-supplied custom ID to identify this build. Can be used in CI to identify / check / re-check the status of a single build. Usage suggestions: CI pipeline ID." + EOL + - "If not provided, SAUCE_VISUAL_CUSTOM_ID environment variable will be used.", + "If not provided, SAUCE_VISUAL_CUSTOM_ID environment variable will be used." ).env("SAUCE_VISUAL_CUSTOM_ID"); diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index 9890b766..8bd01bc6 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -12,7 +12,7 @@ import { } from "./options.js"; import { PdfCommandHandler, PdfCommandParams } from "../app/pdf-handler.js"; -export const pdfCommand = () => { +export const pdfCommand = (clientVersion: string) => { return new Command() .name("pdf") .description("Create visual snapshots for each page of a PDF file") @@ -27,7 +27,7 @@ export const pdfCommand = () => { .addOption(buildIdOption) .addOption(customIdOption) .action((pdfFilePath: string, params: PdfCommandParams) => { - new PdfCommandHandler() + new PdfCommandHandler(clientVersion) .handle(pdfFilePath, params) .then(() => { console.log("Successfully created PDF snapshots"); diff --git a/visual-js/visual-snapshots/src/index.ts b/visual-js/visual-snapshots/src/index.ts index 71f9672a..fe32d505 100644 --- a/visual-js/visual-snapshots/src/index.ts +++ b/visual-js/visual-snapshots/src/index.ts @@ -3,13 +3,15 @@ import { Command } from "commander"; import { pdfCommand } from "./commands/pdf.js"; +const clientVersion = "PKG_VERSION"; + const program = new Command(); program .name("visual-snapshots") .description("Create visual snapshots of a document.") - .version("0.1.0"); + .version(clientVersion); -program.addCommand(pdfCommand()); +program.addCommand(pdfCommand(clientVersion)); program.parse(); diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts index 8ed74ce7..58707c79 100644 --- a/visual-js/visual-snapshots/test/api/visual-api.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -14,7 +14,7 @@ describe("VisualSnapshots", () => { describe("generateAndSendPdfFileSnapshots", () => { const consoleInfoSpy = jest .spyOn(console, "info") - .mockImplementation(() => {}); + .mockImplementation(() => undefined); let pdfPages: AsyncGenerator; @@ -35,7 +35,7 @@ describe("VisualSnapshots", () => { beforeEach(() => { createBuildMock.mockReset(); createBuildMock.mockReturnValueOnce( - Promise.resolve({ id: "build-id", url: "http://build-url/build-id" }), + Promise.resolve({ id: "build-id", url: "http://build-url/build-id" }) ); uploadSnapshotMock.mockReset(); uploadSnapshotMock @@ -50,7 +50,7 @@ describe("VisualSnapshots", () => { }); const assertSuccessfulPdfSnapshotsGeneration = ( - params: CreateVisualSnapshotsParams, + params: CreateVisualSnapshotsParams ) => { expect(createBuildMock).toHaveBeenCalledWith({ name: params.buildName, @@ -119,7 +119,7 @@ describe("VisualSnapshots", () => { status: BuildStatus.Running, unapprovedCount: 2, errorCount: 0, - }), + }) ); await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); @@ -133,7 +133,7 @@ describe("VisualSnapshots", () => { status: BuildStatus.Approved, unapprovedCount: 0, errorCount: 0, - }), + }) ); await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); @@ -148,7 +148,7 @@ describe("VisualSnapshots", () => { status: BuildStatus.Unapproved, unapprovedCount: 2, errorCount: 0, - }), + }) ); const params = {} as CreateVisualSnapshotsParams; diff --git a/visual-js/visual-snapshots/test/api/visual-client.spec.ts b/visual-js/visual-snapshots/test/api/visual-client.spec.ts index 9d1e821e..b6ed12bc 100644 --- a/visual-js/visual-snapshots/test/api/visual-client.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-client.spec.ts @@ -11,15 +11,16 @@ describe("visual api client", () => { test("initializeVisualApi", async () => { const getApiSpy = sauceVisual.getApi; + const pkgVersion = "0.1.0"; const params = { user: "fake-username", key: "fake-access-key", region: "us-west-1", } as sauceVisual.VisualConfig; - initializeVisualApi(params); + initializeVisualApi(params, pkgVersion); expect(getApiSpy).toHaveBeenCalledWith(params, { - userAgent: "visual-snapshots/PKG_VERSION", + userAgent: `visual-snapshots/${pkgVersion}`, }); }); }); diff --git a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts index 5b00916b..075214ba 100644 --- a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts +++ b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts @@ -16,8 +16,9 @@ describe("PdfConverter", () => { test("convertPagesToImages", async () => { const pdfFilePath = "./fake-pdf-file-path.pdf"; const pdfConverter = new PdfConverter(); - const pdfPageImagesGenerator = - await pdfConverter.convertPagesToImages(pdfFilePath); + const pdfPageImagesGenerator = await pdfConverter.convertPagesToImages( + pdfFilePath + ); for (let i = 0; i < 2; ++i) { const pdfPageImage = await pdfPageImagesGenerator.next(); diff --git a/visual-js/yarn.lock b/visual-js/yarn.lock index 06a99b66..3005b557 100644 --- a/visual-js/yarn.lock +++ b/visual-js/yarn.lock @@ -1471,6 +1471,24 @@ __metadata: languageName: node linkType: hard +"@eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.10.0": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": version: 4.11.1 resolution: "@eslint-community/regexpp@npm:4.11.1" @@ -2481,6 +2499,25 @@ __metadata: languageName: node linkType: hard +"@mapbox/node-pre-gyp@npm:^1.0.0": + version: 1.0.11 + resolution: "@mapbox/node-pre-gyp@npm:1.0.11" + dependencies: + detect-libc: ^2.0.0 + https-proxy-agent: ^5.0.0 + make-dir: ^3.1.0 + node-fetch: ^2.6.7 + nopt: ^5.0.0 + npmlog: ^5.0.1 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.11 + bin: + node-pre-gyp: bin/node-pre-gyp + checksum: b848f6abc531a11961d780db813cc510ca5a5b6bf3184d72134089c6875a91c44d571ba6c1879470020803f7803609e7b2e6e429651c026fe202facd11d444b8 + languageName: node + linkType: hard + "@napi-rs/nice-android-arm-eabi@npm:1.0.1": version: 1.0.1 resolution: "@napi-rs/nice-android-arm-eabi@npm:1.0.1" @@ -3059,6 +3096,27 @@ __metadata: languageName: unknown linkType: soft +"@saucelabs/visual-snapshots@workspace:visual-snapshots": + version: 0.0.0-use.local + resolution: "@saucelabs/visual-snapshots@workspace:visual-snapshots" + dependencies: + "@saucelabs/visual": ^0.13.0 + "@types/jest": 29.5.14 + commander: ^12.0.0 + eslint: ^8.0.1 + eslint-config-prettier: ^8.3.0 + eslint-plugin-prettier: ^4.0.0 + jest: 29.7.0 + pdf-to-img: ~4.4.0 + prettier: ^2.8.8 + ts-jest: 29.2.5 + typescript: ^5.0.4 + typescript-eslint: 8.24.0 + bin: + visual-snapshots: ./lib/src/index.js + languageName: unknown + linkType: soft + "@saucelabs/visual-storybook@workspace:visual-storybook": version: 0.0.0-use.local resolution: "@saucelabs/visual-storybook@workspace:visual-storybook" @@ -3716,6 +3774,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:29.5.14": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 + languageName: node + linkType: hard + "@types/jest@npm:^29.5.6": version: 29.5.13 resolution: "@types/jest@npm:29.5.13" @@ -3942,6 +4010,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.24.0" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.24.0 + "@typescript-eslint/type-utils": 8.24.0 + "@typescript-eslint/utils": 8.24.0 + "@typescript-eslint/visitor-keys": 8.24.0 + graphemer: ^1.4.0 + ignore: ^5.3.1 + natural-compare: ^1.4.0 + ts-api-utils: ^2.0.1 + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 761440236a38d51825ac22ab84fc2d054b307a1f2b7ad308bd12da2420f6d5844fdc4f44c0cd9dd30087ca2c7ecfca90b75744f119a1049b2e66533598a51900 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^5.59.1": version: 5.62.0 resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" @@ -3966,6 +4055,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/parser@npm:8.24.0" + dependencies: + "@typescript-eslint/scope-manager": 8.24.0 + "@typescript-eslint/types": 8.24.0 + "@typescript-eslint/typescript-estree": 8.24.0 + "@typescript-eslint/visitor-keys": 8.24.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: e9f53b152baaae042df3ca6faa55279d8219e03234688b96516bbe617ecb6fa037f137fb5b37417a5e7e67e388fc7d89c0333767b493c5f591f8e99bce9039d6 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.59.1": version: 5.62.0 resolution: "@typescript-eslint/parser@npm:5.62.0" @@ -4021,6 +4126,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/scope-manager@npm:8.24.0" + dependencies: + "@typescript-eslint/types": 8.24.0 + "@typescript-eslint/visitor-keys": 8.24.0 + checksum: 1b24d972847458dd4b031e66006c534ae176d60806d3265f0d2a5686bdc3dec9c0353ea94373a855eaf7e9306304eef939781eda1a9b826633c835bceb0fce10 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/type-utils@npm:5.62.0" @@ -4038,6 +4153,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/type-utils@npm:8.24.0" + dependencies: + "@typescript-eslint/typescript-estree": 8.24.0 + "@typescript-eslint/utils": 8.24.0 + debug: ^4.3.4 + ts-api-utils: ^2.0.1 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 81322b0ebc0c7ce1396732497403c3c0f18b8d5f74b697d9288becfd414ac3bf8f7886191f82ef32772ce60a382c793142870a17364f013f9344b1cf24fd6a65 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -4052,6 +4182,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/types@npm:8.24.0" + checksum: 31548119787c7429107a0061f5c82a2ae2b29905fbb5e867f621cea0c00fbe35b3c5ee5961936127d11226461e2248b09c8467959c8c387caa72f15d21293814 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -4089,6 +4226,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.24.0" + dependencies: + "@typescript-eslint/types": 8.24.0 + "@typescript-eslint/visitor-keys": 8.24.0 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^2.0.1 + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 7415a35edc898f25443b9bbb8ec100cff54f8eafe6379348213e8958aa593981298252730b912da2a99c24e4784f23b4e32c6f56420857975bcb076e13467e00 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" @@ -4107,6 +4262,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/utils@npm:8.24.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@typescript-eslint/scope-manager": 8.24.0 + "@typescript-eslint/types": 8.24.0 + "@typescript-eslint/typescript-estree": 8.24.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: de2897d1d2d878b86289d039a4f2b57c8f6ef88b1b48946697ca6422b10041a78f989cfa09b9b73106963bf1ed12a5081e14c3cfb6bb1b537fc8cd2b726ab73e + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" @@ -4127,6 +4297,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.24.0": + version: 8.24.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.24.0" + dependencies: + "@typescript-eslint/types": 8.24.0 + eslint-visitor-keys: ^4.2.0 + checksum: c07ef21d5de644ca34802f95dc742cde75422210d80456e1e9d6f4a6cee21a1332af3bc90e62f2ca4f9e929eec9f0a25fda2043f2bdeb0acd3feab206f2a73af + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" @@ -4439,6 +4619,13 @@ __metadata: languageName: node linkType: hard +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -4654,6 +4841,13 @@ __metadata: languageName: node linkType: hard +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + "arch@npm:^2.2.0": version: 2.2.0 resolution: "arch@npm:2.2.0" @@ -4749,6 +4943,16 @@ __metadata: languageName: node linkType: hard +"are-we-there-yet@npm:^2.0.0": + version: 2.0.0 + resolution: "are-we-there-yet@npm:2.0.0" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c + languageName: node + linkType: hard + "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" @@ -5514,6 +5718,29 @@ __metadata: languageName: node linkType: hard +"canvas@npm:3.1.0": + version: 3.1.0 + resolution: "canvas@npm:3.1.0" + dependencies: + node-addon-api: ^7.0.0 + node-gyp: latest + prebuild-install: ^7.1.1 + checksum: d965d13bb75342b83e77cdeffe587237e1291e01aa08e62c932f755a84bcdd4eeb0e77837ae0c110bed96d02c7cb36d15085d493f1710739c0a5aa8fd5e80922 + languageName: node + linkType: hard + +"canvas@npm:^2.11.2": + version: 2.11.2 + resolution: "canvas@npm:2.11.2" + dependencies: + "@mapbox/node-pre-gyp": ^1.0.0 + nan: ^2.17.0 + node-gyp: latest + simple-get: ^3.0.3 + checksum: 61e554aef80022841dc836964534082ec21435928498032562089dfb7736215f039c7d99ee546b0cf10780232d9bf310950f8b4d489dc394e0fb6f6adfc97994 + languageName: node + linkType: hard + "capital-case@npm:^1.0.4": version: 1.0.4 resolution: "capital-case@npm:1.0.4" @@ -5898,6 +6125,15 @@ __metadata: languageName: node linkType: hard +"color-support@npm:^1.1.2": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + "colorette@npm:^2.0.16": version: 2.0.20 resolution: "colorette@npm:2.0.20" @@ -6022,6 +6258,13 @@ __metadata: languageName: node linkType: hard +"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + "constant-case@npm:^3.0.4": version: 3.0.4 resolution: "constant-case@npm:3.0.4" @@ -6436,6 +6679,15 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^4.2.0": + version: 4.2.1 + resolution: "decompress-response@npm:4.2.1" + dependencies: + mimic-response: ^2.0.0 + checksum: 4e783ca4dfe9417354d61349750fe05236f565a4415a6ca20983a311be2371debaedd9104c0b0e7b36e5f167aeaae04f84f1a0b3f8be4162f1d7d15598b8fdba + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -6492,6 +6744,13 @@ __metadata: languageName: node linkType: hard +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -6585,6 +6844,13 @@ __metadata: languageName: node linkType: hard +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + "depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" @@ -6622,6 +6888,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.0": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 2ba6a939ae55f189aea996ac67afceb650413c7a34726ee92c40fb0deb2400d57ef94631a8a3f052055eea7efb0f99a9b5e6ce923415daa3e68221f963cfc27d + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -7324,6 +7597,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5 + languageName: node + linkType: hard + "eslint@npm:^8.0.1": version: 8.57.1 resolution: "eslint@npm:8.57.1" @@ -7525,6 +7805,13 @@ __metadata: languageName: node linkType: hard +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 + languageName: node + linkType: hard + "expand-tilde@npm:^1.2.2": version: 1.2.2 resolution: "expand-tilde@npm:1.2.2" @@ -7733,6 +8020,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.8 + checksum: 0704d7b85c0305fd2cef37777337dfa26230fdd072dce9fb5c82a4b03156f3ffb8ed3e636033e65d45d2a5805a4e475825369a27404c0307f2db0c8eb3366fbd + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -8223,6 +8523,23 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^3.0.0": + version: 3.0.2 + resolution: "gauge@npm:3.0.2" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.2 + console-control-strings: ^1.0.0 + has-unicode: ^2.0.1 + object-assign: ^4.1.1 + signal-exit: ^3.0.0 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.2 + checksum: 81296c00c7410cdd48f997800155fbead4f32e4f82109be0719c63edc8560e6579946cc8abd04205297640691ec26d21b578837fd13a4e96288ab4b40b1dc3e9 + languageName: node + linkType: hard + "geckodriver@npm:^4.3.1": version: 4.5.1 resolution: "geckodriver@npm:4.5.1" @@ -8335,6 +8652,13 @@ __metadata: languageName: node linkType: hard +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -8623,6 +8947,13 @@ __metadata: languageName: node linkType: hard +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + "hasha@npm:^5.0.0": version: 5.2.2 resolution: "hasha@npm:5.2.2" @@ -8790,7 +9121,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:5.0.1": +"https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -8866,7 +9197,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0": +"ignore@npm:^5.2.0, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be @@ -8968,7 +9299,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.4": +"ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 @@ -10130,7 +10461,7 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.5.0, jest@npm:^29.6.4, jest@npm:^29.7.0": +"jest@npm:29.7.0, jest@npm:^29.5.0, jest@npm:^29.6.4, jest@npm:^29.7.0": version: 29.7.0 resolution: "jest@npm:29.7.0" dependencies: @@ -10851,7 +11182,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -10973,7 +11304,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -11015,6 +11346,13 @@ __metadata: languageName: node linkType: hard +"mimic-response@npm:^2.0.0": + version: 2.1.0 + resolution: "mimic-response@npm:2.1.0" + checksum: 014fad6ab936657e5f2f48bd87af62a8e928ebe84472aaf9e14fec4fcb31257a5edff77324d8ac13ddc6685ba5135cf16e381efac324e5f174fb4ddbf902bf07 + languageName: node + linkType: hard + "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -11081,7 +11419,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.5, minimist@npm:^1.2.8": +"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -11186,7 +11524,7 @@ __metadata: languageName: node linkType: hard -"mkdirp-classic@npm:^0.5.2": +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac @@ -11279,6 +11617,22 @@ __metadata: languageName: node linkType: hard +"nan@npm:^2.17.0": + version: 2.22.2 + resolution: "nan@npm:2.22.2" + dependencies: + node-gyp: latest + checksum: efa1ac78012ccd5e7cb7fe96141b7b0886ae88775dde7977fdc12236d090a9bf76b89744152b1e804824f33b2b0059f22ce9d01e04005701e78b7e7c817af1ac + languageName: node + linkType: hard + +"napi-build-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "napi-build-utils@npm:2.0.0" + checksum: 532121efd2dd2272595580bca48859e404bdd4ed455a72a28432ba44868c38d0e64fac3026a8f82bf8563d2a18b32eb9a1d59e601a9da4e84ba4d45b922297f5 + languageName: node + linkType: hard + "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" @@ -11379,6 +11733,15 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.3.0": + version: 3.74.0 + resolution: "node-abi@npm:3.74.0" + dependencies: + semver: ^7.3.5 + checksum: b33617fe1867a261379c5b4340a7f2018547ffa652b469d9459a0038d97c227d6d57f56b921007e6614552c323fdf67feff2eeb3baa85d6f45957983d61eccc7 + languageName: node + linkType: hard + "node-addon-api@npm:^7.0.0": version: 7.1.1 resolution: "node-addon-api@npm:7.1.1" @@ -11402,7 +11765,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.12": +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -11470,6 +11833,17 @@ __metadata: languageName: node linkType: hard +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: 1 + bin: + nopt: bin/nopt.js + checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f + languageName: node + linkType: hard + "nopt@npm:^7.0.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" @@ -11525,6 +11899,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^5.0.1": + version: 5.0.1 + resolution: "npmlog@npm:5.0.1" + dependencies: + are-we-there-yet: ^2.0.0 + console-control-strings: ^1.1.0 + gauge: ^3.0.0 + set-blocking: ^2.0.0 + checksum: 516b2663028761f062d13e8beb3f00069c5664925871a9b57989642ebe09f23ab02145bf3ab88da7866c4e112cafff72401f61a672c7c8a20edc585a7016ef5f + languageName: node + linkType: hard + "nullthrows@npm:^1.1.1": version: 1.1.1 resolution: "nullthrows@npm:1.1.1" @@ -12056,6 +12442,13 @@ __metadata: languageName: node linkType: hard +"path2d@npm:^0.2.0": + version: 0.2.2 + resolution: "path2d@npm:0.2.2" + checksum: 06f07f20797163d9807c211bc3e2b4edac462790c0cbe774bc681f18cfeba27a7cdd2d539e62a6863ff8d0fcfe4c5f6f20463b608f3dd32e44bba7be6f632f04 + languageName: node + linkType: hard + "pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" @@ -12079,6 +12472,33 @@ __metadata: languageName: node linkType: hard +"pdf-to-img@npm:~4.4.0": + version: 4.4.0 + resolution: "pdf-to-img@npm:4.4.0" + dependencies: + canvas: 3.1.0 + pdfjs-dist: 4.2.67 + bin: + pdf2img: bin/cli.mjs + checksum: c644bc3fe1281e19992a38c41b9bd08291f6aba82ac1deaa5240bd57671eba43957eb22fe3892bce20209b1c3c6b06a2979d818b0bf9b08e81872f365235e43b + languageName: node + linkType: hard + +"pdfjs-dist@npm:4.2.67": + version: 4.2.67 + resolution: "pdfjs-dist@npm:4.2.67" + dependencies: + canvas: ^2.11.2 + path2d: ^0.2.0 + dependenciesMeta: + canvas: + optional: true + path2d: + optional: true + checksum: 7aadfc2c36de22abed2722f116e4a160d195162d16b8c1b8f78aa63a4b4fc1e05bee51f7806ab1709e0758a137f689dd377a442463e25bc07dfbd34bbfb7c94d + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -12198,6 +12618,28 @@ __metadata: languageName: node linkType: hard +"prebuild-install@npm:^7.1.1": + version: 7.1.3 + resolution: "prebuild-install@npm:7.1.3" + dependencies: + detect-libc: ^2.0.0 + expand-template: ^2.0.3 + github-from-package: 0.0.0 + minimist: ^1.2.3 + mkdirp-classic: ^0.5.3 + napi-build-utils: ^2.0.0 + node-abi: ^3.3.0 + pump: ^3.0.0 + rc: ^1.2.7 + simple-get: ^4.0.0 + tar-fs: ^2.0.0 + tunnel-agent: ^0.6.0 + bin: + prebuild-install: bin.js + checksum: 300740ca415e9ddbf2bd363f1a6d2673cc11dd0665c5ec431bbb5bf024c2f13c56791fb939ce2b2a2c12f2d2a09c91316169e8063a80eb4482a44b8fe5b265e1 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -12551,6 +12993,20 @@ __metadata: languageName: node linkType: hard +"rc@npm:^1.2.7": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + languageName: node + linkType: hard + "react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -13243,7 +13699,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -13264,6 +13720,35 @@ __metadata: languageName: node linkType: hard +"simple-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "simple-concat@npm:1.0.1" + checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a + languageName: node + linkType: hard + +"simple-get@npm:^3.0.3": + version: 3.1.1 + resolution: "simple-get@npm:3.1.1" + dependencies: + decompress-response: ^4.2.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: 80195e70bf171486e75c31e28e5485468195cc42f85940f8b45c4a68472160144d223eb4d07bc82ef80cb974b7c401db021a540deb2d34ac4b3b8883da2d6401 + languageName: node + linkType: hard + +"simple-get@npm:^4.0.0": + version: 4.0.1 + resolution: "simple-get@npm:4.0.1" + dependencies: + decompress-response: ^6.0.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: e4132fd27cf7af230d853fa45c1b8ce900cb430dd0a3c6d3829649fe4f2b26574c803698076c4006450efb0fad2ba8c5455fbb5755d4b0a5ec42d4f12b31d27e + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -13636,7 +14121,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -13722,6 +14207,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + "strnum@npm:^1.0.5": version: 1.0.5 resolution: "strnum@npm:1.0.5" @@ -13827,6 +14319,18 @@ __metadata: languageName: node linkType: hard +"tar-fs@npm:^2.0.0": + version: 2.1.2 + resolution: "tar-fs@npm:2.1.2" + dependencies: + chownr: ^1.1.1 + mkdirp-classic: ^0.5.2 + pump: ^3.0.0 + tar-stream: ^2.1.4 + checksum: 6b4fcd38a644b5cd3325f687b9f1f48cd19809b63cbc8376fe794f68361849a17120d036833b3a97de6acb1df588844476309b8c2d0bcaf53f19da2d56ac07de + languageName: node + linkType: hard + "tar-fs@npm:^3.0.6": version: 3.0.6 resolution: "tar-fs@npm:3.0.6" @@ -14072,6 +14576,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.0.1": + version: 2.0.1 + resolution: "ts-api-utils@npm:2.0.1" + peerDependencies: + typescript: ">=4.8.4" + checksum: ca31f4dc3c0d69691599de2955b41879c27cb91257f2a468bbb444d3f09982a5f717a941fcebd3aaa092b778710647a0be1c2b1dd75cf6c82ceffc3bf4c7d27d + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -14097,7 +14610,7 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^29.1.1": +"ts-jest@npm:29.2.5, ts-jest@npm:^29.1.1": version: 29.2.5 resolution: "ts-jest@npm:29.2.5" dependencies: @@ -14363,6 +14876,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:8.24.0": + version: 8.24.0 + resolution: "typescript-eslint@npm:8.24.0" + dependencies: + "@typescript-eslint/eslint-plugin": 8.24.0 + "@typescript-eslint/parser": 8.24.0 + "@typescript-eslint/utils": 8.24.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 96587b657e0f73e2bdbf0cde504e7a020511be21785397fddff74fb00795c3e36d79b72d5df091430db4b18aefe1e507998d9f456d070b1b7ea86c3da2273bec + languageName: node + linkType: hard + "typescript@npm:^5.0.4, typescript@npm:^5.1.6, typescript@npm:^5.5.4": version: 5.6.3 resolution: "typescript@npm:5.6.3" @@ -15032,6 +15559,15 @@ __metadata: languageName: node linkType: hard +"wide-align@npm:^1.1.2": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + "widest-line@npm:^3.1.0": version: 3.1.0 resolution: "widest-line@npm:3.1.0" From 3baea3afa67ffa5c79bcad06fa92728e7bca7458 Mon Sep 17 00:00:00 2001 From: Sebastian Alex Date: Tue, 11 Mar 2025 10:17:50 +0100 Subject: [PATCH 04/15] [INT-20] Additional CLI options for PDF upload (#195) --- .../src/api/visual-snapshots-api.ts | 42 +++- .../visual-snapshots/src/app/pdf-handler.ts | 2 + .../visual-snapshots/src/commands/options.ts | 10 +- .../visual-snapshots/src/commands/pdf.ts | 21 +- .../visual-snapshots/src/commands/validate.ts | 25 +++ .../visual-snapshots/src/utils/format.ts | 13 ++ .../api/__snapshots__/visual-api.spec.ts.snap | 54 +++++- .../test/api/visual-api.spec.ts | 179 +++++++++++++----- .../test/utils/format.spec.ts | 19 ++ 9 files changed, 307 insertions(+), 58 deletions(-) create mode 100644 visual-js/visual-snapshots/src/commands/validate.ts create mode 100644 visual-js/visual-snapshots/src/utils/format.ts create mode 100644 visual-js/visual-snapshots/test/utils/format.spec.ts diff --git a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts index 6357600a..fa4d5c1b 100644 --- a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts +++ b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts @@ -1,4 +1,5 @@ import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; +import { formatString } from "../utils/format.js"; export interface CreateVisualSnapshotsParams { branch: string; @@ -6,7 +7,10 @@ export interface CreateVisualSnapshotsParams { defaultBranch: string; project: string; customId: string; - buildId: string; + buildId?: string; + suiteName?: string; + testName?: string; + snapshotName?: string; } export class VisualSnapshotsApi { @@ -17,17 +21,30 @@ export class VisualSnapshotsApi { } public async generateAndSendPdfFileSnapshots( + filename: string, pdfFilePages: AsyncGenerator, params: CreateVisualSnapshotsParams ) { - const buildId = await this.createBuild(params); + const buildId = params.buildId ?? (await this.createBuild(params)); + const testName = params.testName + ? formatString(params.testName, { filename }) + : undefined; + + const snapshotFormat = this.getSnapshotFormat(params.snapshotName); let pageNumber = 1; for await (const pdfPageImage of pdfFilePages) { + const snapshotName = formatString(snapshotFormat, { + filename, + page: pageNumber, + }); + await this.uploadImageAndCreateSnapshot( pdfPageImage, buildId, - `page-${pageNumber}` + snapshotName, + testName, + params.suiteName ); pageNumber++; } @@ -52,7 +69,9 @@ export class VisualSnapshotsApi { private async uploadImageAndCreateSnapshot( snapshot: Buffer, buildId: string, - snapshotName: string + snapshotName: string, + testName?: string, + suiteName?: string ) { const uploadId = await this.api.uploadSnapshot({ buildId, @@ -66,6 +85,8 @@ export class VisualSnapshotsApi { uploadId, name: snapshotName, diffingMethod: DiffingMethod.Balanced, + testName, + suiteName, }); console.info(`Created a snapshot ${snapshotName} for build ${buildId}.`); @@ -90,4 +111,17 @@ export class VisualSnapshotsApi { ); } } + + private getSnapshotFormat(format: string | undefined) { + if (!format) { + return `page-{page}`; + } + + // Page number is always required to make the snapshot names unique + if (!format.includes("{page}")) { + format = format += "-{page}"; + } + + return format; + } } diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts index 06b5c762..4d0b27e2 100644 --- a/visual-js/visual-snapshots/src/app/pdf-handler.ts +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -5,6 +5,7 @@ import { import { initializeVisualApi } from "../api/visual-client.js"; import { PdfConverter } from "./pdf-converter.js"; import { VisualConfig } from "@saucelabs/visual"; +import path from "path"; export interface PdfCommandParams extends VisualConfig, @@ -24,6 +25,7 @@ export class PdfCommandHandler { const pdfPageImages = pdfConverter.convertPagesToImages(pdfFilePath); await visualSnapshots.generateAndSendPdfFileSnapshots( + path.basename(pdfFilePath), pdfPageImages, params ); diff --git a/visual-js/visual-snapshots/src/commands/options.ts b/visual-js/visual-snapshots/src/commands/options.ts index 3e37c743..68c365c5 100644 --- a/visual-js/visual-snapshots/src/commands/options.ts +++ b/visual-js/visual-snapshots/src/commands/options.ts @@ -1,5 +1,6 @@ import { Option } from "commander"; import { EOL } from "os"; +import { parseUuid } from "./validate.js"; export const usernameOption = new Option( "-u, --user ", @@ -63,7 +64,9 @@ export const buildIdOption = new Option( "By default, this is not set and we create / finish a build during setup / teardown." + EOL + "If not provided, SAUCE_VISUAL_BUILD_ID environment variable will be used." -).env("SAUCE_VISUAL_BUILD_ID"); +) + .env("SAUCE_VISUAL_BUILD_ID") + .argParser(parseUuid); export const customIdOption = new Option( "--custom-id ", @@ -71,3 +74,8 @@ export const customIdOption = new Option( EOL + "If not provided, SAUCE_VISUAL_CUSTOM_ID environment variable will be used." ).env("SAUCE_VISUAL_CUSTOM_ID"); + +export const suiteNameOption = new Option( + "--suite-name ", + "The name of the suite you would like to appear in the Sauce Visual dashboard." +); diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index 8bd01bc6..0dd48a75 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -1,4 +1,4 @@ -import { Command } from "commander"; +import { Command, Option } from "commander"; import { accessKeyOption, branchOption, @@ -8,9 +8,25 @@ import { defaultBranchOption, projectOption, regionOption, + suiteNameOption, usernameOption, } from "./options.js"; import { PdfCommandHandler, PdfCommandParams } from "../app/pdf-handler.js"; +import { EOL } from "os"; + +export const testNameOption = new Option( + "--test-name ", + "The name of the test you would like to appear in the Sauce Visual dashboard." + + EOL + + "Supports the following parameters: {filename}" +); + +export const snapshotNameOption = new Option( + "--snapshot-name ", + "The name of the snapshot you would like to appear in the Sauce Visual dashboard." + + EOL + + " Supports the following parameters: {filename}, {page}" +); export const pdfCommand = (clientVersion: string) => { return new Command() @@ -26,6 +42,9 @@ export const pdfCommand = (clientVersion: string) => { .addOption(projectOption) .addOption(buildIdOption) .addOption(customIdOption) + .addOption(suiteNameOption) + .addOption(testNameOption) + .addOption(snapshotNameOption) .action((pdfFilePath: string, params: PdfCommandParams) => { new PdfCommandHandler(clientVersion) .handle(pdfFilePath, params) diff --git a/visual-js/visual-snapshots/src/commands/validate.ts b/visual-js/visual-snapshots/src/commands/validate.ts new file mode 100644 index 00000000..39b78e05 --- /dev/null +++ b/visual-js/visual-snapshots/src/commands/validate.ts @@ -0,0 +1,25 @@ +import { InvalidArgumentError } from "commander"; + +const UUID_REGEX = + /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i; +const DASHLESS_UUID_REGEX = /^[a-f0-9]{32}$/i; + +export function parseUuid(input: string) { + if (UUID_REGEX.test(input)) { + return input; + } + + if (DASHLESS_UUID_REGEX.test(input)) { + return ( + `${input.substring(0, 8)}-` + + `${input.substring(8, 12)}-` + + `${input.substring(12, 16)}-` + + `${input.substring(16, 20)}-` + + `${input.substring(20, 32)}` + ); + } + + throw new InvalidArgumentError( + "Expected UUID in form of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx or 32 hexadecimal characters." + ); +} diff --git a/visual-js/visual-snapshots/src/utils/format.ts b/visual-js/visual-snapshots/src/utils/format.ts new file mode 100644 index 00000000..cc11b1c6 --- /dev/null +++ b/visual-js/visual-snapshots/src/utils/format.ts @@ -0,0 +1,13 @@ +/** + * Replaces all occurrences of keys in format of `{key}` in `value` with `data[key]`. + * + * If `key` does not exist in data, it is left as it is. + */ +export function formatString( + value: string, + data: Record +) { + return Object.entries(data) + .map(([k, v]) => [k, v.toString()] as const) + .reduce((current, [k, v]) => current.replaceAll(`{${k}}`, v), value); +} diff --git a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap index 72dbb15f..b5b98871 100644 --- a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap +++ b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap @@ -1,5 +1,51 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-id difffing finished 1`] = ` +[ + [ + "Uploaded image to build custom-build-id: upload id=upload-id-0.", + ], + [ + "Created a snapshot custom-snapshot-name-filename.pdf-1 for build custom-build-id.", + ], + [ + "Uploaded image to build custom-build-id: upload id=upload-id-1.", + ], + [ + "Created a snapshot custom-snapshot-name-filename.pdf-2 for build custom-build-id.", + ], + [ + "Build custom-build-id finished.", + ], + [ + "Build custom-build-id finished (status=APPROVED, unapprovedCount=0, errorCount=0).", + ], +] +`; + +exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-id difffing unfinished 1`] = ` +[ + [ + "Uploaded image to build custom-build-id: upload id=upload-id-0.", + ], + [ + "Created a snapshot custom-snapshot-name-filename.pdf-1 for build custom-build-id.", + ], + [ + "Uploaded image to build custom-build-id: upload id=upload-id-1.", + ], + [ + "Created a snapshot custom-snapshot-name-filename.pdf-2 for build custom-build-id.", + ], + [ + "Build custom-build-id finished.", + ], + [ + "Build custom-build-id finished but snapshots haven't been compared yet. Check the build status in a few moments.", + ], +] +`; + exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing finished 1`] = ` [ [ @@ -9,13 +55,13 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing fi "Uploaded image to build build-id: upload id=upload-id-0.", ], [ - "Created a snapshot page-1 for build build-id.", + "Created a snapshot custom-snapshot-name-filename.pdf-1 for build build-id.", ], [ "Uploaded image to build build-id: upload id=upload-id-1.", ], [ - "Created a snapshot page-2 for build build-id.", + "Created a snapshot custom-snapshot-name-filename.pdf-2 for build build-id.", ], [ "Build build-id finished.", @@ -35,13 +81,13 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing un "Uploaded image to build build-id: upload id=upload-id-0.", ], [ - "Created a snapshot page-1 for build build-id.", + "Created a snapshot custom-snapshot-name-filename.pdf-1 for build build-id.", ], [ "Uploaded image to build build-id: upload id=upload-id-1.", ], [ - "Created a snapshot page-2 for build build-id.", + "Created a snapshot custom-snapshot-name-filename.pdf-2 for build build-id.", ], [ "Build build-id finished.", diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts index 58707c79..3dc3368c 100644 --- a/visual-js/visual-snapshots/test/api/visual-api.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -3,6 +3,7 @@ import { CreateVisualSnapshotsParams, VisualSnapshotsApi, } from "../../src/api/visual-snapshots-api.js"; +import { formatString } from "../../src/utils/format.js"; async function* pdfPagesGenerator(): AsyncGenerator { for (let i = 0; i < 2; ++i) { @@ -34,13 +35,14 @@ describe("VisualSnapshots", () => { const visualSnapshots = new VisualSnapshotsApi(visualApiMock); beforeEach(() => { createBuildMock.mockReset(); - createBuildMock.mockReturnValueOnce( - Promise.resolve({ id: "build-id", url: "http://build-url/build-id" }) - ); + createBuildMock.mockResolvedValueOnce({ + id: "build-id", + url: "http://build-url/build-id", + }); uploadSnapshotMock.mockReset(); uploadSnapshotMock - .mockReturnValueOnce(Promise.resolve("upload-id-0")) - .mockReturnValueOnce(Promise.resolve("upload-id-1")); + .mockResolvedValueOnce("upload-id-0") + .mockResolvedValueOnce("upload-id-1"); createSnapshotMock.mockReset(); finishBuildMock.mockReset(); buildStatusMock.mockReset(); @@ -50,26 +52,29 @@ describe("VisualSnapshots", () => { }); const assertSuccessfulPdfSnapshotsGeneration = ( + filename: string, params: CreateVisualSnapshotsParams ) => { - expect(createBuildMock).toHaveBeenCalledWith({ - name: params.buildName, - branch: params.branch, - defaultBranch: params.defaultBranch, - project: params.project, - customId: params.customId, - }); + if (!params.buildId) { + expect(createBuildMock).toHaveBeenCalledWith({ + name: params.buildName, + branch: params.branch, + defaultBranch: params.defaultBranch, + project: params.project, + customId: params.customId, + }); + } expect(uploadSnapshotMock.mock.calls).toEqual([ [ { - buildId: "build-id", + buildId: params.buildId ?? "build-id", image: { data: Buffer.from("fake-image-buffer-0") }, }, ], [ { - buildId: "build-id", + buildId: params.buildId ?? "build-id", image: { data: Buffer.from("fake-image-buffer-1") }, }, ], @@ -79,82 +84,160 @@ describe("VisualSnapshots", () => { [ { diffingMethod: DiffingMethod.Balanced, - buildId: "build-id", - name: "page-1", + buildId: params.buildId ?? "build-id", + name: formatString(params.snapshotName ?? "page-{page}", { + filename, + page: 1, + }), uploadId: "upload-id-0", + suiteName: params.suiteName, + testName: params.testName + ? formatString(params.testName, { + filename, + }) + : undefined, }, ], [ { diffingMethod: DiffingMethod.Balanced, - buildId: "build-id", - name: "page-2", + buildId: params.buildId ?? "build-id", + name: formatString(params.snapshotName ?? "page-{page}", { + filename, + page: 2, + }), uploadId: "upload-id-1", + suiteName: params.suiteName, + testName: params.testName + ? formatString(params.testName, { + filename, + }) + : undefined, }, ], ]); expect(finishBuildMock).toHaveBeenCalledWith({ - uuid: "build-id", + uuid: params.buildId ?? "build-id", }); - expect(buildStatusMock).toHaveBeenCalledWith("build-id"); + expect(buildStatusMock).toHaveBeenCalledWith( + params.buildId ?? "build-id" + ); expect(consoleInfoSpy.mock.calls).toMatchSnapshot(); }; describe("with params", () => { + const filename = "filename.pdf"; const params = { branch: "fake-branch", buildName: "fake-build-name", defaultBranch: "fake-default-branch", project: "fake-project", customId: "fake-custom-id", - buildId: "fake-build-id", - } as CreateVisualSnapshotsParams; + snapshotName: "custom-snapshot-name-{filename}-{page}", + suiteName: "custom-suite-name", + testName: "custom-test-name-{filename}", + } satisfies CreateVisualSnapshotsParams; test("difffing unfinished", async () => { - buildStatusMock.mockReturnValueOnce( - Promise.resolve({ - status: BuildStatus.Running, - unapprovedCount: 2, - errorCount: 0, - }) - ); + buildStatusMock.mockResolvedValueOnce({ + status: BuildStatus.Running, + unapprovedCount: 2, + errorCount: 0, + }); - await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); + await visualSnapshots.generateAndSendPdfFileSnapshots( + filename, + pdfPages, + params + ); - assertSuccessfulPdfSnapshotsGeneration(params); + assertSuccessfulPdfSnapshotsGeneration(filename, params); }); test("difffing finished", async () => { - buildStatusMock.mockReturnValueOnce( - Promise.resolve({ - status: BuildStatus.Approved, - unapprovedCount: 0, - errorCount: 0, - }) - ); + buildStatusMock.mockResolvedValueOnce({ + status: BuildStatus.Approved, + unapprovedCount: 0, + errorCount: 0, + }); - await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); + await visualSnapshots.generateAndSendPdfFileSnapshots( + filename, + pdfPages, + params + ); - assertSuccessfulPdfSnapshotsGeneration(params); + assertSuccessfulPdfSnapshotsGeneration(filename, params); }); }); - test("without params", async () => { - buildStatusMock.mockReturnValueOnce( - Promise.resolve({ - status: BuildStatus.Unapproved, + describe("with params and build-id", () => { + const filename = "filename.pdf"; + const params = { + branch: "fake-branch", + buildName: "fake-build-name", + defaultBranch: "fake-default-branch", + project: "fake-project", + customId: "fake-custom-id", + buildId: "custom-build-id", + snapshotName: "custom-snapshot-name-{filename}-{page}", + suiteName: "custom-suite-name", + testName: "custom-test-name-{filename}", + } satisfies CreateVisualSnapshotsParams; + + test("difffing unfinished", async () => { + buildStatusMock.mockResolvedValueOnce({ + status: BuildStatus.Running, unapprovedCount: 2, errorCount: 0, - }) - ); + }); + + await visualSnapshots.generateAndSendPdfFileSnapshots( + filename, + pdfPages, + params + ); + + assertSuccessfulPdfSnapshotsGeneration(filename, params); + }); + + test("difffing finished", async () => { + buildStatusMock.mockResolvedValueOnce({ + status: BuildStatus.Approved, + unapprovedCount: 0, + errorCount: 0, + }); + + await visualSnapshots.generateAndSendPdfFileSnapshots( + filename, + pdfPages, + params + ); + + assertSuccessfulPdfSnapshotsGeneration(filename, params); + }); + }); + + test("without params", async () => { + const filename = "filename.pdf"; + + buildStatusMock.mockResolvedValueOnce({ + status: BuildStatus.Unapproved, + unapprovedCount: 2, + errorCount: 0, + }); const params = {} as CreateVisualSnapshotsParams; - await visualSnapshots.generateAndSendPdfFileSnapshots(pdfPages, params); + await visualSnapshots.generateAndSendPdfFileSnapshots( + filename, + pdfPages, + params + ); - assertSuccessfulPdfSnapshotsGeneration(params); + assertSuccessfulPdfSnapshotsGeneration(filename, params); }); }); }); diff --git a/visual-js/visual-snapshots/test/utils/format.spec.ts b/visual-js/visual-snapshots/test/utils/format.spec.ts new file mode 100644 index 00000000..2c08769e --- /dev/null +++ b/visual-js/visual-snapshots/test/utils/format.spec.ts @@ -0,0 +1,19 @@ +import { formatString } from "../../src/utils/format.js"; + +describe("formatString", () => { + it("should replace all occurences of key with data from object", () => { + const value = "foo {foo} bar {foo} {bar}"; + const data = { foo: "xyz", bar: 123 }; + const expected = "foo xyz bar xyz 123"; + + expect(formatString(value, data)).toEqual(expected); + }); + + it("should not replace keys that do not exist in data", () => { + const value = "foo {foo}"; + const data = { bar: 123 }; + const expected = "foo {foo}"; + + expect(formatString(value, data)).toEqual(expected); + }); +}); From ef02a561bc23c374e0b3131d0f049d4bca3580a6 Mon Sep 17 00:00:00 2001 From: Sebastian Alex Date: Wed, 12 Mar 2025 13:24:13 +0100 Subject: [PATCH 05/15] [INT-1] visual-snapshots: do not emit test files to build directory (#202) --- visual-js/package-lock.json | 679 ++++++++++++++++-- visual-js/visual-snapshots/.eslintrc.cjs | 2 +- visual-js/visual-snapshots/.gitignore | 1 + visual-js/visual-snapshots/README.md | 4 +- visual-js/visual-snapshots/jest.config.cjs | 1 + visual-js/visual-snapshots/package.json | 9 +- visual-js/visual-snapshots/tsconfig.json | 27 +- visual-js/visual-snapshots/tsconfig.src.json | 21 + visual-js/visual-snapshots/tsconfig.test.json | 8 + 9 files changed, 687 insertions(+), 65 deletions(-) create mode 100644 visual-js/visual-snapshots/tsconfig.src.json create mode 100644 visual-js/visual-snapshots/tsconfig.test.json diff --git a/visual-js/package-lock.json b/visual-js/package-lock.json index aefe116f..dc3f0913 100644 --- a/visual-js/package-lock.json +++ b/visual-js/package-lock.json @@ -11,6 +11,7 @@ "visual-cypress", "visual-nightwatch", "visual-playwright", + "visual-snapshots", "visual-storybook" ], "dependencies": { @@ -2903,7 +2904,6 @@ "version": "1.0.11", "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -2922,14 +2922,12 @@ "node_modules/@mapbox/node-pre-gyp/node_modules/abbrev": { "version": "1.1.1", "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { "version": "6.0.2", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "debug": "4" }, @@ -2941,7 +2939,6 @@ "version": "2.0.3", "license": "Apache-2.0", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -2950,7 +2947,6 @@ "version": "5.0.1", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -2963,7 +2959,6 @@ "version": "2.7.0", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -2983,7 +2978,6 @@ "version": "5.0.0", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "abbrev": "1" }, @@ -2997,14 +2991,12 @@ "node_modules/@mapbox/node-pre-gyp/node_modules/webidl-conversions": { "version": "3.0.1", "license": "BSD-2-Clause", - "optional": true, - "peer": true + "optional": true }, "node_modules/@mapbox/node-pre-gyp/node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -3341,6 +3333,10 @@ "resolved": "visual-playwright", "link": true }, + "node_modules/@saucelabs/visual-snapshots": { + "resolved": "visual-snapshots", + "link": true + }, "node_modules/@saucelabs/visual-storybook": { "resolved": "visual-storybook", "link": true @@ -4797,8 +4793,7 @@ "node_modules/aproba": { "version": "2.0.0", "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/arch": { "version": "2.2.0", @@ -5017,7 +5012,6 @@ "version": "2.0.0", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -5773,7 +5767,6 @@ "hasInstallScript": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", "nan": "^2.17.0", @@ -5919,7 +5912,6 @@ "version": "2.0.0", "license": "ISC", "optional": true, - "peer": true, "engines": { "node": ">=10" } @@ -6099,7 +6091,6 @@ "version": "1.1.3", "license": "ISC", "optional": true, - "peer": true, "bin": { "color-support": "bin.js" } @@ -6182,8 +6173,7 @@ "node_modules/console-control-strings": { "version": "1.1.0", "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/constant-case": { "version": "3.0.4", @@ -6731,6 +6721,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "dev": true, @@ -6839,8 +6838,7 @@ "node_modules/delegates": { "version": "1.0.0", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/depd": { "version": "2.0.0", @@ -7732,6 +7730,15 @@ "node": ">= 0.8.0" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, "node_modules/expand-tilde": { "version": "1.2.2", "license": "MIT", @@ -8896,7 +8903,6 @@ "version": "3.0.2", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -9134,6 +9140,12 @@ "assert-plus": "^1.0.0" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, "node_modules/glob": { "version": "7.2.3", "license": "ISC", @@ -9473,8 +9485,7 @@ "node_modules/has-unicode": { "version": "2.0.1", "license": "ISC", - "optional": true, - "peer": true + "optional": true }, "node_modules/hasha": { "version": "5.2.2", @@ -12086,7 +12097,6 @@ "version": "2.1.2", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -12099,7 +12109,6 @@ "version": "3.3.6", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -12362,8 +12371,13 @@ "node_modules/nan": { "version": "2.22.2", "license": "MIT", - "optional": true, - "peer": true + "optional": true + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -12529,9 +12543,20 @@ "tslib": "^2.0.3" } }, + "node_modules/node-abi": { + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-addon-api": { "version": "7.1.1", - "dev": true, "license": "MIT" }, "node_modules/node-cleanup": { @@ -12641,7 +12666,6 @@ "version": "5.0.1", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -13289,6 +13313,16 @@ "node": ">=8" } }, + "node_modules/path2d": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.2.tgz", + "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pathe": { "version": "1.1.2", "license": "MIT", @@ -13312,6 +13346,49 @@ "through": "~2.3" } }, + "node_modules/pdf-to-img": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/pdf-to-img/-/pdf-to-img-4.4.0.tgz", + "integrity": "sha512-IRhRpx7dFZNwsao6yV+emUXC9Iz7CaBLUwEbCcGpHEI/frFJUYZ1SriKJNYrFCy4UbWH92anXWTatItKNSZ7hA==", + "license": "MIT", + "dependencies": { + "canvas": "3.1.0", + "pdfjs-dist": "4.2.67" + }, + "bin": { + "pdf2img": "bin/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pdf-to-img/node_modules/canvas": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.1.0.tgz", + "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || >= 20.9.0" + } + }, + "node_modules/pdfjs-dist": { + "version": "4.2.67", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz", + "integrity": "sha512-rJmuBDFpD7cqC8WIkQUEClyB4UAH05K4AsyewToMTp2gSy3Rrx8c1ydAVqlJlGv3yZSOrhEERQU/4ScQQFlLHA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "canvas": "^2.11.2", + "path2d": "^0.2.0" + } + }, "node_modules/pend": { "version": "1.2.0", "license": "MIT" @@ -13454,6 +13531,100 @@ "node": ">= 14" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/prebuild-install/node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/prebuild-install/node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "dev": true, @@ -14014,6 +14185,36 @@ "node": ">= 0.8" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "16.13.1", "license": "MIT" @@ -14745,15 +14946,12 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/simple-get": { "version": "3.1.1", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -14764,7 +14962,6 @@ "version": "4.2.1", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "mimic-response": "^2.0.0" }, @@ -14776,7 +14973,6 @@ "version": "2.1.0", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=8" }, @@ -15359,7 +15555,6 @@ "version": "6.2.1", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -15396,7 +15591,6 @@ "version": "2.1.0", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "minipass": "^3.0.0" }, @@ -15408,7 +15602,6 @@ "version": "3.3.6", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -15420,7 +15613,6 @@ "version": "5.0.0", "license": "ISC", "optional": true, - "peer": true, "engines": { "node": ">=8" } @@ -15897,6 +16089,251 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.0.tgz", + "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.24.0", + "@typescript-eslint/parser": "8.24.0", + "@typescript-eslint/utils": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", + "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/type-utils": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz", + "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", + "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", + "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz", + "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", + "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz", + "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", + "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript-eslint/node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ua-parser-js": { "version": "1.0.39", "funding": [ @@ -16738,7 +17175,6 @@ "version": "1.1.5", "license": "ISC", "optional": true, - "peer": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -17298,6 +17734,167 @@ "dev": true, "license": "MIT" }, + "visual-snapshots": { + "name": "@saucelabs/visual-snapshots", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@saucelabs/visual": "^0.13.0", + "commander": "^12.0.0", + "pdf-to-img": "~4.4.0" + }, + "bin": { + "visual-snapshots": "lib/index.js" + }, + "devDependencies": { + "@types/jest": "29.5.14", + "eslint": "^8.0.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", + "jest": "29.7.0", + "prettier": "^2.8.8", + "rimraf": "^6.0.1", + "ts-jest": "29.2.5", + "typescript": "^5.0.4", + "typescript-eslint": "8.24.0" + }, + "engines": { + "node": ">=18" + } + }, + "visual-snapshots/node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "visual-snapshots/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "visual-snapshots/node_modules/jackspeak": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "visual-snapshots/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "visual-snapshots/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "visual-snapshots/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "visual-snapshots/node_modules/rimraf": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "visual-snapshots/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "visual-storybook": { "name": "@saucelabs/visual-storybook", "version": "0.10.2", diff --git a/visual-js/visual-snapshots/.eslintrc.cjs b/visual-js/visual-snapshots/.eslintrc.cjs index 11bcbed2..d0ccd7d8 100644 --- a/visual-js/visual-snapshots/.eslintrc.cjs +++ b/visual-js/visual-snapshots/.eslintrc.cjs @@ -2,7 +2,7 @@ module.exports = { extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], parser: '@typescript-eslint/parser', parserOptions: { - project: './tsconfig.json', + project: './tsconfig.test.json', tsconfigRootDir: __dirname, sourceType: 'module', }, diff --git a/visual-js/visual-snapshots/.gitignore b/visual-js/visual-snapshots/.gitignore index c44a2ccd..151ac14b 100644 --- a/visual-js/visual-snapshots/.gitignore +++ b/visual-js/visual-snapshots/.gitignore @@ -3,3 +3,4 @@ build/ lib/ coverage/ .parent/ +*.tsbuildinfo diff --git a/visual-js/visual-snapshots/README.md b/visual-js/visual-snapshots/README.md index bccf013e..cc516551 100644 --- a/visual-js/visual-snapshots/README.md +++ b/visual-js/visual-snapshots/README.md @@ -25,7 +25,7 @@ yarn run build Execute: ```sh -node lib/src/index.js pdf [params] +node lib/index.js pdf [params] ``` Run tests: @@ -36,5 +36,5 @@ yarn run test ## Reusing pdf conversion code -While it is possible to use `VisualSnapshotsApi` outside this package, please bear in mind it can only be used with ESM modules. +While it is possible to use `VisualSnapshotsApi` outside this package, please bear in mind it can only be used with ESM modules. CommonJS modules are not supported. diff --git a/visual-js/visual-snapshots/jest.config.cjs b/visual-js/visual-snapshots/jest.config.cjs index 714e5af1..54f691bf 100644 --- a/visual-js/visual-snapshots/jest.config.cjs +++ b/visual-js/visual-snapshots/jest.config.cjs @@ -13,6 +13,7 @@ module.exports = { 'ts-jest', { useESM: true, + tsconfig: 'tsconfig.test.json' }, ], }, diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index ca2c1390..75c3e604 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -2,9 +2,9 @@ "name": "@saucelabs/visual-snapshots", "description": "CLI which generates Visual snapshots from a data source such as pdf", "version": "0.1.0", - "main": "./lib/src/index.js", + "main": "./lib/index.js", "license": "MIT", - "bin": "./lib/src/index.js", + "bin": "./lib/index.js", "files": [ "lib", "README.md" @@ -20,8 +20,8 @@ "pdf" ], "scripts": { - "build": "tsc", - "watch": "tsc-watch --declaration -p .", + "build": "rimraf *.tsbuildinfo && tsc -b tsconfig.json", + "watch": "rimraf *.tsbuildinfo && tsc -b tsconfig.json -w", "lint": "eslint \"{src,test}/**/*.ts\"", "lint-fix": "eslint \"{src,test}/**/*.ts\" --fix", "test": "jest", @@ -40,6 +40,7 @@ "eslint-plugin-prettier": "^4.0.0", "jest": "29.7.0", "prettier": "^2.8.8", + "rimraf": "^6.0.1", "ts-jest": "29.2.5", "typescript": "^5.0.4", "typescript-eslint": "8.24.0" diff --git a/visual-js/visual-snapshots/tsconfig.json b/visual-js/visual-snapshots/tsconfig.json index 7c5700e8..7f8872a6 100644 --- a/visual-js/visual-snapshots/tsconfig.json +++ b/visual-js/visual-snapshots/tsconfig.json @@ -1,19 +1,12 @@ +// Builds source files and typechecks test files. { - "compilerOptions": { - "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - "module": "NodeNext", /* Specify what module code is generated. */ - "moduleResolution": "nodenext", /* Specify how TypeScript looks up a file from a given module specifier. */ - "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - "outDir": "./lib", /* Specify an output folder for all emitted files. */ - "removeComments": true, /* Disable emitting comments. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - "strict": true, /* Enable all strict type-checking options. */ - "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } + "files": [], + "references": [ + { + "path": "./tsconfig.src.json" + }, + { + "path": "./tsconfig.test.json" + } + ] } diff --git a/visual-js/visual-snapshots/tsconfig.src.json b/visual-js/visual-snapshots/tsconfig.src.json new file mode 100644 index 00000000..dcf5ddd9 --- /dev/null +++ b/visual-js/visual-snapshots/tsconfig.src.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + "module": "NodeNext", /* Specify what module code is generated. */ + "moduleResolution": "nodenext", /* Specify how TypeScript looks up a file from a given module specifier. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + "outDir": "./lib", /* Specify an output folder for all emitted files. */ + "removeComments": true, /* Disable emitting comments. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + "strict": true, /* Enable all strict type-checking options. */ + "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "tsBuildInfoFile": "./tsconfig.src.tsbuildinfo" + }, + "include": ["./src"] +} diff --git a/visual-js/visual-snapshots/tsconfig.test.json b/visual-js/visual-snapshots/tsconfig.test.json new file mode 100644 index 00000000..61fc1172 --- /dev/null +++ b/visual-js/visual-snapshots/tsconfig.test.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.src.json", + "compilerOptions": { + "noEmit": true, // Do not emit built test files, only typecheck them + "composite": true // Required for reference in tsconfig.build.json + }, + "include": ["./src", "./test"] +} From 8a67e48b35e6d81b10412643c3c98a2e2e36f9e8 Mon Sep 17 00:00:00 2001 From: Sebastian Alex Date: Wed, 12 Mar 2025 15:09:11 +0100 Subject: [PATCH 06/15] [INT-67] Glob and directory support (#196) --- visual-js/package-lock.json | 86 +----------- visual-js/visual-snapshots/package.json | 1 + .../src/api/visual-snapshots-api.ts | 53 ++++---- .../visual-snapshots/src/app/pdf-converter.ts | 8 ++ .../visual-snapshots/src/app/pdf-file.ts | 4 + .../visual-snapshots/src/app/pdf-handler.ts | 14 +- .../visual-snapshots/src/commands/pdf.ts | 9 +- visual-js/visual-snapshots/src/utils/glob.ts | 28 ++++ .../api/__snapshots__/visual-api.spec.ts.snap | 106 +++++++++++++-- .../test/api/visual-api.spec.ts | 128 +++++++++++------- .../visual-snapshots/test/utils/glob.spec.ts | 56 ++++++++ 11 files changed, 316 insertions(+), 177 deletions(-) create mode 100644 visual-js/visual-snapshots/src/app/pdf-file.ts create mode 100644 visual-js/visual-snapshots/src/utils/glob.ts create mode 100644 visual-js/visual-snapshots/test/utils/glob.spec.ts diff --git a/visual-js/package-lock.json b/visual-js/package-lock.json index dc3f0913..f5046225 100644 --- a/visual-js/package-lock.json +++ b/visual-js/package-lock.json @@ -6283,8 +6283,6 @@ }, "node_modules/cross-env": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "license": "MIT", "dependencies": { @@ -6723,8 +6721,6 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "license": "MIT", "engines": { "node": ">=4.0.0" @@ -7732,8 +7728,6 @@ }, "node_modules/expand-template": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" @@ -9142,8 +9136,6 @@ }, "node_modules/github-from-package": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", "license": "MIT" }, "node_modules/glob": { @@ -12375,8 +12367,6 @@ }, "node_modules/napi-build-utils": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", "license": "MIT" }, "node_modules/natural-compare": { @@ -12545,8 +12535,6 @@ }, "node_modules/node-abi": { "version": "3.74.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", - "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -13315,8 +13303,6 @@ }, "node_modules/path2d": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.2.tgz", - "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", "license": "MIT", "optional": true, "engines": { @@ -13348,8 +13334,6 @@ }, "node_modules/pdf-to-img": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/pdf-to-img/-/pdf-to-img-4.4.0.tgz", - "integrity": "sha512-IRhRpx7dFZNwsao6yV+emUXC9Iz7CaBLUwEbCcGpHEI/frFJUYZ1SriKJNYrFCy4UbWH92anXWTatItKNSZ7hA==", "license": "MIT", "dependencies": { "canvas": "3.1.0", @@ -13364,8 +13348,6 @@ }, "node_modules/pdf-to-img/node_modules/canvas": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.1.0.tgz", - "integrity": "sha512-tTj3CqqukVJ9NgSahykNwtGda7V33VLObwrHfzT0vqJXu7J4d4C/7kQQW3fOEGDfZZoILPut5H00gOjyttPGyg==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -13378,8 +13360,6 @@ }, "node_modules/pdfjs-dist": { "version": "4.2.67", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.2.67.tgz", - "integrity": "sha512-rJmuBDFpD7cqC8WIkQUEClyB4UAH05K4AsyewToMTp2gSy3Rrx8c1ydAVqlJlGv3yZSOrhEERQU/4ScQQFlLHA==", "license": "Apache-2.0", "engines": { "node": ">=18" @@ -13533,8 +13513,6 @@ }, "node_modules/prebuild-install": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -13559,14 +13537,10 @@ }, "node_modules/prebuild-install/node_modules/chownr": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "license": "ISC" }, "node_modules/prebuild-install/node_modules/detect-libc": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -13574,8 +13548,6 @@ }, "node_modules/prebuild-install/node_modules/simple-get": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -13599,8 +13571,6 @@ }, "node_modules/prebuild-install/node_modules/tar-fs": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -13611,8 +13581,6 @@ }, "node_modules/prebuild-install/node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -14187,8 +14155,6 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -14202,14 +14168,10 @@ }, "node_modules/rc/node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "license": "ISC" }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -16091,8 +16053,6 @@ }, "node_modules/typescript-eslint": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.0.tgz", - "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16114,8 +16074,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", - "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16144,8 +16102,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz", - "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", "dev": true, "license": "MIT", "dependencies": { @@ -16169,8 +16125,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", - "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", "dev": true, "license": "MIT", "dependencies": { @@ -16187,8 +16141,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", - "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", "dev": true, "license": "MIT", "dependencies": { @@ -16211,8 +16163,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz", - "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", "dev": true, "license": "MIT", "engines": { @@ -16225,8 +16175,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", - "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16252,8 +16200,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz", - "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16276,8 +16222,6 @@ }, "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", - "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", "dev": true, "license": "MIT", "dependencies": { @@ -16294,8 +16238,6 @@ }, "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -16307,8 +16249,6 @@ }, "node_modules/typescript-eslint/node_modules/minimatch": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -16323,8 +16263,6 @@ }, "node_modules/typescript-eslint/node_modules/ts-api-utils": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, "license": "MIT", "engines": { @@ -17741,6 +17679,7 @@ "dependencies": { "@saucelabs/visual": "^0.13.0", "commander": "^12.0.0", + "glob": "^11.0.1", "pdf-to-img": "~4.4.0" }, "bin": { @@ -17764,9 +17703,6 @@ }, "visual-snapshots/node_modules/foreground-child": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", @@ -17781,9 +17717,6 @@ }, "visual-snapshots/node_modules/glob": { "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", - "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -17805,9 +17738,6 @@ }, "visual-snapshots/node_modules/jackspeak": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", - "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" @@ -17821,9 +17751,6 @@ }, "visual-snapshots/node_modules/lru-cache": { "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", - "dev": true, "license": "ISC", "engines": { "node": "20 || >=22" @@ -17831,9 +17758,6 @@ }, "visual-snapshots/node_modules/minimatch": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -17847,9 +17771,6 @@ }, "visual-snapshots/node_modules/path-scurry": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", @@ -17864,8 +17785,6 @@ }, "visual-snapshots/node_modules/rimraf": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "license": "ISC", "dependencies": { @@ -17884,9 +17803,6 @@ }, "visual-snapshots/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "license": "ISC", "engines": { "node": ">=14" diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index 75c3e604..25560676 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -31,6 +31,7 @@ "dependencies": { "@saucelabs/visual": "^0.13.0", "commander": "^12.0.0", + "glob": "^11.0.1", "pdf-to-img": "~4.4.0" }, "devDependencies": { diff --git a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts index fa4d5c1b..5b540886 100644 --- a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts +++ b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts @@ -1,5 +1,7 @@ import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; import { formatString } from "../utils/format.js"; +import path from "path"; +import { PdfFile } from "../app/pdf-file.js"; export interface CreateVisualSnapshotsParams { branch: string; @@ -21,32 +23,37 @@ export class VisualSnapshotsApi { } public async generateAndSendPdfFileSnapshots( - filename: string, - pdfFilePages: AsyncGenerator, + pdfFiles: PdfFile[], params: CreateVisualSnapshotsParams ) { const buildId = params.buildId ?? (await this.createBuild(params)); - const testName = params.testName - ? formatString(params.testName, { filename }) - : undefined; - - const snapshotFormat = this.getSnapshotFormat(params.snapshotName); - - let pageNumber = 1; - for await (const pdfPageImage of pdfFilePages) { - const snapshotName = formatString(snapshotFormat, { - filename, - page: pageNumber, - }); - - await this.uploadImageAndCreateSnapshot( - pdfPageImage, - buildId, - snapshotName, - testName, - params.suiteName - ); - pageNumber++; + + for (const pdfFile of pdfFiles) { + console.info(`Processing file: ${pdfFile.path}`); + + const filename = path.basename(pdfFile.path); + const testName = params.testName + ? formatString(params.testName, { filename }) + : undefined; + + const snapshotFormat = this.getSnapshotFormat(params.snapshotName); + + let pageNumber = 1; + for await (const pdfPageImage of pdfFile.convertPagesToImages()) { + const snapshotName = formatString(snapshotFormat, { + filename, + page: pageNumber, + }); + + await this.uploadImageAndCreateSnapshot( + pdfPageImage, + buildId, + snapshotName, + testName, + params.suiteName + ); + pageNumber++; + } } await this.finishBuild(buildId); diff --git a/visual-js/visual-snapshots/src/app/pdf-converter.ts b/visual-js/visual-snapshots/src/app/pdf-converter.ts index 70bdbc37..9baee08c 100644 --- a/visual-js/visual-snapshots/src/app/pdf-converter.ts +++ b/visual-js/visual-snapshots/src/app/pdf-converter.ts @@ -1,4 +1,5 @@ import { pdf } from "pdf-to-img"; +import { PdfFile } from "./pdf-file.js"; export class PdfConverter { public async *convertPagesToImages( @@ -8,4 +9,11 @@ export class PdfConverter { yield pdfPageImage; } } + + public createPdfFile(pdfFilePath: string): PdfFile { + return { + path: pdfFilePath, + convertPagesToImages: () => this.convertPagesToImages(pdfFilePath), + }; + } } diff --git a/visual-js/visual-snapshots/src/app/pdf-file.ts b/visual-js/visual-snapshots/src/app/pdf-file.ts new file mode 100644 index 00000000..ff31a005 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/pdf-file.ts @@ -0,0 +1,4 @@ +export interface PdfFile { + readonly path: string; + convertPagesToImages(): AsyncGenerator; +} diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts index 4d0b27e2..c9261e1a 100644 --- a/visual-js/visual-snapshots/src/app/pdf-handler.ts +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -5,7 +5,7 @@ import { import { initializeVisualApi } from "../api/visual-client.js"; import { PdfConverter } from "./pdf-converter.js"; import { VisualConfig } from "@saucelabs/visual"; -import path from "path"; +import { getFiles } from "../utils/glob.js"; export interface PdfCommandParams extends VisualConfig, @@ -18,16 +18,14 @@ export class PdfCommandHandler { this.clientVersion = clientVersion; } - public async handle(pdfFilePath: string, params: PdfCommandParams) { + public async handle(globsOrDirs: string[], params: PdfCommandParams) { const visualApi = initializeVisualApi(params, this.clientVersion); const visualSnapshots = new VisualSnapshotsApi(visualApi); const pdfConverter = new PdfConverter(); - const pdfPageImages = pdfConverter.convertPagesToImages(pdfFilePath); - await visualSnapshots.generateAndSendPdfFileSnapshots( - path.basename(pdfFilePath), - pdfPageImages, - params - ); + const pdfFilePaths = await getFiles(globsOrDirs, "*.pdf"); + + const pdfFiles = pdfFilePaths.map((p) => pdfConverter.createPdfFile(p)); + await visualSnapshots.generateAndSendPdfFileSnapshots(pdfFiles, params); } } diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index 0dd48a75..f84f7eff 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -32,7 +32,10 @@ export const pdfCommand = (clientVersion: string) => { return new Command() .name("pdf") .description("Create visual snapshots for each page of a PDF file") - .argument("", "A path to a PDF file") + .argument( + "", + "Paths to PDF files, glob patterns, or paths to directories containing PDF files." + ) .addOption(usernameOption) .addOption(accessKeyOption) .addOption(regionOption) @@ -45,9 +48,9 @@ export const pdfCommand = (clientVersion: string) => { .addOption(suiteNameOption) .addOption(testNameOption) .addOption(snapshotNameOption) - .action((pdfFilePath: string, params: PdfCommandParams) => { + .action((globsOrDirs: string[], params: PdfCommandParams) => { new PdfCommandHandler(clientVersion) - .handle(pdfFilePath, params) + .handle(globsOrDirs, params) .then(() => { console.log("Successfully created PDF snapshots"); }) diff --git a/visual-js/visual-snapshots/src/utils/glob.ts b/visual-js/visual-snapshots/src/utils/glob.ts new file mode 100644 index 00000000..3e9d9f59 --- /dev/null +++ b/visual-js/visual-snapshots/src/utils/glob.ts @@ -0,0 +1,28 @@ +import { glob } from "glob"; +import fs from "fs/promises"; +import path from "path"; + +/** + * Returns all files matched by globs, or if path is a directory, matched by `dirGlob`. + * @param globOrDirs Globs or dirs to get files from. + * @param dirGlob Glob to append to directory path. + * @returns Matched files. + */ +export async function getFiles(globOrDirs: string[], dirGlob: string) { + const globs = await Promise.all( + globOrDirs.map((g) => + isDirectory(g).then((result) => (result ? path.join(g, dirGlob) : g)) + ) + ); + + return await glob(globs); +} + +async function isDirectory(path: string) { + try { + const stat = await fs.stat(path); + return stat.isDirectory(); + } catch { + return false; + } +} diff --git a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap index b5b98871..2bd4b3c6 100644 --- a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap +++ b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap @@ -2,17 +2,35 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-id difffing finished 1`] = ` [ + [ + "Processing file: file1.pdf", + ], [ "Uploaded image to build custom-build-id: upload id=upload-id-0.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-1 for build custom-build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-1 for build custom-build-id.", ], [ "Uploaded image to build custom-build-id: upload id=upload-id-1.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-2 for build custom-build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-2 for build custom-build-id.", + ], + [ + "Processing file: file2.pdf", + ], + [ + "Uploaded image to build custom-build-id: upload id=upload-id-2.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-1 for build custom-build-id.", + ], + [ + "Uploaded image to build custom-build-id: upload id=upload-id-3.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-2 for build custom-build-id.", ], [ "Build custom-build-id finished.", @@ -25,17 +43,35 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-i exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-id difffing unfinished 1`] = ` [ + [ + "Processing file: file1.pdf", + ], [ "Uploaded image to build custom-build-id: upload id=upload-id-0.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-1 for build custom-build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-1 for build custom-build-id.", ], [ "Uploaded image to build custom-build-id: upload id=upload-id-1.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-2 for build custom-build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-2 for build custom-build-id.", + ], + [ + "Processing file: file2.pdf", + ], + [ + "Uploaded image to build custom-build-id: upload id=upload-id-2.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-1 for build custom-build-id.", + ], + [ + "Uploaded image to build custom-build-id: upload id=upload-id-3.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-2 for build custom-build-id.", ], [ "Build custom-build-id finished.", @@ -51,17 +87,35 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing fi [ "Build build-id created: http://build-url/build-id", ], + [ + "Processing file: file1.pdf", + ], [ "Uploaded image to build build-id: upload id=upload-id-0.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-1 for build build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-1 for build build-id.", ], [ "Uploaded image to build build-id: upload id=upload-id-1.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-2 for build build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-2 for build build-id.", + ], + [ + "Processing file: file2.pdf", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-2.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-1 for build build-id.", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-3.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-2 for build build-id.", ], [ "Build build-id finished.", @@ -77,17 +131,35 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing un [ "Build build-id created: http://build-url/build-id", ], + [ + "Processing file: file1.pdf", + ], [ "Uploaded image to build build-id: upload id=upload-id-0.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-1 for build build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-1 for build build-id.", ], [ "Uploaded image to build build-id: upload id=upload-id-1.", ], [ - "Created a snapshot custom-snapshot-name-filename.pdf-2 for build build-id.", + "Created a snapshot custom-snapshot-name-file1.pdf-2 for build build-id.", + ], + [ + "Processing file: file2.pdf", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-2.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-1 for build build-id.", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-3.", + ], + [ + "Created a snapshot custom-snapshot-name-file2.pdf-2 for build build-id.", ], [ "Build build-id finished.", @@ -103,6 +175,9 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots without params 1`] = ` [ "Build build-id created: http://build-url/build-id", ], + [ + "Processing file: file1.pdf", + ], [ "Uploaded image to build build-id: upload id=upload-id-0.", ], @@ -115,6 +190,21 @@ exports[`VisualSnapshots generateAndSendPdfFileSnapshots without params 1`] = ` [ "Created a snapshot page-2 for build build-id.", ], + [ + "Processing file: file2.pdf", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-2.", + ], + [ + "Created a snapshot page-1 for build build-id.", + ], + [ + "Uploaded image to build build-id: upload id=upload-id-3.", + ], + [ + "Created a snapshot page-2 for build build-id.", + ], [ "Build build-id finished.", ], diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts index 3dc3368c..ff5b60c5 100644 --- a/visual-js/visual-snapshots/test/api/visual-api.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -4,10 +4,16 @@ import { VisualSnapshotsApi, } from "../../src/api/visual-snapshots-api.js"; import { formatString } from "../../src/utils/format.js"; +import { PdfFile } from "../../src/app/pdf-file.js"; +import path from "path"; -async function* pdfPagesGenerator(): AsyncGenerator { - for (let i = 0; i < 2; ++i) { - yield Promise.resolve(Buffer.from(`fake-image-buffer-${i}`)); +class TestPdfFile implements PdfFile { + constructor(public readonly path: string) {} + + public async *convertPagesToImages(): AsyncGenerator { + for (let i = 0; i < 2; ++i) { + yield Buffer.from(`fake-image-buffer-${i}`); + } } } @@ -17,8 +23,6 @@ describe("VisualSnapshots", () => { .spyOn(console, "info") .mockImplementation(() => undefined); - let pdfPages: AsyncGenerator; - const createBuildMock = jest.fn(); const uploadSnapshotMock = jest.fn(); const createSnapshotMock = jest.fn(); @@ -33,26 +37,28 @@ describe("VisualSnapshots", () => { buildStatus: buildStatusMock, }; const visualSnapshots = new VisualSnapshotsApi(visualApiMock); + const files = [new TestPdfFile("file1.pdf"), new TestPdfFile("file2.pdf")]; + beforeEach(() => { createBuildMock.mockReset(); - createBuildMock.mockResolvedValueOnce({ + createBuildMock.mockResolvedValue({ id: "build-id", url: "http://build-url/build-id", }); + + let uploadId = 0; uploadSnapshotMock.mockReset(); - uploadSnapshotMock - .mockResolvedValueOnce("upload-id-0") - .mockResolvedValueOnce("upload-id-1"); + uploadSnapshotMock.mockImplementation(() => + Promise.resolve(`upload-id-${uploadId++}`) + ); + createSnapshotMock.mockReset(); finishBuildMock.mockReset(); buildStatusMock.mockReset(); consoleInfoSpy.mockReset(); - - pdfPages = pdfPagesGenerator(); }); const assertSuccessfulPdfSnapshotsGeneration = ( - filename: string, params: CreateVisualSnapshotsParams ) => { if (!params.buildId) { @@ -78,6 +84,18 @@ describe("VisualSnapshots", () => { image: { data: Buffer.from("fake-image-buffer-1") }, }, ], + [ + { + buildId: params.buildId ?? "build-id", + image: { data: Buffer.from("fake-image-buffer-0") }, + }, + ], + [ + { + buildId: params.buildId ?? "build-id", + image: { data: Buffer.from("fake-image-buffer-1") }, + }, + ], ]); expect(createSnapshotMock.mock.calls).toEqual([ @@ -86,14 +104,14 @@ describe("VisualSnapshots", () => { diffingMethod: DiffingMethod.Balanced, buildId: params.buildId ?? "build-id", name: formatString(params.snapshotName ?? "page-{page}", { - filename, + filename: path.basename(files[0].path), page: 1, }), uploadId: "upload-id-0", suiteName: params.suiteName, testName: params.testName ? formatString(params.testName, { - filename, + filename: path.basename(files[0].path), }) : undefined, }, @@ -103,14 +121,48 @@ describe("VisualSnapshots", () => { diffingMethod: DiffingMethod.Balanced, buildId: params.buildId ?? "build-id", name: formatString(params.snapshotName ?? "page-{page}", { - filename, + filename: path.basename(files[0].path), page: 2, }), uploadId: "upload-id-1", suiteName: params.suiteName, testName: params.testName ? formatString(params.testName, { - filename, + filename: path.basename(files[0].path), + }) + : undefined, + }, + ], + [ + { + diffingMethod: DiffingMethod.Balanced, + buildId: params.buildId ?? "build-id", + name: formatString(params.snapshotName ?? "page-{page}", { + filename: path.basename(files[1].path), + page: 1, + }), + uploadId: "upload-id-2", + suiteName: params.suiteName, + testName: params.testName + ? formatString(params.testName, { + filename: path.basename(files[1].path), + }) + : undefined, + }, + ], + [ + { + diffingMethod: DiffingMethod.Balanced, + buildId: params.buildId ?? "build-id", + name: formatString(params.snapshotName ?? "page-{page}", { + filename: path.basename(files[1].path), + page: 2, + }), + uploadId: "upload-id-3", + suiteName: params.suiteName, + testName: params.testName + ? formatString(params.testName, { + filename: path.basename(files[1].path), }) : undefined, }, @@ -129,7 +181,6 @@ describe("VisualSnapshots", () => { }; describe("with params", () => { - const filename = "filename.pdf"; const params = { branch: "fake-branch", buildName: "fake-build-name", @@ -148,13 +199,9 @@ describe("VisualSnapshots", () => { errorCount: 0, }); - await visualSnapshots.generateAndSendPdfFileSnapshots( - filename, - pdfPages, - params - ); + await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - assertSuccessfulPdfSnapshotsGeneration(filename, params); + assertSuccessfulPdfSnapshotsGeneration(params); }); test("difffing finished", async () => { @@ -164,18 +211,13 @@ describe("VisualSnapshots", () => { errorCount: 0, }); - await visualSnapshots.generateAndSendPdfFileSnapshots( - filename, - pdfPages, - params - ); + await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - assertSuccessfulPdfSnapshotsGeneration(filename, params); + assertSuccessfulPdfSnapshotsGeneration(params); }); }); describe("with params and build-id", () => { - const filename = "filename.pdf"; const params = { branch: "fake-branch", buildName: "fake-build-name", @@ -195,13 +237,9 @@ describe("VisualSnapshots", () => { errorCount: 0, }); - await visualSnapshots.generateAndSendPdfFileSnapshots( - filename, - pdfPages, - params - ); + await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - assertSuccessfulPdfSnapshotsGeneration(filename, params); + assertSuccessfulPdfSnapshotsGeneration(params); }); test("difffing finished", async () => { @@ -211,19 +249,13 @@ describe("VisualSnapshots", () => { errorCount: 0, }); - await visualSnapshots.generateAndSendPdfFileSnapshots( - filename, - pdfPages, - params - ); + await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - assertSuccessfulPdfSnapshotsGeneration(filename, params); + assertSuccessfulPdfSnapshotsGeneration(params); }); }); test("without params", async () => { - const filename = "filename.pdf"; - buildStatusMock.mockResolvedValueOnce({ status: BuildStatus.Unapproved, unapprovedCount: 2, @@ -231,13 +263,9 @@ describe("VisualSnapshots", () => { }); const params = {} as CreateVisualSnapshotsParams; - await visualSnapshots.generateAndSendPdfFileSnapshots( - filename, - pdfPages, - params - ); + await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - assertSuccessfulPdfSnapshotsGeneration(filename, params); + assertSuccessfulPdfSnapshotsGeneration(params); }); }); }); diff --git a/visual-js/visual-snapshots/test/utils/glob.spec.ts b/visual-js/visual-snapshots/test/utils/glob.spec.ts new file mode 100644 index 00000000..8cd209cb --- /dev/null +++ b/visual-js/visual-snapshots/test/utils/glob.spec.ts @@ -0,0 +1,56 @@ +import { getFiles } from "../../src/utils/glob.js"; +import path from "path"; + +describe("getFiles", () => { + function resolvePath(p: string) { + return path.resolve(p); + } + + it("should return a file", async () => { + const input = ["./src/index.ts"]; + const expected = input.map(resolvePath); + + const result = await getFiles(input, "*"); + expect(result.map(resolvePath)).toEqual(expected); + }); + + it("should return multiple files", async () => { + const input = ["./src/index.ts", __filename]; + const expected = input.map(resolvePath); + + const actual = await getFiles(input, "*"); + expect(actual.map(resolvePath)).toEqual(expected); + }); + + it("should return files matched by glob", async () => { + const input = [path.join(__dirname, "*.spec.ts")]; + const expected = [resolvePath(__filename)]; + + const actual = await getFiles(input, "*"); + expect(actual.map(resolvePath)).toEqual(expect.arrayContaining(expected)); + }); + + it("should return files in directory matched by dir glob", async () => { + const input = [__dirname]; + const expected = [resolvePath(__filename)]; + + const actual = await getFiles(input, "*.spec.ts"); + expect(actual.map(resolvePath)).toEqual(expect.arrayContaining(expected)); + }); + + it("should not return non-existing files", async () => { + const input = [__filename, __filename + ".not-existing"]; + const expected = [resolvePath(__filename)]; + + const result = await getFiles(input, "*"); + expect(result.map(resolvePath)).toEqual(expected); + }); + + it("should not return files from not existing dirs", async () => { + const input = [__dirname + ".not-existing"]; + const expected: string[] = []; + + const result = await getFiles(input, "*"); + expect(result.map(resolvePath)).toEqual(expected); + }); +}); From c99d8c863f78a66a35e23277260faf3f3181f652 Mon Sep 17 00:00:00 2001 From: Sebastian Alex Date: Thu, 20 Mar 2025 15:13:16 +0100 Subject: [PATCH 07/15] [INT-1] visual-snapshots: add ESM support for Jest (#206) --- visual-js/visual-snapshots/jest.config.cjs | 15 ++--- visual-js/visual-snapshots/jest.setup.mjs | 2 + visual-js/visual-snapshots/package.json | 6 +- .../visual-snapshots/src/api/visual-client.ts | 14 ++--- .../visual-snapshots/src/app/pdf-converter.ts | 6 +- .../test/api/visual-api.spec.ts | 6 +- .../test/api/visual-client.spec.ts | 7 ++- .../test/app/pdf-converter.spec.ts | 57 ++++++++++-------- .../visual-snapshots/test/files/test.pdf | Bin 0 -> 52977 bytes visual-js/visual-snapshots/test/helpers.ts | 16 +++++ .../visual-snapshots/test/utils/glob.spec.ts | 40 ++++++------ 11 files changed, 102 insertions(+), 67 deletions(-) create mode 100644 visual-js/visual-snapshots/jest.setup.mjs create mode 100644 visual-js/visual-snapshots/test/files/test.pdf create mode 100644 visual-js/visual-snapshots/test/helpers.ts diff --git a/visual-js/visual-snapshots/jest.config.cjs b/visual-js/visual-snapshots/jest.config.cjs index 54f691bf..82350928 100644 --- a/visual-js/visual-snapshots/jest.config.cjs +++ b/visual-js/visual-snapshots/jest.config.cjs @@ -1,20 +1,21 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { // [...] - preset: 'ts-jest/presets/default-esm', // or other ESM presets + preset: "ts-jest/presets/default-esm", // or other ESM presets moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', + "^(\\.{1,2}/.*)\\.js$": "$1", }, - testPathIgnorePatterns: ['/lib/'], + testPathIgnorePatterns: ["/lib/"], + setupFiles: ["./jest.setup.mjs"], transform: { // '^.+\\.[tj]sx?$' to process js/ts with `ts-jest` // '^.+\\.m?[tj]sx?$' to process js/ts/mjs/mts with `ts-jest` - '^.+\\.tsx?$': [ - 'ts-jest', + "^.+\\.tsx?$": [ + "ts-jest", { useESM: true, - tsconfig: 'tsconfig.test.json' + tsconfig: "tsconfig.test.json", }, ], }, -} +}; diff --git a/visual-js/visual-snapshots/jest.setup.mjs b/visual-js/visual-snapshots/jest.setup.mjs new file mode 100644 index 00000000..664a88f7 --- /dev/null +++ b/visual-js/visual-snapshots/jest.setup.mjs @@ -0,0 +1,2 @@ +import { jest } from "@jest/globals"; +global.jest = jest; diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index 25560676..8123e326 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -24,9 +24,9 @@ "watch": "rimraf *.tsbuildinfo && tsc -b tsconfig.json -w", "lint": "eslint \"{src,test}/**/*.ts\"", "lint-fix": "eslint \"{src,test}/**/*.ts\" --fix", - "test": "jest", - "test-update-snapshots": "jest -u", - "test-with-coverage": "jest --collect-coverage" + "test": "cross-env NODE_NO_WARNINGS=1 NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest", + "test-update-snapshots": "cross-env NODE_NO_WARNINGS=1 NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest -u", + "test-with-coverage": "cross-env NODE_NO_WARNINGS=1 NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --collect-coverage" }, "dependencies": { "@saucelabs/visual": "^0.13.0", diff --git a/visual-js/visual-snapshots/src/api/visual-client.ts b/visual-js/visual-snapshots/src/api/visual-client.ts index f0dcdb4c..c3445e8f 100644 --- a/visual-js/visual-snapshots/src/api/visual-client.ts +++ b/visual-js/visual-snapshots/src/api/visual-client.ts @@ -1,9 +1,9 @@ import { getApi, VisualConfig } from "@saucelabs/visual"; -export const initializeVisualApi = ( - params: VisualConfig, - clientVersion: string -) => - getApi(params, { - userAgent: `visual-snapshots/${clientVersion}`, - }); +export const visualApiInitializer = + (_getApi: typeof getApi) => (params: VisualConfig, clientVersion: string) => + _getApi(params, { + userAgent: `visual-snapshots/${clientVersion}`, + }); + +export const initializeVisualApi = visualApiInitializer(getApi); diff --git a/visual-js/visual-snapshots/src/app/pdf-converter.ts b/visual-js/visual-snapshots/src/app/pdf-converter.ts index 9baee08c..38a57a75 100644 --- a/visual-js/visual-snapshots/src/app/pdf-converter.ts +++ b/visual-js/visual-snapshots/src/app/pdf-converter.ts @@ -2,10 +2,14 @@ import { pdf } from "pdf-to-img"; import { PdfFile } from "./pdf-file.js"; export class PdfConverter { + constructor(private readonly _pdf: typeof pdf = pdf) {} + public async *convertPagesToImages( pdfFilePath: string ): AsyncGenerator { - for await (const pdfPageImage of await pdf(pdfFilePath, { scale: 1 })) { + for await (const pdfPageImage of await this._pdf(pdfFilePath, { + scale: 1, + })) { yield pdfPageImage; } } diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts index ff5b60c5..8e1bd216 100644 --- a/visual-js/visual-snapshots/test/api/visual-api.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -28,14 +28,14 @@ describe("VisualSnapshots", () => { const createSnapshotMock = jest.fn(); const finishBuildMock = jest.fn(); const buildStatusMock = jest.fn(); - const visualApiMock: VisualApi = { - ...jest.requireActual("@saucelabs/visual"), + const visualApiMock = { createBuild: createBuildMock, uploadSnapshot: uploadSnapshotMock, createSnapshot: createSnapshotMock, finishBuild: finishBuildMock, buildStatus: buildStatusMock, - }; + } as never as VisualApi; + const visualSnapshots = new VisualSnapshotsApi(visualApiMock); const files = [new TestPdfFile("file1.pdf"), new TestPdfFile("file2.pdf")]; diff --git a/visual-js/visual-snapshots/test/api/visual-client.spec.ts b/visual-js/visual-snapshots/test/api/visual-client.spec.ts index b6ed12bc..f303d9c7 100644 --- a/visual-js/visual-snapshots/test/api/visual-client.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-client.spec.ts @@ -1,4 +1,4 @@ -import { initializeVisualApi } from "../../src/api/visual-client.js"; +import { visualApiInitializer } from "../../src/api/visual-client.js"; import * as sauceVisual from "@saucelabs/visual"; jest.mock("@saucelabs/visual", () => { @@ -8,8 +8,9 @@ jest.mock("@saucelabs/visual", () => { }); describe("visual api client", () => { - test("initializeVisualApi", async () => { - const getApiSpy = sauceVisual.getApi; + test("visualApiInitializer", async () => { + const getApiSpy = jest.fn(); + const initializeVisualApi = visualApiInitializer(getApiSpy); const pkgVersion = "0.1.0"; const params = { diff --git a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts index 075214ba..8818b5f4 100644 --- a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts +++ b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts @@ -1,35 +1,42 @@ +import path from "path"; import { PdfConverter } from "../../src/app/pdf-converter.js"; +import { __dirname } from "../helpers.js"; -jest.mock("pdf-to-img", () => { - async function* asyncIterable() { - for (let i = 0; i < 2; i++) { - yield `fake-image-buffer-${i}`; +describe("PdfConverter", () => { + test("convertPagesToImages", async () => { + const pdf = jest.fn().mockResolvedValue([]); + + const pdfFilePath = "./fake-pdf-file-path.pdf"; + const pdfConverter = new PdfConverter(pdf); + for await (const _ of pdfConverter.convertPagesToImages(pdfFilePath)) { } - } - return { - pdf: asyncIterable, - }; -}); + expect(pdf).toHaveBeenCalledWith(pdfFilePath, { scale: 1 }); + }); -describe("PdfConverter", () => { test("convertPagesToImages", async () => { - const pdfFilePath = "./fake-pdf-file-path.pdf"; + const pdfFilePath = path.join(__dirname(import.meta), "../files/test.pdf"); const pdfConverter = new PdfConverter(); - const pdfPageImagesGenerator = await pdfConverter.convertPagesToImages( - pdfFilePath - ); - - for (let i = 0; i < 2; ++i) { - const pdfPageImage = await pdfPageImagesGenerator.next(); - expect(pdfPageImage).toEqual({ - done: false, - value: `fake-image-buffer-${i}`, - }); + + let pages = 0; + for await (const _ of pdfConverter.convertPagesToImages(pdfFilePath)) { + pages++; } - expect(await pdfPageImagesGenerator.next()).toEqual({ - done: true, - value: undefined, - }); + + expect(pages).toEqual(3); + }); + + test("createPdfFile", async () => { + const pdf = jest.fn().mockResolvedValue([]); + const pdfConverter = new PdfConverter(pdf); + + const pdfFilePath = "./fake-pdf-file-path.pdf"; + const pdfFile = pdfConverter.createPdfFile(pdfFilePath); + + for await (const _ of pdfFile.convertPagesToImages()) { + } + + expect(pdfFile.path).toBe(pdfFilePath); + expect(pdf).toHaveBeenCalledWith(pdfFilePath, { scale: 1 }); }); }); diff --git a/visual-js/visual-snapshots/test/files/test.pdf b/visual-js/visual-snapshots/test/files/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..580a9a8c172b749a12f9afa99d77a4cef7c932df GIT binary patch literal 52977 zcmb@tWpG@}5+*2SW@ct)XfZQb%*@QpwwRe&YB5+~F@wd-%xFm#TPxrDcHhoU#6)b& z{5erwo%v-}=IL{)GQXx&7MEmXW#WLNoIgL^g<~aQA#pUZffEp5R=0MuGbf?ZaB%xO zFe5Q@GXTD~IET*p81wshf9F2Ud6otnG04BumW?wQoPmT8$9 ze{V>$w_Io$y!+;P&{g2JW%|mXou(VTu3558s6TE0<(d0dvs|#g|HESG>gtP|W+|oY z{Q~3K3Q%n~gIr!Ef-L(Yfm%j1g+xN}YFOEO&&NVWO&NPpyK7pSwl#I?`4yq|ViWKi zo{CwlE&vkw7{wQ{%ls!-Ak<@gA@@)0~ygYEs(&pBdR&FG$Y%FlhVvcr>E^1E3rsgEN%ratPqQXoil5qX~^qF#NH&VK7D9v%+%|96fr^-o>a`5J$-YbALe zuaQZ}ww8~7P>*;dHJLeV5+DEkLBWp9-Ei=w9gzce9xZLSU&13WT(+Gc8cYO*_(hDF zpP%;japK*OSt+oFXg6{@@V!l2XtS2cQ8T_r5V=T1sX$KVI-}2s1t%uAGyUVO+Xw8b z)BE|+Nvm$vAzj!ppZJxC8Y;BU=m&j}y?fIeCeb})Lstj{_P3w~!Y76oa-04;zI45(M{#rK;ePs}*f#j^Une|6 z))%qF0Y=GaH0&gwwph>r(ghR5Vu~L{cya}QRi$Cl0JxunTh=}_n!gf4BwAqREI0_m zBM|>eJY^WcruyoUI_(d_%+hTOuWB3jm)M*rpB4UZ+;h)Hoo3&5vGn+655(1-ybOs%&*I3@=wYA4X6VA(S(WkSI&#LwZiz92pNBh-oSBjXWJ~Jf^f? zS?zlD7THLeyE~VJGeEztFu~scelE_IN5G{hmUqK!l;l@av!!@kI^s1X*|c`-IWSfAn*u3m&)A8s-i+(Q5A&D8Xx+c7IXNY-67c z|FTR*m3q z*`6Je7P=!S+g)f%o9N0FOc4+#gRoe@*ZR<`{6azBOfhW_ zRGqYDlt8AZYwM7)UEwrfxh50gmbWpAaYvuaa6&=Z3m`vL+{lANK%X2am4A$snmzyi z319*7bWJLSy7%<+K0W*nTlW=6xy!{e5-u%1zh%#cWAJYvLy#zD9GM?IufKr#+fU?g zuX(}|&cvYH*ab zDlgZ9T6Ck6|4aqbg!Ytrpu7LF^WbAf-y#e}MffLY3MZ0a?`Zyft&nIHcAiO<$pUzc zK^Zg~&D2PzjTw%GHw=F8Z`%Ex;KeRJ&dxfiRFlpM=zZ}LpqGJI@W7C)8~klV@v!Lo z>+oRJ{Rq=1>xR*~+74pw`FXp_FaJ8#i)OV3rT^Xo%2J?*Skwl)g&ne#HN;+^L%nMw zHFTi^MQ36q*;L2{{{bJ!E`u5!oN0g4SO)chuZe$)Af$x>jmWlUmw$98Es9NdKeT6N z@NE&H8%f$}-=ltoHBL8Ig6pu%936+AFY}NEtgL+XL<3aqgu{o%BLlR?2x`H^mSQG- zWLK_W`42yg+Gy3J|?J*fb* zibr?s^xsWF@ux%6-j8Nb(edPMUPAL9Cw@6KNM~ogX4A z`=UD-wAXH^@2@keQf2CX9<^ylVd0MSkv$`cWZLUfbo5lKk!x4zn_Z8L`cl0=`Sm%i zCJ_)^Y}i`taJ_s|fXqK*N6Ns^p!@DDM5(IUJ2Wf4mM*C&Z!Q*NjIb}VCmn&CE!7+g zr)A#_A5cSfDo__04cF;q^wfQ>Ai^9k&~AG<3icVBS>hj-cf9#jE9zP8ZUF zmYQutM*Hg3+}R7YQ~%ZkU_P{;O&L$>A_4e$MHr2!#DK`Da$S5cR)Y5%`uk7TRo+%f zFnz%Qhk0d%#e#fpM&JH|!#zEDBh4KQxIbhWZ!TG-mH;h^$GbO%xYs3V*#nO|2ECJF zYTurn!Dv$-z8CZAGxa2h{Sm}kDlCHOs9DZlR{_Jx;&#Ve=swwp&3?p8P~#LN%O*AA z?5?bUdD=Js$zc!?v)-en6q6zHR}lSSIXK%_ntWWM3YZ3ntRI^K!kYpk5rS)=^9V=y z<|aGOIycy{+jPil5uM^a6XRJCr99 zJH`BWyCi2MhvE59iSIoFO1Qtka~8@I@$?a^?Wh=arM`krvXe z9ChIiI;p3_{H1zJ$Pbol+M$C-?@j%@s zus4Hd1(#*9^Yj6XY)uPGeK7XWR~yW}@V(97fg1-!1nCPlBIYk6cQVYdsU;Z+U&?aj zj%G{*E#KE>1Ei!pNhPAy$xhlCV4P5H7aj(9E1$TR{839&3yYBsQdJ(dg3^k;{TBx8 zu{pNPzp#{}{<6X8)!u^C<*dQrw>Ku2qf|%$=1u4V-M*muFrp0X-v_ZcFToAIn{Jgp z5Mk(BBCI4nZY$Svb_%5`guTf%j@T+Ny*NB?R3qZuXib7mH zxis9#wcFJd{x}TNZBvyc-8=E%03mi$=$h0*H)FGsMH(Ray90$Xgq>qlT-Hx>aVVQq zW6~{FoM=YdPM6i}$Bxly<_*O^pZ-L$`%nTg#GvJh&M$CYTy@e2S4!&Q0Zd7Xgr+?F4w=%Ec*je7cHr9QKq$G-NZIdN#zmRzOO-JTKdQu+}0*BuuA`k9W(|8AEXE3||remClIH=qo;FqZ2{8gwq}~ znIEQrSGl^TYUU~wf6nUTKz8&1?d}6E54evrqO6U}b5>;`xa}VB7Yj9VF2Z;2%|>ck zOZOEa9dz8X>Y7;i$k?VOGq?DkKpYrwMFV;T$5vNER4BFUtg8uLDmWde!R4A&!3+W4 zXvkS%-2Aey5Udfi_u6tt#!ow6m153H6pgI1rnBY8(X4(gl|p<=$hOIz6E(P^tFEV{ zYrdG_;t$Q6T**9=ID2PVd^DhdaLPpZe6V#inYSoqq$fvnPhi)IzPgvO?Ez72+ek;l z702nsDy^xnKjh1Qi&B6a117?x=7%3ca9nD0VW(JCSXhnjQWK%=j}836UqV;SGfMjr zIJ!cUMW?kDk+B#L&dY>x`n^})O#lA&b7c$QG9pPe2ow~;&7Hm#Dnt!jX)CI*gwdQ2RkKe_267-@XrG zRdHf7()yz-w|zr6Sy$Vfk2gI7e{$KJsW`&Xv#pSU9MRbFgZrOEr2;T_z7or|lUU~^ z$hOPwvF{tR=^0+58USXwH#>{(=+NFM3jSoXs z%2k<~;x(*E^pLU?*!Dx0ok`e>+wN;=mBC_zM>Me$*=AkTDM69CeF> z(+CcGfAkEhb5WYc5S*0vTIfb3N0c2yWo*VJS~LcNAViuk1oD2FFIuIaU?&6v&!YMHl@!jvO@mnfZkHE*%`4vJO3$#9FA=Ok<~o{`|n*m25=&VDE9=hC8jZlDf=V~eacJAkO=6P z0M1NvXH-wyQm>m0;e(|Df;5>j_3u*olFVJG#HIcWR!sXdexLaTN#{-qWftI{sAR0Z zmrh71ziYG;JiKe^7qg^pZEq>}O(i*WX3?vWpfn@0mqvCos2mIjN8(eSV{Qi+*+Z$z z4%r-vzF{PWS;hT@y&Vn&sGOpqS-VOt$qBrtxK3eP(_R{HtY8Dzj;|%y)>089BVX?w z5T{Im)rNOE!s(PVSZgE{GYS>u`Fhw7WFpk>ebGVJEgy(UKDO=s3Aj!vO0*Q5NIG9s z9Gk!Yl*sNlj~eY`s@vgGRG7jPGXk_6s*&SfTNW98<)CnrpAK3Xcu`(G^pMatIkpd5WNfol@kE>isrsT+h#G+^C_InFQ$ zD|99fGcHItfdK8maIVP0+2Q6kN>i`p(;xB~?TLT=-JwuMchX*Gj%LsF6Uu`FKWl;j z&&_-+VcyVMi!uErQhwP8ZUK1iL4t~L%dtI;3puT$5-C6A=iKD{JWF6f$uA0CmSA23 zgF$m0#?Uj{8>U!^_!s}aF%Z?kI6>!yI1U)%-4e4F*PDc*(K8+hUH8A3QD-87>)bwU zr;fmhA{9}B*86W3;Li9*M5pYoHyEK@S6o``zI#pw?Jpo?$mX^9g$vXyc`Ai#w-fnv zAsu8UrGs~jd_HHnoM0E?$~G|UFnty+SHn=O;S)p9$Tu_&nQ{FRsc#P&0$+`AopL&B z3Xvy*$~ps-5TZ~U_ZtU8f7wiAS$2{U2aF=F*$z?%&rWg>r^}z2T%}0WoggpQCN~Oj z9}{kV))Fe$m!u0k7Lr*8Er+XxqQP7UbiAP(=gj4H@qecVRi1_%Y<*tDO ze=A=WS=7F#Wr8MetE}6vaQRorGa`%FG9sCl-_T<5@Lfj-A_5B z45L}aD|Z*)L)Z?!FpOW3(-Bo>b;(TzjeSP0H5P#;324Bectm4lp@4Q_lt&&h83g0q zk5AO4LCsKgw&rN?@%^~fz6c_ga)uNTQGp-raz>SB8WCSkHq(;+Fh56c(aUx9iKLGZ zMavyOfhMhdz$l+v7!vTg74OacE~{Se+CP}k?@W&bstra6Gbp=f47(=l1Nt6YHt#(C zqF}8F^)CX|way0*)KJiFHwAN~~AOR9M-7GogNoy1+CRgQ* z9ErZ%#w>p)FTPxXqEQ3{^?Rx8FXd@IZYis6ausI&>15688UtN7{DQZJ_baH0AYDA< zs4YT!wjG3t18ZL%6ex^x71Yk|;rl5ghYBC)x$sFZE|HT(lw#7Tib|F*brdS94oN#V z8p>&a+$Ztk67{CFluM8O^LuN)6UaUHAM8V}mz#WxPQ~{!5f3P|%MBa))d+2dX~Znl zF_fUv&^Tb=bb$!t2ZO@3{h+mVBaY>dZ4AiF%t{onRng^^y?@B|27;hDiq}dvDigup zb4S0)4b**~LaRU*Hym%UY!^h2a@T2*Yp7smF7m7-MRu~SaOUiB`_h_-fNvM^mH}j@jTxsaxw@LXDGlj9_DtDnS)xt^A-X4m0N!V*3@$3wm^INN$+4t9Ml(*#kYRk} zyens>EshCGi(qMs-UL+pbsS*X3zD6Mvw@+854Om)9e26#jFT(+vZk*#@}tM^w2Qq! zqIB@M^r&58qNUeFA5Ew_orV!J61?NPjF>fgopm9H>ikZ8^qZT()_ccw?h(UhbrJ3a z+7(?ih6oZPZFVi_l>;1w>R1a18vqZ6LOIJk>w-!K9yjzg^pXCe8B!7n%8l4fu`Jll zbZl%}uWbn@!OF9Iju>o)8GLO>2@?T-ztkdAJ?!cfm!*;Ha=mUQy&hSO&d(T`J3`{< zI{lTD7_t#U7WCbSX$(jn31QP6=Yf~hH%ai?=~}QTbDDifX7(6x{o|g_y|4*aV+MC@ z1-S-Q$(JL`@~qYfA1KVzqFtVUXN0R<8Wh*weM66K5%(xi*J%kvmL9X(y~-;TDgZt< z2qkjmpRNu`1h`{b$Lg50?a=?x5!!e^%Rg=YTrk8&U8QJbQ^I4m^zLN58)}^R&b6Jd+cv6mD2rcPHnBsE%Hp%wc z&93$$#gIvYl%Kix(0AKz;oZ1SRptP%?#T3XMdNMQj4-SoHqpoXX+;M^^q6>U3PWV9 z;mEdUGu8$AMtneEXTGkh7R0sxUxHH?|7vF^qBfRkbS}#gNA;nN6 z_+tP(hWzzP<^o7=Rc8u^L^?LVS{-P(F}SP9GV8&USW2c}x09t020bt_tX$gm0SCXD z0V9*l(TrJvhj}Y9;pWe%mP2rdzD^qjLISaTRs8&krR zdftbD^<;h!B1y#wh+e%L@nnYM@lCW7WuxB(UV_y}(8)xHQ@9 zU^?x|8eWeJ2KyG=TrEI|>v!J{6`s- zxbl~B3be}AQFw_c&(4OmDjYBK#21?67I7VGevS3UESIjf*+PiIDT^xFq1i zzUJtNW}=UFF3|Fu?~O3?(N5FA+=?>9UIW(otKvN|b{5iBE}G(J%g;pT6ZckFYje4A zrvbo&rV{d^?Nj|^8h2mT!;+SR8J4fc*jCLNSe{)_(#QFdC8@~6B9kVp zLjTlrCLf}iceUsa&m6q~grh5cOpSX98>K2bR_VyiH3?I{1)fL2zJMs60jJ8Co-tY{ zoFw{_xJUEO;6_TflijI)TxNr|1W=hYVfYa!Vb@x3Ho^Ysi=@H|UsA6^MhCMxGRVtM zp^(`QBR3_Bd+>*u*-k$cWH{ySc{%uu`M}P&(5%Y*iyX-bnE~gsrN)o?ahVXxrmq&! zN)uTj$dm#<7C}GnNy^JY3ySi(1!5MT5GmjYtJTLGGYw_5UYSA$XO^MAmNV+|+6puH z6&?-LR!DI@$k_9np9p4c?iW|K9hxWzi6OWFhmEB4{emj+3SaU;?EwM1X_Dr+qL~+1 zt8KP|9!I&pQ0|Gy&UD{Qu1l$rT{NTjO*mVQGcs;s888V5AnDjT&Qi0tHTLbxWnp_) z?M((5ur6-}*J&i*!6d(u1TPXD9`DpGS6~sq3x4@(4p50z^el^+O85zERm^zUWw3Xr zP-oBTDTKZj+m8Fz?*gz6G)vBOMkY=J0KUP#*zWxv`=u=sSRJ{3xUUcy8G7Ts4UL;s zXbYYMz~nQ)=e(<8xH#3*xiVgX%c)_+rkVF%BrN7I>Bpr8hg){md6Ua>m}l#lN$#ey z{@s-p@)dN%yHf+cnzfxJ4i?yZW0=o`wWjveGJ@#%^J~oQ#zJJGyt`pyS4*8?c1Pn^ zQ0{%@8<0IWgDjtQ3afdn<>%2GUj@82KHS2a&#ILp)1ZY?$qe>Y?~0%GvXk6$uNF}P z#5ZN4pj<|ATe(u15503^d<&9pp}}Sr+q$=-uOLThN^1jl%(Z-~=$$5@kJX5H0#z7A ztBLDSCiRkj=u+0TU7GI%4|QVI_vHloC2Q^VG-qCLfe7o2?XAVay1BxnYCRme3h?pD z18H;OfeOqR@ZdIIbssdX6xdI;+`=fE&i&MWgXJ?wGVk<~8U?o+%5L?}!HLMY)hZS(m}yTk<}%}M zAIv{1;n~OKb<<>pdfTRD(A^@rV}&N25@kKPbRXcf3?W-ivh(K&T-%R{yMy9o=s8qp zmRu33-;@;`#Vr7bMKg2lXIfV`{%R@QqAWU@cG7{=X4^5{6p2TsjrB6({3GRJQ-`%{ z=N8k0L9tm1)@5lhC`|BsFZJ})2EMgc2GJVnpB*C7lt=aTDOeL~O{^5vJcWfW*?I2L z1r?9@wa3lHX_^L=MA0f&03=8FZ{s&LW^DJka1>8e4vw|epsyzx(xV%&B&0gN};8~pH)Nf;&|J{ zl34I!c`XArCz1l+$|ac#@Xt*OTF%dD;s^(V7V@9!RBs0eQ3>=KqQhe;t7tb`s1M$5 zY~-Rq{T8>K#bi>Johf{@m_YRE&Ek%>Y3S{kyj)OERr#8o8g;Qz*(Q&#zO>&2#VTB` zjbNK87gV^s*V-w5P-4TY9ds&f_bbKK<44945(@4abX}NMOL36d5dxgO7)&8<_@vCB z?h*ZM;>^Nm=vp~mmvR^ltYUPZ2CH+#e)%z1BwgeMYIa~Kh|PaGthX-4q}$~giyIDe zmBB&8iLfHCUA#c?@l*anv#Q-=Ncx?}0lLul!Qr#>QeCm#jgTBHo!I9qbbU0pgI0+z zE3mCJ_nj|W!Q!i(4cG2&PBHVKNew=Zk@>HXb-R0T=R-3&-RVPCS?$`d1JrD(k@LyQ z3z2Y$e)hf>bNMY><+NfjzQ=7@rOwlSwB4-bkM5k+!g_f#v{dP!)3U8Ape zzm(Gj@u!EP=(mV|Xy=Wj+XxbOK^ab}BhN-wm)FP=1=U^XK0^X&zt1w^MMU+ zVJ?01XmoCzrpD ziRJ!9O@vw}3*G`ks0Hc@{uVU)m$tA%278}B@!Glg?#Tu6mxhoC_9+!$uoW24{Xv}% z@(*bOwN(@hlK$cQ;echC@IQ=+e$CI0`A1iecR<_W{y$SC1HF_p*{M9QuW#o>()HJc zCVwdmo&83X$~)cJhL3^p(@H|Grk|6NK7Iy*h*DsXOP%_HTa3il6p!yM7_nj>e|a36 z`yZe*?{BpKGmYji!{z_xPW|uFXqd&#J*-X5rCf}?|NnDlIM`WO|3}WuWo8otx&myP z5iD&m+Qm*o=sJ=Kv<$Qzv^Rf!Sc(yBS^~G^0{A2dn&}?X@rc1P88Q1n@GgI3D0n8% zcE>APbL|Bh8q%sYZn4j(5`6B>CQX{_Spar^8sBcUbKH))OAxH$D2^&6bjD6U?Kkx? zP%0kf;Y2##UI-#@{E?~y5OlAcJ!yC00G*pKW=XRzsRTw~@nntF9e#f&B4W%mJ`n^= zuokaBRofB>jQU>^5`nTvEWuKrUsRLx_J%!>l578?_6er>clKONvhg1apDMt(&)KEO ze{lGRrkh@}9iNDt(z zW$Fm%pLm(HNS3V zU*>4c4TQH4>dX@3TC?O7)Un5aLd_^Pcy5AflP-hH;ZvD`W1#Fiy1hWFedxZOI!B!)Tc@nQ5{NTw4Hz zLI`6qwXj2uhR@MxRBcU|jpYYqrLwz-;ylUAs=@_1 z6mIF_G>)`CbS2C-2aHmALah`|X?9950fyu&E1*z7h5~W72Mm|~)ju!sU&e%z9^k6~ zG#oZ-ZWPw1DH*?p;blLacXKKCeH38jG-{sw}3Z8)Ca?%mE7(g&~4dJFxSg= zz!gmez*@q$;t==ImC;k=3O9bUi8?5hE*r{PhRG?@-UfXs4|*Xx{uSGu-07EGb_-0p z3bE69#;ezkjn*FW4j{V@9j;PKs9cHaN_ly*F@?rqJM7K+;Ymg!5w%4gV{Oh+{X@9e z3NFvLP7kk$(LD7|D#}jhCy+0^Y?n-EhP0-81~g0F&`m&}8;}56N{({od zOHDENQ#ddS{-jo8cH2kjn~w)=e~fU$8HaeAzU(dFnH}Ed{`)*nV`qxDI_3~w~uMdsYbk)*{#2umg3TX^o>^r<# zZNxeZAubo<&1jOUn#*^{qcfj@FzHstR9V4M-%cu@Ye9n)=i^@r?nh#3bxx`YuHvqC zxG`r#P_4t2I-KYOH*8_D1V0{ur87uZ%6F=_5Y=D*XOJ%GD;=VnQ)nRBqolf-L^`v3 z5Okhq)+0+W0_$>w%0ZHhSd>%~+@)r=Xaco{u5vFOL{li9L4VZ-gYv*kIu4VQ38wyp zo337VOutu&r?TQpY?azq`uqTuXV5Y_NDUS+CSabc_k+ ziS?sE8^4eTILl5km#8gU4<%4_%^6u3v21~tyHS?K8n4(3yPAzA;Ie$iPcDJd76a|& zUK+YRVsUcY{txP24V6f_*_-4b{(O8q85%g!(ulFfz|dh+fdoII zHwNRypM;O1IEPZ$vmr$tI3L7X!+Kqv0>}w4V(FAC!=OkscwGFir$rV}ti3@cD0l;O zIL~ToWH*+kf+3|coS&2(?eA84oCI1&LSMuoX*3(G)#C-URU0Nfza2~v7KkFfszRj+ z8c8hMAymVxk;L5<9yE*}L2$?v_-5PkzA#iE($Q;BeLz{-F0`^097~qp*9Q$)AUTP9 zo4e?VS9>Tz7qSAukixoJ;lpPvjmMmqxqy4u3BKqtzOBh+a{TrBe{d7{ly?}KiZZt*i7kQThpdmkmAsWO1{cl>DmiENh!X1

5n7WL9j)vrYim_+lgoe#vZnlGzuehY-+Smzm*z| z>>6iVPsdEOdB0L`V3Fz#1h(V}Y-fY#V9a|<0P|t?@S>0=rx^DPv{Mn?=9&U>HI}~0 zx(?)TTe|LtA}Nb(uX9m%yqNlNki1-*E;b10Qe$3=YdQmcnr*6o8XSvgng+lRSQ738 zB~7n9vs0qa{B=^|GDbsNVmkFxG7)%Y2x|q*k$Yft(R#3keuDU|xz_hhEd$Mp?0Zb7 z38u54;eafVPkB%k-wGZ>!fy-oHy{^Kq*j1tMGV7q8KP;4*<}EUqE;0S+~Zl?GE+c3 zz|b=Q9roPG{~#u=o$z_ZnfDB~iUEWCTDhbzr=(+VU`7(~Gr0%Gd(>1B#1L1qot{ccMIHjGgx>gn6OxVq(+-SGJ5dB zX^Ef5u2l5}Wau>{Fl%%==d1@s+nZ1iUC(_#w%2F&hgm-qJAeoKRIs#A9e1ar$S4Y? zZ9?6!g|Sw6LUm$BL0DjR8ryNCzWnLP@HtIORK_ zO^FCv^HzDL#@4{dJ^zzmdgPbK4@cBlZTm(DxC^7ed}k_QF<5|k?;#qVBSS1kYDt;Xx4 z9NsKjOr#UwV)vllM66dGcFo(VqIT zSWP|Q;Kmom%NnjV@P#);%Puy1fq8y&q>hZ~jZEew>s4#RqvL?4WHH2M-7h8%YkQ3u z{mxpJ%^0!jJZCx+;ELw+K$AIIdL{STHOOP;7GEG~d7@PzNS*)|amei5xf$=f35*b~ zl_q!+Y8@B4V~%Y)6ymA*ZN?eK8nO`0foq=6^@jW%MHkHlBuB$;rHvRLs7$~1V#kF* zQ<^a*?__;htgQJFU%^?Il-NOwu?A5#VF>M4`8DVYnRB~D`S`#q!*+)1CR0nBdXXDA zIV3W!;qSVxT{`iXg?kZ+S+1Mg*aG+mi&3akRly|pBp7;Z19UDKvpRGYeh{>MV{9tU zqjaqTiK@Ki6XB%A^B1Q)}FVaZ<= z$I4O(Tn3S=YLYhue}Q=wAOreQ)ztAbzFSaR=C7_ru1X!BW;DV4niNI;Xp|qsA8tt_ z%hA}s=<|~|d|uYfj4)eFz8W^AnIE{!0#r4f-M0x2e}9(<0zz$lV0;n?l#i`j8-`I^ znvt#LLqS?uPQ4sA`2)EgexI8)_XKO?9;a-xpPdXnyyovK&8Nu5DsIjThk&W7ps7xM zl2jt@Dh$8a^D*Hxn_H3mrsWuk6(l+W=7p^~^KYoy0zgsvxgVTm$yy1?SCU`Te-RxDv!cDB%j2zR^dQp7;=X zMctP5O>n@VpHAqU)DR)DqUivW6i;$2dD*W~5Fwkdms-#9lC?)s65rEGLXz^-Qp>K> zLurXudr0#zTqBEoPhrIwyWv}dX89UYL?ww4ru%N}A5hX-#Zj)SkzpjKg}$X$Dcw80 zmL>NQ!yTTpzTufUiYS*l2Tc`b;f+ps%-Kq`ck=iNt%oQ_&bQ|gse+jXUeao$%yv6k zUU>NaThF)`Clgy}9$FRrXzQATfE-tGP|Rh{#R`@`{cI296DHj$>-u4Elg6zQx=hPy zySk?zi14?ei`$9NKl6FhNqaFyCJ-fp{or3qTX(TXhxByVC&GGc#70Xs#)@;S0-L+Q za}ouQ@H94+?8S-F44H^v&yxIF27^sigj6w~RYBuToeS4~;|Y4{NTeK2duP%_S+3C? zNQE{+Q=gx>Ncs(eQoXtOjelM({N_Hdsua)}^+HMD@><0I&x!k=bNJuW`C{VVGrKer zi?RP-F+LMQqe<4Iu$~ZU=+PgE2?;agbD%x}xh%U%pM!|5fvg)T)MF6rAB)*H(5QzX zfkKS#{a?t3LDz)0^Aduzu0V<%^(fwO8C-)lFVO<`$&4SLgopXCi2moQ3(tS6F8{0l z5pi;GbN-Jt5#4yR5&M9AL)K|fJ>4NWeGri#N^MCZguyYeDcgimQLsT7jDwFz0m16a zyn!>Jp`-ga2DxFM#q@a%2CQey=r^srrnlE@vcP80>5rFurH{K5Jjc3#mq70Zf%Be^ zr`O|o!+@9D(}C;T=aG-kKAdmmG^MNmpVP>4Vd3}NMRdHAj{{t9Uzt4Tmx*Ibzo+t# zKj}RJfe(w3!hWxh+hhEOf$u*(w}t%gK0zMu^=LHS%LN19?$n++bfEl*67T@2+wT>~ z9}0aCHKfLYf1Vtt4G(i}&yV9jZtpwemong*{JQoFs!d-viM#z@ZjgnMYYA|3-k@4$ z`{%@2^V3qKaG7+Kn!z`vvkPfT}}xt%>hK zQwvQZ|m+cIu8fi#@L^z*nZE<`q!cnJtZJD|M^)#fXIm9uUc^|ANupe`Mf6dK= z2_39YvC{86G#7p5#CL*yakgE-1?Tel%Mtw<3$)r$;kHkSq+oP0qu{8ravd!^#F}qk z`>&~(H^$_)ZefXPgxxhhkjG{5Dpj#-=EyD|QIc zh%8KIkCtIVp*0Yh;s_SIW(+2%8`Ij{1qg04bneju#tOv`LKA_Op}{Ju;hJciM>Zz| zukIZgoL~cH7jD#V$r70JiHNMd6IHHctUrns8Q3@jx>{ZRy7~Alc#YDqTF^)=Q_C#QtYE9fvDUIk#stTlT(j307ClJ|iz6Kwc~gE;Z# zk$JZli0O=Jh$(cQ2=gQ0;5lq+=KQx91ELIWh!mqOUq>G zOwqFBEkaNa?`>VS={m;Fq!A=bO8eakTRv!=p{Yewi?pe0E)K&bOQFQj`|^%HCk0uO z$1%ffyehO}sv9Kns}oVn<{Tg2_E|hBZHO4OQ2JbsEv&wwr+?FH$6&*+gv<4{ zcr0$MBMFR4@Cvq*!-W=0*{F{a(qxL@+k;0agdjmGAXctv9}x)L7f^QdoZNkLaym42 z)!l=M?0TE3Lhj2di09E2g@A=a90=I{MOxic5**&|vjL0OF^oyWEf#<5HRI}j+~$>0 zeBEBv7DpWe_N@{?P(h-oRb7b^C&-U@H3ckSCu8CXYj0&aoLgoq6N!No#%CtE>W$A406WUElg-$bvY>31a5>c>8t&`vAFgvo9op?h|;`eyDKpVKd) z6xMHStw$Z#uc5dz(`x%pLaLD<<~5?3c5f1p$g<6+=6TMJsw)Yy1A`8U(ZFE>#o!(s z5aFv{>5$KV^z^1V-0$+lNu4ktwlS3`nEWjWZQ@1X9?J}~ZM-~aRn?pt4Qlo#Z#`@F zhf7A5Xua!~!NcQa|HvoCI?&1?>%p`&l0a@wlRSwd7AS7i-;B0ysN#>oE)8F!VwS3W z3+=z$#@d{!u!L-&kqpY+x6Q^UNe&p}N`5(;WkB3@!B*zI0cOkiPn<&K*jPLFud8~I zem(z_6Ux2Ka!z$GTd|SY$G$uyGun@9o+5_yyVd-z3oVX)ydsi76z>(k+sWRS*%9&;NTy%NrE zQS!sbYl(hL$h5q<5fcc~7gd~y2Em3}Xb}I$X76<@+#)K<2t9Q0YSzkZ)WXI5eqdok zeWK}NuNG(P^+KvaJ4rUtspCudVYYK0Vhp(*tV~nW+Kz+PvnNVF3EGOF%Z3mI)_2Vn zw4Kh{(;YBa7pVb3p3pC)h^y;_+C9X5qV^5M5$t8 zG-*@}j&?dJB9tR!cJ&fRa7GhU$&HaKCVsoH5K${5`#E6ph_yo?9}|VN$X2%2D&`(@ z6BJ2SAK83K!wBsio$yJ;*UI(I>c3;P9KS%RFd)LM>tFN0?v2eHw z%X;D6n;mhA?N(;G=$|CM@ica|D!S2B5c6fNpM5)j2p5-`T5C^jJ0w#m7OjW+$Z+}g zJUfOyr>C@zSZi)}Rb)8oEU9UDE_jQD>WzEfd@!0A&l{fuEDzxy#|ibFr|NwkW>(+#}rjuPf8##ZrGki@Bm9WQzux2Wvi zzdw!YuUU2_Dh}q+R1d75x&M=OQj-(iDFM36d`w4}ZA>Vr{7CXfBh~GE66OMnTRe}@ z?A7f^5$Qa12WHN|M=Eu)oR3rAGoC3s1&=I8w_dpSQ}$7KUu;!tW=efLQM!KW7DwNw zSX{iA>n9>YRkULW3g~Ku#~-xCIBe_zWd1el2NftB^RUIa0F8edANIkN z*sd_dK`5Cl`4y^qZ{u$=uL5HA9X}*hRH*^q*{bLA%=Xz+gpRt+mBpzt=y0D2-P}?6*9NV^S+qP}nPCB-2+qRPqI_fwb zqhoe#zS+Icxo6+I@BQxi-Z9>hKWb!E)vP(!dgff~x2ooR)-pD(NmU__jiY@20!(Zlv7sKu$tW zDVXN`o(hIAETtfc2fPTpJ?xVGXuOtN$aF;a78!AUhc?qSqxePV2UjA_k_g1&X88Hn z@Kq#j$fRAdErICc2+=R>&)O)EiG7m~L$i zj>-|`JFO7FCF`wV%+Tu)n>$pVNNw$;i^c1Uh%z=mIYDK{jPS*36ih?J=`hU2Xskjm z7IBS8T3vE6oUm$abwLlS!L1=_h^&sVXGg2R`B=icbuNb``!TKW)uIU^zlYWfFp8W~ ztvYy+`}uozJm$?2>{RVxPIyAoq8oGa1P3_xb{Yr*PzupZD)`yc38GyrK)^&X*PJ*l zR$890DnV#LICY`_2C+Z&kpDwq$rgDFJ0cj@{DGHF?c;$ z`pDndNrjASRd2KXK(jZbmJ)q{K+)cP=F3#_j0l;18?i*cMqv7C{hi8??XSaUH^X~< zUsO0(PIG_-0=(uMGBJ00AkJMckLPWSMMBSTjJ}?pTyvM{+kVW7S)->__h?P`<_vVq zi&E!Vii>O?&mJRsuADlvm1WSt_M^tHqX^@BM^LF=aJ*kvP>RTba4Zl|JzqSOgs`gh z-tAEY#m;16MSGkvpv8`br!-9(gu8JMM?uT>dm4g*Qoxda#bL9z8gN+zNo^j**gp@?=4my zX*y|p3i4oPBO2@W^Cl2ho?mBc*hO|(Y`^}*gHy67+6iL;{9?Pf4|NY>6VtF5TU!ur zY_Z8AeUY>6Da#b%i2kF`A~xbcB=O`1)vfq3v75qoEe}R4oI-ZD;(GqtP!MhkVi$PgZ$hT&R3SAvR~~p@ z{X>r$$;*v!o^TsHYB$%gj8lsulHwF8s2bbFyOBgmmy?J!buUpY@n1H}sILR!xhC*r81$z6n80Rvtp@mE=Av+!J}WS^=vu z6Rpkn)@F(jS8xTbgSL*Y;%zdXvW%7cP{~RD)oj>EhJDFRGZ+P&C>MddeR z&)L*d@yf*e%rA7YN~4Nam`io*s#_O3otmMhAcwR*j-vz7`^E=APXk(_L2QF<49he8X$~cmynDExkXwwcj zRZd~3AHZK%aD9I1o^8sw2Va(sffyG8&n|y`QG1$eA^V2%@!Pq(nMFP$%Bt=B5B`I3qmFDN+w!G zqh0CS<_k;~FVzx*kasET@r4Uhr3<~F&iX=0;;3+qaUw*DzhQI_1y*+;V1s`>okYQ+ z_l7S{T+PRhcUsO(Sjt~m=)6bm+Q-Hf(cFH^R{GX`HPwsP>MmXU6}6>f_7ofpyn2eR z+&I+NO|VCMKp*wy=K8Mr07YHeZu8XgDVfX(1KN?j>9_!>F$Ctx5iy9CK&~u;UM`A!fF@YJXoccJoRB+KObX!>w{EQ9SG-Wo$1QIno5c-|i}txV1c zG1%x)cW^sHJE7qBrIL2;@{Pyk;p1QTpXV~1rldU*D}K&Q9DV`4uW8@S+qvs3oiv&~RVxHgg_OZO*!z;Sy!+y)J z?dxy%9Rs58-D5xA-adCY{rKN5nGM~22+!Uxr(a(;{Kn)z9AB0{fbEuitp2`J%gFHW zZPl`IGO_>Xt=f%PleU=Nys{(oaGJzIUjSkOp4gxshZu34K z=O^~{->)9zx85T3-rxQ5ZeQT;K$(`({9c#J`h1=zCLv(&`k2Hv`4SoFKCVrpFW%qw zUoQGyZVvrk6#3rYF8m&^Zp!d|-)}eM_dy90-pjgQU)$s_O)D#6+49Z2o-{|^aHB>1 zU$1ZU^?Ro?#xL}J-!J49kRN89Xs_AnwjBDrfh*L@i)QM!lBd_$Nm)-q%Ke_G@2=II zDqHpO0fAK>%!K{!eKn4BOm zI|4`*T5E=OV8*Sn;gtpGK*wl%YI9%Bn+%ree|LASC4M4b5;~QTQJ|Eti&5SV1%KOS z{PD}RgRurb?5THhdNHU*FBw)%1``ZC0?S&uh#|TQYuv~Z-okF zOhV2fO&^aKm&(ik$^h=*@UXx|&3r~WP=~@wkhsiSA*bUy)j(J=zicib&@MEPG-dtz z$}C+!kYj@&-Itk_+nuD%rWSwWD5`N=2RT}iQS3AS)FgVBl!y0@+*Dbb)7k3)o2%{h z2C^C4&s>p%Nn$PpWK4^XnwBy0=@{Pp%mES5`x}FzeaYhPS#}wFR5`>?4!oXoH%W@N z>Hhm7KmV4@VX?;ulXP&qM1piOq!W!zxHx>}(VXi&P{d(*2WRP(EEds~>?Jodyr#+M z;hc9~Y|bmUA-RMGu&myH~ICeyTzj=m&`fxECFfTknU-s5xPSkih5{&c; z)oYsqaSWG?&g$4$QpDLbN7|^825xK29DvPUVG2Y95`Mv(J>$qxAoF+}H;b#!jc1$- z9tmfVfD4Jk6Zde(AY|j7wV<+e zF-K}3da*Z}B)&<68SGVH@o~6_0?c`5yqC=S(Y$`GOP-7OqYnGKubD`|V*>+=ch4Yv z%UWsV&Tc;OCh*^l8zus4%0>=^LAMI~@k((iB3sH&dzRZ_i+rgh!+u`LHhM-det;-j7l6we0fe3@dlk{C(Fk(OKF6_DVTjE zdIV`TPvB^Jf0%0={aG%|n1D|86vzE&ubb3ypmlyVHTt!FrI^c-dTm}Lar`m4p_CXlI2 znuv@}vYaprZY<}AJrOg$8fICU!gSt88u6;fY&AY>?H37l&OOJUmq`tB_DwYOu5AWE=okbPJYS zNwl{S%{+|FD)l6;lE%-BHXayXq6z3J)A8*3YSao(ihxNBFP+AlV-AnA^_iGBDmuKl z*R8465X{Ri{c&OQN^Gh-l~H&E{Lt?@7NZA_a)Tg;Op15vO&8WE-6b7UwA%&sly!DuUU|s0X=%-|&~!88UEG z(~Rj%``D?u6Rg9jey*s|M6Hh>{Ls8c0r? zi)nbcKZhWt_NyoJ&-uGU^4;m9)~f{N!&#~Ha533u6BZc6N%j5H!Ef0d541B7887!> z@@aSjYsd`rnlE1+cgz7Fa1mvbtmhkaD1FB>6Uk|dA`z*^j50mCLqlcfp>K$p{S-V^ zsJdUNHkH6gppt|~Sju4sF+6u>AE>L7ZsO|~kjNq?t!*qaOy$Lc>J*Dc-5B8E=5OX& z>fRI8dRVgvhR}$5Ax@wY zPA(4}z~c_RjU;Ro=pj%iQMGEHC?}#BL{yuE2At3rHslfs;uOJO05k`~iwRX=V7P#= zxN(EAnN0Y0GGqyY_<~qMnj%zCPX5Hu-?HMF>n5>(0ob2pvk78l$NltgkWagDZxGkD zThk|e-(ldJ<=QCpe`@VLhIwPap?#rK4tr8OKE39qCMVg;Un^6Q=obg%fKoavbTncx zsw9PyOK&>JD963x&I1MS_MLI%TSG&sLn44!PLfu~S@H$B*YPX3*9iPs*qZ{w6H-T`+amiILT`&Xi+mVv9Lkm8o4Wn0H64VyW%@ysmra zZQ8XnG$bnwz)joISYsxqYJAY_sK1|cYn8X9KPSW*eA(?m%g2r`8K*!?upvR9lkn(M zy#r@nbIW14{(;clbKmMT24w*qzv}FOfwyq^Zc-coTsTnLjxGHTOC%uoksl)XWE*Y( zZCMQ_9KOXH?Ao!DnGYWxC(KGLUHkZt0Z*MWB+iwcK5E$*pG`tY=`acfjQsjVD>udb z5@XB@@#<$6kc#G5!~Sw6f1^a$T{CZf@&=W~p8CtWo}PKF_-;f3TsHU0x6_O33-!Ti zk_im$I7@_a3q(jlt%rMIL7E4wm?2LGjL;fiHvvXxhWTO7;o7dHurzwc!0)NM1jSe- zbBK+Qu+Mwe=VPIITS0y4LW>DIGa`a9hG`66gOPRP><=o&?}!ZJSba6vnsjO?)9O9+ z91R?e0+h@#(6oNeqw;+D{-}vH5&^gBG_Xl5N{9ys1Pjd`rv0f({O9gl5Nz$YAq*KpgV1r1Q=5c}N?$LuWoBq9PiJtUJcG(F~bl zN&f{4Z3Z0;S=p=ArnBucvM*X7y39W46!FTKHse5m*2>C+PX;UNitDd^q&$-tMxLhL z+^Izw+*t6Q;~bf{8ED^xaILbI(hK!cpJ5^Mfrv=LVKpx$xiJ%by#>0lh?q89K%#?u zTK0E#d5)@+IUuWEX9-WYD>|KhA!bQ`AoMHcsOH1Sri!+)S>PdZG{sXmrxU<3EVnH; zAuufhAao_D2c@nCbjFpQiV%DQcn-pIH$QUPZ|V(OvDFWElYT~G&FQ>9?V>ppK*9V9Y+ zEVrnMmg9;5r6Wg*py9DgT-l)^^s(GOp#6bn5ZlDB4V@OV`YKm2>~xX$(1Ftu;xnXc zkL@}Qz_yVk022L^JDQu+^f3ZC*w+nfjRt2g?e6_MFI*W6lCYfxq1W5Da329NDpfKZ zGM@M%`5trVoU5#wk?@cW8_a=zZT96!$K!t9IJ)+Cq~lwThKVyTMhE4dJq{+ztFN%h zv+x2djZcFmKNt+S&NySlN=dmw2p(^n{EHwqR@O3;&aC0)Q4;H+sMw9^H!|zoh}au6h=jX z9G=+fo~#Mf?-8t4KqCZHVrDs?2;*gM5-Cju+U1VhPP|yXW%j!RC@mK>0zc5 zPrhQE_`;V{lPa(}XQ2P1z5q=G#(2%g4e5*IcbypEpCuIIMv47E=RRrYX`Y>ynU*fQ zk~LmQQX~u3uuXd7#0vsD#KMcQYBbXg5a*hknW5>lF4FcRe55A^KzQQlDr!IGn05q| zuuEiC8b@!cg zr3%Z{omjwua8?vWSO2uo_w8XvkS2<2-5yIFkqwO9%g%#w=x}HvL+vsO;iX0c=r}8| zr%l%Xmf5G@2OgJ!E~F|$d_A-IP*zf?mOzizlU?qA3q*k9It(e2*Mf!BEcmukQbZ9P z&h)S`XPiW%-P*zi!?BoYp3*eqp5>buX1`?E5=-)#T$bHeQBySP6^OLeggRz;RE^6t zeU3IO;Z(G}x$M0TF7Y%>i4IZUv>=YU@i&Lmwuhw-?+ z;&Y@kbe9VA<1rSHJz_w^G`|6P31x8Sbnv|K3~~$)9LLS{cqsKj$-8gK4f3*CFXHhj zrTk$HWs@fEdQ|uspl6@xVZD_sc1`moRX=LcZ70>R6Ez5*&Wbe(3epsVg=|}9Vq6m| zyN%+Pn`%P8(QH3pBzyQehYSKX3QbfD6UjD^&Go1emV-xRosXR5wg^)55=945)c8H^ zPaYpDU+avNnw1`9IOLPX)7&qt(QD#I3dF<2fVkvVJ+`Ah-#smRraG!bNftg6RXU>D zC>33%LrbXmYpriOh9>AdpnMV6+P5sJ1K<)7tW_KeSh_Le^=yMV7)ejDZ+5vYe9`%h z?)i4uM7l^seIvEgF=wJ_-I&;R-l(!Wgez@5#JW62pDBc?3YY2>tfA|5Qw#lG&5waIa{#}tq? z;rnFbL)WYuvT4ZDHUllu+){2ps-Y*^<-so~HfBvZb1LR$$^%!e0e7OF)R}@-KNQBo7@tn+tV9Qn zj3}#|&$T+CGGHGL_i%mA1;2fkgxt;}MS<)+%#?hvg{q7{H=s6m_vOEwsrRpDy(RzWcE~q%rMQZwv4!PR1 z1GrDJNwpR*2bo|xRG_o1Lg(T=X(%ROM}vzOt^@^;`IClFk) zWL;4Zj=rjf?H3=S-F-LJr;1+DBtq}ak}(2p8c*V^nRAKhwNdpt3tA^1p;9!G6QOLT z*v9^VUsoXJ5(>WAAL6PBu4Ydi-cN5+T+d2=qTq4))r%*UdRGP-_Yi|A(>k{|0}IFK zwLG?ynrAQH&TrMeFML4h>ud%BakMq4dVx0Jo;o}C3Y_7w9RsU(3nnEbM-a;($cjLB zU}v{oP=zt@pm#i(3bKYF8W-KmL~t82X7~ne5GN~M?J>&mC3o$N!S9lE=pC8Mt-t&j zVDA7EBdKdn+z~X7I(pRQmd1_8i=hgukfNkfUNe~5Of}v_7VM~Px_tkh*a(CA?RhG@ z1-=9mcD@L#(ri)wzczb#Xfy zzH)AuV)w-E^8-90jo}@1-&Ke?!ab0DPK#0-uADNbf}6D(r#9~8)5n5yClPq1ZrV=P zEJ?sGLC%ZA9RN_?Vm)EHS~UEm6DG!K^*T>LUN*TMMHeLcfn81>_2rWGh6`VxR{}Wf zv_?B~8Lx}Mr$`01(3F6N9uVBEjQD=bsd0)q=Ob=c0BrogM|44CSXE3I{^7 zghtmwuIW_A2B7%Qgz8lEq<@cBe&GUNzkUFuOVbTk8vSmaPQgYGeW#{jbgw(jGwrkK z3IrmbQ%j#EQJx-(-kD7Rr+pUrZDWzcW~-s0E_Pvr0d*kj-AIv<&GZp_P-asP4?LPf zT040Ff(~F2I`sZ|jxJ_88z--=+LVyVia@qOEmVOGvvPV-@chX3FhzDAWVs3JK2_Cx z{dT`nIQwHjcD{R|=BC4##k?9Es(GJWP4N(lICfu?zl(JA#TFA45Au{05oxeoopr9? zC^7FF5tXZiZ0#MM80T76W123+##9nVA86=nBl4!ww^b($VG@SYf@2rq_A5FMv>1#Z zGZ=N?di%wUm~#%OU3tvc9udP|y&H6;v)yg0FCLvFG@> z@66oJ62=2R4)7b!l3YZS$O>GR_D6N;O^d@9Ovq0aev7H0UZn(M4fRZbeA026Jo40a zvrwGy+Ew{9RhsMh*8|cKGTTl*$GwElAYD$EsOa+@wKR^zcmt^$@|;+ieIY`(jWP{i zz|b0&#&dlg`lh2F7#rrV>4fiRW6*F}fe|W6lM8EFib|H~7e5W~a!Ib%P_w6*#PN{$ z!GYWBjN*QD)ey(Wwo7AnN=3@kt?~lStC%FhpkmsviTJQ!rP~-p|5qA}r z<2ib#HY9#+x%=;4e>0YlnZ#(-a^yyiS*LYPKh#{Tk}|^V))lW%0ZpBD%swumtmo0b zw>)8zj|(YUa>?bnB?$}a@?|gF&>2{c|3Plbs0XI}l#^xiTza;DZfogsWH>^v&z%43 zx&PiEY|CU;##-_Kuz8o-RZY<-k-w#P_v8!z0w=;lgwi>`CH;_}ra=k-tb z)Qg+JI<4YdJ(Cbv^}1{lzn&s5XZ49I4epf2rbYm9tfB(|w(%N8DE66L>L`btnibHZ zbE|^7%o;@sd?6SGhT%&^ndcr~QFk;$Riz4qL`_ohs;6)MHO9x^=U2C^9-h$~!^$9a z>0hH0 zXcqSu41e^qo;%3jp=>=QAykEVX{`w?V>FR#LtLuAvnL9_1 zrxr;)z39{N?RkAO49;G~$0epqbBSJqr#J3?S-X3Cap(7bK5g@Q8Vrlu^6m8Y?(BY% zSporEL)Xpo?dhLT30lw*B+|=UZQl}rg@~w==hxpFk=P%+JH|)%R{$wSIzevZe!X%d z2SbcZeC%@vNafz*&GB-j3c#Qk*hL}o3KfP*cP8=0f!np+Y)UroW6)zIcOEt3?0?v?x6R#G@f z`^j7%#&X!QnCauT(qTo@rX>Ixo{4s4g{?%{Tz8H&qil{ZQ=W!vaqa7%POu6HDUa8n&nHoxC;$Tfb26rjGbN9B(p$gR`liO1Ms4k3H z_zL2UMhQMgL8}vs5rNCBqn98F%rV5r@w7O;4#cs<2T+|7jB1Uiae_72AEkxM@~gFU zNfagm$El*l`HFAlh!vHs40Q9XlV=TX>I++(>c})*LP~tos{HZN33BF65|}&*Y_PfE zI&6xTHKF0g$V3w`Lp}vmM2cf-u)mVUX3>GKh&HkJOu94$NyqSuWDLjOVP#7t-haZ#cPB3^#p7-yna5~W6 z3lBcaU;mhJA$Dyf&IJy^o8VtmiNIabF(6FAsO&XBn;kf|m1Od?E32^#N zPl^8*2YAKF2dUh3)F=*#;2|2K`W58}(_#SYmLb;BUcW#BaKONm#9ijpgQ# zAijZ36Tr{4>QZo!7ciT)A)2a4W21k@Se$hZ>BcTgI#6_u@o(RYnk~UlUZZI9A z;fnFOFJ1m^-M0L(Y^OZYY^WhQz$Ck0S$PK{9USF{U}rMbSI?B=Z$A1_!GCVk-$eR?3t}wL!F-NMY}RV)GWDdjCee-F74x0ItTTdK#_*%gcxS7 zYxO8dF)WAI0U4DmlF686u93$B=!gNmeq?Zul=lt0W~yE*^)vx=PEjpYLk&8@a;f$o zRgI!(aggk|CAo22D+B#-*p@#CPz%d`Wr1 z-ifffIH4&yy_8m?sV5$gG!D%M>521W?E$3v~yJDMPwd&@{{ya*Ikc zE+@(?)!1Eav~{obw0N9qrEk_y0@~2x zkQB9q<|(UsHZy37n|kmQ%|2S-4u09bQ`Be*)#K0DT=6fDJH{(!S0~ZI3di>=T?;_T zDWodpd%b-37k_J9+jp1i-NLDUqMCvRC$SlZNitCvyb_ZI#^s-uKX0|nvm5yNnTMZQ zsxaZVe~$zA!9zLAymqWE9l1XZcqF|u006X23LM1VnAv;97M$#PGL)ODlgiye_MumyQz z`M4KbTQRJ;?v+DuyhT9G;VC2@hSI!9vAbu7Ka=j%_3vw>zbuhdewXG__)TZ0Wa@11 z>SS!{Oz_Ef_(^JLtZeG?$zb;fpCP@9sfP;z{cqkop?@5O|8bQ3B()Rua1mE_`J^QL z<5qEIfD;6H7xOdk+Hb zKfaA(V`L&==VbbnF8q1*Cpn%o!5`VJpR9SxE>5n-E((TDzZ*Xp_f!mxoC)ZaKdBgh zw-GS@^ZEav^yB=z??2Td`+sNf|D|QWzXto8X^j87X^em6sQiCCnE$u7{eic?*~av5 z*!CBS%zpvZ`42$2e&Xko4pZ9F#F;?*w|s&>23d*VcYi49{)<7A@h=pbe+u~%KB6|J zwx3Y?q|&rBcXj$?b5tN;{0A$ef;quIRF)?Aq}2Swf&M@b<6n}i|656)oR4<@lN^S> z$oX4oy#Jz+!fzqJo#oR+0`1=>e46$f{(m*?Z@B*d67*NAJ`3Xg(<-LFe24hoTJ@i_ z`Ku77zXGb^kXP`Jbiy1x<|qThDz`>i#C*{p}~eCy+n={fD%_Im(~&o{E#{XB?Arwf&5V44-tse+EQ?-w*$^i-7re zSNvtr8UF{I{~<`p-u{#F_H%Uq5r_Wu2)WO-fV8RSAMy8JjRefUJNREd#QZl$6gG4* zw6Qn;<1X{hMaG|#^d}e%ovbD8%|5(8MiTuBvf}$6(bat>Y^!&uopPbJB6fR?EXHGz2YWG))=D+mM zpCrqS1kB8=4F3yDFC!-l=YOK;D6o3$! z6BsaBW=EDGp;1)R6kQ)|_iy)~YUd7|ps*80CIVX^+~uN!iH7cFqAG8nVqkz{f+Bg# zsa(TFa^0N%c;MN(;k|h1ekk>QSg-7KJypx$a-FKM0ssQQgdn=b*Hz|@)Dv6+s0X+a zlh5S1liCgdXKcXn_YjlM;TyOFe=;jZPT%y~SxB5?tu^mS-wJw|WVZUYB;VaFnk;*KL1@)fF7nk)BEnhSoH=TCyX2T z%s9k*CLfTCtG9S=zp+YIdGE5&hBH}=Hk+%tjwXGL#}^9!{$Bfs#1-pQ$>~gOMq8ZC zFuL5H;^7URpTq!=7m|~WCDiJq(A#pw=uNk#)LN;caM4@9@lR;}SMV6*Kg$&A0VT;2 z%xqU6wuDe$(M+P%3qZ^aPI*H-NxRYg@yB@74yJJ)yLqa=07a{8FSIJBRq>Qg&yE_y z%)rZA-bb!D6R$oT&X%kU?i(@Uh$99jWe1Zs-s-g?J8L7qt*-F() zy|*Jt00kN@>Vaf44;XH$5X%7}4-`~@)ByI4SS}cB=;n%~+oZ-VR^@`@a`N;lGsK7Z zr?#+$5kCf8kpYd2{}==6i#1_&C~JMlk2Z22lG3;!$#gzkvq2+T-lr8mp2PRzLtihB zk2PneTxq{CNw%cPTOC0}I%K#89qZ1wLpkXZ*Y3`_ zd+L|YXsZ#NLy#qbCCDYn2jfl0-iCL}0Lcv1j5_c>NZTpByc?k@=xupr9#enB(HNk^ zUZR*6j;#hXGoIWbon~}dui0htC@nRE&CPVGwEZHEN(gws_hh_W|CepGb~rTy`sjfx z)ksUPv#&aPQAm3sQfGO`%Qq<1V^0Qy{pB$dwnN#*Nq)oYizcv}O9FJIiv}1$mb(n5 zPRfhcUQ^OSxwEgVgKdHK)Rpg`gbvI zy{$G~`qv_zD7zR}W`idze#|`>XB--}1BQJi>5d&x2)p>+e+mI}I%-{?+nwqizAyT$ z<^92h7FR&#iYuJwe|q&~*Ni9%Ez^JxSltC2E%&y@c=Z z+)9dX5WGt<(9Z{cS+xH7$6xe`yN?TO%b>q5$sLMNdhu(6xB9vE)-y1iiSMsa_KvU~ zVXt;1r~<$fn(%{r(m(5AVtpAG$aY=k~_TF)%gg z*e?A@d%fHvlq8XePAYE*+qkV%9Td*fo#rx!k-7<_j|AVLgb`7~lPyD{|4j$bLP)O% z-7P7=gk>@nD`_|B%h!+#ji8cEVB31+X*dr+IHV*Oo+pWG4iCpEjHs=7I6tx+A@`-# zbF0OxWhqb{Ioc5Ze(UsjJ2lmu=#)yQR1(63x_$c|v zGS`fauq3pz1d8>r&N2K5%sv(owM6{{;5}xp#HqrES^1Ey@VF@ZiKeS6dVvZ@XdcK9 zGB>7l8M4Eqr#-30*mbdU!Y^aK*QmI1WwWBU=?wZBbln88{mzx`O5JLmf}N5Ns_s4y z6B~ZV@9vE(p1@Pa>H}KUZ@8BLzAJRg;P^j1A^1p<7?GfJ2@_>Ylc+DdGuMUih_uIc zi*dIa^Sq^c$+i+NMlB-)lTOO>%;s@;23LI7igXKl?+T~@8xYMNErLszD=91>3<{Wb*-&26bwaxL)sm`9;u{)RCw^lY5 zH*#M=%=PK7RR97x=4He<*|1HYuohN)!@S?&7!B8+BnUCZz8Ow@CxRYxY6R21=5nHc z!mWF`7`s`Px=1qCFlUCn;MNZ`|GBcs6oP}c2-Pyc>_AP6+;cm9J3TtxWRS~{ zOH?*jW5U}L**vdf8DmF*D@E4t$QWt+MztX$KUXl|p(I{9AjBm=EqjQNu~37gA6T?= z^Jwe$Eph2cX3xq?#ypU1V4uTN^oagjF#C4CL-^=U(53pU!1^AAk4$>7&SfBnOl6qO zw(nz4eYOth^o*7YqZ~CmF}^$j#k>I)CFvG)x#>LQs3_`yxdSat;RmR=BTijd*C@{w z(E`HwXv!riPh?S{K&OU!xpU&uF_0thB*8C%;gO7PvJR1W90y!Wr1MX%6a1exZSpMr zBLm7BFFv;q10GlHEFs@V5FJq00Va~Hx0x#Ryt8ybfHD9PuNb7-s6&((vFn!dRV+m^ zT9L&c?2>^8L#{A(1*b5>ycuyxhk86VW1NIU;I#aWUwM*^{6gI}SXKeiCD8(vz)7#N zHk1v_t`*zKJrQ-XyKy5G@v5cuB1r8*rVWX0NSEC818%I)VzcAMI4n^%$YZ3?=3#Gv zxl%S)+WZ=K=J)?z+ys)h?r0=Q5%OjB2Y`zz$GeTt~>X5V>(Dk@% zM$|(MEp&oU&c@z*x0ZvuKL)2Nu(*ny9ESU^8|MJuq@PjIhoPXaZweFE9pv07(o--m zU%K(yCXPqz*Ho&8ZJ4lbBde1{0t##OvGIQ3NQq=28?o@1$uM@oPk#$v=^@HQCXB}V z!7fj<@VzPI`5@YO3feE3xpqJLVUNVB9I7%hN~mR9!N^{gV?oeNu2%dxHPb#@ttyLNHUfB|@?4(7xQZ_Ule7HZ1WVu{O-GX#IwP$XvL}0IptZ zPJ0-loPztW_+RB$nGH&i`t7A`+ptUZSR}y`zs@`(B$H09tzTDGV24E^nVjrA9BEkWEU&j>f{>Lp-Uw2Iq; zqgw`c8#D`^%y4bW4nrw$GB0P6>#;PJ~(o*;Z?vmOkgr zw_kZJDX9_|8}%;dQAFQ>f^EI#;J#SCj9fmUlfJVen(2Mts|jA4Q6a&(DRyy}6XX z6a-RTxz4fXD4D=mR!#S9I%9DQ<-`>|m07gGah(RIVl%yYc^~}m2KJ?X>@BBZ=m~K z{kx7O6A%6qBStzs<88Z^^<@)nYcXtUeD?|@7zVyeO<@Jox+j-`TNkc3*Exdx9?Y82 z4>p~H8QU%x*>aljPBRf$jcn>+d_HaXaGEM#cw=t9N)tX-ybA%;%dLUo|xst7Vcg4|cv+ zSJQNDWgeU3br1qa#`}ChE&1afPX^n?8{DJa6a^x?f6S@;kpVM10EqkVXY?SzDi zP^N|?0~1q9Y(De2Xg>FfB8=w;bNoojgvfUVohhTp=~8hb&IAcD5~Ja|y6B(V<7554 zP=E`n@MeRDXWM6=y(DEglRxLnW4z57l8WX{uI{S2hMBoLgo-OgO9hjb#tt2Q zIg+B})5W=PnjeapU?RH?ZTLPd!cVjQbSZ=5YfOKHBMbW~ew z-^yFxO;uIZxiX`o6cYz!U#dhOtRBiQuzJGa#h*zgwyzR!5F(pGO*{O@u5dHuZWRgA0>A}I{&5fJ)0e9sYE zYG&D6RX$e5F@+QL=3&1N=zQ<1MCieXe`46|^%|5Dz>L>h4BY}q zpfLLJs#6vsPN25lmnM{Tf3yJk69w`8B-DfT55hFkT@2I(LgP&g=*8IE!mo zHLPj*+dDR__0n^o)6wlU)YPr?lY6x6v_hY0y9peEBGwN5IGtMv_y)AoEC+ zE&djqaic6q%@sJy=Ym{v`%PWQ@R06Xueh8bAewmf^^2}!oWo?piU%ccc(9%{i3k_P zZYO{e)n=I((i_japv;u7(#NBoAUF#yG9uGCQjJ>AXep1aDD#LyBj@>gKftC6z#02TM*R8BDV^DYXoWGI`Ns zf!sR3S}iHHh3NUO(=P8#!lLHinT!#aSx-OWVueagiEp2}TTt)dPd`GNxF^?^la|R& zV-uA%9e|q z?oJ0<6+82$L1_wC;ExqNXU9~!eDXq;S**i_xE5=TuZJ?))Ss{aE^EbFRaxKw?fDTG z)&uWXrl<#+6WzT>p#Z6Q*BxMgD6Pv8k`-E;{!j+6|L`5AYvc@hqL~^1y1&NZJXVuz zY@l^wZaIP1Lc_$<__7I0tJV!geL-h|@GWQ@KD_JF6vEc~B2Hz0T*rRXTPH652cfHx zaV3uuQGS%4%98gxPZLlG2BUjrr-IyS-W4dqxwX9C;O7nE-_j5@_-J2iar99x;aBP> zdt3gX82KK&UVyU^KU@SMtSjEE6iyT-Zpm?EjQnS`s%Br#!{^6S-__-xRj|$NKAp9X zh|vbJ3r|U&b{NQdEwAW2E&JM@5(1E>XC)#adkREHR$@zsY~&i$T4@Hdg-Rw5!Er3!P2p;p&|#Fm>i;D-X1;YoMQ$o?l#zV_5lp(k@&)XL4JK_n*%XJ2xgz3@iK$g$_+G z6a*5Sx?@CBCc+Mury3mL##zH2&=um?t;Xp_*z&Lvpdb5l{&}D;7No>id@asYvaLit zG4%TGNbySzE~b@^6f-HZB24p75kD7;C6u%v(wCu_mp8;Y0j6_grCrRSWzW(u`E%sk zH9wTf`AdjoL3MPpT+T)>4yyf&Mz>-?M2Dc9s(O;8BB9%!K_VJCWEaNj#;@oF3k8g? zwQuxdnj+P*lj0dGeA}u9Xr*SzpH=N=D1*ICsFcqvX7d)WE34o0Sdj%q#T_!r&4u^z zw!qwu9abJie~B{pE#lEbl14B#3Z&v_uc35~|J$|-d4jN71R}~cVKw}w%I-=}0pI<-W1u3>oYKQOw zEv$%LkfpsaRz;sWLztFx1K)=yZHfr~;CX;7Zig3$3<|tu(?j${?g`w;NsAA|^uq0> z-0qm-L?GE0pwoLVi1LZ8pOD`9b1)%6RiZu*r67$LCb3$2AS7~!0Av+`9#$-2yujNo zEasp!GCXhTPsZLZne=B21shxlNR$AZQg6P%174_Y0A{EPLfnug5uyNcK#xo>ii{uV z^F@XX8jr+HU45pf5_*oqU0oN&IUcXuP}Jvq_1ASc{Gk3lYu?pHljNrBd% zJ2Z*u&p1py@V!e`_}jR>mO6AygyTL*fwWfK+kTUY&)9U^AcACMj83Sb3LPRQlD5Dd zy~MD_5BoaLeEFQP-9;u=pWcCe!5+TQlQ$&21+C)K zh)5@(fs{b9{!y8f#|y!VY+K3-t$#K29(EN%nPeSqfzZOYE-(cdsmJ`Bx_4zutyjCp zen{XPC)}~~CeX2)y|+b&D}O!A>EoFf4$5yogrSHn?nc-Pk4CJE23&%l>L{!|!o9SW zuory25t~Gf2p77Ico!)5%-g>=S%;9eWE)8yl%3$u1Xtl4iMYovU>k8R#2R5Ps2Y(j zOu{VgAVj}=!6SkMfY86tN*r8iK(9^d7Mca3Sr2WH6G|Z-#?Ky*dv_{l@!0s9o=>0bfzK=9;yhF<@6=GW215$Ji~^krS>83tFh z9cp0Hy>|!q4ff6Np4RQ>Jv}JU$$Q7~T=!B61WQ2lio-4ZjDLY}{~nPj-Mc5SU<1@dZc+{u?Cu7CUk+?K*TV-SmG+58@dl+a!;~k?Wo}NW({%H-e#S z$2aBtw+hKO0*aZpg5$$CTf;}s>6w2Cos(V*-UtTmhCO+QSRi1{M#SoASJ3%%c;q=y zKeJEtlF<;7IxsF=p{^0c{HO{;0Bm7F8hOes@R9fB2o`3?Vv3?+7XD<-#Gye-3cS>% z3a_G7xklgdadg!?3d%93WsTRN4N{y%MK} zfpxv3>!4y^=SX=Ow`Og3!)sUmDY`1K^rN`8yTPjwYNjEu^*KgLN~G$0S>u}P-5FHo z$%2%ePc2Tz7(e)lYcY=v3&yZSi(jJYTfXfiXe4>CC_#-WvccUl6pXQP3iTg{8;*GAF$SAf-f&bZ0iWr6CV-OBS68oM2xo%8Q z;$oX=+}+SMc9UZMWkngx`hi>3YRLOHPLa7B?h2P{N~huyH<6ME1qKhc=5I$BA)0yZ zt>qa3+E_CR%U`J%is(DcoFDe=qaE-jGiJ#`<&QtB#u(2xgedVvIqsx>9QqBjGsUY! zWBK^I6->+)?&hzLjG`61va9ADdF4Omaj8CThv6Z7Yc*E*mMOXHZu-T!y~Tf=)bXtO zIzDAFu@Uf)SF7d%!yKbOF`D-YNLAgbd@7t{!Crr)e4!c&$5-S`H*QeEsJ_)aDrHr1 zoqNu4MVGbqob1elJM^raKc+WPYiI=L*X*XQOZWxXJbeo^!Pdi}trqL-_d@>E*3A{~ z3aLIsVpnp?B>`9wYZgdLvY*kL0hRB?3JtO>Plam_r5cw=Hz?}SW{GD7d7*|NIgs7=2?Dubzd1A z#NZ(n61aL9t9_@>xNOcO55-ZNv=N$HEiXFBhq?s6VizZP98qUC!Uyl9ua-!2I{gC*sMOL3DDB3+Tmg7a)oEPAu(wQ~3zi>1 zhoY}7X>r{F;a&)`--of62XiC)rKA)!0~L!_$mdgKH0Koix_`cs(1##>ey+~mX^{|0 zTiCghNt@DPOhoV=KeTCN)bJjsZ>$Mg^WKz&Sn4&bG=!{oqv@|lC?k_HtUr-!7&)!x zz?RCdHBuGznw(lv9L#695|9!KzBDQDVfg{85THc46e&!*u zd^(EDTHv}d5@GMi!`*Uy$OmcK;c*?}iBav&fb>4_#4$?vdjyBQTzvK*<458jZa&;2 zAA?65%LMBZMrM3%1^gqEu-%MgrJ1Ap)f6V!B;P_-E)`m|Hc)$TZk(EBr35CVFAR!R z2d*6UN}aa{msskQ;}wcZO{!#5mx|6K6J7V;6FKa2ZLyo&&8*Ey+oxpoW1IKUx8irm zAR+ZlY-u;jl5-IR5jc4U`iI6ohQ39#f3?`nFcgRNI?Hg2(fz*T`J7K8llGXJPvAMB zw3P$Qm=Rncy`>dMKWmO0%HaC=<3jyIH0qt4mbw>7oN5{r8#C=orwHu)c0gm;g!1Pn zOfM4h3=88A+}|^6eODS0 zm?k$#A^k{{s?U=BHS%562ikP8LJmBbA^h$^DZ=v;;dPgEg_2jUwcO;y^ni%Ud?bFyW}43!=!YvPt}TL*hV^{Z)vP=1RxpP#>4 z5G#DCCY9kgTh5N?t1&EQ&gpE?+6*Ip*7N6nK;6oGV%s_wis|ntO;F|8cp!Gi`EgfK zpgOURkg4CHtpw$`n)?O23L%wxBA%OLWL8H1m$>dv*R0m+3OLQta8YXuSpK`%1Kpn`!es# zCoDv!2ZwdCr-T?S_D+vaH#bv3k6>JU=L7vN8$0Al<}{YIttsx&G+uWIRCoKH;1Dcb zTuDiBZG_2DAMG-GA&&=wOv!ephmeMObJsP6nfQ##j7o_Nq420syvvrGb)9pVVVWv~ zoLCVPQnh5RJ%1Rka({}53cTZtt1rhMM_gIAe)agbGIR;gAa>HAujDmN9l3->iTNr8 zk)UF^;B1kyDYJSNg?Z_*TP2RV-}&lYlF+qcM0q~&fi03Qkjk{oLet2>Ddh~GcPyTD zJ~8OgEqh^5Z%HO%U#3b$!l@<{37%#G(-FkR1BRc6g<6(BJ)=ckml1eX{&VNDW@7wgdfq;ke?x_(!@1=9$vlmO6GY zu)TabMTZR88=2qVZQ-b)rWIO>Gh*6uP*PA6rv^PpGW4S>o2E_wWXGkk?DkrJX9n8I z{e`cO zT)NmmF9n`X9HV}o$I=N&zEMU-F_nK-o1k$il~NxE){P|{;~bro)pjN?SqgwweV3~g z;aroD6p80YbsRO(hZ7(F_b*A}-tLR#y&{U+j*e%zibcH=%+;T zuiIu`Tq-M2XO@yX>Gojpfe9a|Q8Np{t^HPJn_7|n8#yeW1~+Q+_WM;kSDE7S%vxaY z9Y>PG_lU1%xJ#I2m@4YjrsA1tffzO9N^V31T|5~BqZEk1-`v0q(CAwMdyn)Dq2=!f z5-u-EnFQ7g@C{9mBqiU(b>3uNdE^=yvVx^0mRwgm0X3_q`@RO&=bWdTvzy)E1A_0^ zteeeeIC*R6t|Q}Q6ZVewTx5|c6(+6oCPvFn?w3l31k)`i33Iz!_jongDLJ#p;AaN( zdEtX~Jv&kCeC_?@syNW`zA82a2o8wttm@}TO6UtWtAANW=Z^ zaxI_Ovb{UN*X9l8%VJXaoRYi3a6`R3{#?vGC_ru}l<6eUcnYD3{xfCv%2T`)e^^?iBhikSq}V8C=u;Q8d^f}Z(F0JrGzc{B5vmN zJ($yQGvq$ky>h9IodR6RYJOVxL#QV`Hb1(^4+DJAB$?>6QLM8V;tP%qQyD(J*N0ge zrouMSkk6UQY*oY^rtLP9D=5n@Pz)(-%bY5C$aG!jky6^;b zTs+5bu=LF4HxGX)ve;JVPsxO?x?V?ki};)%1Qs$4=<5;1H=hwG9iv8 z&o&{Zm-2l8%rX8DB$X1J5yam~kPRJX6|prbkHo+-pha2`G?g&&H}WkILC3*J#!#iR zt97CSYFV_ey2QDNoed8nbVKii?IX;q&mP-Wgsob%&$tu-sq;k9j73gg3#AEY31xpm zWN6ahA^V}@hV5^UJhMI)@oY0<81D&*3fhQ;UNH^GC{=M&kC0i#aQSOY`x4ok5KE3w zu@$GiI$4u0=&^_|eOGxxQ>B1Y5Fu`2!wg`F>R7}uHfu*ATb9N6Vv7NpQKRsgI7Sqx zD$Ig{cSso2n3vcV-G=?cjSg5fQ_gG-I+U+Ll9Qz*gu)xLT&6{5Z~LjpF*rqo)kHVlL%G)>GermL-u&gia+v=odmL>dC7!qVA2@dwUS#0Ckw7L9KK z;Rwy&cWU-kJ)2DrQROL^5l^)^ox6mTJ)cqnJRA9z&D|d_dVS)2hG1^W5;m+J8!GJI zj`1(sT`p)3!cuzKZsY}ctOph}s>JG2NYXfa_ zpFRY|a3mqy2%4yIWN|IS?)9S^x<)@)o3~Nz5)& zl6LUFHZT^wOV2W{1_n~4Y0AsObA1iY8X8iFt%0uI=fqAKE{E4hR5B+T0wjp=<%=w@g&wEW9e1)E-Ap0Y`?-U$awjd6L=uB zz4%lh7Y)!g72tUSja^t`3c=j0L zlY924p`$qjr~+#{CJhLO3`NsjFg*zs;?tokbkPi{>I<`UPh7&Th<_HOn^1b_~s$uv;+tOU6hlohZ`&I;x@NH1c^;f3ulrA$GUt)O+l5bxRkre zMPv;OJ5V0aHXvD(q%vfvk7N?dewkWbB()bGAcK_(zu^cSQwLwFJ)q#4(KspKHWb=F zwu*4gDUKG3KDZ{eCeqfeBVwD71q7MdmAu+*$K3RAH%{W8328>1cc z-WqdP0BQ}JemdpGPphV)vQtAPkUXQNn*~p< zbc@f`V(p&cY|c8xrK3y6i04uZ{hRrL$b)!ThyjD_cm17C3!dXmfuAJ9z8vhnQo`pFvU+L{Po30051fAka1I?P{#3Et4~9EupiG5 z9|c!WwtRYR14xh~vkH!6Qj94PKK6Sr9i6P-9^4)B*^*mqtyb)qT9R@kh^5a8K08WX z?gmS;Y`&nlC8JU}T@hXAt`3?ej2y?6&~5^}(+L`O`-qB#1*Tr7%w>x{JI735f%phS zQ7Ibn3GifwP76z|oZp7W#hde@6`Ge|X!L|y9*842wuh*;fHJTdG2-_sbVF-7D+M`x znswnvxEjLeS*0`RK{Tbb_T;y)>_|@^(t_r+2bf*b{Fn>B8Q#nxV6Nu$1E=aWQgZYd zn7Z^RnktW@Ts1}_++W#Z>_znEL|XJjtbF6IT^yQN+LSMg(xeRBp!GlDRdRM4k#H+3 zp4;j;(U4D0kIH~L(>f2!7a`Y=U30Iy+pPAsR?@|rxt zh?*X9x6$|-Bv!nhcIDQ|b+DHgmM4Ke>PeaGe0nV_tpz6FehBD0841IrqvI~nZ8Cn4 zvcFh5xK+1(zP>qtCnwm0nSH(>(@&nra2n4WO>cZJf?Ct2I7nJCP(c_yluV5fYf4tc zp7?QE2S6c%j)|gzzWQYrVW`kX@u9z|{~t2Puut$a)$4Y z?{@)~r{mk&lj{DK4&yHbF|zs3BA!Ld*a`ir6k-_SFu)E}=_2wu6BPR|&+pSD;m3dW z{SrIQO|Ko_*0tg6PU3Lvh$`#{Vegg+%c@HQE>ZNab8(F+nuv5HaUg`1KJG}7BHFGS zFkBRs{thb%469~c0<|m-caFmZ3=a4dCY`KKQ=@`rU{l}weauVyfL2CJ$`_8xAX+>m zNQ}%vQe`c$m^f^J`weuA!flDlq0iN=8c`{2&^lJr3|@jZU@i=_cpS+3!%irpDZXkh zxcFiesdGoBV4K@ZYqc1Qc&=WYd*xjNn~t*s=7E+%$mF^LQECiDrjkOx)Hefmxo4H9 z;8WXr+6YI_r|zqe?+@22N<23$5=uN|r)Q5AJH26+r6=6;?wbv}<6JYA%TN2S%6E+B z#&Va`Ta@CO1P=>zRynk(J(^mrP&c?`xQb;`aavafO?%kXRoJk$EcB4?1zkHST_Lig zR8p(Eu_gBr$Wv5&hQ9s)Bq5cy{cbNl454R@tM1I7nQ}peg%&mnwUZu8JhB-7?yw>9 z8}*EtC!2d4NM%%^OQcCi6HCWH3v5UxVCKr%FmdWPut~B2xC=u`jME&;9WyI+i6@?f z-X7qe89F!I4Xj#J>pEY zfcfdOH;^SrU9XUvJ$pw9sugpezl4C!LJ`#15s`wbd*u6EAbmdrhgQSI-0E6g@fgn zR8}o$&hG80fgqwJELk4Xd~UjCgs~x$97NbKjXEfNpTENNRcw z5-C@AqHbD$IpK~LgO^5Wc3AOw6$;UIIp_@O;73Xy%Ag;As)#?3K<{KC#pkahJ^ zqwy=Y>h<|nbv*zRIWA=kXGFu zx5fk)0nVVhRBWMB%eIRFWu*2S#+0ZdE8$^&u^quPC&DvC{!X!iPf~I*9?exkDx|b? z4VY*Y^5Sw*_N3f?vPtj#oo|tH<-=pRt$(@)I`Zl?y0=<7=~TB(agYI4+Iv|!Duo;R zoukvQ3pa_CYF4<0`bH_c&?+tD8VVH@g}_U0_gFlBz#%gkTE{xj%-jCiP6FBIog&4= zqjf#M8gtf&bwgsIlf*0?7ml)VPRCM{eeLYG2Mc6)@-~a2`%G)RV4Q^gg_I8?1qWM| zubfdTF<+^lji9i}hO?oPb8TU{aDkM!P`LxfspCgAai{BQpDV#r+i&=pFFVI+A^=3^ z&E3m&ay<1`j_y5vdBugxuNIM&>Bj4l5GexV`}6oi;Wm51jXI7~JPz(_ z?x7%Vw+NNNqzZWRg^9MNW5P5uY|fp2Y61%2DpErX;dmB#^u~+z9g^wym9vN4a2(-r z&)6|GtU<)GX^u^Ds0*5abd@%;_1E=A$D}*%nV0>6vEYeR%WqB`ZP^LTKUOhlCKN`! zhp++26k%+Pf_yOkV~E?LM&~S}fgwfa7_AIzV$Bl^5_rR2dfyR2fwyd%#zJ=_@ysh_TDjkY}2OVS-zy42l*a zoNu2Yo%E_=+F)>PA2JH%O706eusN1{TL%@*WG}zxl|}znuqtFp)0(F$yeoETAuwYv z$>GJ&KO6!cy7l%_b!C4ajgxW9x5jp2BK;U#`hjKE=~$CqCBh-rdGZ zudTp+#Q9{2kdu6{>bB31>rB#2@o8goaKxMcQoMEPdn~R{f1rM9)qK{Bu?sLHR8~Z` zaT+veU2Yw#@2_E*YRPGMKW=h}K{t$pjvvoTXDL4wPwXsno9TU&E!!`2|mOb%K@s_81;L^+@VSI_Nq2U0A(SRGRgy`1<#kSHf-Z}I8n!HSJ zQq4RqFc~_c!A8}5Pk;7Ezg2Hc*Rlb6F{Mm{MZL+a-bG)iq&mqdTnfY?nNYB5Y-$NR zCd5S0PO-$@PGUBQud93(q8cvWm|`xrRsX@3PhLvA1txx}(UB&3N# z3%#2CVqpj4Z7=?S-m`YELjCo8j4MLRes8{jUc07los~_F-O@;Cn_TW@YRz}m&G9(N zZ{xT6Rj$l^!Z?>@+x3xz*=#u^a{IPN6^Db@r-0ZQO*+6%5{?#%b*2pU2}=m)@ZoKI z3tGz1J~Ao9{7+JjP-uCVapt_1m0p+f$hsV=?1%(}uhK_i1?i3VzQ@5=VL}hMc%}L` zquzBFw89!G3r{NCT-t7iV`Yw&;rr<_BqgXTvAw^g&vrvLP#aMzGTmgHyX{wn5}N88 zKbPl9*vZ2DHih{u2lLxaL{J?;p-O3Bi3b)Lq8>$Y_mfBwGx!b}YXW+*Nmk|Xbt!E6 z^vSzS4Ne&g2T7~&^xeaU@6Qm6 zdTVODC<6EWpUxQUm%CZkZ`cdWHJ|3vN<6g}JchEx8Wghd&QDLJB33t;L%18yf{Plo z=5BDs18z><#C2QLdC4RC+GaD&`+wDSO-C+o*pQ!^O@5@33S8yirekaWNM|)`9m}@e zqiLepOx=c7`;Tw>P@2`M3@YddG>jX>q9c;qAfCHE`tfz2X!V#YkoisUh5QBGoqwZ< zCzq!@fsbI8ex~7wwICbuIL1XlCgQP$MvkvSf280-?{&Te_7`c|_sJm?*xs>ibOs`a z-~b`b0w;}JLjT?uCyLGYo{27vc=c-fKZ3Mx1DSu8IP$DsK?q0|RPl zXVTBHk8>jW%jFXAW|j6h6BxK!6C9;W`k$}Y z#$;WfB}XV+B_uP6R0~~6T%a$E>V%Vr8_{Y3L)nr+$!x)Lg4kc<#aKn7)uTvNzZ6j# zzGJ{C+5`l#3{hT@hvlct7RErb9FwOOty#o+?+12O4vBjAo9+nabk_IvQmdfm*AH3s zEDyS~_tRLMrl?S3qgfo-s+wLKfzrqEU-YSl%?^uUP0c07Fh;UmIDu(P-J$h?130rv zO7-6qYt6mTh3bUS<~Au@LQY`Jk)!f6Y5_%?da+F{hF?lpYaJ&hu)dUH&T6qdmsf2s zcs`6EDX;2dxwb4ixr~hL957%x)AB=YP_b}ZoN+}zhNjP+Rch(yP2B5*x3}kHO?;em zTm5|C*p5@GS6NS8>Xzwn%EQ~T|GlMu8|BNa5*4L+JfhgPpzlsJa%{XW|>$Z4+UG2ZsXlHGUD8l+DHkEUt+^^bH9*={f-jNPgs(Nd`BMW4)YG@ z{U}1hvRMCb4>!P)gE_~BLjIUwGvyIb_wkT!P;`vUwBqFhwyp$f(&7H6Tv*TK^Sq$Z zYoi<9-A14V=<5(9Yy314BWXI0`9 zvtDu=$awn3l}3?7oJz#`D3*P0$C~k4S&RP5E#sYb9d(x;L3;goroI}^)z}NGtnIDQ zqad?OR31;Sjsqx4+{MLD&u;10ww^Hk4nI)qH+r@9q+8NnP7oe=N4i_V?{4zx z(q(m{R1xqBKZ}V7htP|+{g@Q(EP3Jz;1Y|#l*2_27zt;`n`#<`zO`)2PnwU$w~n7J2Ff+zmk&5M zely-(PL29u+mCNPKG+w?5O5&+vJ5H2wXh#*#!71pe%fg7jtlDmkhGwj1#C@QC< z85+abxb3Pyf^)so=k#w8zfis>&GbF=_c;&tH4UIm-JUI(718GLluTlIzB3)!x3+JL8T67d`B>wu zwCHNN=skKdU3kcbIB>=5KlUi5OAa;$fQ{_w#|KL388zXfCu|mbL#r$CmlOpU(4a1N zqEH2_MkcHalcs8!)gB<4Vyd@{z6;;a5XEJv3} zGs>oO;O*B^L)6*i)1oJL=_4UwW&IksbDXG?-I)gJl$i0z`2guQs@g-*na`b?Nf*JK z7RtjoT)gjD1hu244q(^}e-;oTlpidTrJg8(C9(?FbLgfeJ`-X-EM(x*=M#1^|Lgq(+X$ZlJO zckPDeTZ5fWu7n#1Rlx?aQ`NB~O1535XNw;@Cn`SXVR+AKed06C@XL(h(fYU@GD>;= zz%OHE=NE9T3VWpbF*pr$Im1k7&Z=hkn=CW*+HKQ@of3F^WyW8DuYETdxpGjk(QzIv zpgg*|IC1;yh*_Gu-gNKw3~Krl4!LwYoAX`IT7e}tYwmIF`QUoOhTHEk)^+1)9mzY0 zEx>IH-1}w^2 zH|1wsPZ-S=QX5XQ5Xt(%Y}ALmGb-%EOfhts1c|Rl52H7Acc0#{Ov$pBwmxARhK!>i zSJkY=Gm73h{+^4EJ%&jnSr=FMvAS$#UKgyodK1&71#QupG^PV0)AU{zw)x?FnJM?%>y1|n#fr7rzrJY1KwD>i@jKI(*l2o;+e5N9-R&9{lMN_RZs)gF$RlaL{SNm=e zQGcMigx<93&DR73zdhnS<@`|6U1Fnd>uKJ&Vdwg)Ddc$V*?Zo2xYa6h=_sfj)OsxNAB<0I)k1E7qqt#<24O=hGd33_`M2!UrK9i z19}w47Yr3b%2Fde!jeLOCPtl9A0OJW@Yg_S_uho#Fk`1-iKQLL zCeMu=BAhZUj2%JCK(0fCs)AOxiok@5%u0omr?qRh$e4|@U5koUewtrNynCGTHKzG!NR@l<}xufT7qi$mg6*B96Z2WauE2@dhoN7M6iYQyn~HeESMJYR^owFoDQ6whVix?(vsRJA(hxj+rz?%Xb`IxhEYN>97Md zV?Qzx+1dQ%Ie5j%y+i?z$%7FOVl)y1wsV%1&$j~K7R}_~;60)<3Rr*XWfORtlFxkC zKM|qBwn8lg)H|H2{UT#XA}BpH`!EtKyEXkmUyG@N08fRxaGOG1=)%DDvWc~|dCX-8 zO}QKk^WmoCP7;^9@w~oBxeYKA4=B^H+T%|s>GfPoZ!w~Ax+!)ih_rRBR8QE`NUI4WW16_kSLvbNBT;TNBrJX#rwR740p29@X0QE#A2#N za|(qCBSE+s{*fY*JCt}7krv;d*Q$F~^kI6}(xP6@&C6LlI`uat# zId;Aj3-Z#U8JW{y^7fPGZr#?~^w0ec?rx*noRb0+GvS)JxT1mNUc%wR{9 zboED++}Bft36He$fR7n??1O%mLJ$|Ogx7=8F2k{6L6Ew%@uXzN|yF)8uN8SM zFW*`8)2D^(bZ_Z=2k2d)CjHs50Aj~zxH;u^$F3e!MSbuR9v8bq4T$C)9qyyiL6FMR zD=iMIj5^o5MK}vH!!s~dBJO6iu&%SbFjX5W9x0D^cr;W(=L0w{MbvxGoKg7d13PY% zGIa|cqz$=0`KC}bC+gQUUR^7rRerCvxLuvqK$1bQ)r&)>Opn%!w~gRaDr3sH9U`_y z&(3wWT0EAX*bItn_WN*C$RW~wXyw4{VDHdo^F=PrhZtNCL5KrP0-%L)j3TjW`HB{_ zMd@-s#X>zYTTwN|YUP(sX`8Bu%unI?;_TfFL%&#VS-hD07i<#sd^#^}T{~xQ)dPL} zjrEF{f%UBiRsh8#ybF>}fLjm&%|8g4^;cfwnj)R;cXgL_%{73iMz#dXZsYcq>-z+mv_DI8pvw)Y>zWp`|mz0q{v zqGGaT#O~V(ITuHxICG1jj+CbQ=CQf5k~Xbx}#WFC8Kxtd>p?j z&l7suRRC3W6I~7?AmIrnI3Qp9;xzvvZe}~ok|`woNLOcX?>L#&Jcuwr^wrzvBN|K> zqBo*AMilpGhHKx}9+`UdZ;4BahmPmT@@RGII)rnkj@u*kE8d)&9Yc>cJ157zqp(k` zOI*!JS)lXxZ+nSGSds6lb&}U?@!ryk-Y`g^B1}JiNz#HN5B)*sLIQDM!m>ef;DWUv{v$5z7Xu_;WEoIw{olLWQoIwaX`?!3qA(R2cI^;6JuoVQk;bwJk z8JE=j=Qcv($o$`88`b$I5lkQh`~58(bjf#@zk0#P;X#oMnE@lehy((Gj5^85zh{!E zso0FWRjJfqOd0&|QxA^?x2hvwB-spDfmNhu_m1M@22*_N#zVwVVi~P_wD;@dm}UWW zYxNvFZP2cvOnJWc74KRcR}dkKxwlOX8?l$RK=vIr1{`VP0i2^^kC@CxGm|4&#`0;i z@@L#%c~T_Glm%zyMEB*A#!g_d)HOZjgl$mYvTJt4TfUXD?b!s}qwuN>v9@!waod(Y zJj=f#pLs5+4R+MzM82`PZreRsmOF0rJXoxMdVRn6R6qKM?PhCdW2kHXAIjVRQ1Jfn zHw6uC^=(Y7>@02I=>P10(=|6Fr04s`M$KnqqH89l06t=-YYfI!!O`>C>VqMvglqt2 zI!0C?6Ik-6f-_(qwbHV%FwrqH16Va9uorp#iHZawKe>c;eR_W zZ?9+f4+<)naQG+39||0pGz#8RuoMv!l+v{VQ)>;t{Wr05{)brJ*%sXSfAi<$42?~| zqu@+P$p=P$8dAa0OWPP2+L-(y!~MG$SSW9AWd+8E{xRbp;3K{AAKsoiD>Fb7Ouhx9 z{}@?W=|DiR)d+zsgz79TEOcyajQ_wAvNAH#F|e?*u@e4Y>i>?jFaW^iz+(U=_kjU^ z|EcBA9y2ow9Ro8X*m58skPZMgHp73_0mkM2rxn)!D))aVGQyKPCQ?(j;VM0dso6fW?3J3(@`wg^Cx@~XoUncKyIP9lWw-Z3#~=AvZtBDKDFkFlFXy?fE~ zyroDfERLvSMvYj1$;3`{GA_LZAhK5c)ZR3uk@&D6EJeMgep99|i_Cfj;?rKS&=Kl# zzDCL3*)?u=p6!9cSGnG2cG9nKyHaKLN=dQZnDj|=8Xb=Q@ryq%VZN=N>-?kPidsNp z(!TlRvtg<+j0Pdat}p_&@WR*gvNj0nZ7XrD)NU#)l^6PUlDRy2?Xm$gtm++=Ub5++ zLVoej*~X+%#Cfo?LUz2-Y;xpL)fBmF_;{slmmA}bIo^WXym6w`gI>AwR9I04a?w7a zt;1ZJ(VQdajG9vT7cnslv8G0`Ny;U(jMbyxm-gJ>AMLv*a?#-iw1=*!G`^u)ScRB6 zd%R2K&&v7VnDl32{)LPBPdELK*ZpxfaA^4d_fH`U@JRh}r~h~%t?0jFl7TKbJb--` zOs@pH4H()9o&pM%iWVk+2AA+3gZ~E}{Vy7?6Bzdh2OtDTD{!3o*G9;~%nXhZMuh*7 z{h?R>*$6HEC1V7!0l=inzsLXp1^^iP`4<`UKf>2vW#Cx$2NC?2d;m6PCh)ZUs|>)v z^!Ikbf%Xp*^e_1s!QmH7$^46qfsL8v?=nUYMZ{XSY2YLE$o$YLN!6#E2I56f{-oyp$ wA>b4DA8IQYQToSwz$ffKR8_D7|6s1$+UeTZ{ljUP85w|VaAagc(!y~6AID^Ma{vGU literal 0 HcmV?d00001 diff --git a/visual-js/visual-snapshots/test/helpers.ts b/visual-js/visual-snapshots/test/helpers.ts new file mode 100644 index 00000000..99860f7f --- /dev/null +++ b/visual-js/visual-snapshots/test/helpers.ts @@ -0,0 +1,16 @@ +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +/** + * ESM helper for getting __filename. Pass `import.meta` to this function. + * @param meta `import.meta` + * @returns __filename equivalent + */ +export const __filename = (meta: ImportMeta) => fileURLToPath(meta.url); + +/** + * ESM helper for getting __dirname. Pass `import.meta` to this function. + * @param meta `import.meta` + * @returns __dirname equivalent + */ +export const __dirname = (meta: ImportMeta) => dirname(__filename(meta)); diff --git a/visual-js/visual-snapshots/test/utils/glob.spec.ts b/visual-js/visual-snapshots/test/utils/glob.spec.ts index 8cd209cb..15787e9a 100644 --- a/visual-js/visual-snapshots/test/utils/glob.spec.ts +++ b/visual-js/visual-snapshots/test/utils/glob.spec.ts @@ -1,56 +1,60 @@ import { getFiles } from "../../src/utils/glob.js"; import path from "path"; +import { __dirname, __filename } from "../helpers.js"; describe("getFiles", () => { - function resolvePath(p: string) { - return path.resolve(p); + function normalize(paths: string[]) { + return paths.map((p) => path.resolve(p)).sort((a, b) => a.localeCompare(b)); } it("should return a file", async () => { const input = ["./src/index.ts"]; - const expected = input.map(resolvePath); + const expected = normalize(input); const result = await getFiles(input, "*"); - expect(result.map(resolvePath)).toEqual(expected); + expect(normalize(result)).toEqual(expected); }); it("should return multiple files", async () => { - const input = ["./src/index.ts", __filename]; - const expected = input.map(resolvePath); + const input = ["./src/index.ts", __filename(import.meta)]; + const expected = normalize(input); const actual = await getFiles(input, "*"); - expect(actual.map(resolvePath)).toEqual(expected); + expect(normalize(actual)).toEqual(expected); }); it("should return files matched by glob", async () => { - const input = [path.join(__dirname, "*.spec.ts")]; - const expected = [resolvePath(__filename)]; + const input = [path.join(__dirname(import.meta), "*.spec.ts")]; + const expected = normalize([__filename(import.meta)]); const actual = await getFiles(input, "*"); - expect(actual.map(resolvePath)).toEqual(expect.arrayContaining(expected)); + expect(normalize(actual)).toEqual(expect.arrayContaining(expected)); }); it("should return files in directory matched by dir glob", async () => { - const input = [__dirname]; - const expected = [resolvePath(__filename)]; + const input = [__dirname(import.meta)]; + const expected = normalize([__filename(import.meta)]); const actual = await getFiles(input, "*.spec.ts"); - expect(actual.map(resolvePath)).toEqual(expect.arrayContaining(expected)); + expect(normalize(actual)).toEqual(expect.arrayContaining(expected)); }); it("should not return non-existing files", async () => { - const input = [__filename, __filename + ".not-existing"]; - const expected = [resolvePath(__filename)]; + const input = [ + __filename(import.meta), + __filename(import.meta) + ".not-existing", + ]; + const expected = normalize([__filename(import.meta)]); const result = await getFiles(input, "*"); - expect(result.map(resolvePath)).toEqual(expected); + expect(normalize(result)).toEqual(expected); }); it("should not return files from not existing dirs", async () => { - const input = [__dirname + ".not-existing"]; + const input = [__dirname(import.meta) + ".not-existing"]; const expected: string[] = []; const result = await getFiles(input, "*"); - expect(result.map(resolvePath)).toEqual(expected); + expect(normalize(result)).toEqual(expected); }); }); From 65cddbbb29d060394c61113c43662ce2dd7dffd0 Mon Sep 17 00:00:00 2001 From: Sebastian Alex Date: Thu, 20 Mar 2025 15:49:37 +0100 Subject: [PATCH 08/15] [INT-78] visual-snapshots: parallel processing of PDF pages (#205) --- visual-js/package-lock.json | 24 +- visual-js/replace_pkg_version.sh | 2 +- visual-js/visual-snapshots/package.json | 5 +- .../src/api/visual-snapshots-api.ts | 147 ++--- .../visual-snapshots/src/app/pdf-converter.ts | 23 - .../src/app/pdf-file-loader.ts | 22 + .../visual-snapshots/src/app/pdf-file.ts | 3 +- .../src/app/pdf-files-snapshot-uploader.ts | 11 + .../visual-snapshots/src/app/pdf-handler.ts | 36 +- .../src/app/single-cached-pdf-file-loader.ts | 19 + .../app/worker/pdf-page-snapshot-uploader.ts | 59 ++ .../worker-pool-pdf-snapshot-uploader.ts | 74 +++ .../visual-snapshots/src/app/worker/worker.ts | 50 ++ .../visual-snapshots/src/commands/options.ts | 11 +- .../visual-snapshots/src/commands/pdf.ts | 18 +- .../visual-snapshots/src/commands/validate.ts | 8 + visual-js/visual-snapshots/src/index.ts | 3 +- .../visual-snapshots/src/utils/helpers.ts | 16 + visual-js/visual-snapshots/src/utils/pool.ts | 59 ++ visual-js/visual-snapshots/src/version.ts | 1 + .../api/__snapshots__/visual-api.spec.ts.snap | 281 +++------ .../test/api/visual-api.spec.ts | 535 ++++++++++-------- .../worker/pdf-page-snapshot-uploader.spec.ts | 85 +++ .../single-cached-pdf-file-loader.spec.ts | 76 +++ .../test/app/pdf-converter.spec.ts | 42 -- .../test/app/pdf-file-loader.spec.ts | 61 ++ .../test/app/pdf-handler.spec.ts | 171 ++++++ .../visual-snapshots/test/utils/pool.spec.ts | 242 ++++++++ .../test/utils/pool.worker.js | 11 + 29 files changed, 1475 insertions(+), 620 deletions(-) delete mode 100644 visual-js/visual-snapshots/src/app/pdf-converter.ts create mode 100644 visual-js/visual-snapshots/src/app/pdf-file-loader.ts create mode 100644 visual-js/visual-snapshots/src/app/pdf-files-snapshot-uploader.ts create mode 100644 visual-js/visual-snapshots/src/app/single-cached-pdf-file-loader.ts create mode 100644 visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts create mode 100644 visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts create mode 100644 visual-js/visual-snapshots/src/app/worker/worker.ts create mode 100644 visual-js/visual-snapshots/src/utils/helpers.ts create mode 100644 visual-js/visual-snapshots/src/utils/pool.ts create mode 100644 visual-js/visual-snapshots/src/version.ts create mode 100644 visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts create mode 100644 visual-js/visual-snapshots/test/api/worker/single-cached-pdf-file-loader.spec.ts delete mode 100644 visual-js/visual-snapshots/test/app/pdf-converter.spec.ts create mode 100644 visual-js/visual-snapshots/test/app/pdf-file-loader.spec.ts create mode 100644 visual-js/visual-snapshots/test/app/pdf-handler.spec.ts create mode 100644 visual-js/visual-snapshots/test/utils/pool.spec.ts create mode 100644 visual-js/visual-snapshots/test/utils/pool.worker.js diff --git a/visual-js/package-lock.json b/visual-js/package-lock.json index f5046225..29c16263 100644 --- a/visual-js/package-lock.json +++ b/visual-js/package-lock.json @@ -3736,6 +3736,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/async-lock": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/async-lock/-/async-lock-1.4.2.tgz", + "integrity": "sha512-HlZ6Dcr205BmNhwkdXqrg2vkFMN2PluI7Lgr8In3B3wE5PiQHhjRqtW/lGdVU9gw+sM0JcIDx2AN+cW8oSWIcw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "license": "MIT", @@ -5128,6 +5135,12 @@ "version": "3.2.6", "license": "MIT" }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "license": "MIT" + }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" @@ -17678,14 +17691,17 @@ "license": "MIT", "dependencies": { "@saucelabs/visual": "^0.13.0", + "async-lock": "^1.4.1", "commander": "^12.0.0", "glob": "^11.0.1", - "pdf-to-img": "~4.4.0" + "pdf-to-img": "~4.4.0", + "workerpool": "^9.2.0" }, "bin": { "visual-snapshots": "lib/index.js" }, "devDependencies": { + "@types/async-lock": "^1.4.2", "@types/jest": "29.5.14", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", @@ -17811,6 +17827,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "visual-snapshots/node_modules/workerpool": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.2.0.tgz", + "integrity": "sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w==", + "license": "Apache-2.0" + }, "visual-storybook": { "name": "@saucelabs/visual-storybook", "version": "0.10.2", diff --git a/visual-js/replace_pkg_version.sh b/visual-js/replace_pkg_version.sh index e98ec22e..edff0509 100755 --- a/visual-js/replace_pkg_version.sh +++ b/visual-js/replace_pkg_version.sh @@ -34,7 +34,7 @@ FILE_MAP=( ["@saucelabs/nightwatch-sauce-visual-service"]="visual-nightwatch/src/utils/constants.ts" ["@saucelabs/visual-storybook"]="visual-storybook/src/api.ts" ["@saucelabs/wdio-sauce-visual-service"]="visual-wdio/src/SauceVisualService.ts" - ["@saucelabs/visual-snapshots"]="visual-snapshots/src/index.ts" + ["@saucelabs/visual-snapshots"]="visual-snapshots/src/version.ts" ["@saucelabs/visual-playwright"]="visual-playwright/src/api.ts" # Add more mappings as needed ) diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index 8123e326..7f3018d0 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -30,11 +30,14 @@ }, "dependencies": { "@saucelabs/visual": "^0.13.0", + "async-lock": "^1.4.1", "commander": "^12.0.0", "glob": "^11.0.1", - "pdf-to-img": "~4.4.0" + "pdf-to-img": "~4.4.0", + "workerpool": "^9.2.0" }, "devDependencies": { + "@types/async-lock": "^1.4.2", "@types/jest": "29.5.14", "eslint": "^8.0.1", "eslint-config-prettier": "^8.3.0", diff --git a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts index 5b540886..e241b084 100644 --- a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts +++ b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts @@ -1,67 +1,38 @@ import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; -import { formatString } from "../utils/format.js"; -import path from "path"; -import { PdfFile } from "../app/pdf-file.js"; +import { __dirname } from "../utils/helpers.js"; export interface CreateVisualSnapshotsParams { - branch: string; - buildName: string; - defaultBranch: string; - project: string; - customId: string; + branch?: string; + buildName?: string; + defaultBranch?: string; + project?: string; + customId?: string; buildId?: string; suiteName?: string; testName?: string; snapshotName?: string; } -export class VisualSnapshotsApi { - private api: VisualApi; - - constructor(api: VisualApi) { - this.api = api; - } - - public async generateAndSendPdfFileSnapshots( - pdfFiles: PdfFile[], - params: CreateVisualSnapshotsParams - ) { - const buildId = params.buildId ?? (await this.createBuild(params)); - - for (const pdfFile of pdfFiles) { - console.info(`Processing file: ${pdfFile.path}`); - - const filename = path.basename(pdfFile.path); - const testName = params.testName - ? formatString(params.testName, { filename }) - : undefined; - - const snapshotFormat = this.getSnapshotFormat(params.snapshotName); - - let pageNumber = 1; - for await (const pdfPageImage of pdfFile.convertPagesToImages()) { - const snapshotName = formatString(snapshotFormat, { - filename, - page: pageNumber, - }); +export interface CreateBuildParams { + readonly buildName?: string; + readonly branch?: string; + readonly defaultBranch?: string; + readonly project?: string; + readonly customId?: string; +} - await this.uploadImageAndCreateSnapshot( - pdfPageImage, - buildId, - snapshotName, - testName, - params.suiteName - ); - pageNumber++; - } - } +export interface UploadSnapshotParams { + readonly buildId: string; + readonly snapshot: Buffer; + readonly snapshotName: string; + readonly suiteName?: string; + readonly testName?: string; +} - await this.finishBuild(buildId); - } +export class VisualSnapshotsApi { + constructor(private readonly api: VisualApi) {} - private async createBuild( - params: CreateVisualSnapshotsParams - ): Promise { + public async createBuild(params: CreateBuildParams): Promise { const build = await this.api.createBuild({ name: params.buildName, branch: params.branch, @@ -73,62 +44,48 @@ export class VisualSnapshotsApi { return build.id; } - private async uploadImageAndCreateSnapshot( - snapshot: Buffer, - buildId: string, - snapshotName: string, - testName?: string, - suiteName?: string - ) { - const uploadId = await this.api.uploadSnapshot({ - buildId, - image: { data: snapshot }, - }); - - console.info(`Uploaded image to build ${buildId}: upload id=${uploadId}.`); - - await this.api.createSnapshot({ - buildId, - uploadId, - name: snapshotName, - diffingMethod: DiffingMethod.Balanced, - testName, - suiteName, - }); - - console.info(`Created a snapshot ${snapshotName} for build ${buildId}.`); - } - - private async finishBuild(buildId: string) { - await this.api.finishBuild({ + public async finishBuild(buildId: string) { + const { status: buildStatus } = await this.api.finishBuild({ uuid: buildId, }); - console.info(`Build ${buildId} finished.`); - const buildStatus = (await this.api.buildStatus(buildId))!; - if ( - [BuildStatus.Running, BuildStatus.Queued].includes(buildStatus.status) - ) { + if ([BuildStatus.Running, BuildStatus.Queued].includes(buildStatus)) { console.info( `Build ${buildId} finished but snapshots haven't been compared yet. Check the build status in a few moments.` ); } else { + const { unapprovedCount, errorCount } = (await this.api.buildStatus( + buildId + ))!; console.info( - `Build ${buildId} finished (status=${buildStatus.status}, unapprovedCount=${buildStatus.unapprovedCount}, errorCount=${buildStatus.errorCount}).` + `Build ${buildId} finished (status=${buildStatus}, unapprovedCount=${unapprovedCount}, errorCount=${errorCount}).` ); } } - private getSnapshotFormat(format: string | undefined) { - if (!format) { - return `page-{page}`; - } + public async uploadImageAndCreateSnapshot(params: UploadSnapshotParams) { + const uploadId = await this.api.uploadSnapshot({ + buildId: params.buildId, + image: { data: params.snapshot }, + }); - // Page number is always required to make the snapshot names unique - if (!format.includes("{page}")) { - format = format += "-{page}"; - } + console.info( + `Uploaded image to build ${params.buildId}: upload id=${uploadId}.` + ); + + await this.api.createSnapshot({ + buildId: params.buildId, + uploadId, + name: params.snapshotName, + diffingMethod: DiffingMethod.Balanced, + testName: params.testName, + suiteName: params.suiteName, + }); + + console.info( + `Created a snapshot ${params.snapshotName} for build ${params.buildId}.` + ); - return format; + return uploadId; } } diff --git a/visual-js/visual-snapshots/src/app/pdf-converter.ts b/visual-js/visual-snapshots/src/app/pdf-converter.ts deleted file mode 100644 index 38a57a75..00000000 --- a/visual-js/visual-snapshots/src/app/pdf-converter.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { pdf } from "pdf-to-img"; -import { PdfFile } from "./pdf-file.js"; - -export class PdfConverter { - constructor(private readonly _pdf: typeof pdf = pdf) {} - - public async *convertPagesToImages( - pdfFilePath: string - ): AsyncGenerator { - for await (const pdfPageImage of await this._pdf(pdfFilePath, { - scale: 1, - })) { - yield pdfPageImage; - } - } - - public createPdfFile(pdfFilePath: string): PdfFile { - return { - path: pdfFilePath, - convertPagesToImages: () => this.convertPagesToImages(pdfFilePath), - }; - } -} diff --git a/visual-js/visual-snapshots/src/app/pdf-file-loader.ts b/visual-js/visual-snapshots/src/app/pdf-file-loader.ts new file mode 100644 index 00000000..735fd70c --- /dev/null +++ b/visual-js/visual-snapshots/src/app/pdf-file-loader.ts @@ -0,0 +1,22 @@ +import { pdf } from "pdf-to-img"; +import { PdfFile } from "./pdf-file.js"; + +export interface PdfFileLoader { + loadPdfFile(path: string): Promise; +} + +export class LibPdfFileLoader implements PdfFileLoader { + constructor(private readonly _pdf: typeof pdf = pdf) {} + + public async loadPdfFile(pdfFilePath: string): Promise { + const pdfFile = await this._pdf(pdfFilePath, { + scale: 1, + }); + + return { + path: pdfFilePath, + pages: pdfFile.length, + getPage: (page) => pdfFile.getPage(page), + }; + } +} diff --git a/visual-js/visual-snapshots/src/app/pdf-file.ts b/visual-js/visual-snapshots/src/app/pdf-file.ts index ff31a005..06ad53bb 100644 --- a/visual-js/visual-snapshots/src/app/pdf-file.ts +++ b/visual-js/visual-snapshots/src/app/pdf-file.ts @@ -1,4 +1,5 @@ export interface PdfFile { readonly path: string; - convertPagesToImages(): AsyncGenerator; + readonly pages: number; + getPage(page: number): Promise; } diff --git a/visual-js/visual-snapshots/src/app/pdf-files-snapshot-uploader.ts b/visual-js/visual-snapshots/src/app/pdf-files-snapshot-uploader.ts new file mode 100644 index 00000000..8e5261a4 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/pdf-files-snapshot-uploader.ts @@ -0,0 +1,11 @@ +export interface UploadPdfSnapshotsParams { + readonly buildId: string; + readonly pdfFilePaths: string[]; + readonly suiteName?: string; + readonly testNameFormat?: string; + readonly snapshotNameFormat?: string; +} + +export interface PdfSnapshotUploader { + uploadSnapshots(params: UploadPdfSnapshotsParams): Promise; +} diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts index c9261e1a..3aa4e98d 100644 --- a/visual-js/visual-snapshots/src/app/pdf-handler.ts +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -2,30 +2,38 @@ import { CreateVisualSnapshotsParams, VisualSnapshotsApi, } from "../api/visual-snapshots-api.js"; -import { initializeVisualApi } from "../api/visual-client.js"; -import { PdfConverter } from "./pdf-converter.js"; import { VisualConfig } from "@saucelabs/visual"; import { getFiles } from "../utils/glob.js"; +import { PdfSnapshotUploader } from "./pdf-files-snapshot-uploader.js"; export interface PdfCommandParams extends VisualConfig, - CreateVisualSnapshotsParams {} + CreateVisualSnapshotsParams { + concurrency: number; +} export class PdfCommandHandler { - private clientVersion: string; - - constructor(clientVersion: string) { - this.clientVersion = clientVersion; - } + constructor( + private readonly visualSnapshotsApi: VisualSnapshotsApi, + private readonly pdfSnapshotUploader: PdfSnapshotUploader + ) {} public async handle(globsOrDirs: string[], params: PdfCommandParams) { - const visualApi = initializeVisualApi(params, this.clientVersion); - const visualSnapshots = new VisualSnapshotsApi(visualApi); - const pdfConverter = new PdfConverter(); - const pdfFilePaths = await getFiles(globsOrDirs, "*.pdf"); - const pdfFiles = pdfFilePaths.map((p) => pdfConverter.createPdfFile(p)); - await visualSnapshots.generateAndSendPdfFileSnapshots(pdfFiles, params); + const buildId = + params.buildId ?? (await this.visualSnapshotsApi.createBuild(params)); + + await this.pdfSnapshotUploader.uploadSnapshots({ + buildId, + pdfFilePaths, + suiteName: params.suiteName, + testNameFormat: params.testName, + snapshotNameFormat: params.snapshotName, + }); + + if (!params.buildId) { + await this.visualSnapshotsApi.finishBuild(buildId); + } } } diff --git a/visual-js/visual-snapshots/src/app/single-cached-pdf-file-loader.ts b/visual-js/visual-snapshots/src/app/single-cached-pdf-file-loader.ts new file mode 100644 index 00000000..1360239b --- /dev/null +++ b/visual-js/visual-snapshots/src/app/single-cached-pdf-file-loader.ts @@ -0,0 +1,19 @@ +import { PdfFile } from "./pdf-file.js"; +import { PdfFileLoader } from "./pdf-file-loader.js"; + +export class SingleCachedPdfFileLoader implements PdfFileLoader { + private loadedFilePath?: string; + private loadedFile?: PdfFile; + + constructor(private readonly pdfConverter: PdfFileLoader) {} + + public async loadPdfFile(path: string): Promise { + if (this.loadedFile && this.loadedFilePath === path) { + return this.loadedFile; + } + + this.loadedFile = await this.pdfConverter.loadPdfFile(path); + this.loadedFilePath = path; + return this.loadedFile; + } +} diff --git a/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts b/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts new file mode 100644 index 00000000..f13794b7 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts @@ -0,0 +1,59 @@ +import path from "path"; +import { formatString } from "../../utils/format.js"; +import { PdfFileLoader } from "../pdf-file-loader.js"; +import { VisualSnapshotsApi } from "../../api/visual-snapshots-api.js"; + +export class PdfPageSnapshotUploader { + constructor( + private readonly visualSnapshotsApi: VisualSnapshotsApi, + private readonly pdfFileLoader: PdfFileLoader + ) {} + + public async uploadPageSnapshot( + buildId: string, + pdfFilePath: string, + pageNumber: number, + suiteName: string | undefined, + testNameFormat: string | undefined, + snapshotNameFormat: string | undefined + ) { + const pdfFile = await this.pdfFileLoader.loadPdfFile(pdfFilePath); + const page = await pdfFile.getPage(pageNumber); + + const filename = path.basename(pdfFile.path); + const testName = testNameFormat + ? formatString(testNameFormat, { filename }) + : undefined; + + const snapshotFormat = this.getSnapshotFormat(snapshotNameFormat); + const snapshotName = formatString(snapshotFormat, { + filename, + page: pageNumber, + }); + + const uploadId = await this.visualSnapshotsApi.uploadImageAndCreateSnapshot( + { + buildId, + snapshot: page, + snapshotName, + suiteName, + testName, + } + ); + + return uploadId; + } + + private getSnapshotFormat(format: string | undefined) { + if (!format) { + return `page-{page}`; + } + + // Page number is always required to make the snapshot names unique + if (!format.includes("{page}")) { + format = format += "-{page}"; + } + + return format; + } +} diff --git a/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts b/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts new file mode 100644 index 00000000..453d1b27 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts @@ -0,0 +1,74 @@ +import path from "path"; +import workerpool, { WorkerPoolOptions } from "workerpool"; +import { + PdfSnapshotUploader as PdfSnapshotUploader, + UploadPdfSnapshotsParams, +} from "../../app/pdf-files-snapshot-uploader.js"; +import { execAll } from "../../utils/pool.js"; +import { PdfFileLoader } from "../../app/pdf-file-loader.js"; +import { ProcessPdfPageMethod } from "./worker.js"; + +export class WorkerPoolPdfSnapshotUploader implements PdfSnapshotUploader { + constructor( + private readonly pdfLoader: PdfFileLoader, + private readonly poolOptions?: WorkerPoolOptions + ) {} + + public async uploadSnapshots({ + buildId, + pdfFilePaths, + suiteName, + testNameFormat, + snapshotNameFormat, + }: UploadPdfSnapshotsParams): Promise { + const pool = this.createPool(); + try { + await execAll( + pool, + this.processPageCalls( + buildId, + pdfFilePaths, + suiteName, + testNameFormat, + snapshotNameFormat + ) + ); + } finally { + pool.terminate(); + } + } + + private createPool() { + return workerpool.pool(path.join(import.meta.dirname, "./worker.js"), { + workerThreadOpts: { + argv: process.argv, + }, + ...this.poolOptions, + }); + } + + private async *processPageCalls( + buildId: string, + pdfFilePaths: string[], + suiteName: string | undefined, + testNameFormat: string | undefined, + snapshotNameFormat: string | undefined + ): AsyncGenerator { + for (const pdfFilePath of pdfFilePaths) { + const loaded = await this.pdfLoader.loadPdfFile(pdfFilePath); + for (let i = 0; i < loaded.pages; i++) { + yield { + method: "processPdfPage", + args: [ + buildId, + pdfFilePath, + i + 1, + suiteName, + testNameFormat, + snapshotNameFormat, + ], + }; + } + } + } +} diff --git a/visual-js/visual-snapshots/src/app/worker/worker.ts b/visual-js/visual-snapshots/src/app/worker/worker.ts new file mode 100644 index 00000000..ba10d8c3 --- /dev/null +++ b/visual-js/visual-snapshots/src/app/worker/worker.ts @@ -0,0 +1,50 @@ +import workerpool from "workerpool"; +import { program } from "commander"; +import { + usernameOption, + accessKeyOption, + regionOption, +} from "../../commands/options.js"; +import { initializeVisualApi } from "../../api/visual-client.js"; +import { LibPdfFileLoader } from "../pdf-file-loader.js"; +import { SingleCachedPdfFileLoader } from "../single-cached-pdf-file-loader.js"; +import { PdfPageSnapshotUploader } from "./pdf-page-snapshot-uploader.js"; +import type { WorkerMethod } from "../../utils/pool.js"; +import { clientVersion } from "../../version.js"; +import { VisualSnapshotsApi } from "../../api/visual-snapshots-api.js"; + +program + .addOption(usernameOption) + .addOption(accessKeyOption) + .addOption(regionOption); + +program.parse(); + +const { user, key, region } = program.opts(); + +const api = initializeVisualApi( + { + user, + key, + region, + }, + clientVersion +); + +const pdfWorkerApi = new PdfPageSnapshotUploader( + new VisualSnapshotsApi(api), + // Use a single caching PDF file loader. The files are processed sequentially, + // thus a worker will never re-visit a file, so there's no need to cache more files. + new SingleCachedPdfFileLoader(new LibPdfFileLoader()) +); + +const functions = { + processPdfPage: pdfWorkerApi.uploadPageSnapshot.bind(pdfWorkerApi), +}; + +workerpool.worker(functions); + +export type ProcessPdfPageMethod = WorkerMethod< + "processPdfPage", + (typeof functions)["processPdfPage"] +>; diff --git a/visual-js/visual-snapshots/src/commands/options.ts b/visual-js/visual-snapshots/src/commands/options.ts index 68c365c5..db6d0986 100644 --- a/visual-js/visual-snapshots/src/commands/options.ts +++ b/visual-js/visual-snapshots/src/commands/options.ts @@ -1,6 +1,6 @@ import { Option } from "commander"; -import { EOL } from "os"; -import { parseUuid } from "./validate.js"; +import { EOL, cpus } from "os"; +import { parseInteger, parseUuid } from "./validate.js"; export const usernameOption = new Option( "-u, --user ", @@ -79,3 +79,10 @@ export const suiteNameOption = new Option( "--suite-name ", "The name of the suite you would like to appear in the Sauce Visual dashboard." ); + +export const concurrencyOption = new Option( + "-j, --concurrency ", + "Maximum count of simultaneous uploads." +) + .default(cpus().length) + .argParser(parseInteger); diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index f84f7eff..d8772e25 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -4,6 +4,7 @@ import { branchOption, buildIdOption, buildNameOption, + concurrencyOption, customIdOption, defaultBranchOption, projectOption, @@ -13,6 +14,10 @@ import { } from "./options.js"; import { PdfCommandHandler, PdfCommandParams } from "../app/pdf-handler.js"; import { EOL } from "os"; +import { VisualSnapshotsApi } from "../api/visual-snapshots-api.js"; +import { initializeVisualApi } from "../api/visual-client.js"; +import { WorkerPoolPdfSnapshotUploader } from "../app/worker/worker-pool-pdf-snapshot-uploader.js"; +import { LibPdfFileLoader } from "../app/pdf-file-loader.js"; export const testNameOption = new Option( "--test-name ", @@ -48,8 +53,19 @@ export const pdfCommand = (clientVersion: string) => { .addOption(suiteNameOption) .addOption(testNameOption) .addOption(snapshotNameOption) + .addOption(concurrencyOption) .action((globsOrDirs: string[], params: PdfCommandParams) => { - new PdfCommandHandler(clientVersion) + const visualSnapshotsApi = new VisualSnapshotsApi( + initializeVisualApi(params, clientVersion) + ); + const pdfSnapshotUploader = new WorkerPoolPdfSnapshotUploader( + new LibPdfFileLoader(), + { + maxWorkers: params.concurrency, + } + ); + + new PdfCommandHandler(visualSnapshotsApi, pdfSnapshotUploader) .handle(globsOrDirs, params) .then(() => { console.log("Successfully created PDF snapshots"); diff --git a/visual-js/visual-snapshots/src/commands/validate.ts b/visual-js/visual-snapshots/src/commands/validate.ts index 39b78e05..69f58f48 100644 --- a/visual-js/visual-snapshots/src/commands/validate.ts +++ b/visual-js/visual-snapshots/src/commands/validate.ts @@ -23,3 +23,11 @@ export function parseUuid(input: string) { "Expected UUID in form of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx or 32 hexadecimal characters." ); } + +export function parseInteger(input: string) { + const number = parseInt(input); + if (isNaN(number)) { + throw new InvalidArgumentError("Expected an integer."); + } + return number; +} diff --git a/visual-js/visual-snapshots/src/index.ts b/visual-js/visual-snapshots/src/index.ts index fe32d505..2a998d48 100644 --- a/visual-js/visual-snapshots/src/index.ts +++ b/visual-js/visual-snapshots/src/index.ts @@ -2,8 +2,7 @@ import { Command } from "commander"; import { pdfCommand } from "./commands/pdf.js"; - -const clientVersion = "PKG_VERSION"; +import { clientVersion } from "./version.js"; const program = new Command(); diff --git a/visual-js/visual-snapshots/src/utils/helpers.ts b/visual-js/visual-snapshots/src/utils/helpers.ts new file mode 100644 index 00000000..99860f7f --- /dev/null +++ b/visual-js/visual-snapshots/src/utils/helpers.ts @@ -0,0 +1,16 @@ +import { dirname } from "node:path"; +import { fileURLToPath } from "node:url"; + +/** + * ESM helper for getting __filename. Pass `import.meta` to this function. + * @param meta `import.meta` + * @returns __filename equivalent + */ +export const __filename = (meta: ImportMeta) => fileURLToPath(meta.url); + +/** + * ESM helper for getting __dirname. Pass `import.meta` to this function. + * @param meta `import.meta` + * @returns __dirname equivalent + */ +export const __dirname = (meta: ImportMeta) => dirname(__filename(meta)); diff --git a/visual-js/visual-snapshots/src/utils/pool.ts b/visual-js/visual-snapshots/src/utils/pool.ts new file mode 100644 index 00000000..92c2048c --- /dev/null +++ b/visual-js/visual-snapshots/src/utils/pool.ts @@ -0,0 +1,59 @@ +import AsyncLock from "async-lock"; +import os from "os"; +import workerpool from "workerpool"; + +export type WorkerMethod< + M extends string, + Fn extends (...args: any[]) => unknown +> = { + readonly method: M; + readonly args: Fn extends (...args: infer A) => unknown ? A : never; +}; + +export async function execAll>( + pool: workerpool.Pool, + iterator: Iterator | AsyncIterator +) { + type ResultType = M extends WorkerMethod + ? Fn extends (...args: infer __) => infer R + ? R + : never + : never; + + const concurrency = pool.maxWorkers ?? os.cpus().length; + + return new Promise(async (resolve, reject) => { + const lock = new AsyncLock(); + const tasks: Promise[] = []; + + const enqueueNext = async () => { + void lock.acquire("queue", async () => { + try { + const { done, value } = await iterator.next(); + if (done) { + return finalize(); + } + + const { method, args } = value; + const task = pool.exec(method, args); + tasks.push(task as never); + task.then(enqueueNext).catch(onError); + } catch (err) { + onError(err); + } + }); + }; + + const finalize = () => { + Promise.all(tasks).then(resolve).catch(onError); + }; + + const onError = (err: unknown) => { + reject(err); + }; + + for (let i = 0; i < concurrency; i++) { + await enqueueNext(); + } + }); +} diff --git a/visual-js/visual-snapshots/src/version.ts b/visual-js/visual-snapshots/src/version.ts new file mode 100644 index 00000000..d58ed625 --- /dev/null +++ b/visual-js/visual-snapshots/src/version.ts @@ -0,0 +1 @@ +export const clientVersion = "PKG_VERSION"; diff --git a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap index 2bd4b3c6..03a4b8d9 100644 --- a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap +++ b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap @@ -1,215 +1,88 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-id difffing finished 1`] = ` -[ - [ - "Processing file: file1.pdf", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-0.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-1 for build custom-build-id.", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-1.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-2 for build custom-build-id.", - ], - [ - "Processing file: file2.pdf", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-2.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-1 for build custom-build-id.", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-3.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-2 for build custom-build-id.", - ], - [ - "Build custom-build-id finished.", - ], - [ - "Build custom-build-id finished (status=APPROVED, unapprovedCount=0, errorCount=0).", - ], -] +exports[`VisualSnapshots createBuild log output 1`] = ` +[MockFunction] { + "calls": [ + [ + "Build foo created: undefined", + ], + ], + "results": [ + { + "type": "return", + "value": undefined, + }, + ], +} `; -exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params and build-id difffing unfinished 1`] = ` -[ - [ - "Processing file: file1.pdf", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-0.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-1 for build custom-build-id.", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-1.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-2 for build custom-build-id.", - ], - [ - "Processing file: file2.pdf", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-2.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-1 for build custom-build-id.", - ], - [ - "Uploaded image to build custom-build-id: upload id=upload-id-3.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-2 for build custom-build-id.", - ], - [ - "Build custom-build-id finished.", - ], - [ - "Build custom-build-id finished but snapshots haven't been compared yet. Check the build status in a few moments.", - ], -] +exports[`VisualSnapshots finishBuild log output when build status resolves to Equal 1`] = ` +[MockFunction] { + "calls": [ + [ + "Build buildId finished (status=EQUAL, unapprovedCount=2, errorCount=1).", + ], + ], + "results": [ + { + "type": "return", + "value": undefined, + }, + ], +} `; -exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing finished 1`] = ` -[ - [ - "Build build-id created: http://build-url/build-id", - ], - [ - "Processing file: file1.pdf", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-0.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-1 for build build-id.", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-1.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-2 for build build-id.", - ], - [ - "Processing file: file2.pdf", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-2.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-1 for build build-id.", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-3.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-2 for build build-id.", - ], - [ - "Build build-id finished.", - ], - [ - "Build build-id finished (status=APPROVED, unapprovedCount=0, errorCount=0).", - ], -] +exports[`VisualSnapshots finishBuild log output when build status resolves to Queued 1`] = ` +[MockFunction] { + "calls": [ + [ + "Build buildId finished but snapshots haven't been compared yet. Check the build status in a few moments.", + ], + ], + "results": [ + { + "type": "return", + "value": undefined, + }, + ], +} `; -exports[`VisualSnapshots generateAndSendPdfFileSnapshots with params difffing unfinished 1`] = ` -[ - [ - "Build build-id created: http://build-url/build-id", - ], - [ - "Processing file: file1.pdf", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-0.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-1 for build build-id.", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-1.", - ], - [ - "Created a snapshot custom-snapshot-name-file1.pdf-2 for build build-id.", - ], - [ - "Processing file: file2.pdf", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-2.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-1 for build build-id.", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-3.", - ], - [ - "Created a snapshot custom-snapshot-name-file2.pdf-2 for build build-id.", - ], - [ - "Build build-id finished.", - ], - [ - "Build build-id finished but snapshots haven't been compared yet. Check the build status in a few moments.", - ], -] +exports[`VisualSnapshots finishBuild log output when build status resolves to Running 1`] = ` +[MockFunction] { + "calls": [ + [ + "Build buildId finished but snapshots haven't been compared yet. Check the build status in a few moments.", + ], + ], + "results": [ + { + "type": "return", + "value": undefined, + }, + ], +} `; -exports[`VisualSnapshots generateAndSendPdfFileSnapshots without params 1`] = ` -[ - [ - "Build build-id created: http://build-url/build-id", - ], - [ - "Processing file: file1.pdf", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-0.", - ], - [ - "Created a snapshot page-1 for build build-id.", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-1.", - ], - [ - "Created a snapshot page-2 for build build-id.", - ], - [ - "Processing file: file2.pdf", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-2.", - ], - [ - "Created a snapshot page-1 for build build-id.", - ], - [ - "Uploaded image to build build-id: upload id=upload-id-3.", - ], - [ - "Created a snapshot page-2 for build build-id.", - ], - [ - "Build build-id finished.", - ], - [ - "Build build-id finished (status=UNAPPROVED, unapprovedCount=2, errorCount=0).", - ], -] +exports[`VisualSnapshots uploadImageAndCreateSnapshot log output 1`] = ` +[MockFunction] { + "calls": [ + [ + "Uploaded image to build testBuildId: upload id=uploadId.", + ], + [ + "Created a snapshot testSnapshotName for build testBuildId.", + ], + ], + "results": [ + { + "type": "return", + "value": undefined, + }, + { + "type": "return", + "value": undefined, + }, + ], +} `; diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts index 8e1bd216..f59b740c 100644 --- a/visual-js/visual-snapshots/test/api/visual-api.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -1,271 +1,340 @@ import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; import { - CreateVisualSnapshotsParams, + CreateBuildParams, + UploadSnapshotParams, VisualSnapshotsApi, } from "../../src/api/visual-snapshots-api.js"; -import { formatString } from "../../src/utils/format.js"; -import { PdfFile } from "../../src/app/pdf-file.js"; -import path from "path"; -class TestPdfFile implements PdfFile { - constructor(public readonly path: string) {} +describe("VisualSnapshots", () => { + const consoleInfoSpy = jest + .spyOn(console, "info") + .mockImplementation(() => undefined); - public async *convertPagesToImages(): AsyncGenerator { - for (let i = 0; i < 2; ++i) { - yield Buffer.from(`fake-image-buffer-${i}`); - } - } -} + const createBuildMock = jest.fn< + ReturnType, + Parameters + >(); + const finishBuildMock = jest.fn< + ReturnType, + Parameters + >(); + const buildStatusMock = jest.fn< + ReturnType, + Parameters + >(); + const uploadSnapshotMock = jest.fn< + ReturnType, + Parameters + >(); + const createSnapshotMock = jest.fn< + ReturnType, + Parameters + >(); + const visualApi = { + createBuild: createBuildMock, + finishBuild: finishBuildMock, + buildStatus: buildStatusMock, + uploadSnapshot: uploadSnapshotMock, + createSnapshot: createSnapshotMock, + } as never as VisualApi; + + beforeEach(() => { + createBuildMock.mockReset(); + finishBuildMock.mockReset(); + buildStatusMock.mockReset(); + consoleInfoSpy.mockReset(); + }); + + describe("createBuild", () => { + it("should execute createBuild API with passed params", async () => { + const buildId = "foo"; -describe("VisualSnapshots", () => { - describe("generateAndSendPdfFileSnapshots", () => { - const consoleInfoSpy = jest - .spyOn(console, "info") - .mockImplementation(() => undefined); - - const createBuildMock = jest.fn(); - const uploadSnapshotMock = jest.fn(); - const createSnapshotMock = jest.fn(); - const finishBuildMock = jest.fn(); - const buildStatusMock = jest.fn(); - const visualApiMock = { - createBuild: createBuildMock, - uploadSnapshot: uploadSnapshotMock, - createSnapshot: createSnapshotMock, - finishBuild: finishBuildMock, - buildStatus: buildStatusMock, - } as never as VisualApi; - - const visualSnapshots = new VisualSnapshotsApi(visualApiMock); - const files = [new TestPdfFile("file1.pdf"), new TestPdfFile("file2.pdf")]; - - beforeEach(() => { - createBuildMock.mockReset(); createBuildMock.mockResolvedValue({ - id: "build-id", - url: "http://build-url/build-id", + id: buildId, + } as never); + + const api = new VisualSnapshotsApi(visualApi); + + const params: CreateBuildParams = { + buildName: "testBuildName", + branch: "testBranch", + defaultBranch: "testDefaultBranch", + project: "testProject", + customId: "testCustomId", + }; + + await api.createBuild(params); + + expect(createBuildMock).toHaveBeenCalledWith({ + name: params.buildName, + branch: params.branch, + defaultBranch: params.defaultBranch, + project: params.project, + customId: params.customId, }); + }); + + it("should return build id from createBuild API", async () => { + const buildId = "foo"; + + createBuildMock.mockResolvedValue({ + id: buildId, + } as never); + + const api = new VisualSnapshotsApi(visualApi); + + const actual = await api.createBuild({}); + + expect(actual).toEqual(buildId); + }); + + test("log output", async () => { + const buildId = "foo"; + + createBuildMock.mockResolvedValue({ + id: buildId, + } as never); + + const api = new VisualSnapshotsApi(visualApi); - let uploadId = 0; - uploadSnapshotMock.mockReset(); - uploadSnapshotMock.mockImplementation(() => - Promise.resolve(`upload-id-${uploadId++}`) - ); + await api.createBuild({}); - createSnapshotMock.mockReset(); - finishBuildMock.mockReset(); - buildStatusMock.mockReset(); - consoleInfoSpy.mockReset(); + expect(consoleInfoSpy).toMatchSnapshot(); }); + }); + + describe("finishBuild", () => { + it("should execute finishBuild API with passed buildId", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Equal, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Equal, + errorCount: 0, + unapprovedCount: 0, + url: "", + }); + + const api = new VisualSnapshotsApi(visualApi); - const assertSuccessfulPdfSnapshotsGeneration = ( - params: CreateVisualSnapshotsParams - ) => { - if (!params.buildId) { - expect(createBuildMock).toHaveBeenCalledWith({ - name: params.buildName, - branch: params.branch, - defaultBranch: params.defaultBranch, - project: params.project, - customId: params.customId, - }); - } - - expect(uploadSnapshotMock.mock.calls).toEqual([ - [ - { - buildId: params.buildId ?? "build-id", - image: { data: Buffer.from("fake-image-buffer-0") }, - }, - ], - [ - { - buildId: params.buildId ?? "build-id", - image: { data: Buffer.from("fake-image-buffer-1") }, - }, - ], - [ - { - buildId: params.buildId ?? "build-id", - image: { data: Buffer.from("fake-image-buffer-0") }, - }, - ], - [ - { - buildId: params.buildId ?? "build-id", - image: { data: Buffer.from("fake-image-buffer-1") }, - }, - ], - ]); - - expect(createSnapshotMock.mock.calls).toEqual([ - [ - { - diffingMethod: DiffingMethod.Balanced, - buildId: params.buildId ?? "build-id", - name: formatString(params.snapshotName ?? "page-{page}", { - filename: path.basename(files[0].path), - page: 1, - }), - uploadId: "upload-id-0", - suiteName: params.suiteName, - testName: params.testName - ? formatString(params.testName, { - filename: path.basename(files[0].path), - }) - : undefined, - }, - ], - [ - { - diffingMethod: DiffingMethod.Balanced, - buildId: params.buildId ?? "build-id", - name: formatString(params.snapshotName ?? "page-{page}", { - filename: path.basename(files[0].path), - page: 2, - }), - uploadId: "upload-id-1", - suiteName: params.suiteName, - testName: params.testName - ? formatString(params.testName, { - filename: path.basename(files[0].path), - }) - : undefined, - }, - ], - [ - { - diffingMethod: DiffingMethod.Balanced, - buildId: params.buildId ?? "build-id", - name: formatString(params.snapshotName ?? "page-{page}", { - filename: path.basename(files[1].path), - page: 1, - }), - uploadId: "upload-id-2", - suiteName: params.suiteName, - testName: params.testName - ? formatString(params.testName, { - filename: path.basename(files[1].path), - }) - : undefined, - }, - ], - [ - { - diffingMethod: DiffingMethod.Balanced, - buildId: params.buildId ?? "build-id", - name: formatString(params.snapshotName ?? "page-{page}", { - filename: path.basename(files[1].path), - page: 2, - }), - uploadId: "upload-id-3", - suiteName: params.suiteName, - testName: params.testName - ? formatString(params.testName, { - filename: path.basename(files[1].path), - }) - : undefined, - }, - ], - ]); + await api.finishBuild(buildId); expect(finishBuildMock).toHaveBeenCalledWith({ - uuid: params.buildId ?? "build-id", + uuid: buildId, }); + }); - expect(buildStatusMock).toHaveBeenCalledWith( - params.buildId ?? "build-id" - ); - - expect(consoleInfoSpy.mock.calls).toMatchSnapshot(); - }; - - describe("with params", () => { - const params = { - branch: "fake-branch", - buildName: "fake-build-name", - defaultBranch: "fake-default-branch", - project: "fake-project", - customId: "fake-custom-id", - snapshotName: "custom-snapshot-name-{filename}-{page}", - suiteName: "custom-suite-name", - testName: "custom-test-name-{filename}", - } satisfies CreateVisualSnapshotsParams; - - test("difffing unfinished", async () => { - buildStatusMock.mockResolvedValueOnce({ - status: BuildStatus.Running, - unapprovedCount: 2, - errorCount: 0, - }); - - await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - - assertSuccessfulPdfSnapshotsGeneration(params); + it("should call buildStatus API with passed buildId when build status resolves to other than Running or Queued", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Equal, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Equal, + errorCount: 0, + unapprovedCount: 0, + url: "", }); - test("difffing finished", async () => { - buildStatusMock.mockResolvedValueOnce({ - status: BuildStatus.Approved, - unapprovedCount: 0, - errorCount: 0, - }); + const visualApi = { + finishBuild: finishBuildMock, + buildStatus: buildStatusMock, + } as unknown as VisualApi; - await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); + const api = new VisualSnapshotsApi(visualApi); - assertSuccessfulPdfSnapshotsGeneration(params); - }); + await api.finishBuild(buildId); + + expect(buildStatusMock).toHaveBeenCalledWith(buildId); }); - describe("with params and build-id", () => { - const params = { - branch: "fake-branch", - buildName: "fake-build-name", - defaultBranch: "fake-default-branch", - project: "fake-project", - customId: "fake-custom-id", - buildId: "custom-build-id", - snapshotName: "custom-snapshot-name-{filename}-{page}", - suiteName: "custom-suite-name", - testName: "custom-test-name-{filename}", - } satisfies CreateVisualSnapshotsParams; - - test("difffing unfinished", async () => { - buildStatusMock.mockResolvedValueOnce({ - status: BuildStatus.Running, - unapprovedCount: 2, - errorCount: 0, - }); - - await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); - - assertSuccessfulPdfSnapshotsGeneration(params); + it("should not call buildStatus API when build status resolves to Running", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Running, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Running, + errorCount: 0, + unapprovedCount: 0, + url: "", }); - test("difffing finished", async () => { - buildStatusMock.mockResolvedValueOnce({ - status: BuildStatus.Approved, - unapprovedCount: 0, - errorCount: 0, - }); + const api = new VisualSnapshotsApi(visualApi); - await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); + await api.finishBuild(buildId); - assertSuccessfulPdfSnapshotsGeneration(params); + expect(buildStatusMock).not.toHaveBeenCalled(); + }); + + it("should not call buildStatus API when build status resolves to Queued", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Queued, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Queued, + errorCount: 0, + unapprovedCount: 0, + url: "", }); + const api = new VisualSnapshotsApi(visualApi); + + await api.finishBuild(buildId); + + expect(buildStatusMock).not.toHaveBeenCalled(); }); - test("without params", async () => { - buildStatusMock.mockResolvedValueOnce({ - status: BuildStatus.Unapproved, + test("log output when build status resolves to Equal", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Equal, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Equal, + errorCount: 1, unapprovedCount: 2, + url: "", + }); + + const api = new VisualSnapshotsApi(visualApi); + + await api.finishBuild(buildId); + + expect(consoleInfoSpy).toMatchSnapshot(); + }); + + test("log output when build status resolves to Running", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Running, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Running, errorCount: 0, + unapprovedCount: 0, + url: "", + }); + + const api = new VisualSnapshotsApi(visualApi); + + await api.finishBuild(buildId); + + expect(consoleInfoSpy).toMatchSnapshot(); + }); + + test("log output when build status resolves to Queued", async () => { + const buildId = "buildId"; + finishBuildMock.mockResolvedValue({ + buildId, + status: BuildStatus.Queued, + } as never); + buildStatusMock.mockResolvedValue({ + status: BuildStatus.Queued, + errorCount: 0, + unapprovedCount: 0, + url: "", + }); + + const api = new VisualSnapshotsApi(visualApi); + + await api.finishBuild(buildId); + + expect(consoleInfoSpy).toMatchSnapshot(); + }); + }); + + describe("uploadImageAndCreateSnapshot", () => { + it("should call uploadSnapshot API", async () => { + const uploadId = "uploadId"; + uploadSnapshotMock.mockResolvedValue(uploadId); + + const api = new VisualSnapshotsApi(visualApi); + + const params: UploadSnapshotParams = { + buildId: "testBuildId", + snapshot: Buffer.from("snapshot"), + snapshotName: "testSnapshotName", + suiteName: "testSuiteName", + testName: "testTestName", + }; + + await api.uploadImageAndCreateSnapshot(params); + + expect(uploadSnapshotMock).toHaveBeenCalledWith({ + buildId: params.buildId, + image: { data: params.snapshot }, + }); + }); + + it("should call createSnapshot API", async () => { + const uploadId = "uploadId"; + uploadSnapshotMock.mockResolvedValue(uploadId); + + const api = new VisualSnapshotsApi(visualApi); + + const params: UploadSnapshotParams = { + buildId: "testBuildId", + snapshot: Buffer.from("snapshot"), + snapshotName: "testSnapshotName", + suiteName: "testSuiteName", + testName: "testTestName", + }; + + await api.uploadImageAndCreateSnapshot(params); + + expect(createSnapshotMock).toHaveBeenCalledWith({ + buildId: params.buildId, + uploadId, + name: params.snapshotName, + diffingMethod: DiffingMethod.Balanced, + testName: params.testName, + suiteName: params.suiteName, }); + }); + + it("should return uploadId from uploadSnapshot API", async () => { + const uploadId = "uploadId"; + uploadSnapshotMock.mockResolvedValue(uploadId); + + const api = new VisualSnapshotsApi(visualApi); + + const params: UploadSnapshotParams = { + buildId: "testBuildId", + snapshot: Buffer.from("snapshot"), + snapshotName: "testSnapshotName", + suiteName: "testSuiteName", + testName: "testTestName", + }; + + const actual = await api.uploadImageAndCreateSnapshot(params); + expect(actual).toEqual(uploadId); + }); + + test("log output", async () => { + const uploadId = "uploadId"; + uploadSnapshotMock.mockResolvedValue(uploadId); + + const api = new VisualSnapshotsApi(visualApi); + + const params: UploadSnapshotParams = { + buildId: "testBuildId", + snapshot: Buffer.from("snapshot"), + snapshotName: "testSnapshotName", + suiteName: "testSuiteName", + testName: "testTestName", + }; - const params = {} as CreateVisualSnapshotsParams; - await visualSnapshots.generateAndSendPdfFileSnapshots(files, params); + await api.uploadImageAndCreateSnapshot(params); - assertSuccessfulPdfSnapshotsGeneration(params); + expect(consoleInfoSpy).toMatchSnapshot(); }); }); }); diff --git a/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts b/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts new file mode 100644 index 00000000..addc650f --- /dev/null +++ b/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts @@ -0,0 +1,85 @@ +import { PdfPageSnapshotUploader } from "../../../src/app/worker/pdf-page-snapshot-uploader.js"; +import { PdfFile } from "../../../src/app/pdf-file.js"; +import { PdfFileLoader } from "../../../src/app/pdf-file-loader.js"; +import { VisualSnapshotsApi } from "../../../src/api/visual-snapshots-api.js"; + +class TestPdfFile implements PdfFile { + constructor(public readonly path: string, public readonly pages: number) {} + + public async getPage(page: number): Promise { + return Buffer.from(`fake-image-buffer-${page}`); + } +} + +function createUploadId(content: Buffer) { + return `upload-id:${content.toString("utf-8")}`; +} + +describe("PdfPageSnapshotUploader", () => { + describe("uploadPageSnapshot", () => { + const consoleInfoSpy = jest + .spyOn(console, "info") + .mockImplementation(() => undefined); + + const uploadImageAndCreateSnapshot = jest.fn< + ReturnType, + Parameters + >(); + + const visualApiMock = { + uploadImageAndCreateSnapshot, + } as never as VisualSnapshotsApi; + + const files = [ + new TestPdfFile("file1.pdf", 4), + new TestPdfFile("file2.pdf", 5), + ]; + + const loadPdfFileMock = jest + .fn< + ReturnType, + Parameters + >() + .mockImplementation(async (path) => { + const file = files.find((f) => f.path === path); + if (!file) { + throw new Error("file not found"); + } + return file; + }); + + const pdfLoaderMock: PdfFileLoader = { + loadPdfFile: loadPdfFileMock, + }; + + const uploader = new PdfPageSnapshotUploader(visualApiMock, pdfLoaderMock); + + beforeEach(() => { + uploadImageAndCreateSnapshot.mockReset(); + uploadImageAndCreateSnapshot.mockImplementation(({ snapshot }) => + Promise.resolve(createUploadId(snapshot)) + ); + + consoleInfoSpy.mockReset(); + }); + + it("should call uploadImageAndCreateSnapshot", async () => { + await uploader.uploadPageSnapshot( + "build-id", + files[0].path, + 1, + "suiteName", + "testName-{filename}", + "snapshotName-{filename}-{page}" + ); + + expect(uploadImageAndCreateSnapshot).toHaveBeenCalledWith({ + buildId: "build-id", + snapshot: await files[0].getPage(1), + snapshotName: `snapshotName-${files[0].path}-1`, + testName: `testName-${files[0].path}`, + suiteName: "suiteName", + }); + }); + }); +}); diff --git a/visual-js/visual-snapshots/test/api/worker/single-cached-pdf-file-loader.spec.ts b/visual-js/visual-snapshots/test/api/worker/single-cached-pdf-file-loader.spec.ts new file mode 100644 index 00000000..0875e5d7 --- /dev/null +++ b/visual-js/visual-snapshots/test/api/worker/single-cached-pdf-file-loader.spec.ts @@ -0,0 +1,76 @@ +import { SingleCachedPdfFileLoader } from "../../../src/app/single-cached-pdf-file-loader.js"; +import { PdfFileLoader } from "../../../src/app/pdf-file-loader.js"; + +describe("SingleCachedPdfFileLoader", () => { + function createUnderlyingLoader() { + const loadPdfFile = jest + .fn< + ReturnType, + Parameters + >() + .mockResolvedValue({} as never); + + const underlyingLoader: PdfFileLoader = { + loadPdfFile, + }; + + return { loadPdfFile, underlyingLoader }; + } + + it("should call underlying loader with full path", async () => { + const { loadPdfFile, underlyingLoader } = createUnderlyingLoader(); + + const path = "a/b/c/file.pdf"; + + const loader = new SingleCachedPdfFileLoader(underlyingLoader); + await loader.loadPdfFile(path); + + expect(loadPdfFile).toHaveBeenCalledWith(path); + }); + + it("should load file once if loaded twice with the same path", async () => { + const { loadPdfFile, underlyingLoader } = createUnderlyingLoader(); + + const path = "file.pdf"; + + const loader = new SingleCachedPdfFileLoader(underlyingLoader); + + await loader.loadPdfFile(path); + await loader.loadPdfFile(path); + + expect(loadPdfFile).toHaveBeenCalledTimes(1); + }); + + it("should load other files if path changes", async () => { + const { loadPdfFile, underlyingLoader } = createUnderlyingLoader(); + + const path1 = "file1.pdf"; + const path2 = "file2.pdf"; + + const loader = new SingleCachedPdfFileLoader(underlyingLoader); + + await loader.loadPdfFile(path1); + await loader.loadPdfFile(path2); + + expect(loadPdfFile).toHaveBeenCalledWith(path1); + expect(loadPdfFile).toHaveBeenCalledWith(path2); + }); + + it("should reload first files if other file is loaded", async () => { + const { loadPdfFile, underlyingLoader } = createUnderlyingLoader(); + + const path1 = "file1.pdf"; + const path2 = "file2.pdf"; + + const loader = new SingleCachedPdfFileLoader(underlyingLoader); + + await loader.loadPdfFile(path1); + await loader.loadPdfFile(path1); + await loader.loadPdfFile(path2); + await loader.loadPdfFile(path2); + await loader.loadPdfFile(path1); + await loader.loadPdfFile(path1); + + expect(loadPdfFile.mock.calls).toEqual([[path1], [path2], [path1]]); + }); +}); diff --git a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts b/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts deleted file mode 100644 index 8818b5f4..00000000 --- a/visual-js/visual-snapshots/test/app/pdf-converter.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import path from "path"; -import { PdfConverter } from "../../src/app/pdf-converter.js"; -import { __dirname } from "../helpers.js"; - -describe("PdfConverter", () => { - test("convertPagesToImages", async () => { - const pdf = jest.fn().mockResolvedValue([]); - - const pdfFilePath = "./fake-pdf-file-path.pdf"; - const pdfConverter = new PdfConverter(pdf); - for await (const _ of pdfConverter.convertPagesToImages(pdfFilePath)) { - } - - expect(pdf).toHaveBeenCalledWith(pdfFilePath, { scale: 1 }); - }); - - test("convertPagesToImages", async () => { - const pdfFilePath = path.join(__dirname(import.meta), "../files/test.pdf"); - const pdfConverter = new PdfConverter(); - - let pages = 0; - for await (const _ of pdfConverter.convertPagesToImages(pdfFilePath)) { - pages++; - } - - expect(pages).toEqual(3); - }); - - test("createPdfFile", async () => { - const pdf = jest.fn().mockResolvedValue([]); - const pdfConverter = new PdfConverter(pdf); - - const pdfFilePath = "./fake-pdf-file-path.pdf"; - const pdfFile = pdfConverter.createPdfFile(pdfFilePath); - - for await (const _ of pdfFile.convertPagesToImages()) { - } - - expect(pdfFile.path).toBe(pdfFilePath); - expect(pdf).toHaveBeenCalledWith(pdfFilePath, { scale: 1 }); - }); -}); diff --git a/visual-js/visual-snapshots/test/app/pdf-file-loader.spec.ts b/visual-js/visual-snapshots/test/app/pdf-file-loader.spec.ts new file mode 100644 index 00000000..a8c5b60f --- /dev/null +++ b/visual-js/visual-snapshots/test/app/pdf-file-loader.spec.ts @@ -0,0 +1,61 @@ +import { LibPdfFileLoader } from "../../src/app/pdf-file-loader.js"; +import { __dirname } from "../helpers.js"; + +describe("LibPdfFileLoader", () => { + it("should call library with path and scale", async () => { + const lib = jest.fn().mockResolvedValue({ + length: 10, + getPage: jest.fn(), + }); + + const loader = new LibPdfFileLoader(lib); + + await loader.loadPdfFile("file.pdf"); + + expect(lib).toHaveBeenCalledWith("file.pdf", { scale: 1 }); + }); + + it("should return LoadedPdfFile with same path", async () => { + const lib = jest.fn().mockResolvedValue({ + length: 10, + getPage: jest.fn(), + }); + const loader = new LibPdfFileLoader(lib); + const path = "path/to/file.pdf"; + + const file = await loader.loadPdfFile(path); + + expect(file.path).toEqual(path); + }); + + it("should return LoadedPdfFile with same length", async () => { + const length = 10; + + const lib = jest.fn().mockResolvedValue({ + length, + getPage: jest.fn(), + }); + + const loader = new LibPdfFileLoader(lib); + + const file = await loader.loadPdfFile("file.pdf"); + + expect(file.pages).toEqual(length); + }); + + it("should return LoadedPdfFile with getPage calling lib's getPage", async () => { + const getPage = jest.fn(); + + const lib = jest.fn().mockResolvedValue({ + length: 10, + getPage, + }); + + const loader = new LibPdfFileLoader(lib); + + const file = await loader.loadPdfFile("file.pdf"); + await file.getPage(5); + + expect(getPage).toHaveBeenCalledWith(5); + }); +}); diff --git a/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts b/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts new file mode 100644 index 00000000..51ae9a96 --- /dev/null +++ b/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts @@ -0,0 +1,171 @@ +import { VisualSnapshotsApi } from "../../src/api/visual-snapshots-api.js"; +import { PdfSnapshotUploader } from "../../src/app/pdf-files-snapshot-uploader.js"; +import { + PdfCommandHandler, + PdfCommandParams, +} from "../../src/app/pdf-handler.js"; +import { __dirname } from "../helpers.js"; +import path from "path"; + +describe("pdf-handler", () => { + const createBuildMock = jest.fn< + ReturnType, + Parameters + >(); + const finishBuildMock = jest.fn< + ReturnType, + Parameters + >(); + + const visualSnapshotsApi = { + createBuild: createBuildMock, + finishBuild: finishBuildMock, + } as never as VisualSnapshotsApi; + + const uploadSnapshotsMock = jest.fn< + ReturnType, + Parameters + >(); + + const pdfSnapshotUploaderMock = { + uploadSnapshots: uploadSnapshotsMock, + } as never as PdfSnapshotUploader; + + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe("creating build", () => { + it("should create a build when buildId is not passed", async () => { + const handler = new PdfCommandHandler( + visualSnapshotsApi, + pdfSnapshotUploaderMock + ); + + const params: PdfCommandParams = { + concurrency: 1, + }; + + await handler.handle( + [path.join(__dirname(import.meta), "../files/1.pdf")], + params + ); + + expect(createBuildMock).toHaveBeenCalledWith(params); + }); + + it("should not create a build when buildId is passed", async () => { + const handler = new PdfCommandHandler( + visualSnapshotsApi, + pdfSnapshotUploaderMock + ); + + const params: PdfCommandParams = { + buildId: "buildId", + concurrency: 1, + }; + + await handler.handle( + [path.join(__dirname(import.meta), "../files/1.pdf")], + params + ); + + expect(createBuildMock).not.toHaveBeenCalled(); + }); + }); + + describe("uploading snapshots", () => { + it("should call uploadSnapshots with created build ID", async () => { + const handler = new PdfCommandHandler( + visualSnapshotsApi, + pdfSnapshotUploaderMock + ); + + const buildId = "buildId"; + + const params: PdfCommandParams = { + concurrency: 1, + }; + + createBuildMock.mockResolvedValue(buildId); + + await handler.handle( + [path.join(__dirname(import.meta), "../files/1.pdf")], + params + ); + + expect(uploadSnapshotsMock).toHaveBeenCalledWith( + expect.objectContaining({ + buildId, + }) + ); + }); + + it("should call uploadSnapshots with provided build ID", async () => { + const handler = new PdfCommandHandler( + visualSnapshotsApi, + pdfSnapshotUploaderMock + ); + + const buildId = "buildId"; + + const params: PdfCommandParams = { + buildId, + concurrency: 1, + }; + + await handler.handle( + [path.join(__dirname(import.meta), "../files/1.pdf")], + params + ); + + expect(uploadSnapshotsMock).toHaveBeenCalledWith( + expect.objectContaining({ + buildId, + }) + ); + }); + }); + + describe("finishing build", () => { + it("should finish build when buildId is not passed, using created build ID", async () => { + const buildId = "buildId"; + createBuildMock.mockResolvedValue(buildId); + + const handler = new PdfCommandHandler( + visualSnapshotsApi, + pdfSnapshotUploaderMock + ); + + const params: PdfCommandParams = { + concurrency: 1, + }; + + await handler.handle( + [path.join(__dirname(import.meta), "../files/1.pdf")], + params + ); + + expect(finishBuildMock).toHaveBeenCalledWith(buildId); + }); + + it("should not finish build when buildId is passed", async () => { + const handler = new PdfCommandHandler( + visualSnapshotsApi, + pdfSnapshotUploaderMock + ); + + const params: PdfCommandParams = { + concurrency: 1, + buildId: "buildId", + }; + + await handler.handle( + [path.join(__dirname(import.meta), "../files/1.pdf")], + params + ); + + expect(finishBuildMock).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/visual-js/visual-snapshots/test/utils/pool.spec.ts b/visual-js/visual-snapshots/test/utils/pool.spec.ts new file mode 100644 index 00000000..e6a20c5a --- /dev/null +++ b/visual-js/visual-snapshots/test/utils/pool.spec.ts @@ -0,0 +1,242 @@ +import workerpool, { WorkerPoolOptions } from "workerpool"; +import path from "path"; +import { execAll, WorkerMethod } from "../../src/utils/pool.js"; +import { __dirname } from "../helpers.js"; + +function* workers( + elements: number[] +): Generator number>> { + for (const element of elements) { + yield { + method: "elementWorker", + args: [element], + }; + } +} + +function* workersThrowingGenerator( + elements: number[], + index: number, + message: string +): Generator number>> { + for (let i = 0; i < elements.length; i++) { + if (i === index) { + throw new Error(message); + } + + yield { + method: "elementWorker", + args: [elements[i]], + }; + } +} + +function* throwingWorkersGenerator( + elements: number[], + index: number, + message: string +): Generator< + WorkerMethod< + "elementWorker" | "throwingElementWorker", + ((i: number) => number) | ((message: string) => never) + > +> { + for (let i = 0; i < elements.length; i++) { + if (i === index) { + yield { + method: "throwingElementWorker", + args: [message], + }; + } else { + yield { + method: "elementWorker", + args: [elements[i]], + }; + } + } +} + +function createPool(opts?: WorkerPoolOptions) { + return workerpool.pool( + path.join(__dirname(import.meta), "./pool.worker.js"), + opts + ); +} + +async function usePool( + fn: (pool: workerpool.Pool) => Promise, + opts?: WorkerPoolOptions +) { + const pool = createPool(opts); + try { + return await fn(pool); + } finally { + pool.terminate(); + } +} + +function range(count: number) { + return [...new Array(count)].map((_, i) => i); +} + +describe("execAll", () => { + it("should enqueue and complete all elements with concurrency greater than element count", async () => { + const elements = range(10); + + await usePool( + async (pool) => { + const actual = await execAll(pool, workers(elements)); + expect(actual.sort((a, b) => a - b)).toEqual(elements); + }, + { maxWorkers: 20 } + ); + }); + + it("should enqueue and complete all elements with concurrency less than element count", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const actual = await execAll(pool, workers(elements)); + expect(actual.sort((a, b) => a - b)).toEqual(elements); + }, + { maxWorkers: 10 } + ); + }); + + it("should reject if first worker creator throws", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + workersThrowingGenerator(elements, 0, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 1 } + ); + }); + + it("should reject if n-th worker creator throws where n < concurrency", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + workersThrowingGenerator(elements, 5, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 10 } + ); + }); + + it("should reject if n-th worker creator throws where n > concurrency", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + workersThrowingGenerator(elements, 90, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 1 } + ); + }); + + it("should reject if last worker creator throws", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + workersThrowingGenerator(elements, elements.length - 1, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 1 } + ); + }); + + it("should reject if first worker throws", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + workersThrowingGenerator(elements, 0, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 1 } + ); + }); + + it("should reject if n-th worker throws where n < concurrency", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + throwingWorkersGenerator(elements, 5, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 10 } + ); + }); + + it("should reject if n-th worker throws where n > concurrency", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + throwingWorkersGenerator(elements, 90, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 1 } + ); + }); + + it("should reject if last worker throws", async () => { + const elements = range(100); + + await usePool( + async (pool) => { + const error = new Error("test"); + const promise = execAll( + pool, + throwingWorkersGenerator(elements, elements.length - 1, "test") + ); + + await expect(promise).rejects.toThrow(error); + }, + { maxWorkers: 1 } + ); + }); +}); diff --git a/visual-js/visual-snapshots/test/utils/pool.worker.js b/visual-js/visual-snapshots/test/utils/pool.worker.js new file mode 100644 index 00000000..a9fa9a65 --- /dev/null +++ b/visual-js/visual-snapshots/test/utils/pool.worker.js @@ -0,0 +1,11 @@ +import workerpool from "workerpool"; + +function elementWorker(i) { + return i; +} + +function throwingElementWorker(message) { + throw new Error(message); +} + +workerpool.worker({ elementWorker, throwingElementWorker }); From 3da5809e954bb9941a88a6364f831762c71a250b Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Mon, 24 Mar 2025 14:02:39 +0100 Subject: [PATCH 09/15] [no-ticket] Fix README - use `npm` instead of `yarn` (#208) --- visual-js/visual-snapshots/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/visual-js/visual-snapshots/README.md b/visual-js/visual-snapshots/README.md index cc516551..8413b25a 100644 --- a/visual-js/visual-snapshots/README.md +++ b/visual-js/visual-snapshots/README.md @@ -11,7 +11,7 @@ node >= 18 ## Installation ```sh -yarn install --save @saucelabs/visual-snapshots +npm install --save @saucelabs/visual-snapshots ``` ## Development @@ -19,7 +19,7 @@ yarn install --save @saucelabs/visual-snapshots Build: ```sh -yarn run build +npm run build ``` Execute: @@ -31,7 +31,7 @@ node lib/index.js pdf [params] Run tests: ```sh -yarn run test +npm run test ``` ## Reusing pdf conversion code From 7311a61d19c3232f534a0c96f77b68b239dce4c7 Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Mon, 24 Mar 2025 15:31:38 +0100 Subject: [PATCH 10/15] [no-ticket] node 18 support (#207) --- .../src/app/worker/worker-pool-pdf-snapshot-uploader.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts b/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts index 453d1b27..32222de3 100644 --- a/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts +++ b/visual-js/visual-snapshots/src/app/worker/worker-pool-pdf-snapshot-uploader.ts @@ -7,6 +7,7 @@ import { import { execAll } from "../../utils/pool.js"; import { PdfFileLoader } from "../../app/pdf-file-loader.js"; import { ProcessPdfPageMethod } from "./worker.js"; +import { __dirname } from "../../utils/helpers.js"; export class WorkerPoolPdfSnapshotUploader implements PdfSnapshotUploader { constructor( @@ -39,7 +40,7 @@ export class WorkerPoolPdfSnapshotUploader implements PdfSnapshotUploader { } private createPool() { - return workerpool.pool(path.join(import.meta.dirname, "./worker.js"), { + return workerpool.pool(path.join(__dirname(import.meta), "./worker.js"), { workerThreadOpts: { argv: process.argv, }, From e74cf860bed003c202208e3d41edf89fad1520f4 Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Tue, 25 Mar 2025 07:31:44 +0100 Subject: [PATCH 11/15] [no-ticket] always finish created builds (#209) --- .../visual-snapshots/src/app/pdf-handler.ts | 27 +++++++++++-------- .../visual-snapshots/src/commands/pdf.ts | 4 +-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts index 3aa4e98d..67a4002f 100644 --- a/visual-js/visual-snapshots/src/app/pdf-handler.ts +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -18,22 +18,27 @@ export class PdfCommandHandler { private readonly pdfSnapshotUploader: PdfSnapshotUploader ) {} - public async handle(globsOrDirs: string[], params: PdfCommandParams) { + public async handle( + globsOrDirs: string[], + params: PdfCommandParams + ): Promise { const pdfFilePaths = await getFiles(globsOrDirs, "*.pdf"); const buildId = params.buildId ?? (await this.visualSnapshotsApi.createBuild(params)); - await this.pdfSnapshotUploader.uploadSnapshots({ - buildId, - pdfFilePaths, - suiteName: params.suiteName, - testNameFormat: params.testName, - snapshotNameFormat: params.snapshotName, - }); - - if (!params.buildId) { - await this.visualSnapshotsApi.finishBuild(buildId); + try { + await this.pdfSnapshotUploader.uploadSnapshots({ + buildId, + pdfFilePaths, + suiteName: params.suiteName, + testNameFormat: params.testName, + snapshotNameFormat: params.snapshotName, + }); + } finally { + if (!params.buildId) { + await this.visualSnapshotsApi.finishBuild(buildId); + } } } } diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index d8772e25..5c85506b 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -68,10 +68,10 @@ export const pdfCommand = (clientVersion: string) => { new PdfCommandHandler(visualSnapshotsApi, pdfSnapshotUploader) .handle(globsOrDirs, params) .then(() => { - console.log("Successfully created PDF snapshots"); + console.info("Successfully created PDF snapshots."); }) .catch((err) => { - console.error(`An error occured when creating PDF snapshots: ${err}`); + console.error(`At least one PDF snapshot creation failed: ${err}.`); }); }); }; From e32681583998c519345248c90340dd7356cea91d Mon Sep 17 00:00:00 2001 From: Agnieszka Szczepanska <58401935+aga-szczepanska@users.noreply.github.com> Date: Tue, 25 Mar 2025 11:20:56 +0100 Subject: [PATCH 12/15] [no-ticket] fix options (#210) --- visual-js/visual-snapshots/src/app/worker/worker.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/visual-js/visual-snapshots/src/app/worker/worker.ts b/visual-js/visual-snapshots/src/app/worker/worker.ts index ba10d8c3..78c45d6d 100644 --- a/visual-js/visual-snapshots/src/app/worker/worker.ts +++ b/visual-js/visual-snapshots/src/app/worker/worker.ts @@ -16,7 +16,9 @@ import { VisualSnapshotsApi } from "../../api/visual-snapshots-api.js"; program .addOption(usernameOption) .addOption(accessKeyOption) - .addOption(regionOption); + .addOption(regionOption) + .allowUnknownOption(true) + .allowExcessArguments(true); program.parse(); From 95920cc04fd5f559ebc7d70de8d5ed529ce15b79 Mon Sep 17 00:00:00 2001 From: Sebastian Alex Date: Tue, 25 Mar 2025 12:41:31 +0100 Subject: [PATCH 13/15] [INT-1] visual-snapshots: add pino logger (#211) --- visual-js/package-lock.json | 183 +++++++++++++++++- visual-js/visual-snapshots/package.json | 2 + .../src/api/visual-snapshots-api.ts | 65 ++++++- .../visual-snapshots/src/app/pdf-handler.ts | 2 +- .../app/worker/pdf-page-snapshot-uploader.ts | 28 +-- .../visual-snapshots/src/app/worker/worker.ts | 8 + .../visual-snapshots/src/commands/options.ts | 5 + .../visual-snapshots/src/commands/pdf.ts | 5 +- visual-js/visual-snapshots/src/index.ts | 10 +- visual-js/visual-snapshots/src/logger.ts | 7 + .../api/__snapshots__/visual-api.spec.ts.snap | 122 +++++------- .../test/api/visual-api.spec.ts | 40 ++-- .../worker/pdf-page-snapshot-uploader.spec.ts | 16 +- .../test/app/pdf-handler.spec.ts | 2 +- visual-js/visual-snapshots/test/helpers.ts | 24 +++ 15 files changed, 394 insertions(+), 125 deletions(-) create mode 100644 visual-js/visual-snapshots/src/logger.ts diff --git a/visual-js/package-lock.json b/visual-js/package-lock.json index 29c16263..f7b899d0 100644 --- a/visual-js/package-lock.json +++ b/visual-js/package-lock.json @@ -5152,6 +5152,15 @@ "node": ">= 4.0.0" } }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/auto-bind": { "version": "4.0.0", "dev": true, @@ -6612,6 +6621,15 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/dayjs": { "version": "1.11.13", "license": "MIT" @@ -8416,6 +8434,12 @@ ], "license": "MIT" }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, "node_modules/fast-decode-uri-component": { "version": "1.0.1", "dev": true, @@ -8467,6 +8491,21 @@ "fast-decode-uri-component": "^1.0.1" } }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, "node_modules/fast-url-parser": { "version": "1.1.3", "dev": true, @@ -9539,6 +9578,12 @@ "tslib": "^2.0.3" } }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "license": "BSD-3-Clause", @@ -11292,7 +11337,6 @@ }, "node_modules/joycon": { "version": "3.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -12880,6 +12924,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/on-finished": { "version": "2.4.1", "license": "MIT", @@ -13411,6 +13464,67 @@ "node": ">=6" } }, + "node_modules/pino": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.6.0.tgz", + "integrity": "sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^4.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.0.0.tgz", + "integrity": "sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pump": "^3.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, "node_modules/pirates": { "version": "4.0.6", "license": "MIT", @@ -13695,6 +13809,22 @@ "node": ">=8" } }, + "node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/progress": { "version": "2.0.3", "license": "MIT", @@ -14129,6 +14259,12 @@ "license": "MIT", "optional": true }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, "node_modules/quick-lru": { "version": "5.1.1", "license": "MIT", @@ -14365,6 +14501,15 @@ "node": ">=8.10.0" } }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/recast": { "version": "0.23.9", "license": "MIT", @@ -14688,6 +14833,15 @@ ], "license": "MIT" }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "license": "MIT" @@ -14707,6 +14861,12 @@ "dev": true, "license": "MIT" }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, "node_modules/selenium-webdriver": { "version": "4.25.0", "dev": true, @@ -15019,6 +15179,15 @@ "node": ">= 14" } }, + "node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "license": "BSD-3-Clause", @@ -15155,7 +15324,6 @@ "node_modules/split2": { "version": "4.2.0", "license": "ISC", - "optional": true, "engines": { "node": ">= 10.x" } @@ -15646,6 +15814,15 @@ "node": ">=0.8" } }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/throttleit": { "version": "1.0.1", "license": "MIT", @@ -17695,6 +17872,8 @@ "commander": "^12.0.0", "glob": "^11.0.1", "pdf-to-img": "~4.4.0", + "pino": "^9.6.0", + "pino-pretty": "^13.0.0", "workerpool": "^9.2.0" }, "bin": { diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index 7f3018d0..a6ef1c56 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -34,6 +34,8 @@ "commander": "^12.0.0", "glob": "^11.0.1", "pdf-to-img": "~4.4.0", + "pino": "^9.6.0", + "pino-pretty": "^13.0.0", "workerpool": "^9.2.0" }, "devDependencies": { diff --git a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts index e241b084..50ac5934 100644 --- a/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts +++ b/visual-js/visual-snapshots/src/api/visual-snapshots-api.ts @@ -1,5 +1,7 @@ import { BuildStatus, DiffingMethod, VisualApi } from "@saucelabs/visual"; import { __dirname } from "../utils/helpers.js"; +import { Logger } from "pino"; +import { logger as defaultLogger } from "../logger.js"; export interface CreateVisualSnapshotsParams { branch?: string; @@ -19,6 +21,12 @@ export interface CreateBuildParams { readonly defaultBranch?: string; readonly project?: string; readonly customId?: string; + readonly logger?: Logger; +} + +export interface FinishBuildParams { + readonly buildId: string; + readonly logger?: Logger; } export interface UploadSnapshotParams { @@ -27,12 +35,15 @@ export interface UploadSnapshotParams { readonly snapshotName: string; readonly suiteName?: string; readonly testName?: string; + readonly logger?: Logger; } export class VisualSnapshotsApi { constructor(private readonly api: VisualApi) {} public async createBuild(params: CreateBuildParams): Promise { + const logger = params.logger ?? defaultLogger; + const build = await this.api.createBuild({ name: params.buildName, branch: params.branch, @@ -40,37 +51,64 @@ export class VisualSnapshotsApi { project: params.project, customId: params.customId, }); - console.info(`Build ${build.id} created: ${build.url}`); + + logger.info( + { + buildId: build.id, + url: build.url, + }, + `Build created.` + ); + return build.id; } - public async finishBuild(buildId: string) { + public async finishBuild(params: FinishBuildParams) { + const buildId = params.buildId; + const logger = params.logger ?? defaultLogger; + const { status: buildStatus } = await this.api.finishBuild({ uuid: buildId, }); if ([BuildStatus.Running, BuildStatus.Queued].includes(buildStatus)) { - console.info( - `Build ${buildId} finished but snapshots haven't been compared yet. Check the build status in a few moments.` + logger.info( + { + buildId, + buildStatus, + }, + `Build finished but snapshots haven't been compared yet. Check the build status in a few moments.` ); } else { const { unapprovedCount, errorCount } = (await this.api.buildStatus( buildId ))!; - console.info( - `Build ${buildId} finished (status=${buildStatus}, unapprovedCount=${unapprovedCount}, errorCount=${errorCount}).` + logger.info( + { + buildId, + buildStatus, + unapprovedCount, + errorCount, + }, + `Build finished.` ); } } public async uploadImageAndCreateSnapshot(params: UploadSnapshotParams) { + const logger = params.logger ?? defaultLogger; + const uploadId = await this.api.uploadSnapshot({ buildId: params.buildId, image: { data: params.snapshot }, }); - console.info( - `Uploaded image to build ${params.buildId}: upload id=${uploadId}.` + logger.info( + { + buildId: params.buildId, + uploadId, + }, + `Uploaded image to build.` ); await this.api.createSnapshot({ @@ -82,8 +120,15 @@ export class VisualSnapshotsApi { suiteName: params.suiteName, }); - console.info( - `Created a snapshot ${params.snapshotName} for build ${params.buildId}.` + logger.info( + { + buildId: params.buildId, + uploadId, + snapshotName: params.snapshotName, + testName: params.testName, + suiteName: params.suiteName, + }, + `Created a snapshot for build.` ); return uploadId; diff --git a/visual-js/visual-snapshots/src/app/pdf-handler.ts b/visual-js/visual-snapshots/src/app/pdf-handler.ts index 67a4002f..407bc225 100644 --- a/visual-js/visual-snapshots/src/app/pdf-handler.ts +++ b/visual-js/visual-snapshots/src/app/pdf-handler.ts @@ -37,7 +37,7 @@ export class PdfCommandHandler { }); } finally { if (!params.buildId) { - await this.visualSnapshotsApi.finishBuild(buildId); + await this.visualSnapshotsApi.finishBuild({ buildId }); } } } diff --git a/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts b/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts index f13794b7..a817367a 100644 --- a/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts +++ b/visual-js/visual-snapshots/src/app/worker/pdf-page-snapshot-uploader.ts @@ -2,6 +2,7 @@ import path from "path"; import { formatString } from "../../utils/format.js"; import { PdfFileLoader } from "../pdf-file-loader.js"; import { VisualSnapshotsApi } from "../../api/visual-snapshots-api.js"; +import { logger as defaultLogger } from "../../logger.js"; export class PdfPageSnapshotUploader { constructor( @@ -31,17 +32,22 @@ export class PdfPageSnapshotUploader { page: pageNumber, }); - const uploadId = await this.visualSnapshotsApi.uploadImageAndCreateSnapshot( - { - buildId, - snapshot: page, - snapshotName, - suiteName, - testName, - } - ); - - return uploadId; + const logger = defaultLogger.child({ + filePath: pdfFilePath, + pageNumber, + snapshotName, + suiteName, + testName, + }); + + return await this.visualSnapshotsApi.uploadImageAndCreateSnapshot({ + buildId, + snapshot: page, + snapshotName, + suiteName, + testName, + logger, + }); } private getSnapshotFormat(format: string | undefined) { diff --git a/visual-js/visual-snapshots/src/app/worker/worker.ts b/visual-js/visual-snapshots/src/app/worker/worker.ts index 78c45d6d..95ec60e1 100644 --- a/visual-js/visual-snapshots/src/app/worker/worker.ts +++ b/visual-js/visual-snapshots/src/app/worker/worker.ts @@ -4,6 +4,7 @@ import { usernameOption, accessKeyOption, regionOption, + loggerLevel, } from "../../commands/options.js"; import { initializeVisualApi } from "../../api/visual-client.js"; import { LibPdfFileLoader } from "../pdf-file-loader.js"; @@ -12,14 +13,21 @@ import { PdfPageSnapshotUploader } from "./pdf-page-snapshot-uploader.js"; import type { WorkerMethod } from "../../utils/pool.js"; import { clientVersion } from "../../version.js"; import { VisualSnapshotsApi } from "../../api/visual-snapshots-api.js"; +import pino from "pino"; +import { logger } from "../../logger.js"; program .addOption(usernameOption) .addOption(accessKeyOption) .addOption(regionOption) + .addOption(loggerLevel) .allowUnknownOption(true) .allowExcessArguments(true); +program.on("option:log", (level: pino.Level) => { + logger.level = level; +}); + program.parse(); const { user, key, region } = program.opts(); diff --git a/visual-js/visual-snapshots/src/commands/options.ts b/visual-js/visual-snapshots/src/commands/options.ts index db6d0986..84e13076 100644 --- a/visual-js/visual-snapshots/src/commands/options.ts +++ b/visual-js/visual-snapshots/src/commands/options.ts @@ -86,3 +86,8 @@ export const concurrencyOption = new Option( ) .default(cpus().length) .argParser(parseInteger); + +export const loggerLevel = new Option( + "--log ", + "Logging level to use." +).choices(["trace", "debug", "info", "warn", "error", "fatal", "silent"]); diff --git a/visual-js/visual-snapshots/src/commands/pdf.ts b/visual-js/visual-snapshots/src/commands/pdf.ts index 5c85506b..453e0d48 100644 --- a/visual-js/visual-snapshots/src/commands/pdf.ts +++ b/visual-js/visual-snapshots/src/commands/pdf.ts @@ -18,6 +18,7 @@ import { VisualSnapshotsApi } from "../api/visual-snapshots-api.js"; import { initializeVisualApi } from "../api/visual-client.js"; import { WorkerPoolPdfSnapshotUploader } from "../app/worker/worker-pool-pdf-snapshot-uploader.js"; import { LibPdfFileLoader } from "../app/pdf-file-loader.js"; +import { logger } from "../logger.js"; export const testNameOption = new Option( "--test-name ", @@ -68,10 +69,10 @@ export const pdfCommand = (clientVersion: string) => { new PdfCommandHandler(visualSnapshotsApi, pdfSnapshotUploader) .handle(globsOrDirs, params) .then(() => { - console.info("Successfully created PDF snapshots."); + logger.info("Successfully created PDF snapshots."); }) .catch((err) => { - console.error(`At least one PDF snapshot creation failed: ${err}.`); + logger.error(err, "At least one PDF snapshot creation failed."); }); }); }; diff --git a/visual-js/visual-snapshots/src/index.ts b/visual-js/visual-snapshots/src/index.ts index 2a998d48..686d4ccc 100644 --- a/visual-js/visual-snapshots/src/index.ts +++ b/visual-js/visual-snapshots/src/index.ts @@ -3,14 +3,22 @@ import { Command } from "commander"; import { pdfCommand } from "./commands/pdf.js"; import { clientVersion } from "./version.js"; +import { loggerLevel } from "./commands/options.js"; +import pino from "pino"; +import { logger } from "./logger.js"; const program = new Command(); program .name("visual-snapshots") .description("Create visual snapshots of a document.") - .version(clientVersion); + .version(clientVersion) + .addOption(loggerLevel); program.addCommand(pdfCommand(clientVersion)); +program.on("option:log", (level: pino.Level) => { + logger.level = level; +}); + program.parse(); diff --git a/visual-js/visual-snapshots/src/logger.ts b/visual-js/visual-snapshots/src/logger.ts new file mode 100644 index 00000000..b9817137 --- /dev/null +++ b/visual-js/visual-snapshots/src/logger.ts @@ -0,0 +1,7 @@ +import { pino } from "pino"; + +export const logger = pino({ + transport: { + target: "pino-pretty", + }, +}); diff --git a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap index 03a4b8d9..63f88dd1 100644 --- a/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap +++ b/visual-js/visual-snapshots/test/api/__snapshots__/visual-api.spec.ts.snap @@ -1,88 +1,66 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`VisualSnapshots createBuild log output 1`] = ` -[MockFunction] { - "calls": [ - [ - "Build foo created: undefined", - ], - ], - "results": [ - { - "type": "return", - "value": undefined, - }, - ], -} +[ + { + "buildId": "foo", + "level": 30, + "msg": "Build created.", + }, +] `; exports[`VisualSnapshots finishBuild log output when build status resolves to Equal 1`] = ` -[MockFunction] { - "calls": [ - [ - "Build buildId finished (status=EQUAL, unapprovedCount=2, errorCount=1).", - ], - ], - "results": [ - { - "type": "return", - "value": undefined, - }, - ], -} +[ + { + "buildId": "buildId", + "buildStatus": "EQUAL", + "errorCount": 1, + "level": 30, + "msg": "Build finished.", + "unapprovedCount": 2, + }, +] `; exports[`VisualSnapshots finishBuild log output when build status resolves to Queued 1`] = ` -[MockFunction] { - "calls": [ - [ - "Build buildId finished but snapshots haven't been compared yet. Check the build status in a few moments.", - ], - ], - "results": [ - { - "type": "return", - "value": undefined, - }, - ], -} +[ + { + "buildId": "buildId", + "buildStatus": "QUEUED", + "level": 30, + "msg": "Build finished but snapshots haven't been compared yet. Check the build status in a few moments.", + }, +] `; exports[`VisualSnapshots finishBuild log output when build status resolves to Running 1`] = ` -[MockFunction] { - "calls": [ - [ - "Build buildId finished but snapshots haven't been compared yet. Check the build status in a few moments.", - ], - ], - "results": [ - { - "type": "return", - "value": undefined, - }, - ], -} +[ + { + "buildId": "buildId", + "buildStatus": "RUNNING", + "level": 30, + "msg": "Build finished but snapshots haven't been compared yet. Check the build status in a few moments.", + }, +] `; exports[`VisualSnapshots uploadImageAndCreateSnapshot log output 1`] = ` -[MockFunction] { - "calls": [ - [ - "Uploaded image to build testBuildId: upload id=uploadId.", - ], - [ - "Created a snapshot testSnapshotName for build testBuildId.", - ], - ], - "results": [ - { - "type": "return", - "value": undefined, - }, - { - "type": "return", - "value": undefined, - }, - ], -} +[ + { + "buildId": "testBuildId", + "level": 30, + "msg": "Uploaded image to build.", + "uploadId": "uploadId", + }, + { + "buildId": "testBuildId", + "level": 30, + "msg": "Created a snapshot for build.", + "snapshotName": "testSnapshotName", + "suiteName": "testSuiteName", + "testName": "testTestName", + "uploadId": "uploadId", + }, +] `; diff --git a/visual-js/visual-snapshots/test/api/visual-api.spec.ts b/visual-js/visual-snapshots/test/api/visual-api.spec.ts index f59b740c..26bb4661 100644 --- a/visual-js/visual-snapshots/test/api/visual-api.spec.ts +++ b/visual-js/visual-snapshots/test/api/visual-api.spec.ts @@ -4,11 +4,10 @@ import { UploadSnapshotParams, VisualSnapshotsApi, } from "../../src/api/visual-snapshots-api.js"; +import { mockLogger } from "../helpers.js"; describe("VisualSnapshots", () => { - const consoleInfoSpy = jest - .spyOn(console, "info") - .mockImplementation(() => undefined); + const { logger, logged, reset: resetLogger } = mockLogger(); const createBuildMock = jest.fn< ReturnType, @@ -42,7 +41,7 @@ describe("VisualSnapshots", () => { createBuildMock.mockReset(); finishBuildMock.mockReset(); buildStatusMock.mockReset(); - consoleInfoSpy.mockReset(); + resetLogger(); }); describe("createBuild", () => { @@ -61,6 +60,7 @@ describe("VisualSnapshots", () => { defaultBranch: "testDefaultBranch", project: "testProject", customId: "testCustomId", + logger, }; await api.createBuild(params); @@ -83,7 +83,7 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - const actual = await api.createBuild({}); + const actual = await api.createBuild({ logger }); expect(actual).toEqual(buildId); }); @@ -97,9 +97,9 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.createBuild({}); + await api.createBuild({ logger }); - expect(consoleInfoSpy).toMatchSnapshot(); + expect(logged).toMatchSnapshot(); }); }); @@ -119,7 +119,7 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); expect(finishBuildMock).toHaveBeenCalledWith({ uuid: buildId, @@ -146,7 +146,7 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); expect(buildStatusMock).toHaveBeenCalledWith(buildId); }); @@ -166,7 +166,7 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); expect(buildStatusMock).not.toHaveBeenCalled(); }); @@ -185,7 +185,7 @@ describe("VisualSnapshots", () => { }); const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); expect(buildStatusMock).not.toHaveBeenCalled(); }); @@ -205,9 +205,9 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); - expect(consoleInfoSpy).toMatchSnapshot(); + expect(logged).toMatchSnapshot(); }); test("log output when build status resolves to Running", async () => { @@ -225,9 +225,9 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); - expect(consoleInfoSpy).toMatchSnapshot(); + expect(logged).toMatchSnapshot(); }); test("log output when build status resolves to Queued", async () => { @@ -245,9 +245,9 @@ describe("VisualSnapshots", () => { const api = new VisualSnapshotsApi(visualApi); - await api.finishBuild(buildId); + await api.finishBuild({ buildId, logger }); - expect(consoleInfoSpy).toMatchSnapshot(); + expect(logged).toMatchSnapshot(); }); }); @@ -264,6 +264,7 @@ describe("VisualSnapshots", () => { snapshotName: "testSnapshotName", suiteName: "testSuiteName", testName: "testTestName", + logger, }; await api.uploadImageAndCreateSnapshot(params); @@ -286,6 +287,7 @@ describe("VisualSnapshots", () => { snapshotName: "testSnapshotName", suiteName: "testSuiteName", testName: "testTestName", + logger, }; await api.uploadImageAndCreateSnapshot(params); @@ -312,6 +314,7 @@ describe("VisualSnapshots", () => { snapshotName: "testSnapshotName", suiteName: "testSuiteName", testName: "testTestName", + logger, }; const actual = await api.uploadImageAndCreateSnapshot(params); @@ -330,11 +333,12 @@ describe("VisualSnapshots", () => { snapshotName: "testSnapshotName", suiteName: "testSuiteName", testName: "testTestName", + logger, }; await api.uploadImageAndCreateSnapshot(params); - expect(consoleInfoSpy).toMatchSnapshot(); + expect(logged).toMatchSnapshot(); }); }); }); diff --git a/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts b/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts index addc650f..d774fd8e 100644 --- a/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts +++ b/visual-js/visual-snapshots/test/api/worker/pdf-page-snapshot-uploader.spec.ts @@ -73,13 +73,15 @@ describe("PdfPageSnapshotUploader", () => { "snapshotName-{filename}-{page}" ); - expect(uploadImageAndCreateSnapshot).toHaveBeenCalledWith({ - buildId: "build-id", - snapshot: await files[0].getPage(1), - snapshotName: `snapshotName-${files[0].path}-1`, - testName: `testName-${files[0].path}`, - suiteName: "suiteName", - }); + expect(uploadImageAndCreateSnapshot).toHaveBeenCalledWith( + expect.objectContaining({ + buildId: "build-id", + snapshot: await files[0].getPage(1), + snapshotName: `snapshotName-${files[0].path}-1`, + testName: `testName-${files[0].path}`, + suiteName: "suiteName", + }) + ); }); }); }); diff --git a/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts b/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts index 51ae9a96..be0738d9 100644 --- a/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts +++ b/visual-js/visual-snapshots/test/app/pdf-handler.spec.ts @@ -146,7 +146,7 @@ describe("pdf-handler", () => { params ); - expect(finishBuildMock).toHaveBeenCalledWith(buildId); + expect(finishBuildMock).toHaveBeenCalledWith({ buildId }); }); it("should not finish build when buildId is passed", async () => { diff --git a/visual-js/visual-snapshots/test/helpers.ts b/visual-js/visual-snapshots/test/helpers.ts index 99860f7f..7a1569d8 100644 --- a/visual-js/visual-snapshots/test/helpers.ts +++ b/visual-js/visual-snapshots/test/helpers.ts @@ -1,5 +1,7 @@ import { dirname } from "node:path"; +import { Writable } from "node:stream"; import { fileURLToPath } from "node:url"; +import { pino } from "pino"; /** * ESM helper for getting __filename. Pass `import.meta` to this function. @@ -14,3 +16,25 @@ export const __filename = (meta: ImportMeta) => fileURLToPath(meta.url); * @returns __dirname equivalent */ export const __dirname = (meta: ImportMeta) => dirname(__filename(meta)); + +export function mockLogger() { + const logged: object[] = []; + + const stream = new Writable({ + write(chunk, _encoding, callback) { + const message = JSON.parse(chunk.toString("utf-8")); + delete message.time; + delete message.pid; + delete message.hostname; + logged.push(message); + callback(); + }, + }); + + function reset() { + logged.length = 0; + } + + const logger = pino(stream); + return { logger, logged, reset }; +} From 6e6fc0f7267f6bf1bd182bcb464b8b72247a3c32 Mon Sep 17 00:00:00 2001 From: Logan Graham Date: Wed, 26 Mar 2025 10:49:10 -0400 Subject: [PATCH 14/15] docs(changeset): initial release for visual-snapshots --- visual-js/.changeset/forty-fans-tickle.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 visual-js/.changeset/forty-fans-tickle.md diff --git a/visual-js/.changeset/forty-fans-tickle.md b/visual-js/.changeset/forty-fans-tickle.md new file mode 100644 index 00000000..52a87288 --- /dev/null +++ b/visual-js/.changeset/forty-fans-tickle.md @@ -0,0 +1,5 @@ +--- +"@saucelabs/visual-snapshots": minor +--- + +initial release for visual-snapshots From 3185e9407d7f280b88bbb5410d7ee4cab26cc8a7 Mon Sep 17 00:00:00 2001 From: Logan Graham Date: Wed, 26 Mar 2025 10:49:21 -0400 Subject: [PATCH 15/15] reduce package version for initial release --- visual-js/visual-snapshots/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/visual-js/visual-snapshots/package.json b/visual-js/visual-snapshots/package.json index a6ef1c56..2c5b587c 100644 --- a/visual-js/visual-snapshots/package.json +++ b/visual-js/visual-snapshots/package.json @@ -1,7 +1,7 @@ { "name": "@saucelabs/visual-snapshots", "description": "CLI which generates Visual snapshots from a data source such as pdf", - "version": "0.1.0", + "version": "0.0.0", "main": "./lib/index.js", "license": "MIT", "bin": "./lib/index.js",