diff --git a/e2e-tests/cypress/cypress.config.ts b/e2e-tests/cypress/cypress.config.ts index 550efdcc7c7..fccf067b19f 100644 --- a/e2e-tests/cypress/cypress.config.ts +++ b/e2e-tests/cypress/cypress.config.ts @@ -1,6 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import * as path from 'path'; + import {defineConfig} from 'cypress'; export default defineConfig({ @@ -23,7 +25,8 @@ export default defineConfig({ videoCompression: true, videosFolder: 'tests/videos', viewportWidth: 1300, - env: { + allowCypressEnv: false, + expose: { adminEmail: 'sysadmin@sample.mattermost.com', adminUsername: 'sysadmin', adminPassword: 'Sys@dmin-sample1', @@ -59,6 +62,60 @@ export default defineConfig({ }, e2e: { setupNodeEvents(on, config) { + // Custom webpack preprocessor for TypeScript 6 + @/ path aliases. + // @cypress/webpack-preprocessor@7.1.0 already handles TS6's + // downlevelIteration deprecation (cypress-io/cypress#33575). + // We add: ts-loader for .ts files, resolve extensions, and @/ alias. + // When Cypress >= 15.14 ships, the only custom piece needed is the @/ alias. + const webpackPreprocessor = require('@cypress/webpack-preprocessor'); + + const webpackOptions = { + resolve: { + extensions: ['.ts', '.js', '.json'], + alias: { + '@': path.resolve(__dirname, 'tests'), + }, + }, + module: { + rules: [ + { + test: /\.tsx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true, + }, + }, + ], + }, + { + test: /\.jsx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'], + }, + }, + ], + }, + ], + }, + // Restore Node.js polyfills (crypto, process, path, etc.) + // that webpack 5 no longer provides by default. + plugins: [ + new (require('node-polyfill-webpack-plugin'))(), + new (require('webpack').ProvidePlugin)({ + process: 'process/browser', + Buffer: ['buffer', 'Buffer'], + }), + ], + }; + + on('file:preprocessor', webpackPreprocessor({webpackOptions})); return require('./tests/plugins/index.js')(on, config); }, baseUrl: process.env.MM_SERVICESETTINGS_SITEURL || 'http://localhost:8065', diff --git a/e2e-tests/cypress/package-lock.json b/e2e-tests/cypress/package-lock.json index 6eccf209ce4..c90726d3326 100644 --- a/e2e-tests/cypress/package-lock.json +++ b/e2e-tests/cypress/package-lock.json @@ -6,14 +6,15 @@ "": { "name": "cypress", "devDependencies": { - "@aws-sdk/client-s3": "3.1001.0", - "@aws-sdk/lib-storage": "3.1001.0", + "@aws-sdk/client-s3": "3.1030.0", + "@aws-sdk/lib-storage": "3.1030.0", "@babel/eslint-parser": "7.28.6", "@babel/eslint-plugin": "7.27.1", "@cypress/request": "3.0.10", + "@cypress/webpack-preprocessor": "7.1.0", "@eslint/js": "9.39.3", - "@mattermost/client": "11.3.0", - "@mattermost/types": "11.3.0", + "@mattermost/client": "11.5.0", + "@mattermost/types": "11.5.0", "@testing-library/cypress": "10.1.0", "@types/async": "3.2.25", "@types/authenticator": "1.1.4", @@ -27,27 +28,27 @@ "@types/mochawesome": "6.2.5", "@types/recursive-readdir": "2.2.4", "@types/shelljs": "0.10.0", - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", + "@typescript-eslint/eslint-plugin": "8.58.2", + "@typescript-eslint/parser": "8.58.2", "async": "3.2.6", "authenticator": "1.1.5", - "axios": "1.13.6", + "axios": "1.15.0", "chai": "6.2.2", "chalk": "5.6.2", "client-oauth2": "github:larkox/js-client-oauth2#e24e2eb5dfcbbbb3a59d095e831dbe0012b0ac49", "cross-env": "10.1.0", - "cypress": "15.11.0", + "cypress": "15.13.1", "cypress-file-upload": "5.0.8", "cypress-multi-reporters": "2.0.5", - "cypress-plugin-tab": "1.0.5", + "cypress-plugin-tab": "2.0.0", "cypress-real-events": "1.15.0", "cypress-wait-until": "3.0.2", - "dayjs": "1.11.19", + "dayjs": "1.11.20", "deepmerge": "4.3.1", - "dotenv": "17.3.1", + "dotenv": "17.4.2", "eslint": "9.39.3", - "eslint-import-resolver-webpack": "0.13.10", - "eslint-plugin-cypress": "6.1.0", + "eslint-import-resolver-webpack": "0.13.11", + "eslint-plugin-cypress": "6.3.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", "eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#5b0c972eacf19286e4c66221b39113bf8728a99e", @@ -55,9 +56,9 @@ "eslint-plugin-react": "7.37.5", "express": "5.2.1", "extract-zip": "2.0.1", - "globals": "17.4.0", + "globals": "17.5.0", "jiti": "2.6.1", - "knex": "3.1.0", + "knex": "3.2.9", "localforage": "1.10.0", "lodash.intersection": "4.4.0", "lodash.mapkeys": "4.6.0", @@ -71,34 +72,20 @@ "mochawesome": "7.1.4", "mochawesome-merge": "5.1.1", "mochawesome-report-generator": "6.3.2", - "moment-timezone": "0.6.0", - "path": "0.12.7", + "moment-timezone": "0.6.1", + "node-polyfill-webpack-plugin": "4.1.0", "pdf-parse": "2.4.5", - "pg": "8.19.0", + "pg": "8.20.0", "recursive-readdir": "2.2.3", "shelljs": "0.10.0", "timezones.json": "1.7.2", - "typescript": "5.9.3", - "typescript-eslint": "8.56.1", + "ts-loader": "9.5.7", + "typescript": "6.0.2", + "typescript-eslint": "8.58.2", "uuid": "13.0.0", "yargs": "18.0.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -318,66 +305,66 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1001.0.tgz", - "integrity": "sha512-uKgFjQuBjMcd0iigLQwnqIp9gOy/5TGBxa42rcb6l5byDt1mrwOe6fyWTEUEJaNHG2LKYSPUibteGvM1zfm0Rw==", + "version": "3.1030.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1030.0.tgz", + "integrity": "sha512-sgGb4ub0JXnHaXnok5td7A1KGwENFPwOrwgzvpkeWq9w16Sl7x2KhYtVl+Fdd/7LAvaEtm3HqrYtNmm2d0OXmQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.6", - "@aws-sdk/middleware-expect-continue": "^3.972.6", - "@aws-sdk/middleware-flexible-checksums": "^3.973.2", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-location-constraint": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-sdk-s3": "^3.972.16", - "@aws-sdk/middleware-ssec": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/signature-v4-multi-region": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/eventstream-serde-browser": "^4.2.10", - "@smithy/eventstream-serde-config-resolver": "^4.3.10", - "@smithy/eventstream-serde-node": "^4.2.10", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-blob-browser": "^4.2.11", - "@smithy/hash-node": "^4.2.10", - "@smithy/hash-stream-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/md5-js": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/credential-provider-node": "^3.972.30", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.9", + "@aws-sdk/middleware-expect-continue": "^3.972.9", + "@aws-sdk/middleware-flexible-checksums": "^3.974.7", + "@aws-sdk/middleware-host-header": "^3.972.9", + "@aws-sdk/middleware-location-constraint": "^3.972.9", + "@aws-sdk/middleware-logger": "^3.972.9", + "@aws-sdk/middleware-recursion-detection": "^3.972.10", + "@aws-sdk/middleware-sdk-s3": "^3.972.28", + "@aws-sdk/middleware-ssec": "^3.972.9", + "@aws-sdk/middleware-user-agent": "^3.972.29", + "@aws-sdk/region-config-resolver": "^3.972.11", + "@aws-sdk/signature-v4-multi-region": "^3.996.16", + "@aws-sdk/types": "^3.973.7", + "@aws-sdk/util-endpoints": "^3.996.6", + "@aws-sdk/util-user-agent-browser": "^3.972.9", + "@aws-sdk/util-user-agent-node": "^3.973.15", + "@smithy/config-resolver": "^4.4.14", + "@smithy/core": "^3.23.14", + "@smithy/eventstream-serde-browser": "^4.2.13", + "@smithy/eventstream-serde-config-resolver": "^4.3.13", + "@smithy/eventstream-serde-node": "^4.2.13", + "@smithy/fetch-http-handler": "^5.3.16", + "@smithy/hash-blob-browser": "^4.2.14", + "@smithy/hash-node": "^4.2.13", + "@smithy/hash-stream-node": "^4.2.13", + "@smithy/invalid-dependency": "^4.2.13", + "@smithy/md5-js": "^4.2.13", + "@smithy/middleware-content-length": "^4.2.13", + "@smithy/middleware-endpoint": "^4.4.29", + "@smithy/middleware-retry": "^4.5.0", + "@smithy/middleware-serde": "^4.2.17", + "@smithy/middleware-stack": "^4.2.13", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/node-http-handler": "^4.5.2", + "@smithy/protocol-http": "^5.3.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.45", + "@smithy/util-defaults-mode-node": "^4.2.49", + "@smithy/util-endpoints": "^3.3.4", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-retry": "^4.3.0", + "@smithy/util-stream": "^4.5.22", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.15", "tslib": "^2.6.2" }, "engines": { @@ -385,24 +372,24 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.973.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.16.tgz", - "integrity": "sha512-Nasoyb5K4jfvncTKQyA13q55xHoz9as01NVYP05B0Kzux/X5UhMn3qXsZDyWOSXkfSCAIrMBKmVVWbI0vUapdQ==", + "version": "3.973.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.27.tgz", + "integrity": "sha512-CUZ5m8hwMCH6OYI4Li/WgMfIEx10Q2PLI9Y3XOUTPGZJ53aZ0007jCv+X/ywsaERyKPdw5MRZWk877roQksQ4A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/xml-builder": "^3.972.9", - "@smithy/core": "^3.23.7", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/types": "^3.973.7", + "@aws-sdk/xml-builder": "^3.972.17", + "@smithy/core": "^3.23.14", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/signature-v4": "^5.3.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -410,13 +397,13 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.3.tgz", - "integrity": "sha512-UExeK+EFiq5LAcbHm96CQLSia+5pvpUVSAsVApscBzayb7/6dJBJKwV4/onsk4VbWSmqxDMcfuTD+pC4RxgZHg==", + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.6.tgz", + "integrity": "sha512-NMbiqKdruhwwgI6nzBVe2jWMkXjaoQz2YOs3rFX+2F3gGyrJDkDPwMpV/RsTFeq2vAQ055wZNtOXFK4NYSkM8g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -424,16 +411,16 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.14.tgz", - "integrity": "sha512-PvnBY9rwBuLh9MEsAng28DG+WKl+txerKgf4BU9IPAqYI7FBIo1x6q/utLf4KLyQYgSy1TLQnbQuXx5xfBGASg==", + "version": "3.972.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.25.tgz", + "integrity": "sha512-6QfI0wv4jpG5CrdO/AO0JfZ2ux+tKwJPrUwmvxXF50vI5KIypKVGNF6b4vlkYEnKumDTI1NX2zUBi8JoU5QU3A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/types": "^3.973.7", + "@smithy/property-provider": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -441,21 +428,21 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.16.tgz", - "integrity": "sha512-m/QAcvw5OahqGPjeAnKtgfWgjLxeWOYj7JSmxKK6PLyKp2S/t2TAHI6EELEzXnIz28RMgbQLukJkVAqPASVAGQ==", + "version": "3.972.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.27.tgz", + "integrity": "sha512-3V3Usj9Gs93h865DqN4M2NWJhC5kXU9BvZskfN3+69omuYlE3TZxOEcVQtBGLOloJB7BVfJKXVLqeNhOzHqSlQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-stream": "^4.5.16", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/types": "^3.973.7", + "@smithy/fetch-http-handler": "^5.3.16", + "@smithy/node-http-handler": "^4.5.2", + "@smithy/property-provider": "^4.2.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/util-stream": "^4.5.22", "tslib": "^2.6.2" }, "engines": { @@ -463,25 +450,25 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.14.tgz", - "integrity": "sha512-EGA7ufqNpZKZcD0RwM6gRDEQgwAf19wQ99R1ptdWYDJAnpcMcWiFyT0RIrgiZFLD28CwJmYjnra75hChnEveWA==", + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.29.tgz", + "integrity": "sha512-SiBuAnXecCbT/OpAf3vqyI/AVE3mTaYr9ShXLybxZiPLBiPCCOIWSGAtYYGQWMRvobBTiqOewaB+wcgMMZI2Aw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-env": "^3.972.14", - "@aws-sdk/credential-provider-http": "^3.972.16", - "@aws-sdk/credential-provider-login": "^3.972.14", - "@aws-sdk/credential-provider-process": "^3.972.14", - "@aws-sdk/credential-provider-sso": "^3.972.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.14", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/credential-provider-env": "^3.972.25", + "@aws-sdk/credential-provider-http": "^3.972.27", + "@aws-sdk/credential-provider-login": "^3.972.29", + "@aws-sdk/credential-provider-process": "^3.972.25", + "@aws-sdk/credential-provider-sso": "^3.972.29", + "@aws-sdk/credential-provider-web-identity": "^3.972.29", + "@aws-sdk/nested-clients": "^3.996.19", + "@aws-sdk/types": "^3.973.7", + "@smithy/credential-provider-imds": "^4.2.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -489,19 +476,19 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.14.tgz", - "integrity": "sha512-P2kujQHAoV7irCTv6EGyReKFofkHCjIK+F0ZYf5UxeLeecrCwtrDkHoO2Vjsv/eRUumaKblD8czuk3CLlzwGDw==", + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.29.tgz", + "integrity": "sha512-OGOslTbOlxXexKMqhxCEbBQbUIfuhGxU5UXw3Fm56ypXHvrXH4aTt/xb5Y884LOoteP1QST1lVZzHfcTnWhiPQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/nested-clients": "^3.996.19", + "@aws-sdk/types": "^3.973.7", + "@smithy/property-provider": "^4.2.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -509,23 +496,23 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.15.tgz", - "integrity": "sha512-59NBJgTcQ2FC94T+SWkN5UQgViFtrLnkswSKhG5xbjPAotOXnkEF2Bf0bfUV1F3VaXzqAPZJoZ3bpg4rr8XD5Q==", + "version": "3.972.30", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.30.tgz", + "integrity": "sha512-FMnAnWxc8PG+ZrZ2OBKzY4luCUJhe9CG0B9YwYr4pzrYGLXBS2rl+UoUvjGbAwiptxRL6hyA3lFn03Bv1TLqTw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.14", - "@aws-sdk/credential-provider-http": "^3.972.16", - "@aws-sdk/credential-provider-ini": "^3.972.14", - "@aws-sdk/credential-provider-process": "^3.972.14", - "@aws-sdk/credential-provider-sso": "^3.972.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.14", - "@aws-sdk/types": "^3.973.4", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/credential-provider-env": "^3.972.25", + "@aws-sdk/credential-provider-http": "^3.972.27", + "@aws-sdk/credential-provider-ini": "^3.972.29", + "@aws-sdk/credential-provider-process": "^3.972.25", + "@aws-sdk/credential-provider-sso": "^3.972.29", + "@aws-sdk/credential-provider-web-identity": "^3.972.29", + "@aws-sdk/types": "^3.973.7", + "@smithy/credential-provider-imds": "^4.2.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -533,17 +520,17 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.14.tgz", - "integrity": "sha512-KAF5LBkJInUPaR9dJDw8LqmbPDRTLyXyRoWVGcJQ+DcN9rxVKBRzAK+O4dTIvQtQ7xaIDZ2kY7zUmDlz6CCXdw==", + "version": "3.972.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.25.tgz", + "integrity": "sha512-HR7ynNRdNhNsdVCOCegy1HsfsRzozCOPtD3RzzT1JouuaHobWyRfJzCBue/3jP7gECHt+kQyZUvwg/cYLWurNQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/types": "^3.973.7", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -551,19 +538,19 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.14.tgz", - "integrity": "sha512-LQzIYrNABnZzkyuIguFa3VVOox9UxPpRW6PL+QYtRHaGl1Ux/+Zi54tAVK31VdeBKPKU3cxqeu8dbOgNqy+naw==", + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.29.tgz", + "integrity": "sha512-HWv4SEq3jZDYPlwryZVef97+U8CxxRos5mK8sgGO1dQaFZpV5giZLzqGE5hkDmh2csYcBO2uf5XHjPTpZcJlig==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/token-providers": "3.1001.0", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/nested-clients": "^3.996.19", + "@aws-sdk/token-providers": "3.1026.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -571,18 +558,18 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.14.tgz", - "integrity": "sha512-rOwB3vXHHHnGvAOjTgQETxVAsWjgF61XlbGd/ulvYo7EpdXs8cbIHE3PGih9tTj/65ZOegSqZGFqLaKntaI9Kw==", + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.29.tgz", + "integrity": "sha512-PdMBza1WEKEUPFEmMGCfnU2RYCz9MskU2e8JxjyUOsMKku7j9YaDKvbDi2dzC0ihFoM6ods2SbhfAAro+Gwlew==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/nested-clients": "^3.996.19", + "@aws-sdk/types": "^3.973.7", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -590,15 +577,16 @@ } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1001.0.tgz", - "integrity": "sha512-h1EO4CKayPb7KqdC8M8aSr/7g8LueCN048WvasFMKxH5wuN5UBa+slE1OHfi/tR+fHILa6K7YUJ6L0Ibg3OdBA==", + "version": "3.1030.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1030.0.tgz", + "integrity": "sha512-1Hn+m1sioy3OMvF/I1uDz9QjpqcE3QSsHvz0Y0UXyMthNCpvAEvN4qO9RWBDGfVqddY1Flsp0rfvjwYP4KVr+w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/smithy-client": "^4.12.1", + "@smithy/middleware-endpoint": "^4.4.29", + "@smithy/protocol-http": "^5.3.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", @@ -608,22 +596,22 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.1001.0" + "@aws-sdk/client-s3": "^3.1030.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.6.tgz", - "integrity": "sha512-3H2bhvb7Cb/S6WFsBy/Dy9q2aegC9JmGH1inO8Lb2sWirSqpLJlZmvQHPE29h2tIxzv6el/14X/tLCQ8BQU6ZQ==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.9.tgz", + "integrity": "sha512-COToYKgquDyligbcAep7ygs48RK+mwe/IYprq4+TSrVFzNOYmzWvHf6werpnKV5VYpRiwdn+Wa5ZXkPqLVwcTg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-arn-parser": "^3.972.2", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", + "@aws-sdk/types": "^3.973.7", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -631,15 +619,15 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.6.tgz", - "integrity": "sha512-QMdffpU+GkSGC+bz6WdqlclqIeCsOfgX8JFZ5xvwDtX+UTj4mIXm3uXu7Ko6dBseRcJz1FA6T9OmlAAY6JgJUg==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.9.tgz", + "integrity": "sha512-V/FNCjFxnh4VGu+HdSiW4Yg5GELihA1MIDSAdsEPvuayXBVmr0Jaa6jdLAZLH38KYXl/vVjri9DQJWnTAujHEA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -647,25 +635,25 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.973.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.973.2.tgz", - "integrity": "sha512-KM6QujWdasNjRLG+f7YEqEY5D36vR6Govm7nPIwxjILpb5rJ0pPJZpYY1nrzgtlxwJIYAznfBK5YXoLOHKHyfQ==", + "version": "3.974.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.7.tgz", + "integrity": "sha512-uU4/ch2CLHB8Phu1oTKnnQ4e8Ujqi49zEnQYBhWYT53zfFvtJCdGsaOoypBr8Fm/pmCBssRmGoIQ4sixgdLP9w==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/crc64-nvme": "^3.972.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/crc64-nvme": "^3.972.6", + "@aws-sdk/types": "^3.973.7", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-stream": "^4.5.22", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -673,15 +661,15 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.6.tgz", - "integrity": "sha512-5XHwjPH1lHB+1q4bfC7T8Z5zZrZXfaLcjSMwTd1HPSPrCmPFMbg3UQ5vgNWcVj0xoX4HWqTGkSf2byrjlnRg5w==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.9.tgz", + "integrity": "sha512-je5vRdNw4SkuTnmRbFZLdye4sQ0faLt8kwka5wnnSU30q1mHO4X+idGEJOOE+Tn1ME7Oryn05xxkDvIb3UaLaQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -689,14 +677,14 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.6.tgz", - "integrity": "sha512-XdZ2TLwyj3Am6kvUc67vquQvs6+D8npXvXgyEUJAdkUDx5oMFJKOqpK+UpJhVDsEL068WAJl2NEGzbSik7dGJQ==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.9.tgz", + "integrity": "sha512-TyfOi2XNdOZpNKeTJwRUsVAGa+14nkyMb2VVGG+eDgcWG/ed6+NUo72N3hT6QJioxym80NSinErD+LBRF0Ir1w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -704,14 +692,14 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.6.tgz", - "integrity": "sha512-iFnaMFMQdljAPrvsCVKYltPt2j40LQqukAbXvW7v0aL5I+1GO7bZ/W8m12WxW3gwyK5p5u1WlHg8TSAizC5cZw==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.9.tgz", + "integrity": "sha512-HsVgDrruhqI28RkaXALm8grJ7Agc1wF6Et0xh6pom8NdO2VdO/SD9U/tPwUjewwK/pVoka+EShBxyCvgsPCtog==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -719,16 +707,16 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.6.tgz", - "integrity": "sha512-dY4v3of5EEMvik6+UDwQ96KfUFDk8m1oZDdkSc5lwi4o7rFrjnv0A+yTV+gu230iybQZnKgDLg/rt2P3H+Vscw==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.10.tgz", + "integrity": "sha512-RVQQbq5orQ/GHUnXvqEOj2HHPBJm+mM+ySwZKS5UaLBwra5ugRtiH09PLUoOZRl7a1YzaOzXSuGbn9iD5j60WQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", + "@aws-sdk/types": "^3.973.7", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -736,25 +724,25 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.16.tgz", - "integrity": "sha512-U4K1rqyJYvT/zgTI3+rN+MToa51dFnnq1VSsVJuJWPNEKcEnuZVqf7yTpkJJMkYixVW5TTi1dgupd+nmJ0JyWw==", + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.28.tgz", + "integrity": "sha512-qJHcJQH9UNPUrnPlRtCozKjtqAaypQ5IgQxTNoPsVYIQeuwNIA8Rwt3NvGij1vCDYDfCmZaPLpnJEHlZXeFqmg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-arn-parser": "^3.972.2", - "@smithy/core": "^3.23.7", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/types": "^3.973.7", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.14", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/signature-v4": "^5.3.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-stream": "^4.5.22", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -762,14 +750,14 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.6.tgz", - "integrity": "sha512-acvMUX9jF4I2Ew+Z/EA6gfaFaz9ehci5wxBmXCZeulLuv8m+iGf6pY9uKz8TPjg39bdAz3hxoE0eLP8Qz+IYlA==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.9.tgz", + "integrity": "sha512-wSA2BR7L0CyBNDJeSrleIIzC+DzL93YNTdfU0KPGLiocK6YsRv1nPAzPF+BFSdcs0Qa5ku5Kcf4KvQcWwKGenQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -777,18 +765,19 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.16.tgz", - "integrity": "sha512-AmVxtxn8ZkNJbuPu3KKfW9IkJgTgcEtgSwbo0NVcAb31iGvLgHXj2nbbyrUDfh2fx8otXmqL+qw1lRaTi+V3vA==", + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.29.tgz", + "integrity": "sha512-f/sIRzuTfEjg6NsbMYvye2VsmnQoNgntntleQyx5uGacUYzszbfIlO3GcI6G6daWUmTm0IDZc11qMHWwF0o0mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@smithy/core": "^3.23.7", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/types": "^3.973.7", + "@aws-sdk/util-endpoints": "^3.996.6", + "@smithy/core": "^3.23.14", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-retry": "^4.3.0", "tslib": "^2.6.2" }, "engines": { @@ -796,49 +785,49 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.996.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.4.tgz", - "integrity": "sha512-NowB1HfOnWC4kwZOnTg8E8rSL0U+RSjSa++UtEV4ipoH6JOjMLnHyGilqwl+Pe1f0Al6v9yMkSJ/8Ot0f578CQ==", + "version": "3.996.19", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.19.tgz", + "integrity": "sha512-uFkmCDXvmQYLanlYdOFS0+MQWkrj9wPMt/ZCc/0J0fjPim6F5jBVBmEomvGY/j77ILW6GTPwN22Jc174Mhkw6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/middleware-host-header": "^3.972.9", + "@aws-sdk/middleware-logger": "^3.972.9", + "@aws-sdk/middleware-recursion-detection": "^3.972.10", + "@aws-sdk/middleware-user-agent": "^3.972.29", + "@aws-sdk/region-config-resolver": "^3.972.11", + "@aws-sdk/types": "^3.973.7", + "@aws-sdk/util-endpoints": "^3.996.6", + "@aws-sdk/util-user-agent-browser": "^3.972.9", + "@aws-sdk/util-user-agent-node": "^3.973.15", + "@smithy/config-resolver": "^4.4.14", + "@smithy/core": "^3.23.14", + "@smithy/fetch-http-handler": "^5.3.16", + "@smithy/hash-node": "^4.2.13", + "@smithy/invalid-dependency": "^4.2.13", + "@smithy/middleware-content-length": "^4.2.13", + "@smithy/middleware-endpoint": "^4.4.29", + "@smithy/middleware-retry": "^4.5.0", + "@smithy/middleware-serde": "^4.2.17", + "@smithy/middleware-stack": "^4.2.13", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/node-http-handler": "^4.5.2", + "@smithy/protocol-http": "^5.3.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.45", + "@smithy/util-defaults-mode-node": "^4.2.49", + "@smithy/util-endpoints": "^3.3.4", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-retry": "^4.3.0", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -846,16 +835,16 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.6.tgz", - "integrity": "sha512-Aa5PusHLXAqLTX1UKDvI3pHQJtIsF7Q+3turCHqfz/1F61/zDMWfbTC8evjhrrYVAtz9Vsv3SJ/waSUeu7B6gw==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.11.tgz", + "integrity": "sha512-6Q8B1dcx6BBqUTY1Mc/eROKA0FImEEY5VPSd6AGPEUf0ErjExz4snVqa9kNJSoVDV1rKaNf3qrWojgcKW+SdDg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/config-resolver": "^4.4.9", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/config-resolver": "^4.4.14", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -863,17 +852,17 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.4.tgz", - "integrity": "sha512-MGa8ro0onekYIiesHX60LwKdkxK3Kd61p7TTbLwZemBqlnD9OLrk9sXZdFOIxXanJ+3AaJnV/jiX866eD/4PDg==", + "version": "3.996.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.16.tgz", + "integrity": "sha512-EMdXYB4r/k5RWq86fugjRhid5JA+Z6MpS7n4sij4u5/C+STrkvuf9aFu41rJA9MjUzxCLzv8U2XL8cH2GSRYpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/middleware-sdk-s3": "^3.972.28", + "@aws-sdk/types": "^3.973.7", + "@smithy/protocol-http": "^5.3.13", + "@smithy/signature-v4": "^5.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -881,18 +870,18 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1001.0.tgz", - "integrity": "sha512-09XAq/uIYgeZhohuGRrR/R+ek3+ljFNdzWCXdqb9rlIERDjSfNiLjTtpHgSK1xTPmC5G4yWoEAyMfTXiggS6wA==", + "version": "3.1026.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1026.0.tgz", + "integrity": "sha512-Ieq/HiRrbEtrYP387Nes0XlR7H1pJiJOZKv+QyQzMYpvTiDs0VKy2ZB3E2Zf+aFovWmeE7lRE4lXyF7dYM6GgA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.973.27", + "@aws-sdk/nested-clients": "^3.996.19", + "@aws-sdk/types": "^3.973.7", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -900,13 +889,13 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.4.tgz", - "integrity": "sha512-RW60aH26Bsc016Y9B98hC0Plx6fK5P2v/iQYwMzrSjiDh1qRMUCP6KrXHYEHe3uFvKiOC93Z9zk4BJsUi6Tj1Q==", + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.7.tgz", + "integrity": "sha512-reXRwoJ6CfChoqAsBszUYajAF8Z2LRE+CRcKocvFSMpIiLOtYU3aJ9trmn6VVPAzbbY5LXF+FfmUslbXk1SYFg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -914,9 +903,9 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz", - "integrity": "sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==", + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -927,16 +916,16 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.3.tgz", - "integrity": "sha512-yWIQSNiCjykLL+ezN5A+DfBb1gfXTytBxm57e64lYmwxDHNmInYHRJYYRAGWG1o77vKEiWaw4ui28e3yb1k5aQ==", + "version": "3.996.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.6.tgz", + "integrity": "sha512-2nUQ+2ih7CShuKHpGSIYvvAIOHy52dOZguYG36zptBukhw6iFwcvGfG0tes0oZFWQqEWvgZe9HLWaNlvXGdOrg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-endpoints": "^3.3.1", + "@aws-sdk/types": "^3.973.7", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-endpoints": "^3.3.4", "tslib": "^2.6.2" }, "engines": { @@ -944,42 +933,43 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", - "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.6.tgz", - "integrity": "sha512-Fwr/llD6GOrFgQnKaI2glhohdGuBDfHfora6iG9qsBBBR8xv1SdCSwbtf5CWlUdCw5X7g76G/9Hf0Inh0EmoxA==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.9.tgz", + "integrity": "sha512-sn/LMzTbGjYqCCF24390WxPd6hkpoSptiUn5DzVp4cD71yqw+yGEGm1YCxyEoPXyc8qciM8UzLJcZBFslxo5Uw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.7", + "@smithy/types": "^4.14.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.1.tgz", - "integrity": "sha512-kmgbDqT7aCBEVrqESM2JUjbf0zhDUQ7wnt3q1RuVS+3mglrcfVb2bwkbmf38npOyyPGtQPV5dWN3m+sSFAVAgQ==", + "version": "3.973.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.15.tgz", + "integrity": "sha512-fYn3s9PtKdgQkczGZCFMgkNEe8aq1JCVbnRqjqN9RSVW43xn2RV9xdcZ3z01a48Jpkuh/xCmBKJxdLOo4Ozg7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/middleware-user-agent": "^3.972.29", + "@aws-sdk/types": "^3.973.7", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -995,14 +985,14 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.9.tgz", - "integrity": "sha512-ItnlMgSqkPrUfJs7EsvU/01zw5UeIb2tNPhD09LBLHbg+g+HDiKibSLwpkuz/ZIlz4F2IMn+5XgE4AK/pfPuog==", + "version": "3.972.17", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.17.tgz", + "integrity": "sha512-Ra7hjqAZf1OXRRMueB13qex7mFJRDK/pgCvdSFemXBT8KCGnQDPoKzHY1SjN+TjJVmnpSF14W5tJ1vDamFu+Gg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "fast-xml-parser": "5.4.1", + "@smithy/types": "^4.14.0", + "fast-xml-parser": "5.5.8", "tslib": "^2.6.2" }, "engines": { @@ -1010,9 +1000,9 @@ } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", - "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1020,13 +1010,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1035,9 +1025,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "peer": true, @@ -1046,23 +1036,23 @@ } }, "node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1114,15 +1104,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -1131,15 +1121,29 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -1149,6 +1153,66 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -1160,10 +1224,122 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "peer": true, @@ -1175,25 +1351,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -1206,9 +1363,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -1226,30 +1383,46 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helpers": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", - "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1258,10 +1431,1174 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", + "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/runtime": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.2.tgz", - "integrity": "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "dev": true, "license": "MIT", "engines": { @@ -1269,35 +2606,35 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -1305,15 +2642,15 @@ } }, "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1382,6 +2719,38 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@cypress/webpack-preprocessor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-7.1.0.tgz", + "integrity": "sha512-1PNvHAy5quwXkHA0AggviUQp4twDcMy+m+DOGnIbmJ7YhrSMOnSZOMLygRvHR+t7sVQPdccnAaGit2FOQUrSyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "3.7.1", + "debug": "^4.3.4", + "lodash": "^4.17.20", + "semver": "^7.7.3" + }, + "peerDependencies": { + "@babel/core": "^7.28.0", + "@babel/preset-env": "^7.26.0", + "babel-loader": "^9 || ^10", + "webpack": "^5" + } + }, + "node_modules/@cypress/webpack-preprocessor/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@cypress/xvfb": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", @@ -1453,24 +2822,31 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -1518,20 +2894,20 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", + "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1541,10 +2917,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -1576,9 +2959,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -1636,33 +3019,19 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1710,9 +3079,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -1722,6 +3091,19 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -1741,13 +3123,13 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -1756,6 +3138,24 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1768,6 +3168,18 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -1800,9 +3212,9 @@ "peer": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "peer": true, @@ -1812,13 +3224,13 @@ } }, "node_modules/@mattermost/client": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@mattermost/client/-/client-11.3.0.tgz", - "integrity": "sha512-ulDcKXRcmxwqsqqRJemyq47UlpSVnPNKQrg/FHfEEzgLdhTlnrdMnRGZUssuCeZ9DXRkSw+uZwudiJoJ0bc47A==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@mattermost/client/-/client-11.5.0.tgz", + "integrity": "sha512-/e1/TVisfiAwiBH9Um9Ur5fShemS09GKuNO9Nurxpvsrgo/anybqi/R7AT7ppUZ9j4K2b+acBj/gDuUGN6Gpmw==", "dev": true, "license": "MIT", "peerDependencies": { - "@mattermost/types": "11.3.0", + "@mattermost/types": "11.5.0", "typescript": "^4.3.0 || ^5.0.0" }, "peerDependenciesMeta": { @@ -1828,9 +3240,9 @@ } }, "node_modules/@mattermost/types": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@mattermost/types/-/types-11.3.0.tgz", - "integrity": "sha512-ZjkF1D28Jn+7Agki2de1FIFIWx7LbdqqIaaZ5JgOGpqtkkr9PQ0AW+WLOoEzokWEZ54dXB9INSuGLEczTfrt8w==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@mattermost/types/-/types-11.5.0.tgz", + "integrity": "sha512-8vAzjjIJV/NIyKMB5tVRDQF9Uc58t6jCvZ7kOPR+JYHuW/8CPKBJkWmx2hqvgQ8h0b+otPLUqksGKp3LevGF7A==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2110,24 +3522,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.10.tgz", - "integrity": "sha512-qocxM/X4XGATqQtUkbE9SPUB6wekBi+FyJOMbPj0AhvyvFGYEmOlz6VB22iMePCQsFmMIvFSeViDvA7mZJG47g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.1.tgz", - "integrity": "sha512-y5d4xRiD6TzeP5BWlb+Ig/VFqF+t9oANNhGeMqyzU7obw7FYgTgVi50i5JqBTeKp+TABeDIeeXFZdz65RipNtA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", + "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2138,13 +3536,13 @@ } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.2.tgz", - "integrity": "sha512-QzzYIlf4yg0w5TQaC9VId3B3ugSk1MI/wb7tgcHtd7CBV9gNRKZrhc2EPSxSZuDy10zUZ0lomNMgkc6/VVe8xg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", + "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-base64": "^4.3.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -2152,17 +3550,17 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.9.tgz", - "integrity": "sha512-ejQvXqlcU30h7liR9fXtj7PIAau1t/sFbJpgWPfiYDs7zd16jpH0IsSXKcba2jF6ChTXvIjACs27kNMc5xxE2Q==", + "version": "4.4.15", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.15.tgz", + "integrity": "sha512-BJdMBY5YO9iHh+lPLYdHv6LbX+J8IcPCYMl1IJdBt2KDWNHwONHrPVHk3ttYBqJd9wxv84wlbN0f7GlQzcQtNQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.4.0", + "@smithy/util-middleware": "^4.2.13", "tslib": "^2.6.2" }, "engines": { @@ -2170,21 +3568,21 @@ } }, "node_modules/@smithy/core": { - "version": "3.23.7", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.7.tgz", - "integrity": "sha512-/+ldRdtiO5Cb26afAZOG1FZM0x7D4AYdjpyOv2OScJw+4C7X+OLdRnNKF5UyUE0VpPgSKr3rnF/kvprRA4h2kg==", + "version": "3.23.14", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.14.tgz", + "integrity": "sha512-vJ0IhpZxZAkFYOegMKSrxw7ujhhT2pass/1UEcZ4kfl5srTAqtPU5I7MdYQoreVas3204ykCiNhY1o7Xlz6Yyg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.11", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", - "@smithy/uuid": "^1.1.1", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-stream": "^4.5.22", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -2192,16 +3590,16 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.10.tgz", - "integrity": "sha512-3bsMLJJLTZGZqVGGeBVFfLzuRulVsGTj12BzRKODTHqUABpIr0jMN1vN3+u6r2OfyhAQ2pXaMZWX/swBK5I6PQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.13.tgz", + "integrity": "sha512-wboCPijzf6RJKLOvnjDAiBxGSmSnGXj35o5ZAWKDaHa/cvQ5U3ZJ13D4tMCE8JG4dxVAZFy/P0x/V9CwwdfULQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", "tslib": "^2.6.2" }, "engines": { @@ -2209,15 +3607,15 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.10.tgz", - "integrity": "sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.13.tgz", + "integrity": "sha512-vYahwBAtRaAcFbOmE9aLr12z7RiHYDSLcnogSdxfm7kKfsNa3wH+NU5r7vTeB5rKvLsWyPjVX8iH94brP7umiQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", + "@smithy/types": "^4.14.0", + "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2225,14 +3623,14 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.10.tgz", - "integrity": "sha512-0xupsu9yj9oDVuQ50YCTS9nuSYhGlrwqdaKQel9y2Fz7LU9fNErVlw9N0o4pm4qqvWEGbSTI4HKc6XJfB30MVw==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.13.tgz", + "integrity": "sha512-wwybfcOX0tLqCcBP378TIU9IqrDuZq/tDV48LlZNydMpCnqnYr+hWBAYbRE+rFFf/p7IkDJySM3bgiMKP2ihPg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-serde-universal": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2240,13 +3638,13 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.10.tgz", - "integrity": "sha512-8kn6sinrduk0yaYHMJDsNuiFpXwQwibR7n/4CDUqn4UgaG+SeBHu5jHGFdU9BLFAM7Q4/gvr9RYxBHz9/jKrhA==", + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.13.tgz", + "integrity": "sha512-ied1lO559PtAsMJzg2TKRlctLnEi1PfkNeMMpdwXDImk1zV9uvS/Oxoy/vcy9uv1GKZAjDAB5xT6ziE9fzm5wA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2254,14 +3652,14 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.10.tgz", - "integrity": "sha512-uUrxPGgIffnYfvIOUmBM5i+USdEBRTdh7mLPttjphgtooxQ8CtdO1p6K5+Q4BBAZvKlvtJ9jWyrWpBJYzBKsyQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.13.tgz", + "integrity": "sha512-hFyK+ORJrxAN3RYoaD6+gsGDQjeix8HOEkosoajvXYZ4VeqonM3G4jd9IIRm/sWGXUKmudkY9KdYjzosUqdM8A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-serde-universal": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2269,14 +3667,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.10.tgz", - "integrity": "sha512-aArqzOEvcs2dK+xQVCgLbpJQGfZihw8SD4ymhkwNTtwKbnrzdhJsFDKuMQnam2kF69WzgJYOU5eJlCx+CA32bw==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.13.tgz", + "integrity": "sha512-kRrq4EKLGeOxhC2CBEhRNcu1KSzNJzYY7RK3S7CxMPgB5dRrv55WqQOtRwQxQLC04xqORFLUgnDlc6xrNUULaA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-codec": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2284,16 +3682,16 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.12.tgz", - "integrity": "sha512-muS5tFw+A/uo+U+yig06vk1776UFM+aAp9hFM8efI4ZcHhTcgv6NTeK4x7ltHeMPBwnhEjcf0MULTyxNkSNxDw==", + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.16.tgz", + "integrity": "sha512-nYDRUIvNd4mFmuXraRWt6w5UsZTNqtj4hXJA/iiOD4tuseIdLP9Lq38teH/SZTcIFCa2f+27o7hYpIsWktJKEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/querystring-builder": "^4.2.10", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", + "@smithy/protocol-http": "^5.3.13", + "@smithy/querystring-builder": "^4.2.13", + "@smithy/types": "^4.14.0", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -2301,15 +3699,15 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.11.tgz", - "integrity": "sha512-DrcAx3PM6AEbWZxsKl6CWAGnVwiz28Wp1ZhNu+Hi4uI/6C1PIZBIaPM2VoqBDAsOWbM6ZVzOEQMxFLLdmb4eBQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.14.tgz", + "integrity": "sha512-rtQ5es8r/5v4rav7q5QTsfx9CtCyzrz/g7ZZZBH2xtMmd6G/KQrLOWfSHTvFOUPlVy59RQvxeBYJaLRoybMEyA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.1", - "@smithy/chunked-blob-reader-native": "^4.2.2", - "@smithy/types": "^4.13.0", + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2317,15 +3715,15 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.10.tgz", - "integrity": "sha512-1VzIOI5CcsvMDvP3iv1vG/RfLJVVVc67dCRyLSB2Hn9SWCZrDO3zvcIzj3BfEtqRW5kcMg5KAeVf1K3dR6nD3w==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.13.tgz", + "integrity": "sha512-4/oy9h0jjmY80a2gOIo75iLl8TOPhmtx4E2Hz+PfMjvx/vLtGY4TMU/35WRyH2JHPfT5CVB38u4JRow7gnmzJA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.14.0", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2333,14 +3731,14 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.10.tgz", - "integrity": "sha512-w78xsYrOlwXKwN5tv1GnKIRbHb1HygSpeZMP6xDxCPGf1U/xDHjCpJu64c5T35UKyEPwa0bPeIcvU69VY3khUA==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.13.tgz", + "integrity": "sha512-WdQ7HwUjINXETeh6dqUeob1UHIYx8kAn9PSp1HhM2WWegiZBYVy2WXIs1lB07SZLan/udys9SBnQGt9MQbDpdg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.14.0", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2348,13 +3746,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.10.tgz", - "integrity": "sha512-vy9KPNSFUU0ajFYk0sDZIYiUlAWGEAhRfehIr5ZkdFrRFTAuXEPUd41USuqHU6vvLX4r6Q9X7MKBco5+Il0Org==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.13.tgz", + "integrity": "sha512-jvC0RB/8BLj2SMIkY0Npl425IdnxZJxInpZJbu563zIRnVjpDMXevU3VMCRSabaLB0kf/eFIOusdGstrLJ8IDg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2362,9 +3760,9 @@ } }, "node_modules/@smithy/is-array-buffer": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.1.tgz", - "integrity": "sha512-Yfu664Qbf1B4IYIsYgKoABt010daZjkaCRvdU/sPnZG6TtHOB0md0RjNdLGzxe5UIdn9js4ftPICzmkRa9RJ4Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2375,14 +3773,14 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.10.tgz", - "integrity": "sha512-Op+Dh6dPLWTjWITChFayDllIaCXRofOed8ecpggTC5fkh8yXes0vAEX7gRUfjGK+TlyxoCAA05gHbZW/zB9JwQ==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.13.tgz", + "integrity": "sha512-cNm7I9NXolFxtS20ojROddOEpSAeI1Obq6pd1Kj5HtHws3s9Fkk8DdHDfQSs5KuxCewZuVK6UqrJnfJmiMzDuQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.14.0", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2390,14 +3788,14 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.10.tgz", - "integrity": "sha512-TQZ9kX5c6XbjhaEBpvhSvMEZ0klBs1CFtOdPFwATZSbC9UeQfKHPLPN9Y+I6wZGMOavlYTOlHEPDrt42PMSH9w==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.13.tgz", + "integrity": "sha512-IPMLm/LE4AZwu6qiE8Rr8vJsWhs9AtOdySRXrOM7xnvclp77Tyh7hMs/FRrMf26kgIe67vFJXXOSmVxS7oKeig==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2405,19 +3803,19 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.21", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.21.tgz", - "integrity": "sha512-CoVGZaqIC0tEjz0ga3ciwCMA5fd/4lIOwO2wx0fH+cTi1zxSFZnMJbIiIF9G1d4vRSDyTupDrpS3FKBBJGkRZg==", + "version": "4.4.29", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.29.tgz", + "integrity": "sha512-R9Q/58U+qBiSARGWbAbFLczECg/RmysRksX6Q8BaQEpt75I7LI6WGDZnjuC9GXSGKljEbA7N118LhGaMbfrTXw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.7", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-middleware": "^4.2.10", + "@smithy/core": "^3.23.14", + "@smithy/middleware-serde": "^4.2.17", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", + "@smithy/url-parser": "^4.2.13", + "@smithy/util-middleware": "^4.2.13", "tslib": "^2.6.2" }, "engines": { @@ -2425,20 +3823,21 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.38", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.38.tgz", - "integrity": "sha512-WdHvdhjE6Fj78vxFwDKFDwlqGOGRUWrwGeuENUbTVE46Su9mnQM+dXHtbnCaQvwuSYrRsjpe8zUsFpwUp/azlA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.1.tgz", + "integrity": "sha512-/zY+Gp7Qj2D2hVm3irkCyONER7E9MiX3cUUm/k2ZmhkzZkrPgwVS4aJ5NriZUEN/M0D1hhjrgjUmX04HhRwdWA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/service-error-classification": "^4.2.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/uuid": "^1.1.1", + "@smithy/core": "^3.23.14", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/service-error-classification": "^4.2.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-retry": "^4.3.1", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -2446,14 +3845,15 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.11.tgz", - "integrity": "sha512-STQdONGPwbbC7cusL60s7vOa6He6A9w2jWhoapL0mgVjmR19pr26slV+yoSP76SIssMTX/95e5nOZ6UQv6jolg==", + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.17.tgz", + "integrity": "sha512-0T2mcaM6v9W1xku86Dk0bEW7aEseG6KenFkPK98XNw0ZhOqOiD1MrMsdnQw9QsL3/Oa85T53iSMlm0SZdSuIEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/core": "^3.23.14", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2461,13 +3861,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.10.tgz", - "integrity": "sha512-pmts/WovNcE/tlyHa8z/groPeOtqtEpp61q3W0nW1nDJuMq/x+hWa/OVQBtgU0tBqupeXq0VBOLA4UZwE8I0YA==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.13.tgz", + "integrity": "sha512-g72jN/sGDLyTanrCLH9fhg3oysO3f7tQa6eWWsMyn2BiYNCgjF24n4/I9wff/5XidFvjj9ilipAoQrurTUrLvw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2475,15 +3875,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.10.tgz", - "integrity": "sha512-UALRbJtVX34AdP2VECKVlnNgidLHA2A7YgcJzwSBg1hzmnO/bZBHl/LDQQyYifzUwp1UOODnl9JJ3KNawpUJ9w==", + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.13.tgz", + "integrity": "sha512-iGxQ04DsKXLckbgnX4ipElrOTk+IHgTyu0q0WssZfYhDm9CQWHmu6cOeI5wmWRxpXbBDhIIfXMWz5tPEtcVqbw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@smithy/property-provider": "^4.2.13", + "@smithy/shared-ini-file-loader": "^4.4.8", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2491,16 +3891,15 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.13.tgz", - "integrity": "sha512-o8CP8w6tlUA0lk+Qfwm6Ed0jCWk3bEY6iBOJjdBaowbXKCSClk8zIHQvUL6RUZMvuNafF27cbRCMYqw6O1v4aA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.2.tgz", + "integrity": "sha512-/oD7u8M0oj2ZTFw7GkuuHWpIxtWdLlnyNkbrWcyVYhd5RJNDuczdkb0wfnQICyNFrVPlr8YHOhamjNy3zidhmA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/querystring-builder": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.13", + "@smithy/querystring-builder": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2508,13 +3907,13 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.10.tgz", - "integrity": "sha512-5jm60P0CU7tom0eNrZ7YrkgBaoLFXzmqB0wVS+4uK8PPGmosSrLNf6rRd50UBvukztawZ7zyA8TxlrKpF5z9jw==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.13.tgz", + "integrity": "sha512-bGzUCthxRmezuxkbu9wD33wWg9KX3hJpCXpQ93vVkPrHn9ZW6KNNdY5xAUWNuRCwQ+VyboFuWirG1lZhhkcyRQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2522,13 +3921,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.10.tgz", - "integrity": "sha512-2NzVWpYY0tRdfeCJLsgrR89KE3NTWT2wGulhNUxYlRmtRmPwLQwKzhrfVaiNlA9ZpJvbW7cjTVChYKgnkqXj1A==", + "version": "5.3.13", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.13.tgz", + "integrity": "sha512-+HsmuJUF4u8POo6s8/a2Yb/AQ5t/YgLovCuHF9oxbocqv+SZ6gd8lC2duBFiCA/vFHoHQhoq7QjqJqZC6xOxxg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2536,14 +3935,14 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.10.tgz", - "integrity": "sha512-HeN7kEvuzO2DmAzLukE9UryiUvejD3tMp9a1D1NJETerIfKobBUCLfviP6QEk500166eD2IATaXM59qgUI+YDA==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.13.tgz", + "integrity": "sha512-tG4aOYFCZdPMjbgfhnIQ322H//ojujldp1SrHPHpBSb3NqgUp3dwiUGRJzie87hS1DYwWGqDuPaowoDF+rYCbQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-uri-escape": "^4.2.1", + "@smithy/types": "^4.14.0", + "@smithy/util-uri-escape": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2551,13 +3950,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.10.tgz", - "integrity": "sha512-4Mh18J26+ao1oX5wXJfWlTT+Q1OpDR8ssiC9PDOuEgVBGloqg18Fw7h5Ct8DyT9NBYwJgtJ2nLjKKFU6RP1G1Q==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.13.tgz", + "integrity": "sha512-hqW3Q4P+CDzUyQ87GrboGMeD7XYNMOF+CuTwu936UQRB/zeYn3jys8C3w+wMkDfY7CyyyVwZQ5cNFoG0x1pYmA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2565,26 +3964,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.10.tgz", - "integrity": "sha512-0R/+/Il5y8nB/By90o8hy/bWVYptbIfvoTYad0igYQO5RefhNCDmNzqxaMx7K1t/QWo0d6UynqpqN5cCQt1MCg==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.13.tgz", + "integrity": "sha512-a0s8XZMfOC/qpqq7RCPvJlk93rWFrElH6O++8WJKz0FqnA4Y7fkNi/0mnGgSH1C4x6MFsuBA8VKu4zxFrMe5Vw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0" + "@smithy/types": "^4.14.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.5.tgz", - "integrity": "sha512-pHgASxl50rrtOztgQCPmOXFjRW+mCd7ALr/3uXNzRrRoGV5G2+78GOsQ3HlQuBVHCh9o6xqMNvlIKZjWn4Euug==", + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.8.tgz", + "integrity": "sha512-VZCZx2bZasxdqxVgEAhREvDSlkatTPnkdWy1+Kiy8w7kYPBosW0V5IeDwzDUMvWBt56zpK658rx1cOBFOYaPaw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2592,19 +3991,19 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.10.tgz", - "integrity": "sha512-Wab3wW8468WqTKIxI+aZe3JYO52/RYT/8sDOdzkUhjnLakLe9qoQqIcfih/qxcF4qWEFoWBszY0mj5uxffaVXA==", + "version": "5.3.13", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.13.tgz", + "integrity": "sha512-YpYSyM0vMDwKbHD/JA7bVOF6kToVRpa+FM5ateEVRpsTNu564g1muBlkTubXhSKKYXInhpADF46FPyrZcTLpXg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-uri-escape": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.13", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2612,18 +4011,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.1.tgz", - "integrity": "sha512-Xf9UFHlAihewfkmLNZ6I/Ek6kcYBKoU3cbRS9Z4q++9GWoW0YFbAHs7wMbuXm+nGuKHZ5OKheZMuDdaWPv8DJw==", + "version": "4.12.9", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.9.tgz", + "integrity": "sha512-ovaLEcTU5olSeHcRXcxV6viaKtpkHZumn6Ps0yn7dRf2rRSfy794vpjOtrWDO0d1auDSvAqxO+lyhERSXQ03EQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.7", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-stream": "^4.5.16", + "@smithy/core": "^3.23.14", + "@smithy/middleware-endpoint": "^4.4.29", + "@smithy/middleware-stack": "^4.2.13", + "@smithy/protocol-http": "^5.3.13", + "@smithy/types": "^4.14.0", + "@smithy/util-stream": "^4.5.22", "tslib": "^2.6.2" }, "engines": { @@ -2631,9 +4030,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.0.tgz", - "integrity": "sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.0.tgz", + "integrity": "sha512-OWgntFLW88kx2qvf/c/67Vno1yuXm/f9M7QFAtVkkO29IJXGBIg0ycEaBTH0kvCtwmvZxRujrgP5a86RvsXJAQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2644,14 +4043,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.10.tgz", - "integrity": "sha512-uypjF7fCDsRk26u3qHmFI/ePL7bxxB9vKkE+2WKEciHhz+4QtbzWiHRVNRJwU3cKhrYDYQE3b0MRFtqfLYdA4A==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.13.tgz", + "integrity": "sha512-2G03yoboIRZlZze2+PT4GZEjgwQsJjUgn6iTsvxA02bVceHR6vp4Cuk7TUnPFWKF+ffNUk3kj4COwkENS2K3vw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/querystring-parser": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2659,14 +4058,14 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.1.tgz", - "integrity": "sha512-BKGuawX4Doq/bI/uEmg+Zyc36rJKWuin3py89PquXBIBqmbnJwBBsmKhdHfNEp0+A4TDgLmT/3MSKZ1SxHcR6w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2674,9 +4073,9 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.1.tgz", - "integrity": "sha512-SiJeLiozrAoCrgDBUgsVbmqHmMgg/2bA15AzcbcW+zan7SuyAVHN4xTSbq0GlebAIwlcaX32xacnrG488/J/6g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2687,9 +4086,9 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.2.tgz", - "integrity": "sha512-4rHqBvxtJEBvsZcFQSPQqXP2b/yy/YlB66KlcEgcH2WNoOKCKB03DSLzXmOsXjbl8dJ4OEYTn31knhdznwk7zw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2700,13 +4099,13 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz", - "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.1", + "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2714,9 +4113,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.1.tgz", - "integrity": "sha512-462id/00U8JWFw6qBuTSWfN5TxOHvDu4WliI97qOIOnuC/g+NDAknTU8eoGXEPlLkRVgWEr03jJBLV4o2FL8+A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2727,15 +4126,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.37", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.37.tgz", - "integrity": "sha512-JlPZhV1kQCGNJgofRTU6E8kHrjCKsb6cps8gco8QDVaFl7biFYzHg0p1x89ytIWyVyCkY3nOpO8tJPM47Vqlww==", + "version": "4.3.45", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.45.tgz", + "integrity": "sha512-ag9sWc6/nWZAuK3Wm9KlFJUnRkXLrXn33RFjIAmCTFThqLHY+7wCst10BGq56FxslsDrjhSie46c8OULS+BiIw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", + "@smithy/property-provider": "^4.2.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2743,18 +4142,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.40", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.40.tgz", - "integrity": "sha512-BM5cPEsyxHdYYO4Da77E94lenhaVPNUzBTyCGDkcw/n/mE8Q1cfHwr+n/w2bNPuUsPC30WaW5/hGKWOTKqw8kw==", + "version": "4.2.50", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.50.tgz", + "integrity": "sha512-xpjncL5XozFA3No7WypTsPU1du0fFS8flIyO+Wh2nhCy7bpEapvU7BR55Bg+wrfw+1cRA+8G8UsTjaxgzrMzXg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.9", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", + "@smithy/config-resolver": "^4.4.15", + "@smithy/credential-provider-imds": "^4.2.13", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/property-provider": "^4.2.13", + "@smithy/smithy-client": "^4.12.9", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2762,14 +4161,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.1.tgz", - "integrity": "sha512-xyctc4klmjmieQiF9I1wssBWleRV0RhJ2DpO8+8yzi2LO1Z+4IWOZNGZGNj4+hq9kdo+nyfrRLmQTzc16Op2Vg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.4.0.tgz", + "integrity": "sha512-QQHGPKkw6NPcU6TJ1rNEEa201srPtZiX4k61xL163vvs9sTqW/XKz+UEuJ00uvPqoN+5Rs4Ka1UJ7+Mp03IXJw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@smithy/node-config-provider": "^4.3.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2777,9 +4176,9 @@ } }, "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.1.tgz", - "integrity": "sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2790,13 +4189,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.10.tgz", - "integrity": "sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==", + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.13.tgz", + "integrity": "sha512-GTooyrlmRTqvUen4eK7/K1p6kryF7bnDfq6XsAbIsf2mo51B/utaH+XThY6dKgNCWzMAaH/+OLmqaBuLhLWRow==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2804,14 +4203,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.10.tgz", - "integrity": "sha512-HrBzistfpyE5uqTwiyLsFHscgnwB0kgv8vySp7q5kZ0Eltn/tjosaSGGDj/jJ9ys7pWzIP/icE2d+7vMKXLv7A==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.1.tgz", + "integrity": "sha512-FwmicpgWOkP5kZUjN3y+3JIom8NLGqSAJBeoIgK0rIToI817TEBHCrd0A2qGeKQlgDeP+Jzn4i0H/NLAXGy9uQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/service-error-classification": "^4.2.13", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2819,19 +4218,19 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.16", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.16.tgz", - "integrity": "sha512-c7awZV6cxY0czgDDSr+Bz0XfRtg8AwW2BWhrHhLJISrpmwv8QzA2qzTllWyMVNdy1+UJr9vCm29hzuh3l8TTFw==", + "version": "4.5.22", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.22.tgz", + "integrity": "sha512-3H8iq/0BfQjUs2/4fbHZ9aG9yNzcuZs24LPkcX1Q7Z+qpqaGM8+qbGmE8zo9m2nCRgamyvS98cHdcWvR6YUsew==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/fetch-http-handler": "^5.3.16", + "@smithy/node-http-handler": "^4.5.2", + "@smithy/types": "^4.14.0", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2839,9 +4238,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.1.tgz", - "integrity": "sha512-YmiUDn2eo2IOiWYYvGQkgX5ZkBSiTQu4FlDo5jNPpAxng2t6Sjb6WutnZV9l6VR4eJul1ABmCrnWBC9hKHQa6Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2852,13 +4251,13 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.1.tgz", - "integrity": "sha512-DSIwNaWtmzrNQHv8g7DBGR9mulSit65KSj5ymGEIAknmIN8IpbZefEep10LaMG/P/xquwbmJ1h9ectz8z6mV6g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.1", + "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2866,14 +4265,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.10.tgz", - "integrity": "sha512-4eTWph/Lkg1wZEDAyObwme0kmhEb7J/JjibY2znJdrYRgKbKqB7YoEhhJVJ4R1g/SYih4zuwX7LpJaM8RsnTVg==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.15.tgz", + "integrity": "sha512-oUt9o7n8hBv3BL56sLSneL0XeigZSuem0Hr78JaoK33D9oKieyCvVP8eTSe3j7g2mm/S1DvzxKieG7JEWNJUNg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.0", "tslib": "^2.6.2" }, "engines": { @@ -2881,9 +4279,9 @@ } }, "node_modules/@smithy/uuid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.1.tgz", - "integrity": "sha512-dSfDCeihDmZlV2oyr0yWPTUfh07suS+R5OB+FZGiv/hHyK3hrFBW5rR1UYjfa57vBsrP9lciFkRPzebaV1Qujw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3017,9 +4415,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", "dev": true, "license": "MIT", "dependencies": { @@ -3108,13 +4506,6 @@ "@types/lodash": "*" } }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/mime-types": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-3.0.1.tgz", @@ -3140,19 +4531,19 @@ } }, "node_modules/@types/node": { - "version": "24.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.2.1.tgz", - "integrity": "sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==", + "version": "25.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.10.0" + "undici-types": "~7.19.0" } }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "dev": true, "license": "MIT" }, @@ -3174,13 +4565,12 @@ } }, "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -3214,9 +4604,9 @@ "license": "MIT" }, "node_modules/@types/sizzle": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", - "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz", + "integrity": "sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==", "dev": true, "license": "MIT" }, @@ -3246,20 +4636,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", + "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/type-utils": "8.58.2", + "@typescript-eslint/utils": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3269,22 +4659,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.58.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz", + "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", "debug": "^4.4.3" }, "engines": { @@ -3296,18 +4686,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz", + "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.58.2", + "@typescript-eslint/types": "^8.58.2", "debug": "^4.4.3" }, "engines": { @@ -3318,18 +4708,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.2.tgz", + "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3340,9 +4730,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.2.tgz", + "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==", "dev": true, "license": "MIT", "engines": { @@ -3353,21 +4743,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz", + "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/utils": "8.58.2", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3378,13 +4768,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz", + "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==", "dev": true, "license": "MIT", "engines": { @@ -3396,21 +4786,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.2.tgz", + "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.58.2", + "@typescript-eslint/tsconfig-utils": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/visitor-keys": "8.58.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3420,46 +4810,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { @@ -3476,16 +4827,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz", + "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.58.2", + "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3496,17 +4847,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.2.tgz", + "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.58.2", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -3737,9 +5088,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -3788,9 +5139,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3824,9 +5175,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "peer": true, @@ -3849,17 +5200,6 @@ "license": "MIT", "peer": true }, - "node_modules/ally.js": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ally.js/-/ally.js-1.4.1.tgz", - "integrity": "sha512-ZewdfuwP6VewtMN36QY0gmiyvBfMnmEaNwbVu2nTS6zRt069viTgkYgaDiqu6vRJ1VJCriNqV0jGMu44R8zNbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "css.escape": "^1.5.0", - "platform": "1.3.3" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -3910,16 +5250,13 @@ } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -4133,6 +5470,39 @@ "safer-buffer": "~2.1.0" } }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -4258,9 +5628,9 @@ "license": "MIT" }, "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.3.tgz", + "integrity": "sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==", "dev": true, "license": "MPL-2.0", "engines": { @@ -4268,15 +5638,15 @@ } }, "node_modules/axios": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", - "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" + "proxy-from-env": "^2.1.0" } }, "node_modules/axobject-query": { @@ -4289,12 +5659,87 @@ "node": ">= 0.4" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/babel-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0 || ^8.0.0-beta.1", + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "webpack": ">=5.61.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/base64-js": { "version": "1.5.1", @@ -4317,6 +5762,20 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz", + "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -4335,9 +5794,16 @@ "license": "Apache-2.0" }, "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", "dev": true, "license": "MIT" }, @@ -4374,13 +5840,16 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -4396,6 +5865,23 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.17.0" + } + }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -4403,10 +5889,143 @@ "dev": true, "license": "ISC" }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", + "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "dev": true, + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.2", + "browserify-rsa": "^4.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.6.1", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.9", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { - "version": "4.25.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz", - "integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -4425,10 +6044,11 @@ "license": "MIT", "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001733", - "electron-to-chromium": "^1.5.199", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -4466,6 +6086,20 @@ "license": "MIT", "peer": true }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" + }, "node_modules/byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/byte-length/-/byte-length-1.0.2.tgz", @@ -4494,15 +6128,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -4567,9 +6201,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001734", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001734.tgz", - "integrity": "sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==", + "version": "1.0.30001788", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", + "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", "dev": true, "funding": [ { @@ -4656,9 +6290,9 @@ } }, "node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { @@ -4671,6 +6305,21 @@ "node": ">=8" } }, + "node_modules/cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -4741,52 +6390,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/cli/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "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": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cli/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/client-oauth2": { "version": "4.3.3", "resolved": "git+ssh://git@github.com/larkox/js-client-oauth2.git#e24e2eb5dfcbbbb3a59d095e831dbe0012b0ac49", @@ -4979,17 +6582,31 @@ "dev": true, "license": "MIT" }, - "node_modules/content-disposition": { + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/content-type": { @@ -5030,6 +6647,82 @@ "node": ">=6.6.0" } }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-env": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", @@ -5073,17 +6766,37 @@ "node": "*" } }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "node_modules/crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/cypress": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.11.0.tgz", - "integrity": "sha512-NXDE6/fqZuzh1Zr53nyhCCa4lcANNTYWQNP9fJO+tzD3qVTDaTUni5xXMuigYjMujQ7CRiT9RkJJONmPQSsDFw==", + "version": "15.13.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.13.1.tgz", + "integrity": "sha512-jLkgo75zlwo7PhXp0XJot+zIfFSDzN1SvTml6Xf3ETM1XHRWnH3Q4LAR3orCo/BsnxPnhjG3m5HYSvn9DAtwBg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5171,9 +6884,9 @@ } }, "node_modules/cypress-multi-reporters/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -5184,13 +6897,13 @@ } }, "node_modules/cypress-plugin-tab": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/cypress-plugin-tab/-/cypress-plugin-tab-1.0.5.tgz", - "integrity": "sha512-QtTJcifOVwwbeMP3hsOzQOKf3EqKsLyjtg9ZAGlYDntrCRXrsQhe4ZQGIthRMRLKpnP6/tTk6G0gJ2sZUfRliQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cypress-plugin-tab/-/cypress-plugin-tab-2.0.0.tgz", + "integrity": "sha512-T4LKCeof7LNRBkiFvpr3loOiqdQ/73W09dL+0dZo0g+uGbm1N+qVwYUIEfjdRMt82aCO+cp6tddc4tJKNeDY3A==", "dev": true, "license": "MIT", - "dependencies": { - "ally.js": "^1.4.1" + "peerDependencies": { + "cypress": ">=10" } }, "node_modules/cypress-real-events": { @@ -5210,6 +6923,29 @@ "dev": true, "license": "MIT" }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, "node_modules/cypress/node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -5272,22 +7008,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/cypress/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -5380,9 +7100,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "dev": true, "license": "MIT" }, @@ -5500,6 +7220,17 @@ "node": ">=6" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/diff": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", @@ -5510,6 +7241,25 @@ "node": ">=0.3.1" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -5530,10 +7280,23 @@ "dev": true, "license": "MIT" }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/dotenv": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", - "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -5584,13 +7347,36 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.200", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.200.tgz", - "integrity": "sha512-rFCxROw7aOe4uPTfIAx+rXv9cEcGx+buAF4npnhtTqCJk5KDFRnh3+KYj7rdVh6lsFt5/aPs+Irj9rZ33WMA7w==", + "version": "1.5.338", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.338.tgz", + "integrity": "sha512-KVQQ3xko9/coDX3qXLUEEbqkKT8L+1DyAovrtu0Khtrt9wjSZ+7CZV4GVzxFy9Oe1NbrIU1oVXCwHJruIA1PNg==", "dev": true, "license": "ISC", "peer": true }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -5647,9 +7433,9 @@ } }, "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", "dev": true, "license": "MIT", "dependencies": { @@ -5736,37 +7522,37 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", + "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.24.2", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT", "peer": true @@ -5922,15 +7708,15 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -5944,13 +7730,16 @@ } }, "node_modules/eslint-import-resolver-node/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5965,9 +7754,9 @@ } }, "node_modules/eslint-import-resolver-webpack": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.10.tgz", - "integrity": "sha512-ciVTEg7sA56wRMR772PyjcBRmyBMLS46xgzQZqt6cWBEKc7cK65ZSSLCTLVRu2gGtKyXUb5stwf4xxLBfERLFA==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.11.tgz", + "integrity": "sha512-RGFDrCHSmCKGuaoI1zmZT028weIFIEyfSy0nAwzp5rplutWDC+BBjvZS2l4bEgSOfjc+ILkSLxeszkslyNO6fQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5976,10 +7765,10 @@ "find-root": "^1.1.0", "hasown": "^2.0.2", "interpret": "^1.4.0", - "is-core-module": "^2.15.1", - "is-regex": "^1.2.0", - "lodash": "^4.17.21", - "resolve": "^2.0.0-next.5", + "is-core-module": "^2.16.1", + "is-regex": "^1.2.1", + "lodash": "^4.18.1", + "resolve": "^2.0.0-next.6", "semver": "^5.7.2" }, "engines": { @@ -6000,6 +7789,30 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-webpack/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-import-resolver-webpack/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -6039,13 +7852,13 @@ } }, "node_modules/eslint-plugin-cypress": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-6.1.0.tgz", - "integrity": "sha512-B8sxtNpINDxFkmsu1qKYjg70VsP8SGneEXgLcZMk1bUZcW08S+JyaiMdof1x6dmt02FgOD7YkT4wOaOD5HotJw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-6.3.1.tgz", + "integrity": "sha512-iTJtdIZbyCUlagEI4YlVcwgPFV7X379Qi/upujaD4kvOaQkMvzmpt90vfSnaqgqprp/HPIvhnzv3fdI7mYV4QQ==", "dev": true, "license": "MIT", "dependencies": { - "globals": "^17.3.0" + "globals": "^17.5.0" }, "peerDependencies": { "eslint": ">=9" @@ -6095,10 +7908,17 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -6117,9 +7937,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6169,10 +7989,17 @@ "node": ">= 0.4" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -6181,9 +8008,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6247,10 +8074,17 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, + "node_modules/eslint-plugin-react/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -6259,9 +8093,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6271,6 +8105,30 @@ "node": "*" } }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", + "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-rule-composer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", @@ -6315,10 +8173,33 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -6384,9 +8265,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6396,6 +8277,19 @@ "node": "*" } }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -6438,9 +8332,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -6510,6 +8404,17 @@ "node": ">=0.8.x" } }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -6690,9 +8595,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -6708,22 +8613,9 @@ "peer": true }, "node_modules/fast-xml-builder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", - "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", - "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", "dev": true, "funding": [ { @@ -6733,17 +8625,34 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.0.0", - "strnum": "^2.1.2" + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", + "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { @@ -6813,9 +8722,9 @@ } }, "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, "license": "MIT", "dependencies": { @@ -6827,7 +8736,11 @@ "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/find-root": { @@ -6879,16 +8792,16 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { @@ -7093,6 +9006,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -7228,18 +9151,22 @@ } }, "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "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": "18 || 20 || >=22" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7267,42 +9194,34 @@ "peer": true }, "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } + "license": "MIT" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/glob/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/global-dirs": { @@ -7322,9 +9241,9 @@ } }, "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.5.0.tgz", + "integrity": "sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==", "dev": true, "license": "MIT", "engines": { @@ -7452,6 +9371,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -7492,6 +9436,18 @@ "he": "bin/he" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", @@ -7528,6 +9484,13 @@ "node": ">=0.10" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true, + "license": "MIT" + }, "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -7694,6 +9657,23 @@ "node": ">= 0.10" } }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -7873,14 +9853,15 @@ } }, "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, @@ -7934,6 +9915,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -8179,6 +10177,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8186,6 +10191,16 @@ "dev": true, "license": "ISC" }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -8211,6 +10226,22 @@ "node": ">= 0.4" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -8227,23 +10258,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jiti": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", @@ -8262,9 +10276,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -8302,14 +10316,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -8408,9 +10414,9 @@ } }, "node_modules/knex": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/knex/-/knex-3.1.0.tgz", - "integrity": "sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/knex/-/knex-3.2.9.tgz", + "integrity": "sha512-dtAILTjBMaG8YloP5oBxohDIKyIsdQ/TkcVvSjhsksvsjeH63Y0PADyuMDfNZKbVT3Rlx3vEYVBlecbPT/KerA==", "dev": true, "license": "MIT", "dependencies": { @@ -8435,6 +10441,9 @@ "engines": { "node": ">=16" }, + "peerDependencies": { + "pg-query-stream": "^4.14.0" + }, "peerDependenciesMeta": { "better-sqlite3": { "optional": true @@ -8451,6 +10460,9 @@ "pg-native": { "optional": true }, + "pg-query-stream": { + "optional": true + }, "sqlite3": { "optional": true }, @@ -8586,33 +10598,19 @@ } } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/localforage": { @@ -8642,12 +10640,20 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/lodash.intersection": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.intersection/-/lodash.intersection-4.4.0.tgz", @@ -8735,6 +10741,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8752,6 +10774,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", @@ -8771,6 +10806,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -8877,6 +10928,18 @@ "is-buffer": "~1.1.6" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", @@ -8938,6 +11001,27 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, "node_modules/mime": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", @@ -8991,17 +11075,31 @@ "node": ">=6" } }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true, - "license": "ISC", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -9114,6 +11212,23 @@ "mocha": ">=3.1.2" } }, + "node_modules/mocha/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -9130,9 +11245,10 @@ } }, "node_modules/mocha/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -9150,78 +11266,20 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/mocha/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/mocha/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/mocha/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/mocha/node_modules/yargs": { @@ -9313,22 +11371,49 @@ "node": ">=14.14" } }, - "node_modules/mochawesome-merge/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/mochawesome-merge/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mochawesome-merge/node_modules/lru-cache": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/mochawesome-merge/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mochawesome-merge/node_modules/yargs": { @@ -9373,6 +11458,22 @@ "marge": "bin/cli.js" } }, + "node_modules/mochawesome-report-generator/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/mochawesome-report-generator/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9420,22 +11521,17 @@ "node": ">=12" } }, - "node_modules/mochawesome-report-generator/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/mochawesome-report-generator/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/mochawesome-report-generator/node_modules/yargs": { @@ -9457,6 +11553,22 @@ "node": ">=12" } }, + "node_modules/mochawesome/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/mochawesome/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9475,15 +11587,28 @@ } }, "node_modules/mochawesome/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, + "node_modules/mochawesome/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mochawesome/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -9505,9 +11630,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.6.0.tgz", - "integrity": "sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.6.1.tgz", + "integrity": "sha512-1B9lmAhB9D9/sHaPC1N7wLFEVUoFldxOpOO96lOD1PvJ43vCd0ozDPbu0FEL3++VvawOlDkq8YD373tJmP5JHw==", "dev": true, "license": "MIT", "dependencies": { @@ -9549,14 +11674,127 @@ "license": "MIT", "peer": true }, + "node_modules/node-exports-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", + "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-b4ei444EKkOagG/yFqojrD3QTYM5IOU1f8tn9o6uwrG4qL+brI7oVhjPVd0ZL2xy+Z6CP5bu9w8XTvlWgiXHcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-stdlib-browser": "^1.3.0", + "type-fest": "^4.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, + "node_modules/node-polyfill-webpack-plugin/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT", "peer": true }, + "node_modules/node-stdlib-browser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", + "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.12.1", + "domain-browser": "4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.4", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/notp": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz", @@ -9602,6 +11840,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -9769,6 +12024,13 @@ "node": ">= 0.8.0" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" + }, "node_modules/ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", @@ -9849,6 +12111,13 @@ "dev": true, "license": "BlueOak-1.0.0" }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9862,6 +12131,23 @@ "node": ">=6" } }, + "node_modules/parse-asn1": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "pbkdf2": "^3.1.5", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -9872,16 +12158,12 @@ "node": ">= 0.8" } }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true, - "license": "MIT", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", @@ -9893,6 +12175,22 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -9921,40 +12219,56 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } + "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "dev": true, "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" + }, "engines": { - "node": ">=16" + "node": ">= 0.10" } }, "node_modules/pdf-parse": { @@ -10006,15 +12320,15 @@ "license": "MIT" }, "node_modules/pg": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.19.0.tgz", - "integrity": "sha512-QIcLGi508BAHkQ3pJNptsFz5WQMlpGbuBGBaIaXsWK8mel2kQ/rThYI+DbgjUvZrIr7MiuEuc9LcChJoEZK1xQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "dev": true, "license": "MIT", "dependencies": { - "pg-connection-string": "^2.11.0", - "pg-pool": "^3.12.0", - "pg-protocol": "^1.12.0", + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -10059,9 +12373,9 @@ } }, "node_modules/pg-pool": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.12.0.tgz", - "integrity": "sha512-eIJ0DES8BLaziFHW7VgJEBPi5hg3Nyng5iKpYtj3wbcAUV9A1wLgWiY7ajf/f/oO1wfxt83phXPY8Emztg7ITg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -10069,9 +12383,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.12.0.tgz", - "integrity": "sha512-uOANXNRACNdElMXJ0tPz6RBM0XQ61nONGAwlt8da5zs/iUOOCLBQOHSXnrC6fMsvtjxbOJrZZl5IScGv+7mpbg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", "dev": true, "license": "MIT" }, @@ -10093,9 +12407,9 @@ } }, "node_modules/pg/node_modules/pg-connection-string": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.11.0.tgz", - "integrity": "sha512-kecgoJwhOpxYU21rZjULrmrBJ698U2RxXofKVzOn5UDj61BPj/qMb7diYUR1nLScCDbrztQFl1TaQZT0t1EtzQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", "dev": true, "license": "MIT" }, @@ -10117,9 +12431,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -10139,12 +12453,18 @@ "node": ">=0.10.0" } }, - "node_modules/platform": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz", - "integrity": "sha512-VJK1SRmXBpjwsB4YOHYSturx48rLKMzHgCqDH2ZDa6ZbMS/N5huoNqyQdK5Fj/xayu3fqbXckn5SeCS1EbMDZg==", + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } }, "node_modules/popsicle": { "version": "12.1.2", @@ -10193,6 +12513,16 @@ "servie": "^4.0.0" } }, + "node_modules/popsicle-cookie-jar/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/popsicle-cookie-jar/node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -10283,9 +12613,9 @@ } }, "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", "dev": true, "license": "MIT", "engines": { @@ -10353,19 +12683,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -10376,6 +12693,13 @@ "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -10410,11 +12734,14 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/psl": { "version": "1.15.0", @@ -10429,18 +12756,7 @@ "url": "https://github.com/sponsors/lupomontero" } }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { + "node_modules/psl/node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", @@ -10450,6 +12766,46 @@ "node": ">=6" } }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/qrcode-terminal": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", @@ -10475,6 +12831,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -10513,6 +12878,17 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -10546,6 +12922,21 @@ "dev": true, "license": "MIT" }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -10573,27 +12964,6 @@ "node": ">= 10.13.0" } }, - "node_modules/rechoir/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/recursive-readdir": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", @@ -10607,10 +12977,17 @@ "node": ">=6.0.0" } }, + "node_modules/recursive-readdir/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/recursive-readdir/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -10619,9 +12996,9 @@ } }, "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -10654,6 +13031,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -10675,6 +13074,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/regjsparser": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -10714,19 +13154,23 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10773,6 +13217,83 @@ "dev": true, "license": "MIT" }, + "node_modules/ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ripemd160/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ripemd160/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/ripemd160/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ripemd160/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -10844,13 +13365,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -10889,13 +13403,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -10922,9 +13429,9 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "peer": true, @@ -10943,9 +13450,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "peer": true, @@ -10993,26 +13500,30 @@ } }, "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.5", + "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", - "statuses": "^2.0.1" + "statuses": "^2.0.2" }, "engines": { "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serialize-javascript": { @@ -11026,9 +13537,9 @@ } }, "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, "license": "MIT", "dependencies": { @@ -11039,6 +13550,10 @@ }, "engines": { "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/servie": { @@ -11102,6 +13617,13 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -11109,6 +13631,27 @@ "dev": true, "license": "ISC" }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11214,14 +13757,14 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -11291,15 +13834,30 @@ "node": ">=8" } }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, "node_modules/source-map-support": { @@ -11314,6 +13872,17 @@ "source-map": "^0.6.0" } }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -11385,38 +13954,29 @@ "readable-stream": "^3.5.0" } }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -11636,9 +14196,9 @@ } }, "node_modules/strnum": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", - "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz", + "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==", "dev": true, "funding": [ { @@ -11649,16 +14209,19 @@ "license": "MIT" }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -11675,9 +14238,9 @@ } }, "node_modules/systeminformation": { - "version": "5.31.2", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.2.tgz", - "integrity": "sha512-ietGQGFhhZNBPgNv9vljgT8gzbYgQr6t0yGAo0Vdb5Jyilb574Vp+AuX2Or9rpBq3ho4mJRawLIUa9+CiILJdg==", + "version": "5.31.5", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.5.tgz", + "integrity": "sha512-5SyLdip4/3alxD4Kh+63bUQTJmu7YMfYQTC+koZy7X73HgNqZSD2P4wOZQWtUncvPvcEmnfIjCoygN4MRoEejQ==", "dev": true, "license": "MIT", "os": [ @@ -11739,15 +14302,15 @@ } }, "node_modules/terser": { - "version": "5.43.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", - "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", "dev": true, "license": "BSD-2-Clause", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -11759,9 +14322,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "peer": true, @@ -11769,7 +14332,6 @@ "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -11845,6 +14407,19 @@ "node": ">=8" } }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/timezones.json": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/timezones.json/-/timezones.json-1.7.2.tgz", @@ -11853,14 +14428,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -11888,9 +14463,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -11930,6 +14505,21 @@ "node": ">=14.14" } }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11977,9 +14567,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -11996,6 +14586,114 @@ "dev": true, "license": "MIT" }, + "node_modules/ts-loader": { + "version": "9.5.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", + "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -12029,6 +14727,13 @@ "dev": true, "license": "0BSD" }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true, + "license": "MIT" + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -12166,9 +14871,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -12180,16 +14885,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.58.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.2.tgz", + "integrity": "sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.58.2", + "@typescript-eslint/parser": "8.58.2", + "@typescript-eslint/typescript-estree": "8.58.2", + "@typescript-eslint/utils": "8.58.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12200,7 +14905,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/unbox-primitive": { @@ -12223,12 +14928,60 @@ } }, "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", "dev": true, "license": "MIT" }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -12260,9 +15013,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -12301,6 +15054,30 @@ "punycode": "^2.1.0" } }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -12313,13 +15090,17 @@ } }, "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "2.0.3" + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" } }, "node_modules/util-deprecate": { @@ -12329,13 +15110,6 @@ "dev": true, "license": "MIT" }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, "node_modules/uuid": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", @@ -12375,17 +15149,17 @@ "extsprintf": "^1.2.0" } }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true, "license": "MIT" }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", "peer": true, @@ -12398,9 +15172,9 @@ } }, "node_modules/webpack": { - "version": "5.101.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.1.tgz", - "integrity": "sha512-rHY3vHXRbkSfhG6fH8zYQdth/BtDgXXuR2pHF++1f/EBkI8zkgM5XWfsC3BvOoW9pr1CvZ1qQCxhCEsbNgT50g==", + "version": "5.106.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, "license": "MIT", "peer": true, @@ -12411,25 +15185,24 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.3", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", + "loader-runner": "^4.3.1", + "mime-db": "^1.54.0", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.3.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -12448,9 +15221,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true, "license": "MIT", "peer": true, @@ -12459,54 +15232,33 @@ } }, "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/webpack/node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "dev": true, "license": "MIT", "peer": true, "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/which": { @@ -12573,13 +15325,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -12600,9 +15345,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -12632,25 +15377,25 @@ } }, "node_modules/workerpool": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.3.tgz", - "integrity": "sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true, "license": "Apache-2.0" }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -12675,64 +15420,36 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "color-convert": "^2.0.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/wrappy": { diff --git a/e2e-tests/cypress/package.json b/e2e-tests/cypress/package.json index 66161d27fd2..8123158f16b 100644 --- a/e2e-tests/cypress/package.json +++ b/e2e-tests/cypress/package.json @@ -1,14 +1,15 @@ { "name": "cypress", "devDependencies": { - "@aws-sdk/client-s3": "3.1001.0", - "@aws-sdk/lib-storage": "3.1001.0", + "@aws-sdk/client-s3": "3.1030.0", + "@aws-sdk/lib-storage": "3.1030.0", "@babel/eslint-parser": "7.28.6", "@babel/eslint-plugin": "7.27.1", "@cypress/request": "3.0.10", + "@cypress/webpack-preprocessor": "7.1.0", "@eslint/js": "9.39.3", - "@mattermost/client": "11.3.0", - "@mattermost/types": "11.3.0", + "@mattermost/client": "11.5.0", + "@mattermost/types": "11.5.0", "@testing-library/cypress": "10.1.0", "@types/async": "3.2.25", "@types/authenticator": "1.1.4", @@ -22,27 +23,27 @@ "@types/mochawesome": "6.2.5", "@types/recursive-readdir": "2.2.4", "@types/shelljs": "0.10.0", - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", + "@typescript-eslint/eslint-plugin": "8.58.2", + "@typescript-eslint/parser": "8.58.2", "async": "3.2.6", "authenticator": "1.1.5", - "axios": "1.13.6", + "axios": "1.15.0", "chai": "6.2.2", "chalk": "5.6.2", "client-oauth2": "github:larkox/js-client-oauth2#e24e2eb5dfcbbbb3a59d095e831dbe0012b0ac49", "cross-env": "10.1.0", - "cypress": "15.11.0", + "cypress": "15.13.1", "cypress-file-upload": "5.0.8", "cypress-multi-reporters": "2.0.5", - "cypress-plugin-tab": "1.0.5", + "cypress-plugin-tab": "2.0.0", "cypress-real-events": "1.15.0", "cypress-wait-until": "3.0.2", - "dayjs": "1.11.19", + "dayjs": "1.11.20", "deepmerge": "4.3.1", - "dotenv": "17.3.1", + "dotenv": "17.4.2", "eslint": "9.39.3", - "eslint-import-resolver-webpack": "0.13.10", - "eslint-plugin-cypress": "6.1.0", + "eslint-import-resolver-webpack": "0.13.11", + "eslint-plugin-cypress": "6.3.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.32.0", "eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#5b0c972eacf19286e4c66221b39113bf8728a99e", @@ -50,9 +51,9 @@ "eslint-plugin-react": "7.37.5", "express": "5.2.1", "extract-zip": "2.0.1", - "globals": "17.4.0", + "globals": "17.5.0", "jiti": "2.6.1", - "knex": "3.1.0", + "knex": "3.2.9", "localforage": "1.10.0", "lodash.intersection": "4.4.0", "lodash.mapkeys": "4.6.0", @@ -66,24 +67,25 @@ "mochawesome": "7.1.4", "mochawesome-merge": "5.1.1", "mochawesome-report-generator": "6.3.2", - "moment-timezone": "0.6.0", - "path": "0.12.7", + "moment-timezone": "0.6.1", + "node-polyfill-webpack-plugin": "4.1.0", "pdf-parse": "2.4.5", - "pg": "8.19.0", + "pg": "8.20.0", "recursive-readdir": "2.2.3", "shelljs": "0.10.0", "timezones.json": "1.7.2", - "typescript": "5.9.3", - "typescript-eslint": "8.56.1", + "ts-loader": "9.5.7", + "typescript": "6.0.2", + "typescript-eslint": "8.58.2", "uuid": "13.0.0", "yargs": "18.0.0" }, "overrides": { "@mattermost/client": { - "typescript": "^5.0.4" + "typescript": "^6.0.2" }, "@mattermost/types": { - "typescript": "^5.0.4" + "typescript": "^6.0.2" } }, "scripts": { diff --git a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js index 580cd7a6dee..9d36ba40228 100644 --- a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_account_settings_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @accessibility @mfa -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {isMac} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {isMac} from '@/utils'; describe('Verify Accessibility Support in different sections in Settings and Profile Dialog', () => { const accountSettings = { diff --git a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js index 8a05eec7af9..19800ceb81d 100644 --- a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_keyboard_usability_spec.js @@ -9,7 +9,7 @@ // Group: @channels @accessibility -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; function postMessages(testChannel, otherUser, count) { for (let index = 0; index < count; index++) { diff --git a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js index 55de4a1500f..edfa6ff1071 100644 --- a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_nav_diff_regions_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @accessibility -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; function postMessages(testChannel, otherUser, count) { for (let index = 0; index < count; index++) { diff --git a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js index 861ea3c04e9..4ae0f93269f 100644 --- a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_post_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @accessibility -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Verify Accessibility Support in Post', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js index b4c027b9431..900140d9cd5 100644 --- a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_dm_spec.js @@ -9,7 +9,7 @@ // Group: @channels @accessibility @smoke -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Verify Accessibility Support in Channel Sidebar Navigation', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts index 4737388ad29..aa9aa192bf8 100644 --- a/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/accessibility/accessibility_sidebar_spec.ts @@ -10,17 +10,17 @@ // Stage: @prod // Group: @channels @accessibility @smoke -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Verify Accessibility Support in Channel Sidebar Navigation', () => { - let testUser; - let testTeam; - let testChannel; - let offTopicUrl; + let testUser: Cypress.UserProfile; + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; + let offTopicUrl: string; before(() => { - let otherUser; - let otherChannel; + let otherUser: Cypress.UserProfile; + let otherChannel: Cypress.Channel; cy.apiInitSetup({promoteNewUserAsAdmin: true}).then(({team, channel, user, offTopicUrl: url}) => { testUser = user; @@ -238,7 +238,7 @@ describe('Accessibility tests for RHS getting focus after buttons actions', () = }); }); -function markAsFavorite(channelName) { +function markAsFavorite(channelName: string) { // # Visit the channel cy.get(`#sidebarItem_${channelName}`).click(); cy.get('#postListContent').should('be.visible'); diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts index 2002f3b3a4e..b90e93a8ff0 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/main_menu_stays_open_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Profile > Profile Settings', () => { let otherUser: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts index 4f8e01eeb45..bb9c2f5cc94 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/account_settings_position_spec.ts @@ -65,7 +65,7 @@ describe('Profile > Profile Settings > Position', () => { minPositionHeader().click(); maxPositionInput().invoke('val').then((val) => { // * Verify that the input value is 128 characters - expect(val.toString().length).to.equal(128); + expect(val!.toString().length).to.equal(128); }); // # Try to edit the field with maximum characters diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/email_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/email_spec.ts index 6aaf3703303..2c6cb19f8b2 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/email_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/email_spec.ts @@ -9,14 +9,14 @@ // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {reUrl, getRandomId} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {reUrl, getRandomId} from '@/utils'; describe('Profile > Profile Settings > Email', () => { - let siteName; + let siteName: string; let testUser: Cypress.UserProfile; - let otherUser; - let offTopicUrl; + let otherUser: Cypress.UserProfile; + let offTopicUrl: string; let origConfig: Cypress.AdminConfig; before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts index c7332c7dd3b..cbef46c3222 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_edit_spec.ts @@ -11,7 +11,7 @@ // Group: @channels @account_setting describe('Profile > Profile Settings > Full Name', () => { - let testUser; + let testUser: Cypress.UserProfile; before(() => { // # Login as new user and visit off-topic diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts index dc28554ab1d..a0ecb74f47f 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/fullname_truncate_spec.ts @@ -10,11 +10,11 @@ // Stage: @prod // Group: @channels @account_setting -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Profile > Profile Settings> Full Name', () => { - let firstUser; - let secondUser; + let firstUser: Cypress.UserProfile; + let secondUser: Cypress.UserProfile; const firstName = 'This Is a Long Name'; const lastName = 'That Should Truncate'; diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts index 3836f1bf5a2..a3c4484bdd2 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/nickname_spec.ts @@ -10,11 +10,11 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Settings > Sidebar > General', () => { - let testUser; - let testTeam; + let testUser: Cypress.UserProfile; + let testTeam: Cypress.Team; before(() => { // # Login as new user and visit off-topic @@ -176,7 +176,7 @@ describe('Settings > Sidebar > General', () => { cy.uiClose(); }); - function getInnerText(el) { + function getInnerText(el: JQuery) { return el[0].innerText.replace(/\n/g, '').replace(/\s/g, ' '); } }); diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts index 02d4d00046a..1d5903bd729 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_change_spec.ts @@ -4,7 +4,7 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Profile Settings', () => { beforeEach(() => { @@ -49,13 +49,13 @@ describe('Profile Settings', () => { function getProfilePictureId() { return cy.uiGetProfileHeader().find('.Avatar').invoke('attr', 'src').then((urlString) => { - const url = new URL(urlString); + const url = new URL(urlString!); const params = new URLSearchParams(url.search); return params.get('_'); }); } -function setInitialPicture(user) { +function setInitialPicture(user: Cypress.UserProfile) { cy.apiUploadFile('image', 'mattermost-icon.png', { url: `/api/v4/users/${user.id}/image`, method: 'POST', @@ -64,7 +64,7 @@ function setInitialPicture(user) { } function verifyProfilePictureDoesNotUpdateAfterCancel() { - let idOld; + let idOld: string | null | undefined; cy.visit('/'); diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts index ee730b1ecfd..e5d20caad9a 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/profile_picture_spec.ts @@ -13,7 +13,7 @@ // TODO: Remove import once e2e/cypress/tests/support/index.ts is converted to Typescript. import 'cypress-file-upload'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Profile > Profile Settings > Profile Picture', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/username_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/username_spec.ts index d42bfdb199c..9c263eee5ac 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/profile/username_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/profile/username_spec.ts @@ -10,14 +10,14 @@ // Stage: @prod // Group: @channels @account_setting -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Settings > Sidebar > General > Edit', () => { - let testTeam; - let testUser; - let testChannel; - let otherUser; - let offTopicUrl; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; + let testChannel: Cypress.Channel; + let otherUser: Cypress.UserProfile; + let offTopicUrl: string; before(() => { // # Login as admin and visit off-topic @@ -86,7 +86,7 @@ describe('Settings > Sidebar > General > Edit', () => { }); it('MM-T2053 Username w/ dot, dash, underscore still searches', () => { - let tempUser; + let tempUser: Cypress.UserProfile; // # Create a temporary user cy.apiCreateUser({prefix: 'temp'}).then(({user: user1}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts index 9cf45264e00..1f13bb6505e 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/security/active_sessions_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Profile > Security > View and Log Out of Active Sessions', () => { const platforms = [ diff --git a/e2e-tests/cypress/tests/integration/channels/account_settings/security/password_spec.ts b/e2e-tests/cypress/tests/integration/channels/account_settings/security/password_spec.ts index 07f29c6c42f..0fe9029ccdc 100644 --- a/e2e-tests/cypress/tests/integration/channels/account_settings/security/password_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/account_settings/security/password_spec.ts @@ -12,8 +12,8 @@ import moment from 'moment-timezone'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {newTestPassword} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {newTestPassword} from '@/utils'; describe('Profile', () => { let siteName: string; @@ -147,7 +147,7 @@ describe('Profile', () => { }); }); -function enterPasswords(currentPassword, newPassword, confirmPassword) { +function enterPasswords(currentPassword: string, newPassword: string, confirmPassword: string) { // # Enter Current password cy.get('#currentPassword').should('be.visible').type(currentPassword); diff --git a/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.ts b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.ts index 3e4a1cc701b..7d9af0260fb 100644 --- a/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_id_attrib_spec.ts @@ -14,11 +14,10 @@ // Group: @channels @enterprise @ldap @saml @keycloak -import {LdapUser} from 'tests/support/ldap_server_commands'; - -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; -import {getKeycloakServerSettings} from '../../../utils/config'; +import {LdapUser} from '@/support/ldap_server_commands'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; +import {getKeycloakServerSettings} from '@/utils/config'; describe('AD / LDAP', () => { let samlLdapUser: LdapUser; @@ -47,7 +46,7 @@ describe('AD / LDAP', () => { cy.apiUploadSAMLIDPCert('keycloak.crt'); // # Create Keycloak user and login for the first time - cy.keycloakCreateUsers([samlLdapUser]); + cy.keycloakCreateUsers([samlLdapUser] as LdapUser[]); cy.doKeycloakLogin(samlLdapUser); // # Wait for the UI to be ready which indicates SAML registration is complete diff --git a/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.ts b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.ts index 59919aef474..aaf0bc8f5cb 100644 --- a/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_remove_spec.ts @@ -14,9 +14,9 @@ // Group: @channels @enterprise @ldap @saml @keycloak -import {getAdminAccount} from '../../../support/env'; -import {generateLDAPUser, LdapUser} from '../../../support/ldap_server_commands'; -import {getKeycloakServerSettings} from '../../../utils/config'; +import {getAdminAccount} from '@/support/env'; +import {generateLDAPUser, LdapUser} from '@/support/ldap_server_commands'; +import {getKeycloakServerSettings} from '@/utils/config'; describe('AD / LDAP', () => { const nonLDAPUser = generateLDAPUser(); @@ -51,7 +51,7 @@ describe('AD / LDAP', () => { cy.apiUploadSAMLIDPCert('keycloak.crt'); // # Create Keycloak user and login for the first time - cy.keycloakCreateUsers([samlLdapUser, nonLDAPUser]); + cy.keycloakCreateUsers([samlLdapUser, nonLDAPUser] as LdapUser[]); cy.doKeycloakLogin(samlLdapUser); diff --git a/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.ts b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.ts index b1f3fb04119..80d5755e609 100644 --- a/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/ad_ldap/saml_ldap_sync_spec.ts @@ -14,11 +14,10 @@ // Group: @channels @enterprise @ldap @saml @keycloak -import {LdapUser} from 'tests/support/ldap_server_commands'; - -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; -import {getKeycloakServerSettings} from '../../../utils/config'; +import {LdapUser} from '@/support/ldap_server_commands'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; +import {getKeycloakServerSettings} from '@/utils/config'; describe('AD / LDAP', () => { const admin = getAdminAccount(); @@ -49,7 +48,7 @@ describe('AD / LDAP', () => { cy.apiUploadSAMLIDPCert('keycloak.crt'); // # Create Keycloak user and login for the first time - cy.keycloakCreateUsers([samlLdapUser]); + cy.keycloakCreateUsers([samlLdapUser] as LdapUser[]); cy.doKeycloakLogin(samlLdapUser); // # Wait for the UI to be ready which indicates SAML registration is complete diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts index 020e893b05d..dcb8d0ff943 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_add_reaction_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @channel -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Archived channels', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts index 7a0741a9b2d..7f1824e2fa2 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_post_spec.ts @@ -9,12 +9,12 @@ // Group: @channels @channel -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Archived channels', () => { - let testTeam; - let testUser; - let otherUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; + let otherUser: Cypress.UserProfile; before(() => { // # Login as test user and visit created channel diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts index 8cde043918a..ceb899b4a97 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_reaction_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @channel -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Archived channels', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts index 5c4732a19ec..0c720b87f82 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/archive_channel_search_spec.ts @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @channel -import {getRandomId} from '../../../utils'; - import {createArchivedChannel} from './helpers'; +import {getRandomId} from '@/utils'; + + describe('archive channel search tests', () => { - let testTeam; - let testChannel; - let testUser; + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; + let testUser: Cypress.UserProfile; const testArchivedMessage = `this is an archived post ${getRandomId()}`; before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/helpers.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/helpers.ts index 93b5c255c65..df07185d9c5 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/helpers.ts @@ -1,23 +1,17 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; -export function createArchivedChannel(channelOptions, messages, memberUsernames?) { +export function createArchivedChannel(channelOptions: Record, messages: string[], memberUsernames?: string[]) { return cy.uiCreateChannel(channelOptions).then((newChannel) => { if (memberUsernames) { cy.uiAddUsersToCurrentChannel(memberUsernames); } - if (messages) { - let messageList = messages; - if (!Array.isArray(messages)) { - messageList = [messages]; - } - messageList.forEach((message) => { - cy.postMessage(message); - }); - } + messages.forEach((message) => { + cy.postMessage(message); + }); cy.uiArchiveChannel(); diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts index 7b622c809f9..d7d8069c80e 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/join_archived_channel_spec.ts @@ -9,12 +9,12 @@ // Group: @channels @channel -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; describe('Archived channels', () => { - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; before(() => { cy.apiInitSetup().then(({team, user}) => { @@ -99,7 +99,7 @@ describe('Archived channels', () => { }); }); -function verifyViewingArchivedChannel(channel) { +function verifyViewingArchivedChannel(channel: Cypress.Channel) { // * Verify that we've switched to the correct channel and that the header contains the archived icon cy.get('#channelHeaderTitle').should('contain', channel.display_name); cy.findByTestId('channel-header-archive-icon').should('be.visible'); @@ -112,7 +112,7 @@ function verifyViewingArchivedChannel(channel) { cy.get('#channelArchivedMessage').should('be.visible'); } -function verifyUsername(username) { +function verifyUsername(username: string) { // * Verify that we've logged in as the test user cy.uiOpenUserMenu().findByText(`@${username}`); diff --git a/e2e-tests/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts index 1a64b447256..73779eada18 100644 --- a/e2e-tests/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/archived_channel/leave_archived_channel_spec.ts @@ -11,7 +11,7 @@ // Group: @channels @channel describe('Leaving archived channels', () => { - let testTeam; + let testTeam: Cypress.Team; before(() => { cy.apiInitSetup({loginAfter: true}).then(({team}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts index d54cbeeadb2..625dff0c6b5 100644 --- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_1_spec.ts @@ -10,14 +10,14 @@ // Stage: @prod // Group: @channels @system_console @authentication -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId, newTestPassword} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId, newTestPassword} from '@/utils'; describe('Authentication', () => { const restrictCreationToDomains = 'mattermost.com, test.com'; - let testUser; - let testUserAlreadyInTeam; - let testTeam; + let testUser: Cypress.UserProfile; + let testUserAlreadyInTeam: Cypress.UserProfile; + let testTeam: Cypress.Team; before(() => { // # Do email test if setup properly diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts index ac00e46bcbe..a830a8b9b14 100644 --- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_2_spec.ts @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @system_console @authentication @mfa -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Authentication', () => { beforeEach(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts index fa70a426185..fd1694f8428 100644 --- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_4_spec.ts @@ -10,11 +10,11 @@ // Stage: @prod // Group: @channels @system_console @authentication -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {reUrl, getRandomId, newTestPassword} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {reUrl, getRandomId, newTestPassword} from '@/utils'; describe('Authentication', () => { - let testUser; + let testUser: Cypress.UserProfile; before(() => { // # Do email test if setup properly diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts index 0c1297b502c..dbc72dd91f9 100644 --- a/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/authentication_not_cloud_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @authentication @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Authentication', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts b/e2e-tests/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts index b4ed8820776..c5bcdf5b80d 100644 --- a/e2e-tests/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/auth_sso/hide_create_account_spec.ts @@ -9,7 +9,7 @@ // Group: @channels @system_console @authentication -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Authentication', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/autocomplete/common_test.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/common_test.ts index d664ad0dc10..c029e4c332a 100644 --- a/e2e-tests/cypress/tests/integration/channels/autocomplete/common_test.ts +++ b/e2e-tests/cypress/tests/integration/channels/autocomplete/common_test.ts @@ -73,7 +73,7 @@ export function doTestDMChannelSidebar(testUsers: Record) { }).as('searchUsers'); cy.wait('@searchUsers').then((interception) => { - expect(interception.response.body.length === 1); + expect(interception.response?.body).to.have.length(1); }); // * There should only be one result diff --git a/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.ts index 35a75b9e8ba..d45a0788c5e 100644 --- a/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_channel_switcher_spec.ts @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @autocomplete -import {getRandomLetter} from '../../../../utils'; import {doTestQuickChannelSwitcher} from '../common_test'; import {createSearchData, SimpleUser} from '../helpers'; +import {getRandomLetter} from '@/utils'; + describe('Autocomplete with Database - Users', () => { const prefix = getRandomLetter(3); let testUsers: Record; diff --git a/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.ts index 4cb897f72b8..92f1d6980c3 100644 --- a/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_in_message_input_box_spec.ts @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @autocomplete -import {getRandomLetter} from '../../../../utils'; import {doTestPostextbox} from '../common_test'; import {createSearchData, SimpleUser} from '../helpers'; +import {getRandomLetter} from '@/utils'; + describe('Autocomplete with Database - Users', () => { const prefix = getRandomLetter(3); let testUsers: Record; diff --git a/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_spec.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_spec.ts index 7c8072d2ea9..21e6bb070d3 100644 --- a/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/autocomplete/database/users_spec.ts @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @autocomplete -import {getRandomLetter} from '../../../../utils'; import {doTestDMChannelSidebar, doTestUserChannelSection} from '../common_test'; import {createSearchData, SimpleUser} from '../helpers'; +import {getRandomLetter} from '@/utils'; + describe('Autocomplete with Database - Users', () => { const prefix = getRandomLetter(3); let testUsers: Record; diff --git a/e2e-tests/cypress/tests/integration/channels/autocomplete/helpers.ts b/e2e-tests/cypress/tests/integration/channels/autocomplete/helpers.ts index 34ee98c2ea1..312dd851588 100644 --- a/e2e-tests/cypress/tests/integration/channels/autocomplete/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/autocomplete/helpers.ts @@ -1,18 +1,18 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; -import {newTestPassword} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {newTestPassword} from '@/utils'; export type SimpleUser = Pick; -function createPrivateChannel(teamId: string, userToAdd: Cypress.UserProfile = null) { +function createPrivateChannel(teamId: string, userToAdd: Cypress.UserProfile | null = null) { // # Create a private channel as sysadmin return createChannel('P', teamId, userToAdd); } -function createPublicChannel(teamId: string, userToAdd: Cypress.UserProfile = null) { +function createPublicChannel(teamId: string, userToAdd: Cypress.UserProfile | null = null) { // # Create a public channel as sysadmin return createChannel('O', teamId, userToAdd); } @@ -38,8 +38,8 @@ function createSearchData(prefix: string) { } function getTestUsers(prefix = ''): Record { - if (Cypress.env('searchTestUsers')) { - return JSON.parse(Cypress.env('searchTestUsers')); + if (Cypress.expose('searchTestUsers')) { + return JSON.parse(Cypress.expose('searchTestUsers')); } return { @@ -189,7 +189,7 @@ function verifySuggestionAtChannelSwitcher(...expectedUsers: SimpleUser[]) { }); } -function createChannel(channelType: string, teamId: string, userToAdd: Cypress.UserProfile = null) { +function createChannel(channelType: string, teamId: string, userToAdd: Cypress.UserProfile | null = null) { // # Create a channel as sysadmin return cy.externalRequest({ user: getAdminAccount(), diff --git a/e2e-tests/cypress/tests/integration/channels/benchmark/message_spec.ts b/e2e-tests/cypress/tests/integration/channels/benchmark/message_spec.ts index 8d711d0446b..755826fe2d0 100644 --- a/e2e-tests/cypress/tests/integration/channels/benchmark/message_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/benchmark/message_spec.ts @@ -9,7 +9,7 @@ // Group: @channels @messaging @benchmark -import {reportBenchmarkResults} from '../../../utils/benchmark'; +import {reportBenchmarkResults} from '@/utils/benchmark'; describe('Message', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.ts index 673e2505a0f..3bb29a9a11f 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_1_spec.ts @@ -14,7 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Bot accounts ownership and API', () => { let newTeam: Team; @@ -45,7 +45,8 @@ describe('Bot accounts ownership and API', () => { // # Create a test bot cy.apiCreateBot().then(({bot}) => { - ({user_id: botId, display_name: botName} = bot); + botId = bot.user_id; + botName = bot.display_name!; cy.apiPatchUserRoles(bot.user_id, ['system_admin', 'system_user']); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.ts index d16eef898e0..cc9fe61f6b6 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_2_spec.ts @@ -14,7 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Bot accounts ownership and API', () => { let newTeam: Team; @@ -49,7 +49,9 @@ describe('Bot accounts ownership and API', () => { // # Create a test bot cy.apiCreateBot().then(({bot}) => { - ({user_id: botId, username: botUsername, display_name: botName} = bot); + botId = bot.user_id; + botUsername = bot.username; + botName = bot.display_name!; cy.apiPatchUserRoles(bot.user_id, ['system_admin', 'system_user']); }); }); @@ -66,7 +68,7 @@ describe('Bot accounts ownership and API', () => { const msg1 = 'this is a bot message ' + botName; // # Create a post - cy.apiCreatePost(channel.id, msg1 + ' to @sysadmin', '', {}, token); + cy.apiCreatePost(channel.id, msg1 + ' to @sysadmin', '', {}, token!); // # Re-login to validate post presence cy.apiAdminLogin(); @@ -87,7 +89,7 @@ describe('Bot accounts ownership and API', () => { const msg1 = 'this is a bot message ' + botName; // # Post test message - cy.postBotMessage({message: msg1, token, channelId: channel.id}); + cy.postBotMessage({message: msg1, token: token!, channelId: channel.id}); // # Validate post presence cy.visit(`/${newTeam.name}/channels/` + channel.name); @@ -104,7 +106,7 @@ describe('Bot accounts ownership and API', () => { // # Create token for the bot cy.apiAccessToken(botId, 'some text').then(({token}) => { const msg1 = 'this is a bot message ' + botName; - cy.postBotMessage({channelId: newChannel.id, message: msg1, props: {attachments: [{pretext: 'Look some text', text: 'This is text'}]}, token}); + cy.postBotMessage({channelId: newChannel.id, message: msg1, props: {attachments: [{pretext: 'Look some text', text: 'This is text'}]}, token: token!}); // # Visit test channel cy.visit(`/${newTeam.name}/channels/` + newChannel.name); @@ -120,7 +122,7 @@ describe('Bot accounts ownership and API', () => { cy.apiUpdateConfig(newSettings); const msg2 = 'this is a bot message2 ' + botName; - cy.postBotMessage({channelId: newChannel.id, message: msg2, props: {attachments: [{pretext: 'Look some text', text: 'This is text'}]}, token}); + cy.postBotMessage({channelId: newChannel.id, message: msg2, props: {attachments: [{pretext: 'Look some text', text: 'This is text'}]}, token: token!}); cy.visit(`/${newTeam.name}/channels/` + newChannel.name); @@ -161,7 +163,7 @@ describe('Bot accounts ownership and API', () => { const msg1 = 'this is a bot message ' + botName; // # Create a post - cy.postBotMessage({channelId: channel.id, message: msg1, token}); + cy.postBotMessage({channelId: channel.id, message: msg1, token: token!}); cy.visit(`/${newTeam.name}/channels/` + channel.name); @@ -182,7 +184,7 @@ describe('Bot accounts ownership and API', () => { cy.apiLogout(); // # Create a post - cy.postBotMessage({channelId: channel.id, message: msg2, token, failOnStatus: false}).then(({status}) => { + cy.postBotMessage({channelId: channel.id, message: msg2, token: token!, failOnStatus: false}).then(({status}) => { // * Validate that posting failed expect(status).to.equal(401); }); @@ -196,7 +198,7 @@ describe('Bot accounts ownership and API', () => { // # Try to post again // * Validate that posting works - cy.postBotMessage({channelId: channel.id, message: msg2, token}); + cy.postBotMessage({channelId: channel.id, message: msg2, token: token!}); // * Validate post presence cy.visit(`/${newTeam.name}/channels/` + channel.name); @@ -217,7 +219,7 @@ describe('Bot accounts ownership and API', () => { const msg1 = 'this is a bot message ' + botName; // # Create a post - cy.postBotMessage({channelId: channel.id, message: msg1, token}); + cy.postBotMessage({channelId: channel.id, message: msg1, token: token!}); // # Validate post presence cy.visit(`/${newTeam.name}/channels/` + channel.name); @@ -232,7 +234,7 @@ describe('Bot accounts ownership and API', () => { cy.findByText(`${botName} (@${botUsername})`).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); cy.get(`#${id}_deactivate`).click(); }); @@ -240,7 +242,7 @@ describe('Bot accounts ownership and API', () => { const msg2 = 'this is a bot message2 ' + botName; // # Create a post - cy.postBotMessage({channelId: channel.id, message: msg2, token, failOnStatus: false}).then(({status}) => { + cy.postBotMessage({channelId: channel.id, message: msg2, token: token!, failOnStatus: false}).then(({status}) => { // * Validate that posting failed expect(status).to.equal(401); }); @@ -251,12 +253,12 @@ describe('Bot accounts ownership and API', () => { cy.findByText(`${botName} (@${botUsername})`).scrollIntoView().then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); cy.get(`#${id}_activate`).click().wait(TIMEOUTS.ONE_SEC); // # Try to post again // * Validate that posting works - cy.postBotMessage({channelId: channel.id, message: msg2, token}); + cy.postBotMessage({channelId: channel.id, message: msg2, token: token!}); // # Validate post presence cy.visit(`/${newTeam.name}/channels/` + channel.name); @@ -278,7 +280,7 @@ describe('Bot accounts ownership and API', () => { const msg1 = 'this is a bot message ' + botName; // # Create a post - cy.postBotMessage({channelId: channel.id, message: msg1, token}); + cy.postBotMessage({channelId: channel.id, message: msg1, token: token!}); // # Validate post presence cy.visit(`/${newTeam.name}/channels/` + channel.name); @@ -293,7 +295,7 @@ describe('Bot accounts ownership and API', () => { cy.findByText(`${botName} (@${botUsername})`).scrollIntoView().then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Delete token cy.get(`#${id}_delete`).click(); @@ -303,7 +305,7 @@ describe('Bot accounts ownership and API', () => { const msg2 = 'this is a bot message2 ' + botName; // # Create a post - cy.postBotMessage({channelId: channel.id, message: msg2, token, failOnStatus: false}).then(({status}) => { + cy.postBotMessage({channelId: channel.id, message: msg2, token: token!, failOnStatus: false}).then(({status}) => { // * Validate that posting failed expect(status).to.equal(401); }); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.ts index 27b9406d1c2..a7cf7f9d005 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_api_not_cloud_spec.ts @@ -12,7 +12,7 @@ import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Bot accounts ownership and API', () => { let newTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.ts index f0c27cdb84c..930a471b10d 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/bot_channel_intro_spec.ts @@ -13,7 +13,7 @@ import {Bot} from '@mattermost/types/bots'; import {Team} from '@mattermost/types/teams'; -import {createBotPatch} from '../../../support/api/bots'; +import {createBotPatch} from '@/support/api/bots'; describe('Bot channel intro and avatar', () => { let team: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/create_bot_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/create_bot_spec.ts index d2c103a8e95..aeade34e88d 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/create_bot_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/create_bot_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @bot_accounts -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Create bot', () => { it('MM-T1810 Create a Bot via the UI', () => { diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.ts index 3138a3dbddf..328723cdcb2 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_not_cloud_spec.ts @@ -12,10 +12,11 @@ import {Team} from '@mattermost/types/teams'; -import {getRandomId} from '../../../utils'; - import {createBotInteractive} from './helpers'; +import {getRandomId} from '@/utils'; + + describe('Bot accounts - CRUD Testing', () => { let newTeam: Team; @@ -57,24 +58,24 @@ describe('Bot accounts - CRUD Testing', () => { // * Check that the previously created bot is listed cy.findByText(`Test Bot (@${botUsername})`).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Click the 'Create token' button - cy.wrap(el[0].parentElement.parentElement).findByText('Create New Token').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Create New Token').should('be.visible').click(); // # Add description - cy.wrap(el[0].parentElement.parentElement).find('input').click().type('description!'); + cy.wrap(el[0].parentElement!.parentElement!).find('input').click().type('description!'); // # Save cy.findByTestId('saveSetting').click(); // # Click Close button - cy.wrap(el[0].parentElement.parentElement).findByText('Close').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Close').should('be.visible').click(); - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // * Check that token is visible - cy.wrap(el[0].parentElement.parentElement).findAllByText(/Token ID:/).should('have.length', 2); + cy.wrap(el[0].parentElement!.parentElement!).findAllByText(/Token ID:/).should('have.length', 2); }); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_spec.ts index 9a4685e5b7b..87f6cffb470 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/crud_spec.ts @@ -13,10 +13,11 @@ import {Bot} from '@mattermost/types/bots'; import {Team} from '@mattermost/types/teams'; -import {getRandomId} from '../../../utils'; - import {createBotInteractive} from './helpers'; +import {getRandomId} from '@/utils'; + + describe('Bot accounts - CRUD Testing', () => { let newTeam: Team; let testBot: Bot & {fullDisplayName: string}; @@ -43,10 +44,10 @@ describe('Bot accounts - CRUD Testing', () => { // * Check that the previously created bot is listed cy.findByText(testBot.fullDisplayName).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Click the edit button - cy.wrap(el[0].parentElement.parentElement).findByText('Edit').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Edit').should('be.visible').click(); // * Validate redirect to edit screen cy.url().should('include', `/${newTeam.name}/integrations/bots/edit`); @@ -82,10 +83,10 @@ describe('Bot accounts - CRUD Testing', () => { // * Check that the previously created bot is listed cy.findByText(testBot.fullDisplayName).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Click the edit button - cy.wrap(el[0].parentElement.parentElement).findByText('Edit').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Edit').should('be.visible').click(); // * Validate redirect to edit screen cy.url().should('include', `/${newTeam.name}/integrations/bots/edit`); @@ -122,7 +123,7 @@ describe('Bot accounts - CRUD Testing', () => { // * Check that the previously created bot is listed cy.findByText(`Test Bot (@${botUsername})`).then((el) => { - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // * Validate that token is NOT visible on the next page const token = text.substr(text.indexOf('Token: ') + 7, 26); @@ -138,20 +139,20 @@ describe('Bot accounts - CRUD Testing', () => { // * Check that the previously created bot is listed cy.findByText(testBot.fullDisplayName).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Click the 'Create token' button - cy.wrap(el[0].parentElement.parentElement).findByText('Create New Token').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Create New Token').should('be.visible').click(); // # Try saving without description cy.findByTestId('saveSetting').click(); - cy.wrap(el[0].parentElement.parentElement).find('input').scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).find('input').scrollIntoView(); // * Check for error message cy.get('#clientError').should('be.visible'); // # Add description - cy.wrap(el[0].parentElement.parentElement).find('input').click().type(testBot.username + 'description!'); + cy.wrap(el[0].parentElement!.parentElement!).find('input').click().type(testBot.username + 'description!'); // # Save and check that no error is visible cy.findByTestId('saveSetting').click(); @@ -169,33 +170,33 @@ describe('Bot accounts - CRUD Testing', () => { // * Check that the previously created bot is listed cy.findByText(testBot.fullDisplayName).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Click the 'Create token' button - cy.wrap(el[0].parentElement.parentElement).findByText('Create New Token').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Create New Token').should('be.visible').click(); // # Add description - cy.wrap(el[0].parentElement.parentElement).find('input').click().type('description!'); + cy.wrap(el[0].parentElement!.parentElement!).find('input').click().type('description!'); // # Save cy.findByTestId('saveSetting').click(); // # Click Close button - cy.wrap(el[0].parentElement.parentElement).findByText('Close').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Close').should('be.visible').click(); - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // * Check that token is visible - cy.wrap(el[0].parentElement.parentElement).findByText(/Token ID:/).should('be.visible'); + cy.wrap(el[0].parentElement!.parentElement!).findByText(/Token ID:/).should('be.visible'); // # Click Delete button - cy.wrap(el[0].parentElement.parentElement).findByText('Delete').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).findByText('Delete').should('be.visible').click(); // * Validate that confirmation dialog is visible and click the delete button cy.get('#confirmModalButton').should('be.visible').click(); // * Check that token is not visible - cy.wrap(el[0].parentElement.parentElement).findByText(/Token ID:/).should('not.exist'); + cy.wrap(el[0].parentElement!.parentElement!).findByText(/Token ID:/).should('not.exist'); }); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/display_name_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/display_name_spec.ts index 334ee6c9a5d..8d49604bc32 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/display_name_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/display_name_spec.ts @@ -9,7 +9,6 @@ // Group: @channels @bot_accounts -import {Bot} from '@mattermost/types/bots'; import {Channel} from '@mattermost/types/channels'; import {UserProfile} from '@mattermost/types/users'; @@ -60,7 +59,7 @@ describe('Bot display name', () => { // # Post message as bot through api with auth token const props = {attachments: [{pretext: 'Some Pretext', text: 'Some Text'}]}; - cy.postBotMessage({token, message: firstMessage, props, channelId: offTopicChannel.id}). + cy.postBotMessage({token: token!, message: firstMessage, props, channelId: offTopicChannel.id}). its('id'). should('exist'). as('botPost'); @@ -80,8 +79,8 @@ describe('Bot display name', () => { should('have.text', bot.display_name); }).then(() => { // # Change display name after prior verification - cy.wrap(client.patchBot(bot.user_id, {display_name: `NEW ${bot.display_name}`})).then((newBot: Bot) => { - cy.postBotMessage({token, message: secondMessage, props, channelId: offTopicChannel.id}). + cy.wrap(client.patchBot(bot.user_id, {display_name: `NEW ${bot.display_name}`})).then(() => { + cy.postBotMessage({token: token!, message: secondMessage, props, channelId: offTopicChannel.id}). its('id'). should('exist'). as('newBotPost'); @@ -93,7 +92,7 @@ describe('Bot display name', () => { should('be.visible'); cy.findByTestId(`popover-fullname-${bot.username}`). - should('have.text', newBot.display_name); + should('have.text', `NEW ${bot.display_name}`); }); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.ts index 9ed1a49aad3..813f9e7649b 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_spec.ts @@ -12,8 +12,8 @@ import {Team} from '@mattermost/types/teams'; -import * as MESSAGES from '../../../fixtures/messages'; -import {getRandomId} from '../../../utils'; +import * as MESSAGES from '@/fixtures/messages'; +import {getRandomId} from '@/utils'; describe('Edit bot', () => { let testTeam: Team; @@ -69,7 +69,7 @@ describe('Edit bot', () => { }); }); - function createBot(userName, teamName) { + function createBot(userName: string, teamName: string) { // # Go to bot integrations page cy.uiOpenProductMenu('Integrations'); cy.get('a.integration-option[href$="/bots"]').click(); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.ts index aaf4330845f..5ee65cdf8a1 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/edit_bot_username_spec.ts @@ -12,8 +12,8 @@ import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Edit bot username', () => { let team: Team; @@ -74,6 +74,10 @@ describe('Edit bot username', () => { } return cy.wrap(null); }).then((newBotName) => { + if (!newBotName) { + throw new Error('Expected edited bot username to be returned'); + } + // * Set alias for bot entry in bot list, this also checks that the bot entry exists cy.get('.backstage-list__item').contains('.backstage-list__item', newBotName).as('newbotEntry'); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/helpers.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/helpers.ts index 766478c0a59..39ced36c4e7 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/helpers.ts @@ -3,8 +3,8 @@ import {Team} from '@mattermost/types/teams'; -import {getRandomId} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; export function createBotInteractive(team: Team, username = `bot-${getRandomId()}`) { // # Visit the Integrations > Bot Accounts page diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.ts index dfeb2253677..ef7f5916cd5 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_1_spec.ts @@ -15,9 +15,9 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {createBotPatch} from '../../../support/api/bots'; -import {generateRandomUser} from '../../../support/api/user'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {createBotPatch} from '@/support/api/bots'; +import {generateRandomUser} from '@/support/api/user'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Bots in lists', () => { let team: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.ts index 35d49b0770a..c11e5ce5073 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_lists_2_spec.ts @@ -14,15 +14,15 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {createBotPatch} from '../../../support/api/bots'; -import {generateRandomUser} from '../../../support/api/user'; +import {createBotPatch} from '@/support/api/bots'; +import {generateRandomUser} from '@/support/api/user'; describe('Bots in lists', () => { let team: Team; let channel: Channel; let testUser: UserProfile; - const STATUS_PRIORITY = { + const STATUS_PRIORITY: Record = { online: 0, away: 1, dnd: 2, @@ -40,9 +40,9 @@ describe('Bots in lists', () => { cy.makeClient().then(async (client) => { // # Create bots const bots = await Promise.all([ - client.createBot(createBotPatch()), - client.createBot(createBotPatch()), - client.createBot(createBotPatch()), + client.createBot(createBotPatch() as Partial), + client.createBot(createBotPatch() as Partial), + client.createBot(createBotPatch() as Partial), ]); // # Create users @@ -87,7 +87,7 @@ describe('Bots in lists', () => { // # Sort 'em const sortedUsers = Cypress._.sortBy(users, [ ({is_bot: isBot}) => (isBot ? 1 : 0), // users first - ({status}) => STATUS_PRIORITY[status], + ({status}) => STATUS_PRIORITY[status ?? 'offline'], ({username}) => username, ]); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.ts index 226e1c80cfc..69442b8396e 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/in_teams_and_channels_spec.ts @@ -13,8 +13,8 @@ import {Team} from '@mattermost/types/teams'; import {Channel} from '@mattermost/types/channels'; -import {createBotPatch} from '../../../support/api/bots'; -import {createChannelPatch} from '../../../support/api/channel'; +import {createBotPatch} from '@/support/api/bots'; +import {createChannelPatch} from '@/support/api/channel'; describe('Managing bots in Teams and Channels', () => { let team: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.ts index ee7146680ed..9d23cb42a34 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_not_cloud_spec.ts @@ -12,8 +12,8 @@ import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {matterpollPlugin} from '../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {matterpollPlugin} from '@/utils/plugins'; describe('Managing bot accounts', () => { let newTeam: Team; @@ -59,7 +59,7 @@ describe('Managing bot accounts', () => { cy.visit(`/${newTeam.name}/integrations/bots`); // # Search for the other bot - cy.get('#searchInput', {timeout: TIMEOUTS.ONE_MIN}).type(bot.display_name); + cy.get('#searchInput', {timeout: TIMEOUTS.ONE_MIN}).type(bot.display_name!); // * Validate that the plugin is still active, even though its owner is disabled cy.get('.bot-list__disabled').should('not.exist'); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.ts index e71db4bc8c7..93bc08be1a3 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/managing_bot_accounts_spec.ts @@ -12,8 +12,8 @@ import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Managing bot accounts', () => { let newTeam: Team; @@ -106,7 +106,7 @@ describe('Managing bot accounts', () => { // * Check that the previously created bot is listed cy.findByText(bot.fullDisplayName, {timeout: TIMEOUTS.ONE_MIN}).scrollIntoView().then((el) => { // # Click the disable button - cy.wrap(el[0].parentElement.parentElement).find('button:nth-child(3)').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).find('button:nth-child(3)').should('be.visible').click(); }); // * Check that the bot is in the 'disabled' section @@ -122,7 +122,7 @@ describe('Managing bot accounts', () => { // * Check that the previously created bot is listed cy.findByText(bot.fullDisplayName, {timeout: TIMEOUTS.ONE_MIN}).scrollIntoView().then((el) => { // # Click the disable button - cy.wrap(el[0].parentElement.parentElement).find('button:nth-child(3)').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).find('button:nth-child(3)').should('be.visible').click(); }); // # Filter bot @@ -131,7 +131,7 @@ describe('Managing bot accounts', () => { // # Re-enable the bot cy.get('.bot-list__disabled').scrollIntoView().findByText(bot.fullDisplayName, {timeout: TIMEOUTS.ONE_MIN}).scrollIntoView().then((el) => { // # Click the enable button - cy.wrap(el[0].parentElement.parentElement).find('button:nth-child(1)').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).find('button:nth-child(1)').should('be.visible').click(); }); // * Check that the bot is in the 'enabled' section @@ -148,10 +148,10 @@ describe('Managing bot accounts', () => { // * Check that the previously created bot is listed cy.findByText(bot.fullDisplayName, {timeout: TIMEOUTS.ONE_MIN}).then((el) => { // # Make sure it's on the screen - cy.wrap(el[0].parentElement.parentElement).scrollIntoView(); + cy.wrap(el[0].parentElement!.parentElement!).scrollIntoView(); // # Click the disable button - cy.wrap(el[0].parentElement.parentElement).find('button:nth-child(3)').should('be.visible').click(); + cy.wrap(el[0].parentElement!.parentElement!).find('button:nth-child(3)').should('be.visible').click(); }); // * Validate that disabled section appears @@ -185,7 +185,7 @@ describe('Managing bot accounts', () => { cy.visit(`/${newTeam.name}/integrations/bots`); // # Search for the other bot - cy.get('#searchInput', {timeout: TIMEOUTS.ONE_MIN}).type(bot.display_name); + cy.get('#searchInput', {timeout: TIMEOUTS.ONE_MIN}).type(bot.display_name!); // * Validate that the plugin is disabled since it's owner is deactivate cy.get('.bot-list__disabled').scrollIntoView().findByText(bot.fullDisplayName).scrollIntoView().should('be.visible'); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/post_message_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/post_message_spec.ts index 9906a3a4a8f..7f1f4d63324 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/post_message_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/post_message_spec.ts @@ -37,7 +37,7 @@ describe('Bot post message', () => { // # Post message as bot through api with auth token const props = {attachments: [{pretext: 'Some Pretext', text: 'Some Text'}]}; - cy.postBotMessage({token, message, props, channelId: offTopicChannel.id}). + cy.postBotMessage({token: token!, message, props, channelId: offTopicChannel.id}). its('id'). should('exist'). as('botPost'); diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.ts index c6ec6ba9c95..d3221b23a69 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/promote_demote_spec.ts @@ -12,7 +12,7 @@ import {Team} from '@mattermost/types/teams'; -import {createBotPatch} from '../../../support/api/bots'; +import {createBotPatch} from '@/support/api/bots'; describe('Managing bots in Teams and Channels', () => { let team: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.ts index 72ddf6dcf78..6b062c1b9d0 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/sidebar_display_spec.ts @@ -15,8 +15,8 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {createBotPatch} from '../../../support/api/bots'; -import {generateRandomUser} from '../../../support/api/user'; +import {createBotPatch} from '@/support/api/bots'; +import {generateRandomUser} from '@/support/api/user'; describe('Bot accounts', () => { let team: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/bot_accounts/tags_spec.ts b/e2e-tests/cypress/tests/integration/channels/bot_accounts/tags_spec.ts index 94c2ce8a5fc..a3a02eedb27 100644 --- a/e2e-tests/cypress/tests/integration/channels/bot_accounts/tags_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/bot_accounts/tags_spec.ts @@ -10,12 +10,13 @@ // Stage: @prod // Group: @channels @bot_accounts +import {Bot} from '@mattermost/types/bots'; import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {createBotPatch} from '../../../support/api/bots'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {createBotPatch} from '@/support/api/bots'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Bot tags', () => { let me: UserProfile; @@ -29,7 +30,7 @@ describe('Bot tags', () => { channel = out.channel; }); - let meId; + let meId: string; cy.getCurrentUserId().then((id) => { meId = id; @@ -38,7 +39,7 @@ describe('Bot tags', () => { cy.makeClient().then(async (client) => { // # Setup state me = await client.getUser(meId); - const bot = await client.createBot(createBotPatch()); + const bot = await client.createBot(createBotPatch() as Partial); await client.addToTeam(team.id, bot.user_id); await client.addToChannel(bot.user_id, channel.id); @@ -48,7 +49,7 @@ describe('Bot tags', () => { // # Post message as bot through api with auth token const props = {attachments: [{pretext: 'Some Pretext', text: 'Some Text'}]}; - cy.postBotMessage({token, message, props, channelId: channel.id}).then(async ({id}) => { + cy.postBotMessage({token: token!, message, props, channelId: channel.id}).then(async ({id}) => { postId = id; await client.pinPost(postId); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_1_spec.ts index cfd71240051..ac0e1630c6d 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_1_spec.ts @@ -13,7 +13,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Leave an archived channel', () => { let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_2_spec.ts index 2f9214801a4..24eb1a3bd96 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_2_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/archived_channels_2_spec.ts @@ -14,8 +14,8 @@ import {Channel, ServerChannel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; describe('Leave an archived channel', () => { let testTeam: Team; @@ -45,22 +45,24 @@ describe('Leave an archived channel', () => { type: 'P', } as Channel; - cy.wrap(client.createChannel(channelTest)).then(async (channel: ServerChannel) => { + cy.wrap(client.createChannel(channelTest)).then(async (channel: unknown) => { + const ch = channel as ServerChannel; // # Then invite us to it - await client.addToChannel(testUser.id, channel.id); + await client.addToChannel(testUser.id, ch.id); - return channel; + return ch; }).then((channel) => { // * Verify that the newly created channel is in the sidebar cy.get(`#sidebarItem_${channel.name}`).should('be.visible'); cy.wrap(channel); }).then(async (channel) => { + const ch = channel as ServerChannel; // # Then archive the channel - await client.deleteChannel(channel.id); + await client.deleteChannel(ch.id); // * Verify that the channel is no longer in the sidebar and that the app hasn't crashed - cy.get(`#sidebarItem_${channel.name}`).should('not.exist'); + cy.get(`#sidebarItem_${ch.name}`).should('not.exist'); }); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/browse_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/browse_channels_spec.ts index 4bfa991a8e4..556144560cc 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/browse_channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/browse_channels_spec.ts @@ -14,9 +14,11 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; import {createPrivateChannel} from '../enterprise/elasticsearch_autocomplete/helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + const channelType = { all: 'Channel Type: All', public: 'Channel Type: Public', diff --git a/e2e-tests/cypress/tests/integration/channels/channel/browse_public_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/browse_public_channels_spec.ts index f9b4797809f..9629d574205 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/browse_public_channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/browse_public_channels_spec.ts @@ -13,15 +13,15 @@ import {UserProfile} from '@mattermost/types/users'; // Stage: @prod // Group: @channels @channel -function verifyNoChannelToJoinMessage(isVisible) { +function verifyNoChannelToJoinMessage(isVisible: boolean) { cy.findByText('No public channels').should(isVisible ? 'be.visible' : 'not.exist'); } -function ensureHideJoinedCheckboxEnabled(shouldBeChecked) { +function ensureHideJoinedCheckboxEnabled(shouldBeChecked: boolean) { cy.get('#hideJoinedPreferenceCheckbox').then(($checkbox) => { cy.wrap($checkbox).findByText('Hide Joined').should('be.visible'); cy.wrap($checkbox).find('div.get-app__checkbox').invoke('attr', 'class').then(($classList) => { - if ($classList.split(' ').includes('checked') !== Boolean(shouldBeChecked)) { + if ($classList!.split(' ').includes('checked') !== Boolean(shouldBeChecked)) { // We click on the button only when the XOR operands do not match // e.g. checkbox is checked, but should not be checked; and vice-versa cy.wrap($checkbox).click(); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/channel_bookmarks_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/channel_bookmarks_spec.ts index 3d6730cde84..0cc25f12f14 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/channel_bookmarks_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/channel_bookmarks_spec.ts @@ -14,8 +14,8 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {getRandomId} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Channel Bookmarks', () => { const SpaceKeyCode = 32; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/channel_info_rhs_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/channel_info_rhs_spec.ts index 9a9dc478ec2..31407281516 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/channel_info_rhs_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/channel_info_rhs_spec.ts @@ -14,7 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {stubClipboard} from '../../../utils'; +import {stubClipboard} from '@/utils'; describe('Channel Info RHS', () => { let testTeam: Team; @@ -533,7 +533,7 @@ describe('Channel Info RHS', () => { }); }); -function ensureRHSIsOpenOnChannelInfo(testChannel) { +function ensureRHSIsOpenOnChannelInfo(testChannel: Cypress.Channel) { cy.get('#rhsContainer').then((rhsContainer) => { cy.wrap(rhsContainer).findByText('Info').should('be.visible'); cy.wrap(rhsContainer).find('.sidebar--right__title__subtitle').should('contain', testChannel.display_name); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/channel_members_rhs_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/channel_members_rhs_spec.ts index b30cf36d76b..1811ebf2665 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/channel_members_rhs_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/channel_members_rhs_spec.ts @@ -323,7 +323,7 @@ describe('Channel members RHS', () => { }); }); -function ensureChannelMembersRHSExists(testChannel) { +function ensureChannelMembersRHSExists(testChannel: Cypress.Channel) { cy.get('#rhsContainer').then((rhsContainer) => { cy.wrap(rhsContainer).findByText('Members').should('be.visible'); cy.wrap(rhsContainer).findByText(testChannel.display_name).should('be.visible'); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.ts index 4dc59d56291..fdd128816db 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/channel_mention_autocomplete_spec.ts @@ -14,7 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Channel', () => { let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.ts index cb1431a6f7d..b9e084520f3 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/channel_name_tooltips_spec.ts @@ -14,7 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const timestamp = Date.now(); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/channel_settings_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/channel_settings_spec.ts index 82212beb339..20e4335f208 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/channel_settings_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/channel_settings_spec.ts @@ -15,7 +15,7 @@ import {Team} from '@mattermost/types/teams'; import { beMuted, beUnmuted, -} from '../../../support/assertions'; +} from '@/support/assertions'; describe('Channel Settings', () => { let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/close_direct_group_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/close_direct_group_spec.ts index 67ed61b17c0..1d4bfc54d9a 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/close_direct_group_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/close_direct_group_spec.ts @@ -5,7 +5,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {ChainableT} from '../../../types'; +import {ChainableT} from '@/types'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) @@ -112,7 +112,7 @@ describe('Close group messages', () => { }); }); - function createAndVisitGMChannel(users = []) { + function createAndVisitGMChannel(users: UserProfile[] = []) { const userIds = users.map((user) => user.id); return cy.apiCreateGroupChannel(userIds).then(({channel}) => { // # Visit the new channel diff --git a/e2e-tests/cypress/tests/integration/channels/channel/convert_channel_type_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/convert_channel_type_spec.ts index eaf67a8bb21..e6c449fd55b 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/convert_channel_type_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/convert_channel_type_spec.ts @@ -5,7 +5,7 @@ import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; import {Channel} from '@mattermost/types/channels'; -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) @@ -51,7 +51,7 @@ describe('Channel Type Conversion (Public to Private Only)', () => { }); }; - const promoteToChannelAdmin = (userId, channelId, admin) => { + const promoteToChannelAdmin = (userId: string, channelId: string, admin: Pick) => { cy.externalRequest({ user: admin, method: 'put', diff --git a/e2e-tests/cypress/tests/integration/channels/channel/convert_group_message_to_private_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/convert_group_message_to_private_spec.ts index f7dbf28d9de..bb71a1b7ee4 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/convert_group_message_to_private_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/convert_group_message_to_private_spec.ts @@ -85,7 +85,7 @@ describe('Group Message Conversion To Private Channel', () => { }); it('When users belong to only one common team', () => { - let testUser4; + let testUser4: Cypress.UserProfile; let gm2; cy.apiCreateUser({prefix: 'other'}).then(({user}) => { @@ -120,7 +120,7 @@ describe('Group Message Conversion To Private Channel', () => { }); it('When users have no common team', () => { - let testUser5; + let testUser5: Cypress.UserProfile; let gm3; let testTeam3; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/leave_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/leave_channel_spec.ts index bb05e92c845..0db4493180d 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/leave_channel_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/leave_channel_spec.ts @@ -14,7 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Leave channel', () => { let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts index 8b851214981..0a99cf1ae6f 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/open_rhs_coming_from_system_console_spec.ts @@ -9,8 +9,8 @@ // Group: @channels @channel @rhs -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; describe('Channel RHS', () => { let testAdmin: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/channel/restrict_dm_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/restrict_dm_channels_spec.ts index 3702ac54709..1fd218036d2 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/restrict_dm_channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/restrict_dm_channels_spec.ts @@ -11,9 +11,9 @@ // Group: @channels @channel describe('Restrict Direct Message Channels', () => { - let testTeam; - let testUser; - let otherUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; + let otherUser: Cypress.UserProfile; before(() => { cy.apiUpdateConfig({ diff --git a/e2e-tests/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.ts index d3e0a65e2eb..5a301ec5c28 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/user_to_admin_updates_manage_channel_members_rhs_spec.ts @@ -33,7 +33,7 @@ describe('View Members modal', () => { }); }); -function verifyMemberDropdownAction(hasActionItem) { +function verifyMemberDropdownAction(hasActionItem: boolean) { // # Click member count to open member rhs cy.get('#member_rhs').click(); diff --git a/e2e-tests/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.ts index 23933b4c247..f7a666ac5a4 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel/user_to_channel_admin_member_updates_manage_channel_members_rhs_spec.ts @@ -11,9 +11,9 @@ import {UserProfile} from '@mattermost/types/users'; -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; -const demoteToChannelMember = (user, channelId, admin) => { +const demoteToChannelMember = (user: Pick, channelId: string, admin: Pick) => { cy.externalRequest({ user: admin, method: 'put', @@ -25,7 +25,7 @@ const demoteToChannelMember = (user, channelId, admin) => { }); }; -const promoteToChannelAdmin = (user, channelId, admin) => { +const promoteToChannelAdmin = (user: Pick, channelId: string, admin: Pick) => { cy.externalRequest({ user: admin, method: 'put', diff --git a/e2e-tests/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts index 226c173c2c3..449e7086484 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_settings/add_users_to_channel_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @channel @channel_settings -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Channel Settings', () => { let testTeam: Cypress.Team; @@ -43,14 +43,14 @@ describe('Channel Settings', () => { }); // # Change permission so that regular users can't add team members - cy.apiGetRolesByNames(['team_user']).then((result: any) => { - if (result.roles) { - const role = result.roles[0]; - const permissions = role.permissions.filter((permission) => { + cy.apiGetRolesByNames(['team_user']).then(({roles}) => { + if (roles?.length) { + const role = roles[0]; + const permissions = role.permissions.filter((permission: string) => { return !(['add_user_to_team'].includes(permission)); }); - if (permissions.length !== role.permissions) { + if (permissions.length !== role.permissions.length) { cy.apiPatchRole(role.id, {permissions}); } } @@ -117,10 +117,10 @@ describe('Channel Settings', () => { // # First add one user in order to see them disappearing from the list cy.get('#multiSelectList > div').not(':contains("Already in channel")').first().then((el) => { const childNodes = Array.from(el[0].childNodes); - childNodes.map((child: HTMLElement) => usernames.push(child.innerText)); + childNodes.map((child: ChildNode) => usernames.push((child as HTMLElement).innerText)); // # Get username from text for comparison - username = usernames.toString().match(/\w+/g)[0]; + username = usernames.toString().match(/\w+/g)![0]; cy.get('#multiSelectList').should('contain', username); // # Verify status wrapper is present within the modal list diff --git a/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts index e0ab30d0e2d..8e4300d1dd8 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_header_spec.ts @@ -13,8 +13,8 @@ import {ChannelType} from '@mattermost/types/channels'; -import {getRandomId} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Channel Settings', () => { let testTeam: Cypress.Team; diff --git a/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts index 10ef1451a88..edbf081df05 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_settings/channel_name_validations_spec.ts @@ -10,12 +10,12 @@ // Stage: @prod // Group: @channels @channel @channel_settings -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Channel routing', () => { - let testTeam: any; - let testUser: any; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; before(() => { cy.apiInitSetup().then(({team, user}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts index 23c8b2c95d7..f328219121e 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_collapsing_spec.ts @@ -10,14 +10,14 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; +import {getAdminAccount} from '@/support/env'; describe('Channel sidebar', () => { const sysadmin = getAdminAccount(); - let testTeam; + let testTeam: Cypress.Team; beforeEach(() => { // # Start with a new team diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts index f242c497025..1cc8b173d4f 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_muting_spec.ts @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @channel_sidebar -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; - import {clickCategoryMenuItem} from './helpers'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; + + describe('Category muting', () => { - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; before(() => { cy.apiInitSetup({loginAfter: true}).then((({team, user}) => { @@ -106,12 +107,13 @@ describe('Category muting', () => { scheme_id: '', update_at: 0, last_root_post_at: 0, - })).then((channel: Cypress.Channel) => { + })).then((channel: unknown) => { + const ch = channel as Cypress.Channel; // # And then invite us to it - cy.wrap(client.addToChannel(testUser.id, channel.id)); + cy.wrap(client.addToChannel(testUser.id, ch.id)); // * Verify that the test channel appears in the sidebar and is unmuted - cy.get(`#sidebarItem_${channel.name}`).should('be.visible').should('not.have.class', 'muted'); + cy.get(`#sidebarItem_${ch.name}`).should('be.visible').should('not.have.class', 'muted'); }); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts index 24b6422c5e7..11b31aa029b 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_1_spec.ts @@ -10,13 +10,14 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; - import {clickSortCategoryMenuItem} from './helpers'; -let testTeam; -let testUser; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; + + +let testTeam: Cypress.Team; +let testUser: Cypress.UserProfile; describe('Category sorting', () => { beforeEach(() => { @@ -105,7 +106,7 @@ describe('Category sorting', () => { }); }); -function createChannelAndAddToCategory(categoryName) { +function createChannelAndAddToCategory(categoryName: string) { const channelName = `channel-${getRandomId()}`; const userId = testUser.id; cy.apiCreateChannel(testTeam.id, channelName, 'New Test Channel').then(({channel}) => { @@ -118,9 +119,9 @@ function createChannelAndAddToCategory(categoryName) { return channelName; } -function verifyAlphabeticalSortingOrder(categoryName, length) { +function verifyAlphabeticalSortingOrder(categoryName: string, length: number) { // # Go through each channel to get its name - const sortedAlphabeticalChannelNames = []; + const sortedAlphabeticalChannelNames: string[] = []; for (let i = 0; i < length; i++) { // Grab the elements in the order that they appear in the sidebar cy.get(`.SidebarChannelGroup:contains(${categoryName}) .NavGroupContent li:nth-child(${i + 1}) .SidebarChannelLinkLabel`).should('be.visible').invoke('text').then((text) => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts index 0e065487665..5c38ad76b25 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/category_sorting_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Category sorting', () => { beforeEach(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts index a5842c8fcaf..2cae40a6f28 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/channel_sidebar_spec.ts @@ -10,19 +10,19 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; -function verifyChannelSwitch(displayName, url) { +function verifyChannelSwitch(displayName: string, url: string) { cy.get('#channelHeaderTitle', {timeout: TIMEOUTS.HALF_MIN}).should('be.visible').should('contain', displayName); cy.url().should('include', url); } describe('Channel sidebar', () => { const sysadmin = getAdminAccount(); - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; before(() => { // # Login as test user and visit town-square diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts index 8444fb1af94..a876ab141cf 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/custom_categories_spec.ts @@ -10,11 +10,12 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; - import {clickCategoryMenuItem} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; + + describe('Channel sidebar', () => { before(() => { // # Login as test user and visit town-square diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts index d33f4f724d2..0ef4eebe58f 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_category_spec.ts @@ -9,14 +9,14 @@ // Group: @channels @dm_category -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const SpaceKeyCode = 32; const DownArrowKeyCode = 40; describe('MM-T3156 DM category', () => { - let testUser; - const usernames = []; + let testUser: Cypress.UserProfile; + const usernames: string[] = []; before(() => { // # Login as test user and visit town-square diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts index 280ed38765a..5bd73cfb8b2 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_behaviour_spec.ts @@ -9,10 +9,10 @@ // Group: @channels @dm_category -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('DM category', () => { - let testUser; + let testUser: Cypress.UserProfile; before(() => { // # Login as test user and visit town-square diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts index 9f461cdf3ef..77b1e304937 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_gm_filtering_sorting_spec.ts @@ -9,10 +9,10 @@ // Group: @channels @dm_category -import * as MESSAGES from '../../../fixtures/messages'; +import * as MESSAGES from '@/fixtures/messages'; describe('DM/GM filtering and sorting', () => { - let testUser; + let testUser: Cypress.UserProfile; before(() => { // # Login as test user and visit town-square diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts index 94e272bafc4..fcad4b4edac 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/dm_sidebar_not_remove_spec.ts @@ -11,8 +11,8 @@ // Group: @channels @dm_category describe('DM on sidebar', () => { - let testUser; - let otherUser; + let testUser: Cypress.UserProfile; + let otherUser: Cypress.UserProfile; before(() => { cy.apiCreateUser().then(({user}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts index 2ea82e85105..d78ff4d9e49 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/drag_and_drop_spec.ts @@ -10,14 +10,14 @@ // Stage: @prod @smoke // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Channel sidebar', () => { const SpaceKeyCode = 32; const DownArrowKeyCode = 40; - let teamName; - let channelName; + let teamName: string; + let channelName: string; before(() => { cy.apiCreateCustomAdmin({loginAfter: true}); diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts index 3343b64d426..8dffea78225 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/group_unreads_separately_spec.ts @@ -10,11 +10,11 @@ // Stage: @prod // Group: @channels @channel_sidebar -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Channel sidebar - group unreads separately', () => { - let testTeam; - let testChannel; + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; beforeEach(() => { cy.apiAdminLogin().then(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/helpers.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/helpers.ts index 83eaa976e06..4ae3b8ecb70 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/helpers.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; type ClickCategoryMenuItemProps = { categoryDisplayName: string; @@ -28,7 +28,7 @@ export function clickCategoryMenuItem({categoryDisplayName, menuItemText, catego }); } -export function clickSortCategoryMenuItem(categoryDisplayName, menuItemText) { +export function clickSortCategoryMenuItem(categoryDisplayName: string, menuItemText: string) { clickCategoryMenuItem({categoryDisplayName, menuItemText: 'Sort', isSubMenu: true}); cy.wait(TIMEOUTS.HALF_SEC); diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts index dd4af5b96a6..875a3578f03 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/history_channel_switcher_spec.ts @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Channel sidebar', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts index 61e1b5b48a4..46a42f8a516 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/hotkeys_spec.ts @@ -9,14 +9,14 @@ // Group: @channels @channel_sidebar -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Channel switching', () => { const sysadmin = getAdminAccount(); const cmdOrCtrl = Cypress.platform === 'darwin' ? '{cmd}' : '{ctrl}'; - let testTeam; - let testChannel; + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; beforeEach(() => { // # Start with a new team diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts index 23ee8c47e62..7b369bfffbd 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_category_badge_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @channel_sidebar -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('New category badge', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts index f1acfa370f5..48722cb4b70 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/new_channel_dropdown_spec.ts @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @channel_sidebar -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Channel sidebar', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts index 4fd602b7233..bf0297a7996 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_category_menu_spec.ts @@ -1,10 +1,11 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {clickCategoryMenuItem} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) // - [*] indicates an assertion (e.g. * Check the title) diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts index 768721812ab..7967c407531 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/sidebar_channel_menu_spec.ts @@ -14,16 +14,16 @@ import { beRead, beUnmuted, beUnread, -} from '../../../support/assertions'; -import {getAdminAccount} from '../../../support/env'; -import {getRandomId, stubClipboard} from '../../../utils'; +} from '@/support/assertions'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId, stubClipboard} from '@/utils'; describe('Sidebar channel menu', () => { const sysadmin = getAdminAccount(); const townSquare = 'Town Square'; - let teamName; - let userName; + let teamName: string; + let userName: string; before(() => { cy.apiInitSetup({loginAfter: true}).then(({team, user}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts index f57921717df..47d603240bb 100644 --- a/e2e-tests/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/channel_sidebar/unread_filter_spec.ts @@ -13,16 +13,16 @@ import { beMuted, beRead, beUnread, -} from '../../../support/assertions'; -import {getAdminAccount} from '../../../support/env'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +} from '@/support/assertions'; +import {getAdminAccount} from '@/support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Channel sidebar unread filter', () => { const randomId = getRandomId(); - let testUser; - let teamId; + let testUser: Cypress.UserProfile; + let teamId: string; before(() => { // # Setting up for CRT @@ -334,7 +334,7 @@ function disableUnreadFilterWithShortcut() { cy.get('.SidebarChannelGroupHeader:contains(UNREADS)').should('not.exist'); } -function createChannel(teamId, channelName, message?) { +function createChannel(teamId: string, channelName: string, message?: string) { return cy.apiCreateChannel(teamId, channelName, channelName, 'O', '', '', false).then(({channel}) => { if (message) { cy.wait(TIMEOUTS.THREE_SEC); diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.ts index ceeacac70bd..52f40ad1e47 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/channel_notifications_spec.ts @@ -12,8 +12,8 @@ import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {PostMessageResp} from '../../../support/task_commands'; -import {spyNotificationAs} from '../../../support/notification'; +import {PostMessageResp} from '@/support/task_commands'; +import {spyNotificationAs} from '@/support/notification'; describe('CRT Desktop notifications', () => { let testTeam: Team; @@ -133,7 +133,7 @@ describe('CRT Desktop notifications', () => { cy.postMessageAs({sender, message, channelId: testChannelId, rootId: postId}); // * Verify stub was called with correct title and body - cy.get('@notifySpy').should('have.been.calledWithMatch', `Reply in ${testChannelName}`, (args) => { + cy.get('@notifySpy').should('have.been.calledWithMatch', `Reply in ${testChannelName}`, (args: {body: string}) => { expect(args.body, `Notification body: "${args.body}" should match: "${message}"`).to.equal(`@${sender.username}: ${message}`); return true; }); @@ -235,7 +235,7 @@ describe('CRT Desktop notifications', () => { cy.postMessageAs({sender, message, channelId: testChannelId, rootId: postId}); // * Verify Notification stub was called with correct title and body with at-mention as per channel settings - cy.get('@notifySpy2').should('have.been.calledWithMatch', `Reply in ${testChannelName}`, (args) => { + cy.get('@notifySpy2').should('have.been.calledWithMatch', `Reply in ${testChannelName}`, (args: {body: string}) => { expect(args.body, `Notification body: "${args.body}" should match: "${message}"`).to.equal(`@${sender.username}: ${message}`); return true; }); diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.ts index 6a6d5980d93..51f36d240fa 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_1_spec.ts @@ -14,10 +14,11 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as MESSAGES from '../../../fixtures/messages'; -import {matterpollPlugin} from '../../../utils/plugins'; import {interceptFileUpload} from '../files_and_attachments/helpers'; +import * as MESSAGES from '@/fixtures/messages'; +import {matterpollPlugin} from '@/utils/plugins'; + describe('Collapsed Reply Threads', () => { let testTeam: Team; let testChannel: Channel; diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.ts index 970a5ba4252..eba6835036c 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/files_spec.ts @@ -14,9 +14,11 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as MESSAGES from '../../../fixtures/messages'; import {waitUntilUploadComplete, interceptFileUpload} from '../files_and_attachments/helpers'; +import * as MESSAGES from '@/fixtures/messages'; + + describe('Collapsed Reply Threads', () => { let testTeam: Team; let testChannel: Channel; diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.ts index cc6aa9565de..97f81ac1c9e 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/following_spec.ts @@ -13,9 +13,9 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {isMac} from '../../../utils'; -import {ChainableT} from '../../../types'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {isMac} from '@/utils'; +import {ChainableT} from '@/types'; describe('Collapsed Reply Threads', () => { let testTeam: Team; @@ -244,7 +244,7 @@ describe('Collapsed Reply Threads', () => { }); }); -function postMessageWithReply(channelId, postSender, postMessage, replySender, replyMessage): ChainableT { +function postMessageWithReply(channelId: string, postSender: {username: string; password: string}, postMessage: string, replySender: {username: string; password: string}, replyMessage: string): ChainableT { return cy.postMessageAs({ sender: postSender, message: postMessage || 'Another interesting post.', @@ -261,18 +261,18 @@ function postMessageWithReply(channelId, postSender, postMessage, replySender, r function scrollThreadsListToEnd(maxScrolls = 1, scrolls = 0): ChainableT { if (scrolls === maxScrolls) { - return; + return cy.wrap(undefined); } - cy.get('.ThreadList .virtualized-thread-list').scrollTo('bottom').then(($el) => { + return cy.get('.ThreadList .virtualized-thread-list').scrollTo('bottom').then(($el) => { const element = $el.find('.no-results__wrapper'); if (element.length < 1) { - cy.wait(TIMEOUTS.ONE_SEC).then(() => { - scrollThreadsListToEnd(maxScrolls, scrolls + 1); + return cy.wait(TIMEOUTS.ONE_SEC).then(() => { + return scrollThreadsListToEnd(maxScrolls, scrolls + 1); }); - } else { - cy.wrap(element).scrollIntoView(); } + + return cy.wrap(element).scrollIntoView().then(() => undefined); }); } diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.ts index e95d530516f..fc3093ddcbb 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/global_threads_spec.ts @@ -12,7 +12,8 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {PostMessageResp} from 'tests/support/task_commands'; + +import {PostMessageResp} from '@/support/task_commands'; describe('Collapsed Reply Threads', () => { let testTeam: Team; @@ -420,12 +421,12 @@ describe('Collapsed Reply Threads', () => { it('CRT - Threads list keyboard navigation', () => { // # Post a few messages as another user and then reply to each one as the current user to follow them - let firstRoot; - let firstReply; - let secondRoot; - let secondReply; - let thirdRoot; - let thirdReply; + let firstRoot: PostMessageResp; + let firstReply: PostMessageResp; + let secondRoot: PostMessageResp; + let secondReply: PostMessageResp; + let thirdRoot: PostMessageResp; + let thirdReply: PostMessageResp; cy.postMessageAs({sender: user1, message: messages.ROOT + '1', channelId: testChannel.id}).then((post) => { firstRoot = post; diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.ts index 80cdb9dff7c..d54d12da474 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/last_viewed_spec.ts @@ -5,7 +5,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.ts index e3017773d72..446a2821f83 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/replies_spec.ts @@ -13,9 +13,9 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {PostMessageResp} from 'tests/support/task_commands'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {PostMessageResp} from '@/support/task_commands'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Collapsed Reply Threads', () => { let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.ts b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.ts index bb51addb225..0cb8e59b45d 100644 --- a/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/collapsed_reply_threads/unread_spec.ts @@ -13,7 +13,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Collapsed Reply Threads', () => { let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/commands/leave_channel_spec.ts b/e2e-tests/cypress/tests/integration/channels/commands/leave_channel_spec.ts index 5ea095d9752..d11cfa1cd99 100644 --- a/e2e-tests/cypress/tests/integration/channels/commands/leave_channel_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/commands/leave_channel_spec.ts @@ -10,10 +10,10 @@ // Stage: @prod // Group: @channels @commands -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Leave Channel Command', () => { - let testChannel; + let testChannel: Cypress.Channel; before(() => { // # Login as test user and go to town-square diff --git a/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts index 8746f42f7d8..c269ec1ac74 100644 --- a/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/custom_status/custom_status_5_spec.ts @@ -14,7 +14,7 @@ describe('Custom Status - Verifying Where Custom Status Appears', () => { emoji: 'grinning', text: 'Busy', }; - let currentUser; + let currentUser: Cypress.UserProfile; before(() => { cy.apiUpdateConfig({TeamSettings: {EnableCustomUserStatuses: true}}); diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts index 9d99bf6f8ea..592e9abfb96 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_1_spec.ts @@ -9,15 +9,16 @@ // Group: @channels @emoji -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {getCustomEmoji, verifyLastPostedEmoji} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Custom emojis', () => { - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; let otherUser; - let offTopicUrl; + let offTopicUrl: string; const largeEmojiFile = 'gif-image-file.gif'; const largeEmojiFileResized = 'gif-image-file-resized.gif'; @@ -103,7 +104,7 @@ describe('Custom emojis', () => { }); }); -function saveCustomEmoji(teamName) { +function saveCustomEmoji(teamName: string) { // # Click on Save cy.findByText('Save').click(); diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts index cdbac288849..3bdd70b7154 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_1_spec.ts @@ -10,15 +10,16 @@ // Stage: @prod // Group: @channels @emoji -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {getCustomEmoji} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Custom emojis', () => { - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; let otherUser; - let offTopicUrl; + let offTopicUrl: string; const tooLargeEmojiFile = 'huge-image.jpg'; @@ -161,7 +162,7 @@ describe('Custom emojis', () => { }); }); -function saveCustomEmoji(teamName) { +function saveCustomEmoji(teamName: string) { // # Click on Save cy.findByText('Save').click(); diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts index ac181e660ff..ebea4a7a67c 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_1_spec.ts @@ -9,15 +9,16 @@ // Group: @channels @emoji -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {getCustomEmoji, verifyLastPostedEmoji} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Custom emojis', () => { - let testTeam; - let testUser; - let otherUser; - let townsquareLink; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; + let otherUser: Cypress.UserProfile; + let townsquareLink: string; const largeEmojiFile = 'gif-image-file.gif'; const largeEmojiFileResized = 'gif-image-file-resized.gif'; diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts index 81afc15215a..f5b639d40ea 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_2_spec.ts @@ -10,15 +10,16 @@ // Stage: @prod // Group: @channels @emoji -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {getCustomEmoji} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Custom emojis', () => { - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; let otherUser; - let townsquareLink; + let townsquareLink: string; const largeEmojiFile = 'gif-image-file.gif'; before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts index 8310f572417..2e84c9c94ad 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/custom_emoji_3_spec.ts @@ -10,17 +10,20 @@ // Stage: @prod // Group: @channels @emoji -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; import {doReactToLastMessageShortcut, checkReactionFromPost} from '../keyboard_shortcuts/ctrl_cmd_shift_slash/helpers'; import {getCustomEmoji} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; + + + describe('Custom emojis', () => { - let testTeam; - let testUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; let otherUser; - let townsquareLink; + let townsquareLink: string; const builtinEmoji = 'taco'; const builtinEmojiWithColons = ':taco:'; diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/helpers.js b/e2e-tests/cypress/tests/integration/channels/emoji/helpers.js index b4cc582eafc..08165abf1d5 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/emoji/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; export function getCustomEmoji() { const customEmoji = `emoji${getRandomId()}`; diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts index c397377d3e8..969e85cd26e 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_1_spec.ts @@ -10,15 +10,16 @@ // Stage: @prod // Group: @channels @emoji @timeout_error -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; - import {getCustomEmoji} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; + + describe('Recent Emoji', () => { const largeEmojiFile = 'gif-image-file.gif'; - let townsquareLink; + let townsquareLink: string; before(() => { cy.apiUpdateConfig({ diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts index 5e909cc4d83..d53a72091ff 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/recently_used_emoji_2_spec.ts @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @emoji @timeout_error -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; describe('Recent Emoji', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts b/e2e-tests/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts index 24970837354..85b2367f010 100644 --- a/e2e-tests/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/emoji/sorted_emojis_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @emoji -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Emoji sorting', () => { before(() => { @@ -40,7 +40,7 @@ describe('Emoji sorting', () => { } }); - const emojiList = []; + const emojiList: string[] = []; // # Post a guardsman emoji cy.postMessage(':guardsman:'); @@ -57,7 +57,7 @@ describe('Emoji sorting', () => { // # Get list of recent emojis based on search text cy.findAllByTestId('emojiItem').children('img').each(($el) => { const emojiName = $el.get(0); - emojiList.push(emojiName.dataset.testid); + emojiList.push(emojiName.dataset.testid!); }).then(() => { // # Comparing list of emojis obtained from search above and making sure order is same as requirement describes expect(emojiList).to.deep.equal([ diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.ts index 2b2afa98176..39b778becf2 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_input_fields_spec.ts @@ -13,7 +13,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Verify Accessibility Support in different input fields', () => { let testTeam: Team; @@ -276,7 +276,7 @@ describe('Verify Accessibility Support in different input fields', () => { }); }); -function verifySearchAutocomplete(index) { +function verifySearchAutocomplete(index: number) { cy.get('#searchBox').find('.suggestion-list__item').eq(index).should('be.visible'). and('have.class', 'suggestion--selected'). invoke('attr', 'id').then((suggestionId) => { @@ -284,7 +284,7 @@ function verifySearchAutocomplete(index) { }); } -function verifyMessageAutocomplete(index) { +function verifyMessageAutocomplete(index: number) { cy.get('#suggestionList').find('.suggestion-list__item').eq(index).should('be.visible').and('have.class', 'suggestion--selected'); cy.get('#suggestionList').find('.suggestion-list__item').eq(index).invoke('attr', 'id').then((selectedId) => { cy.wrap(selectedId).should('not.equal', ''); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.ts index 15482636331..5f69a84380f 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/accessibility/accessibility_modals_dialogs_1_spec.ts @@ -13,7 +13,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Verify Accessibility Support in Modals & Dialogs', () => { let testTeam: Team; @@ -123,7 +123,7 @@ function verifyChannelMenuModal(menuItem: string, modalName?: string) { verifyModal(menuItem, modalName); } -function verifyUserMenuModal(menuItem) { +function verifyUserMenuModal(menuItem: string) { cy.uiGetSetStatusButton().click(); verifyModal(menuItem); } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts index 582f21eb01a..d4f2f51f3c9 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/authentication_spec.ts @@ -12,8 +12,8 @@ import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getRandomId, newTestPassword} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId, newTestPassword} from '@/utils'; describe('Authentication', () => { const restrictCreationToDomains = 'mattermost.com, test.com'; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.ts index 91a4684e159..fb244c14520 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/auth_sso/mfa_authentication_spec.ts @@ -12,7 +12,7 @@ import {UserProfile} from '@mattermost/types/users'; import * as authenticator from 'authenticator'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Authentication', () => { let mfaSysAdmin: UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.ts index 30c6fcfb6da..e9ac1373864 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/bot_accounts/managing_bot_accounts_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @bot_accounts -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Managing bot accounts', () => { let botName: string; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts index 11328c68bd5..ad65ce6e32c 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/channel/channel_groups_spec.ts @@ -10,11 +10,11 @@ // Stage: @prod // Group: @channels @enterprise @ldap_group -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('channel groups', () => { - const groups = []; - let testTeam; + const groups: Array<{id: string; remote_id: string}> = []; + let testTeam: Cypress.Team; before(() => { cy.apiRequireLicenseForFeature('LDAP'); @@ -58,7 +58,7 @@ describe('channel groups', () => { openAddGroupsToChannelModal(); // * Ensure at least 2 groups are listed - let beforeCount; + let beforeCount: number; cy.get('#addGroupsToChannelModal').find('.more-modal__row').then((items) => { beforeCount = Cypress.$(items).length; }); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js index 59adf96b98d..bbbe74eab9f 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/after_subscription_spec.js @@ -9,8 +9,8 @@ // Group: @channels @cloud_only @cloud_trial -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; -import billing from '../../../../../fixtures/client_billing.json'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import billing from '@/fixtures/client_billing.json'; describe('System Console - after subscription scenarios', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts index 0134ee1b686..215f91b2bca 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/cloud_pricing_modal_spec.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) @@ -12,7 +12,7 @@ import * as TIMEOUTS from '../../../../../fixtures/timeouts'; // Stage: @prod // Group: @channels @cloud_only @cloud_trial -function simulateSubscriptionWithLimitsUsage(subscription, withLimits = {}, postsUsed) { +function simulateSubscriptionWithLimitsUsage(subscription: {id: string; product_id: string; is_free_trial: string}, withLimits = {}, postsUsed: number) { cy.intercept('GET', '**/api/v4/cloud/subscription', { statusCode: 200, body: subscription, @@ -54,7 +54,7 @@ function simulateSubscriptionWithLimitsUsage(subscription, withLimits = {}, post }); } -function simulateSubscription(subscription, withLimits = true) { +function simulateSubscription(subscription: {id: string; product_id: string; is_free_trial: string}, withLimits = true) { cy.intercept('GET', '**/api/v4/cloud/subscription', { statusCode: 200, body: subscription, @@ -111,8 +111,15 @@ function simulateSubscription(subscription, withLimits = true) { } describe('Pricing modal', () => { - let urlL; - let nonAdminUser; + let urlL: string; + let nonAdminUser: Cypress.UserProfile; + + before(() => { + cy.apiInitSetup().then(({user, offTopicUrl: url}) => { + urlL = url; + nonAdminUser = user; + }); + }); it('should not show Upgrade button in global header for non admin users', () => { const subscription = { @@ -120,13 +127,9 @@ describe('Pricing modal', () => { product_id: 'prod_1', is_free_trial: 'false', }; - cy.apiInitSetup().then(({user, offTopicUrl: url}) => { - urlL = url; - nonAdminUser = user; - simulateSubscription(subscription); - cy.apiLogin(user); - cy.visit(url); - }); + simulateSubscription(subscription); + cy.apiLogin(nonAdminUser); + cy.visit(urlL); // * Check that Upgrade button does not show cy.get('#UpgradeButton').should('not.exist'); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts index ef511fce5a6..c4ebd41536d 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/company_information_free_trial_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @cloud_only @cloud_trial -import {getRandomLetter} from '../../../../../utils/index'; +import {getRandomLetter} from '@/utils/index'; describe('System Console - Company Information section', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts index 49c28883ac8..1421bee2535 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/notify_admin_spec.ts @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @cloud_only @cloud_trial -import {getAdminAccount} from '../../../../../support/env'; -import {newTestPassword} from '../../../../../utils'; +import {getAdminAccount} from '@/support/env'; +import {newTestPassword} from '@/utils'; const admin = getAdminAccount(); @@ -47,7 +47,7 @@ function simulateFilesLimitReached(fileStorageUsageBytes: number) { } // Move to utils -function simulateSubscription(subscription: Subscription, withLimits = {}) { +function simulateSubscription(subscription: Partial, withLimits = {}) { cy.intercept('GET', '**/api/v4/cloud/subscription', { statusCode: 200, body: subscription, @@ -86,7 +86,7 @@ function simulateSubscription(subscription: Subscription, withLimits = {}) { } function createUsersProcess(team: { id: string }, channel: { id: string }, times: number) { - const users = []; + const users: Cypress.UserProfile[] = []; for (let i = 0; i < times; i++) { cy.apiCreateUser({prefix: 'other'}).then(({user}) => { users.push(user); @@ -162,7 +162,7 @@ function createTrialNotificationForEnterpriseFeatures() { })); } -function triggerNotifications(url, trial = false, _failOnStatusCode = true) { +function triggerNotifications(url: string, trial = false, _failOnStatusCode = true) { cy.apiAdminLogin().then(() => { cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, @@ -206,7 +206,7 @@ function deletePost() { cy.externalRequest({user: admin, method: 'DELETE', path: `posts/${postId}`}); }); } -function assertNotification(featureId, minimumPlan, totalRequests, requestsCount, teamName, trial = false) { +function assertNotification(featureId: string, minimumPlan: string, totalRequests: number, requestsCount: number, teamName: string, trial = false) { // # Open system-bot and admin DM cy.visit(`/${teamName}/messages/@system-bot`); @@ -267,12 +267,12 @@ function assertTrialMessageButton() { cy.get('#pricingModal').should('exist'); } -function testTrialNotifications(subscription, limits) { - let myTeam; - let myChannel; +function testTrialNotifications(subscription: Partial, limits: Partial) { + let myTeam: Cypress.Team; + let myChannel: Cypress.Channel; let myUrl: string; - let myAllProfessionalUsers = []; - let myAllEnterpriseUsers = []; + let myAllProfessionalUsers: Cypress.UserProfile[] = []; + let myAllEnterpriseUsers: Cypress.UserProfile[] = []; const ALL_PROFESSIONAL_FEATURES_REQUESTS = 5; const ALL_ENTERPRISE_FEATURES_REQUESTS = 3; const TOTAL = 8; @@ -325,10 +325,10 @@ function testTrialNotifications(subscription, limits) { } function testFilesNotifications(subscription: Subscription, limits: Limits) { - let myTeam; - let myChannel; - let myUrl; - let myAllProfessionalUsers = []; + let myTeam: Cypress.Team; + let myChannel: Cypress.Channel; + let myUrl: string; + let myAllProfessionalUsers: Cypress.UserProfile[] = []; const ALL_PROFESSIONAL_FEATURES_REQUESTS = 5; const TOTAL = 5; @@ -365,13 +365,13 @@ function testFilesNotifications(subscription: Subscription, limits: Limits) { deletePost(); } -function testUpgradeNotifications(subscription, limits) { - let myTeam; - let myChannel; +function testUpgradeNotifications(subscription: Partial, limits: Partial) { + let myTeam: Cypress.Team; + let myChannel: Cypress.Channel; let myUrl: string; - let myMessageLimitUsers = []; - let myUnlimitedTeamsUsers = []; - let myUserGroupsUsers = []; + let myMessageLimitUsers: Cypress.UserProfile[] = []; + let myUnlimitedTeamsUsers: Cypress.UserProfile[] = []; + let myUserGroupsUsers: Cypress.UserProfile[] = []; const CREATE_MULTIPLE_TEAMS_USERS = 2; const UNLIMITED_MESSAGES_USERS = 3; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts index fed02e6de99..1b1ac95b1d7 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/subscriptions_free_trial_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @cloud_only @cloud_trial -import billing from '../../../../../fixtures/client_billing.json'; +import billing from '@/fixtures/client_billing.json'; function simulateSubscription() { cy.intercept('GET', '**/api/v4/cloud/subscription', { @@ -111,8 +111,9 @@ describe('System Console - Subscriptions section', () => { // * Check for User count cy.request('/api/v4/analytics/old?name=standard&team_id=').then((response) => { cy.get('.PlanDetails__userCount > span').invoke('text').then((text) => { - const userCount = response.body.find((obj) => obj.name === 'unique_user_count'); - expect(text).to.contain(userCount.value); + const userCount = response.body.find((obj: {name: string; value: number}) => obj.name === 'unique_user_count'); + expect(userCount, 'unique_user_count metric should exist').to.exist; + expect(text).to.contain(String(userCount!.value)); }); }); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js index 3c4b443381c..f1c09e9099a 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/cloud/billing/yearly_subscription_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @cloud_only @cloud_trial -import billing from '../../../../../fixtures/client_billing.json'; +import billing from '@/fixtures/client_billing.json'; function simulateSubscription() { cy.intercept('GET', '**/api/v4/cloud/subscription', { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.ts index 6b99321b8e5..bebb061bd3b 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/channels_spec.ts @@ -13,8 +13,6 @@ import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import {getAdminAccount} from '../../../../support/env'; - import { createPrivateChannel, createPublicChannel, @@ -22,6 +20,9 @@ import { searchAndVerifyChannel, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Autocomplete with Elasticsearch - Channel', () => { let testTeam: Team; let testUser: UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers.ts index 99d505af562..1b2c54c9c21 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/helpers.ts @@ -2,13 +2,14 @@ // See LICENSE.txt for license information. import {Channel} from '@mattermost/types/channels'; -import {ChainableT} from 'tests/types'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../../support/env'; -import {newTestPassword} from '../../../../utils'; import {SimpleUser} from '../../autocomplete/helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {newTestPassword} from '@/utils'; +import {ChainableT} from '@/types'; + const admin = getAdminAccount(); export function withTimestamp(prefix: string, timestamp: number) { @@ -40,7 +41,7 @@ export function searchForChannel(name: string) { type(name); } -function createChannel(channelType, teamId, userToAdd = null): ChainableT { +function createChannel(channelType: string, teamId: string, userToAdd: {email: string} | null = null): ChainableT { // # Create a channel as sysadmin return cy.externalRequest({ user: admin, @@ -206,17 +207,17 @@ export function getTestUsers(): Record { }; } -export function createPrivateChannel(teamId: string, userToAdd = null) { +export function createPrivateChannel(teamId: string, userToAdd: {email: string} | null = null) { // # Create a private channel as sysadmin return createChannel('P', teamId, userToAdd); } -export function createPublicChannel(teamId, userToAdd = null) { +export function createPublicChannel(teamId: string, userToAdd: {email: string} | null = null) { // # Create a public channel as sysadmin return createChannel('O', teamId, userToAdd); } -export function searchAndVerifyChannel(channel, shouldExist = true) { +export function searchAndVerifyChannel(channel: Cypress.Channel, shouldExist = true) { const name = channel.display_name; searchForChannel(name); @@ -230,7 +231,7 @@ export function searchAndVerifyChannel(channel, shouldExist = true) { } } -export function searchAndVerifyUser(user) { +export function searchAndVerifyUser(user: Cypress.UserProfile) { // # Start @ mentions autocomplete with username cy.uiGetPostTextBox(). as('input'). diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.ts index 9a414222079..c8743a5d6cf 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_spec.ts @@ -13,14 +13,15 @@ import {Channel} from '@mattermost/types/channels'; import {UserProfile} from '@mattermost/types/users'; -import {getRandomId} from '../../../../utils'; - import { enableElasticSearch, searchAndVerifyChannel, searchAndVerifyUser, } from './helpers'; +import {getRandomId} from '@/utils'; + + describe('Autocomplete with Elasticsearch - Renaming', () => { let testUser: UserProfile; let testChannel: Channel; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.ts index 597325064e4..28f4b74ac62 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/renaming_team_spec.ts @@ -13,14 +13,15 @@ import {Channel} from '@mattermost/types/channels'; import {UserProfile} from '@mattermost/types/users'; -import {getRandomId} from '../../../../utils'; - import { enableElasticSearch, searchAndVerifyChannel, searchAndVerifyUser, } from './helpers'; +import {getRandomId} from '@/utils'; + + describe('Autocomplete with Elasticsearch - Renaming Team', () => { const randomId = getRandomId(); let testUser: UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.ts index ff36db23fd5..444a726a718 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/system_console_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Elasticsearch system console', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.ts index 6988678d730..43d844f29c5 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_channel_switcher_spec.ts @@ -10,12 +10,13 @@ // Stage: @prod // Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud -import {getRandomLetter} from '../../../../utils'; import {doTestQuickChannelSwitcher} from '../../autocomplete/common_test'; import {createSearchData, SimpleUser} from '../../autocomplete/helpers'; import {enableElasticSearch} from './helpers'; +import {getRandomLetter} from '@/utils'; + describe('Autocomplete with Elasticsearch - Users', () => { const prefix = getRandomLetter(3); let testUsers: Record; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.ts index 9201217eeed..0f3c4f9c153 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_in_message_input_box_spec.ts @@ -10,12 +10,13 @@ // Stage: @prod // Group: @channels @enterprise @elasticsearch @autocomplete @not_cloud -import {getRandomLetter} from '../../../../utils'; import {doTestPostextbox} from '../../autocomplete/common_test'; import {createSearchData, SimpleUser} from '../../autocomplete/helpers'; import {enableElasticSearch} from './helpers'; +import {getRandomLetter} from '@/utils'; + describe('Autocomplete with Elasticsearch - Users', () => { const prefix = getRandomLetter(3); let testUsers: Record; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.ts index 6ee698d6eb2..6d554fb15a3 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/elasticsearch_autocomplete/users_spec.ts @@ -12,12 +12,13 @@ import {Team} from '@mattermost/types/teams'; -import {getRandomLetter} from '../../../../utils'; import {doTestDMChannelSidebar, doTestUserChannelSection} from '../../autocomplete/common_test'; import {createSearchData, SimpleUser} from '../../autocomplete/helpers'; import {enableElasticSearch} from './helpers'; +import {getRandomLetter} from '@/utils'; + describe('Autocomplete with Elasticsearch - Users', () => { const prefix = getRandomLetter(3); let testUsers: Record; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts index 875d472acff..1ec40ff4109 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/email_login_activity_spec.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {getAdminAccount} from '../../../../support/env'; +import {getAdminAccount} from '@/support/env'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) @@ -13,10 +13,10 @@ import {getAdminAccount} from '../../../../support/env'; // Group: @channels @enterprise @not_cloud @extend_session describe('MM-T2575 Extend Session - Email Login', () => { - let offTopicUrl; + let offTopicUrl: string; const oneDay = 24 * 60 * 60 * 1000; const admin = getAdminAccount(); - let testUser; + let testUser: Cypress.UserProfile; before(() => { cy.shouldNotRunOnCloudEdition(); @@ -96,9 +96,9 @@ describe('MM-T2575 Extend Session - Email Login', () => { cy.url().should('include', offTopicUrl); }; - const postAMessage = (now) => { - cy.postMessage(now); - cy.getLastPost().should('contain', now); + const postAMessage = (now: number) => { + cy.postMessage(String(now)); + cy.getLastPost().should('contain', String(now)); }; const testCases = [{ diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.ts index 64326cafd9a..a7b67c52858 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/helpers.ts @@ -1,14 +1,14 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {getAdminAccount} from '../../../../../support/env'; -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const admin = getAdminAccount(); const oneDay = 24 * 60 * 60 * 1000; const thirtySeconds = 30 * 1000; -export function verifyExtendedSession(testUser, sessionLengthInDays, channelUrl) { +export function verifyExtendedSession(testUser: Cypress.UserProfile, sessionLengthInDays: number, channelUrl: string) { // # Login as test user and visit default channel cy.visit(channelUrl); @@ -59,7 +59,7 @@ export function verifyExtendedSession(testUser, sessionLengthInDays, channelUrl) }); } -export function verifyNotExtendedSession(testUser, channelUrl) { +export function verifyNotExtendedSession(testUser: Cypress.UserProfile, channelUrl: string) { // # Login as test user and visit default channel cy.visit(channelUrl); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.ts index e4c7ab8aaf4..4e0c0c85254 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_ldap_login_spec.ts @@ -11,10 +11,11 @@ import {UserProfile} from '@mattermost/types/users'; -import ldapUsers from '../../../../../fixtures/ldap_users.json'; - import {verifyExtendedSession, verifyNotExtendedSession} from './helpers'; +import ldapUsers from '@/fixtures/ldap_users.json'; + + describe('Extended Session Length', () => { const sessionLengthInHours = 1; const setting = { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.ts index b6885f60d15..a642696c438 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/extend_session/not_extended_when_disabled/with_saml_login_spec.ts @@ -15,12 +15,13 @@ // Group: @channels @enterprise @not_cloud @extend_session @ldap @saml @keycloak import {UserProfile} from '@mattermost/types/users'; -import {LdapUser} from 'tests/support/ldap_server_commands'; - -import {getKeycloakServerSettings} from '../../../../../utils/config'; import {verifyExtendedSession, verifyNotExtendedSession} from './helpers'; +import {LdapUser} from '@/support/ldap_server_commands'; +import {getKeycloakServerSettings} from '@/utils/config'; + + describe('Extended Session Length', () => { const sessionLengthInDays = 1; const samlConfig = getKeycloakServerSettings(); @@ -62,7 +63,7 @@ describe('Extended Session Length', () => { cy.apiUploadSAMLIDPCert('keycloak.crt'); // # Create Keycloak user and login for the first time - cy.keycloakCreateUsers([samlLdapUser]); + cy.keycloakCreateUsers([samlLdapUser] as LdapUser[]); cy.doKeycloakLogin(samlLdapUser); // # Wait for the UI to be ready which indicates SAML registration is complete diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.ts index edcddbc1c21..890548a4ff1 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_permissions_spec.ts @@ -13,8 +13,6 @@ import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; import {Group} from '@mattermost/types/groups'; -import ldapUsers from '../../../../fixtures/ldap_users.json'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; import { disablePermission, enablePermission, @@ -22,9 +20,14 @@ import { import {enableGroupMention} from './helpers'; +import ldapUsers from '@/fixtures/ldap_users.json'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + + describe('Group Mentions', () => { let groupID: string; - let boardUser; + let boardUser: Cypress.UserProfile; let regularUser: UserProfile; let testTeam: Team; @@ -74,7 +77,7 @@ describe('Group Mentions', () => { }); // # Login once as board user to ensure the user is created in the system - boardUser = ldapUsers['board-1']; + boardUser = ldapUsers['board-1'] as unknown as Cypress.UserProfile; cy.apiLogin(boardUser); // # Login as sysadmin diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.ts index f463bc3d20a..e2158c6d6e1 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_posts_spec.ts @@ -13,11 +13,12 @@ import {UserProfile} from '@mattermost/types/users'; import {Team} from '@mattermost/types/teams'; import {Group} from '@mattermost/types/groups'; -import ldapUsers from '../../../../fixtures/ldap_users.json'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; - import {enableGroupMention} from './helpers'; +import ldapUsers from '@/fixtures/ldap_users.json'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Group Mentions', () => { let groupID1: string; let groupID2: string; @@ -261,19 +262,21 @@ describe('Group Mentions', () => { // # Link the group and the channel. cy.apiLinkGroupChannel(groupID1, channel.id); - cy.apiLogin({username: 'board.one', password: 'Password1'} as any).then(({user}: {user: UserProfile}) => { + cy.apiLogin({username: 'board.one', password: 'Password1'}).then((resp) => { + const {user} = resp as {user: UserProfile}; cy.apiAddUserToChannel(channel.id, user.id); // # Make the channel private and group-synced. cy.apiPatchChannel(channel.id, {group_constrained: true, type: 'P'}); // # Login to create the dev user - cy.apiLogin({username: 'dev.one', password: 'Password1'} as any).then(({user}: {user: UserProfile}) => { + cy.apiLogin({username: 'dev.one', password: 'Password1'}).then((resp2) => { + const {user: devUser} = resp2 as {user: UserProfile}; cy.apiAdminLogin(); - cy.apiAddUserToTeam(testTeam.id, user.id); + cy.apiAddUserToTeam(testTeam.id, devUser.id); - cy.apiLogin({username: 'board.one', password: 'Password1'} as any); + cy.apiLogin({username: 'board.one', password: 'Password1'}); // # Visit the channel cy.visit(`/${testTeam.name}/channels/${channel.name}`); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.ts index b3256371b18..e6cc2a5f00e 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/group_mentions_system_messages_spec.ts @@ -13,8 +13,7 @@ import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; import {Group} from '@mattermost/types/groups'; -import ldapUsers from '../../../../fixtures/ldap_users.json'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; + import { disablePermission, enablePermission, @@ -25,9 +24,12 @@ import {checkboxesTitleToIdMap} from '../system_console/channel_moderation/const import {enableGroupMention} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import ldapUsers from '@/fixtures/ldap_users.json'; + describe('Group Mentions', () => { let groupID: string; - let boardUser; + let boardUser: Cypress.UserProfile; let regularUser: UserProfile; let testTeam: Team; @@ -77,7 +79,7 @@ describe('Group Mentions', () => { }); // # Login once as board user to ensure the user is created in the system - boardUser = ldapUsers['board-1']; + boardUser = ldapUsers['board-1'] as unknown as Cypress.UserProfile; cy.apiLogin(boardUser); // # Login as sysadmin diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/helpers.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/helpers.ts index 36163191acd..bf7bcd7cfec 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/group_mentions/helpers.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function enableGroupMention(groupName: string, groupID: string, userEmail?: string): void { // # Visit Group Configurations page @@ -17,7 +17,7 @@ export function enableGroupMention(groupName: string, groupID: string, userEmail // # Click the allow reference button cy.findByTestId('allowReferenceSwitch').then((el) => { const button = el.find('button'); - const classAttribute = button[0].getAttribute('class'); + const classAttribute = button[0]?.getAttribute('class') ?? ''; if (!classAttribute.includes('active')) { button[0].click(); } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts index 3bdfc50ceac..6d490637765 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_add_spec.ts @@ -15,7 +15,9 @@ */ import {createPrivateChannel} from '../elasticsearch_autocomplete/helpers'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; + +import * as TIMEOUTS from '@/fixtures/timeouts'; + describe('Guest Account - Guest User Experience', () => { let guestUser: Cypress.UserProfile; @@ -58,7 +60,7 @@ describe('Guest Account - Guest User Experience', () => { }); // # Create Private Channel - createPrivateChannel(testTeam.id, guestUser).then((channel) => { + createPrivateChannel(testTeam.id, guestUser as any).then((channel) => { privateChannel = channel; cy.visit(`/${testTeam.name}/channels/${privateChannel.name}`); @@ -88,7 +90,7 @@ describe('Guest Account - Guest User Experience', () => { }); }); -function demoteGuestUser(guestUser) { +function demoteGuestUser(guestUser: Cypress.UserProfile) { // # Demote user as guest user before each test cy.apiAdminLogin(); cy.apiGetUserByEmail(guestUser.email).then(({user}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts index 817a0ba7dcb..b7eabc144de 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_experience_ui_spec.ts @@ -14,10 +14,10 @@ * Note: This test requires Enterprise license to be uploaded */ -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {newTestPassword} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {newTestPassword} from '@/utils'; -function demoteGuestUser(guestUser) { +function demoteGuestUser(guestUser: Cypress.UserProfile) { // # Demote user as guest user before each test cy.apiAdminLogin(); cy.apiGetUserByEmail(guestUser.email).then(({user}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts index c89de005b6b..16e7dbe3c42 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_feature_spec.ts @@ -74,7 +74,7 @@ describe('Guest Accounts', () => { checkUserListStatus(guestUser, 'Deactivated'); }); - function checkUserListStatus(user, status) { + function checkUserListStatus(user: Cypress.UserProfile, status: string) { // # Go to System Console ➜ Users. cy.visit('/admin_console/user_management/users'); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts index e9823fd8a18..2d9c893a161 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_spec.ts @@ -16,13 +16,13 @@ import authenticator from 'authenticator'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; import { getJoinEmailTemplate, getRandomId, reUrl, verifyEmailBody, -} from '../../../../utils'; +} from '@/utils'; describe('Guest Accounts', () => { let sysadmin: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts index feb693770bb..b3582890622 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_not_cloud_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @guest_account @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Verify Guest User Identification in different screens', () => { let guestUser: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts index 6ef0b941b4d..b29abdeb840 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_identification_ui_spec.ts @@ -15,8 +15,8 @@ */ import dayjs from 'dayjs'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('Verify Guest User Identification in different screens', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts index 4de28ab1aef..5b63917bc26 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_more_spec.ts @@ -14,9 +14,6 @@ * Note: This test requires Enterprise license to be uploaded */ -import {getRandomId} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; - import { changeGuestFeatureSettings, invitePeople, @@ -24,6 +21,9 @@ import { verifyInvitationSuccess, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; + describe('Guest Account - Guest User Invitation Flow', () => { let testTeam: Cypress.Team; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts index 1fa5264415e..0d438576fb8 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_invitation_ui_spec.ts @@ -14,14 +14,15 @@ * Note: This test requires Enterprise license to be uploaded */ -import {getRandomId} from '../../../../utils'; - import { changeGuestFeatureSettings, invitePeople, verifyInvitationSuccess, } from './helpers'; +import {getRandomId} from '@/utils'; + + describe('Guest Account - Guest User Invitation Flow', () => { let testTeam: Cypress.Team; let newUser: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts index 22dea4984eb..644fa5660c6 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_popover_ui_spec.ts @@ -13,7 +13,7 @@ * Note: This test requires Enterprise license to be uploaded */ -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Guest Account - Guest User Badge and Popover', () => { let regularUser: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts index 545a0531e96..84cb127681b 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/guest_removal_ui_spec.ts @@ -13,9 +13,9 @@ * Note: This test requires Enterprise license to be uploaded */ -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; -function removeUserFromAllChannels(verifyAlert, user) { +function removeUserFromAllChannels(verifyAlert: boolean, user: Cypress.UserProfile) { // # Remove the Guest user from all channels of a team as a sysadmin const channels = ['Town Square', 'Off-Topic']; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts index d35895e46b2..d41564276d6 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/member_invitation_ui_spec.ts @@ -13,9 +13,9 @@ * Note: This test requires Enterprise license to be uploaded */ -import {getRandomId, stubClipboard, newTestPassword} from '../../../../utils'; -import {getAdminAccount} from '../../../../support/env'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId, stubClipboard, newTestPassword} from '@/utils'; describe('Guest Account - Member Invitation Flow', () => { const sysadmin = getAdminAccount(); @@ -249,7 +249,7 @@ describe('Guest Account - Member Invitation Flow', () => { }); }); -function invitePeople(typeText, resultsCount, verifyText, clickInvite = true) { +function invitePeople(typeText: string, resultsCount: number, verifyText: string, clickInvite = true) { // # Open team menu and click 'Invite People' cy.uiOpenTeamMenu('Invite people'); @@ -271,7 +271,7 @@ function invitePeople(typeText, resultsCount, verifyText, clickInvite = true) { } } -function verifyInvitationError(user, team, errorText) { +function verifyInvitationError(user: string, team: Cypress.Team, errorText: string) { // * Verify the content and error message in the Invitation Modal cy.findByTestId('invitationModal').within(() => { cy.get('h1').should('have.text', `Members invited to ${team.display_name}`); @@ -290,7 +290,7 @@ function verifyInvitationError(user, team, errorText) { cy.get('.InvitationModal').should('not.exist'); } -function verifyInvitationSuccess(user, team, successText) { +function verifyInvitationSuccess(user: string, team: Cypress.Team, successText: string) { // * Verify the content and success message in the Invitation Modal cy.findByTestId('invitationModal').within(() => { cy.get('h1').should('have.text', `Members invited to ${team.display_name}`); @@ -309,7 +309,7 @@ function verifyInvitationSuccess(user, team, successText) { cy.get('.InvitationModal').should('not.exist'); } -function loginAsNewUser(team) { +function loginAsNewUser(team: Cypress.Team) { // # Login as new user and get the user id cy.apiCreateUser().then(({user}) => { cy.apiAddUserToTeam(team.id, user.id); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts index f5af86137a4..d418a72368d 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_guest_access_ui_spec.ts @@ -14,7 +14,7 @@ * Note: This test requires Enterprise license to be uploaded */ -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Guest Account - Verify Guest Access UI', () => { beforeEach(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts index bdf1d9ddc5c..79beb7a07b9 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_not_cloud_spec.ts @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @enterprise @guest_account @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; - import {verifyGuest} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Guest Account - Verify Manage Guest Users', () => { let guestUser: Cypress.UserProfile; let testTeam: Cypress.Team; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts index b03d5a7251b..70780a2fd79 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/guest_accounts/system_console_manage_guest_spec.ts @@ -14,9 +14,9 @@ * Note: This test requires Enterprise license to be uploaded */ -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../utils'; -import {getAdminAccount} from '../../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; describe('Guest Account - Verify Manage Guest Users', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.ts index 2438b67c9f3..692fd551465 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/integrations/incoming_webhook_spec.ts @@ -10,13 +10,15 @@ // Stage: @prod // Group: @channels @enterprise @elasticsearch @incoming_webhook @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; import {enableElasticSearch} from '../elasticsearch_autocomplete/helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Incoming webhook', () => { - let testTeam; - let testChannel; - let incomingWebhook; + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; + let incomingWebhook: {data: unknown; url: string}; // apiCreateWebhook returns untyped body before(() => { cy.shouldNotRunOnCloudEdition(); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts index 093db5baa85..c2052bafb28 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts @@ -14,7 +14,7 @@ import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; import {AdminConfig} from '@mattermost/types/config'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; function setLDAPTestSettings(config: AdminConfig) { return { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts index 830f503c468..d6b2a511bef 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts @@ -11,17 +11,17 @@ import {UserProfile} from '@mattermost/types/users'; -import ldapUsers from '../../../../fixtures/ldap_users.json'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../../support/env'; -import {getRandomId} from '../../../../utils'; +import ldapUsers from '@/fixtures/ldap_users.json'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; // assumes that E20 license is uploaded // for setup with AWS: Follow the instructions mentioned in the mattermost/platform-private/config/ldap-test-setup.txt file describe('LDAP guest', () => { - let testSettings; - let user1Data; - let user2Data; + let testSettings: {siteName: string; siteUrl: string; teamName: string; user: null | Record}; + let user1Data: Record; + let user2Data: Record; const user1 = ldapUsers['test-2']; const user2 = ldapUsers['test-3']; @@ -46,7 +46,7 @@ describe('LDAP guest', () => { user1Data = user; // # Remove user1 from all the teams - removeUserFromAllTeams(user1Data); + removeUserFromAllTeams(user1Data as {id: string}); }); // # Get user2 data @@ -54,7 +54,7 @@ describe('LDAP guest', () => { user2Data = user; // # Remove user2 fromm all the teams - removeUserFromAllTeams(user2Data); + removeUserFromAllTeams(user2Data as {id: string}); }); }); @@ -190,10 +190,11 @@ describe('LDAP guest', () => { // # Get available ldap groups cy.apiGetLDAPGroups().then((result) => { // # Find "board" group - const board = result.body.groups.find((group) => group.name === 'board'); + const board = result.body.groups.find((group: {name: string; primary_key: string}) => group.name === 'board'); + expect(board, 'LDAP group "board" should exist').to.exist; // # Link group - cy.apiLinkGroup(board.primary_key).then(() => { + cy.apiLinkGroup(board!.primary_key).then(() => { // # Add board-one to test team cy.visit(`/admin_console/user_management/teams/${team.id}`); cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'Team Configuration'); @@ -249,7 +250,7 @@ function gotoLDAPSettings() { cy.get('.admin-console__header', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').and('have.text', 'AD/LDAP Wizard'); } -function promoteGuestToUser(user) { +function promoteGuestToUser(user: Record) { // # Issue a Request to promote the guest to user // Ignoring the response status as it won't be 200 if user is not a guest cy.task('externalRequest', { @@ -260,7 +261,7 @@ function promoteGuestToUser(user) { }); } -function demoteUserToGuest(user) { +function demoteUserToGuest(user: Record) { // # Issue a Request to demote the user to guest cy.task('externalRequest', { user: getAdminAccount(), @@ -282,7 +283,7 @@ function removeUserFromAllTeams(user: { id: string }) { }); } -function setGuestAccess(enable) { +function setGuestAccess(enable: boolean) { const inputId = 'GuestAccountsSettings.' + (enable ? 'Enabletrue' : 'Enablefalse'); cy.findByTestId(inputId).then((elem) => { // Proceed only if it's not already checked @@ -302,7 +303,7 @@ function setGuestAccess(enable) { }); } -function setLDAPTestSettings(config) { +function setLDAPTestSettings(config: Cypress.AdminConfig) { return { siteName: config.TeamSettings.SiteName, siteUrl: config.ServiceSettings.SiteURL, @@ -311,7 +312,7 @@ function setLDAPTestSettings(config) { }; } -function updateGuestFilter(value) { +function updateGuestFilter(value: string) { // # Set guest filter value if (value) { cy.findByTestId('LdapSettings.GuestFilterinput').type(value); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts index fa1a0d88ed3..70b88595a5a 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts @@ -11,8 +11,8 @@ import {UserProfile} from '@mattermost/types/users'; -import ldapUsers from '../../../../fixtures/ldap_users.json'; -import {getRandomId} from '../../../../utils'; +import ldapUsers from '@/fixtures/ldap_users.json'; +import {getRandomId} from '@/utils'; // assumes the CYPRESS_* variables are set // assumes that E20 license is uploaded @@ -22,7 +22,7 @@ context('ldap', () => { const guest1 = ldapUsers['board-1']; const admin1 = ldapUsers['dev-1']; - let testSettings; + let testSettings: {siteName: string; siteUrl: string; teamName: string; user: null | Record}; before(() => { // * Check if server has license for LDAP @@ -211,7 +211,7 @@ context('ldap', () => { }); }); -function setLDAPTestSettings(config) { +function setLDAPTestSettings(config: Cypress.AdminConfig) { return { siteName: config.TeamSettings.SiteName, siteUrl: config.ServiceSettings.SiteURL, @@ -220,15 +220,16 @@ function setLDAPTestSettings(config) { }; } -function disableOnboardingTaskList(ldapLogin) { - cy.apiLogin(ldapLogin).then(({user}: {user: UserProfile}) => { +function disableOnboardingTaskList(ldapLogin: {username: string; password: string}) { + cy.apiLogin(ldapLogin).then((result) => { + const {user} = result as {user: UserProfile}; cy.apiSaveOnboardingTaskListPreference(user.id, 'onboarding_task_list_open', 'false'); cy.apiSaveOnboardingTaskListPreference(user.id, 'onboarding_task_list_show', 'false'); cy.apiSaveSkipStepsPreference(user.id, 'true'); }); } -function removeUserFromAllTeams(testUser) { +function removeUserFromAllTeams(testUser: {username: string}) { cy.apiGetUsersByUsernames([testUser.username]).then(({users}) => { if (users.length > 0) { users.forEach((user) => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts index 6d981872ddd..68595c56a7a 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/channel_modes_spec.ts @@ -10,7 +10,7 @@ // Group: @channels @enterprise @ldap_group describe('LDAP Group Sync - Test channel public/private toggle', () => { - let testTeam; + let testTeam: Cypress.Team; before(() => { // * Check if server has license for LDAP Groups diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts index 08ec49d23e5..14680b379d7 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/group_mentions_spec.ts @@ -9,16 +9,16 @@ // Group: @channels @enterprise @ldap_group -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import users from '../../../../fixtures/ldap_users.json'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import users from '@/fixtures/ldap_users.json'; -let groupID; -let boardUser; -let regularUser; -let testTeam; +let groupID: string; +let boardUser: {username: string; password: string; email: string}; +let regularUser: Cypress.UserProfile; +let testTeam: Cypress.Team; // Goes to the groups page for the group specified by id as sysadmin -const navigateToGroup = (id) => { +const navigateToGroup = (id: string) => { // # Login as sysadmin and visit board group page, and wait until board user is visible cy.apiAdminLogin(); cy.visit(`/admin_console/user_management/groups/${id}`); @@ -33,7 +33,7 @@ const navigateToGroup = (id) => { // Attempts to @mention the given group // Checks to see that the group is not highlighted as a link when viewed by a user without permission to mention // Checks to see that the group is not highlighted as a mention when viewed by user inside the group -const assertGroupMentionDisabled = (groupName) => { +const assertGroupMentionDisabled = (groupName: string) => { const suggestion = groupName.substring(0, groupName.length - 1); // # Visit off-topic @@ -73,7 +73,7 @@ const assertGroupMentionDisabled = (groupName) => { // Attempts to @mention the given group // Checks to see that the group is highlighted as a link when viewed by a user outside of the group // Checks to see that the group is highlighted as a mention when viewed by user inside the group -const assertGroupMentionEnabled = (groupName) => { +const assertGroupMentionEnabled = (groupName: string) => { const suggestion = groupName.substring(0, groupName.length - 1); // # Visit off-topic @@ -151,7 +151,7 @@ describe('System Console', () => { // # Get board group id cy.apiGetGroups().then((res) => { - res.body.forEach((group) => { + res.body.forEach((group: {display_name: string; id: string; allow_reference: boolean}) => { if (group.display_name === 'board') { // # Set groupID to navigate to group page directly groupID = group.id; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts index 5a9dc0e52e4..930ef1a9cf4 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/groups_assign_roles_spec.ts @@ -10,17 +10,20 @@ // Stage: @prod // Group: @channels @enterprise @ldap_group -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // # Function to get all the teams associated to group and unlink them -const getTeamsAssociatedToGroupAndUnlink = (groupId) => { +const getTeamsAssociatedToGroupAndUnlink = (groupId: string) => { cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/groups/${groupId}/teams`, method: 'GET', }).then((response) => { expect(response.status).to.equal(200); - response.body.forEach((element) => { + response.body.forEach((element: {group_id: string; team_id?: string}) => { + if (!element.team_id) { + throw new Error(`Missing team_id for group ${element.group_id}`); + } cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/groups/${element.group_id}/teams/${element.team_id}/link`, @@ -31,14 +34,17 @@ const getTeamsAssociatedToGroupAndUnlink = (groupId) => { }; // # Function to get all the channels associated to group and unlink them -const getChannelsAssociatedToGroupAndUnlink = (groupId) => { +const getChannelsAssociatedToGroupAndUnlink = (groupId: string) => { cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/groups/${groupId}/channels`, method: 'GET', }).then((response) => { expect(response.status).to.equal(200); - response.body.forEach((element) => { + response.body.forEach((element: {group_id: string; channel_id?: string}) => { + if (!element.channel_id) { + throw new Error(`Missing channel_id for group ${element.group_id}`); + } cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/groups/${element.group_id}/channels/${element.channel_id}/link`, @@ -70,7 +76,7 @@ describe('LDAP Group Sync', () => { cy.get('#developers_edit').then((buttonEl) => { // # Get the Group ID and remove all the teams and channels currently attached to it then click the button const anchorElement = buttonEl[0] as HTMLAnchorElement; - const groupId = anchorElement.href.match(/\/(?:.(?!\/))+$/)[0].substring(1); + const groupId = anchorElement.href.match(/\/(?:.(?!\/))+$/)![0].substring(1); getTeamsAssociatedToGroupAndUnlink(groupId); getChannelsAssociatedToGroupAndUnlink(groupId); cy.get('#developers_edit').click(); @@ -84,7 +90,7 @@ describe('LDAP Group Sync', () => { // # Get the Group ID and remove all the teams and channels currently attached to it then click the button cy.get('#developers_configure').then((buttonEl) => { const anchorElement = buttonEl[0] as HTMLAnchorElement; - const groupId = anchorElement.href.match(/\/(?:.(?!\/))+$/)[0].substring(1); + const groupId = anchorElement.href.match(/\/(?:.(?!\/))+$/)![0].substring(1); getTeamsAssociatedToGroupAndUnlink(groupId); getChannelsAssociatedToGroupAndUnlink(groupId); cy.get('#developers_configure').click(); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts index 9a181e0cc60..d91eed996dc 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/invite_bot_spec.ts @@ -11,8 +11,8 @@ // Group: @channels @enterprise @ldap_group describe('Group Synced Team - Bot invitation flow', () => { - let groupConstrainedTeam; - let bot; + let groupConstrainedTeam: Cypress.Team; + let bot: Cypress.Bot; before(() => { // * Check if server has license for LDAP Groups diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts index c5efb54b18e..c55ebad5165 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/search_channels_spec.ts @@ -10,11 +10,11 @@ // Stage: @prod // Group: @channels @enterprise @ldap_group -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Search channels', () => { const PAGE_SIZE = 10; - let testTeamId; + let testTeamId: string; before(() => { // * Check if server has license for LDAP Groups diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts index a52819e232b..48479b6c3a9 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap_group/team_and_channel_assign_roles_spec.ts @@ -9,10 +9,10 @@ // Group: @channels @enterprise @ldap_group -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // # Save setting and get back to the resource page -const saveAndNavigateBackTo = (name, displayName, page) => { +const saveAndNavigateBackTo = (name: string, displayName: string, page: string) => { cy.get('#saveSetting').should('be.enabled').click().wait(TIMEOUTS.HALF_SEC); // * Verify that it redirects to page and wait for a while to load @@ -23,7 +23,7 @@ const saveAndNavigateBackTo = (name, displayName, page) => { cy.findByTestId(`${name}edit`).should('be.visible').click(); }; -const changeRole = (type, fromRole, toRole) => { +const changeRole = (type: string, fromRole: string, toRole: string) => { // # Wait for data grid to load cy.get(`#${type}Members`).scrollIntoView().within(() => { cy.get('.UserGrid_nameRow').should('be.visible'); @@ -35,7 +35,7 @@ const changeRole = (type, fromRole, toRole) => { // # Change role cy.get('#role-to-be-menu').then((el) => { // * Assert that only one option exists in the dropdown for changing roles - expect(el[0].firstElementChild.children.length).equal(1); + expect(el[0].firstElementChild!.children.length).equal(1); // # Click on toRole cy.wrap(el).findByText(toRole).click().wait(TIMEOUTS.HALF_SEC); @@ -44,11 +44,11 @@ const changeRole = (type, fromRole, toRole) => { describe('System Console', () => { const groupDisplayName = 'board'; - let testTeam; - let teamName; - let teamDisplayName; - let channelName; - let channelDisplayName; + let testTeam: Cypress.Team; + let teamName: string; + let teamDisplayName: string; + let channelName: string; + let channelDisplayName: string; before(() => { // * Check if server has license for LDAP Groups @@ -65,7 +65,7 @@ describe('System Console', () => { channelDisplayName = channel.display_name; cy.apiGetLDAPGroups().then((res) => { - res.body.groups.forEach((group) => { + res.body.groups.forEach((group: {name: string; display_name: string; id: string; primary_key: string}) => { if (group.name === groupDisplayName) { cy.apiAddLDAPGroupLink(group.primary_key); } @@ -76,7 +76,7 @@ describe('System Console', () => { beforeEach(() => { cy.apiGetTeamGroups(testTeam.id).then((resGroups) => { - resGroups.body.groups.forEach((group) => { + resGroups.body.groups.forEach((group: {name: string; display_name: string; id: string; primary_key: string}) => { if (group.display_name === groupDisplayName) { cy.apiDeleteLinkFromTeamToGroup(group.id, testTeam.id); } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts index 98210fa5743..0481e57202a 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/oauth/oauth_spec.ts @@ -9,18 +9,19 @@ // Group: @channels @enterprise @integrations -import {getRandomId} from '../../../../utils'; import {checkboxesTitleToIdMap} from '../system_console/channel_moderation/constants'; import {enablePermission, goToSystemScheme, saveConfigForScheme} from '../system_console/channel_moderation/helpers'; -describe('Integrations page', () => { - const webhookBaseUrl = Cypress.env('webhookBaseUrl'); +import {getRandomId} from '@/utils'; - let user1; - let user2; - let testChannelUrl1; - let oauthClientID; - let oauthClientSecret; +describe('Integrations page', () => { + const webhookBaseUrl = Cypress.expose('webhookBaseUrl'); + + let user1: Cypress.UserProfile; + let user2: Cypress.UserProfile; + let testChannelUrl1: string; + let oauthClientID: string; + let oauthClientSecret: string; const testApp = `Test${getRandomId()}`; before(() => { @@ -163,9 +164,9 @@ describe('Integrations page', () => { }); cy.get('@clientID').then((clientID) => { - oauthClientID = clientID; + oauthClientID = clientID as unknown as string; cy.get('@clientSecret').then((clientSecret) => { - oauthClientSecret = clientSecret; + oauthClientSecret = clientSecret as unknown as string; // # Send credentials cy.postIncomingWebhook({ diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/bookmark_permissions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/bookmark_permissions_spec.ts index 358efc2cb51..903565bf47b 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/bookmark_permissions_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/bookmark_permissions_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @permissions -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const deleteExistingTeamOverrideSchemes = () => { cy.apiGetSchemes('team').then(({schemes}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts index ab24ecc204d..a4b65f6315d 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/permissions/team_permissions_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @permissions -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const deleteExistingTeamOverrideSchemes = () => { cy.apiGetSchemes('team').then(({schemes}) => { @@ -20,7 +20,7 @@ const deleteExistingTeamOverrideSchemes = () => { }); }; -const createTeamOverrideSchemeWithPermission = (name, team, permissionId, permissionValue) => { +const createTeamOverrideSchemeWithPermission = (name: string, team: Cypress.Team, permissionId: string, permissionValue: boolean) => { cy.apiAdminLogin(); // # Go to `User Management / Permissions` section @@ -56,10 +56,10 @@ const createTeamOverrideSchemeWithPermission = (name, team, permissionId, permis }; describe('Team Permissions', () => { - let testTeam; - let testUser; - let testPrivateCh; - let otherUser; + let testTeam: Cypress.Team; + let testUser: Cypress.UserProfile; + let testPrivateCh: Cypress.Channel; + let otherUser: Cypress.UserProfile; const schemeName = 'schemetest'; before(() => { cy.apiRequireLicense(); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts index 877ad358875..aac7f1ef9f5 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/profile_popover/profile_popover_spec.ts @@ -9,9 +9,11 @@ // Group: @channels @enterprise @profile_popover -import * as TIMEOUTS from '../../../../fixtures/timeouts'; import {createPrivateChannel} from '../elasticsearch_autocomplete/helpers'; -import {getAdminAccount} from '../../../../support/env'; + +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; + describe('Profile popover', () => { let testTeam: Cypress.Team; @@ -95,7 +97,7 @@ describe('Profile popover', () => { cy.apiLogin(otherUser); // # Create a private channel - createPrivateChannel(testTeam.id, otherUser).then((channel) => { + createPrivateChannel(testTeam.id, otherUser as any).then((channel) => { privateChannel = channel; }); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.ts index 4e958c6aa7f..837aeaef5fa 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/okta_login_spec.ts @@ -11,9 +11,8 @@ // Group: @channels @enterprise @saml // Skip: @headless @electron @firefox // run on Chrome (headed) only -import {UserCollection} from 'tests/support/okta_commands'; - -import users from '../../../../fixtures/saml_users.json'; +import {UserCollection} from '@/support/okta_commands'; +import users from '@/fixtures/saml_users.json'; //Manual Setup required: Follow the instructions mentioned in the mattermost/platform-private/config/saml-okta-setup.txt file context('Okta', () => { @@ -29,7 +28,7 @@ context('Okta', () => { oktaBaseUrl, oktaMMAppName, oktaMMEntityId, - } = Cypress.env(); + } = Cypress.expose(); const idpUrl = `${oktaBaseUrl}/app/${oktaMMAppName}/${oktaMMEntityId}/sso/saml`; const idpMetadataUrl = `${oktaBaseUrl}/app/${oktaMMEntityId}/sso/saml/metadata`; @@ -66,7 +65,8 @@ context('Okta', () => { }, }; - let testSettings; + // TestSettings type is not exported from saml_commands; uses SAMLUser | null for user field + let testSettings: any; //Note: the assumption is that this test suite runs on a clean setup (empty DB) which would ensure that the users are not present in the Mattermost instance beforehand describe('SAML Login flow', () => { @@ -283,7 +283,7 @@ context('Okta', () => { cy.oktaDeleteSession(oktaUserId); cy.doSamlLogin(testSettings).then(() => { cy.doOktaLogin(testSettings.user).then(() => { - cy.skipOrCreateTeam(testSettings, oktaUserId).then((teamName) => { + cy.skipOrCreateTeam(testSettings, oktaUserId).then((teamName: string) => { testSettings.teamName = teamName; //get invite link @@ -293,7 +293,7 @@ context('Okta', () => { cy.doSamlLogout(testSettings).then(() => { testSettings.user = guest1; cy.oktaGetOrCreateUser(testSettings.user).then((_oktaUserId) => { - cy.visit(inviteUrl).then(() => { + cy.visit(inviteUrl as unknown as string).then(() => { cy.oktaDeleteSession(_oktaUserId); //login the guest diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.ts index efab0558759..ff65c1c461c 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_automated_spec.ts @@ -11,9 +11,8 @@ // Group: @channels @enterprise @saml // Skip: @headless @electron @firefox // run on Chrome (headed) only -import {UserCollection} from 'tests/support/okta_commands'; - -import users from '../../../../fixtures/saml_users.json'; +import {UserCollection} from '@/support/okta_commands'; +import users from '@/fixtures/saml_users.json'; //Manual Setup required: Follow the instructions mentioned in the mattermost/platform-private/config/saml-okta-setup.txt file context('LDAP SAML - Automated Tests (SAML TESTS)', () => { @@ -25,7 +24,7 @@ context('LDAP SAML - Automated Tests (SAML TESTS)', () => { oktaBaseUrl, oktaMMAppName, oktaMMEntityId, - } = Cypress.env(); + } = Cypress.expose(); const idpUrl = `${oktaBaseUrl}/app/${oktaMMAppName}/${oktaMMEntityId}/sso/saml`; const idpMetadataUrl = `${oktaBaseUrl}/app/${oktaMMEntityId}/sso/saml/metadata`; @@ -62,7 +61,8 @@ context('LDAP SAML - Automated Tests (SAML TESTS)', () => { }, }; - let testSettings; + // TestSettings type is not exported from saml_commands; uses SAMLUser | null for user field + let testSettings: any; //Note: the assumption is that this test suite runs on a clean setup (empty DB) which would ensure that the users are not present in the Mattermost instance beforehand describe('LDAP SAML - Automated Tests (SAML TESTS)', () => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.ts index c4b5b1e0b10..9517bd5a87b 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/saml/saml_guest_member_spec.ts @@ -9,8 +9,8 @@ // Group: @channels @enterprise @saml -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; // assumes that E20 license is uploaded // Update config.mk to make sure docker images for openldap and keycloak @@ -28,11 +28,13 @@ describe('SAML Guest', () => { email: 'guest.test@mmtest.com', firstname: 'Guest', lastname: 'OneSaml', + ldapfirstname: 'Guest', + ldaplastname: 'OneSaml', keycloakId: '', }; const userFilter = `username=${guestUser.username}`; - const keycloakBaseUrl = Cypress.env('keycloakBaseUrl') || 'http://localhost:8484'; - const keycloakAppName = Cypress.env('keycloakAppName') || 'mattermost'; + const keycloakBaseUrl = Cypress.expose('keycloakBaseUrl') || 'http://localhost:8484'; + const keycloakAppName = Cypress.expose('keycloakAppName') || 'mattermost'; const idpUrl = `${keycloakBaseUrl}/auth/realms/${keycloakAppName}/protocol/saml`; const idpDescriptorUrl = `${keycloakBaseUrl}/auth/realms/${keycloakAppName}`; @@ -69,7 +71,8 @@ describe('SAML Guest', () => { }, }; - let testSettings; + // TestSettings type is not exported from saml_commands; uses SAMLUser | null for user field + let testSettings: any; before(() => { // * Check if server has license for SAML diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts index 6f9bf36cd0f..fe8c2eb00de 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_pricing_modal_spec.ts @@ -10,8 +10,8 @@ // Group: @channels @enterprise @not_cloud describe('Self hosted Pricing modal', () => { - let urlL: string | undefined; - let createdUser: Cypress.UserProfile | undefined; + let urlL: string; + let createdUser: Cypress.UserProfile; before(() => { cy.apiInitSetup().then(({user, offTopicUrl: url}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts index 6d2b40d9522..90071955cbf 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/self-hosted/self_hosted_purchase_spec.ts @@ -22,7 +22,7 @@ import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; function verifyPurchaseModal() { cy.contains('Provide your payment details'); @@ -65,7 +65,7 @@ const defaultSuccessForm: PurchaseForm = { agree: true, }; -const prefilledProvinceCountryRegions = { +const prefilledProvinceCountryRegions: Record = { 'United States of America': true, Canada: true, }; @@ -266,7 +266,7 @@ describe('Self hosted Purchase', () => { getCurrentUsers().then((userCount) => { cy.contains(`${userCount + additionalSeatsToPurchase} users`); cy.wait('@products').then((res) => { - const product = res.response.body.find((product: Cypress.Product) => product.sku === 'professional'); + const product = res.response!.body.find((product: Cypress.Product) => product.sku === 'professional'); const purchaseAmount = dollarUSLocale.format((userCount + additionalSeatsToPurchase) * (product).price_per_seat * 12); cy.contains(purchaseAmount); }); @@ -289,10 +289,10 @@ describe('Self hosted Purchase', () => { expect(prodLine.length).to.be.equal(1); getCurrentUsers().then((userCount) => { cy.wait('@products').then((res) => { - const product = res.response.body.find((product: Cypress.Product) => product.sku === 'professional'); + const product = res.response!.body.find((product: Cypress.Product) => product.sku === 'professional'); const purchaseAmount = dollarUSLocale.format((userCount + additionalSeatsToPurchase) * (product).price_per_seat * 12); const amountLine = allLines.find((line: string) => line.includes('Amount paid')); - if (!amountLine.includes(purchaseAmount)) { + if (!amountLine!.includes(purchaseAmount)) { throw new Error(`Expected purchase amount ${purchaseAmount}, but amount line was ${amountLine}`); } }); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js index 02cc746bd9b..98c5d727936 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/about/edition_and_license_spec.js @@ -9,10 +9,11 @@ // Group: @channels @enterprise @not_cloud @system_console @license_removal -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../../../support/env'; import {promoteToChannelOrTeamAdmin} from '../channel_moderation/helpers.ts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; + describe('System console', () => { const sysadmin = getAdminAccount(); let teamAdmin; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js index 4e2645c3a21..676d387d48b 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/archived_channels_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Archived channels', () => { let testChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js index e6d4f9aa0ad..a0bf2b6523e 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/authentication_method_spec.js @@ -9,9 +9,9 @@ // Group: @channels @enterprise @system_console @mfa -import ldapUsers from '../../../../fixtures/ldap_users.json'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../../support/env'; +import ldapUsers from '@/fixtures/ldap_users.json'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; const authenticator = require('authenticator'); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js index b1a62e89c4f..8e103145f06 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_members_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Channel members test', () => { let testChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.ts index 0f966677bee..56dfe1bf7c2 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/helpers.ts @@ -5,11 +5,12 @@ import {Channel} from '@mattermost/types/channels'; import {UserProfile} from '@mattermost/types/users'; import {Team} from '@mattermost/types/teams'; -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../../../support/env'; - import {checkBoxes} from './constants'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; + + // # Visits the channel configuration for a channel with channelName export const visitChannelConfigPage = (channel: Channel) => { cy.apiAdminLogin(); @@ -22,9 +23,9 @@ export const visitChannelConfigPage = (channel: Channel) => { }; // # Disable a permission -export const disablePermission = (permission) => { +export const disablePermission = (permission: string) => { cy.waitUntil(() => cy.findByTestId(permission).scrollIntoView().should('be.visible').then((el) => { - const classAttribute = el[0].getAttribute('class'); + const classAttribute = el[0].getAttribute('class') ?? ''; if (classAttribute.includes('checked') || classAttribute.includes('intermediate')) { el[0].click(); return false; @@ -35,7 +36,7 @@ export const disablePermission = (permission) => { }; // # Saves channel config and navigates back to the channel config page if specified -export const saveConfigForChannel = (channelName: string = null, clickConfirmationButton = false) => { +export const saveConfigForChannel = (channelName: string | null = null, clickConfirmationButton = false) => { cy.get('#saveSetting').then((btn) => { if (btn.is(':enabled')) { btn.click(); @@ -74,7 +75,7 @@ export const visitChannel = (user: UserProfile, channel: Channel, team: Team) => // # Checks to see if we got a system message warning after using @all/@here/@channel export const postChannelMentionsAndVerifySystemMessageExist = (channelName: string) => { - function getSystemMessage(text) { + function getSystemMessage(text: string) { return `Channel notifications are disabled in ${channelName}. The ${text} did not trigger any notifications.`; } @@ -106,9 +107,9 @@ export const postChannelMentionsAndVerifySystemMessageExist = (channelName: stri }; // # Enable a permission -export const enablePermission = (permission) => { +export const enablePermission = (permission: string) => { cy.waitUntil(() => cy.findByTestId(permission).scrollIntoView().should('be.visible').then((el) => { - const classAttribute = el[0].getAttribute('class'); + const classAttribute = el[0].getAttribute('class') ?? ''; if (!classAttribute.includes('checked')) { el[0].click(); return false; @@ -120,7 +121,7 @@ export const enablePermission = (permission) => { // # Checks to see if we did not get a system message warning after using @all/@here/@channel export const postChannelMentionsAndVerifySystemMessageNotExist = (channel: Channel) => { - function getSystemMessage(text) { + function getSystemMessage(text: string) { return `Channel notifications are disabled in ${channel.name}. The ${text} did not trigger any notifications.`; } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.ts index fbfed901e0a..ce76465d16e 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/higher_scoped_scheme_spec.ts @@ -9,7 +9,6 @@ // Group: @channels @enterprise @system_console @channel_moderation -import {getRandomId} from '../../../../../utils'; import {checkboxesTitleToIdMap} from './constants'; import { @@ -29,11 +28,13 @@ import { visitChannelConfigPage, } from './helpers'; +import {getRandomId} from '@/utils'; + describe('MM-23102 - Channel Moderation - Higher Scoped Scheme', () => { - let regularUser; - let guestUser; - let testTeam; - let testChannel; + let regularUser: Cypress.UserProfile; + let guestUser: Cypress.UserProfile; + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; before(() => { // * Check if server has license diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.ts index c80a897e59c..cc96aebf673 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/manage_members_spec.ts @@ -14,8 +14,7 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../../utils'; + import {checkboxesTitleToIdMap} from './constants'; import { @@ -31,6 +30,9 @@ import { visitChannelConfigPage, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; + function addButtonExists() { cy.uiGetRHS().contains('button', 'Add').should('be.visible'); } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.ts index 4e579de2caa..a455b1add1f 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/post_reactions_spec.ts @@ -13,10 +13,6 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../../utils'; -import {getAdminAccount} from '../../../../../support/env'; - import {checkboxesTitleToIdMap} from './constants'; import { deleteOrEditTeamScheme, @@ -30,6 +26,10 @@ import { visitChannelConfigPage, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; + describe('MM-23102 - Channel Moderation - Post Reactions', () => { let regularUser: UserProfile; let guestUser: UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.ts b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.ts index d48a523f978..3fcd6640338 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/channel_moderation/system_config_spec.ts @@ -14,7 +14,6 @@ import {Channel} from '@mattermost/types/channels'; import {Team} from '@mattermost/types/teams'; import {UserProfile} from '@mattermost/types/users'; -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; import {checkBoxes} from './constants'; import { @@ -23,6 +22,8 @@ import { saveConfigForChannel, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + describe('Channel Moderation', () => { let guestUser: UserProfile; let testTeam: Team; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js index ffc576e0717..fae30ea982c 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/compliance_export_ui_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @enterprise @system_console @compliance_export -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; - import {verifyExportedMessagesCount, gotoTeamAndPostImage} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Compliance Export', () => { let teamName; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js index fbb1dbcfd44..a7513be6147 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/data_retention_policies_spec.js @@ -9,7 +9,7 @@ // Group: @channels @enterprise @system_console @with_feature_flag -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Data Retention', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js index 67be1f37dcd..617ec5b55b5 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/helpers.js @@ -3,7 +3,7 @@ import path from 'path'; -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function downloadAndUnzipExportFile(targetFolder = '') { // # Get the download link diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js index 00cf58fb75d..866277e64b5 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/compliance/s3_bucket_storage_spec.js @@ -13,10 +13,11 @@ // and a bucket named "mattermost-test". Bucket can be created manually in the UI or by: // ``docker exec mattermost-minio sh -c 'mkdir -p /data/mattermost-test'`` -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; - import {gotoTeamAndPostImage} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Compliance Export', () => { let teamName; @@ -59,7 +60,7 @@ describe('Compliance Export', () => { minioS3Bucket, minioS3Endpoint, minioS3SSL, - } = Cypress.env(); + } = Cypress.expose(); // # Update S3 Storage settings cy.findByTestId('FileSettings.DriverNamedropdown').select('amazons3'); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js index b5e17df79d4..26681c372a4 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/edition_and_license_link_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @enterprise @not_cloud -import {FixedPublicLinks} from '../../../../utils'; +import {FixedPublicLinks} from '@/utils'; describe('Edition and License', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js index 23e25eb4e0e..a769e6f49e1 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/environment_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Environment', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js index 4f7350b66a6..c2ba27d892b 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/group_configuration_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('group configuration', () => { let groupID; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/helpers.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/helpers.js index af70532532a..1fbc2b6f13c 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/helpers.js @@ -1,9 +1,9 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import accessRules from '../../../../fixtures/system-roles-console-access'; -import disabledTests from '../../../../fixtures/console-example-inputs'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import accessRules from '@/fixtures/system-roles-console-access'; +import disabledTests from '@/fixtures/console-example-inputs'; +import * as TIMEOUTS from '@/fixtures/timeouts'; function noAccessFunc(section) { // * If it's a no-access permission, we just need to check that the section doesn't exist in the side bar diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js index 4cb8889a6ef..9bf217db562 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/openid/openid_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @enterprise @system_console -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; -import {hexToRgbArray, rgbArrayToString} from '../../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {hexToRgbArray, rgbArrayToString} from '@/utils'; describe('System Console OpenId Connect', () => { const FAKE_SETTING = '********************************'; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js index 03caa232a7e..f64cdab702c 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/reporting/site_statistics_spec.js @@ -9,7 +9,7 @@ // Group: @channels @enterprise @system_console -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > Site Statistics', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js index 9bb392b2bc2..59568a63414 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/search_box_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @not_cloud @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System console', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js index 76fc529d28e..e1a74389ebc 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/settings_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Settings', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js index 344970cbf6f..676a11ce721 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_cloud_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @system_console @enterprise @cloud_only -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {adminConsoleNavigation} from '../../../../utils/admin_console'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {adminConsoleNavigation} from '@/utils/admin_console'; describe('System Console - Cloud', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js index 60066e134d8..176be274061 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/sidebar_link_navigation_e20_spec.js @@ -9,8 +9,8 @@ // Group: @channels @enterprise @e20_only @not_cloud @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {adminConsoleNavigation} from '../../../../utils/admin_console'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {adminConsoleNavigation} from '@/utils/admin_console'; describe('System Console - Enterprise', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js index 33ae5b8c776..4689852a7a6 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_part2_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Scheme', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js index 1ca827f5517..e2ebff71b53 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/system_scheme_permission_spec.js @@ -9,7 +9,7 @@ // Group: @channels @enterprise @system_console -import {getAdminAccount} from '../../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('System Scheme Channel Mentions Permissions Test', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js index d964e522635..20e0417e30f 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_guest_channel_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @enterprise @system_console -import {getRandomId} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const permissions = ['create_private_channel', 'edit_post', 'delete_post', 'reactions', 'use_channel_mentions', 'use_group_mentions']; const getButtonId = (permission) => { diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js index 201e1fe493b..d7d5c7ab0ca 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_members_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Team members test', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js index 10aa63d7e96..7526d3dc6de 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_part2_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Team Scheme', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js index 8851ae519c4..5023acc2a98 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/team_scheme_permission_spec.js @@ -9,7 +9,7 @@ // Group: @channels @enterprise @system_console -import {getAdminAccount} from '../../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Team Scheme Channel Mentions Permissions Test', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/user_management/user_management_admin_control_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/user_management/user_management_admin_control_spec.js index df14a3cc794..b0ed8a6d9a8 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/user_management/user_management_admin_control_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/system_console/user_management/user_management_admin_control_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('User Management', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js index 0f01d8c4f03..3b8a2490cad 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/channel_files_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @filesearch -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {interceptFileUpload, waitUntilUploadComplete} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Channel files', () => { const wordFile = 'word-file.doc'; const wordxFile = 'wordx-file.docx'; diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js index 3b2aa2b4d56..23d7cbef4a8 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/cloud_upload_files_spec.js @@ -9,10 +9,11 @@ // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {interceptFileUpload, waitUntilUploadComplete} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + function simulateSubscription(subscription, currentStorageUsageBytes, planLimit) { cy.intercept('GET', '**/api/v4/cloud/subscription', { statusCode: 200, diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js index 2e69de5370f..d8861e8ac3b 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/disabled_file_upload_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @not_cloud @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Upload Files - Settings', () => { let channelUrl; diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js index 2466a93a9f8..3fb2ff539f9 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_audio_spec.js @@ -10,8 +10,6 @@ // Stage: @prod // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { attachFile, downloadAttachmentAndVerifyItsProperties, @@ -19,6 +17,9 @@ import { waitUntilUploadComplete, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Upload Files - Audio', () => { before(() => { // # Create new team and new user and visit test channel diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js index 9bae3fd191f..663927f30d1 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_generic_spec.js @@ -10,8 +10,6 @@ // Stage: @prod // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { attachFile, downloadAttachmentAndVerifyItsProperties, @@ -19,6 +17,9 @@ import { waitUntilUploadComplete, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Upload Files - Generic', () => { before(() => { // # Create new team and new user and visit test channel diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js index 6d392b11e9d..2f66beeaf1b 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_image_spec.js @@ -10,8 +10,6 @@ // Stage: @prod // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { attachFile, downloadAttachmentAndVerifyItsProperties, @@ -19,6 +17,9 @@ import { waitUntilUploadComplete, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Upload Files - Image', () => { before(() => { // # Create new team and new user and visit test channel diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js index 4a697d3ac05..c8420b06f93 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/file_preview_video_spec.js @@ -10,8 +10,6 @@ // Stage: @prod // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { attachFile, downloadAttachmentAndVerifyItsProperties, @@ -19,6 +17,9 @@ import { waitUntilUploadComplete, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Upload Files - Video', () => { before(() => { // # Create new team and new user and visit test channel diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/helpers.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/helpers.js index ea2dba30926..1723394a0e8 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function downloadAttachmentAndVerifyItsProperties(fileURL, filename, httpContext) { // * Verify it has not empty download link diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js index 7cdfc683db0..c9a1d6d897b 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_not_cloud_spec.js @@ -10,11 +10,12 @@ // Stage: @prod // Group: @channels @not_cloud @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {stubClipboard} from '../../../utils'; - import {downloadAttachmentAndVerifyItsProperties} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {stubClipboard} from '@/utils'; + + describe('Upload Files', () => { let testTeam; let testChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js index 64ba261aac9..72fd5720605 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/upload_files_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { downloadAttachmentAndVerifyItsProperties, interceptFileUpload, waitUntilUploadComplete, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Upload Files', () => { let channelUrl; let channelId; diff --git a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js index db67be96004..9c9f924cbc4 100644 --- a/e2e-tests/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/files_and_attachments/youtube_video_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @files_and_attachments -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('YouTube Video', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js index cd0e602b338..bd1af6ebbfb 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_1_spec.js @@ -10,11 +10,12 @@ // Stage: @prod // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../utils'; - import {verifyEphemeralMessage} from './helper'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; + + describe('Integrations', () => { let testUser; let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js index 97e039114f1..97458d622f5 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_2_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Integrations', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js index 5775dd3aa23..82b752a0c67 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/common_commands_3_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Integrations', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js index 4f1f8c2eaa7..169961db1cf 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/groupmsg_command_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @integrations -import {getRandomId} from '../../../../utils'; - import {loginAndVisitChannel} from './helper'; +import {getRandomId} from '@/utils'; + + describe('Integrations', () => { let testUser; const userGroup = []; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/helper.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/helper.js index 92c4e2d4b4c..963bc76a2da 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/helper.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/helper.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function loginAndVisitChannel(user, channelUrl) { cy.apiLogin(user); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js index 5c8a16a6f77..1ab239fa006 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invalid_commands_spec.js @@ -9,7 +9,7 @@ // Group: @channels @integrations -import * as MESSAGES from '../../../../fixtures/messages'; +import * as MESSAGES from '@/fixtures/messages'; describe('Invalid slash command', () => { const incorrectCommand1 = 'notacommand-1'; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js index 1e76965d8cc..89d326a07ee 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_command_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; - import {loginAndVisitChannel} from './helper'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Integrations', () => { let testUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js index 2d74f8ad865..25b1f6c4205 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/invite_people_command_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @integrations -import {getJoinEmailTemplate, verifyEmailBody} from '../../../../utils'; - import {loginAndVisitChannel} from './helper'; +import {getJoinEmailTemplate, verifyEmailBody} from '@/utils'; + + describe('Integrations', () => { let testUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js index e41f5b1203a..975fdc262d7 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/builtin_commands/user_status_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Integrations', () => { const away = {name: 'away', ariaLabel: 'Away', message: 'You are now away', className: 'icon-clock'}; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js index b84632b63b1..2c4db35f3cc 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/custom_slash_commands_spec.js @@ -13,7 +13,6 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../../fixtures/timeouts'; import { enablePermission, goToSystemScheme, @@ -22,6 +21,8 @@ import { import {addNewCommand, runSlashCommand} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + describe('Slash commands', () => { const trigger = 'my_trigger'; let user1; @@ -39,7 +40,7 @@ describe('Slash commands', () => { team1 = team; cy.apiGetChannelByName(team.name, 'town-square').then(({channel}) => { - commandURL = `${Cypress.env().webhookBaseUrl}/send_message_to_channel?channel_id=${channel.id}`; + commandURL = `${Cypress.expose().webhookBaseUrl}/send_message_to_channel?channel_id=${channel.id}`; }); // # Create a GM with at least 3 users @@ -70,7 +71,7 @@ describe('Slash commands', () => { cy.apiAdminLogin(user1); cy.apiGetChannelByName(team1.name, groupChannel.name).then(({channel}) => { - const customGMUrl = `${Cypress.env().webhookBaseUrl}/send_message_to_channel?channel_id=${channel.id}`; + const customGMUrl = `${Cypress.expose().webhookBaseUrl}/send_message_to_channel?channel_id=${channel.id}`; // # Add a new command to send a GM addNewCommand(team1, gmTrigger, customGMUrl); @@ -95,7 +96,7 @@ describe('Slash commands', () => { const message = `hello from ${user2.username}: ${Date.now()}`; cy.postMessageAs({sender: user2, message, channelId}); - const customDMUrl = `${Cypress.env().webhookBaseUrl}/send_message_to_channel?channel_id=${channelId}`; + const customDMUrl = `${Cypress.expose().webhookBaseUrl}/send_message_to_channel?channel_id=${channelId}`; addNewCommand(team1, dmTrigger, customDMUrl); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js index b35eeb5e48f..39e5433be96 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/custom_slash_commands/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function addNewCommand(team, trigger, url) { // # Open slash command page @@ -16,7 +16,7 @@ export function addNewCommand(team, trigger, url) { cy.apiGetChannelByName(team.name, 'town-square').then(({channel}) => { let urlToType = url; if (url === '') { - urlToType = `${Cypress.env('webhookBaseUrl')}/send_message_to_channel?channel_id=${channel.id}`; + urlToType = `${Cypress.expose('webhookBaseUrl')}/send_message_to_channel?channel_id=${channel.id}`; } cy.get('#url').type(urlToType); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts index fc2a6e96bc5..1413b6a8214 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_does_not_collapse_spec.ts @@ -10,8 +10,8 @@ // Group: @channels @incoming_webhook describe('Integrations/Incoming Webhook', () => { - let incomingWebhook; - let testChannel; + let incomingWebhook: {data: unknown; url: string}; // apiCreateWebhook returns untyped body + let testChannel: Cypress.Channel; before(() => { // # Create and visit new channel and create incoming webhook diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_footer_markdown_spec.ts b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_footer_markdown_spec.ts index 055a05045fd..deb16723c26 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_footer_markdown_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/attachment_footer_markdown_spec.ts @@ -10,9 +10,9 @@ // Group: @channels @incoming_webhook describe('Integrations/Incoming Webhook', () => { - let incomingWebhook; - let testTeam; - let testChannel; + let incomingWebhook: {data: unknown; url: string}; // apiCreateWebhook returns untyped body + let testTeam: Cypress.Team; + let testChannel: Cypress.Channel; before(() => { // # Create and visit new channel and create incoming webhook diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js index 25e9b629b4a..efff5393a52 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/disallow_username_profile_override_spec.js @@ -10,11 +10,12 @@ // Stage: @prod // Group: @channels @incoming_webhook -import {getRandomId} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; - import {enableUsernameAndIconOverride} from './helpers'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Incoming webhook', () => { let sysadmin; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js index 18dd1c22561..d0b3cf6fb03 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/inapp_username_profile_override_spec.js @@ -9,8 +9,8 @@ // Group: @channels @incoming_webhook -import {getRandomId} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Incoming webhook', () => { const inAppUsername = 'in-app'; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts index 34a78fe6ff3..c3b90cd642e 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/invalid_attachment_URL_webhook_spec.ts @@ -10,8 +10,8 @@ // Group: @channels @incoming_webhook describe('Integrations/Incoming Webhook', () => { - let incomingWebhook; - let testChannel; + let incomingWebhook: {data: unknown; url: string}; // apiCreateWebhook returns untyped body + let testChannel: Cypress.Channel; before(() => { // # Let the webhook have its own icon diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js index 0ec506ab8d8..60c9738cfcc 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/setting_spec.js @@ -9,8 +9,8 @@ // Group: @channels @incoming_webhook -import {getRandomId} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Incoming webhook', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js index ed6bb51f6c7..5f98d071b77 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/incoming_webhook/webhook_posts_when_creator_not_in_channel_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @integrations -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Integrations', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js index 655e166a8f2..ab0bbaf4303 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_search_gives_feedback_spec.js @@ -9,7 +9,7 @@ // Group: @channels @integrations -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Integrations', () => { let teamName; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/integrations_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_spec.js index 7ddfc2bf4c0..1a0b331ce79 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/integrations_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/integrations_spec.js @@ -9,9 +9,9 @@ // Group: @channels @integrations -import {getRandomId} from '../../../utils'; -import * as MESSAGES from '../../../fixtures/messages'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import * as MESSAGES from '@/fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Integrations page', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js index 1f798182221..9068404d485 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/message_to_channel_via_slash_command_spec.js @@ -43,7 +43,7 @@ describe('Integrations', () => { method: 'P', team_id: testTeam.id, trigger: 'error_handling', - url: `${Cypress.env().webhookBaseUrl}/send_message_to_channel?type=system_message&channel_id=${offTopicChannel.id}`, + url: `${Cypress.expose().webhookBaseUrl}/send_message_to_channel?type=system_message&channel_id=${offTopicChannel.id}`, username: '', }; @@ -85,7 +85,7 @@ describe('Integrations', () => { method: 'P', team_id: testTeam.id, trigger: 'send_message_from_different_channel', - url: `${Cypress.env().webhookBaseUrl}/send_message_to_channel?channel_id=${offTopicChannel.id}`, + url: `${Cypress.expose().webhookBaseUrl}/send_message_to_channel?channel_id=${offTopicChannel.id}`, username: '', }; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js index 7e284cf6802..3c0c697576f 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/delete_outgoing_webhook_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Integrations', () => { let testTeam; @@ -19,7 +19,7 @@ describe('Integrations', () => { let outgoingWebhook; before(() => { - const callbackUrl = `${Cypress.env().webhookBaseUrl}/post_outgoing_webhook`; + const callbackUrl = `${Cypress.expose().webhookBaseUrl}/post_outgoing_webhook`; cy.requireWebhookServer(); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js index aedcae69db7..f1467c5e895 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_outgoing_webhook_spec.js @@ -9,7 +9,7 @@ // Group: @channels @integrations -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Integrations', () => { let testTeam; @@ -18,7 +18,7 @@ describe('Integrations', () => { let outgoingWebhook; before(() => { - const callbackUrl = `${Cypress.env().webhookBaseUrl}/post_outgoing_webhook`; + const callbackUrl = `${Cypress.expose().webhookBaseUrl}/post_outgoing_webhook`; cy.requireWebhookServer(); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js index 7b2b4eef496..1d5b6a6f657 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/disable_override_username_profile_spec.js @@ -9,16 +9,17 @@ // Group: @channels @outgoing_webhook -import * as TIMEOUTS from '../../../../fixtures/timeouts'; import { enableUsernameAndIconOverrideInt, enableUsernameAndIconOverride, } from '../incoming_webhook/helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + describe('Outgoing webhook', () => { const triggerWord = 'text'; const messageWithTriggerWord = 'text with some more text'; - const callbackUrl = `${Cypress.env().webhookBaseUrl}/post_outgoing_webhook`; + const callbackUrl = `${Cypress.expose().webhookBaseUrl}/post_outgoing_webhook`; const noChannelSelectionOption = '--- Select a channel ---'; const overrideIconUrl = 'http://via.placeholder.com/150/00F/888'; const defaultUsername = 'webhook'; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js index 1c1e62ec4a3..3d5c96e474e 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/prompt_set_status_spec.js @@ -8,7 +8,7 @@ // *************************************************************** -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Prompting set status', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js index 1af4fb27c5a..d9900f43bbc 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/regenerate_token_spec.js @@ -15,7 +15,7 @@ describe('Integrations', () => { let testChannel; before(() => { - const callbackUrl = `${Cypress.env().webhookBaseUrl}/post_outgoing_webhook`; + const callbackUrl = `${Cypress.expose().webhookBaseUrl}/post_outgoing_webhook`; cy.requireWebhookServer(); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js index e8c6b7f830e..beb952b9748 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/outgoing_webhook/search_on_outgoing_webhooks_spec.js @@ -22,7 +22,7 @@ describe('Integrations', () => { const triggerC = 'carrot'; before(() => { - const callbackUrl = `${Cypress.env().webhookBaseUrl}/post_outgoing_webhook`; + const callbackUrl = `${Cypress.expose().webhookBaseUrl}/post_outgoing_webhook`; cy.requireWebhookServer(); diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js index 3f1ac9f9601..89284122256 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/plugin_slash_command_stays_visible_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @integrations @plugin @not_cloud -import {agendaPlugin} from '../../../utils/plugins'; +import {agendaPlugin} from '@/utils/plugins'; describe('Integrations', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/poll_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/poll_spec.js index cbeb6b91fde..4a4c0ed7ab7 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/poll_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/poll_spec.js @@ -9,8 +9,8 @@ // Group: @channels @plugin @not_cloud -import * as MESSAGES from '../../../fixtures/messages'; -import {matterpollPlugin} from '../../../utils/plugins'; +import * as MESSAGES from '@/fixtures/messages'; +import {matterpollPlugin} from '@/utils/plugins'; describe('/poll', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/regen_token_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/regen_token_spec.js index ee414b93a2a..adb1544120d 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/regen_token_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/regen_token_spec.js @@ -9,7 +9,7 @@ // Group: @channels @integrations -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Integrations', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/integrations/slash_commands_spec.js b/e2e-tests/cypress/tests/integration/channels/integrations/slash_commands_spec.js index 8a9fb2eb9f6..e3d09a1ceb6 100644 --- a/e2e-tests/cypress/tests/integration/channels/integrations/slash_commands_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/integrations/slash_commands_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Integrations', () => { let user1; @@ -41,7 +41,7 @@ describe('Integrations', () => { team1 = team; offTopicUrl1 = offTopicUrl; cy.apiGetChannelByName(team1.name, 'off-topic').then(({channel}) => { - commandURL = `${Cypress.env().webhookBaseUrl}/send_message_to_channel?channel_id=${channel.id}`; + commandURL = `${Cypress.expose().webhookBaseUrl}/send_message_to_channel?channel_id=${channel.id}`; }); cy.apiCreateUser().then(({user: otherUser}) => { diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js index 296e3debfc6..8370eb1bfb0 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/boolean_spec.js @@ -30,7 +30,7 @@ describe('Interactive Dialog - Apps Form', () => { cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/datetime_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/datetime_spec.js index 0f3ec554405..72b60c31422 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/datetime_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/datetime_spec.js @@ -91,7 +91,7 @@ describe('Interactive Dialog - Date and DateTime Fields', () => { testTeam = team; testChannel = channel; - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts index cd93b34e07d..4d0ecd4f8b8 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/demo_boolean_spec.ts @@ -11,7 +11,7 @@ // If the contents of the interactive dialog from the demo plugin change, please update the demoPluginDialogElements object. -import {demoPlugin} from '../../../utils/plugins'; +import {demoPlugin} from '@/utils/plugins'; describe('Interactive Dialogs', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/dynamic_select_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/dynamic_select_spec.js index 3290e350190..2f87fa5cdae 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/dynamic_select_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/dynamic_select_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const webhookUtils = require('../../../../utils/webhook_utils'); @@ -33,7 +33,7 @@ describe('Interactive Dialog - Dynamic Select', () => { cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/field_refresh_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/field_refresh_spec.js index 962c78ef33e..9cb2a7bdf92 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/field_refresh_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/field_refresh_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; let createdCommand; @@ -30,7 +30,7 @@ describe('Interactive Dialog - Field Refresh', () => { cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js index d155832aef8..15d1561c996 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/full_dialog_spec.js @@ -44,7 +44,7 @@ describe('Interactive Dialog - Apps Form', () => { cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiform_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiform_spec.js index c35bfd9826d..8b910801b9a 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiform_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiform_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; let createdCommand; @@ -30,7 +30,7 @@ describe('Interactive Dialog - Multiform (Step-by-step Form Submissions)', () => cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiselect_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiselect_spec.js index 84dc43f34b7..3be319e2d61 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiselect_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/multiselect_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const webhookUtils = require('../../../../utils/webhook_utils'); @@ -35,7 +35,7 @@ describe('Interactive Dialog - Multiselect', () => { cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; // Create command for tests with defaults const commandWithDefaults = { diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js index 726b8d84bc2..8dab6305df9 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/scrollable_spec.js @@ -34,7 +34,7 @@ describe('Interactive Dialog - Apps Form', () => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js index 05c2de6ba7b..fa6cdc8cea4 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_dialog/simple_dialog_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const webhookUtils = require('../../../../utils/webhook_utils'); @@ -33,7 +33,7 @@ describe('Interactive Dialog - Apps Form without element', () => { cy.apiCreateTeam('test-team', 'Test Team').then(({team}) => { cy.visit(`/${team.name}`); - const webhookBaseUrl = Cypress.env().webhookBaseUrl; + const webhookBaseUrl = Cypress.expose().webhookBaseUrl; const command = { auto_complete: false, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_menu/action_button_error_handling_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/action_button_error_handling_spec.js index 25f6f1349e7..98dd02a9891 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_menu/action_button_error_handling_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_menu/action_button_error_handling_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Interactive Menu - Action Button Error Handling', () => { let incomingWebhook; @@ -58,7 +58,7 @@ describe('Interactive Menu - Action Button Error Handling', () => { }); it('MM-65023 should clear error message when successful action is triggered', () => { - const payload = getPayloadWithErrorAndSuccess(Cypress.env().webhookBaseUrl); + const payload = getPayloadWithErrorAndSuccess(Cypress.expose().webhookBaseUrl); // # Post an incoming webhook with error and success buttons cy.postIncomingWebhook({url: incomingWebhook.url, data: payload, waitFor: 'attachment-pretext'}); diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js index da55c12e789..30d9648b25f 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_menu/basic_options_spec.js @@ -14,9 +14,9 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import messageMenusOptions from '../../../fixtures/interactive_message_menus_options.json'; -import {getMessageMenusPayload} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import messageMenusOptions from '@/fixtures/interactive_message_menus_options.json'; +import {getMessageMenusPayload} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const options = [ {text: 'Option 1', value: 'option1'}, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js index 9287466c315..6708835b295 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_menu/select_with_keys_spec.js @@ -14,7 +14,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import {getMessageMenusPayload} from '../../../utils'; +import {getMessageMenusPayload} from '@/utils'; const searchOptions = [ {text: 'SearchOption1', value: 'searchoption1'}, diff --git a/e2e-tests/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js b/e2e-tests/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js index feb1fa84d3e..abd67a12446 100644 --- a/e2e-tests/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/interactive_menu/slack_parsing_message_button_spec.js @@ -13,7 +13,7 @@ * Note: This test requires webhook server running. Initiate `npm run start:webhook` to start. */ -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Interactive Menu', () => { let incomingWebhook; @@ -39,7 +39,7 @@ describe('Interactive Menu', () => { }); it('should parse text into Slack-compatible markdown depending on "skip_slack_parsing" property on response', () => { - const payload = getPayload(Cypress.env().webhookBaseUrl); + const payload = getPayload(Cypress.expose().webhookBaseUrl); // # Post an incoming webhook cy.postIncomingWebhook({url: incomingWebhook.url, data: payload, waitFor: 'attachment-pretext'}); diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js index e0d474b2edf..693497c239b 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/alt_option_plus_up_down_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { let sysadmin; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js index b71bc57b0a8..6897dc587d8 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_focuses_message_box_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js index 260ff941871..ca50f2aeea6 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_open_channel_from_global_threads_spec.js @@ -9,7 +9,7 @@ // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js index a7bec486959..2971e6ac65f 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_k_unreads_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js index a4e130fec7e..834620e56eb 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; /** * Fires off keyboard shortcut for "React to last message" diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js index e7dd64827d3..2add1febef0 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/not_open_emoji_picker_spec.js @@ -10,13 +10,14 @@ // Stage: @prod // Group: @channels @emoji @keyboard_shortcuts -import * as MESSAGES from '../../../../fixtures/messages'; - import { doReactToLastMessageShortcut, pressEscapeKey, } from './helpers'; +import * as MESSAGES from '@/fixtures/messages'; + + describe('Keyboard shortcut CTRL/CMD+Shift+\\ for adding reaction to last message', () => { let testUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js index 96ab55c8ad3..974b26635cf 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_center_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @emoji @keyboard_shortcuts -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import * as MESSAGES from '../../../../fixtures/messages'; - import { checkReactionFromPost, doReactToLastMessageShortcut, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; + + describe('Keyboard shortcut CTRL/CMD+Shift+\\ for adding reaction to last message', () => { let testUser; let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js index 28837a366c2..8d81f3c5831 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_shift_slash/react_to_rhs_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @emoji @keyboard_shortcuts -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import * as MESSAGES from '../../../../fixtures/messages'; - import { checkReactionFromPost, doReactToLastMessageShortcut, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; + + describe('Keyboard shortcut CTRL/CMD+Shift+\\ for adding reaction to last message', () => { let testUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js index be1dd65e9bf..4ea52601a3a 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_in_rhs_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js index 3936f122dbb..942f430c0fb 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/ctrl_cmd_up_down_no_action_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js index 9b5650386c9..b8a745487d3 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/dot_menu_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import {beUnread} from '../../../support/assertions'; -import {stubClipboard} from '../../../utils'; +import {beUnread} from '@/support/assertions'; +import {stubClipboard} from '@/utils'; describe('Keyboard Shortcuts', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js index 6e0f79e1a83..d7d04f70800 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_1_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as messages from '../../../fixtures/messages'; -import timeouts, * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as messages from '@/fixtures/messages'; +import timeouts, * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js index d4b38a959ba..86762345d5f 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_2_spec.js @@ -9,8 +9,8 @@ // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {isMac} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {isMac} from '@/utils'; describe('Keyboard Shortcuts', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js index 125bcc60161..ba72e53b4cd 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/keyboard_shortcuts_3_spec.js @@ -9,7 +9,7 @@ // Group: @channels @keyboard_shortcuts -import {isMac} from '../../../utils'; +import {isMac} from '@/utils'; describe('Keyboard Shortcuts', () => { const count = 5; diff --git a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js index 610746be713..55cbb647765 100644 --- a/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/keyboard_shortcuts/up_arrow_edit_message_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Keyboard Shortcuts', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts b/e2e-tests/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts index 5054cda1d49..a0b7f08e585 100644 --- a/e2e-tests/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/large_data_sets/unreads_channels_spec.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js index f0f202bd4c1..410b1d4d2fb 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/bot_post_mark_as_unread_spec.js @@ -9,10 +9,11 @@ // Group: @channels @mark_as_unread -import {beUnread} from '../../../support/assertions'; - import {markAsUnreadFromPost, verifyPostNextToNewMessageSeparator} from './helpers'; +import {beUnread} from '@/support/assertions'; + + describe('Bot post unread message', () => { let newChannel; let botPost; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js index 817a1a3fe36..4074b7662fc 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/channel_unread_spec.js @@ -9,10 +9,11 @@ // Group: @channels @channel -import {beRead, beUnread} from '../../../support/assertions'; - import {verifyPostNextToNewMessageSeparator, switchToChannel} from './helpers'; +import {beRead, beUnread} from '@/support/assertions'; + + describe('channel unread posts', () => { let testUser; let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/helpers.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/helpers.js index fbcbea8f4b9..20bd9f2511e 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function markAsUnreadFromPost(post, rhs = false) { const prefix = rhs ? 'rhsPost' : 'post'; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js index f0e681736c4..8ae2595414f 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/leave_channel_unread_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @mark_as_unread -import {beRead, beUnread} from '../../../support/assertions'; - import {markAsUnreadFromPost, switchToChannel} from './helpers'; +import {beRead, beUnread} from '@/support/assertions'; + + describe('Leaving channel', () => { let testUser; let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js index 943fcbfe8e7..a4980a95bdf 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_spec.js @@ -9,10 +9,11 @@ // Group: @channels @mark_as_unread -import {beRead, beUnread} from '../../../support/assertions'; - import {verifyPostNextToNewMessageSeparator, verifyTopSpaceForNewMessage, verifyBottomSpaceForNewMessage, switchToChannel, showCursor, notShowCursor} from './helpers'; +import {beRead, beUnread} from '@/support/assertions'; + + describe('Mark as Unread', () => { let testUser; let team1; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js index 85039ad1f7b..c7c640a312e 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_as_unread_using_shortcuts_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @mark_as_unread -import {beRead, beUnread} from '../../../support/assertions'; - import {verifyPostNextToNewMessageSeparator, switchToChannel, showCursor} from './helpers'; +import {beRead, beUnread} from '@/support/assertions'; + + describe('Mark as Unread', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js index c4e5fc6cd14..aec285d883c 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_gm_as_unread_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @mark_as_unread -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {verifyPostNextToNewMessageSeparator} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Mark as Unread', () => { let testUser; let otherUser1; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js index 633acaf3357..f7ca197962f 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/mark_mentions_as_unread_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @mark_as_unread -import {beUnread} from '../../../support/assertions'; - import {verifyPostNextToNewMessageSeparator, switchToChannel} from './helpers'; +import {beUnread} from '@/support/assertions'; + + describe('Mark post with mentions as unread', () => { let userA; let userB; diff --git a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js index 589ce69f7e9..192e25b0c3f 100644 --- a/e2e-tests/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/mark_as_unread/toast_appears_unread_spec.js @@ -9,10 +9,11 @@ // Group: @channels @mark_as_unread -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {markAsUnreadFromPost, switchToChannel} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Verify unread toast appears after repeated manual marking post as unread', () => { let firstPost; let secondPost; diff --git a/e2e-tests/cypress/tests/integration/channels/markdown/markdown_image_spec.js b/e2e-tests/cypress/tests/integration/channels/markdown/markdown_image_spec.js index 4b834a73c26..4f6d782cfdd 100644 --- a/e2e-tests/cypress/tests/integration/channels/markdown/markdown_image_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/markdown/markdown_image_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @markdown @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Markdown', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/markdown/markdown_text_spec.js b/e2e-tests/cypress/tests/integration/channels/markdown/markdown_text_spec.js index e57cb718ef6..ff11978f048 100644 --- a/e2e-tests/cypress/tests/integration/channels/markdown/markdown_text_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/markdown/markdown_text_spec.js @@ -9,7 +9,7 @@ // Group: @channels @markdown @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const testCases = [ {name: 'Markdown - basic', fileKey: 'markdown_basic'}, diff --git a/e2e-tests/cypress/tests/integration/channels/menus/status_dropdown_spec.js b/e2e-tests/cypress/tests/integration/channels/menus/status_dropdown_spec.js index 2e5892b4859..67b8acd11d2 100644 --- a/e2e-tests/cypress/tests/integration/channels/menus/status_dropdown_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/menus/status_dropdown_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @menu @custom_status @status_menu -import theme from '../../../fixtures/theme.json'; +import theme from '@/fixtures/theme.json'; describe('Status dropdown menu', () => { const statusTestCases = [ diff --git a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js index 53ef3682686..6f386a80a25 100644 --- a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_dm_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Forward Message', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js index 2ba22ceeb58..6603a03b6fe 100644 --- a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_gm_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Forward Message', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js index cfd80c9b75d..5fa8cb785fb 100644 --- a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_private_channel_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Forward Message', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js index 3ded2624481..ede6b04e649 100644 --- a/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/message_forwarding/forward_message_from_public_channel_spec.js @@ -9,7 +9,7 @@ // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const DEFAULT_CHARACTER_LIMIT = 16383; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/at_mention_loading_spec.ts b/e2e-tests/cypress/tests/integration/channels/messaging/at_mention_loading_spec.ts index 4b7d6ce4cb8..430a7791c71 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/at_mention_loading_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/messaging/at_mention_loading_spec.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {getAdminAccount} from '../../../../tests/support/env'; +import {getAdminAccount} from '@/support/env'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) @@ -14,7 +14,7 @@ import {getAdminAccount} from '../../../../tests/support/env'; describe('loading of at-mentioned users', () => { const admin = getAdminAccount(); - let testChannel; + let testChannel: Cypress.Channel; before(() => { // # Login as test user and visit off-topic diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_spec.js index da404296d4e..3bb755dae0c 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/autocomplete_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('autocomplete', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js index f46ccce32b3..37dd217c901 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/center_channel_rhs_overlap_spec.js @@ -10,9 +10,9 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; -import {isMac, getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; +import {isMac, getRandomId} from '@/utils'; describe('Messaging', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js index f526eaef855..945260eff5e 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/channel_and_posts_links_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Message permalink', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/channel_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_menu_spec.js index 299b2b98cef..16aaca65083 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/channel_menu_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/channel_menu_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; function demoteUserToGuest(user, admin) { // # Issue a Request to demote the user to guest diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js index 46218f56067..e0708129f3c 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/channel_read_after_permalink_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/copy_post_text_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/copy_post_text_spec.js index d5d551a592b..6c15c51ff9e 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/copy_post_text_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/copy_post_text_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import {stubClipboard} from '../../../utils'; +import {stubClipboard} from '@/utils'; describe('Permalink message edit', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js index cdf666703ac..62095d4a46a 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/ctrl_cmd_k_open_dm_with_mouse_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging @keyboard_shortcuts -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let firstUser; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/date_separator_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/date_separator_spec.js index c945ff7e8ea..2fe70cf1012 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/date_separator_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/date_separator_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Messaging', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/direct_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/direct_message_spec.js index 08ccaba91dd..f90f2decbba 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/direct_message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/direct_message_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {spyNotificationAs} from '../../../support/notification'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {spyNotificationAs} from '@/support/notification'; describe('Direct Message', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js index 478279e31ee..0d526d2ce04 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/dm_list_of_users_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/edit_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/edit_message_spec.js index af345e95a0b..3bdb1712f44 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/edit_message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/edit_message_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Edit Message', () => { let offTopicUrl; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js index 93f0a70cfe7..2899f5364d3 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_recently_used_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import timeouts from '../../../fixtures/timeouts'; +import timeouts from '@/fixtures/timeouts'; describe('Messaging', () => { let offTopicPath; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js index f41c2d6731c..e6d7d8b32c8 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/emoji_to_markdown_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/focus_move_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/focus_move_spec.js index 41ba26aabf1..3ada13dfe7b 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/focus_move_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/focus_move_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let offTopicUrl; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/group_message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/group_message_spec.js index e80fef84454..6d1380b615b 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/group_message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/group_message_spec.js @@ -9,8 +9,8 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {spyNotificationAs} from '../../../support/notification'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {spyNotificationAs} from '@/support/notification'; describe('Group Message', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js index d737f1243bf..7711e3573f1 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/header_not_cloud_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging @plugin @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {matterpollPlugin} from '../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {matterpollPlugin} from '@/utils/plugins'; describe('Header', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/header_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/header_spec.js index 5a7dfbd3033..8593df4cf7c 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/header_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/header_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Header', () => { let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js index b351d6ece74..dc9ebaf2ab4 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/input_box_expands_with_rhs_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('Messaging', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/local_date_time_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/local_date_time_spec.js index f001e51618e..2091b7f85a1 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/local_date_time_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/local_date_time_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Messaging', () => { const sysadmin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/long_draft_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/long_draft_spec.js index 30f0ecf2e29..eb510f9db5e 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/long_draft_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/long_draft_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let otherChannelName; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js index b75dd68dc6c..a9c1db37393 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/long_post_attachments_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/markdown_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/markdown_spec.js index 57959160c54..73eb39caa6c 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/markdown_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/markdown_spec.js @@ -9,7 +9,7 @@ // Group: @channels @not_cloud @messaging @markdown -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; const testCases = [ {name: 'Markdown - typescript', fileKey: 'markdown_typescript'}, diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js index c4cbf47c6cb..60c52275380 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/mention_autocomplete_overlap_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_auto_response_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_auto_response_spec.js index af840df56e2..ff2844e6625 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_auto_response_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_auto_response_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @auto_response @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Auto Response In DMs', () => { const AUTO_RESPONSE_MESSAGE = 'Out of Office'; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js index a010f8615ee..13d951f9e25 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_draw_spec.js @@ -9,9 +9,9 @@ // Group: @channels @not_cloud @messaging @plugin -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; -import {drawPlugin} from '../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import {drawPlugin} from '@/utils/plugins'; describe('M17448 Does not post draft message', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js index cf01e586433..bfa0039eef4 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_channel_reference_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js index 6fdb859a378..2a56a44e8c2 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_deleted_on_reply_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('Messaging', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js index dfd56feb05e..d8186875be5 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_clear_text_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Delete the post on text clear', () => { let offtopiclink; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts index c75c21d2994..d83c30bf588 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_history_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Post Edit History', () => { let offtopiclink: string; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js index b371fcaf41c..cd465508679 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_edit_post_with_attachment_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let offtopiclink; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_permalink_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_permalink_spec.js index 1d751ee4503..c4ef52a6dfe 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_permalink_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_permalink_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Message permalink', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js index bf6d735fd40..12479a0fb02 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_gm_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import {getRandomId} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Reply in existing GM', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js index 4f5e8cb76fe..db19f89cb9c 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_input_box_expand_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js index f7cf3aeea0f..2c2b7e79583 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_part2_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -const TIMEOUTS = require('../../../fixtures/timeouts'); +const TIMEOUTS = require('@/fixtures/timeouts'); describe('Message Reply', () => { let mainChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_spec.js index b0042063837..9c8f26a47f4 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_reply_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Message Reply', () => { const sysadmin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/message_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/message_spec.js index e1535ef179a..e7fc009d0b8 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/message_spec.js @@ -10,9 +10,9 @@ // Stage: @prod // Group: @channels @messaging @smoke -import {getAdminAccount} from '../../../support/env'; -import * as MESSAGES from '../../../fixtures/messages'; -import timeouts from '../../../fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import * as MESSAGES from '@/fixtures/messages'; +import timeouts from '@/fixtures/timeouts'; describe('Message', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js index bfdbbaad0d6..867ad440a61 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/mobile_profile_popover_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Profile popover', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/permalink_click_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_click_spec.js index af29d3d90e3..9d12319bd93 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/permalink_click_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_click_spec.js @@ -9,8 +9,8 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('Permalink message edit', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js index 67ed9538ea6..f0a795939c8 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_loading_indicator_spec.js @@ -9,8 +9,8 @@ // Group: @channels @messaging -import {getRandomId} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js index 001ba8ba0d6..9e1aeeb6842 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/permalink_message_edit_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Permalink message edit', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js index 4068858b2b0..428da809d07 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/pinned_posts_2_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('pinned messages', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/post_header_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_header_spec.js index 3fdfc4c2066..fe5ee8fd54a 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/post_header_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/post_header_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Post Header', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/post_html_table_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_html_table_spec.js index cd3e8e12d25..0c74d3830b7 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/post_html_table_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/post_html_table_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Post HTML', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/post_pre_header_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/post_pre_header_spec.js index 1e7543121d9..91072fd53e3 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/post_pre_header_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/post_pre_header_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import {verifySavedPost} from '../../../support/ui/post'; +import {verifySavedPost} from '@/support/ui/post'; describe('Post PreHeader', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/private_channel_open_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/private_channel_open_spec.js index b62bcab25aa..e0fa53d5ff6 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/private_channel_open_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/private_channel_open_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging - Opening a private channel using keyboard shortcuts', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js index 69ac88e5b78..a8f9faf0b97 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/reactions_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js index 9d04d947055..cf49386fee4 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/receive_message_on_socket_reconnect_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/remove_gif_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/remove_gif_spec.js index c8b2bf74844..af85ef3844c 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/remove_gif_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/remove_gif_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('Messaging', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js index 450ae8e292e..60ee097cae3 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/remove_last_post_in_channel_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Remove Last Post', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/save_post_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/save_post_spec.js index d6c7467a387..4cb6b7692b9 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/save_post_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/save_post_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import {verifySavedPost, verifyUnsavedPost} from '../../../support/ui/post'; +import {verifySavedPost, verifyUnsavedPost} from '@/support/ui/post'; describe('Save Post', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js index 5f2f7bf72f3..d9bcbda42c7 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/scroll_channel_messages_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import {getAdminAccount} from '../../../support/env'; +import {getAdminAccount} from '@/support/env'; describe('Scroll channel`s messages in mobile view', () => { const sysadmin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js index 4c28b8e1e84..abefe4ae865 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/send_message_via_profile_popover_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Profile popover', () => { const message = `Testing ${Date.now()}`; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js index 0d7e285390b..7bf7b3a13bd 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/single_image_thumbnail_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging @smoke -import * as MESSAGES from '../../../fixtures/messages'; +import * as MESSAGES from '@/fixtures/messages'; describe('Message', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/strikethrough_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/strikethrough_spec.js index 63f3c73bdf1..ee2867f64dc 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/strikethrough_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/strikethrough_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js index 15d710e0037..31b8ee48322 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/system_message_limited_options_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { let townsquareLink; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js index 839bfd2269c..8154918306b 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/tooltips_on_top_nav_channel_icons_posts_spec.js @@ -9,7 +9,7 @@ // Group: @channels @messaging @plugin @not_cloud -import {demoPlugin} from '../../../utils/plugins'; +import {demoPlugin} from '@/utils/plugins'; describe('Messaging', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js index 953895788dc..2694f8b5eb8 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/typing_on_middle_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js b/e2e-tests/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js index c8e3b309164..44969ccb403 100644 --- a/e2e-tests/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/messaging/typing_should_show_up_when_editing_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Messaging', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/modals/quick_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/modals/quick_switcher_spec.js index 9e2ea39fae5..cea848f6d73 100644 --- a/e2e-tests/cypress/tests/integration/channels/modals/quick_switcher_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/modals/quick_switcher_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @modals -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Quick switcher', () => { const userPrefix = 'az'; diff --git a/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_dm_spec.js b/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_dm_spec.js index c7c273f2cfe..e820431db38 100644 --- a/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_dm_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_dm_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Move Thread', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_gm_spec.js b/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_gm_spec.js index da653dd9156..906042fe16b 100644 --- a/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_gm_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_gm_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Move thread', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_private_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_private_channel_spec.js index 5a320ca3e3b..c9c6c0fd9be 100644 --- a/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_private_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/move_thread/move_thread_from_private_channel_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @enterprise @messaging -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Move thread', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js index 4bee3c6a7d5..0a96fa11e52 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/check_user_status_spec.js @@ -1,8 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; // *************************************************************** // [#] indicates a test step (e.g. # Go to a page) diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js index 3ac7bbd7baf..27c9c38e751 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/close_current_dm_redirects_spec.js @@ -4,7 +4,7 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Direct messages: redirections', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js index 35ccbbdde28..a1f54ada8db 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/dm_more_show_user_count_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Multi Team and DM', () => { let testChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js index 17a28227015..c075ca6347e 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/existing_channel_name_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Channel', () => { let testTeamId; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js index 3f278be6145..ebb4d64fa9a 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_add_user_spec.js @@ -4,7 +4,7 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Multi-user group messages', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js index 4a211564899..dd0e7dc768c 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/gm_header_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import {beRead, beUnread} from '../../../support/assertions'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {beRead, beUnread} from '@/support/assertions'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Multi-user group header', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js index da1e731677f..3930c0f7edc 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_join_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import {DEFAULT_TEAM} from '../../../support/constants'; +import {DEFAULT_TEAM} from '@/support/constants'; const NUMBER_OF_TEAMS = 3; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js index 2608de47a74..37230de11ab 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/multi_team_spec.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js index 26d52ade6fd..a94efffa146 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/send_dm_user_no_team_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; describe('Send a DM', () => { let userA; diff --git a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js index ef59744f43a..0309197b496 100644 --- a/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/multi_team_and_dm/system_message_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @multi_team_and_dm -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('System message', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/at_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/at_mentions_spec.js index 344e78eb580..752fbec386c 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/at_mentions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/at_mentions_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @notification -import {getAdminAccount} from '../../../support/env'; -import {spyNotificationAs} from '../../../support/notification'; +import {getAdminAccount} from '@/support/env'; +import {spyNotificationAs} from '@/support/notification'; describe('Notifications', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js index d8974f37f98..ddaa8a9fc21 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_1_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js index 121ce066fa4..e88fa5b8355 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/browser_tab_notification_2_spec.js @@ -9,7 +9,7 @@ // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let user1; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js index 73ca7d0244a..e8161af8181 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/channel_links_show_as_links_spec.js @@ -9,12 +9,12 @@ // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; import { FixedCloudConfig, getMentionEmailTemplate, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; describe('Notifications', () => { let config; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js index 3d920b1e127..a22be352a62 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/deselect_username_mention_trigger_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js index a1705c3bc94..d2fb4241938 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_1_spec.js @@ -10,15 +10,16 @@ // Stage: @prod // Group: @channels @notifications -import * as MESSAGES from '../../../fixtures/messages'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {spyNotificationAs} from '../../../support/notification'; - import { changeDesktopNotificationAs, changeTeammateNameDisplayAs, } from './helper'; +import * as MESSAGES from '@/fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {spyNotificationAs} from '@/support/notification'; + + describe('Desktop notifications', () => { let testTeam; let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js index 5b081ecd2c5..ba1daa237f4 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_2_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @notifications -import {spyNotificationAs} from '../../../support/notification'; - import {changeDesktopNotificationAs} from './helper'; +import {spyNotificationAs} from '@/support/notification'; + + describe('Desktop notifications', () => { let testTeam; let testChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js index a91ce32bda7..00ba80b4efd 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/desktop_notifications_3_spec.js @@ -10,15 +10,16 @@ // Stage: @prod // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {spyNotificationAs} from '../../../support/notification'; -import {getAdminAccount} from '../../../support/env'; - import { changeDesktopNotificationAs, changeTeammateNameDisplayAs, } from './helper'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {spyNotificationAs} from '@/support/notification'; +import {getAdminAccount} from '@/support/env'; + + describe('Desktop notifications', () => { let testTeam; let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js index 162a8138a1b..fcea4a0fb34 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/ignore_channel_mentions_spec.js @@ -9,7 +9,7 @@ // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js index bff07c2f429..906bd51a7c2 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/mention_email_notification_spec.js @@ -10,12 +10,12 @@ // Stage: @prod // Group: @channels @notification -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; import { FixedCloudConfig, getMentionEmailTemplate, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; describe('Email notification', () => { let config; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/message_bar_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/message_bar_spec.js index 2867ce9c80b..ba39203ef25 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/message_bar_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/message_bar_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @notifications -import * as MESSAGES from '../../../fixtures/messages'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js index 55528de1d12..33effd46458 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/message_posted_while_scrolled_up_spec.js @@ -9,7 +9,7 @@ // Group: @channels @notifications -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Notifications', () => { let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js index ddf73c68f6c..fc5cdecbbd3 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/notification_preferences_do_not_save_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js index 2ac2137d015..fa5a1bb145a 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/own_user_posts_reply_while_scrolled_up_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @notifications -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Notifications', () => { let otherUser; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/reply_notifications_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/reply_notifications_spec.js index e52cdc5d30c..2fb7b4ca881 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/reply_notifications_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/reply_notifications_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @notifications -import {spyNotificationAs} from '../../../support/notification'; +import {spyNotificationAs} from '@/support/notification'; describe('reply-notifications', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js index 151f7b4c136..ee985079a23 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/unread_on_public_channel_spec.js @@ -9,7 +9,7 @@ // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Notifications', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js b/e2e-tests/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js index 6fb351cfeb8..f0d8633200c 100644 --- a/e2e-tests/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/notifications/users_with_same_firstname_channel_mentions_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @notifications -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId, newTestPassword} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId, newTestPassword} from '@/utils'; describe('Notifications', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js index 155ae58b864..0e74eecc6e4 100644 --- a/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/onboarding/existing_email_adress_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @onboarding -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId, newTestPassword} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId, newTestPassword} from '@/utils'; const uniqueUserId = getRandomId(); diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js index f89f88f7566..7512fe69076 100644 --- a/e2e-tests/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/onboarding/invalidate_pending_email_invitations_spec.js @@ -10,11 +10,12 @@ // Stage: @prod // Group: @channels @te_only @onboarding -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; -import {getRandomId, newTestPassword} from '../../../utils'; import {inviteUserByEmail, verifyEmailInviteAndVisitLink, signupAndVerifyTutorial} from '../team_settings/helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId, newTestPassword} from '@/utils'; + describe('Onboarding', () => { const sysadmin = getAdminAccount(); const usernameOne = `user${getRandomId()}`; diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js index 8430167e667..5f6902c58a1 100644 --- a/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/onboarding/login_page_link_account_creation_spec.js @@ -10,13 +10,13 @@ // Stage: @prod // Group: @channels @enterprise @onboarding -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {generateRandomUser} from '../../../support/api/user'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {generateRandomUser} from '@/support/api/user'; import { getWelcomeEmailTemplate, reUrl, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; describe('Onboarding', () => { let siteName; diff --git a/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js b/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js index 35574b8c482..ecfbea2a82b 100644 --- a/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/onboarding/use_team_invite_link_to_sign_up_spec.js @@ -10,14 +10,14 @@ // Stage: @prod // Group: @channels @onboarding -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {generateRandomUser} from '../../../support/api/user'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {generateRandomUser} from '@/support/api/user'; import { getWelcomeEmailTemplate, reUrl, verifyEmailBody, stubClipboard, -} from '../../../utils'; +} from '@/utils'; describe('Onboarding', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js index 0b0e3ebf64d..b9c2d636906 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/demo_plugin/webhook_spec.js @@ -9,8 +9,8 @@ // Group: @channels @plugin @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {demoPlugin} from '../../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {demoPlugin} from '@/utils/plugins'; describe('Demo plugin - Webhook events', () => { let team1; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/helpers.js b/e2e-tests/cypress/tests/integration/channels/plugins/helpers.js index 3a2185dde47..0643f2d5423 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function waitForAlertMessage(pluginId, message) { const checkFn = () => { diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/link_tooltip_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/link_tooltip_spec.js index f062af562b2..58a65272b9c 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/link_tooltip_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/link_tooltip_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @not_cloud @plugin -import {demoPlugin} from '../../../utils'; +import {demoPlugin} from '@/utils'; describe('Link tooltips', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js index fdb028de4c7..e2ded822a5b 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/disabled_remote_marketplace_spec.js @@ -9,7 +9,7 @@ // Group: @channels @not_cloud @plugin_marketplace @plugin @plugins_uninstall -import {githubPlugin} from '../../../../utils/plugins'; +import {githubPlugin} from '@/utils/plugins'; describe('Plugin Marketplace', () => { let townsquareLink; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js index 5a0e7cc476a..ee78c92f00e 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/invalid_marketplace_url_spec.js @@ -9,7 +9,7 @@ // Group: @channels @not_cloud @plugin_marketplace @plugin @plugins_uninstall -import {githubPlugin} from '../../../../utils/plugins'; +import {githubPlugin} from '@/utils/plugins'; describe('Plugin Marketplace', () => { let townsquareLink; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js index dc4834fb339..d1cded2b75d 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/render_in_main_menu_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @plugin_marketplace @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; - import {verifyPluginMarketplaceVisibility} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Plugin Marketplace', () => { let townsquareLink; let pluginManagementPage; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js index f5cc983ba84..d983ebaaab7 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/marketplace/ui_spec.js @@ -9,8 +9,8 @@ // Group: @channels @not_cloud @plugin_marketplace @plugin @plugins_uninstall -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {githubPluginOld} from '../../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {githubPluginOld} from '@/utils/plugins'; describe('Plugin Marketplace', () => { let townsquareLink; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js index deaf41d9fdc..e640daace6b 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_buttons_spec.js @@ -9,8 +9,8 @@ // Group: @channels @plugin @plugins_uninstall @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {demoPlugin, testPlugin} from '../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {demoPlugin, testPlugin} from '@/utils/plugins'; describe('collapse on 15 plugin buttons', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/plugin_install_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_install_spec.js index c3629249846..e55aa9f6b07 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/plugin_install_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_install_spec.js @@ -18,11 +18,12 @@ // Group: @channels @system_console @plugin @not_cloud @timeout_error -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {demoPlugin} from '../../../utils/plugins'; - import {waitForAlertMessage} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {demoPlugin} from '@/utils/plugins'; + + describe('Plugins Management', () => { before(() => { cy.shouldNotRunOnCloudEdition(); diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js index 9c7fb722459..f8b8b1c0d25 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/plugin_startup_fail_spec.js @@ -16,8 +16,8 @@ // Group: @channels @system_console @plugin @not_cloud @timeout_error -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {gitlabPlugin} from '../../../utils/plugins'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {gitlabPlugin} from '@/utils/plugins'; describe('If plugins fail to start, they can be disabled', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/plugins/upgrade_spec.js b/e2e-tests/cypress/tests/integration/channels/plugins/upgrade_spec.js index 9944a07dc0d..6f892a08ba7 100644 --- a/e2e-tests/cypress/tests/integration/channels/plugins/upgrade_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/plugins/upgrade_spec.js @@ -17,11 +17,12 @@ // Group: @channels @system_console @plugin @plugins_uninstall @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {demoPlugin, demoPluginOld} from '../../../utils/plugins'; - import {waitForAlertMessage} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {demoPlugin, demoPluginOld} from '@/utils/plugins'; + + describe('Plugin remains enabled when upgraded', () => { before(() => { cy.shouldNotRunOnCloudEdition(); diff --git a/e2e-tests/cypress/tests/integration/channels/scroll/channel_scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/channel_scroll_spec.js index 9beeb452b13..fd89ecb7a11 100644 --- a/e2e-tests/cypress/tests/integration/channels/scroll/channel_scroll_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/scroll/channel_scroll_spec.js @@ -9,8 +9,8 @@ // Group: @channels @scroll -import * as MESSAGES from '../../../fixtures/messages'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Scroll', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/scroll/editing_scroll_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/editing_scroll_spec.js index 907493010ce..7c8842a8409 100644 --- a/e2e-tests/cypress/tests/integration/channels/scroll/editing_scroll_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/scroll/editing_scroll_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @scroll -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {postListOfMessages, scrollCurrentChannelFromTop} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Scroll', () => { let firstPostBeforeScroll; let lastPostBeforeScroll; diff --git a/e2e-tests/cypress/tests/integration/channels/scroll/fixed_width_spec.js b/e2e-tests/cypress/tests/integration/channels/scroll/fixed_width_spec.js index 9327a734a8b..7404a8caba9 100644 --- a/e2e-tests/cypress/tests/integration/channels/scroll/fixed_width_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/scroll/fixed_width_spec.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -const timeouts = require('../../../fixtures/timeouts'); +const timeouts = require('@/fixtures/timeouts'); // *************************************************************** // - [#] indicates a test step (e.g. # Go to a page) diff --git a/e2e-tests/cypress/tests/integration/channels/scroll/helpers.js b/e2e-tests/cypress/tests/integration/channels/scroll/helpers.js index 4ffb047c0db..7c71256bfe7 100644 --- a/e2e-tests/cypress/tests/integration/channels/scroll/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/scroll/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; // # Other user posts a few messages so that the first message is hidden export function postListOfMessages({sender, channelId, numberOfMessages = 30}) { diff --git a/e2e-tests/cypress/tests/integration/channels/search/clear_input_spec.js b/e2e-tests/cypress/tests/integration/channels/search/clear_input_spec.js index 938558568a0..43fd6583b1e 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/clear_input_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/clear_input_spec.js @@ -9,8 +9,8 @@ // Group: @channels @search -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import * as MESSAGES from '../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; describe('Search', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/search/cleared_search_term_spec.js b/e2e-tests/cypress/tests/integration/channels/search/cleared_search_term_spec.js index 8ce8739f468..ad72b48bec0 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/cleared_search_term_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/cleared_search_term_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @search -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Search', () => { const term = 'London'; diff --git a/e2e-tests/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js index 0cd11247b00..f73938494fe 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/post_search_display_not_cloud_spec.js @@ -9,7 +9,7 @@ // Group: @channels @search @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Search', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/search/post_search_display_spec.js b/e2e-tests/cypress/tests/integration/channels/search/post_search_display_spec.js index ee423efe07c..2d4445ff862 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/post_search_display_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/post_search_display_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @search -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Search', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/search/results_post_comment_spec.js b/e2e-tests/cypress/tests/integration/channels/search/results_post_comment_spec.js index 3a1f1589e79..92c2a87f9ca 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/results_post_comment_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/results_post_comment_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @search -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Search', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/search/results_post_spec.js b/e2e-tests/cypress/tests/integration/channels/search/results_post_spec.js index 02681558f7f..55e88f89d4c 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/results_post_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/results_post_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @search -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Search', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/search/search_user_file_spec.js b/e2e-tests/cypress/tests/integration/channels/search/search_user_file_spec.js index 374c3c624e9..55f425536e8 100644 --- a/e2e-tests/cypress/tests/integration/channels/search/search_user_file_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search/search_user_file_spec.js @@ -9,7 +9,7 @@ // Group: @channels @search @smoke @filesearch -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; /** * create new DM channel diff --git a/e2e-tests/cypress/tests/integration/channels/search_autocomplete/channels_spec.js b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/channels_spec.js index c20a607fcf7..db35d67ee28 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_autocomplete/channels_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/channels_spec.js @@ -14,7 +14,8 @@ import { createPrivateChannel, searchForChannel, } from '../enterprise/elasticsearch_autocomplete/helpers'; -import {getAdminAccount} from '../../../support/env'; + +import {getAdminAccount} from '@/support/env'; describe('Autocomplete without Elasticsearch - Channel', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js index 5c33455814f..972c2f689ea 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_autocomplete/renaming_spec.js @@ -10,9 +10,10 @@ // Stage: @prod // Group: @channels @autocomplete -import * as TIMEOUTS from '../../../fixtures/timeouts'; import {withTimestamp, createEmail} from '../enterprise/elasticsearch_autocomplete/helpers'; -import {newTestPassword} from '../../../utils'; + +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {newTestPassword} from '@/utils'; describe('Autocomplete without Elasticsearch - Renaming', () => { const timestamp = Date.now(); diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/after_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/after_spec.js index 10149a86d50..064bb012069 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/after_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/after_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { searchAndValidate, getTestMessages, setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const { diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/before_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/before_spec.js index 762a261138a..1c3166cf670 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/before_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/before_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { getTestMessages, searchAndValidate, setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const { diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/edit_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/edit_spec.js index d4e53101548..45242f28641 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/edit_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/edit_spec.js @@ -9,8 +9,6 @@ // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { getMsAndQueryForDate, getTestMessages, @@ -18,6 +16,9 @@ import { setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/future_date_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/future_date_spec.js index b84ae346fc3..a6aaeeb1ce1 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/future_date_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/future_date_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { searchAndValidate, getTestMessages, setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const { diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/helpers.js b/e2e-tests/cypress/tests/integration/channels/search_filter/helpers.js index d153f3b08a4..1f9f23dc55f 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/helpers.js @@ -7,8 +7,8 @@ // - Use element ID when selecting an element. Create one if none. // *************************************************************** -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; export function searchAndValidate(query, expectedResults = []) { // # Enter in search query, and hit enter diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/input_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/input_spec.js index ad6f2a701e7..18c506eec5c 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/input_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/input_spec.js @@ -10,15 +10,16 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { getTestMessages, searchAndValidate, setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const { diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/invalid_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/invalid_spec.js index 296864492eb..78c3c88e872 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/invalid_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/invalid_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { getTestMessages, searchAndValidate, setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const {commonText} = testData; diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/mixed_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/mixed_spec.js index 03bc6ecc92e..e15c3a06a04 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/mixed_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/mixed_spec.js @@ -10,14 +10,15 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { getTestMessages, searchAndValidate, setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const { diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/negative_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/negative_spec.js index 5ff2c71ca86..6b87979e39c 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/negative_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/negative_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @search_date_filter -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Negative search filters will omit results', () => { const message = 'negative' + Date.now(); diff --git a/e2e-tests/cypress/tests/integration/channels/search_filter/on_spec.js b/e2e-tests/cypress/tests/integration/channels/search_filter/on_spec.js index 76dc39c2109..8931d87974e 100644 --- a/e2e-tests/cypress/tests/integration/channels/search_filter/on_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/search_filter/on_spec.js @@ -10,8 +10,6 @@ // Stage: @prod // Group: @channels @search_date_filter -import {getAdminAccount} from '../../../support/env'; - import { getMsAndQueryForDate, getTestMessages, @@ -19,6 +17,9 @@ import { setupTestData, } from './helpers'; +import {getAdminAccount} from '@/support/env'; + + describe('Search Date Filter', () => { const testData = getTestMessages(); const { diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js index ba7c50533a0..de9ee8a438b 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/clock_display_mode_spec.js @@ -11,7 +11,7 @@ import moment from 'moment-timezone'; -import * as DATE_TIME_FORMAT from '../../../../fixtures/date_time_format'; +import * as DATE_TIME_FORMAT from '@/fixtures/date_time_format'; describe('Settings > Display > Clock Display Mode', () => { const mainMessage = 'Test for clock display mode'; diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js index 5333878eb64..aa56728f620 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/message_display_mode_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Settings > Display > Message Display', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js index 795b811fe8f..08ef8600cc4 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/code_theme_colors_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Settings > Display > Theme > Custom Theme Colors', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js index 688df5d3459..7ad00191eb7 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_color_picker_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import {hexToRgbArray, rgbArrayToString} from '../../../../../utils'; +import {hexToRgbArray, rgbArrayToString} from '@/utils'; describe('Settings > Display > Theme', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js index ce8c30f1cae..0b999aabe8b 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/custom_theme_sidebar_styles_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import {hexToRgbArray, rgbArrayToString} from '../../../../../utils'; +import {hexToRgbArray, rgbArrayToString} from '@/utils'; describe('Custom Theme - Sidebar Styles', () => { const themeRgbColor = {}; diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js index 2defba96f7a..6bfba85f05f 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/theme/save_theme_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import * as TIMEOUTS from '../../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Settings > Display > Theme > Save', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js index 8fb29bda4a2..db2558de136 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/display/timezone_display_mode_spec.js @@ -12,10 +12,10 @@ import moment from 'moment-timezone'; -import * as DATE_TIME_FORMAT from '../../../../fixtures/date_time_format'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getTimezoneLabel} from '../../../../utils/timezone'; -import {getAdminAccount} from '../../../../support/env'; +import * as DATE_TIME_FORMAT from '@/fixtures/date_time_format'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getTimezoneLabel} from '@/utils/timezone'; +import {getAdminAccount} from '@/support/env'; describe('Profile > Display > Timezone', () => { const sysadmin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js index 6f7d7e29f31..aac0b82f718 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/channel_switcher_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Settings > Sidebar > Channel Switcher', () => { let testChannel; diff --git a/e2e-tests/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js index 87d55273a19..c03670affff 100644 --- a/e2e-tests/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/settings/sidebar/fullname_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @account_setting -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Settings > Sidebar > General', () => { const randomId = getRandomId(); diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/authentication_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/authentication_spec.js index 73d9002a54d..09376cbcaa7 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/authentication_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/authentication_spec.js @@ -10,10 +10,11 @@ // Stage: @prod // Group: @channels @signin_authentication -import timeouts from '../../../fixtures/timeouts'; - import {fillCredentialsForUser} from './helpers'; +import timeouts from '@/fixtures/timeouts'; + + describe('Authentication', () => { let testTeam; let testTeam2; diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js index 6235fcff183..4dbd53b57b8 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/desktop_session_expire_spec.js @@ -9,12 +9,13 @@ // Group: @channels @signin_authentication -import {getAdminAccount} from '../../../support/env'; -import {spyNotificationAs} from '../../../support/notification'; -import timeouts from '../../../fixtures/timeouts'; - import {fillCredentialsForUser} from './helpers'; +import {getAdminAccount} from '@/support/env'; +import {spyNotificationAs} from '@/support/notification'; +import timeouts from '@/fixtures/timeouts'; + + describe('Authentication', () => { let testTeam; let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js index 57a68234b99..3bd45df40aa 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/forgot_password_spec.js @@ -15,7 +15,7 @@ import { newTestPassword, reUrl, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; describe('Signin/Authentication', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/helpers.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/helpers.js index 92aa4c1ee8e..c501e05a53b 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/helpers.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import timeouts from '../../../fixtures/timeouts'; +import timeouts from '@/fixtures/timeouts'; export function fillCredentialsForUser(user) { cy.wait(timeouts.TWO_SEC); diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js index 4170b17430b..6818a5dd465 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/login_open_server_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @signin_authentication -import {FixedCloudConfig} from '../../../utils/constants'; +import {FixedCloudConfig} from '@/utils/constants'; describe('Login page with open server', () => { let config; diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js index 3c2ece046fc..0bddcbdeede 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/mfa_authentication_spec.js @@ -11,10 +11,11 @@ import authenticator from 'authenticator'; -import timeouts from '../../../fixtures/timeouts'; - import {fillCredentialsForUser} from './helpers'; +import timeouts from '@/fixtures/timeouts'; + + describe('Authentication', () => { let testTeam; let testTeam2; diff --git a/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js b/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js index 897a31f7526..343219bc52d 100644 --- a/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/signin_authentication/signup_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @signin_authentication -import {FixedCloudConfig} from '../../../utils/constants'; +import {FixedCloudConfig} from '@/utils/constants'; describe('Signup Email page', () => { let config; diff --git a/e2e-tests/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js b/e2e-tests/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js index 2d593a520cf..e6857087290 100644 --- a/e2e-tests/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/slash_commands/autocomplete_spec.js @@ -9,7 +9,7 @@ // Group: @channels @not_cloud @integrations @plugin -import {demoPlugin, jiraPlugin} from '../../../utils/plugins'; +import {demoPlugin, jiraPlugin} from '@/utils/plugins'; describe('Integrations', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js index 73d5339fa7a..07d88e1e923 100644 --- a/e2e-tests/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_channel_routing_spec.js @@ -9,7 +9,7 @@ // Group: @channels @subpath -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Subpath Channel routing', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js index 939fe9b06b3..af7456ad281 100644 --- a/e2e-tests/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/subpath/subpath_dm_search_spec.js @@ -9,9 +9,9 @@ // Group: @channels @subpath -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {generateRandomUser} from '../../../support/api/user'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {generateRandomUser} from '@/support/api/user'; +import {getAdminAccount} from '@/support/env'; describe('Subpath Direct Message Search', () => { let testTeam; @@ -27,7 +27,7 @@ describe('Subpath Direct Message Search', () => { it('MM-T989 - User on other subpath, but not on this one, should not show in DM More list', () => { const admin = getAdminAccount(); - const secondServer = Cypress.env('secondServerURL'); + const secondServer = Cypress.expose('secondServerURL'); // # Log into admin account of other subpath server cy.request({ diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/connected_workspaces_management_spec.ts b/e2e-tests/cypress/tests/integration/channels/system_console/connected_workspaces_management_spec.ts index 3c23dd2ec10..a0067018a0e 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/connected_workspaces_management_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/system_console/connected_workspaces_management_spec.ts @@ -9,8 +9,8 @@ // Group: @channels @system_console -import timeouts from '../../../fixtures/timeouts'; -import {getRandomId, stubClipboard} from '../../../utils'; +import timeouts from '@/fixtures/timeouts'; +import {getRandomId, stubClipboard} from '@/utils'; describe('Connected Workspaces', () => { let testTeam: Cypress.Team; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/demoted_user_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/demoted_user_spec.js index 602efdb2f15..ef59f03406a 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/demoted_user_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/demoted_user_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @smoke -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/environment_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/environment_spec.js index 1207c29055a..96e5ac73300 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/environment_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/environment_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @not_cloud -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Environment', () => { let townsquareLink; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js index 5a7bab252b8..83b7dc19d2c 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/server_logs_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > Server Logs', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js index 86b891ce6b4..60cb40a96a7 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > Site Statistics', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js index 708b0e2480f..5665ec85e8a 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/site_statistics_te_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @te_only @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > Site Statistics', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js index 57b05dd8a97..01750a8e3c3 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/reporting/team_statistics_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > Team Statistics', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js index 798f3ba8b6d..cb0ac60ef01 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/revoke_all_sessions_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('System Console > User Management > Users', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js index c1d4161ed18..c0046b4db7f 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/search_box_not_cloud_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @not_cloud @system_console @plugins_uninstall -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System console', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js index 598bceb2d2e..ed72a30398e 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/sidebar_link_navigation_team_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @te_only @system_console -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {adminConsoleNavigation} from '../../../utils/admin_console'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {adminConsoleNavigation} from '@/utils/admin_console'; describe('System Console - Team', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js index b54aa1cde43..a9e8dcb7c32 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/announcement_banner_spec.js @@ -9,8 +9,8 @@ // Group: @channels @enterprise @system_console @announcement_banner -import {hexToRgbArray, rgbArrayToString} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import {hexToRgbArray, rgbArrayToString} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Announcement Banner', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js index 5d1708499cf..e1d6ff8517d 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/customization_spec.js @@ -9,8 +9,8 @@ // Group: @channels @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {getRandomId} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; describe('Customization', () => { beforeEach(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/helper.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/helper.js index a61ca663228..4c27d0bb2ec 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/helper.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/helper.js @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; export function saveSetting() { // # Click save button, and verify text and visibility diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js index 186e4ad684a..47012ca7261 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_cloud_spec.js @@ -9,8 +9,8 @@ // Group: @channels @system_console @enterprise @cloud_only -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {SupportSettings} from '../../../../utils/constants'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {SupportSettings} from '@/utils/constants'; describe('SupportSettings', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js index cc322a28898..b4d2b7984e2 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_1_spec.js @@ -10,11 +10,12 @@ // Stage: @prod // Group: @channels @system_console @enterprise @e20_only @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import {TERMS_OF_SERVICE_LINK} from '../../../../utils/constants'; - import {backToTeam, saveSetting} from './helper'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {TERMS_OF_SERVICE_LINK} from '@/utils/constants'; + + describe('SupportSettings', () => { const tosLink = 'https://github.com/mattermost/platform/blob/master/README.md'; const privacyLink = 'https://github.com/mattermost/platform/blob/master/README.md'; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js index e836e23cad1..474946cd877 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/site_configuration/link_customization_e20_2_spec.js @@ -10,12 +10,13 @@ // Stage: @prod // Group: @channels @not_cloud @system_console +import {backToTeam, saveSetting} from './helper'; + import { FixedPublicLinks, -} from '../../../../utils'; -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; -import {backToTeam, saveSetting} from './helper'; describe('SupportSettings', () => { const tosLink = 'https://github.com/mattermost/platform/blob/master/README.md'; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js index 8b2fdd5acbb..60e0d1ad6b2 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_not_cloud_spec.js @@ -9,7 +9,7 @@ // Group: @channels @not_cloud @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Customization', () => { let origConfig; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js index 8873927b318..5aad38a2dbb 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/ui_and_api/customization_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Customization', () => { let origConfig; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js index c4892db4934..a7432d6a160 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/unsaved_changes_spec.js @@ -9,8 +9,8 @@ // Group: @channels @not_cloud @system_console -import {fileSizeToString} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {fileSizeToString} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Unsaved Changes', () => { let defaultMaxFileSize; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js index 822555d7cd4..693d47e99a5 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_1_spec.js @@ -9,7 +9,7 @@ // Group: @channels @system_console -import * as MESSAGES from '../../../../fixtures/messages'; +import * as MESSAGES from '@/fixtures/messages'; describe('System Console > User Management > Deactivation', () => { let team1; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js index e591eb6aa28..8bf512494f2 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_not_cloud_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @not_cloud -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > User Management > Deactivation', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js index 03296cb69e2..82815e34b45 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_deactivation_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import * as MESSAGES from '../../../../fixtures/messages'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; describe('System Console > User Management > Deactivation', () => { let team1; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js index cf800a2ee70..5adf0472820 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_reactivation_spec.js @@ -10,9 +10,9 @@ // Stage: @prod // Group: @channels @not_cloud @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; -import * as MESSAGES from '../../../../fixtures/messages'; -import {getRandomId} from '../../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import * as MESSAGES from '@/fixtures/messages'; +import {getRandomId} from '@/utils'; describe('System Console > User Management > Reactivation', () => { let teamName; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_spec.js index 2263ccf3e91..1a4792cf8d1 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management/users_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console -import * as TIMEOUTS from '../../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('System Console > User Management > Users', () => { let testUser; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js index 4173546a706..8474242307b 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management_not_cloud_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @system_console @not_cloud -const TIMEOUTS = require('../../../fixtures/timeouts'); +const TIMEOUTS = require('@/fixtures/timeouts'); describe('User Management', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/system_console/user_management_spec.js b/e2e-tests/cypress/tests/integration/channels/system_console/user_management_spec.js index a129c4c031e..5dbecfefac5 100644 --- a/e2e-tests/cypress/tests/integration/channels/system_console/user_management_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/system_console/user_management_spec.js @@ -14,9 +14,9 @@ import { getEmailVerifyEmailTemplate, getRandomId, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; -const TIMEOUTS = require('../../../fixtures/timeouts'); +const TIMEOUTS = require('@/fixtures/timeouts'); describe('User Management', () => { const newUsername = 'u' + getRandomId(); diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/archive_team_spec.ts b/e2e-tests/cypress/tests/integration/channels/team_settings/archive_team_spec.ts index 2a02f5817e3..03add07742d 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/archive_team_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/archive_team_spec.ts @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @team_settings -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Teams Settings', () => { let sysadmin: Cypress.UserProfile; diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js index 75e105a0fa3..57af15acd51 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_by_email_spec.js @@ -10,15 +10,15 @@ // Stage: @prod // Group: @channels @team_settings -import {getAdminAccount} from '../../../support/env'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; import { getJoinEmailTemplate, getRandomId, newTestPassword, reUrl, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; describe('Team Settings', () => { const sysadmin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js index bb0d0ccc03e..e97870c96c8 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_non_mattermost_domain_spec.js @@ -9,11 +9,12 @@ // Group: @channels @te_only @team_settings -import {getAdminAccount} from '../../../support/env'; -import {generateRandomUser} from '../../../support/api/user'; - import {allowOnlyUserFromSpecificDomain, inviteUserByEmail, verifyEmailInviteAndVisitLink, signupAndVerifyTutorial} from './helpers'; +import {getAdminAccount} from '@/support/env'; +import {generateRandomUser} from '@/support/api/user'; + + describe('Team Settings', () => { const sysadmin = getAdminAccount(); const {username, password} = generateRandomUser(); diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js index ae9aae3d9ee..56350cf3838 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/closed_team_invite_with_specific_domain_spec.js @@ -9,11 +9,12 @@ // Group: @channels @te_only @team_settings -import {getAdminAccount} from '../../../support/env'; -import {generateRandomUser} from '../../../support/api/user'; - import {allowOnlyUserFromSpecificDomain, inviteUserByEmail, verifyEmailInviteAndVisitLink, signupAndVerifyTutorial} from './helpers'; +import {getAdminAccount} from '@/support/env'; +import {generateRandomUser} from '@/support/api/user'; + + describe('Team Settings', () => { const sysadmin = getAdminAccount(); const {username, email, password} = generateRandomUser(); diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/create_a_team_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/create_a_team_spec.js index 4e55b55d71a..8e9b18c4fbb 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/create_a_team_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/create_a_team_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @team_settings @smoke -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Teams Suite', () => { before(() => { diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/helpers.js b/e2e-tests/cypress/tests/integration/channels/team_settings/helpers.js index 2a3e0548ca9..e7d52238ced 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/helpers.js @@ -1,12 +1,12 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import * as TIMEOUTS from '@/fixtures/timeouts'; import { getJoinEmailTemplate, reUrl, verifyEmailBody, -} from '../../../utils'; +} from '@/utils'; export const allowOnlyUserFromSpecificDomain = (domain) => { // # Open 'Team Settings' modal diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js index 3238fe2fbbb..cae3d59d1b5 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/join_closed_team_with_not_allowed_email_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @team_settings -import {getRandomId, stubClipboard, newTestPassword} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; +import {getRandomId, stubClipboard, newTestPassword} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; describe('Team Settings', () => { const randomId = getRandomId(); diff --git a/e2e-tests/cypress/tests/integration/channels/team_settings/teams_spec.js b/e2e-tests/cypress/tests/integration/channels/team_settings/teams_spec.js index 6f6a68e70af..6f71e6e165e 100644 --- a/e2e-tests/cypress/tests/integration/channels/team_settings/teams_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/team_settings/teams_spec.js @@ -10,8 +10,8 @@ // Stage: @prod // Group: @channels @team_settings -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getAdminAccount} from '../../../support/env'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getAdminAccount} from '@/support/env'; describe('Teams Suite', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/toast/helpers.js b/e2e-tests/cypress/tests/integration/channels/toast/helpers.js index 3e43f22aef5..eea57a78c03 100644 --- a/e2e-tests/cypress/tests/integration/channels/toast/helpers.js +++ b/e2e-tests/cypress/tests/integration/channels/toast/helpers.js @@ -7,8 +7,8 @@ // Use element ID when selecting an element. Create one if none. // *************************************************************** -import * as TIMEOUTS from '../../../fixtures/timeouts'; -import {getRandomId} from '../../../utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; +import {getRandomId} from '@/utils'; export function visitTownSquareAndWaitForPageToLoad() { // # Click town-square at LHS and wait for post list to load diff --git a/e2e-tests/cypress/tests/integration/channels/toast/new_messages_toast_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/new_messages_toast_spec.js index df4200b6db5..a085837e4cb 100644 --- a/e2e-tests/cypress/tests/integration/channels/toast/new_messages_toast_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/toast/new_messages_toast_spec.js @@ -9,15 +9,16 @@ // Group: @channels @toast -import {getRandomId} from '../../../utils'; -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { scrollDown, scrollUp, scrollUpAndPostAMessage, } from './helpers'; +import {getRandomId} from '@/utils'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('Toast', () => { let otherUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js index de957516cba..2b8fcc00ebf 100644 --- a/e2e-tests/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/toast/permalink_post_with_new_message_spec.js @@ -9,7 +9,7 @@ // Group: @channels @toast -import {getRandomId} from '../../../utils'; +import {getRandomId} from '@/utils'; describe('Toast', () => { let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/toast/toast_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/toast_spec.js index 75c488bdfc5..d29409e0bbd 100644 --- a/e2e-tests/cypress/tests/integration/channels/toast/toast_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/toast/toast_spec.js @@ -9,14 +9,15 @@ // Group: @channels @toast -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import { scrollDown, scrollUp, scrollUpAndPostAMessage, } from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('toasts', () => { let otherUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js b/e2e-tests/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js index dd69b1c8305..4e1b118bd1b 100644 --- a/e2e-tests/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/toast/unread_with_bottom_start_toast_spec.js @@ -9,10 +9,11 @@ // Group: @channels @toast -import * as TIMEOUTS from '../../../fixtures/timeouts'; - import {scrollToTop} from './helpers'; +import * as TIMEOUTS from '@/fixtures/timeouts'; + + describe('unread_with_bottom_start_toast', () => { let otherUser; let testTeam; diff --git a/e2e-tests/cypress/tests/integration/channels/users/deactivated_user_spec.ts b/e2e-tests/cypress/tests/integration/channels/users/deactivated_user_spec.ts index 0ceca1eacb8..54d2fa4b0d2 100644 --- a/e2e-tests/cypress/tests/integration/channels/users/deactivated_user_spec.ts +++ b/e2e-tests/cypress/tests/integration/channels/users/deactivated_user_spec.ts @@ -65,7 +65,7 @@ describe('Deactivated user', () => { // # Generate a personal access token via API cy.apiAccessToken(testUser.id, tokenName).then((token) => { - personalAccessToken = token.token; + personalAccessToken = token.token!; // # Replace the auth cookie with the PAT cy.setCookie('MMAUTHTOKEN', personalAccessToken); diff --git a/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js index 57bf308dc13..b9d2eb41133 100644 --- a/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/new_sidebar_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @websocket -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Handle removed user - new sidebar', () => { it('MM-27202 should add new channels to the sidebar when created from another session', () => { diff --git a/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js index 57bf308dc13..b9d2eb41133 100644 --- a/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/websocket/channel_created/old_sidebar_spec.js @@ -10,7 +10,7 @@ // Stage: @prod // Group: @channels @websocket -import {getRandomId} from '../../../../utils'; +import {getRandomId} from '@/utils'; describe('Handle removed user - new sidebar', () => { it('MM-27202 should add new channels to the sidebar when created from another session', () => { diff --git a/e2e-tests/cypress/tests/integration/channels/websocket/handle_new_post_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/handle_new_post_spec.js index eb48b734f30..dac205647e8 100644 --- a/e2e-tests/cypress/tests/integration/channels/websocket/handle_new_post_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/websocket/handle_new_post_spec.js @@ -10,9 +10,9 @@ // Stage: @prod // Group: @channels @websocket -import {beRead, beUnread} from '../../../support/assertions'; -import {getAdminAccount} from '../../../support/env'; -import {getRandomId} from '../../../utils'; +import {beRead, beUnread} from '@/support/assertions'; +import {getAdminAccount} from '@/support/env'; +import {getRandomId} from '@/utils'; describe('Handle new post', () => { const admin = getAdminAccount(); diff --git a/e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js b/e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js index 675fe048233..5938b160134 100644 --- a/e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/websocket/handle_removed_user/new_sidebar_spec.js @@ -10,8 +10,6 @@ // Stage: @prod // Group: @channels @websocket -import {getRandomId} from '../../../../utils'; - import { createNewTeamAndMoveToOffTopic, removeMeFromCurrentChannel, @@ -19,6 +17,9 @@ import { shouldRemoveMentionsInRHS, } from './helpers'; +import {getRandomId} from '@/utils'; + + describe('Handle removed user - new sidebar', () => { const sidebarItemClass = '.SidebarChannel'; diff --git a/e2e-tests/cypress/tests/plugins/external_request.ts b/e2e-tests/cypress/tests/plugins/external_request.ts index 86c617a3797..aad4ac263e6 100644 --- a/e2e-tests/cypress/tests/plugins/external_request.ts +++ b/e2e-tests/cypress/tests/plugins/external_request.ts @@ -38,7 +38,7 @@ export default async function externalRequest(arg: ExternalRequestArg): Promise< cookieString += nameAndValue + ';'; }); } catch (error) { - return getErrorResponse(error); + return getErrorResponse(error as AxiosError); } try { @@ -61,7 +61,7 @@ export default async function externalRequest(arg: ExternalRequestArg): Promise< }; } catch (error) { // If we have a response for the error, pull out the relevant parts - return getErrorResponse(error); + return getErrorResponse(error as AxiosError); } } diff --git a/e2e-tests/cypress/tests/support/api/bots.ts b/e2e-tests/cypress/tests/support/api/bots.ts index 6f811a9404c..b9f641e0c07 100644 --- a/e2e-tests/cypress/tests/support/api/bots.ts +++ b/e2e-tests/cypress/tests/support/api/bots.ts @@ -2,10 +2,12 @@ // See LICENSE.txt for license information. import {Bot, BotPatch} from '@mattermost/types/bots'; -import {ChainableT} from 'tests/types'; import {getRandomId} from '../../utils'; +import {ChainableT} from '@/types'; + + // ***************************************************************************** // Bots // https://api.mattermost.com/#tag/bots @@ -76,7 +78,7 @@ Cypress.Commands.add('apiGetBots', apiGetBots); * @example * cy.apiDisableBot('user-id); */ -function apiDisableBot(userId) { +function apiDisableBot(userId: string) { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/bots/${userId}/disable`, diff --git a/e2e-tests/cypress/tests/support/api/channel.ts b/e2e-tests/cypress/tests/support/api/channel.ts index e0943ac3f01..b97c0636c5a 100644 --- a/e2e-tests/cypress/tests/support/api/channel.ts +++ b/e2e-tests/cypress/tests/support/api/channel.ts @@ -3,10 +3,12 @@ import {Channel, ChannelMembership, ChannelType} from '@mattermost/types/channels'; import {UserProfile} from '@mattermost/types/users'; -import {ChainableT} from 'tests/types'; import {getRandomId} from '../../utils'; +import {ChainableT} from '@/types'; + + // ***************************************************************************** // Channels // https://api.mattermost.com/#tag/channels @@ -134,8 +136,8 @@ function apiUpdateChannel(channelId: string, channel: Channel): ChainableT<{chan url: '/api/v4/channels/' + channelId, method: 'PUT', body: { - id: channelId, ...channel, + id: channelId, }, }).then((response) => { expect(response.status).to.equal(200); @@ -301,7 +303,7 @@ Cypress.Commands.add('apiGetChannelsForUser', apiGetChannelsForUser); * @example * cy.apiDeleteChannel('channel-id'); */ -function apiDeleteChannel(channelId: string): ChainableT { +function apiDeleteChannel(channelId: string): ChainableT> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: '/api/v4/channels/' + channelId, @@ -342,7 +344,7 @@ function apiAddUserToChannel(channelId: string, userId: string): ChainableT<{mem Cypress.Commands.add('apiAddUserToChannel', apiAddUserToChannel); -function apiRemoveUserFromChannel(channelId, userId): ChainableT { +function apiRemoveUserFromChannel(channelId: string, userId: string): ChainableT<{member: unknown}> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: '/api/v4/channels/' + channelId + '/members/' + userId, @@ -374,7 +376,7 @@ function apiCreateArchivedChannel(name: string, displayName: string, type: Chann return cy.apiCreateChannel(teamId, name, displayName, type).then(({channel}) => { Cypress._.forEach(messages, (message) => { cy.postMessageAs({ - sender: user, + sender: user as {username: string; password: string}, message, channelId: channel.id, }); @@ -394,7 +396,7 @@ Cypress.Commands.add('apiCreateArchivedChannel', apiCreateArchivedChannel); * @param {string} displayName - display name of converted channel * @param {string} name - name of converted channel */ -function apiConvertGMToPrivateChannel(channelId: string, teamId: string, displayName: string, name: string): ChainableT { +function apiConvertGMToPrivateChannel(channelId: string, teamId: string, displayName: string, name: string): ChainableT> { const body = { channel_id: channelId, team_id: teamId, diff --git a/e2e-tests/cypress/tests/support/api/keycloak.js b/e2e-tests/cypress/tests/support/api/keycloak.js index 3f114ce5072..880be4eb0cf 100644 --- a/e2e-tests/cypress/tests/support/api/keycloak.js +++ b/e2e-tests/cypress/tests/support/api/keycloak.js @@ -13,7 +13,7 @@ const { keycloakAppName, keycloakUsername, keycloakPassword, -} = Cypress.env(); +} = Cypress.expose(); Cypress.Commands.add('apiKeycloakGetAccessToken', () => { return cy.task('keycloakRequest', { @@ -30,7 +30,7 @@ Cypress.Commands.add('apiKeycloakGetAccessToken', () => { function getRealmJson() { const baseUrl = Cypress.config('baseUrl'); - const {ldapServer, ldapPort} = Cypress.env(); + const {ldapServer, ldapPort} = Cypress.expose(); const realm = JSON.stringify(realmJson). replace(/localhost:389/g, `${ldapServer}:${ldapPort}`). diff --git a/e2e-tests/cypress/tests/support/api/preference.ts b/e2e-tests/cypress/tests/support/api/preference.ts index 1360ce79652..fe1f6829366 100644 --- a/e2e-tests/cypress/tests/support/api/preference.ts +++ b/e2e-tests/cypress/tests/support/api/preference.ts @@ -1,11 +1,12 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; import {PreferenceType} from '@mattermost/types/preferences'; import theme from '../../fixtures/theme.json'; +import {ChainableT} from '@/types'; + // ***************************************************************************** // Preferences // https://api.mattermost.com/#tag/preferences @@ -21,7 +22,7 @@ import theme from '../../fixtures/theme.json'; * @example * cy.apiSaveUserPreference([{user_id: 'user-id', category: 'display_settings', name: 'channel_display_mode', value: 'full'}], 'user-id'); */ -function apiSaveUserPreference(preferences: PreferenceType[] = [], userId = 'me'): ChainableT { +function apiSaveUserPreference(preferences: PreferenceType[] = [], userId = 'me'): ChainableT> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/users/${userId}/preferences`, @@ -41,10 +42,10 @@ Cypress.Commands.add('apiSaveUserPreference', apiSaveUserPreference); * @example * cy.apiSaveClockDisplayModeTo24HourPreference(true); */ -function apiSaveClockDisplayModeTo24HourPreference(is24Hour = true): ChainableT { +function apiSaveClockDisplayModeTo24HourPreference(is24Hour = true): ChainableT> { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'display_settings', name: 'use_military_time', value: is24Hour.toString(), @@ -64,7 +65,7 @@ Cypress.Commands.add('apiSaveClockDisplayModeTo24HourPreference', apiSaveClockDi function apiSaveChannelDisplayModePreference(value = 'full') { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'display_settings', name: 'channel_display_mode', value, @@ -83,7 +84,7 @@ Cypress.Commands.add('apiSaveChannelDisplayModePreference', apiSaveChannelDispla function apiSaveMessageDisplayPreference(value = 'clean') { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'display_settings', name: 'message_display', value, @@ -103,7 +104,7 @@ Cypress.Commands.add('apiSaveMessageDisplayPreference', apiSaveMessageDisplayPre function apiSaveTeammateNameDisplayPreference(value = 'username') { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'display_settings', name: 'name_format', value, @@ -123,7 +124,7 @@ Cypress.Commands.add('apiSaveTeammateNameDisplayPreference', apiSaveTeammateName function apiSaveThemePreference(value = JSON.stringify(theme.default)) { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'theme', name: '', value, @@ -155,7 +156,7 @@ function apiSaveSidebarSettingPreference(value = {}) { }; const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'sidebar_settings', name: '', value: JSON.stringify(newValue), @@ -175,7 +176,7 @@ Cypress.Commands.add('apiSaveSidebarSettingPreference', apiSaveSidebarSettingPre function apiSaveLinkPreviewsPreference(show = 'true') { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'display_settings', name: 'link_previews', value: show, @@ -195,7 +196,7 @@ Cypress.Commands.add('apiSaveLinkPreviewsPreference', apiSaveLinkPreviewsPrefere function apiSaveCollapsePreviewsPreference(collapse = 'true') { return cy.getCookie('MMUSERID').then((cookie) => { const preference = { - user_id: cookie.value, + user_id: cookie!.value, category: 'display_settings', name: 'collapse_previews', value: collapse, @@ -212,7 +213,7 @@ Cypress.Commands.add('apiSaveCollapsePreviewsPreference', apiSaveCollapsePreview * @param {string} userId - User ID * @param {string} value - value of tutorial step, e.g. '999' (default, completed tutorial) */ -function apiSaveTutorialStep(userId: string, value = '999'): ChainableT { +function apiSaveTutorialStep(userId: string, value = '999'): ChainableT> { const preference = { user_id: userId, category: 'tutorial_step', @@ -225,7 +226,7 @@ function apiSaveTutorialStep(userId: string, value = '999'): ChainableT { Cypress.Commands.add('apiSaveTutorialStep', apiSaveTutorialStep); -function apiSaveOnboardingPreference(userId, name, value) { +function apiSaveOnboardingPreference(userId: string, name: string, value: string) { const preference = { user_id: userId, category: 'recommended_next_steps', @@ -249,7 +250,7 @@ Cypress.Commands.add('apiSaveOnboardingPreference', apiSaveOnboardingPreference) * @example * cy.apiSaveDirectChannelShowPreference('user-id', 'other-user-id', 'false'); */ -function apiSaveDirectChannelShowPreference(userId: string, otherUserId: string, value: string): ChainableT { +function apiSaveDirectChannelShowPreference(userId: string, otherUserId: string, value: string): ChainableT> { const preference = { user_id: userId, category: 'direct_channel_show', @@ -262,7 +263,7 @@ function apiSaveDirectChannelShowPreference(userId: string, otherUserId: string, Cypress.Commands.add('apiSaveDirectChannelShowPreference', apiSaveDirectChannelShowPreference); -function apiHideSidebarWhatsNewModalPreference(userId, value) { +function apiHideSidebarWhatsNewModalPreference(userId: string, value: string) { const preference = { user_id: userId, category: 'whats_new_modal', @@ -284,10 +285,10 @@ Cypress.Commands.add('apiHideSidebarWhatsNewModalPreference', apiHideSidebarWhat * @example * cy.apiGetUserPreference('user-id'); */ -function apiGetUserPreference(userId: string): ChainableT { +function apiGetUserPreference(userId: string): ChainableT { return cy.request(`/api/v4/users/${userId}/preferences`).then((response) => { expect(response.status).to.equal(200); - return cy.wrap(response.body); + return cy.wrap(response.body as PreferenceType[]); }); } @@ -303,7 +304,7 @@ Cypress.Commands.add('apiGetUserPreference', apiGetUserPreference); * @example * cy.apiSaveCRTPreference('user-id', 'on'); */ -function apiSaveCRTPreference(userId: string, value = 'on'): ChainableT { +function apiSaveCRTPreference(userId: string, value = 'on'): ChainableT> { const preference = { user_id: userId, category: 'display_settings', @@ -327,7 +328,7 @@ Cypress.Commands.add('apiSaveCRTPreference', apiSaveCRTPreference); * @example * cy.apiSaveCloudTrialBannerPreference('user-id', 'hide', 'true'); */ -function apiSaveCloudTrialBannerPreference(userId: string, name: string, value: string): ChainableT { +function apiSaveCloudTrialBannerPreference(userId: string, name: string, value: string): ChainableT> { const preference = { user_id: userId, category: 'cloud_trial_banner', @@ -351,7 +352,7 @@ Cypress.Commands.add('apiSaveCloudTrialBannerPreference', apiSaveCloudTrialBanne * @example * cy.apiSaveStartTrialModal('user-id', 'true'); */ -function apiSaveStartTrialModal(userId: string, value = 'true'): ChainableT { +function apiSaveStartTrialModal(userId: string, value = 'true'): ChainableT> { const preference = { user_id: userId, category: 'start_trial_modal', @@ -375,7 +376,7 @@ Cypress.Commands.add('apiSaveStartTrialModal', apiSaveStartTrialModal); * @example * cy.apiSaveOnboardingTaskListPreference('user-id', 'hide', 'true'); */ -function apiSaveOnboardingTaskListPreference(userId: string, name: string, value: string): ChainableT { +function apiSaveOnboardingTaskListPreference(userId: string, name: string, value: string): ChainableT> { const preference = { user_id: userId, category: 'onboarding_task_list', @@ -397,7 +398,7 @@ Cypress.Commands.add('apiSaveOnboardingTaskListPreference', apiSaveOnboardingTas * @example * cy.apiSaveSkipStepsPreference('user-id', 'true'); */ -function apiSaveSkipStepsPreference(userId: string, value: string): ChainableT { +function apiSaveSkipStepsPreference(userId: string, value: string): ChainableT> { const preference = { user_id: userId, category: 'recommended_next_steps', @@ -410,7 +411,7 @@ function apiSaveSkipStepsPreference(userId: string, value: string): ChainableT { +function apiBoardsWelcomePageViewed(userId: string): ChainableT> { const preferences = [{ user_id: userId, category: 'boards', @@ -456,7 +457,7 @@ Cypress.Commands.add('apiBoardsWelcomePageViewed', apiBoardsWelcomePageViewed); * This API assume that the user is logged in and has cookie to access * @param {Boolean} enable - Either true (default) or false */ -function apiSaveJoinLeaveMessagesPreference(userId, enable = true) { +function apiSaveJoinLeaveMessagesPreference(userId: string, enable = true) { const preference = { user_id: userId, category: 'advanced_settings', @@ -472,7 +473,7 @@ Cypress.Commands.add('apiSaveJoinLeaveMessagesPreference', apiSaveJoinLeaveMessa /** * Disables tutorials for user by marking them finished */ -function apiDisableTutorials(userId) { +function apiDisableTutorials(userId: string) { const preferences = [ { user_id: userId, diff --git a/e2e-tests/cypress/tests/support/api/setup.ts b/e2e-tests/cypress/tests/support/api/setup.ts index cd462014be7..1194e343ced 100644 --- a/e2e-tests/cypress/tests/support/api/setup.ts +++ b/e2e-tests/cypress/tests/support/api/setup.ts @@ -33,12 +33,13 @@ function apiInitSetup(arg: SetupParam = {}): ChainableT { skipBoardsWelcomePage = true, } = arg; - return (cy.apiCreateTeam(teamPrefix.name, teamPrefix.displayName) as any).then(({team}) => { + // Cast needed: custom Cypress command chaining not fully typed + return (cy.apiCreateTeam(teamPrefix.name, teamPrefix.displayName) as any).then(({team}: {team: Cypress.Team}) => { // # Add public channel - return (cy.apiCreateChannel(team.id, channelPrefix.name, channelPrefix.displayName) as any).then(({channel}) => { - return (cy.apiCreateUser({prefix: userPrefix || (promoteNewUserAsAdmin ? 'admin' : 'user'), createAt: userCreateAt}) as any).then(({user}) => { + return (cy.apiCreateChannel(team.id, channelPrefix.name, channelPrefix.displayName) as any).then(({channel}: {channel: Cypress.Channel}) => { // Cast needed: custom Cypress command chaining not fully typed + return (cy.apiCreateUser({prefix: userPrefix || (promoteNewUserAsAdmin ? 'admin' : 'user'), createAt: userCreateAt}) as any).then(({user}: {user: Cypress.UserProfile}) => { // Cast needed: custom Cypress command chaining not fully typed if (promoteNewUserAsAdmin) { - (cy as any).apiPatchUserRoles(user.id, ['system_admin', 'system_user']); + (cy as any).apiPatchUserRoles(user.id, ['system_admin', 'system_user']); // Cast needed: custom Cypress command chaining not fully typed // Only hide start trial modal for admin since it's not applicable to other users cy.apiSaveStartTrialModal(user.id, hideAdminTrialModal.toString()); diff --git a/e2e-tests/cypress/tests/support/api/system.js b/e2e-tests/cypress/tests/support/api/system.js index 0785cd40a4d..9ddd205aa67 100644 --- a/e2e-tests/cypress/tests/support/api/system.js +++ b/e2e-tests/cypress/tests/support/api/system.js @@ -83,7 +83,7 @@ Cypress.Commands.add('apiInstallTrialLicense', () => { body: { receive_emails_accepted: true, terms_accepted: true, - users: Cypress.env('numberOfTrialUsers'), + users: Cypress.expose('numberOfTrialUsers'), // Enriched fields required for trial license as of v10.7 company_country: 'US', @@ -110,7 +110,7 @@ Cypress.Commands.add('apiDeleteLicense', () => { }); export const getDefaultConfig = () => { - const cypressEnv = Cypress.env(); + const cypressEnv = Cypress.expose(); const fromCypressEnv = { ElasticsearchSettings: { @@ -303,8 +303,8 @@ Cypress.Commands.add('shouldHaveClusterEnabled', () => { const {Enable, ClusterName} = config.ClusterSettings; expect(Enable, Enable ? '' : 'Should have cluster enabled').to.equal(true); - const sameClusterName = ClusterName === Cypress.env('serverClusterName'); - expect(sameClusterName, sameClusterName ? '' : `Should have cluster name set and as expected. Got "${ClusterName}" but expected "${Cypress.env('serverClusterName')}"`).to.equal(true); + const sameClusterName = ClusterName === Cypress.expose('serverClusterName'); + expect(sameClusterName, sameClusterName ? '' : `Should have cluster name set and as expected. Got "${ClusterName}" but expected "${Cypress.expose('serverClusterName')}"`).to.equal(true); }); }); diff --git a/e2e-tests/cypress/tests/support/api/user.ts b/e2e-tests/cypress/tests/support/api/user.ts index 1366a13a87c..9911cb23f92 100644 --- a/e2e-tests/cypress/tests/support/api/user.ts +++ b/e2e-tests/cypress/tests/support/api/user.ts @@ -3,13 +3,15 @@ import {UserAccessToken, UserProfile} from '@mattermost/types/users'; import authenticator from 'authenticator'; -import {ChainableT} from 'tests/types'; + import {getRandomId, newTestPassword} from '../../utils'; import {getAdminAccount} from '../env'; import {buildQueryString} from './helpers'; +import {ChainableT} from '@/types'; + // ***************************************************************************** // Users // https://api.mattermost.com/#tag/users @@ -25,8 +27,8 @@ import {buildQueryString} from './helpers'; * @example * cy.apiLogin({username: 'sysadmin', password: 'secret'}); */ -function apiLogin(user: Partial>, requestOptions: Record = {}): ChainableT<{user: UserProfile} | {error: any}> { - return cy.request({ +function apiLogin(user: Partial>, requestOptions: Record = {}): ChainableT<{user: UserProfile} | {error: unknown}> { + return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: '/api/v4/users/login', method: 'POST', @@ -38,16 +40,16 @@ function apiLogin(user: Partial({ + return cy.wrap({ user: { ...response.body, password: user.password, }, - }); + } as {user: UserProfile}); } - return cy.wrap({error: response.body}); - }); + return cy.wrap({error: response.body} as {error: unknown}); + }) as unknown as ChainableT<{user: UserProfile} | {error: unknown}>; } Cypress.Commands.add('apiLogin', apiLogin); @@ -91,13 +93,13 @@ Cypress.Commands.add('apiLoginWithMFA', apiLoginWithMFA); * @example * cy.apiAdminLogin(); */ -function apiAdminLogin(requestOptions?: Record): ChainableT<{user: UserProfile}> { +function apiAdminLogin(requestOptions?: Record): ChainableT<{user: UserProfile}> { const admin = getAdminAccount(); // First, login with username return cy.apiLogin(admin, requestOptions).then((resp) => { - if ((<{error: any}>resp).error) { - if ((<{error: any}>resp).error.id === 'mfa.validate_token.authenticate.app_error') { + if ((<{error: unknown}>resp).error) { + if (((<{error: unknown}>resp).error as {id: string}).id === 'mfa.validate_token.authenticate.app_error') { // On fail, try to login via MFA return cy.dbGetUser({username: admin.username}).then(({user: {mfasecret}}) => { const token = authenticator.generateToken(mfasecret); @@ -106,7 +108,8 @@ function apiAdminLogin(requestOptions?: Record): ChainableT<{user: } // Or, try to login via email - delete admin.username; + // Cast needed: intentionally clearing username to force email-based login + (admin as unknown as {username: string | undefined}).username = undefined; return cy.apiLogin(admin, requestOptions) as ChainableT<{user: UserProfile}>; } @@ -125,7 +128,7 @@ Cypress.Commands.add('apiAdminLogin', apiAdminLogin); * @example * cy.apiAdminLoginWithMFA(token); */ -function apiAdminLoginWithMFA(token): ChainableT<{user: UserProfile}> { +function apiAdminLoginWithMFA(token: string): ChainableT<{user: UserProfile}> { const admin = getAdminAccount(); return cy.apiLoginWithMFA(admin, token); @@ -411,7 +414,7 @@ function apiCreateUser({ bypassTutorial = true, hideOnboarding = true, bypassWhatsNewModal = true, - user = null, + user = null as unknown as Partial, }: Partial = {}): ChainableT<{user: UserProfile}> { const newUser = user || generateRandomUser(prefix, createAt); @@ -488,7 +491,7 @@ Cypress.Commands.add('apiCreateGuestUser', apiCreateGuestUser); * @example * cy.apiRevokeUserSessions('user-id'); */ -function apiRevokeUserSessions(userId: string): ChainableT> { +function apiRevokeUserSessions(userId: string): ChainableT<{data: unknown}> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/users/${userId}/sessions/revoke/all`, @@ -496,7 +499,7 @@ function apiRevokeUserSessions(userId: string): ChainableT> }).then((response) => { expect(response.status).to.equal(200); return cy.wrap({data: response.body}); - }); + }) as unknown as ChainableT<{data: unknown}>; } Cypress.Commands.add('apiRevokeUserSessions', apiRevokeUserSessions); @@ -512,7 +515,7 @@ Cypress.Commands.add('apiRevokeUserSessions', apiRevokeUserSessions); * // do something with users * }); */ -function apiGetUsers(queryParams: Record): ChainableT<{users: UserProfile[]}> { +function apiGetUsers(queryParams: Record): ChainableT<{users: UserProfile[]}> { const queryString = buildQueryString(queryParams); return cy.request({ @@ -540,7 +543,7 @@ Cypress.Commands.add('apiGetUsers', apiGetUsers); * // do something with users * }); */ -function apiGetUsersNotInTeam({teamId, page = 0, perPage = 60}: Record): ChainableT<{users: UserProfile[]}> { +function apiGetUsersNotInTeam({teamId, page = 0, perPage = 60}: {teamId: string; page?: number; perPage?: number}): ChainableT<{users: UserProfile[]}> { return cy.apiGetUsers({not_in_team: teamId, page, per_page: perPage}); } @@ -550,11 +553,11 @@ Cypress.Commands.add('apiGetUsersNotInTeam', apiGetUsersNotInTeam); * patch user roles * @param {String} userId - ID of user to patch * @param {String[]} roleNames - The user roles - * @returns {any} - the result of patching the user roles + * @returns the result of patching the user roles * @example * cy.apiPatchUserRoles('user-id', ['system_user']); */ -function apiPatchUserRoles(userId: string, roleNames: string[] = ['system_user']): any { +function apiPatchUserRoles(userId: string, roleNames: string[] = ['system_user']): ChainableT<{user: unknown}> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/users/${userId}/roles`, @@ -577,7 +580,7 @@ Cypress.Commands.add('apiPatchUserRoles', apiPatchUserRoles); * @example * cy.apiDeactivateUser('user-id'); */ -function apiDeactivateUser(userId: string): ChainableT { +function apiDeactivateUser(userId: string): ChainableT> { const options = { headers: {'X-Requested-With': 'XMLHttpRequest'}, method: 'DELETE', @@ -601,7 +604,7 @@ Cypress.Commands.add('apiDeactivateUser', apiDeactivateUser); * @example * cy.apiActivateUser('user-id'); */ -function apiActivateUser(userId: string): ChainableT { +function apiActivateUser(userId: string): ChainableT> { const options = { headers: {'X-Requested-With': 'XMLHttpRequest'}, method: 'PUT', @@ -701,7 +704,7 @@ Cypress.Commands.add('apiVerifyUserEmailById', apiVerifyUserEmailById); * @example * cy.apiActivateUserMFA('user-id', activate: false); */ -function apiActivateUserMFA(userId: string, activate: boolean, token: string): ChainableT { +function apiActivateUserMFA(userId: string, activate: boolean, token: string): ChainableT> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/users/${userId}/mfa`, @@ -718,7 +721,7 @@ function apiActivateUserMFA(userId: string, activate: boolean, token: string): C Cypress.Commands.add('apiActivateUserMFA', apiActivateUserMFA); -function apiResetPassword(userId, currentPass, newPass) { +function apiResetPassword(userId: string, currentPass: string, newPass: string) { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, method: 'PUT', @@ -735,7 +738,7 @@ function apiResetPassword(userId, currentPass, newPass) { Cypress.Commands.add('apiResetPassword', apiResetPassword); -function apiGenerateMfaSecret(userId) { +function apiGenerateMfaSecret(userId: string) { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, method: 'POST', @@ -779,7 +782,7 @@ Cypress.Commands.add('apiAccessToken', apiAccessToken); * @example * cy.apiRevokeAccessToken('token-id') */ -function apiRevokeAccessToken(tokenId: string): ChainableT { +function apiRevokeAccessToken(tokenId: string): ChainableT> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: '/api/v4/users/tokens/revoke', @@ -805,7 +808,7 @@ Cypress.Commands.add('apiRevokeAccessToken', apiRevokeAccessToken); * @example * cy.apiUpdateUserAuth('user-id', 'auth-data', 'password', 'auth-service'); */ -function apiUpdateUserAuth(userId: string, authData: string, password: string, authService: string): ChainableT { +function apiUpdateUserAuth(userId: string, authData: string, password: string, authService: string): ChainableT> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, method: 'PUT', diff --git a/e2e-tests/cypress/tests/support/api_commands.ts b/e2e-tests/cypress/tests/support/api_commands.ts index 00c233b1be5..883b752eb8d 100644 --- a/e2e-tests/cypress/tests/support/api_commands.ts +++ b/e2e-tests/cypress/tests/support/api_commands.ts @@ -1,10 +1,11 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT, ResponseT} from 'tests/types'; - import {getAdminAccount, User} from './env'; +import {ChainableT, ResponseT} from '@/types'; + + // ***************************************************************************** // Read more: // - https://on.cypress.io/custom-commands on writing Cypress commands @@ -16,8 +17,8 @@ import {getAdminAccount, User} from './env'; // https://api.mattermost.com/#tag/commands // ***************************************************************************** -type CypressResponseAny = Cypress.Response -function apiCreateCommand(command: Record = {}): Cypress.Chainable<{data: CypressResponseAny['body']; status: CypressResponseAny['status']}> { +type CypressResponseBody = Cypress.Response +function apiCreateCommand(command: Record = {}): Cypress.Chainable<{data: CypressResponseBody['body']; status: CypressResponseBody['status']}> { const options = { url: '/api/v4/commands', headers: {'X-Requested-With': 'XMLHttpRequest'}, @@ -53,12 +54,12 @@ Cypress.Commands.add('apiEmailTest', apiEmailTest); // https://api.mattermost.com/#tag/posts // ***************************************************************************** -function apiCreatePost(channelId: string, message: string, rootId: string, props: Record, token = '', failOnStatusCode = true): ResponseT { +function apiCreatePost(channelId: string, message: string, rootId: string, props: Record, token = '', failOnStatusCode = true): ResponseT { const headers: Record = {'X-Requested-With': 'XMLHttpRequest'}; if (token !== '') { headers.Authorization = `Bearer ${token}`; } - return cy.request({ + return cy.request({ headers, failOnStatusCode, url: '/api/v4/posts', @@ -121,7 +122,7 @@ Cypress.Commands.add('apiUnpinPosts', apiUnpinPosts); // https://api.mattermost.com/#tag/webhooks // ***************************************************************************** -function apiCreateWebhook(hook: Record = {}, isIncoming = true): ChainableT<{data: CypressResponseAny['body']; url: string}> { +function apiCreateWebhook(hook: Record = {}, isIncoming = true): ChainableT<{data: Cypress.IncomingWebhook | Cypress.OutgoingWebhook; url: string}> { const hookUrl = isIncoming ? '/api/v4/hooks/incoming' : '/api/v4/hooks/outgoing'; const options = { url: hookUrl, @@ -138,7 +139,7 @@ function apiCreateWebhook(hook: Record = {}, isIncoming = true): Ch Cypress.Commands.add('apiCreateWebhook', apiCreateWebhook); -function apiGetTeam(teamId: string): ChainableT { +function apiGetTeam(teamId: string): ChainableT> { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `api/v4/teams/${teamId}`, @@ -177,7 +178,7 @@ function apiGetLDAPSync(): Cypress.Chainable { timeout: 60000, }).then((response) => { expect(response.status).to.equal(200); - return cy.wrap(response); + return cy.wrap(response as unknown as LDAPSyncResponse); }); } Cypress.Commands.add('apiGetLDAPSync', apiGetLDAPSync); @@ -199,7 +200,7 @@ function apiGetGroups(page = 0, perPage = 100): ResponseT { } Cypress.Commands.add('apiGetGroups', apiGetGroups); -function apiPatchGroup(groupID: string, patch: Record): ResponseT { +function apiPatchGroup(groupID: string, patch: Record): ResponseT { return cy.request({ headers: {'X-Requested-With': 'XMLHttpRequest'}, url: `/api/v4/groups/${groupID}/patch`, @@ -351,7 +352,7 @@ function apiLinkGroupChannel(groupID: string, channelID: string): ResponseT { } Cypress.Commands.add('apiLinkGroupChannel', apiLinkGroupChannel); -function simulateSubscription(subscription, withLimits = true) { +function simulateSubscription(subscription: Partial, withLimits = true) { cy.intercept('GET', '**/api/v4/cloud/subscription', { statusCode: 200, body: subscription, diff --git a/e2e-tests/cypress/tests/support/assertions.ts b/e2e-tests/cypress/tests/support/assertions.ts index 81140f020d4..4ad2a4c1d82 100644 --- a/e2e-tests/cypress/tests/support/assertions.ts +++ b/e2e-tests/cypress/tests/support/assertions.ts @@ -2,25 +2,25 @@ // See LICENSE.txt for license information. // Asserts that an item in the channel sidebar is not unread. -export function beRead(items) { +export function beRead(items: JQuery) { expect(items).to.have.length(1); expect(items[0].className).to.not.match(/unread-title/); } // Asserts that an item in the channel sidebar is read. -export function beUnread(items) { +export function beUnread(items: JQuery) { expect(items).to.have.length(1); expect(items[0].className).to.match(/unread-title/); } // Asserts that an item in the channel sidebar is muted. -export function beMuted(items) { +export function beMuted(items: JQuery) { expect(items).to.have.length(1); expect(items[0].className).to.match(/muted/); } // Asserts that an item in the channel sidebar is unmuted. -export function beUnmuted(items) { +export function beUnmuted(items: JQuery) { expect(items).to.have.length(1); expect(items[0].className).to.not.match(/muted/); } diff --git a/e2e-tests/cypress/tests/support/chai.ts b/e2e-tests/cypress/tests/support/chai.ts index 3e2f6785beb..64b70dd8884 100644 --- a/e2e-tests/cypress/tests/support/chai.ts +++ b/e2e-tests/cypress/tests/support/chai.ts @@ -2,7 +2,8 @@ // See LICENSE.txt for license information. chai.use((chai: Chai.ChaiStatic) => { - function assertIsFoo({exactStyles = true} = {}) { + // Chai assertion context has dynamic 'this' binding + function assertIsFoo(this: any, {exactStyles = true} = {}) { const obj = this._obj as JQuery; diff --git a/e2e-tests/cypress/tests/support/db_commands.ts b/e2e-tests/cypress/tests/support/db_commands.ts index 5f5d7c5aebb..3b948f17dd1 100644 --- a/e2e-tests/cypress/tests/support/db_commands.ts +++ b/e2e-tests/cypress/tests/support/db_commands.ts @@ -3,8 +3,8 @@ import {ChainableT} from '../types'; -const dbClient = Cypress.env('dbClient'); -const dbConnection = Cypress.env('dbConnection'); +const dbClient = Cypress.expose('dbClient'); +const dbConnection = Cypress.expose('dbConnection'); const dbConfig = { client: dbClient, connection: dbConnection, @@ -38,10 +38,12 @@ interface GetActiveUserSessionsParam { } interface GetActiveUserSessionsResult { user: Cypress.UserProfile; + // DB session records have dynamic fields sessions: Array>; } function dbGetActiveUserSessions(params: GetActiveUserSessionsParam): ChainableT { - return cy.task('dbGetActiveUserSessions', {dbConfig, params}).then(({user, sessions, errorMessage}) => { + // cy.task() returns untyped data + return cy.task('dbGetActiveUserSessions', {dbConfig, params}).then(({user, sessions, errorMessage}: any) => { expect(errorMessage).to.be.undefined; return cy.wrap({user, sessions}); @@ -56,7 +58,8 @@ interface GetUserResult { user: Cypress.UserProfile & {mfasecret: string}; } function dbGetUser(params: GetUserParam): ChainableT { - return cy.task('dbGetUser', {dbConfig, params}).then(({user, errorMessage, error}) => { + // cy.task() returns untyped data + return cy.task('dbGetUser', {dbConfig, params}).then(({user, errorMessage, error}: any) => { verifyError(error, errorMessage); return cy.wrap({user}); @@ -68,10 +71,12 @@ interface GetUserSessionParam { sessionId: string; } interface GetUserSessionResult { + // DB session records have dynamic fields session: Record; } function dbGetUserSession(params: GetUserSessionParam): ChainableT { - return cy.task('dbGetUserSession', {dbConfig, params}).then(({session, errorMessage}) => { + // cy.task() returns untyped data + return cy.task('dbGetUserSession', {dbConfig, params}).then(({session, errorMessage}: any) => { expect(errorMessage).to.be.undefined; return cy.wrap({session}); @@ -82,13 +87,16 @@ Cypress.Commands.add('dbGetUserSession', dbGetUserSession); interface UpdateUserSessionParam { sessionId: string; userId: string; + // DB session fields are dynamic fieldsToUpdate: Record; } interface UpdateUserSessionResult { + // DB session records have dynamic fields session: Record; } function dbUpdateUserSession(params: UpdateUserSessionParam): ChainableT { - return cy.task('dbUpdateUserSession', {dbConfig, params}).then(({session, errorMessage}) => { + // cy.task() returns untyped data + return cy.task('dbUpdateUserSession', {dbConfig, params}).then(({session, errorMessage}: any) => { expect(errorMessage).to.be.undefined; return cy.wrap({session}); @@ -97,14 +105,15 @@ function dbUpdateUserSession(params: UpdateUserSessionParam): ChainableT { - return cy.task('dbRefreshPostStats', {dbConfig}).then(({success, skipped, message, errorMessage, error}) => { + // cy.task() returns untyped data + return cy.task('dbRefreshPostStats', {dbConfig}).then(({success, skipped, message, errorMessage, error}: any) => { verifyError(error, errorMessage); - return cy.wrap({success, skipped, message}); - }); + return cy.wrap({success, skipped, message} as {success?: boolean; skipped?: boolean; message?: string}); + }) as ChainableT<{success?: boolean; skipped?: boolean; message?: string}>; } Cypress.Commands.add('dbRefreshPostStats', dbRefreshPostStats); -function verifyError(error, errorMessage) { +function verifyError(error: unknown, errorMessage: string) { if (errorMessage) { expect(errorMessage, `${errorMessage}\n\n${message}\n\n${JSON.stringify(error)}`).to.be.undefined; } diff --git a/e2e-tests/cypress/tests/support/email.ts b/e2e-tests/cypress/tests/support/email.ts index c658d447c8d..ace33d0bebe 100644 --- a/e2e-tests/cypress/tests/support/email.ts +++ b/e2e-tests/cypress/tests/support/email.ts @@ -10,7 +10,8 @@ import {getEmailUrl, splitEmailBodyText} from '../utils'; */ Cypress.Commands.add('getRecentEmail', ({username, email}) => { - return cy.task('getRecentEmail', {username, email, mailUrl: getEmailUrl()}).then(({status, data}) => { + // cy.task() returns untyped data + return cy.task('getRecentEmail', {username, email, mailUrl: getEmailUrl()}).then(({status, data}: any) => { expect(status).to.equal(200); const {to, date, body: {text}} = data; diff --git a/e2e-tests/cypress/tests/support/env.ts b/e2e-tests/cypress/tests/support/env.ts index 3c3d286cc1d..54fa19ea60f 100644 --- a/e2e-tests/cypress/tests/support/env.ts +++ b/e2e-tests/cypress/tests/support/env.ts @@ -11,15 +11,15 @@ export interface User { export function getAdminAccount() { return { - username: Cypress.env('adminUsername'), - password: Cypress.env('adminPassword'), - email: Cypress.env('adminEmail'), + username: Cypress.expose('adminUsername'), + password: Cypress.expose('adminPassword'), + email: Cypress.expose('adminEmail'), } as UserProfile; } export function getDBConfig() { return { - client: Cypress.env('dbClient'), - connection: Cypress.env('dbConnection'), + client: Cypress.expose('dbClient'), + connection: Cypress.expose('dbConnection'), }; } diff --git a/e2e-tests/cypress/tests/support/external_commands.ts b/e2e-tests/cypress/tests/support/external_commands.ts index 7f88111246d..2649f2dde53 100644 --- a/e2e-tests/cypress/tests/support/external_commands.ts +++ b/e2e-tests/cypress/tests/support/external_commands.ts @@ -82,7 +82,7 @@ function externalCreateUser(user: Partial): Cypress.Chainable { +function externalUpdateUserRoles(userId: string, roles: string) { const admin = getAdminAccount(); return cy.externalRequest({ diff --git a/e2e-tests/cypress/tests/support/fetch_commands.ts b/e2e-tests/cypress/tests/support/fetch_commands.ts index ba1908eefd0..d5c315b8c33 100644 --- a/e2e-tests/cypress/tests/support/fetch_commands.ts +++ b/e2e-tests/cypress/tests/support/fetch_commands.ts @@ -1,11 +1,22 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; +import {ChainableT} from '@/types'; + +interface MockWebSocket { + wrappedSocket: WebSocket | null; + onopen: ((ev: Event) => void) | null; + onmessage: ((ev: MessageEvent) => void) | null; + onerror: ((ev: Event) => void) | null; + onclose: ((ev: CloseEvent) => void) | null; + send(data: string | ArrayBuffer): void; + close(): void; + connect(): void; +} declare global { interface Window { - mockWebsockets: any[]; + mockWebsockets: MockWebSocket[]; } } @@ -15,13 +26,13 @@ function delayRequestToRoutes(routes: string[] = [], delay = 0) { Cypress.Commands.add('delayRequestToRoutes', delayRequestToRoutes); -const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +const wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); -const addDelay = (win, routes: string[], delay: number) => { +const addDelay = (win: Cypress.AUTWindow, routes: string[], delay: number) => { const fetch = win.fetch; - cy.stub(win, 'fetch').callsFake((...args) => { + cy.stub(win, 'fetch').callsFake((...args: [RequestInfo | URL, RequestInit?]) => { for (let i = 0; i < routes.length; i++) { - if (args[0].includes(routes[i])) { + if (String(args[0]).includes(routes[i])) { return wait(delay).then(() => fetch(...args)); } } @@ -40,16 +51,16 @@ function mockWebsockets() { // Wrap websocket to be able to connect and close connections on demand Cypress.Commands.add('mockWebsockets', mockWebsockets); -const mockWebsocketsFn = (win) => { +const mockWebsocketsFn = (win: Cypress.AUTWindow) => { const RealWebSocket = WebSocket; - cy.stub(win, 'WebSocket').callsFake((...args) => { - const mockWebSocket = { - wrappedSocket: null, - onopen: null, - onmessage: null, - onerror: null, - onclose: null, - send(data) { + cy.stub(win, 'WebSocket').callsFake((...args: ConstructorParameters) => { + const mockWebSocket: MockWebSocket = { + wrappedSocket: null as WebSocket | null, + onopen: null as ((ev: Event) => void) | null, + onmessage: null as ((ev: MessageEvent) => void) | null, + onerror: null as ((ev: Event) => void) | null, + onclose: null as ((ev: CloseEvent) => void) | null, + send(data: string | ArrayBuffer) { if (this.wrappedSocket) { this.wrappedSocket.send(data); } else if (this.onerror) { diff --git a/e2e-tests/cypress/tests/support/index.js b/e2e-tests/cypress/tests/support/index.js index fd6d17f25b3..279c291e647 100644 --- a/e2e-tests/cypress/tests/support/index.js +++ b/e2e-tests/cypress/tests/support/index.js @@ -121,7 +121,7 @@ before(() => { }); } - switch (Cypress.env('serverEdition')) { + switch (Cypress.expose('serverEdition')) { case 'Cloud': cy.apiRequireLicenseForFeature('Cloud'); break; @@ -132,14 +132,14 @@ before(() => { break; } - if (Cypress.env('serverClusterEnabled')) { + if (Cypress.expose('serverClusterEnabled')) { cy.log('Checking cluster information...'); // * Ensure cluster is set up properly when enabled cy.shouldHaveClusterEnabled(); cy.apiGetClusterStatus().then(({clusterInfo}) => { - const sameCount = clusterInfo?.length === Cypress.env('serverClusterHostCount'); - expect(sameCount, sameCount ? '' : `Should match number of hosts in a cluster as expected. Got "${clusterInfo?.length}" but expected "${Cypress.env('serverClusterHostCount')}"`).to.equal(true); + const sameCount = clusterInfo?.length === Cypress.expose('serverClusterHostCount'); + expect(sameCount, sameCount ? '' : `Should match number of hosts in a cluster as expected. Got "${clusterInfo?.length}" but expected "${Cypress.expose('serverClusterHostCount')}"`).to.equal(true); clusterInfo.forEach((info) => cy.log(`hostname: ${info.hostname}, version: ${info.version}, config_hash: ${info.config_hash}`)); }); @@ -188,7 +188,7 @@ function printServerDetails() { } function sysadminSetup(user) { - if (Cypress.env('firstTest')) { + if (Cypress.expose('firstTest')) { // Sends dummy call to update the config to server // Without this, first call to `cy.apiUpdateConfig()` consistently getting time out error in CI against remote server. cy.externalRequest({user, method: 'put', path: 'config', data: getDefaultConfig(), failOnStatusCode: false}); @@ -231,7 +231,7 @@ function sysadminSetup(user) { if (!defaultTeam) { cy.apiCreateTeam(DEFAULT_TEAM.name, DEFAULT_TEAM.display_name, 'O', false); - } else if (defaultTeam && Cypress.env('resetBeforeTest')) { + } else if (defaultTeam && Cypress.expose('resetBeforeTest')) { teams.forEach((team) => { if (team.name !== DEFAULT_TEAM.name) { cy.apiDeleteTeam(team.id); diff --git a/e2e-tests/cypress/tests/support/keycloak_commands.ts b/e2e-tests/cypress/tests/support/keycloak_commands.ts index 5b277ce28c9..59ecbb3a0d6 100644 --- a/e2e-tests/cypress/tests/support/keycloak_commands.ts +++ b/e2e-tests/cypress/tests/support/keycloak_commands.ts @@ -1,21 +1,22 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; import * as TIMEOUTS from '../fixtures/timeouts'; import {LdapUser} from './ldap_server_commands'; +import {ChainableT} from '@/types'; + const { keycloakBaseUrl, keycloakAppName, -} = Cypress.env(); +} = Cypress.expose(); const baseUrl = `${keycloakBaseUrl}/auth/admin/realms/${keycloakAppName}`; const loginUrl = `${keycloakBaseUrl}/auth/realms/master/protocol/openid-connect/token`; -function buildProfile(user) { +function buildProfile(user: LdapUser) { return { firstName: user.firstname, lastName: user.lastname, @@ -37,6 +38,7 @@ function keycloakGetAccessTokenAPI(): ChainableT { method: 'post', headers: {'Content-type': 'application/x-www-form-urlencoded'}, data: 'grant_type=password&username=mmuser&password=mostest&client_id=admin-cli', + // cy.task() returns untyped data }).then((response: any) => { expect(response.status).to.equal(200); const token: string = response.data.access_token; @@ -55,7 +57,7 @@ Cypress.Commands.add('keycloakGetAccessTokenAPI', keycloakGetAccessTokenAPI); * @example * cy.keycloakCreateUserAPI('abcde', {firstName: 'test', lastName: 'test', email: 'test', username: 'test', enabled: true,}); */ -function keycloakCreateUserAPI(accessToken: string, user: any = {}): ChainableT { +function keycloakCreateUserAPI(accessToken: string, user: LdapUser): ChainableT { const profile = buildProfile(user); return cy.task('keycloakRequest', { baseUrl, @@ -66,7 +68,8 @@ function keycloakCreateUserAPI(accessToken: string, user: any = {}): ChainableT 'Content-Type': 'application/json', Authorization: `Bearer ${accessToken}`, }, - }).then((response: Response) => { + // cy.task() returns untyped data + }).then((response: any) => { expect(response.status).to.equal(201); }); } @@ -93,6 +96,7 @@ function keycloakResetPasswordAPI(accessToken: string, userId: string, password: Authorization: `Bearer ${accessToken}`, }, data: {type: 'password', temporary: false, value: password}, + // cy.task() returns untyped data }).then((response: any) => { if (response.status === 200 && response.data.length > 0) { return cy.wrap(response.data[0].id); @@ -122,11 +126,12 @@ function keycloakGetUserAPI(accessToken: string, email: string): ChainableT { if (response.status === 200 && response.data.length > 0) { return cy.wrap(response.data[0].id); } - return null; + return cy.wrap(null as unknown as string); }); } @@ -150,6 +155,7 @@ function keycloakDeleteUserAPI(accessToken: string, userId: string): ChainableT 'Content-Type': 'application/json', Authorization: `Bearer ${accessToken}`, }, + // cy.task() returns untyped data }).then((response: any) => { expect(response.status).to.equal(204); }); @@ -166,7 +172,7 @@ Cypress.Commands.add('keycloakDeleteUserAPI', keycloakDeleteUserAPI); * @example * cy.keycloakUpdateUserAPI('abcde', '12345', {'enabled': false}}); */ -function keycloakUpdateUserAPI(accessToken: string, userId: string, data: any): ChainableT { +function keycloakUpdateUserAPI(accessToken: string, userId: string, data: Record): ChainableT { return cy.task('keycloakRequest', { baseUrl, path: 'users/' + userId, @@ -175,6 +181,7 @@ function keycloakUpdateUserAPI(accessToken: string, userId: string, data: any): Authorization: `Bearer ${accessToken}`, }, data, + // cy.task() returns untyped data }).then((response: any) => { expect(response.status).to.equal(204); }); @@ -198,6 +205,7 @@ function keycloakDeleteSessionAPI(accessToken: string, sessionId: string): Chain headers: { Authorization: `Bearer ${accessToken}`, }, + // cy.task() returns untyped data }).then((delResponse: any) => { expect(delResponse.status).to.equal(204); }); @@ -224,6 +232,7 @@ function keycloakGetUserSessionsAPI(accessToken: string, userId: string): Chaina 'Content-Type': 'application/json', Authorization: `Bearer ${accessToken}`, }, + // cy.task() returns untyped data }).then((response: any) => { expect(response.status).to.equal(200); expect(response.data); @@ -266,7 +275,7 @@ Cypress.Commands.add('keycloakDeleteUserSessions', keycloakDeleteUserSessions); * @example * cy.keycloakResetUsers([{firstName: 'test', lastName: 'test', email: 'test', username: 'test', enabled: true}]); */ -function keycloakResetUsers(users: any[]): ChainableT { +function keycloakResetUsers(users: LdapUser[]): ChainableT { return cy.keycloakGetAccessTokenAPI().then((accessToken) => { users.forEach((_user) => { cy.keycloakGetUserAPI(accessToken, _user.email).then((userId) => { @@ -291,7 +300,7 @@ Cypress.Commands.add('keycloakResetUsers', keycloakResetUsers); * @example * cy.keycloakCreateUser({firstName: 'test', lastName: 'test', email: 'test', username: 'test', enabled: true}); */ -function keycloakCreateUser(accessToken: string, user: any): ChainableT { +function keycloakCreateUser(accessToken: string, user: LdapUser): ChainableT { return cy.keycloakCreateUserAPI(accessToken, user).then(() => { cy.keycloakGetUserAPI(accessToken, user.email).then((newId) => { cy.keycloakResetPasswordAPI(accessToken, newId, user.password).then(() => { @@ -311,7 +320,7 @@ Cypress.Commands.add('keycloakCreateUser', keycloakCreateUser); * @example * cy.keycloakCreateUsers(users); */ -function keycloakCreateUsers(users = []) { +function keycloakCreateUsers(users: LdapUser[] = []) { return cy.keycloakGetAccessTokenAPI().then((accessToken) => { return users.forEach((user) => { return cy.keycloakCreateUser(accessToken, user); @@ -324,12 +333,12 @@ Cypress.Commands.add('keycloakCreateUsers', keycloakCreateUsers); /** * keycloakUpdateUser is a command that updates a keycloak user data. * @param {string} userEmail - the user email -* @param {any} data - the user data to update +* @param {Record} data - the user data to update * * @example * cy.keycloakUpdateUser('user@example.com', {firstName: 'test', lastName: 'test'}); */ -function keycloakUpdateUser(userEmail: string, data: any) { +function keycloakUpdateUser(userEmail: string, data: Record) { return cy.keycloakGetAccessTokenAPI().then((accessToken) => { return cy.keycloakGetUserAPI(accessToken, userEmail).then((userId) => { return cy.keycloakUpdateUserAPI(accessToken, userId, data); diff --git a/e2e-tests/cypress/tests/support/ldap_server_commands.ts b/e2e-tests/cypress/tests/support/ldap_server_commands.ts index 877d63e4adf..b505397918c 100644 --- a/e2e-tests/cypress/tests/support/ldap_server_commands.ts +++ b/e2e-tests/cypress/tests/support/ldap_server_commands.ts @@ -1,10 +1,11 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; - import {getRandomId} from '../utils'; +import {ChainableT} from '@/types'; + + const ldapTmpFolder = 'ldap_tmp'; export interface LdapUser { @@ -19,7 +20,7 @@ export interface LdapUser { } function modifyLDAPUsers(filename: string) { - cy.exec(`ldapmodify -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest -H ldap://${Cypress.env('ldapServer')}:${Cypress.env('ldapPort')} -f tests/fixtures/${filename} -c`, {failOnNonZeroExit: false}); + cy.exec(`ldapmodify -x -D "cn=admin,dc=mm,dc=test,dc=com" -w mostest -H ldap://${Cypress.expose('ldapServer')}:${Cypress.expose('ldapPort')} -f tests/fixtures/${filename} -c`, {failOnNonZeroExit: false}); } Cypress.Commands.add('modifyLDAPUsers', modifyLDAPUsers); @@ -30,7 +31,7 @@ function resetLDAPUsers() { Cypress.Commands.add('resetLDAPUsers', resetLDAPUsers); -function createLDAPUser({prefix = 'ldap', user = null} = {}): ChainableT { +function createLDAPUser({prefix = 'ldap', user = null as LdapUser | null} = {}): ChainableT { const ldapUser = user || generateLDAPUser(prefix); const data = generateContent(ldapUser); const filename = `new_user_${Date.now()}.ldif`; @@ -86,7 +87,7 @@ function ldapModify(filePath: string) { Cypress.Commands.add('ldapModify', ldapModify); function getLDAPCredentials() { - const host = `ldap://${Cypress.env('ldapServer')}:${Cypress.env('ldapPort')}`; + const host = `ldap://${Cypress.expose('ldapServer')}:${Cypress.expose('ldapPort')}`; const bindDn = 'cn=admin,dc=mm,dc=test,dc=com'; const password = 'mostest'; diff --git a/e2e-tests/cypress/tests/support/okta_commands.ts b/e2e-tests/cypress/tests/support/okta_commands.ts index 94c16d403e9..b9364f4fc69 100644 --- a/e2e-tests/cypress/tests/support/okta_commands.ts +++ b/e2e-tests/cypress/tests/support/okta_commands.ts @@ -1,13 +1,14 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; - import * as TIMEOUTS from '../fixtures/timeouts'; -const token = 'SSWS ' + Cypress.env('oktaMMAppToken'); +import {ChainableT} from '@/types'; -type UserId = string | null; + +const token = 'SSWS ' + Cypress.expose('oktaMMAppToken'); + +type UserId = string | undefined; interface Profile { firstName: string; @@ -36,11 +37,6 @@ export interface UserCollection { regulars: Record>; } -interface OktaResponse { - status: number; - data: T; -} - /** * Builds a user profile object * @param {Object} user - the user data @@ -64,10 +60,10 @@ function buildProfile(user: User): Profile { * @param {Object} user - the user to create * @returns {String} userId: the user id */ -function oktaCreateUser(user: any = {}): ChainableT { - const profile = buildProfile(user); +function oktaCreateUser(user: Partial = {}): ChainableT { + const profile = buildProfile(user as User); return cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), + baseUrl: Cypress.expose('oktaApiUrl'), urlSuffix: '/users/', method: 'post', token, @@ -81,10 +77,11 @@ function oktaCreateUser(user: any = {}): ChainableT { }, }, }, - }).then((response: OktaResponse<{id: UserId}>) => { + // cy.task() returns untyped data + }).then((response: any) => { expect(response.status).to.equal(200); const userId = response.data.id; - return cy.wrap(userId); + return cy.wrap(userId as UserId); }); } @@ -97,16 +94,17 @@ Cypress.Commands.add('oktaCreateUser', oktaCreateUser); */ function oktaGetUser(userId: string = ''): ChainableT { return cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), + baseUrl: Cypress.expose('oktaApiUrl'), urlSuffix: '/users?q=' + userId, method: 'get', token, - }).then((response: OktaResponse>) => { + // cy.task() returns untyped data + }).then((response: any) => { expect(response.status).to.be.equal(200); if (response.data.length > 0) { - return cy.wrap(response.data[0].id); + return cy.wrap(response.data[0].id as UserId); } - return cy.wrap(null as UserId); + return cy.wrap(undefined as UserId); }); } @@ -118,18 +116,19 @@ Cypress.Commands.add('oktaGetUser', oktaGetUser); * @param {Object} user - the user data * @returns {Object} data: the user data as a response */ -function oktaUpdateUser(userId: string = '', user: any = {}): ChainableT { - const profile = buildProfile(user); +function oktaUpdateUser(userId: string = '', user: Partial = {}) { + const profile = buildProfile(user as User); return cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), + baseUrl: Cypress.expose('oktaApiUrl'), urlSuffix: '/users/' + userId, method: 'post', token, data: { profile, }, - }).then((response: OktaResponse) => { + // cy.task() returns untyped data + }).then((response: any) => { expect(response.status).to.equal(201); return cy.wrap(response.data); }); @@ -142,19 +141,20 @@ Cypress.Commands.add('oktaUpdateUser', oktaUpdateUser); * @param {String} userId - the user id */ function oktaDeleteUser(userId: string = '') { + // cy.task() returns untyped data cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), + baseUrl: Cypress.expose('oktaApiUrl'), urlSuffix: '/users/' + userId, method: 'delete', token, - }).then((response: OktaResponse) => { + }).then((response: any) => { expect(response.status).to.equal(204); cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), + baseUrl: Cypress.expose('oktaApiUrl'), urlSuffix: '/users/' + userId, method: 'delete', token, - }).then((_response: OktaResponse) => { + }).then((_response: any) => { expect(_response.status).to.equal(204); }); }); @@ -168,12 +168,13 @@ Cypress.Commands.add('oktaDeleteUser', oktaDeleteUser); * @param {String} userId - the user id */ function oktaDeleteSession(userId: string = '') { + // cy.task() returns untyped data cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), + baseUrl: Cypress.expose('oktaApiUrl'), urlSuffix: '/users/' + userId + '/sessions', method: 'delete', token, - }).then((response: OktaResponse) => { + }).then((response: any) => { expect(response.status).to.equal(204); // Ensure we clear out these specific cookies @@ -191,22 +192,23 @@ Cypress.Commands.add('oktaDeleteSession', oktaDeleteSession); * @param {Object} user - the user data * @returns {Object} data: the user data as response */ -function oktaAssignUserToApplication(userId: string = '', user: any = {}): ChainableT { +function oktaAssignUserToApplication(userId: string = '', user: Partial = {}) { return cy.task('oktaRequest', { - baseUrl: Cypress.env('oktaApiUrl'), - urlSuffix: '/apps/' + Cypress.env('oktaMMAppId') + '/users', + baseUrl: Cypress.expose('oktaApiUrl'), + urlSuffix: '/apps/' + Cypress.expose('oktaMMAppId') + '/users', method: 'post', token, data: { id: userId, scope: 'USER', profile: { - firstName: user.firstName, - lastName: user.lastName, + firstName: user.firstname, + lastName: user.lastname, email: user.email, }, }, - }).then((response: OktaResponse) => { + // cy.task() returns untyped data + }).then((response: any) => { expect(response.status).to.be.equal(200); return cy.wrap(response.data); }); @@ -220,16 +222,16 @@ Cypress.Commands.add('oktaAssignUserToApplication', oktaAssignUserToApplication) * @returns {String} userId: the user id */ function oktaGetOrCreateUser(user: User): ChainableT { - let userId; + let userId: UserId; return cy.oktaGetUser(user.email).then((uId) => { userId = uId; if (userId == null) { cy.oktaCreateUser(user).then((_uId) => { userId = _uId; - cy.oktaAssignUserToApplication(userId, user); + cy.oktaAssignUserToApplication(userId as string, user); }); } else { - cy.oktaAssignUserToApplication(userId, user); + cy.oktaAssignUserToApplication(userId as string, user); } return cy.wrap(userId as UserId); }); @@ -242,41 +244,41 @@ Cypress.Commands.add('oktaGetOrCreateUser', oktaGetOrCreateUser); * @param {Object} users - a collection of users */ function oktaAddUsers(users: UserCollection) { - let userId; - Object.values(users.regulars).forEach((_user: User) => { + let userId: UserId; + Object.values(users.regulars).forEach((_user) => { cy.oktaGetUser(_user.email).then((uId) => { userId = uId; if (userId == null) { cy.oktaCreateUser(_user).then((_uId) => { userId = _uId; - cy.oktaAssignUserToApplication(userId, _user); - cy.oktaDeleteSession(userId); + cy.oktaAssignUserToApplication(userId as string, _user); + cy.oktaDeleteSession(userId as string); }); } }); }); - Object.values(users.guests).forEach((_user: User) => { + Object.values(users.guests).forEach((_user) => { cy.oktaGetUser(_user.email).then((uId) => { userId = uId; if (userId == null) { cy.oktaCreateUser(_user).then((_uId) => { userId = _uId; - cy.oktaAssignUserToApplication(userId, _user); - cy.oktaDeleteSession(userId); + cy.oktaAssignUserToApplication(userId as string, _user); + cy.oktaDeleteSession(userId as string); }); } }); }); - Object.values(users.admins).forEach((_user: User) => { + Object.values(users.admins).forEach((_user) => { cy.oktaGetUser(_user.email).then((uId) => { userId = uId; if (userId == null) { cy.oktaCreateUser(_user).then((_uId) => { userId = _uId; - cy.oktaAssignUserToApplication(userId, _user); - cy.oktaDeleteSession(userId); + cy.oktaAssignUserToApplication(userId as string, _user); + cy.oktaDeleteSession(userId as string); }); } }); @@ -290,30 +292,30 @@ Cypress.Commands.add('oktaAddUsers', oktaAddUsers); * @param {Object} users - a collection of users */ function oktaRemoveUsers(users: UserCollection) { - let userId; - Object.values(users.regulars).forEach((_user: User) => { + let userId: UserId; + Object.values(users.regulars).forEach((_user) => { cy.oktaGetUser(_user.email).then((_uId) => { userId = _uId; if (userId != null) { - cy.oktaDeleteUser(userId); + cy.oktaDeleteUser(userId as string); } }); }); - Object.values(users.guests).forEach((_user: User) => { + Object.values(users.guests).forEach((_user) => { cy.oktaGetUser(_user.email).then((_uId) => { userId = _uId; if (userId != null) { - cy.oktaDeleteUser(userId); + cy.oktaDeleteUser(userId as string); } }); }); - Object.values(users.admins).forEach((_user: User) => { + Object.values(users.admins).forEach((_user) => { cy.oktaGetUser(_user.email).then((_uId) => { userId = _uId; if (userId != null) { - cy.oktaDeleteUser(userId); + cy.oktaDeleteUser(userId as string); } }); }); diff --git a/e2e-tests/cypress/tests/support/saml_commands.ts b/e2e-tests/cypress/tests/support/saml_commands.ts index 021a782d2f8..3f5bcff90c9 100644 --- a/e2e-tests/cypress/tests/support/saml_commands.ts +++ b/e2e-tests/cypress/tests/support/saml_commands.ts @@ -32,7 +32,7 @@ interface TestSettings { * @param {TestSettings} settings - Settings object */ function checkCreateTeamPage(settings: TestSettings) { - if (settings.user.userType === 'Guest' || settings.user.isGuest) { + if (settings.user!.userType === 'Guest' || settings.user!.isGuest) { cy.findByText('Create a team').scrollIntoView().should('not.exist'); } else { cy.findByText('Create a team').scrollIntoView().should('be.visible'); @@ -45,7 +45,7 @@ Cypress.Commands.add('checkCreateTeamPage', checkCreateTeamPage); * doSamlLogin check that the login page is loaded with the correct settings (siteName) and logs in using SAML. * @param {TestSettings} settings - Settings object to perform SAML tests. */ -function doSamlLogin(settings) { +function doSamlLogin(settings: TestSettings) { // # Go to login page cy.apiLogout(); cy.visit('/login'); @@ -61,7 +61,7 @@ Cypress.Commands.add('doSamlLogin', doSamlLogin); * doSamlLogout logs out and checks that it reloads the login page with the correct settings (siteName). * @param {TestSettings} settings - Settings object to perform SAML tests. */ -function doSamlLogout(settings) { +function doSamlLogout(settings: TestSettings) { cy.checkLeftSideBar(settings); // # Logout then check login page @@ -74,9 +74,9 @@ Cypress.Commands.add('doSamlLogout', doSamlLogout); /** * getInvitePeopleLink gets the invite people link from the invite people modal * @param {TestSettings} settings - Settings object to perform SAML tests. - * @returns {ChainableT} - the invite people link wrapped in a cypress chainable + * @returns {ChainableT} - the invite people link wrapped in a cypress chainable */ -function getInvitePeopleLink(settings: TestSettings): ChainableT { +function getInvitePeopleLink(settings: TestSettings) { cy.checkLeftSideBar(settings); // # Open team menu and click 'Invite People' @@ -101,7 +101,7 @@ Cypress.Commands.add('getInvitePeopleLink', getInvitePeopleLink); * @returns {TestSettings} - The settings to use for SAML tests */ function setTestSettings(loginButtonText: string, config: AdminConfig): ChainableT { - return cy.wrap({ + return cy.wrap({ loginButtonText, siteName: config.TeamSettings.SiteName, siteUrl: config.ServiceSettings.SiteURL, diff --git a/e2e-tests/cypress/tests/support/task_commands.ts b/e2e-tests/cypress/tests/support/task_commands.ts index 055501570c7..ea278fd5a50 100644 --- a/e2e-tests/cypress/tests/support/task_commands.ts +++ b/e2e-tests/cypress/tests/support/task_commands.ts @@ -16,7 +16,8 @@ import {ChainableT} from '../types'; export interface PostMessageResp { id: string; status: number; - data: any; + // Post data from the API response + data: Record; } interface PostMessageArg { @@ -33,10 +34,10 @@ interface PostMessageArg { interface PostMessageRequest { token: string; message: string; - props?; + props?: Record; channelId: string; - rootId?; - createAt?; + rootId?: string; + createAt?: number; failOnStatus?: boolean; } @@ -44,7 +45,8 @@ function postMessageAs(arg: PostMessageArg): ChainableT { const {sender, message, channelId, rootId, createAt} = arg; const baseUrl = Cypress.config('baseUrl'); - return cy.task('postMessageAs', {sender, message, channelId, rootId, createAt, baseUrl}).then((response: AxiosResponse<{id: string}>) => { + // cy.task() returns untyped data + return cy.task('postMessageAs', {sender, message, channelId, rootId, createAt, baseUrl}).then((response: any) => { const {status, data} = response; expect(status).to.equal(201); @@ -61,12 +63,13 @@ Cypress.Commands.add('postMessageAs', postMessageAs); * @param {Object} channelId - where a post will be posted */ -function postListOfMessages({numberOfMessages = 30, ...rest}): ChainableT { +function postListOfMessages({numberOfMessages = 30, ...rest}): ChainableT { const baseUrl = Cypress.config('baseUrl'); + // Cast needed: Cypress.Commands.add requires cast for overloaded commands return (cy as any). task('postListOfMessages', {numberOfMessages, baseUrl, ...rest}, {timeout: numberOfMessages * 200}). - each((message) => expect(message.status).to.equal(201)); + each((message: {status: number}) => expect(message.status).to.equal(201)); } Cypress.Commands.add('postListOfMessages', postListOfMessages); @@ -81,7 +84,8 @@ Cypress.Commands.add('postListOfMessages', postListOfMessages); Cypress.Commands.add('reactToMessageAs', ({sender, postId, reaction}) => { const baseUrl = Cypress.config('baseUrl'); - return cy.task('reactToMessageAs', {sender, postId, reaction, baseUrl}).then(({status, data}) => { + // cy.task() returns untyped data + return cy.task('reactToMessageAs', {sender, postId, reaction, baseUrl}).then(({status, data}: any) => { expect(status).to.equal(200); // # Return the response after reaction is added @@ -96,26 +100,32 @@ Cypress.Commands.add('reactToMessageAs', ({sender, postId, reaction}) => { * @param {Object} data - payload on incoming webhook */ +interface WebhookData { + text?: string; + attachments?: Array & {pretext?: string}>; + [key: string]: unknown; +} + function postIncomingWebhook({url, data, waitFor}: { url: string; - data: Record; + data: WebhookData; waitFor?: string; }): ChainableT { cy.task('postIncomingWebhook', {url, data}).its('status').should('be.equal', 200); if (!waitFor) { - return; + return cy.wrap(undefined) as ChainableT; } - cy.waitUntil(() => cy.getLastPost().then((el) => { + return cy.waitUntil(() => cy.getLastPost().then((el) => { switch (waitFor) { case 'text': { const textEl = el.find('.post-message__text > p')[0]; - return Boolean(textEl && textEl.textContent.includes(data.text)); + return Boolean(textEl && data.text && textEl.textContent.includes(data.text)); } case 'attachment-pretext': { const attachmentPretextEl = el.find('.attachment__thumb-pretext > p')[0]; - return Boolean(attachmentPretextEl && attachmentPretextEl.textContent.includes(data.attachments[0].pretext)); + return Boolean(attachmentPretextEl && data.attachments?.[0]?.pretext && attachmentPretextEl.textContent.includes(data.attachments[0].pretext)); } default: return false; @@ -132,11 +142,12 @@ interface ExternalRequestArg { data?: T; failOnStatusCode?: boolean; } -function externalRequest(arg: ExternalRequestArg): ChainableT, 'data' | 'status'>> { +function externalRequest(arg: ExternalRequestArg): ChainableT, 'data' | 'status'>> { const {user, method, path, data, failOnStatusCode = true} = arg; const baseUrl = Cypress.config('baseUrl'); - return cy.task('externalRequest', {baseUrl, user, method, path, data}).then((response: Pick, 'data' | 'status'>) => { + // cy.task() returns untyped data + return cy.task('externalRequest', {baseUrl, user, method, path, data}).then((response: any) => { // Temporarily ignore error related to Cloud const cloudErrorId = [ 'ent.cloud.request_error', @@ -147,10 +158,11 @@ function externalRequest(arg: ExternalRequestArg): ChainableT

, 'data' | 'status'>); + }) as ChainableT, 'data' | 'status'>>; } -Cypress.Commands.add('externalRequest', externalRequest); +// Cypress.Commands.add requires cast for overloaded commands +Cypress.Commands.add('externalRequest', externalRequest as any); /** * postMessageAs is a task which is wrapped as command with post-verification @@ -162,7 +174,8 @@ Cypress.Commands.add('externalRequest', externalRequest); function postBotMessage({token, message, props, channelId, rootId, createAt, failOnStatus = true}: PostMessageRequest): ChainableT { const baseUrl = Cypress.config('baseUrl'); - return cy.task('postBotMessage', {token, message, props, channelId, rootId, createAt, baseUrl}).then(({status, data}) => { + // cy.task() returns untyped data + return cy.task('postBotMessage', {token, message, props, channelId, rootId, createAt, baseUrl}).then(({status, data}: any) => { if (failOnStatus) { expect(status).to.equal(201); } @@ -184,10 +197,11 @@ Cypress.Commands.add('postBotMessage', postBotMessage); * @param {String} httpStatus - expected HTTP status */ -function urlHealthCheck({name, url, helperMessage, method, httpStatus}): ChainableT { +function urlHealthCheck({name, url, helperMessage, method, httpStatus}: {name: string; url: string; helperMessage: string; method: string; httpStatus: number}): ChainableT { Cypress.log({name, message: `Checking URL health at ${url}`}); - return cy.task('urlHealthCheck', {url, method}).then(({data, errorCode, status, success}) => { + // cy.task() returns untyped data + return cy.task('urlHealthCheck', {url, method}).then(({data, errorCode, status, success}: any) => { const urlService = `__${name}__ at ${url}`; const successMessage = success ? @@ -208,9 +222,9 @@ Cypress.Commands.add('urlHealthCheck', urlHealthCheck); Cypress.Commands.add('requireWebhookServer', () => { const baseUrl = Cypress.config('baseUrl'); - const webhookBaseUrl = Cypress.env('webhookBaseUrl'); - const adminUsername = Cypress.env('adminUsername'); - const adminPassword = Cypress.env('adminPassword'); + const webhookBaseUrl = Cypress.expose('webhookBaseUrl'); + const adminUsername = Cypress.expose('adminUsername'); + const adminPassword = Cypress.expose('adminPassword'); const helperMessage = ` __Tips:__ 1. In local development, you may run "__npm run start:webhook__" at "/e2e" folder. @@ -260,9 +274,9 @@ declare global { user: Pick; method: string; path: string; - data?: Record; + data?: Record | unknown[]; failOnStatusCode?: boolean; - }): Chainable; + }): Chainable>; /** * Adds a given reaction to a specific post from a user @@ -275,7 +289,7 @@ declare global { * @example * cy.reactToMessageAs({sender:user2, postId:"ABC123", reaction: 'smile'}); */ - reactToMessageAs({sender, postId, reaction}: {sender: Record; postId: string; reaction: string}): Chainable; + reactToMessageAs({sender, postId, reaction}: {sender: Record; postId: string; reaction: string}): Chainable<{status: number; data: unknown}>; /** * Verify that the webhook server is accessible, and then sets up base URLs and credential. diff --git a/e2e-tests/cypress/tests/support/ui/channel_sidebar.ts b/e2e-tests/cypress/tests/support/ui/channel_sidebar.ts index 43e3427dc53..af0400ed98f 100644 --- a/e2e-tests/cypress/tests/support/ui/channel_sidebar.ts +++ b/e2e-tests/cypress/tests/support/ui/channel_sidebar.ts @@ -1,10 +1,11 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; - import {getRandomId} from '../../utils'; +import {ChainableT} from '@/types'; + + /** * Create a new category * diff --git a/e2e-tests/cypress/tests/support/ui/emoji.ts b/e2e-tests/cypress/tests/support/ui/emoji.ts index 3855496514f..e37873119d2 100644 --- a/e2e-tests/cypress/tests/support/ui/emoji.ts +++ b/e2e-tests/cypress/tests/support/ui/emoji.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; +import {ChainableT} from '@/types'; Cypress.Commands.add('uiGetEmojiPicker', (): ChainableT => { return cy.get('#emojiPicker').should('be.visible'); diff --git a/e2e-tests/cypress/tests/support/ui/post.ts b/e2e-tests/cypress/tests/support/ui/post.ts index dbbc7485644..57fceb2ad9e 100644 --- a/e2e-tests/cypress/tests/support/ui/post.ts +++ b/e2e-tests/cypress/tests/support/ui/post.ts @@ -75,7 +75,7 @@ function editLastPostWithNewMessage(message: string) { } Cypress.Commands.add('editLastPostWithNewMessage', editLastPostWithNewMessage); -export function verifySavedPost(postId, message) { +export function verifySavedPost(postId: string, message: string) { // * Check that the center save icon has been updated correctly cy.get(`#post_${postId}`).trigger('mouseover', {force: true}); cy.get(`#CENTER_flagIcon_${postId}`). @@ -136,7 +136,7 @@ export function verifySavedPost(postId, message) { cy.get('#searchResultsCloseButton').should('be.visible').click(); } -export function verifyUnsavedPost(postId) { +export function verifyUnsavedPost(postId: string) { // * Check that the center save icon has been updated correctly cy.get(`#post_${postId}`).trigger('mouseover', {force: true}); cy.get(`#CENTER_flagIcon_${postId}`). diff --git a/e2e-tests/cypress/tests/support/ui/search.ts b/e2e-tests/cypress/tests/support/ui/search.ts index fe1786a451a..32803bd96b8 100644 --- a/e2e-tests/cypress/tests/support/ui/search.ts +++ b/e2e-tests/cypress/tests/support/ui/search.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {ChainableT} from 'tests/types'; +import {ChainableT} from '@/types'; function uiSearchPosts(searchTerm: string) { // # Enter the search terms and hit enter to start the search diff --git a/e2e-tests/cypress/tests/support/ui/suggestion_list.ts b/e2e-tests/cypress/tests/support/ui/suggestion_list.ts index f3f5ec444fc..3dd3f48f219 100644 --- a/e2e-tests/cypress/tests/support/ui/suggestion_list.ts +++ b/e2e-tests/cypress/tests/support/ui/suggestion_list.ts @@ -1,8 +1,8 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {SimpleUser} from 'tests/integration/channels/autocomplete/helpers'; -import {ChainableT} from 'tests/types'; +import {SimpleUser} from '@/integration/channels/autocomplete/helpers'; +import {ChainableT} from '@/types'; /** * Verify user's at-mention in the suggestion list @@ -13,7 +13,7 @@ import {ChainableT} from 'tests/types'; * @example * cy.uiVerifyAtMentionInSuggestionList(user, true, 'Channel Members'); */ -function uiVerifyAtMentionInSuggestionList(user: SimpleUser, isSelected = false, sectionDividerName: string = null): ChainableT { +function uiVerifyAtMentionInSuggestionList(user: SimpleUser, isSelected = false, sectionDividerName: string | null = null): ChainableT { // * Verify that the suggestion list is open and visible return cy.get('#suggestionList').should('be.visible').within(() => { if (sectionDividerName) { diff --git a/e2e-tests/cypress/tests/support/ui_commands.ts b/e2e-tests/cypress/tests/support/ui_commands.ts index 2aefff559ee..65876dea07e 100644 --- a/e2e-tests/cypress/tests/support/ui_commands.ts +++ b/e2e-tests/cypress/tests/support/ui_commands.ts @@ -11,15 +11,15 @@ import {isMac} from '../utils'; // Read more: https://on.cypress.io/custom-commands // *********************************************************** -function logout(): ChainableT { +function logout(): ChainableT { return cy.get('#logout').click({force: true}); } Cypress.Commands.add('logout', logout); -function getCurrentUserId(): ChainableT> { - return cy.wrap(new Promise((resolve) => { +function getCurrentUserId(): ChainableT { + return cy.wrap(new Promise((resolve) => { cy.getCookie('MMUSERID').then((cookie) => { - resolve(cookie.value); + resolve(cookie!.value); }); })); } @@ -30,12 +30,12 @@ Cypress.Commands.add('getCurrentUserId', getCurrentUserId); // *********************************************************** // Type Cmd or Ctrl depending on OS -function typeCmdOrCtrl(): ChainableT { +function typeCmdOrCtrl(): ChainableT { return typeCmdOrCtrlInt('#post_textbox'); } Cypress.Commands.add('typeCmdOrCtrl', typeCmdOrCtrl); -function typeCmdOrCtrlForEdit(): ChainableT { +function typeCmdOrCtrlForEdit(): ChainableT { return typeCmdOrCtrlInt('#edit_textbox'); } Cypress.Commands.add('typeCmdOrCtrlForEdit', typeCmdOrCtrlForEdit); @@ -51,7 +51,7 @@ function typeCmdOrCtrlInt(textboxSelector: string) { return cy.get(textboxSelector).type(cmdOrCtrl, {release: false}); } -function cmdOrCtrlShortcut(subject: string, text?: string): ChainableT { +function cmdOrCtrlShortcut(subject: string, text?: string): ChainableT { const cmdOrCtrl = isMac() ? '{cmd}' : '{ctrl}'; return cy.get(subject).type(`${cmdOrCtrl}${text}`); } @@ -61,13 +61,13 @@ Cypress.Commands.add('cmdOrCtrlShortcut', {prevSubject: true}, cmdOrCtrlShortcut // Post // *********************************************************** -function postMessage(message: string): ChainableT { +function postMessage(message: string): ChainableT { cy.get('#postListContent').should('be.visible'); return postMessageAndWait('#post_textbox', message); } Cypress.Commands.add('postMessage', postMessage); -function postMessageReplyInRHS(message: string): ChainableT { +function postMessageReplyInRHS(message: string): ChainableT { cy.get('#sidebar-right').should('be.visible'); return postMessageAndWait('#reply_textbox', message, true); } @@ -99,8 +99,8 @@ function postMessageAndWait(textboxSelector: string, message: string, isComment cy.get(textboxSelector).should('have.value', message).focus().type('{enter}').wait(TIMEOUTS.HALF_SEC); - cy.get(textboxSelector).invoke('val').then((value: string) => { - if (value.length > 0 && value === message) { + cy.get(textboxSelector).invoke('val').then((value) => { + if (typeof value === 'string' && value.length > 0 && value === message) { cy.get(textboxSelector).type('{enter}').wait(TIMEOUTS.HALF_SEC); } }); @@ -169,7 +169,7 @@ function getLastPostId(): ChainableT { } Cypress.Commands.add('getLastPostId', getLastPostId); -function uiWaitUntilMessagePostedIncludes(message: string): ChainableT { +function uiWaitUntilMessagePostedIncludes(message: string): ChainableT { const checkFn = () => { return cy.getLastPost().scrollIntoView().then((el) => { const postedMessageEl = el.find('.post-message__text')[0]; @@ -203,14 +203,14 @@ function uiGetNthPost(index: number): ChainableT { } Cypress.Commands.add('uiGetNthPost', uiGetNthPost); -function postMessageFromFile(file: string, target = '#post_textbox'): ChainableT { +function postMessageFromFile(file: string, target = '#post_textbox') { return cy.fixture(file, 'utf-8').then((text) => { return cy.get(target).clear().invoke('val', text).wait(TIMEOUTS.HALF_SEC).type(' {backspace}{enter}').should('have.text', ''); }); } Cypress.Commands.add('postMessageFromFile', postMessageFromFile); -function compareLastPostHTMLContentFromFile(file: string, timeout = TIMEOUTS.TEN_SEC): ChainableT { +function compareLastPostHTMLContentFromFile(file: string, timeout = TIMEOUTS.TEN_SEC): ChainableT { // * Verify that HTML Content is correct return cy.getLastPostId().then((postId) => { const postMessageTextId = `#postMessageText_${postId}`; @@ -347,12 +347,14 @@ Cypress.Commands.add('clickPostSaveIcon', clickPostSaveIcon); function clickPostDotMenu(postId: string, location = 'CENTER') { clickPostHeaderItem(postId, location, 'button'); } -Cypress.Commands.add('clickPostDotMenu', clickPostDotMenu); +// Cypress.Commands.add requires cast for overloaded commands +Cypress.Commands.add('clickPostDotMenu', clickPostDotMenu as any); function clickPostReactionIcon(postId: string, location = 'CENTER') { clickPostHeaderItem(postId, location, 'reaction'); } -Cypress.Commands.add('clickPostReactionIcon', clickPostReactionIcon); +// Cypress.Commands.add requires cast for overloaded commands +Cypress.Commands.add('clickPostReactionIcon', clickPostReactionIcon as any); function clickPostCommentIcon(postId: string, location = 'CENTER') { clickPostHeaderItem(postId, location, 'commentIcon'); @@ -512,7 +514,7 @@ function updateDMGMChannelHeader(text: string) { Cypress.Commands.add('updateDMGMChannelHeader', updateDMGMChannelHeader); -function checkRunLDAPSync(): ChainableT { +function checkRunLDAPSync() { return cy.apiGetLDAPSync().then((response) => { const jobs = response.body; const currentTime = new Date(); @@ -565,7 +567,7 @@ function clickEmojiInEmojiPicker(emojiName: string) { } Cypress.Commands.add('clickEmojiInEmojiPicker', clickEmojiInEmojiPicker); -function verifyPostedMessage(message) { +function verifyPostedMessage(message: string) { cy.wait(TIMEOUTS.HALF_SEC).getLastPostId().then((postId) => { cy.get(`#post_${postId}`).within(() => { cy.get(`#postMessageText_${postId}`).contains(message); @@ -574,7 +576,7 @@ function verifyPostedMessage(message) { } Cypress.Commands.add('verifyPostedMessage', verifyPostedMessage); -function verifyEphemeralMessage(message, isCompactMode, needsToScroll) { +function verifyEphemeralMessage(message: string, isCompactMode: boolean, needsToScroll: boolean) { if (needsToScroll) { // # Scroll the ephemeral message into view cy.get('#postListContent').within(() => { @@ -745,7 +747,7 @@ declare global { * @param {User[]} users - the users that should get the message * @param {String} message - the message to send */ - sendDirectMessageToUsers(users: User[], message: string): ChainableT; + sendDirectMessageToUsers(users: User[], message: string): ChainableT; /** * Click post time diff --git a/e2e-tests/cypress/tests/utils/config.js b/e2e-tests/cypress/tests/utils/config.js index 4f98359e789..858b7d0e394 100644 --- a/e2e-tests/cypress/tests/utils/config.js +++ b/e2e-tests/cypress/tests/utils/config.js @@ -3,7 +3,7 @@ export function getKeycloakServerSettings() { const baseUrl = Cypress.config('baseUrl'); - const {keycloakBaseUrl, keycloakAppName} = Cypress.env(); + const {keycloakBaseUrl, keycloakAppName} = Cypress.expose(); const idpDescriptorUrl = `${keycloakBaseUrl}/auth/realms/${keycloakAppName}`; const idpUrl = `${idpDescriptorUrl}/protocol/saml`; diff --git a/e2e-tests/cypress/tests/utils/email.js b/e2e-tests/cypress/tests/utils/email.js index c15a4537475..c788508ede0 100644 --- a/e2e-tests/cypress/tests/utils/email.js +++ b/e2e-tests/cypress/tests/utils/email.js @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. export function getEmailUrl() { - const smtpUrl = Cypress.env('smtpUrl') || 'http://localhost:9001'; + const smtpUrl = Cypress.expose('smtpUrl') || 'http://localhost:9001'; return `${smtpUrl}/api/v1/mailbox`; } diff --git a/e2e-tests/cypress/tests/utils/index.js b/e2e-tests/cypress/tests/utils/index.js index ea816be0e84..efb10b4401e 100644 --- a/e2e-tests/cypress/tests/utils/index.js +++ b/e2e-tests/cypress/tests/utils/index.js @@ -44,7 +44,7 @@ export function getMessageMenusPayload({dataSource, options, prefix = Date.now() } } - const callbackUrl = Cypress.env().webhookBaseUrl + '/message_menus'; + const callbackUrl = Cypress.expose().webhookBaseUrl + '/message_menus'; data.attachments[0].actions[0].integration.url = callbackUrl; return data; diff --git a/e2e-tests/cypress/tsconfig.json b/e2e-tests/cypress/tsconfig.json index 9de88dcc488..ce457e77ce5 100644 --- a/e2e-tests/cypress/tsconfig.json +++ b/e2e-tests/cypress/tsconfig.json @@ -5,11 +5,13 @@ "types": ["cypress", "cypress-wait-until", "cypress-real-events", "@testing-library/cypress", "node"], "esModuleInterop": true, "resolveJsonModule": true, - "moduleResolution": "node", - "baseUrl": ".", + "moduleResolution": "bundler", + "paths": { + "@/*": ["./tests/*"] + }, "skipLibCheck": true, "allowJs": true, - "noEmit": true, + "noEmit": true }, "include": ["**/*.*"] }