From 97fb3150199218cac68cd625045867345d145ced Mon Sep 17 00:00:00 2001 From: Johnson Cherian Date: Tue, 10 Dec 2024 12:21:34 +0530 Subject: [PATCH] Appbuilder sprint 5 merge main (#11573) * statement timeout for postgresql mssql mysql can now be configured from env * Enhance: Add clear all, cancel & apply functionality to TJDB filter-popup (#2344) * Update filter inputs * Update filter body * Style fixes * Handle invalid filters * Fix bugs * Feature: Add list all sheets and create new spreadsheet operation to GoogleSheets (#2370) * Add create spreadsheet functionality * Add list all sheets functionality * Updated delete and batch-update methods * Change interface to type * Enhance: Add read documentation link with data source drop down in query builder (#2162) * Add read-documentation link * Change copywriting for datasources name * Update new component for link * Increase input width Update redshift link * Fix the datasource name issue * Enhance: Improve error handling in Google-Sheets run query (#2286) * Add error details * Display error for incorrect JSON * Throw error for empty spreadsheetid and operator * Enhance: Error handling for PgSql, MySql and MsSql (#2389) * Enhance error handling for pgsql * Enhance error handling for mysql * Remove console logs * Enhance error handling for MsSql * Refactor error handling for consistency * Enhance: Rest api body to accept raw input instead of raw json. (#2249) * Enhanced rest api body to accept raw input instead of raw json. * Changed content type from application/json to text/json and changed copywrite to RAW. * Changed rest api body toggle label from 'RAW' to 'Raw'. * Added request label for static REST API data source. * Fixed issue where GET query failed since body was undefined. * Integrated json_body to add backward compatibility. * Removed console logs. * Added support for 'text/json' type in checkIfContentTypeIsJson function. * Made changes according to new frontend architecture in v3. * Fixed request URL field overflow issue. --------- Co-authored-by: Akshay Sasidharan * Feature: Add SSL support to MongoDB datasource (#2430) * Add TLS support inputs in frontend * Add backend logic for TLS support * Add TLS inputs types * Update TLS label * Change ssl_certificate to tls_certificate * Update the file handling in tls * Update connection logic * Fix unlinking file issue * Remove catch block for unlinking file * Handle tls certs directly * Feature: Stripe plugin UI fixes with OpenAPI endpoint as source (#2725) * Fixed GET and DELETE request input renders and added all UX fixes (#9498) * fixed get and delete request input renders and added all UX fixes * Extracted Stripe plugin component as a separate component for Dynamic Form. * Resolved PR review comments and fixed issue where rendering path input field crashed the app. * Changed param name underline to dashed for tooltip and revamped input field clear button * Fixed a few sonarlint issues. * Removed the duplicate code by creating a separate function named RenderParameterFields. * Refactored computeOperationSelectionOptions function to not nest functions more than 4 levels deep. * Refactored RenderParameterFields function to reduce its Cognitive Complexity. * Made span tag with the 'button' interactive role focusable. * Inside switch case for codehinter in DynamicForm > getElementProps, Extracted nested ternary operation for theme into an independent statement. * Added keyboard listener to the clear button. * Removed opacity from select dropdown and operation from operation select dropdown UI. * Fixed syntax error in clearButton function. * Removed the package @nrwl/nx-linux-x64-gnu from marketplace dependencies. --------- Co-authored-by: Mansukh Kaur Co-authored-by: Devanshu Rastogi * Made changes according to new app builder architecture in v3. * Fixed import issue for codehintor * Fixed issue where due to incorrect value, stripe queries crashed the entire app. --------- Co-authored-by: Mansukh Kaur Co-authored-by: Devanshu Rastogi * Enhance: Improve error handling in Airtable run query (#2234) * Refactor error handling to streamline QueryError messages * Handle 404 errors * Enhance: Add AI-tag to datasources in marketplace page (#2597) * Add AI-tag to datasources in marketplace page * AI BANNER Tag * margin * Refactor tag rendering logic for marketplace page * Refactor tag rendering for datasource page * Refactor import and props * Remove ai prefix and fix indentations * Make custom hook for fetching plugins.json * Add AI tag on installed page * Marketplace page UI fix and add a plugin button fixes * Add AI tag on datasource connection form Change classname * Fix svg flickering * Fix svg chipping issue * Push AI tag to extreme right --------- Co-authored-by: Rudra * Fix: Api call for token generation in client-credentials grant type (#2785) * fix: query kind for select source in rest api * Fix: ToolJet database limit check API issue (#11416) * bump to v3.0.5-ce * Added data-cy for newly added components (#11435) * Modified failed Platform cypress test cases for Tooljet V3 (#11486) * Modify platform cypress test cases * Added cypress test cases for user onboarding flow (#11499) * Add data-cy for newly added components * Add data-cy for onboarding page elements * Modify failed test cases * Adding more cases * Modify onboarding test cases * Modify user invite flow * chnages on onboarding test scripts * revert the changes * revert the changes * removed .only form profile file * resolved review changes --------- Co-authored-by: ajith-k-v Co-authored-by: Sri mani Teja s * fix: Fixes broken loading state for container * update cypress workflow for subpath * Add data-cy for workspace constants components (#11530) * fix table down load event not showing up * Hotfix: The build failed to include the reference file for custom validation of the ToolJet database schema. (#11490) * tooljet database schema custom validation reference file was not included in the build * fix: missed a dependency for copyfiles * change version to 3.1.0 --------- Co-authored-by: Ganesh Kumar Co-authored-by: Parth <108089718+parthy007@users.noreply.github.com> Co-authored-by: Devanshu Rastogi Co-authored-by: Akshay Sasidharan Co-authored-by: Mansukh Kaur Co-authored-by: Rudra Co-authored-by: Vijaykant Yadav Co-authored-by: Ganesh Kumar <40178541+ganesh8056@users.noreply.github.com> Co-authored-by: Ajith KV Co-authored-by: Adish M <44204658+adishM98@users.noreply.github.com> Co-authored-by: Srimanitejas123 Co-authored-by: Sri mani Teja s Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com> Co-authored-by: Kartik Gupta --- .github/workflows/cypress-platform.yml | 2 +- .version | 2 +- cypress-tests/cypress.config.js | 2 +- cypress-tests/cypress/commands/apiCommands.js | 156 +- cypress-tests/cypress/commands/commands.js | 31 +- .../cypress/constants/selectors/common.js | 72 +- .../cypress/constants/selectors/dashboard.js | 2 +- .../cypress/constants/selectors/manageSSO.js | 4 +- .../constants/selectors/manageUsers.js | 5 +- .../cypress/constants/selectors/onboarding.js | 20 + .../cypress/constants/texts/common.js | 36 +- .../platform/ceTestcases/editor/appSlug.cy.js | 2 +- .../editor/privateAndPublicApp.cy.js | 86 +- .../ceTestcases/selfHost/selfHostSignUp.cy.js | 166 -- .../authentication/forgotPassword.cy.js | 183 -- .../authentication/login.cy.js | 85 - .../authentication/signUp.cy.js | 104 - .../commonTestcases/userManagment/Login.cy.js | 88 + .../userManagment/Signup.cy.js | 90 + .../UserInviteFlow.cy.js} | 251 +- .../bulkUsersUpload.cy.js} | 121 +- .../userManagment/firstUserOnboarding.cy.js | 84 + .../userManagment/resetPassword.cy.js | 187 ++ .../commonTestcases/workspace/dashboard.cy.js | 37 +- .../commonTestcases/workspace/errorPage.cy.js | 25 +- .../workspace/inviteflow.cy.js | 149 - .../commonTestcases/workspace/profile.cy.js | 18 +- .../fixtures/bulkUser/10usersupload.csv | 11 + .../bulkUser/500_invite_users - Sheet1.csv | 751 ++--- .../empty_first_and_last_name - Sheet1.csv | 12 +- .../bulkUser/invalid_group_name - Sheet1.csv | 15 +- .../bulkUser/invite_users - Sheet1 .csv | 502 ++-- .../bulkUser/multiple_groups - Sheet1.csv | 14 +- .../bulkUser/non_existing_group -Sheet1 .csv | 254 +- .../fixtures/bulkUser/same_email - Sheet1.csv | 10 +- .../bulkUser/without_email - Sheet1.csv | 23 +- .../bulkUser/without_firstname - Sheet1.csv | 10 +- .../bulkUser/without_group - Sheet1.csv | 12 +- .../bulkUser/without_lastname - Sheet1.csv | 17 +- .../bulkUser/without_name - Sheet1.csv | 23 +- .../cypress/support/utils/dashboard.js | 6 +- .../cypress/support/utils/manageSSO.js | 20 +- .../cypress/support/utils/manageUsers.js | 24 +- .../cypress/support/utils/onboarding.js | 93 +- .../cypress/support/utils/selfHostSignUp.js | 28 +- cypress-tests/package-lock.json | 2444 ++++++----------- cypress-tests/package.json | 2 +- frontend/.version | 2 +- frontend/assets/images/icons/ai-tag.svg | 9 + .../Components/QueryManagerBody.jsx | 20 +- .../QueryEditors/Restapi/TabBody.jsx | 10 +- .../QueryEditors/Restapi/TabContent.jsx | 10 +- .../QueryEditors/Restapi/Tabs.jsx | 9 +- .../QueryEditors/Restapi/index.jsx | 27 +- .../QueryManager/QueryEditors/Stripe.jsx | 392 --- .../QueryManager/QueryEditors/index.js | 2 - frontend/src/AppBuilder/Widgets/Container.jsx | 2 +- .../DataSourceManager/DataSourceManager.jsx | 135 +- .../Components/QueryManagerBody.jsx | 53 +- .../QueryEditors/Restapi/TabBody.jsx | 10 +- .../QueryEditors/Restapi/TabContent.jsx | 10 +- .../QueryEditors/Restapi/Tabs.jsx | 9 +- .../QueryEditors/Restapi/index.jsx | 64 +- .../QueryManager/QueryEditors/Stripe.jsx | 381 --- .../Editor/QueryManager/QueryEditors/index.js | 2 - .../src/Editor/WidgetManager/configs/table.js | 1 + .../GlobalDataSourcesPage/index.jsx | 71 +- .../src/ManageOrgConstants/ConstantForm.jsx | 18 +- .../src/ManageOrgConstants/ConstantTable.jsx | 2 +- .../src/ManageOrgConstants/EmptyState.jsx | 2 +- .../ManageOrgConstants/ManageOrgConstants.jsx | 2 +- .../src/ManageOrgUsers/InviteUsersForm.jsx | 10 +- .../src/MarketplacePage/InstalledPlugins.jsx | 22 +- .../src/MarketplacePage/MarketplaceCard.jsx | 19 +- .../MarketplacePage/MarketplacePlugins.jsx | 2 +- frontend/src/MarketplacePage/utils.js | 22 + frontend/src/TooljetDatabase/Filter/index.jsx | 266 +- .../src/TooljetDatabase/Filter/styles.scss | 72 + .../src/TooljetDatabase/Forms/FilterForm.jsx | 71 +- .../src/TooljetDatabase/Forms/styles.scss | 88 + frontend/src/TooljetDatabase/Table/Header.jsx | 4 +- frontend/src/_components/ApiEndpointInput.jsx | 361 +++ frontend/src/_components/DynamicForm.jsx | 27 +- .../_components/OrganizationManager/List.jsx | 4 +- frontend/src/_helpers/utils.js | 3 +- frontend/src/_styles/global-datasources.scss | 37 +- frontend/src/_styles/queryManager.scss | 16 + frontend/src/_styles/theme.scss | 74 +- frontend/src/_ui/AiBanner.jsx | 12 + frontend/src/_ui/AppButton/AppButton.scss | 5 + frontend/src/_ui/Card/Card.jsx | 5 +- frontend/src/_ui/Icon/solidIcons/AITag.jsx | 34 + frontend/src/_ui/Icon/solidIcons/index.js | 3 + frontend/src/_ui/Select/SelectComponent.jsx | 3 +- frontend/src/_ui/Select/styles.js | 3 +- .../ForgotPasswordInfoScreen.jsx | 8 +- .../components/LoginForm/LoginForm.jsx | 2 +- .../ResetPasswordInfoScreen.jsx | 4 +- .../FormDescription/FormDescription.jsx | 4 +- .../components/FormHeader/FormHeader.jsx | 11 +- .../FormTextInput/FormTextInput.jsx | 13 +- .../GeneralFeatureImage.jsx | 2 +- .../PasswordInput/PasswordInput.jsx | 4 +- .../resources/images/eyeclose.svg | 2 +- .../resources/images/eyeopen.svg | 2 +- .../SSOButtonWrapper/SSOButtonWrapper.jsx | 8 +- .../components/SubmitButton/SubmitButton.jsx | 4 +- .../OnboardingFormWrapper.jsx | 2 +- .../SignupSuccessInfo/SignupSuccessInfo.jsx | 12 +- .../ResendVerificationEmail.jsx | 3 +- marketplace/plugins/awsredshift/README.md | 2 +- plugins/packages/airtable/lib/index.ts | 22 +- plugins/packages/common/lib/index.ts | 2 + plugins/packages/common/lib/oauth.ts | 30 +- plugins/packages/googlesheets/lib/index.ts | 31 +- .../packages/googlesheets/lib/operations.json | 32 + .../packages/googlesheets/lib/operations.ts | 77 +- plugins/packages/googlesheets/lib/types.ts | 1 + plugins/packages/mongodb/lib/index.ts | 30 +- plugins/packages/mongodb/lib/manifest.json | 114 +- plugins/packages/mongodb/lib/types.ts | 4 + plugins/packages/mssql/lib/index.ts | 20 +- plugins/packages/mysql/lib/index.ts | 19 +- plugins/packages/postgresql/lib/index.ts | 16 +- plugins/packages/restapi/lib/index.ts | 42 +- plugins/packages/stripe/lib/operations.json | 17 +- server/.version | 2 +- server/package.json | 9 +- server/src/assets/marketplace/plugins.json | 9 +- .../abilities/tooljet-db-ability.factory.ts | 2 +- server/tsconfig.json | 1 + 131 files changed, 4444 insertions(+), 4804 deletions(-) create mode 100644 cypress-tests/cypress/constants/selectors/onboarding.js delete mode 100644 cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/selfHost/selfHostSignUp.cy.js delete mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/forgotPassword.cy.js delete mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/login.cy.js delete mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/signUp.cy.js create mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Login.cy.js create mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Signup.cy.js rename cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/{workspace/manageUsers.cy.js => userManagment/UserInviteFlow.cy.js} (63%) rename cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/{workspace/bulkUserUpload.cy.js => userManagment/bulkUsersUpload.cy.js} (54%) create mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/firstUserOnboarding.cy.js create mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/resetPassword.cy.js delete mode 100644 cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/inviteflow.cy.js create mode 100644 cypress-tests/cypress/fixtures/bulkUser/10usersupload.csv create mode 100644 frontend/assets/images/icons/ai-tag.svg delete mode 100644 frontend/src/AppBuilder/QueryManager/QueryEditors/Stripe.jsx delete mode 100644 frontend/src/Editor/QueryManager/QueryEditors/Stripe.jsx create mode 100644 frontend/src/TooljetDatabase/Filter/styles.scss create mode 100644 frontend/src/_components/ApiEndpointInput.jsx create mode 100644 frontend/src/_ui/AiBanner.jsx create mode 100644 frontend/src/_ui/Icon/solidIcons/AITag.jsx diff --git a/.github/workflows/cypress-platform.yml b/.github/workflows/cypress-platform.yml index 6c91a3f420..4a6ec576e2 100644 --- a/.github/workflows/cypress-platform.yml +++ b/.github/workflows/cypress-platform.yml @@ -212,7 +212,7 @@ jobs: uses: jsdaniell/create-json@1.1.2 with: name: "cypress.env.json" - json: ${{ secrets.CYPRESS_SECRETS }} + json: ${{ secrets.CYPRESS_SECRETS_SUBPATH }} dir: "./cypress-tests" - name: Platform-subpath diff --git a/.version b/.version index 534a73f180..7f73218cc7 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -3.2.4-ce +3.2.0-ce diff --git a/cypress-tests/cypress.config.js b/cypress-tests/cypress.config.js index 3ec3595644..aa0ca26b45 100644 --- a/cypress-tests/cypress.config.js +++ b/cypress-tests/cypress.config.js @@ -82,7 +82,7 @@ module.exports = defineConfig({ experimentalModfyObstructiveThirdPartyCode: true, experimentalRunAllSpecs: true, baseUrl: "http://localhost:8082", - specPattern: "cypress/e2e/happyPath/platform/commonTestcases/**/*.cy.js", + specPattern: "cypress/e2e/happyPath/platform/**/**/*.cy.js", downloadsFolder: "cypress/downloads", numTestsKeptInMemory: 0, redirectionLimit: 10, diff --git a/cypress-tests/cypress/commands/apiCommands.js b/cypress-tests/cypress/commands/apiCommands.js index 5c712323d2..1550811497 100644 --- a/cypress-tests/cypress/commands/apiCommands.js +++ b/cypress-tests/cypress/commands/apiCommands.js @@ -7,7 +7,7 @@ Cypress.Commands.add( redirection = "/" ) => { cy.request({ - url: `http://localhost:3000/api/authenticate/${workspaceId}`, + url: `${Cypress.env("server_host")}/api/authenticate/${workspaceId}`, method: "POST", body: { email: userEmail, @@ -69,7 +69,7 @@ Cypress.Commands.add("apiCreateApp", (appName = "testApp") => { Cypress.env("authToken", `tj_auth_token=${cookie.value}`); cy.request({ method: "POST", - url: "http://localhost:3000/api/apps", + url: `${Cypress.env("server_host")}/api/apps`, headers: { "Tj-Workspace-Id": Cypress.env("workspaceId"), Cookie: `tj_auth_token = ${cookie.value}`, @@ -103,7 +103,7 @@ Cypress.Commands.add("apiDeleteApp", (appId = Cypress.env("appId")) => { cy.request( { method: "DELETE", - url: `http://localhost:3000/api/apps/${Cypress.env("appId")}`, + url: `${Cypress.env("server_host")}/api/apps/${Cypress.env("appId")}`, headers: { "Tj-Workspace-Id": Cypress.env("workspaceId"), Cookie: Cypress.env("authToken"), @@ -140,7 +140,7 @@ Cypress.Commands.add("apiCreateWorkspace", (workspaceName, workspaceSlug) => { cy.request( { method: "POST", - url: "http://localhost:3000/api/organizations", + url: `${Cypress.env("server_host")}/api/organizations`, headers: { "Tj-Workspace-Id": Cypress.env("workspaceId"), Cookie: `tj_auth_token=${cookie.value}`, @@ -162,7 +162,7 @@ Cypress.Commands.add("logoutApi", () => { cy.request( { method: "GET", - url: "http://localhost:3000/api/logout", + url: `${Cypress.env("server_host")}/api/logout`, headers: { "Tj-Workspace-Id": Cypress.env("workspaceId"), Cookie: `tj_auth_token=${cookie.value}`, @@ -180,7 +180,7 @@ Cypress.Commands.add("userInviteApi", (userName, userEmail) => { cy.request( { method: "POST", - url: "http://localhost:3000/api/organization_users", + url: `${Cypress.env("server_host")}/api/organization_users`, headers: { "Tj-Workspace-Id": Cypress.env("workspaceId"), Cookie: `tj_auth_token=${cookie.value}`, @@ -207,7 +207,7 @@ Cypress.Commands.add("addQueryApi", (queryName, query, dataQueryId) => { }; cy.request({ method: "PATCH", - url: `http://localhost:3000/api/data_queries/${dataQueryId}`, + url: `${Cypress.env("server_host")}/api/data_queries/${dataQueryId}`, headers: headers, body: { name: queryName, @@ -234,7 +234,7 @@ Cypress.Commands.add( cy.request({ method: "GET", - url: `http://localhost:3000/api/apps/${appId}`, + url: `${Cypress.env("server_host")}/api/apps/${appId}`, headers: { "Tj-Workspace-Id": workspaceId, Cookie: `${authToken}; app_id=${appId}`, @@ -246,7 +246,7 @@ Cypress.Commands.add( cy.request({ method: "POST", - url: "http://localhost:3000/api/data_queries", + url: `${Cypress.env("server_host")}/api/data_queries`, headers: { "Content-Type": "application/json", Cookie: authToken, @@ -273,3 +273,141 @@ Cypress.Commands.add( }); } ); + + +// Cypress.Commands.add("addComponentToApp", (appName, componentName, layoutConfig = {}) => { + + +// cy.task("updateId", { +// dbconfig: Cypress.env("app_db"), +// sql: `select id from apps where name='${appName}';`, +// }).then((resp) => { +// appId = resp.rows[0]id; + + +// // Default layout values +// const defaultLayout = { +// desktop: { top: 90, left: 9, width: 6, height: 40 }, +// mobile: { top: 90, left: 9, width: 6, height: 40 }, +// }; + +// // Merge default layout with the provided configuration +// const layouts = { +// desktop: { ...defaultLayout.desktop, ...layoutConfig.desktop }, +// mobile: { ...defaultLayout.mobile, ...layoutConfig.mobile }, +// }; + +// cy.getCookie("tj_auth_token", { log: false }).then((cookie) => { +// Cypress.env("authToken", `tj_auth_token=${cookie.value}`); + +// cy.request({ +// method: "GET", +// url: `${Cypress.env("server_host")}/api/v2/apps/${appId}`, +// headers: { +// "Tj-Workspace-Id": Cypress.env("workspaceId"), +// Cookie: `tj_auth_token=${cookie.value}`, +// }, +// }).then((response) => { +// expect(response.status).to.eq(200); + +// const { id: editingVersionId, home_page_id: homePageId } = response.body.editing_version; +// const componentId = crypto.randomUUID ? crypto.randomUUID() : require("uuid").v4(); + +// const requestBody = { +// is_user_switched_version: false, +// pageId: homePageId, +// diff: { +// [componentId]: { +// name: componentName, +// layouts: layouts, +// type: "Text", +// }, +// }, +// }; + +// cy.request({ +// method: "POST", +// url: `${Cypress.env("server_host")}/api/v2/apps/$${appId}/versions/${editingVersionId}/components`, +// headers: { +// "Content-Type": "application/json", +// "Tj-Workspace-Id": Cypress.env("workspaceId"), +// Cookie: `tj_auth_token=${cookie.value}`, +// }, +// body: requestBody, +// }).then((postResponse) => { +// expect(postResponse.status).to.eq(201); +// cy.log(`Component ${componentId} added successfully`); +// }); +// }); +// }); +// }); +// }); + +Cypress.Commands.add("addComponentToApp", (appName, componentName, layoutConfig = {}) => { + cy.task("updateId", { + dbconfig: Cypress.env("app_db"), + sql: `select id from apps where name='${appName}';`, + }).then((resp) => { + const appId = resp.rows[0]?.id; // Safely access the id field + + if (!appId) { + throw new Error(`App ID not found for appName: ${appName}`); + } + + // Default layout values + const defaultLayout = { + desktop: { top: 90, left: 9, width: 6, height: 40 }, + mobile: { top: 90, left: 9, width: 6, height: 40 }, + }; + + // Merge default layout with the provided configuration + const layouts = { + desktop: { ...defaultLayout.desktop, ...layoutConfig.desktop }, + mobile: { ...defaultLayout.mobile, ...layoutConfig.mobile }, + }; + + cy.getCookie("tj_auth_token", { log: false }).then((cookie) => { + Cypress.env("authToken", `tj_auth_token=${cookie.value}`); + + cy.request({ + method: "GET", + url: `${Cypress.env("server_host")}/api/v2/apps/${appId}`, + headers: { + "Tj-Workspace-Id": Cypress.env("workspaceId"), + Cookie: `tj_auth_token=${cookie.value}`, + }, + }).then((response) => { + expect(response.status).to.eq(200); + + const { id: editingVersionId, home_page_id: homePageId } = response.body.editing_version; + const componentId = crypto.randomUUID ? crypto.randomUUID() : require("uuid").v4(); + + const requestBody = { + is_user_switched_version: false, + pageId: homePageId, + diff: { + [componentId]: { + name: componentName, + layouts: layouts, + type: "Text", + }, + }, + }; + + cy.request({ + method: "POST", + url: `${Cypress.env("server_host")}/api/v2/apps/${appId}/versions/${editingVersionId}/components`, + headers: { + "Content-Type": "application/json", + "Tj-Workspace-Id": Cypress.env("workspaceId"), + Cookie: `tj_auth_token=${cookie.value}`, + }, + body: requestBody, + }).then((postResponse) => { + expect(postResponse.status).to.eq(201); + cy.log(`Component ${componentId} added successfully`); + }); + }); + }); + }); +}); diff --git a/cypress-tests/cypress/commands/commands.js b/cypress-tests/cypress/commands/commands.js index 72914c8fa6..3e67b73bc3 100644 --- a/cypress-tests/cypress/commands/commands.js +++ b/cypress-tests/cypress/commands/commands.js @@ -5,16 +5,23 @@ import { commonText, createBackspaceText } from "Texts/common"; import { passwordInputText } from "Texts/passwordInput"; import { importSelectors } from "Selectors/exportImport"; import { importText } from "Texts/exportImport"; +import { onboardingSelectors } from "Selectors/onboarding"; Cypress.Commands.add( - "login", + "appUILogin", (email = "dev@tooljet.io", password = "password") => { cy.visit("/"); - cy.clearAndType(commonSelectors.workEmailInputField, email); - cy.clearAndType(commonSelectors.passwordInputField, password); - cy.get(commonSelectors.signInButton).click(); - cy.wait(2000); - cy.get(commonSelectors.homePageLogo).should("be.visible"); + cy.wait(3000); + cy.clearAndType(onboardingSelectors.loginEmailInput, email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, password); + cy.get(onboardingSelectors.signInButton).click(); + + cy.intercept("GET", "api/library_apps").as( + "library_apps" + ); + cy.get(commonSelectors.homePageLogo, { timeout: 10000 }); + cy.wait("@library_apps"); + } ); @@ -90,14 +97,6 @@ Cypress.Commands.add( } ); -Cypress.Commands.add("appUILogin", () => { - cy.visit("/"); - cy.clearAndType(commonSelectors.workEmailInputField, "dev@tooljet.io"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.signInButton).click(); - cy.wait(2000); - cy.get(commonSelectors.homePageLogo).should("be.visible"); -}); Cypress.Commands.add( "clearAndTypeOnCodeMirror", @@ -365,11 +364,11 @@ Cypress.Commands.add("getPosition", (componentName) => { Cypress.Commands.add("defaultWorkspaceLogin", () => { cy.apiLogin(); - cy.intercept("GET", "http://localhost:3000/api/library_apps").as( + cy.intercept("GET", "/api/library_apps").as( "library_apps" ); cy.visit("/my-workspace"); - cy.get(commonSelectors.homePageLogo, { timeout: 10000 }); + // cy.get(commonSelectors.homePageLogo, { timeout: 10000 }); cy.wait("@library_apps"); }); diff --git a/cypress-tests/cypress/constants/selectors/common.js b/cypress-tests/cypress/constants/selectors/common.js index e9b118fa11..14cc83b2fa 100644 --- a/cypress-tests/cypress/constants/selectors/common.js +++ b/cypress-tests/cypress/constants/selectors/common.js @@ -5,10 +5,10 @@ export const cyParamName = (paramName = "") => { export const commonSelectors = { toastMessage: ".go3958317564", oldToastMessage: ".go318386747", - newToastMessage: - '.drawer-container > [style="position: fixed; z-index: 9999; inset: 16px; pointer-events: none;"] > .go4109123758 > .go2072408551', + newToastMessage: '.drawer-container > [style="position: fixed; z-index: 9999; inset: 16px; pointer-events: none;"] > .go4109123758 > .go2072408551 > .go3958317564', toastCloseButton: '[data-cy="toast-close-button"]', editButton: "[data-cy=edit-button]", + fileSelector: "[data-cy=uploaded-file-data]", searchField: "[data-cy='widget-search-box-search-bar']", firstWidget: "[data-cy=widget-list]:eq(0)", canvas: "[data-cy=real-canvas]", @@ -21,9 +21,9 @@ export const commonSelectors = { workEmailLabel: '[data-cy="work-email-label"]', workEmailInputField: "[data-cy=work-email-input]", emailInputError: '[data-cy="email-error-message"]', - passwordLabel: '[data-cy="password-label"]', + passwordLabel: '[data-cy="password-input-label"]', forgotPasswordLink: '[data-cy="forgot-password-link"]', - passwordInputField: '[data-cy="password-input-field"]', + passwordInputField: '[data-cy="password-input-input"]', signInButton: "[data-cy=login-button]", loginButton: '[data-cy="login-button"]', dropdown: "[data-cy=workspace-dropdown]", @@ -63,20 +63,21 @@ export const commonSelectors = { workspaceLoginUrl: "[data-cy=workspace-login-url]", workspaceName: '[data-cy="workspace-name"]:eq(0)', signInHeader: '[data-cy="sign-in-header"]', - signInSubHeader: '[data-cy="sign-in-sub-header"]', + signInSubHeader: '[data-cy="signup-info"]', createAnAccountLink: '[data-cy="create-an-account-link"]', - SignUpSectionHeader: '[data-cy="signup-section-header"]', + signUpSectionHeader: '[data-cy="sign-up-header"]', signInRedirectText: '[data-cy="signin-redirect-text"]', - signInRedirectLink: '[data-cy="signin-redirect-link"]', + signInRedirectLink: '[data-cy="signin-link"]', signUpTermsHelperText: '[data-cy="signup-terms-helper"]', termsOfServiceLink: '[data-cy="terms-of-service-link"]', privacyPolicyLink: '[data-cy="privacy-policy-link"]', redirectURL: '[data-cy="redirect-url"]', - invitePageHeader: '[data-cy="invite-page-header"]', - invitePageSubHeader: '[data-cy="invite-page-sub-header"]', + invitePageHeader: '[data-cy="join-my-workspace-header"]', + invitePageSubHeader: '[data-cy="onboarding-page-description"]', userNameInputLabel: '[data-cy="name-input-label"]', - invitedUserName: '[data-cy="invited-user-name"]', - invitedUserEmail: '[data-cy="invited-user-email"]', + invitedUserName: '[data-cy="name-input-input-value"]', + invitedUserEmail: '[data-cy="email-input-value"]', + invitedUseremail: '[data-cy="email-input-input-value"]', acceptInviteButton: '[data-cy="accept-invite-button"]', databaseIcon: '[data-cy="icon-database"]', profileSettings: '[data-cy="profile-settings"]', @@ -108,6 +109,9 @@ export const commonSelectors = { exportAllButton: '[data-cy="export-all-button"]', avatarImage: '[data-cy="avatar-image"]', selfHostSetUpBanner: '[data-cy="setup-banner-inner"]', + HostBanner: '[data-cy="onboarding-image"]', + adminSetup: '[data-cy="set-up-your-admin-account-header"]', + signupTerms: '[data-cy="signup-terms-helper"]', selfHostSetUpSubBanner: '[data-cy="setup-sub-banner"]', selfHostSetUpCard: '[data-cy="setup-card"]', selfHostSetUpCardImage: '[data-cy="setup-card-image"]', @@ -115,52 +119,58 @@ export const commonSelectors = { selfHostSetUpCardSubHeader: '[data-cy="setup-card-sub-header"]', setUpToolJetButton: '[data-cy="setup-tooljet-button"]', setUpadminCheckPoint: '[data-cy="set-up-admin-check-point"]', - setUpworkspaceCheckPoint: '[data-cy="set-up-workspace-check-point"]', + setUpworkspaceCheckPoint: '[data-cy="set-up-your-workspace!-header"]', companyProfileCheckPoint: '[data-cy="company-profile-check-point"]', onboardingPageHeader: '[data-cy="onboarding-page-header"]', onboardingPageSubHeader: '[data-cy="onboarding-page-sub-header"]', onboardingPageDescription: '[data-cy="onboarding-page-description"]', - passwordHelperText: '[data-cy="password-helper-text"]', + passwordHelperText: '[data-cy="new-password-input-hint"]', continueButton: '[data-cy="continue-button"]', + passwordHelperTextSignup: '[data-cy="password-input-hint"]', + continueButton: '[data-cy="sign-up-button"]', + OnbordingContinue: '[data-cy="onboarding-submit-button"]', userAccountNameAvatar: '[data-cy="user-account-name-avatar"]', - workspaceNameInputLabel: '[data-cy="workspace-name-input-label"]', - workspaceNameInputField: '[data-cy="workspace-name-input-field"]', + workspaceNameInputLabel: '[data-cy="onboarding-workspace-name-label"]', + workspaceNameInputField: '[data-cy="onboarding-workspace-name-input"]', backArrow: '[data-cy="back-arrow"]', backArrowText: '[data-cy="back-arrow-text"]', onboardingPorgressBubble: '[data-cy="onboarding-progress-bubbles"]', skipArrow: '[data-cy="skip-button"]', skipArrowText: '[data-cy="skip-arrow-text"]', companyNameInputField: '[data-cy="company-name-input-field"]', - nameInputField: '[data-cy="name-input-field"]', - emailInputField: '[data-cy="email-input-field"]', + nameInputField: '[data-cy="name-input-input"]', + emailInputField: '[data-cy="email-input-input"]', + skipbutton: '[class="driver-close-btn"]', + backLogo: '[data-cy="editor-page-logo"]', + backtoapps: '[data-cy="back-to-app-option"]', signUpButton: '[data-cy="sign-up-button"]', emailImage: '[data-cy="email-image"]', - spamMessage: '[data-cy="email-page-spam-msg"]', - resendEmailButton: '[data-cy="resend-email-button"]', + spamMessage: '[data-cy="info-message"]', + resendEmailButton: '[data-cy="resend-verification-email-button"]', editEmailButton: '[data-cy="edit-email-button"]', createAccountCheckMark: '[data-cy="create-account-check-mark"]', createAccountCheckPoint: '[data-cy="create-account-check-point"]', verifyEmailCheckMark: '[data-cy="verify-email-check-mark"]', verifyEmailCheckPoint: '[data-cy="verify-email-check-point"]', backtoSignUpButton: '[data-cy="back-to-signup-button"]', - forgotPasswordPageHeader: '[data-cy="forgot-password-page-header"]', - forgotPasswordPageSubHeader: '[data-cy="forgot-password-sub-header"]', - resetPasswordLinkButton: '[data-cy="reset-password-link"]', + forgotPasswordPageHeader: '[data-cy="forgot-password-header"]', + forgotPasswordPageSubHeader: '[data-cy="signup-redirect-text"]', + resetPasswordLinkButton: '[data-cy="send-a-reset-link-button"]', enterIcon: '[data-cy="enter-icon"]', - passwordResetPageHeader: '[data-cy="reset-password-page-header"]', + passwordResetPageHeader: '[data-cy="reset-password-header"]', newPasswordInputLabel: '[data-cy="new-password-input-label"]', - newPasswordInputField: '[data-cy="new-password-input-field"]', + newPasswordInputField: '[data-cy="new-password-input-input"]', confirmPasswordInputFieldLabel: '[data-cy="confirm-password-input-label"]', - confirmPasswordInputField: '[data-cy="confirm-password-input-field"]', + confirmPasswordInputField: '[data-cy="confirm-password-input-input"]', resetPasswordButton: '[data-cy="reset-password-button"]', resetPasswordPageDescription: '[data-cy="reset-password-page-description"]', - backToLoginButton: '[data-cy="back-to-login-button"]', + backToLoginButton: '[data-cy="back-to-login"]', breadcrumbTitle: '[data-cy="app-header-label"]>>', breadcrumbPageTitle: '[data-cy="breadcrumb-page-title"]', - labelFullNameInput: '[data-cy="label-full-name-input-field"]', - inputFieldFullName: '[data-cy="input-field-full-name"]', - labelEmailInput: '[data-cy="label-email-input-field"]', - inputFieldEmailAddress: '[data-cy="input-field-email"]', + labelFullNameInput: '[data-cy="name-label"]', + inputFieldFullName: '[data-cy="name-input"]', + labelEmailInput: '[data-cy="email-label"]', + inputFieldEmailAddress: '[data-cy="email-input"]', closeButton: '[data-cy="close-button"]', emptyAppCreateButton: "[data-cy='button-new-app-from-scratch']", globalDataSourceIcon: '[data-cy="icon-global-datasources"]', @@ -212,7 +222,7 @@ export const commonSelectors = { return `[data-cy="${cyParamName(folderName)}-edit-folder-option"]`; }, inspectorPinIcon: '.d-flex > [data-cy="left-sidebar-inspector"]', - groupInputFieldLabel: '[data-cy="label-group-input-field"]', + groupInputFieldLabel: '[data-cy="user-group-label"]', pageSectionHeader: '[data-cy="dashboard-section-header"]', yesButton: '[data-cy="yes-button"]', diff --git a/cypress-tests/cypress/constants/selectors/dashboard.js b/cypress-tests/cypress/constants/selectors/dashboard.js index e9b2876008..d643ad8e51 100644 --- a/cypress-tests/cypress/constants/selectors/dashboard.js +++ b/cypress-tests/cypress/constants/selectors/dashboard.js @@ -16,7 +16,7 @@ export const dashboardSelector = { ManageSSO: "[data-cy=manage-sso]", userMenu: "[data-cy=user-menu]", profileLink: "[data-cy=profile-link]", - logoutLink: "[data-cy=logout-link]", + logoutLink: '[data-cy="logout-link"]', changeIconTitle: "[data-cy=change-icon-title]", appCardDefaultIcon: "[data-cy=app-card-apps-icon]", changeButton: "[data-cy=change-button]", diff --git a/cypress-tests/cypress/constants/selectors/manageSSO.js b/cypress-tests/cypress/constants/selectors/manageSSO.js index 1d2f48189a..f010a969a5 100644 --- a/cypress-tests/cypress/constants/selectors/manageSSO.js +++ b/cypress-tests/cypress/constants/selectors/manageSSO.js @@ -33,7 +33,7 @@ export const ssoSelector = { redirectUrl: "[data-cy=redirect-url]", googleTile: '[data-cy="google-sign-in-text"]', googleIcon: "[data-cy=google-sso-icon]", - googleSSOText: "[data-cy=google-sso-text]", + googleSSOText: "[data-cy=google-sso-button-text]", git: '[data-cy="github-sso-card"]', gitEnableToggle: '[data-cy="github-toggle-input"]', githubLabel: '[data-cy="github-label"]', @@ -43,7 +43,7 @@ export const ssoSelector = { gitTile: "[data-cy=git-tile]", gitIcon: "[data-cy=git-sso-icon]", gitSignInText: "[data-cy=git-sso-text]", - gitSSOText: "[data-cy=git-sso-text]", + gitSSOText: "[data-cy=git-sso-button-text]", password: "[data-cy=left-menu-items] :eq(3)", passwordEnableToggle: '[data-cy="password-enable-toggle"]', loginHelpText: "[data-cy=login-help-text]", diff --git a/cypress-tests/cypress/constants/selectors/manageUsers.js b/cypress-tests/cypress/constants/selectors/manageUsers.js index 4982e2d37d..db17f968fe 100644 --- a/cypress-tests/cypress/constants/selectors/manageUsers.js +++ b/cypress-tests/cypress/constants/selectors/manageUsers.js @@ -62,10 +62,7 @@ export const usersSelector = { inputFieldBulkUpload: '[data-cy="input-field-bulk-upload"]', copyInvitationLink: '[data-cy="copy-invitation-link"]', uploadedFileData: '[data-cy="uploaded-file-data"]', - toastCloseButton: - '.drawer-container > [style="position: fixed; z-index: 9999; inset: 16px; pointer-events: none;"] > .go4109123758 > .go2072408551 > [data-cy="toast-close-button"]', - - + toastCloseButton:'.drawer-container > [style="position: fixed; z-index: 9999; inset: 16px; pointer-events: none;"] > .go4109123758 > .go2072408551 > [data-cy="toast-close-button"]', userName: (userName) => { return `[data-cy="${cyParamName(userName)}-user-name"]`; }, diff --git a/cypress-tests/cypress/constants/selectors/onboarding.js b/cypress-tests/cypress/constants/selectors/onboarding.js new file mode 100644 index 0000000000..1f43250c3f --- /dev/null +++ b/cypress-tests/cypress/constants/selectors/onboarding.js @@ -0,0 +1,20 @@ +export const cyParamName = (paramName = "") => { + return paramName.toLowerCase().replace(/\s+/g, "-"); +}; + +export const onboardingSelectors = { + emailLabel: "[data-cy='email-label']", + emailInput: "[data-cy='email-input-input']", + signupEmailInput: "[data-cy='email-input']", + loginEmailInput: "[data-cy='email-input']", + passwordLabel: "[data-cy='password-label']", + passwordInput: "[data-cy='password-input-input']", + loginPasswordInput: "[data-cy='password-input']", + signInButton: "[data-cy='sign-in-button']", + passwordError: "[data-cy='password-error']", + nameInput: "[data-cy='name-input']", + nameLabel: '[data-cy="name-input-label"]', + signupNameLabel: '[data-cy="name-label"]', + forgotEmailInput: '[data-cy="email-input-field-input"]', + createAnAccountLink: '[data-cy="create-an-account-link"]', +} \ No newline at end of file diff --git a/cypress-tests/cypress/constants/texts/common.js b/cypress-tests/cypress/constants/texts/common.js index fc9d1b989a..a4d9549fd9 100644 --- a/cypress-tests/cypress/constants/texts/common.js +++ b/cypress-tests/cypress/constants/texts/common.js @@ -52,13 +52,14 @@ export const commonText = { }, closeButton: "modal close", workEmailLabel: "Email", - emailInputError: "Invalid Email", - passwordLabel: "Password", + emailInputError: "Email is invalid", + passwordLabel: "Password *", + LoginPasswordLabel: "Password", forgotPasswordLink: "Forgot?", loginButton: " Login", signInHeader: "Sign in", signInSubHeader: "New to ToolJet?Create an account", - SignUpSectionHeader: "Join ToolJet", + signUpSectionHeader: "Join ToolJet", signInRedirectText: "Already have an account?", signInRedirectLink: "Sign in", signUpTermsHelperText: "By signing up you are agreeing to the", @@ -67,11 +68,11 @@ export const commonText = { invitePageHeader: "Join My workspace", invitePageSubHeader: "You are invited to a workspace My workspace. Accept the invite to join the workspace.", - userNameInputLabel: "Name", - acceptInviteButton: "Accept invite", + userNameInputLabel: "Name *", + acceptInviteButton: "Accept Invite", createButton: "Create", saveChangesButton: "Save changes", - emailInputLabel: "Email", + emailInputLabel: "Email *", allApplicationLink: "All apps", notificationsCardTitle: "Notifications", emptyNotificationTitle: "You're all caught up!", @@ -86,7 +87,7 @@ export const commonText = { "Let’s set up your workspace to get started with ToolJet", setUpToolJetButton: "Set up ToolJet", setUpadminCheckPoint: "Set up admin", - setUpworkspaceCheckPoint: "Set up workspace", + setUpworkspaceCheckPoint: "Set up your workspace!", companyProfileCheckPoint: "Company profile", setUpAdminHeader: "Set up your admin account", onboardingPageSubHeader: "This information will help us improve ToolJet.", @@ -94,17 +95,18 @@ export const commonText = { continueButton: "Continue", resetPasswordButton: "Reset password", setUpWorkspaceHeader: "Set up your workspace", + loginPasswordLabel: "Password *", userRolePageHeader: "What best describes your role?", sizeOftheCompanyHeader: "What is the size of your company?", - workspaceNameInputLabel: "Workspace name", + workspaceNameInputLabel: "Workspace name *", onboardingSeperatorText: "OR", getStartedButton: "Get started for free", emailPageHeader: "Check your mail", - spamMessage: "Did not receive an email? Check your spam folder.", + spamMessage: "Did not receive an email? Check your spam folder!", resendEmailButton: "Resend verification mail", editEmailButton: "Edit email address", emailVerifiedText: "Successfully verified email", - continueToSetUp: "Continue to set up your workspace to start using ToolJet.", + continueToSetUp: "Set up workspaces to manage users, applications & resources across various teams", createAccountCheckPoint: "Create account", verifyEmailCheckPoint: "Verify email", inalidInvitationLinkHeader: "Invalid verification link", @@ -114,15 +116,15 @@ export const commonText = { forgotPasswordPageHeader: "Forgot Password", newToTooljetText: "New to ToolJet?", emailAddressLabel: "Email address", - resetPasswordLinkButton: " Send a reset link", + resetPasswordLinkButton: "Send a reset link", passwordResetEmailToast: - "Please check your email/inbox for the password reset link", + "Please check your email for the password reset link", passwordResetPageHeader: "Reset Password", passwordResetSuccessPageHeader: "Password has been reset", - newPasswordInputLabel: "New Password", - confirmPasswordInputFieldLabel: "Re-enter the password", + newPasswordInputLabel: "New Password *", + confirmPasswordInputFieldLabel: "Re-enter the password *", passwordResetSuccessToast: "Password reset successfully", - backToLoginButton: "Back to log in", + backToLoginButton: "Back to login", resetPasswordPageDescription: "Your password has been reset successfully, log into ToolJet to continue your session", labelFullNameInput: "Enter full name", @@ -135,13 +137,13 @@ export const commonText = { addNewDataSourceButton: "Add new datasource", emailPageDescription: (email) => { - return `We’ve sent an email to ${email} with a verification link. Please use that to verify your email address.`; + return `We've sent a verification email to ${email}. Click the link inside to confirm your email and continue. This helps us ensure account security.` }, companyPageHeader: (userName) => { return `Where do you work ${userName}?`; }, resetPasswordEmailDescription: (email) => { - return `We’ve sent an email to ${email} with a password reset link. Please click on that link to reset your password.`; + return `We've sent a password reset link to ${email}. Click the link inside to reset your password and continue.`; }, userJobRole: { HeadOfEngineering: "Head of engineering", diff --git a/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/appSlug.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/appSlug.cy.js index 157700f9e2..7e42e6c66c 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/appSlug.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/appSlug.cy.js @@ -88,7 +88,7 @@ describe("App slug", () => { ); cy.url().should( "eq", - `http://localhost:8082/my-workspace/apps/${data.slug}/home` + `http://localhost:8082/my-workspace/apps/${data.slug}` ); releaseApp(); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/privateAndPublicApp.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/privateAndPublicApp.cy.js index 4f3cfe3976..25fded78df 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/privateAndPublicApp.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/editor/privateAndPublicApp.cy.js @@ -14,6 +14,7 @@ import { addAppToGroup } from "Support/utils/manageGroups"; import { ssoSelector } from "Selectors/manageSSO"; import { fetchAndVisitInviteLink } from "Support/utils/manageUsers"; import { usersSelector } from "Selectors/manageUsers"; +import { onboardingSelectors } from "Selectors/onboarding"; describe( "App share functionality", @@ -26,7 +27,6 @@ describe( const data = {}; beforeEach(() => { cy.defaultWorkspaceLogin(); - // cy.removeAssignedApps(); cy.skipWalkthrough(); }); @@ -36,16 +36,19 @@ describe( cy.apiCreateApp(data.appName); cy.openApp(); - cy.dragAndDropWidget("Table", 250, 250); + cy.addComponentToApp(data.appName, "text1"); - verifyTooltip( - commonWidgetSelector.shareAppButton, - "Share URL is unavailable until current version is released" - ); - cy.get('[data-cy="share-button-link"]>span').should( - "have.class", - "share-disabled" - ); + //Need to automate with the new flow + + // verifyTooltip( + // commonWidgetSelector.shareAppButton, + // "Share URL is unavailable until current version is released" + // ); + + // cy.get('[data-cy="share-button-link"]>span').should( + // "have.class", + // "share-disabled" + // ); releaseApp(); cy.get(commonWidgetSelector.shareAppButton).click(); @@ -72,7 +75,7 @@ describe( logout(); cy.wait(4000); - cy.get(commonSelectors.loginButton, { timeout: 20000 }).should( + cy.get(onboardingSelectors.signInButton, { timeout: 20000 }).should( "be.visible" ); cy.visitSlug({ @@ -80,22 +83,22 @@ describe( }); cy.wait(3000); - cy.get(commonSelectors.loginButton, { timeout: 20000 }).should( + cy.get(onboardingSelectors.signInButton, { timeout: 20000 }).should( "be.visible" ); - cy.clearAndType(commonSelectors.workEmailInputField, "dev@tooljet.io"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.loginButton).click(); + cy.clearAndType(onboardingSelectors.emailInput, "dev@tooljet.io"); + cy.clearAndType(onboardingSelectors.passwordInput, "password"); + cy.get(onboardingSelectors.signInButton).click(); cy.wait(500); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(".text-widget-section > div").should("be.visible"); cy.get(commonSelectors.viewerPageLogo).click(); cy.openApp( "my-workspace", Cypress.env("appId"), - '[data-cy="draggable-widget-table1"]' + ".text-widget-section > div" ); cy.get(commonWidgetSelector.shareAppButton).click(); cy.get(commonWidgetSelector.makePublicAppToggle).check(); @@ -104,23 +107,22 @@ describe( logout(); cy.wait(4000); - cy.get(commonSelectors.loginButton, { timeout: 20000 }).should( + cy.get(onboardingSelectors.signInButton, { timeout: 20000 }).should( "be.visible" ); cy.visitSlug({ actualUrl: `http://localhost:8082/applications/${data.slug}`, }); cy.wait(3000); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(".text-widget-section > div").should("be.visible"); }); it("Verify app private and public app visibility for the same workspace user", () => { data.appName = `${fake.companyName} App`; data.slug = data.appName.toLowerCase().replace(/\s+/g, "-"); - cy.apiCreateApp(data.appName); cy.openApp(); - cy.dragAndDropWidget("Table", 250, 250); + cy.addComponentToApp(data.appName, "text1"); releaseApp(); cy.wait(1000); @@ -132,13 +134,13 @@ describe( cy.backToApps(); cy.visitSlug({ actualUrl: `/applications/${data.slug}` }); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(".text-widget-section > div").should("be.visible"); cy.defaultWorkspaceLogin(); cy.openApp( "my-workspace", Cypress.env("appId"), - '[data-cy="draggable-widget-table1"]' + ".text-widget-section > div" ); cy.wait(2000); cy.get(commonWidgetSelector.shareAppButton).click(); @@ -149,20 +151,21 @@ describe( logout(); cy.wait(4000); - cy.get(commonSelectors.loginButton, { timeout: 20000 }).should( + cy.get(onboardingSelectors.signInButton, { timeout: 20000 }).should( "be.visible" ); cy.visitSlug({ actualUrl: `/applications/${data.slug}` }); - cy.login("test@tooljet.com", "password"); + cy.appUILogin("test@tooljet.com", "password"); cy.get(commonSelectors.allApplicationLink).verifyVisibleElement( "have.text", commonText.allApplicationLink ); }); - it("Verify app private and public app visibility for the same instance user", () => { + //Fix the case after bug fix + it.skip("Verify app private and public app visibility for the same instance user", () => { data.firstName = fake.firstName; data.email = fake.email.toLowerCase(); data.appName = `${fake.companyName} App`; @@ -171,7 +174,8 @@ describe( cy.apiCreateApp(data.appName); cy.openApp(); - cy.dragAndDropWidget("Table", 250, 250); + cy.addComponentToApp(data.appName, "text1"); + releaseApp(); cy.wait(1000); @@ -183,13 +187,19 @@ describe( cy.logoutApi(); userSignUp(data.firstName, data.email, data.workspaceName); cy.wait(3000); + cy.backToApps(); + cy.wait(1000); cy.visitSlug({ actualUrl: `/applications/${data.slug}` }); cy.wait(1000); + cy.pause(); - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.signInButton).click(); + // logout(); + + cy.clearAndType(onboardingSelectors.emailInput, data.email); + cy.clearAndType(onboardingSelectors.passwordInput, "password"); + cy.get(onboardingSelectors.signInButton).click(); + cy.pause(); cy.wait(1000); cy.get(ssoSelector.workspaceSubHeader).verifyVisibleElement( "have.text", @@ -211,15 +221,16 @@ describe( logout(); cy.wait(4000); - cy.get(commonSelectors.loginButton, { timeout: 20000 }).should( + cy.get(onboardingSelectors.signInButton, { timeout: 20000 }).should( "be.visible" ); cy.visitSlug({ actualUrl: `/applications/${data.slug}` }); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(".text-widget-section > div").should("be.visible"); cy.get(commonSelectors.viewerPageLogo).click(); }); - it("hould redirect to the workspace login page, allow signup, proceed to accept invite page, and load the app", () => { + //Need to update with the new permission flow + it.skip("hould redirect to the workspace login page, allow signup, proceed to accept invite page, and load the app", () => { let invitationToken, organizationToken, workspaceId, @@ -235,7 +246,8 @@ describe( setSignupStatus(true); cy.apiCreateApp(data.appName); cy.openApp(); - cy.dragAndDropWidget("Table", 250, 250); + cy.addComponentToApp(data.appName, "text1"); + releaseApp(); cy.wait(1000); @@ -258,8 +270,8 @@ describe( cy.get(commonSelectors.createAnAccountLink).click(); cy.clearAndType(commonSelectors.nameInputField, data.firstName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); + cy.clearAndType(onboardingSelectors.emailInput, data.email); + cy.clearAndType(onboardingSelectors.passwordInput, commonText.password); cy.get(commonSelectors.signUpButton).click(); cy.apiLogin(); @@ -296,7 +308,7 @@ describe( }); }); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(".text-widget-section > div").should("be.visible"); }); } ); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/selfHost/selfHostSignUp.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/selfHost/selfHostSignUp.cy.js deleted file mode 100644 index 16fce362c2..0000000000 --- a/cypress-tests/cypress/e2e/happyPath/platform/ceTestcases/selfHost/selfHostSignUp.cy.js +++ /dev/null @@ -1,166 +0,0 @@ -import { commonSelectors } from "Selectors/common"; -import { commonText } from "Texts/common"; -import * as signup from "Support/utils/selfHostSignUp"; -import { logout } from "Support/utils/common"; - -describe("Self host onboarding", () => { - beforeEach(() => { - cy.visit('/setup'); - }); - - it("verify elements on self host onboarding page", () => { - cy.get(commonSelectors.selfHostSetUpBanner).should("be.visible"); - cy.get(commonSelectors.selfHostSetUpSubBanner).should("be.visible"); - cy.get(commonSelectors.selfHostSetUpCard).should("be.visible"); - cy.get(commonSelectors.selfHostSetUpCardImage).should("be.visible"); - cy.get(commonSelectors.selfHostSetUpCardHeader).verifyVisibleElement( - "have.text", - commonText.selfHostSetUpCardHeader - ); - cy.get(commonSelectors.selfHostSetUpCardSubHeader).verifyVisibleElement( - "have.text", - commonText.selfHostSetUpCardSubHeader - ); - cy.get(commonSelectors.setUpToolJetButton) - .verifyVisibleElement("have.text", commonText.setUpToolJetButton) - .click(); - - signup.selfHostCommonElements(); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - commonText.setUpAdminHeader - ); - - cy.get(commonSelectors.userNameInputLabel).verifyVisibleElement( - "have.text", - commonText.userNameInputLabel - ); - cy.get(commonSelectors.nameInputField).should("be.visible"); - cy.get(commonSelectors.emailInputLabel).verifyVisibleElement( - "have.text", - commonText.emailInputLabel - ); - cy.get(commonSelectors.emailInputField).should("be.visible"); - cy.get(commonSelectors.passwordLabel).verifyVisibleElement( - "have.text", - commonText.passwordLabel - ); - cy.get(commonSelectors.passwordInputField).should("be.visible"); - - cy.get(commonSelectors.passwordHelperText).verifyVisibleElement( - "have.text", - commonText.passwordHelperText - ); - - cy.get(commonSelectors.signUpTermsHelperText).should(($el) => { - expect($el.contents().first().text().trim()).to.eq( - commonText.selfHostSignUpTermsHelperText - ); - }); - cy.get(commonSelectors.termsOfServiceLink) - .verifyVisibleElement("have.text", commonText.termsOfServiceLink) - .and("have.attr", "href") - .and("equal", "https://www.tooljet.com/terms"); - cy.get(commonSelectors.privacyPolicyLink) - .verifyVisibleElement("have.text", commonText.privacyPolicyLink) - .and("have.attr", "href") - .and("equal", "https://www.tooljet.com/privacy"); - - cy.clearAndType(commonSelectors.nameInputField, "The Developer"); - cy.clearAndType(commonSelectors.emailInputField, "dev@tooljet.io"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.continueButton).click(); - - signup.selfHostCommonElements(); - cy.get(commonSelectors.userAccountNameAvatar).should("be.visible"); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - "Set up your workspace" - ); - cy.get(commonSelectors.workspaceNameInputLabel).verifyVisibleElement( - "have.text", - commonText.workspaceNameInputLabel - ); - cy.get(commonSelectors.workspaceNameInputField).should("be.visible"); - cy.clearAndType(commonSelectors.workspaceNameInputField, "My workspace"); - cy.get(commonSelectors.continueButton).click(); - - signup.selfHostCommonElements(); - signup.commonElementsWorkspaceSetup(); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - commonText.companyPageHeader("The Developer") - ); - cy.get(commonSelectors.companyNameInputField).should("be.visible"); - cy.clearAndType(commonSelectors.companyNameInputField, "ToolJet"); - cy.get(commonSelectors.continueButton).click(); - - signup.selfHostCommonElements(); - signup.commonElementsWorkspaceSetup(); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - commonText.userRolePageHeader - ); - signup.verifyandModifyUserRole(); - - signup.selfHostCommonElements(); - signup.commonElementsWorkspaceSetup(); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - commonText.sizeOftheCompanyHeader - ); - - signup.verifyandModifySizeOftheCompany(); - - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.setUpadminCheckPoint).verifyVisibleElement( - "have.text", - commonText.setUpadminCheckPoint - ); - cy.get(commonSelectors.setUpworkspaceCheckPoint).verifyVisibleElement( - "have.text", - commonText.setUpworkspaceCheckPoint - ); - cy.get(commonSelectors.companyProfileCheckPoint).verifyVisibleElement( - "have.text", - commonText.companyProfileCheckPoint - ); - cy.get(commonSelectors.onboardingPageSubHeader).verifyVisibleElement( - "have.text", - commonText.onboardingPageSubHeader - ); - cy.get(commonSelectors.continueButton).verifyVisibleElement( - "have.text", - commonText.continueButton - ); - - signup.commonElementsWorkspaceSetup(); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - "Enter your phone number" - ); - - cy.get(".form-control").should("be.visible"); - cy.get(".tj-onboarding-phone-input-wrapper") - .find("input") - .type("919876543210"); - cy.get(commonSelectors.continueButton).click(); - - cy.get("body").then(($title) => { - if (!$title.text().includes("Enter your phone number")) { - cy.get(commonSelectors.workspaceName).verifyVisibleElement( - "have.text", - "My workspace" - ); - - logout(); - cy.appUILogin(); - - cy.get(commonSelectors.workspaceName).verifyVisibleElement( - "have.text", - "My workspace" - ); - } - }); - }); -}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/forgotPassword.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/forgotPassword.cy.js deleted file mode 100644 index 24e31d0d4f..0000000000 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/forgotPassword.cy.js +++ /dev/null @@ -1,183 +0,0 @@ -import { commonSelectors } from "Selectors/common"; -import { commonText } from "Texts/common"; -import { fake } from "Fixtures/fake"; -import { addNewUser } from "Support/utils/onboarding"; -import { logout } from "Support/utils/common"; - -describe("Password reset functionality", () => { - const data = {}; - let passwordResetLink = ""; - - it("Verify wrong password limit", () => { - data.firstName = fake.firstName; - data.email = fake.email.toLowerCase(); - - cy.defaultWorkspaceLogin(); - addNewUser(data.firstName, data.email); - logout(); - - for (let i = 0; i < 5; i++) { - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "passw"); - cy.get(commonSelectors.loginButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - "Invalid credentials" - ); - } - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "passw"); - cy.get(commonSelectors.loginButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - "Maximum password retry limit reached, please reset your password using forgot password option" - ); - }); - it("Verify forgot password page elements and functionality", () => { - cy.visit("/"); - cy.get(commonSelectors.forgotPasswordLink).click(); - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.forgotPasswordPageHeader).verifyVisibleElement( - "have.text", - commonText.forgotPasswordPageHeader - ); - cy.get(commonSelectors.forgotPasswordPageSubHeader).should(($el) => { - expect($el.contents().first().text().trim()).to.eq( - "New to" - ); - }); - cy.get(commonSelectors.createAnAccountLink).verifyVisibleElement( - "have.text", - commonText.createAnAccountLink - ); - cy.get(commonSelectors.emailInputLabel).verifyVisibleElement( - "have.text", - commonText.emailAddressLabel - ); - cy.get(commonSelectors.emailInputField).should("be.visible"); - cy.get(commonSelectors.resetPasswordLinkButton) - .verifyVisibleElement("have.text", commonText.resetPasswordLinkButton) - .and("be.disabled"); - cy.get(commonSelectors.enterIcon).should("be.visible"); - - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.get(commonSelectors.resetPasswordLinkButton).click(); - - cy.get("body").then(($title) => { - if (!$title.text().includes("Forgot Password")) { - cy.verifyToastMessage( - commonSelectors.toastMessage, - commonText.passwordResetEmailToast - ); - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.emailImage).should("be.visible"); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - commonText.emailPageHeader - ); - cy.get(commonSelectors.onboardingPageDescription).verifyVisibleElement( - "have.text", - commonText.resetPasswordEmailDescription(data.email) - ); - cy.get(commonSelectors.spamMessage).verifyVisibleElement( - "have.text", - commonText.spamMessage - ); - cy.get(commonSelectors.onboardingSeperator).should("be.visible"); - cy.get(commonSelectors.onboardingSeperatorText).verifyVisibleElement( - "have.text", - commonText.onboardingSeperatorText - ); - cy.get(commonSelectors.backToLoginButton).verifyVisibleElement( - "have.text", - commonText.backToLoginButton - ); - } - }); - - cy.task("updateId", { - dbconfig: Cypress.env("app_db"), - sql: `select forgot_password_token from users where email='${data.email}';`, - }).then((resp) => { - passwordResetLink = `/reset-password/${resp.rows[0].forgot_password_token}`; - }); - }); - - it("Verify reset password page and functionality", () => { - cy.visit(passwordResetLink); - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.passwordResetPageHeader).verifyVisibleElement( - "have.text", - commonText.passwordResetPageHeader - ); - cy.get(commonSelectors.newPasswordInputLabel).verifyVisibleElement( - "have.text", - commonText.newPasswordInputLabel - ); - cy.get(commonSelectors.newPasswordInputField).should("be.visible"); - cy.get(commonSelectors.passwordHelperText) - .eq(0) - .verifyVisibleElement("have.text", commonText.passwordHelperText); - cy.get(commonSelectors.confirmPasswordInputFieldLabel).verifyVisibleElement( - "have.text", - commonText.confirmPasswordInputFieldLabel - ); - cy.get(commonSelectors.confirmPasswordInputField).should("be.visible"); - cy.get(commonSelectors.passwordHelperText) - .eq(1) - .verifyVisibleElement("have.text", commonText.passwordHelperText); - cy.get(commonSelectors.resetPasswordButton) - .verifyVisibleElement("have.text", commonText.resetPasswordButton) - .and("be.disabled"); - cy.get(commonSelectors.enterIcon).should("be.visible"); - - cy.clearAndType(commonSelectors.newPasswordInputField, "Pass"); - cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); - - cy.get(commonSelectors.newPasswordInputField).clear(); - cy.clearAndType(commonSelectors.confirmPasswordInputField, "Pass"); - cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); - - cy.clearAndType(commonSelectors.newPasswordInputField, "Pass"); - cy.clearAndType(commonSelectors.confirmPasswordInputField, "Pass"); - cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); - - cy.clearAndType(commonSelectors.newPasswordInputField, "password1"); - cy.clearAndType(commonSelectors.confirmPasswordInputField, "password"); - cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); - - cy.clearAndType(commonSelectors.newPasswordInputField, "Password"); - cy.clearAndType(commonSelectors.confirmPasswordInputField, "password"); - cy.get(commonSelectors.resetPasswordButton).click(); - cy.verifyToastMessage(commonSelectors.toastMessage, "Password don't match"); - - cy.clearAndType(commonSelectors.newPasswordInputField, "Password"); - cy.clearAndType(commonSelectors.confirmPasswordInputField, "Password"); - cy.get(commonSelectors.resetPasswordButton).should("be.enabled").click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - commonText.passwordResetSuccessToast - ); - - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.passwordResetPageHeader).verifyVisibleElement( - "have.text", - commonText.passwordResetSuccessPageHeader - ); - cy.get(commonSelectors.resetPasswordPageDescription).verifyVisibleElement( - "have.text", - commonText.resetPasswordPageDescription - ); - cy.get(commonSelectors.backToLoginButton).verifyVisibleElement( - "have.text", - commonText.backToLoginButton - ); - }); - it("Verify user login using new password", () => { - cy.visit("/"); - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "Password"); - cy.get(commonSelectors.loginButton).click(); - cy.get(commonSelectors.workspaceName).should("be.visible"); - }); -}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/login.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/login.cy.js deleted file mode 100644 index 62fb7106fc..0000000000 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/login.cy.js +++ /dev/null @@ -1,85 +0,0 @@ -import { commonSelectors } from "Selectors/common"; -import { fake } from "Fixtures/fake"; -import { commonText, path } from "Texts/common"; - -describe("Login functionality", () => { - let user; - const invalidEmail = fake.email; - const invalidPassword = fake.password; - - beforeEach(() => { - cy.fixture("credentials/login.json").then((login) => { - user = login; - }); - cy.visit("/"); - }); - it("Should verify elements on the login page", () => { - cy.url().should("include", path.loginPath); - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.signInHeader).verifyVisibleElement( - "have.text", - commonText.signInHeader - ); - cy.get(commonSelectors.workEmailLabel).verifyVisibleElement( - "have.text", - commonText.workEmailLabel - ); - cy.get(commonSelectors.passwordLabel).should(($el) => { - expect($el.contents().first().text().trim()).to.eq( - commonText.passwordLabel - ); - }); - cy.get(commonSelectors.forgotPasswordLink).verifyVisibleElement( - "have.text", - commonText.forgotPasswordLink - ); - cy.get(commonSelectors.loginButton).verifyVisibleElement( - "have.text", - commonText.loginButton - ); - - cy.get(commonSelectors.workEmailInputField).should("be.visible"); - cy.get(commonSelectors.passwordInputField).should("be.visible"); - }); - it("Should not be able to login with invalid credentials", () => { - cy.get(commonSelectors.loginButton).click(); - cy.get(commonSelectors.emailInputError).verifyVisibleElement( - "have.text", - commonText.emailInputError - ); - - cy.clearAndType(commonSelectors.workEmailInputField, invalidEmail); - cy.get(commonSelectors.loginButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - commonText.loginErrorToast - ); - - cy.get(commonSelectors.workEmailInputField).clear(); - cy.clearAndType(commonSelectors.passwordInputField, invalidPassword); - cy.get(commonSelectors.loginButton).click(); - cy.get(commonSelectors.emailInputError).verifyVisibleElement( - "have.text", - commonText.emailInputError - ); - - cy.clearAndType(commonSelectors.workEmailInputField, user.email); - cy.get(commonSelectors.passwordInputField).clear(); - cy.get(commonSelectors.loginButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - commonText.loginErrorToast - ); - - cy.get(commonSelectors.workEmailInputField).clear(); - cy.clearAndType(commonSelectors.passwordInputField, user.password); - cy.get(commonSelectors.loginButton).click(); - cy.get(commonSelectors.emailInputError).verifyVisibleElement( - "have.text", - commonText.emailInputError - ); - }); - it("Should be able to login with valid credentials", () => { - cy.login(user.email, user.password); - }); -}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/signUp.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/signUp.cy.js deleted file mode 100644 index e605d89890..0000000000 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/authentication/signUp.cy.js +++ /dev/null @@ -1,104 +0,0 @@ -import { commonSelectors } from "Selectors/common"; -import { commonText } from "Texts/common"; -import { SignUpPageElements } from "Support/utils/onboarding"; -import { fake } from "Fixtures/fake"; -import { - verifyConfirmEmailPage, - verifyConfirmPageElements, - verifyOnboardingQuestions, - verifyInvalidInvitationLink, - updateWorkspaceName -} from "Support/utils/onboarding"; -import { dashboardText } from "Texts/dashboard"; -import { - verifyandModifyUserRole, - verifyandModifySizeOftheCompany, -} from "Support/utils/selfHostSignUp"; - -describe("User signup", () => { - const data = {}; - let invitationLink = ""; - - it("Verify the signup flow and UI elements", () => { - data.fullName = fake.fullName; - data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); - data.workspaceName = fake.companyName; - - cy.visit("/"); - cy.get(commonSelectors.createAnAccountLink).realClick(); - SignUpPageElements(); - - cy.clearAndType(commonSelectors.nameInputField, data.fullName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.signUpButton).click(); - cy.wait(500); - verifyConfirmEmailPage(data.email); - - cy.task("updateId", { - dbconfig: Cypress.env("app_db"), - sql: `select invitation_token from users where email='${data.email}';`, - }).then((resp) => { - invitationLink = `/invitations/${resp.rows[0].invitation_token}`; - cy.visit(invitationLink); - }); - - verifyConfirmPageElements(); - cy.get(commonSelectors.setUpToolJetButton).click(); - cy.wait(4000); - verifyOnboardingQuestions(data.fullName, data.workspaceName); - }); - it("Verify invalid invitation link", () => { - cy.log(invitationLink) - cy.visit(invitationLink); - verifyInvalidInvitationLink(); - cy.get(commonSelectors.backtoSignUpButton).click(); - cy.get(commonSelectors.SignUpSectionHeader).should("be.visible"); - }); - it("Verify onboarding flow", () => { - data.fullName = fake.fullName; - data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); - data.workspaceName = fake.companyName; - - cy.visit("/"); - cy.get(commonSelectors.createAnAccountLink).realClick(); - - cy.clearAndType(commonSelectors.nameInputField, data.fullName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.signUpButton).click(); - cy.wait(8000); - cy.get(commonSelectors.resendEmailButton).click(); - cy.get(commonSelectors.editEmailButton).click(); - cy.get(commonSelectors.nameInputField).verifyVisibleElement("have.value", data.fullName) - cy.get(commonSelectors.emailInputField).verifyVisibleElement("have.value", data.email); - cy.get(commonSelectors.passwordInputField).verifyVisibleElement("have.value", ""); - - cy.task("updateId", { - dbconfig: Cypress.env("app_db"), - sql: `select invitation_token from users where email='${data.email}';`, - }).then((resp) => { - invitationLink = `/invitations/${resp.rows[0].invitation_token}`; - cy.visit(invitationLink); - }); - cy.get(commonSelectors.setUpToolJetButton).click(); - cy.clearAndType(commonSelectors.companyNameInputField, data.workspaceName); - cy.get(commonSelectors.continueButton).focus().type('{enter}'); - - cy.get(commonSelectors.backArrow).click() - cy.get(commonSelectors.companyNameInputField).verifyVisibleElement("have.value", data.workspaceName); - cy.get(commonSelectors.continueButton).focus().type('{enter}'); - cy.get('[data-cy="head-of-engineering-radio-button"]').check() - cy.get(commonSelectors.continueButton).focus().type('{enter}'); - - cy.get(commonSelectors.backArrow).click() - cy.get('[data-cy="head-of-engineering-radio-button"]').should("be.checked") - cy.get(commonSelectors.continueButton).focus().type('{enter}'); - - cy.get('[data-cy="1-10-radio-button"]').check() - cy.get(commonSelectors.continueButton).focus().type('{enter}'); - cy.get(commonSelectors.backArrow).click() - cy.get('[data-cy="1-10-radio-button"]').should("be.checked") - cy.get(commonSelectors.continueButton).focus().type('{enter}'); - }) -}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Login.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Login.cy.js new file mode 100644 index 0000000000..5a2bc6485d --- /dev/null +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Login.cy.js @@ -0,0 +1,88 @@ +import { commonSelectors } from "Selectors/common"; +import { fake } from "Fixtures/fake"; +import { commonText, path } from "Texts/common"; +import { onboardingSelectors } from "Selectors/onboarding"; +import { dashboardSelector } from "Selectors/dashboard"; +import { logout } from "Support/utils/common"; + +describe("Login functionality", () => { + let user; + const invalidEmail = fake.email; + const invalidPassword = fake.password; + + beforeEach(() => { + cy.fixture("credentials/login.json").then((login) => { + user = login; + }); + cy.visit("/"); + }); + it("Should verify elements on the login page", () => { + cy.url().should("include", path.loginPath); + cy.get(commonSelectors.pageLogo).should("be.visible"); + cy.get(commonSelectors.signInHeader).verifyVisibleElement( + "have.text", + commonText.signInHeader + ); + cy.get(onboardingSelectors.emailLabel).verifyVisibleElement( + "have.text", + "Email *" + ); + cy.get(onboardingSelectors.passwordLabel).should(($el) => { + expect($el.contents().first().text().trim()).to.eq( + commonText.LoginPasswordLabel + ); + }); + cy.get(commonSelectors.forgotPasswordLink).verifyVisibleElement( + "have.text", + commonText.forgotPasswordLink + ); + cy.get(onboardingSelectors.signInButton).verifyVisibleElement( + "have.text", + "Sign in" + ); + cy.get(onboardingSelectors.signInButton).should("be.disabled"); + + cy.get(onboardingSelectors.signupEmailInput).should("be.visible"); + cy.get(onboardingSelectors.loginPasswordInput).should("be.visible"); + }); + + it("Should be able to login with valid credentials", () => { + cy.appUILogin(user.email, user.password); + cy.get(commonSelectors.settingsIcon).click(); + cy.get(dashboardSelector.logoutLink); + }); + + it("Should not be able to login with invalid credentials", () => { + cy.wait(3000); + cy.clearAndType(onboardingSelectors.signupEmailInput, "test"); + cy.clearAndType(onboardingSelectors.signupEmailInput, "test"); + cy.get(commonSelectors.emailInputError).verifyVisibleElement( + "have.text", + commonText.emailInputError + ); + cy.get(onboardingSelectors.signInButton).should("be.disabled"); + + cy.get(onboardingSelectors.signupEmailInput).clear(); + cy.clearAndType(onboardingSelectors.loginPasswordInput, invalidPassword); + cy.get(onboardingSelectors.signInButton).should("be.disabled"); + + cy.clearAndType(onboardingSelectors.signupEmailInput, user.email); + cy.get(onboardingSelectors.loginPasswordInput).clear(); + cy.get(onboardingSelectors.signInButton).should("be.disabled"); + + cy.clearAndType(onboardingSelectors.signupEmailInput, user.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "Pass"); + cy.get(onboardingSelectors.passwordError).verifyVisibleElement( + "have.text", + "Password must be at least 5 characters long" + ); + cy.clearAndType(onboardingSelectors.loginPasswordInput, invalidPassword); + cy.get(onboardingSelectors.signInButton).click(); + cy.verifyToastMessage(commonSelectors.toastMessage, "Invalid credentials"); + }); + + it("Should be able to login with valid credentials using api", () => { + cy.appUILogin(user.email, user.password); + logout(); + }); +}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Signup.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Signup.cy.js new file mode 100644 index 0000000000..a7c8c98ac4 --- /dev/null +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/Signup.cy.js @@ -0,0 +1,90 @@ +import { commonSelectors } from "Selectors/common"; +import { commonText } from "Texts/common"; +import { SignUpPageElements } from "Support/utils/onboarding"; +import { fake } from "Fixtures/fake"; +import { + verifyConfirmEmailPage, + verifyConfirmPageElements, + verifyOnboardingQuestions, + verifyInvalidInvitationLink, + updateWorkspaceName, +} from "Support/utils/onboarding"; +import { dashboardText } from "Texts/dashboard"; +import { + verifyandModifyUserRole, + verifyandModifySizeOftheCompany, +} from "Support/utils/selfHostSignUp"; +import { onboardingSelectors } from "Selectors/onboarding"; +import { logout } from "Support/utils/common"; + +describe("User signup", () => { + const data = {}; + let invitationLink = ""; + + it("Verify the signup flow and UI elements", () => { + data.fullName = fake.fullName; + data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); + data.workspaceName = fake.companyName; + + cy.visit("/"); + cy.get(commonSelectors.createAnAccountLink).realClick(); + SignUpPageElements(); + + cy.get(onboardingSelectors.nameInput).clear(); + cy.get(onboardingSelectors.nameInput).type(data.fullName); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType( + onboardingSelectors.loginPasswordInput, + commonText.password + ); + cy.get(commonSelectors.signUpButton).click(); + cy.wait(500); + verifyConfirmEmailPage(data.email); + + cy.task("updateId", { + dbconfig: Cypress.env("app_db"), + sql: `select invitation_token from users where email='${data.email}';`, + }).then((resp) => { + invitationLink = `/invitations/${resp.rows[0].invitation_token}`; + cy.visit(invitationLink); + }); + + logout(); + }); + + it("Verify invalid invitation link", () => { + cy.log(invitationLink); + cy.visit(invitationLink); + verifyInvalidInvitationLink(); + cy.get(commonSelectors.pageLogo).click(); + cy.get('[data-cy="sign-in-header"]').should("be.visible"); + }); + + it("Verify onboarding flow", () => { + // rewrite for for EE and cloud + data.fullName = fake.fullName; + data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); + data.workspaceName = fake.companyName; + + cy.visit("/"); + cy.wait(8000); + cy.get(onboardingSelectors.createAnAccountLink).click(); + cy.wait(6000); + cy.get(onboardingSelectors.nameInput).clear(); + cy.get(onboardingSelectors.nameInput).type(data.fullName); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType( + onboardingSelectors.loginPasswordInput, + commonText.password + ); + cy.get(commonSelectors.signUpButton).click(); + cy.wait(8000); + cy.get(commonSelectors.resendEmailButton).click(); + cy.task("updateId", { + dbconfig: Cypress.env("app_db"), + sql: `select invitation_token from users where email='${data.email}';`, + }).then((resp) => { + invitationLink = `/invitations/${resp.rows[0].invitation_token}`; + }); + }); +}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/manageUsers.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/UserInviteFlow.cy.js similarity index 63% rename from cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/manageUsers.cy.js rename to cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/UserInviteFlow.cy.js index 2824959d31..b2343cfc04 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/manageUsers.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/UserInviteFlow.cy.js @@ -11,6 +11,21 @@ import { inviteUserWithUserRole, fetchAndVisitInviteLink, } from "Support/utils/manageUsers"; +import { + addNewUser, + visitWorkspaceInvitation, + newInvite, +} from "Support/utils/onboarding"; +import { commonText } from "Texts/common"; +import { setSignupStatus, enableSignUp } from "Support/utils/manageSSO"; +import { ssoSelector } from "Selectors/manageSSO"; +import { + SignUpPageElements, + verifyConfirmEmailPage, + signUpLink, + verifyOnboardingQuestions, +} from "Support/utils/onboarding"; + import { navigateToManageUsers, logout, @@ -20,20 +35,20 @@ import { import { updateWorkspaceName } from "Support/utils/userPermissions"; import { groupsSelector } from "Selectors/manageGroups"; import { groupsText } from "Texts/manageGroups"; -import { addNewUser, visitWorkspaceInvitation } from "Support/utils/onboarding"; -import { commonText } from "Texts/common"; +import { onboardingSelectors } from "Selectors/onboarding"; + +let invitationToken, + organizationToken, + workspaceId, + userId, + url = ""; const data = {}; -describe("Manage Users", () => { +describe("user invite flow cases", () => { beforeEach(() => { cy.defaultWorkspaceLogin(); }); - let invitationToken, - organizationToken, - workspaceId, - userId, - url = ""; it("Should verify the Manage users page", () => { data.firstName = fake.firstName; data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); @@ -45,8 +60,7 @@ describe("Manage Users", () => { cy.get(usersSelector.usersPageTitle).should("be.visible"); cy.get(usersSelector.buttonAddUsers).click(); - cy.get(usersSelector.buttonInviteUsers).should('be.disabled'); - + cy.get(usersSelector.buttonInviteUsers).should("be.disabled"); cy.clearAndType(commonSelectors.inputFieldFullName, data.firstName); cy.clearAndType(commonSelectors.inputFieldEmailAddress, data.email); @@ -55,7 +69,7 @@ describe("Manage Users", () => { "have.text", "Email is not valid" ); - cy.get(usersSelector.buttonInviteUsers).should('be.disabled'); + cy.get(usersSelector.buttonInviteUsers).should("be.disabled"); cy.clearAndType(commonSelectors.inputFieldFullName, data.firstName); cy.clearAndType( @@ -64,18 +78,25 @@ describe("Manage Users", () => { ); cy.get(usersSelector.buttonInviteUsers).click(); - cy.get('[data-cy="modal-icon"]').should('be.visible') - cy.get('[data-cy="modal-header"]').verifyVisibleElement("have.text", "Duplicate email"); - cy.get(commonSelectors.modalMessage).verifyVisibleElement("have.text", "Duplicate email found. Please provide a unique email address.") - cy.get('[data-cy="close-button"]:eq(1)').should('be.visible').click(); - cy.get(commonSelectors.inputFieldEmailAddress).should("have.value", usersText.adminUserEmail) - + cy.get('[data-cy="modal-icon"]').should("be.visible"); + cy.get('[data-cy="modal-header"]').verifyVisibleElement( + "have.text", + "Duplicate email" + ); + cy.get(commonSelectors.modalMessage).verifyVisibleElement( + "have.text", + "Duplicate email found. Please provide a unique email address." + ); + cy.get('[data-cy="close-button"]:eq(1)').should("be.visible").click(); + cy.get(commonSelectors.inputFieldEmailAddress).should( + "have.value", + usersText.adminUserEmail + ); }); it("Should verify the confirm invite page and new user account", () => { data.firstName = fake.firstName; data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); - // cy.removeAssignedApps(); navigateToManageUsers(); fillUserInviteForm(data.firstName, data.email); @@ -84,9 +105,9 @@ describe("Manage Users", () => { fetchAndVisitInviteLink(data.email); confirmInviteElements(data.email); - cy.clearAndType(commonSelectors.passwordInputField, "pass"); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "pass"); cy.get(commonSelectors.signUpButton).should("be.disabled"); - cy.clearAndType(commonSelectors.passwordInputField, usersText.password); + cy.clearAndType(onboardingSelectors.loginPasswordInput, usersText.password); cy.get(commonSelectors.signUpButton).should("not.be.disabled"); cy.get(commonSelectors.signUpButton).click(); @@ -98,14 +119,12 @@ describe("Manage Users", () => { "have.text", commonText.invitePageSubHeader ); - cy.verifyLabel("Name"); cy.get(commonSelectors.invitedUserName).verifyVisibleElement( "have.text", data.firstName ); - cy.verifyLabel("Email"); - - cy.get(commonSelectors.invitedUserEmail).verifyVisibleElement( + cy.wait(3000); + cy.get(commonSelectors.invitedUseremail).verifyVisibleElement( "have.text", data.email ); @@ -155,14 +174,9 @@ describe("Manage Users", () => { logout(); cy.visit("/"); - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, usersText.password); - cy.get(commonSelectors.loginButton).click(); - - updateWorkspaceName(data.email); - cy.get(commonSelectors.workspaceName).click(); - cy.contains("My workspace").should("not.exist"); - logout(); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, usersText.password); + cy.get(onboardingSelectors.signInButton).click(); cy.defaultWorkspaceLogin(); navigateToManageUsers(); @@ -177,9 +191,9 @@ describe("Manage Users", () => { visitWorkspaceInvitation(data.email, "My workspace"); - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.signInButton).click(); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "password"); + cy.get(onboardingSelectors.signInButton).click(); cy.get(usersSelector.acceptInvite).click(); cy.verifyToastMessage(commonSelectors.toastMessage, usersText.inviteToast); logout(); @@ -199,7 +213,6 @@ describe("Manage Users", () => { data.groupName1 = fake.firstName.replaceAll("[^A-Za-z]", ""); data.groupName2 = fake.firstName.replaceAll("[^A-Za-z]", ""); - const groupNames = ["All users", "Admin"]; navigateToManageUsers(); @@ -213,10 +226,6 @@ describe("Manage Users", () => { } }); cy.get('[data-cy="user-group-select"]>>>>>').eq(0).type("Test"); - cy.get(".css-1wlit7h-NoOptionsMessage").verifyVisibleElement( - "have.text", - "No groups found" - ); cy.get(commonSelectors.cancelButton).click(); cy.get(usersSelector.buttonAddUsers).click(); @@ -225,7 +234,7 @@ describe("Manage Users", () => { cy.get(commonSelectors.cancelButton).click(); cy.get(usersSelector.buttonAddUsers).click(); - cy.get('.selected-value').should('have.text', "End-user") + cy.get(".selected-value").should("have.text", "End-user"); cy.get(commonSelectors.cancelButton).click(); inviteUserWithUserRole(data.firstName, data.email, "Admin"); @@ -257,7 +266,7 @@ describe("Manage Users", () => { data.groupName2 ); logout(); - + cy.wait(3000); cy.defaultWorkspaceLogin(); navigateToManageGroups(); cy.get(groupsSelector.groupLink(data.groupName1)).click(); @@ -337,12 +346,27 @@ describe("Manage Users", () => { cy.get(usersSelector.buttonInviteUsers).click(); - cy.get('[data-cy="modal-title"] > .tj-text-md').verifyVisibleElement("have.text", "Edit user role") - cy.get('[data-cy="user-email"]').verifyVisibleElement("have.text", data.email); - cy.get('[data-cy="modal-body"]>').verifyVisibleElement("have.text", "Are you sure you want to continue?"); - cy.get('.modal-footer > [data-cy="cancel-button"]').verifyVisibleElement("have.text", "Cancel"); - cy.get('[data-cy="confim-button"]').verifyVisibleElement("have.text", "Continue"); - cy.get('[data-cy="modal-close-button"]').should('be.visible').click(); + cy.get('[data-cy="modal-title"] > .tj-text-md').verifyVisibleElement( + "have.text", + "Edit user role" + ); + cy.get('[data-cy="user-email"]').verifyVisibleElement( + "have.text", + data.email + ); + cy.get('[data-cy="modal-body"]>').verifyVisibleElement( + "have.text", + "Updating the user's details will change their role from end-user to admin. Are you sure you want to continue?" + ); + cy.get('.modal-footer > [data-cy="cancel-button"]').verifyVisibleElement( + "have.text", + "Cancel" + ); + cy.get('[data-cy="confim-button"]').verifyVisibleElement( + "have.text", + "Continue" + ); + cy.get('[data-cy="modal-close-button"]').should("be.visible").click(); cy.get(usersSelector.userActionButton).click(); cy.get(usersSelector.editUserDetailsButton).click(); @@ -359,7 +383,7 @@ describe("Manage Users", () => { cy.get('[data-cy="group-check-input"]').eq(0).check(); cy.get(usersSelector.buttonInviteUsers).click(); - cy.get('.modal-footer > [data-cy="cancel-button"]').click() + cy.get('.modal-footer > [data-cy="cancel-button"]').click(); cy.get(usersSelector.userActionButton).click(); cy.get(usersSelector.editUserDetailsButton).click(); @@ -376,7 +400,7 @@ describe("Manage Users", () => { cy.get('[data-cy="group-check-input"]').eq(0).check(); cy.get(usersSelector.buttonInviteUsers).click(); - cy.get('[data-cy="confim-button"]').click() + cy.get('[data-cy="confim-button"]').click(); cy.verifyToastMessage( commonSelectors.toastMessage, @@ -384,7 +408,10 @@ describe("Manage Users", () => { ); searchUser(data.email); - cy.get('[data-name="role-header"] [data-cy="group-chip"]').should("have.text", "Admin"); + cy.get('[data-name="role-header"] [data-cy="group-chip"]').should( + "have.text", + "Admin" + ); }); it("Should verify exisiting user invite flow", () => { @@ -404,10 +431,10 @@ describe("Manage Users", () => { cy.get(usersSelector.buttonInviteUsers).click(); cy.wait(2000); visitWorkspaceInvitation(data.email, workspaceName); - - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.signInButton).click(); + cy.wait(3000); + cy.clearAndType(onboardingSelectors.loginEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "password"); + cy.get(onboardingSelectors.signInButton).click(); cy.get(usersSelector.acceptInvite).click(); cy.verifyToastMessage(commonSelectors.toastMessage, usersText.inviteToast); logout(); @@ -421,4 +448,118 @@ describe("Manage Users", () => { cy.get("td small").should("have.text", usersText.activeStatus); }); }); + + it("should verify the user signup after invited in a workspace", () => { + data.firstName = fake.firstName; + data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); + data.signUpName = fake.firstName; + data.workspaceName = fake.companyName; + + setSignupStatus(true); + navigateToManageUsers(); + fillUserInviteForm(data.firstName, data.email); + cy.get(usersSelector.buttonInviteUsers).click(); + cy.logoutApi(); + + cy.visit("/"); + cy.get(commonSelectors.createAnAccountLink).click(); + SignUpPageElements(); + cy.wait(3000); + cy.clearAndType(onboardingSelectors.nameInput, data.signUpName); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType( + onboardingSelectors.loginPasswordInput, + commonText.password + ); + cy.get(commonSelectors.signUpButton).click(); + cy.wait(1000); + signUpLink(data.email); + cy.wait(1000); + visitWorkspaceInvitation(data.email, "My workspace"); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, usersText.password); + cy.get(onboardingSelectors.signInButton).click(); + cy.wait(3000); + cy.get(commonSelectors.invitedUserName).verifyVisibleElement( + "have.text", + data.signUpName + ); + cy.get(commonSelectors.acceptInviteButton).click(); + }); + + it("should verify the user signup with same creds after invited in a workspace", () => { + data.firstName = fake.firstName; + data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); + data.signUpName = fake.firstName; + data.workspaceName = fake.companyName; + + setSignupStatus(true); + navigateToManageUsers(); + fillUserInviteForm(data.firstName, data.email); + cy.get(usersSelector.buttonInviteUsers).click(); + logout(); + + cy.get(commonSelectors.createAnAccountLink).click(); + SignUpPageElements(); + cy.wait(5000); + + cy.clearAndType(onboardingSelectors.nameInput, data.signUpName); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType( + onboardingSelectors.loginPasswordInput, + commonText.password + ); + cy.get(commonSelectors.signUpButton).click(); + cy.verifyToastMessage( + commonSelectors.toastMessage, + "The user is already registered. Please check your inbox for the activation link" + ); + }); + + it("should verify exisiting user workspace signup from instance using form", () => { + data.firstName = fake.firstName; + data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); + data.signUpName = fake.firstName; + data.workspaceName = fake.firstName.toLowerCase(); + + setSignupStatus(true); + navigateToManageUsers(); + addNewUser(data.firstName, data.email); + logout(); + cy.wait(3000); + cy.get(commonSelectors.createAnAccountLink).click(); + cy.wait(1000); + cy.clearAndType(onboardingSelectors.nameInput, data.firstName); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType( + onboardingSelectors.loginPasswordInput, + commonText.password + ); + cy.get(commonSelectors.signUpButton).click(); + cy.verifyToastMessage( + commonSelectors.toastMessage, + "User already exists in the workspace." + ); + cy.apiLogin(); + cy.apiCreateWorkspace(data.workspaceName, data.workspaceName); + cy.visit(`${data.workspaceName}`); + cy.wait(3000); + setSignupStatus(true, data.workspaceName); + logout(); + + cy.get(commonSelectors.createAnAccountLink).click(); + cy.wait(3000); + cy.clearAndType(onboardingSelectors.nameInput, data.firstName); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType( + onboardingSelectors.loginPasswordInput, + commonText.password + ); + cy.get(commonSelectors.signUpButton).click(); + + cy.defaultWorkspaceLogin(); + visitWorkspaceInvitation(data.email, data.workspaceName); + cy.verifyToastMessage(commonSelectors.toastMessage, usersText.inviteToast); + logout(); + }); }); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/bulkUserUpload.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/bulkUsersUpload.cy.js similarity index 54% rename from cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/bulkUserUpload.cy.js rename to cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/bulkUsersUpload.cy.js index 91ac5a7951..9196db713b 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/bulkUserUpload.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/bulkUsersUpload.cy.js @@ -29,6 +29,7 @@ describe("Bulk user upload", () => { const without_lastName = "cypress/fixtures/bulkUser/without_lastname - Sheet1.csv"; const invite_users = "cypress/fixtures/bulkUser/invite_users - Sheet1 .csv"; + const Validinvite = "cypress/fixtures/bulkUser/10usersupload.csv"; it("Verfiy bulk user upload invalid files", () => { data.firstName = fake.firstName; @@ -42,80 +43,86 @@ describe("Bulk user upload", () => { cy.get(usersSelector.buttonAddUsers).click(); cy.get(usersSelector.buttonUploadCsvFile).click(); - bulkUserUpload( without_name, "without_name", - "Invalid row(s): [first_name, last_name] in [11] row(s). No users were uploaded." + "Missing first_name,last_name,groups information in 10 row(s);. No users were uploaded, please update and try again." ); + bulkUserUpload( without_email, "without_email", - "Invalid row(s): [email] in [11] row(s). No users were uploaded." - ); - bulkUserUpload( - without_group, - "without_group", - "Invalid row(s): [groups] in [5] row(s). No users were uploaded." - ); - bulkUserUpload( - same_email, - "same_email", - "Duplicate email found. Please provide a unique email address." - ); - bulkUserUpload( - invalid_group_name, - "invalid_group_name", - "11 groups doesn't exist. No users were uploaded" + "Missing email,groups information in 10 row(s);. No users were uploaded, please update and try again." ); + // bulkUserUpload( + // without_group, + // "without_group", + // "Invalid row(s): [groups] in [5] row(s). No users were uploaded." + // ); + + //Add automation for modal data-cy="close-button" + // bulkUserUpload( + // same_email, + // "same_email", + // "Duplicate email found. Please provide a unique email address." + // ); + + // bulkUserUpload( + // invalid_group_name, + // "invalid_group_name", + // "11 groups doesn't exist. No users were uploaded" + // ); bulkUserUpload( empty_first_and_last_name, "empty_first_and_last_name", - "Invalid row(s): [first_name, last_name] in [1] row(s). No users were uploaded." + "Missing first_name,last_name,groups information in 1 row(s);. No users were uploaded, please update and try again." ); bulkUserUpload( limit_exceeded_list, "500_invite_users", "You can only invite 250 users at a time" ); + bulkUserUpload( non_existing_group, "non_existing_group", - "1 group doesn't exist. No users were uploaded" - ); - bulkUserUpload( - multiple_groups, - "multiple_groups", - "Conflicting Group Memberships: User cannot be in both the Admin group and other groups simultaneously." + "2 groups doesn't exist. No users were uploaded" ); - cy.get(usersSelector.inputFieldBulkUpload).selectFile(without_firstName, { - force: true, - }); - cy.get(usersSelector.uploadedFileData).should( - "contain", - "without_firstname" - ); - cy.get(usersSelector.buttonUploadUsers).click(); - cy.get(".go2072408551") - .should("be.visible") - .and("have.text", "5 users are being added"); + //add more groups and verify - cy.wait(5000); + // bulkUserUpload( + // multiple_groups, + // "multiple_groups", + // "Conflicting Group Memberships: User cannot be in both the Admin group and other groups simultaneously." + // ); - cy.get(usersSelector.buttonAddUsers).click(); - cy.get(usersSelector.buttonUploadCsvFile).click(); - cy.get(usersSelector.inputFieldBulkUpload).selectFile(without_lastName, { - force: true, - }); - cy.get(usersSelector.uploadedFileData).should( - "contain", - "without_lastname" - ); - cy.get(usersSelector.buttonUploadUsers).click(); - cy.get(".go2072408551") - .should("be.visible") - .and("have.text", "5 users are being added"); + // cy.get(usersSelector.inputFieldBulkUpload).selectFile(without_firstName, { + // force: true, + // }); + // cy.get(usersSelector.uploadedFileData).should( + // "contain", + // "without_firstname" + // ); + // cy.get(usersSelector.buttonUploadUsers).click(); + // cy.get(".go2072408551") + // .should("be.visible") + // .and("have.text", "Missing first_name,user_role,groups information in 5 row(s);. No users were uploaded, please update and try again.Missing first_name,user_role,groups information in 5 row(s);. No users were uploaded, please update and try again."); + + // cy.wait(5000); + // // cy.get(usersSelector.buttonAddUsers).click(); + // cy.get(usersSelector.buttonUploadCsvFile).click(); + // cy.get(usersSelector.inputFieldBulkUpload).selectFile(without_lastName, { + // force: true, + // }); + // cy.get(usersSelector.uploadedFileData).should( + // "contain", + // "without_lastname" + // ); + // cy.get(usersSelector.buttonUploadUsers).click(); + // cy.get(".go2072408551") + // .should("be.visible") + // .and("have.text", "Missing last_name,user_role,groups information in 5 row(s);. No users were uploaded, please update and try again.Missing last_name,user_role,groups information in 5 row(s);. No users were uploaded, please update and try again."); }); it("Verify bulk user upload functionality", () => { @@ -130,22 +137,14 @@ describe("Bulk user upload", () => { cy.get(usersSelector.buttonAddUsers).click(); cy.get(usersSelector.buttonUploadCsvFile).click(); - cy.get(usersSelector.inputFieldBulkUpload).selectFile(invite_users, { - force: true, - }); - cy.get(usersSelector.uploadedFileData).should("contain", "invite_users"); - cy.get(commonSelectors.cancelButton).click(); - - cy.get(usersSelector.buttonAddUsers).click(); - cy.get(usersSelector.buttonUploadCsvFile).click(); - cy.get(usersSelector.inputFieldBulkUpload).selectFile(invite_users, { + cy.get(usersSelector.inputFieldBulkUpload).selectFile(Validinvite, { force: true, }); + cy.get(commonSelectors.fileSelector).should("contain", " 10usersupload"); cy.get(usersSelector.buttonUploadUsers).click(); - cy.wait(30000); cy.get(".go2072408551") .should("be.visible") - .and("have.text", "250 users are being added"); + .and("have.text", "10 users are being added"); common.searchUser("test12@gmail.com"); cy.contains("td", "test12@gmail.com") .parent() diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/firstUserOnboarding.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/firstUserOnboarding.cy.js new file mode 100644 index 0000000000..9dd068618d --- /dev/null +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/firstUserOnboarding.cy.js @@ -0,0 +1,84 @@ +import { commonSelectors } from "Selectors/common"; +import { commonText } from "Texts/common"; +import * as signup from "Support/utils/selfHostSignUp"; +import { logout } from "Support/utils/common"; +import { onboardingSelectors } from "Selectors/onboarding"; + +//selfhostsetup +describe("Self host onboarding", () => { + beforeEach(() => { + cy.visit("/setup"); + }); + it("verify elements on self host onboarding page", () => { + cy.get(commonSelectors.HostBanner).should("be.visible"); + cy.get(commonSelectors.pageLogo).should("be.visible"); + cy.get(commonSelectors.adminSetup).should("be.visible"); + cy.get(commonSelectors.signupTerms).should("be.visible"); + + cy.get(commonSelectors.userNameInputLabel).verifyVisibleElement( + "have.text", + commonText.userNameInputLabel + ); + cy.get(commonSelectors.nameInputField).should("be.visible"); + cy.get(commonSelectors.emailInputLabel).verifyVisibleElement( + "have.text", + commonText.emailInputLabel + ); + cy.get(onboardingSelectors.emailInput).should("be.visible"); + cy.get(commonSelectors.passwordLabel).verifyVisibleElement( + "have.text", + commonText.passwordLabel + ); + cy.get(onboardingSelectors.passwordInput).should("be.visible"); + cy.get(commonSelectors.passwordHelperTextSignup).verifyVisibleElement( + "have.text", + commonText.passwordHelperText + ); + + cy.get(commonSelectors.signUpTermsHelperText).should(($el) => { + expect($el.contents().first().text().trim()).to.eq( + commonText.selfHostSignUpTermsHelperText + ); + }); + cy.get(commonSelectors.termsOfServiceLink) + .verifyVisibleElement("have.text", commonText.termsOfServiceLink) + .and("have.attr", "href") + .and("equal", "https://www.tooljet.com/terms"); + cy.get(commonSelectors.privacyPolicyLink) + .verifyVisibleElement("have.text", commonText.privacyPolicyLink) + .and("have.attr", "href") + .and("equal", "https://www.tooljet.com/privacy"); + + cy.clearAndType(commonSelectors.nameInputField, "The Developer"); + cy.clearAndType(onboardingSelectors.emailInput, "dev@tooljet.io"); + cy.clearAndType(onboardingSelectors.passwordInput, "password"); + cy.get(commonSelectors.continueButton).click(); + + cy.get(commonSelectors.setUpworkspaceCheckPoint).verifyVisibleElement( + "have.text", + "Set up your workspace!" + ); + cy.get(commonSelectors.workspaceNameInputLabel).verifyVisibleElement( + "have.text", + commonText.workspaceNameInputLabel + ); + cy.get(commonSelectors.workspaceNameInputField).should("be.visible"); + cy.clearAndType(commonSelectors.workspaceNameInputField, "My workspace"); + cy.get(commonSelectors.OnbordingContinue).click(); + + cy.get(commonSelectors.skipbutton).click(); + cy.get(commonSelectors.backLogo).click(); + cy.get(commonSelectors.backtoapps).click(); + + logout(); + cy.appUILogin(); + + cy.get(commonSelectors.workspaceName).verifyVisibleElement( + "have.text", + "My workspace" + ); + }); +}); + + + diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/resetPassword.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/resetPassword.cy.js new file mode 100644 index 0000000000..d9d115ee38 --- /dev/null +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/userManagment/resetPassword.cy.js @@ -0,0 +1,187 @@ +import { commonSelectors } from "Selectors/common"; +import { commonText } from "Texts/common"; +import { fake } from "Fixtures/fake"; +import { addNewUser } from "Support/utils/onboarding"; +import { logout } from "Support/utils/common"; +import { onboardingSelectors } from "Selectors/onboarding"; + + +describe("Password reset functionality", () => { + const data = {}; + let passwordResetLink = ""; + + it("Verify wrong password limit", () => { + data.firstName = fake.firstName; + data.email = fake.email.toLowerCase(); + + cy.defaultWorkspaceLogin(); + addNewUser(data.firstName, data.email); + logout(); + + for (let i = 0; i < 5; i++) { + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "passw"); + cy.get(onboardingSelectors.signInButton).click(); + cy.verifyToastMessage( + commonSelectors.toastMessage, + "Invalid credentials" + ); + } + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "passw"); + cy.get(onboardingSelectors.signInButton).click(); + cy.verifyToastMessage( + commonSelectors.toastMessage, + "Maximum password retry limit reached, please reset your password using forgot password option" + ); + }); + + it("Verify forgot password page elements and functionality", () => { + cy.visit("/"); + cy.get(commonSelectors.forgotPasswordLink).click(); + cy.get(commonSelectors.pageLogo).should("be.visible"); + cy.get(commonSelectors.forgotPasswordPageHeader).verifyVisibleElement( + "have.text", + commonText.forgotPasswordPageHeader + ); + cy.get(commonSelectors.forgotPasswordPageSubHeader).verifyVisibleElement( + "have.text", + "New to ToolJet? Create an account" + ); + + cy.get(commonSelectors.createAnAccountLink).verifyVisibleElement( + "have.text", + commonText.createAnAccountLink + ); + + cy.get('[data-cy="email-input-field-label"]').verifyVisibleElement( + "have.text", + "Email address *" + ); + + cy.get('[data-cy="email-input-field-input"]').should("be.visible"); + cy.get(commonSelectors.resetPasswordLinkButton) + .verifyVisibleElement("have.text", commonText.resetPasswordLinkButton) + .and("be.disabled"); + cy.wait(5000); + cy.clearAndType('[data-cy="email-input-field-input"]', data.email); + cy.get(commonSelectors.resetPasswordLinkButton).click(); + + cy.verifyToastMessage( + commonSelectors.toastMessage, + commonText.passwordResetEmailToast + ); + cy.get(commonSelectors.pageLogo).should("be.visible"); + + cy.get('[data-cy="check-your-mail-header"]').verifyVisibleElement( + "have.text", + "Check your mail" + ); + + cy.get(commonSelectors.onboardingPageDescription).verifyVisibleElement( + "have.text", + commonText.resetPasswordEmailDescription(data.email) + ); + cy.get(commonSelectors.spamMessage).verifyVisibleElement( + "have.text", + commonText.spamMessage + ); + cy.get(commonSelectors.onboardingSeperator).should("be.visible"); + cy.get(commonSelectors.onboardingSeperatorText).verifyVisibleElement( + "have.text", + commonText.onboardingSeperatorText + ); + cy.get(commonSelectors.backToLoginButton).verifyVisibleElement( + "have.text", + commonText.backToLoginButton + ); + + cy.task("updateId", { + dbconfig: Cypress.env("app_db"), + sql: `select forgot_password_token from users where email='${data.email}';`, + }).then((resp) => { + passwordResetLink = `/reset-password/${resp.rows[0].forgot_password_token}`; + }); + }); + + it("Verify reset password page and functionality", () => { + cy.visit(passwordResetLink); + cy.get(commonSelectors.pageLogo).should("be.visible"); + cy.get(commonSelectors.passwordResetPageHeader).verifyVisibleElement( + "have.text", + commonText.passwordResetPageHeader + ); + cy.get(commonSelectors.newPasswordInputLabel).verifyVisibleElement( + "have.text", + commonText.newPasswordInputLabel + ); + cy.get(commonSelectors.newPasswordInputField).should("be.visible"); + cy.get(commonSelectors.passwordHelperText) + .eq(0) + .verifyVisibleElement("have.text", commonText.passwordHelperText); + cy.get(commonSelectors.confirmPasswordInputFieldLabel).verifyVisibleElement( + "have.text", + commonText.confirmPasswordInputFieldLabel + ); + cy.get(commonSelectors.confirmPasswordInputField).should("be.visible"); + cy.get(commonSelectors.passwordHelperText).verifyVisibleElement( + "have.text", + commonText.passwordHelperText + ); + cy.get(commonSelectors.resetPasswordButton) + .verifyVisibleElement("have.text", commonText.resetPasswordButton) + .and("be.disabled"); + + cy.clearAndType(commonSelectors.newPasswordInputField, "Pass"); + cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); + + cy.get(commonSelectors.newPasswordInputField).clear(); + cy.clearAndType(commonSelectors.confirmPasswordInputField, "Pass"); + cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); + + cy.clearAndType(commonSelectors.newPasswordInputField, "Pass"); + cy.clearAndType(commonSelectors.confirmPasswordInputField, "Pass"); + cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); + + cy.clearAndType(commonSelectors.newPasswordInputField, "password1"); + cy.clearAndType(commonSelectors.confirmPasswordInputField, "password"); + cy.get(commonSelectors.resetPasswordButton).should("be.disabled"); + + cy.clearAndType(commonSelectors.newPasswordInputField, "Password"); + cy.clearAndType(commonSelectors.confirmPasswordInputField, "password"); + cy.get('[data-cy="confirm-password-input-error"]').verifyVisibleElement( + "have.text", + "Passwords don't match" + ); + + cy.clearAndType(commonSelectors.newPasswordInputField, "Password"); + cy.clearAndType(commonSelectors.confirmPasswordInputField, "Password"); + cy.get(commonSelectors.resetPasswordButton).should("be.enabled").click(); + cy.verifyToastMessage( + commonSelectors.toastMessage, + commonText.passwordResetSuccessToast + ); + + cy.get(commonSelectors.pageLogo).should("be.visible"); + cy.get('[data-cy="password-has-been-reset-header"]').verifyVisibleElement( + "have.text", + commonText.passwordResetSuccessPageHeader + ); + cy.get(commonSelectors.resetPasswordPageDescription).verifyVisibleElement( + "have.text", + commonText.resetPasswordPageDescription + ); + cy.get(commonSelectors.backToLoginButton).verifyVisibleElement( + "have.text", + commonText.backToLoginButton + ); + }); + + it("Verify user login using new password", () => { + cy.visit("/"); + cy.clearAndType(onboardingSelectors.signupEmailInput, data.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "Password"); + cy.get(onboardingSelectors.signInButton).click(); + cy.get(commonSelectors.workspaceName).should("be.visible"); + }); + }); \ No newline at end of file diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/dashboard.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/dashboard.cy.js index 5852d8d680..3a94920327 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/dashboard.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/dashboard.cy.js @@ -31,6 +31,7 @@ describe("dashboard", () => { data.cloneAppName = `cloned-${data.appName}`; data.updatedFolderName = `new-${data.folderName}`; + beforeEach(() => { cy.intercept("GET", "/api/library_apps").as("appLibrary"); cy.intercept("DELETE", "/api/folders/*").as("folderDeleted"); @@ -59,7 +60,7 @@ describe("dashboard", () => { "My workspace" ); cy.get(commonSelectors.workspaceName).click(); - cy.get(commonSelectors.editRectangleIcon).should("be.visible"); + // cy.get(commonSelectors.editRectangleIcon).should("be.visible"); cy.get(commonSelectors.appCreateButton).verifyVisibleElement( "have.text", "Create an app" @@ -173,10 +174,14 @@ describe("dashboard", () => { }); it("Should verify app card elements and app card operations", () => { + const customLayout = { + desktop: { top: 100, left: 20 }, + mobile: { width: 8, height: 50 }, + }; cy.apiLogin(); cy.apiCreateApp(data.appName); cy.openApp(); - cy.dragAndDropWidget("Table", 250, 250); + cy.addComponentToApp(data.appName, "text1", customLayout) cy.backToApps(); @@ -190,11 +195,8 @@ describe("dashboard", () => { data.appName ); cy.get(commonSelectors.appCreationDetails).should("be.visible"); - cy.get(commonSelectors.appCreationDetails) - .should("be.visible") - .and(($el) => { - expect($el.contents().last().text().trim()).to.eq("The Developer"); - }); + + //Add the edited details }); viewAppCardOptions(data.appName); @@ -287,7 +289,7 @@ describe("dashboard", () => { .and("have.text", dashboardText.appClonedToast); cy.wait(3000); cy.renameApp(data.cloneAppName); - cy.dragAndDropWidget("button", 25, 25); + cy.addComponentToApp(data.cloneAppName, "button", 25, 25); cy.backToApps(); cy.wait("@appLibrary"); cy.wait(1000); @@ -339,11 +341,17 @@ describe("dashboard", () => { }); it("Should verify the app CRUD operation", () => { + + const customLayout = { + desktop: { top: 100, left: 20 }, + mobile: { width: 8, height: 50 }, + }; + cy.skipWalkthrough(); data.appName = `${fake.companyName}-App`; cy.defaultWorkspaceLogin(); cy.createApp(data.appName); - cy.dragAndDropWidget("Button", 450, 450); + cy.addComponentToApp(data.appName, "text1", customLayout) cy.backToApps(); @@ -353,7 +361,8 @@ describe("dashboard", () => { ); navigateToAppEditor(data.appName); - cy.get(commonSelectors.canvas).should("contain", "Button"); + // cy.get(commonSelectors.canvas).should("contain", "text1"); + cy.get('.text-widget-section > div').should('be.visible') cy.backToApps(); cy.wait("@appLibrary"); @@ -366,10 +375,16 @@ describe("dashboard", () => { }); it("Should verify the folder CRUD operation", () => { + const customLayout = { + desktop: { top: 100, left: 20 }, + mobile: { width: 8, height: 50 }, + }; + data.appName = `${fake.companyName}-App`; cy.defaultWorkspaceLogin(); cy.createApp(data.appName); - cy.dragAndDropWidget("Button", 100, 100); + + cy.addComponentToApp(data.appName, "text1", customLayout) cy.backToApps(); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/errorPage.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/errorPage.cy.js index 0e8d3127c3..88eb85caeb 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/errorPage.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/errorPage.cy.js @@ -36,13 +36,12 @@ describe("Redirection error pages", () => { cy.get(commonSelectors.backToHomeButton).click(); cy.get(commonSelectors.pageSectionHeader).should("be.visible"); cy.logoutApi(); - - cy.visit(`/applications/${data.lastName}`); - cy.get(commonSelectors.backToHomeButton).click(); - cy.get(commonSelectors.workEmailLabel).should("be.visible"); + cy.wait(3000); cy.apiLogin("test@tooljet.com", "password"); cy.visit(`/applications/${data.lastName}`); + cy.get(commonSelectors.backToHomeButton).click(); + }); it("Verify error message in case of restricted access", () => { @@ -52,22 +51,22 @@ describe("Redirection error pages", () => { cy.openApp(); cy.wait(1000); releaseApp(); - cy.get(commonWidgetSelector.shareAppButton).click(); cy.clearAndType(commonWidgetSelector.appNameSlugInput, data.slug); + cy.pause(); cy.wait(1000); cy.logoutApi(); cy.apiLogin("test@tooljet.com", "password"); cy.visit(`/applications/${data.slug}`); - + cy.pause(); cy.get(commonSelectors.modalHeader).verifyVisibleElement( "have.text", - "Restricted access" + "App URL Unavailable" ); cy.get(commonSelectors.modalDescription).verifyVisibleElement( "have.text", - "You don’t have access to this app. Kindly contact admin to know more." + "The app URL is currently unavailable because the app has not been released. Please either release it or contact admin for access." ); cy.get(commonSelectors.backToHomeButton).verifyVisibleElement( "have.text", @@ -79,7 +78,7 @@ describe("Redirection error pages", () => { cy.get(commonSelectors.pageSectionHeader).should("be.visible"); }); - it.only("Verify error modal for app url of unreleased apps", () => { + it.skip("Verify error modal for app url of unreleased apps", () => { data.appName = `${fake.companyName} App`; data.slug = data.appName.toLowerCase().replace(/\s+/g, "-"); @@ -111,7 +110,7 @@ describe("Redirection error pages", () => { cy.url().should( "eq", - `http://localhost:8082/error/url-unavailable?appSlug=${data.slug}` + `http://localhost:8082/error/restricted` ); cy.get(commonSelectors.backToHomeButton).click(); cy.get(commonSelectors.pageSectionHeader).should("be.visible"); @@ -123,11 +122,11 @@ describe("Redirection error pages", () => { cy.visit(`http://localhost:8082/applications/${data.slug}`); cy.get(commonSelectors.modalHeader).verifyVisibleElement( "have.text", - "Restricted access" + "App URL Unavailable" ); cy.get(commonSelectors.modalDescription).verifyVisibleElement( "have.text", - "You don’t have access to this app. Kindly contact admin to know more." + "The app URL is currently unavailable because the app has not been released. Please either release it or contact admin for access." ); // cy.get('[data-cy="open-app-button"]').verifyVisibleElement("have.text", "Open app") @@ -174,7 +173,7 @@ describe("Redirection error pages", () => { ); cy.url().should( "eq", - `http://localhost:8082/error/url-unavailable?appSlug=${data.slug}` + `http://localhost:8082/error/restricted` ); cy.get(commonSelectors.backToHomeButton).click(); cy.get(commonSelectors.pageSectionHeader).should("be.visible"); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/inviteflow.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/inviteflow.cy.js deleted file mode 100644 index 8b7c1d902b..0000000000 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/inviteflow.cy.js +++ /dev/null @@ -1,149 +0,0 @@ -import { commonSelectors } from "Selectors/common"; -import { fake } from "Fixtures/fake"; -import { usersText } from "Texts/manageUsers"; -import { usersSelector } from "Selectors/manageUsers"; -import { - manageUsersElements, - fillUserInviteForm, - confirmInviteElements, - selectUserGroup, - inviteUserWithUserGroups, - fetchAndVisitInviteLink, -} from "Support/utils/manageUsers"; -import { - navigateToManageUsers, - logout, - searchUser, - navigateToManageGroups, -} from "Support/utils/common"; -import { updateWorkspaceName } from "Support/utils/userPermissions"; -import { groupsSelector } from "Selectors/manageGroups"; -import { groupsText } from "Texts/manageGroups"; -import { addNewUser, visitWorkspaceInvitation, newInvite } from "Support/utils/onboarding"; -import { commonText } from "Texts/common"; -import { setSignupStatus, enableSignUp } from "Support/utils/manageSSO"; -import { ssoSelector } from "Selectors/manageSSO"; -import { - SignUpPageElements, - verifyConfirmEmailPage, - signUpLink, - verifyOnboardingQuestions, -} from "Support/utils/onboarding"; - -const data = {}; - -describe("user invite flow cases", () => { - beforeEach(() => { - cy.defaultWorkspaceLogin(); - }); - it("should verify the user signup after invited in a workspace", () => { - data.firstName = fake.firstName; - data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); - data.signUpName = fake.firstName; - data.workspaceName = fake.companyName; - - setSignupStatus(true); - navigateToManageUsers(); - fillUserInviteForm(data.firstName, data.email); - cy.get(usersSelector.buttonInviteUsers).click(); - cy.logoutApi(); - - cy.visit("/"); - cy.get(commonSelectors.createAnAccountLink).click(); - SignUpPageElements(); - - cy.clearAndType(commonSelectors.nameInputField, data.signUpName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.signUpButton).click(); - signUpLink(data.email); - cy.get(commonSelectors.setUpToolJetButton).click(); - verifyOnboardingQuestions(data.signUpName, data.workspaceName); - visitWorkspaceInvitation(data.email, "My workspace"); - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, usersText.password); - cy.get(commonSelectors.loginButton).click(); - - cy.get(commonSelectors.invitedUserName).verifyVisibleElement( - "have.text", - data.signUpName - ); - cy.get(commonSelectors.acceptInviteButton).click(); - }); - - it("should verify the user signup after invited in a workspace", () => { - data.firstName = fake.firstName; - data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); - data.signUpName = fake.firstName; - data.workspaceName = fake.companyName; - - setSignupStatus(true); - navigateToManageUsers(); - fillUserInviteForm(data.firstName, data.email); - cy.get(usersSelector.buttonInviteUsers).click(); - logout(); - - cy.get(ssoSelector.workspaceSubHeader).verifyVisibleElement( - "have.text", - "Sign in to your workspace - My workspace" - ); - cy.get(commonSelectors.signInSubHeader).verifyVisibleElement( - "have.text", - "New to this workspace?Sign up" - ); - cy.get(commonSelectors.createAnAccountLink).click(); - SignUpPageElements(); - cy.get(ssoSelector.workspaceSignUpHeader).verifyVisibleElement( - "have.text", - "Sign up to the workspace - My workspace" - ); - - cy.clearAndType(commonSelectors.nameInputField, data.signUpName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.signUpButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - "The user is already registered. Please check your inbox for the activation link" - ); - }); - - it("should verify exisiting user workspace signup", () => { - data.firstName = fake.firstName; - data.email = fake.email.toLowerCase().replaceAll("[^A-Za-z]", ""); - data.signUpName = fake.firstName; - data.workspaceName = fake.firstName.toLowerCase(); - - setSignupStatus(true); - navigateToManageUsers(); - addNewUser(data.firstName, data.email); - logout(); - - cy.get(commonSelectors.createAnAccountLink).click(); - cy.clearAndType(commonSelectors.nameInputField, data.firstName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.signUpButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - "User already exists in the workspace." - ); - cy.apiLogin(); - cy.apiCreateWorkspace(data.workspaceName, data.workspaceName); - cy.visit(`${data.workspaceName}`); - cy.wait(3000) - setSignupStatus(true, data.workspaceName); - logout(); - - cy.get(commonSelectors.createAnAccountLink).click(); - cy.clearAndType(commonSelectors.nameInputField, data.firstName); - cy.clearAndType(commonSelectors.emailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.signUpButton).click(); - - cy.defaultWorkspaceLogin(); - visitWorkspaceInvitation(data.email, data.workspaceName); - cy.verifyToastMessage(commonSelectors.toastMessage, usersText.inviteToast); - logout(); - }); -}); diff --git a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/profile.cy.js b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/profile.cy.js index 2c2d5fbee7..638c89fc31 100644 --- a/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/profile.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/platform/commonTestcases/workspace/profile.cy.js @@ -5,6 +5,7 @@ import { profileText } from "Texts/profile"; import { commonSelectors } from "Selectors/common"; import { fake } from "Fixtures/fake"; import { commonText } from "Texts/common"; +import { onboardingSelectors } from "Selectors/onboarding"; describe("Profile Settings", () => { const randomFirstName = fake.firstName; @@ -15,6 +16,7 @@ describe("Profile Settings", () => { common.navigateToProfile(); }); + // neeed to reset and seed bd after 1 run (as password changes will get 401 error ) it("Should verify the elements on profile settings page and name reset functionality", () => { profile.profilePageElements(); @@ -183,20 +185,16 @@ describe("Profile Settings", () => { ); common.logout(); - - cy.clearAndType(commonSelectors.workEmailInputField, commonText.email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); - cy.get(commonSelectors.loginButton).click(); + cy.clearAndType(onboardingSelectors.loginEmailInput, commonText.email); + cy.clearAndType(onboardingSelectors.loginPasswordInput, commonText.password); + cy.get(onboardingSelectors.signInButton).click(); cy.verifyToastMessage( commonSelectors.toastMessage, profileText.loginErrorToast ); - cy.clearAndType( - commonSelectors.passwordInputField, - profileText.newPassword - ); - cy.get(commonSelectors.signInButton).click(); + cy.clearAndType(onboardingSelectors.loginPasswordInput, profileText.newPassword); + cy.get(onboardingSelectors.signInButton).click(); common.navigateToProfile(); cy.clearAndType( @@ -213,7 +211,7 @@ describe("Profile Settings", () => { common.logout(); - cy.login(commonText.email, profileText.password); + cy.appUILogin(commonText.email, profileText.password); common.logout(); }); }); diff --git a/cypress-tests/cypress/fixtures/bulkUser/10usersupload.csv b/cypress-tests/cypress/fixtures/bulkUser/10usersupload.csv new file mode 100644 index 0000000000..a1ef49cb8e --- /dev/null +++ b/cypress-tests/cypress/fixtures/bulkUser/10usersupload.csv @@ -0,0 +1,11 @@ +First Name,Last Name,Email,User Role,Group +test1,user,test1@gmail.com,Builder, +test2,user,test3@gmail.com,End User, +Test3,Example,test12@gmail.com,Admin, +Test4,Example,test23@gmail.com,End User, +Test5,Example,test24@gmail.com,End User, +Test6,Example,test25@gmail.com,End User, +Test7,Example,test26@gmail.com,Admin, +Test8,Example,test27@gmail.com,Builder, +Test9,Example,test28@gmail.com,Builder, +Test10,Example,test29@gmail.com,End User, diff --git a/cypress-tests/cypress/fixtures/bulkUser/500_invite_users - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/500_invite_users - Sheet1.csv index 598a166256..23e3f2e728 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/500_invite_users - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/500_invite_users - Sheet1.csv @@ -1,499 +1,252 @@ -First Name,Last Name,Email,Groups -Vijay,Yadav,vjyaav12@gmail.com,All Users|Admin -Vijay,Yadav,vjyaav13@gmail.com,All Users -Vijay,Yadav,vjyaav14@gmail.com,All Users -Vijay,Yadav,vjyaav15@gmail.com,All Users -Vijay,Yadav,vjyaav16@gmail.com,All Users -Vijay,Yadav,vjyaav17@gmail.com,All Users -Vijay,Yadav,vjyaav18@gmail.com,All Users -Vijay,Yadav,vjyaav19@gmail.com,All Users -Vijay,Yadav,vjyaav20@gmail.com,All Users -Vijay,Yadav,vjyaav21@gmail.com,All Users -Vijay,Yadav,vjyaav22@gmail.com,All Users -Vijay,Yadav,vjyaav23@gmail.com,All Users -Vijay,Yadav,vjyaav24@gmail.com,All Users -Vijay,Yadav,vjyaav25@gmail.com,All Users -Vijay,Yadav,vjyaav26@gmail.com,All Users -Vijay,Yadav,vjyaav27@gmail.com,All Users -Vijay,Yadav,vjyaav28@gmail.com,All Users -Vijay,Yadav,vjyaav29@gmail.com,All Users -Vijay,Yadav,vjyaav30@gmail.com,All Users -Vijay,Yadav,vjyaav31@gmail.com,All Users -Vijay,Yadav,vjyaav32@gmail.com,All Users -Vijay,Yadav,vjyaav33@gmail.com,All Users -Vijay,Yadav,vjyaav34@gmail.com,All Users -Vijay,Yadav,vjyaav35@gmail.com,All Users -Vijay,Yadav,vjyaav36@gmail.com,All Users -Vijay,Yadav,vjyaav37@gmail.com,All Users -Vijay,Yadav,vjyaav38@gmail.com,All Users -Vijay,Yadav,vjyaav39@gmail.com,All Users -Vijay,Yadav,vjyaav40@gmail.com,All Users -Vijay,Yadav,vjyaav41@gmail.com,All Users -Vijay,Yadav,vjyaav42@gmail.com,All Users -Vijay,Yadav,vjyaav43@gmail.com,All Users -Vijay,Yadav,vjyaav44@gmail.com,All Users -Vijay,Yadav,vjyaav45@gmail.com,All Users -Vijay,Yadav,vjyaav46@gmail.com,All Users -Vijay,Yadav,vjyaav47@gmail.com,All Users -Vijay,Yadav,vjyaav48@gmail.com,All Users -Vijay,Yadav,vjyaav49@gmail.com,All Users -Vijay,Yadav,vjyaav50@gmail.com,All Users -Vijay,Yadav,vjyaav51@gmail.com,All Users -Vijay,Yadav,vjyaav52@gmail.com,All Users -Vijay,Yadav,vjyaav53@gmail.com,All Users -Vijay,Yadav,vjyaav54@gmail.com,All Users -Vijay,Yadav,vjyaav55@gmail.com,All Users -Vijay,Yadav,vjyaav56@gmail.com,All Users -Vijay,Yadav,vjyaav57@gmail.com,All Users -Vijay,Yadav,vjyaav58@gmail.com,All Users -Vijay,Yadav,vjyaav59@gmail.com,All Users -Vijay,Yadav,vjyaav60@gmail.com,All Users -Vijay,Yadav,vjyaav61@gmail.com,All Users -Vijay,Yadav,vjyaav62@gmail.com,All Users -Vijay,Yadav,vjyaav63@gmail.com,All Users -Vijay,Yadav,vjyaav64@gmail.com,All Users -Vijay,Yadav,vjyaav65@gmail.com,All Users -Vijay,Yadav,vjyaav66@gmail.com,All Users -Vijay,Yadav,vjyaav67@gmail.com,All Users -Vijay,Yadav,vjyaav68@gmail.com,All Users -Vijay,Yadav,vjyaav69@gmail.com,All Users -Vijay,Yadav,vjyaav70@gmail.com,All Users -Vijay,Yadav,vjyaav71@gmail.com,All Users -Vijay,Yadav,vjyaav72@gmail.com,All Users -Vijay,Yadav,vjyaav73@gmail.com,All Users -Vijay,Yadav,vjyaav74@gmail.com,All Users -Vijay,Yadav,vjyaav75@gmail.com,All Users -Vijay,Yadav,vjyaav76@gmail.com,All Users -Vijay,Yadav,vjyaav77@gmail.com,All Users -Vijay,Yadav,vjyaav78@gmail.com,All Users -Vijay,Yadav,vjyaav79@gmail.com,All Users -Vijay,Yadav,vjyaav80@gmail.com,All Users -Vijay,Yadav,vjyaav81@gmail.com,All Users -Vijay,Yadav,vjyaav82@gmail.com,All Users -Vijay,Yadav,vjyaav83@gmail.com,All Users -Vijay,Yadav,vjyaav84@gmail.com,All Users -Vijay,Yadav,vjyaav85@gmail.com,All Users -Vijay,Yadav,vjyaav86@gmail.com,All Users -Vijay,Yadav,vjyaav87@gmail.com,All Users -Vijay,Yadav,vjyaav88@gmail.com,All Users -Vijay,Yadav,vjyaav89@gmail.com,All Users -Vijay,Yadav,vjyaav90@gmail.com,All Users -Vijay,Yadav,vjyaav91@gmail.com,All Users -Vijay,Yadav,vjyaav92@gmail.com,All Users -Vijay,Yadav,vjyaav93@gmail.com,All Users -Vijay,Yadav,vjyaav94@gmail.com,All Users -Vijay,Yadav,vjyaav95@gmail.com,All Users -Vijay,Yadav,vjyaav96@gmail.com,All Users -Vijay,Yadav,vjyaav97@gmail.com,All Users -Vijay,Yadav,vjyaav98@gmail.com,All Users -Vijay,Yadav,vjyaav99@gmail.com,All Users -Vijay,Yadav,vjyaav100@gmail.com,All Users -Vijay,Yadav,vjyaav101@gmail.com,All Users -Vijay,Yadav,vjyaav102@gmail.com,All Users -Vijay,Yadav,vjyaav103@gmail.com,All Users -Vijay,Yadav,vjyaav104@gmail.com,All Users -Vijay,Yadav,vjyaav105@gmail.com,All Users -Vijay,Yadav,vjyaav106@gmail.com,All Users -Vijay,Yadav,vjyaav107@gmail.com,All Users -Vijay,Yadav,vjyaav108@gmail.com,All Users -Vijay,Yadav,vjyaav109@gmail.com,All Users -Vijay,Yadav,vjyaav110@gmail.com,All Users -Vijay,Yadav,vjyaav111@gmail.com,All Users -Vijay,Yadav,vjyaav112@gmail.com,All Users -Vijay,Yadav,vjyaav113@gmail.com,All Users -Vijay,Yadav,vjyaav114@gmail.com,All Users -Vijay,Yadav,vjyaav115@gmail.com,All Users -Vijay,Yadav,vjyaav116@gmail.com,All Users -Vijay,Yadav,vjyaav117@gmail.com,All Users -Vijay,Yadav,vjyaav118@gmail.com,All Users -Vijay,Yadav,vjyaav119@gmail.com,All Users -Vijay,Yadav,vjyaav120@gmail.com,All Users -Vijay,Yadav,vjyaav121@gmail.com,All Users -Vijay,Yadav,vjyaav122@gmail.com,All Users -Vijay,Yadav,vjyaav123@gmail.com,All Users -Vijay,Yadav,vjyaav124@gmail.com,All Users -Vijay,Yadav,vjyaav125@gmail.com,All Users -Vijay,Yadav,vjyaav126@gmail.com,All Users -Vijay,Yadav,vjyaav127@gmail.com,All Users -Vijay,Yadav,vjyaav128@gmail.com,All Users -Vijay,Yadav,vjyaav129@gmail.com,All Users -Vijay,Yadav,vjyaav130@gmail.com,All Users -Vijay,Yadav,vjyaav131@gmail.com,All Users -Vijay,Yadav,vjyaav132@gmail.com,All Users -Vijay,Yadav,vjyaav133@gmail.com,All Users -Vijay,Yadav,vjyaav134@gmail.com,All Users -Vijay,Yadav,vjyaav135@gmail.com,All Users -Vijay,Yadav,vjyaav136@gmail.com,All Users -Vijay,Yadav,vjyaav137@gmail.com,All Users -Vijay,Yadav,vjyaav138@gmail.com,All Users -Vijay,Yadav,vjyaav139@gmail.com,All Users -Vijay,Yadav,vjyaav140@gmail.com,All Users -Vijay,Yadav,vjyaav141@gmail.com,All Users -Vijay,Yadav,vjyaav142@gmail.com,All Users -Vijay,Yadav,vjyaav143@gmail.com,All Users -Vijay,Yadav,vjyaav144@gmail.com,All Users -Vijay,Yadav,vjyaav145@gmail.com,All Users -Vijay,Yadav,vjyaav146@gmail.com,All Users -Vijay,Yadav,vjyaav147@gmail.com,All Users -Vijay,Yadav,vjyaav148@gmail.com,All Users -Vijay,Yadav,vjyaav149@gmail.com,All Users -Vijay,Yadav,vjyaav150@gmail.com,All Users -Vijay,Yadav,vjyaav151@gmail.com,All Users -Vijay,Yadav,vjyaav152@gmail.com,All Users -Vijay,Yadav,vjyaav153@gmail.com,All Users -Vijay,Yadav,vjyaav154@gmail.com,All Users -Vijay,Yadav,vjyaav155@gmail.com,All Users -Vijay,Yadav,vjyaav156@gmail.com,All Users -Vijay,Yadav,vjyaav157@gmail.com,All Users -Vijay,Yadav,vjyaav158@gmail.com,All Users -Vijay,Yadav,vjyaav159@gmail.com,All Users -Vijay,Yadav,vjyaav160@gmail.com,All Users -Vijay,Yadav,vjyaav161@gmail.com,All Users -Vijay,Yadav,vjyaav162@gmail.com,All Users -Vijay,Yadav,vjyaav163@gmail.com,All Users -Vijay,Yadav,vjyaav164@gmail.com,All Users -Vijay,Yadav,vjyaav165@gmail.com,All Users -Vijay,Yadav,vjyaav166@gmail.com,All Users -Vijay,Yadav,vjyaav167@gmail.com,All Users -Vijay,Yadav,vjyaav168@gmail.com,All Users -Vijay,Yadav,vjyaav169@gmail.com,All Users -Vijay,Yadav,vjyaav170@gmail.com,All Users -Vijay,Yadav,vjyaav171@gmail.com,All Users -Vijay,Yadav,vjyaav172@gmail.com,All Users -Vijay,Yadav,vjyaav173@gmail.com,All Users -Vijay,Yadav,vjyaav174@gmail.com,All Users -Vijay,Yadav,vjyaav175@gmail.com,All Users -Vijay,Yadav,vjyaav176@gmail.com,All Users -Vijay,Yadav,vjyaav177@gmail.com,All Users -Vijay,Yadav,vjyaav178@gmail.com,All Users -Vijay,Yadav,vjyaav179@gmail.com,All Users -Vijay,Yadav,vjyaav180@gmail.com,All Users -Vijay,Yadav,vjyaav181@gmail.com,All Users -Vijay,Yadav,vjyaav182@gmail.com,All Users -Vijay,Yadav,vjyaav183@gmail.com,All Users -Vijay,Yadav,vjyaav184@gmail.com,All Users -Vijay,Yadav,vjyaav185@gmail.com,All Users -Vijay,Yadav,vjyaav186@gmail.com,All Users -Vijay,Yadav,vjyaav187@gmail.com,All Users -Vijay,Yadav,vjyaav188@gmail.com,All Users -Vijay,Yadav,vjyaav189@gmail.com,All Users -Vijay,Yadav,vjyaav190@gmail.com,All Users -Vijay,Yadav,vjyaav191@gmail.com,All Users -Vijay,Yadav,vjyaav192@gmail.com,All Users -Vijay,Yadav,vjyaav193@gmail.com,All Users -Vijay,Yadav,vjyaav194@gmail.com,All Users -Vijay,Yadav,vjyaav195@gmail.com,All Users -Vijay,Yadav,vjyaav196@gmail.com,All Users -Vijay,Yadav,vjyaav197@gmail.com,All Users -Vijay,Yadav,vjyaav198@gmail.com,All Users -Vijay,Yadav,vjyaav199@gmail.com,All Users -Vijay,Yadav,vjyaav200@gmail.com,All Users -Vijay,Yadav,vjyaav201@gmail.com,All Users -Vijay,Yadav,vjyaav202@gmail.com,All Users -Vijay,Yadav,vjyaav203@gmail.com,All Users -Vijay,Yadav,vjyaav204@gmail.com,All Users -Vijay,Yadav,vjyaav205@gmail.com,All Users -Vijay,Yadav,vjyaav206@gmail.com,All Users -Vijay,Yadav,vjyaav207@gmail.com,All Users -Vijay,Yadav,vjyaav208@gmail.com,All Users -Vijay,Yadav,vjyaav209@gmail.com,All Users -Vijay,Yadav,vjyaav210@gmail.com,All Users -Vijay,Yadav,vjyaav211@gmail.com,All Users -Vijay,Yadav,vjyaav212@gmail.com,All Users -Vijay,Yadav,vjyaav213@gmail.com,All Users -Vijay,Yadav,vjyaav214@gmail.com,All Users -Vijay,Yadav,vjyaav215@gmail.com,All Users -Vijay,Yadav,vjyaav216@gmail.com,All Users -Vijay,Yadav,vjyaav217@gmail.com,All Users -Vijay,Yadav,vjyaav218@gmail.com,All Users -Vijay,Yadav,vjyaav219@gmail.com,All Users -Vijay,Yadav,vjyaav220@gmail.com,All Users -Vijay,Yadav,vjyaav221@gmail.com,All Users -Vijay,Yadav,vjyaav222@gmail.com,All Users -Vijay,Yadav,vjyaav223@gmail.com,All Users -Vijay,Yadav,vjyaav224@gmail.com,All Users -Vijay,Yadav,vjyaav225@gmail.com,All Users -Vijay,Yadav,vjyaav226@gmail.com,All Users -Vijay,Yadav,vjyaav227@gmail.com,All Users -Vijay,Yadav,vjyaav228@gmail.com,All Users -Vijay,Yadav,vjyaav229@gmail.com,All Users -Vijay,Yadav,vjyaav230@gmail.com,All Users -Vijay,Yadav,vjyaav231@gmail.com,All Users -Vijay,Yadav,vjyaav232@gmail.com,All Users -Vijay,Yadav,vjyaav233@gmail.com,All Users -Vijay,Yadav,vjyaav234@gmail.com,All Users -Vijay,Yadav,vjyaav235@gmail.com,All Users -Vijay,Yadav,vjyaav236@gmail.com,All Users -Vijay,Yadav,vjyaav237@gmail.com,All Users -Vijay,Yadav,vjyaav238@gmail.com,All Users -Vijay,Yadav,vjyaav239@gmail.com,All Users -Vijay,Yadav,vjyaav240@gmail.com,All Users -Vijay,Yadav,vjyaav241@gmail.com,All Users -Vijay,Yadav,vjyaav242@gmail.com,All Users -Vijay,Yadav,vjyaav243@gmail.com,All Users -Vijay,Yadav,vjyaav244@gmail.com,All Users -Vijay,Yadav,vjyaav245@gmail.com,All Users -Vijay,Yadav,vjyaav246@gmail.com,All Users -Vijay,Yadav,vjyaav247@gmail.com,All Users -Vijay,Yadav,vjyaav248@gmail.com,All Users -Vijay,Yadav,vjyaav249@gmail.com,All Users -Vijay,Yadav,vjyaav250@gmail.com,All Users -Vijay,Yadav,vjyaav251@gmail.com,All Users -Vijay,Yadav,vjyaav252@gmail.com,All Users -Vijay,Yadav,vjyaav253@gmail.com,All Users -Vijay,Yadav,vjyaav254@gmail.com,All Users -Vijay,Yadav,vjyaav255@gmail.com,All Users -Vijay,Yadav,vjyaav256@gmail.com,All Users -Vijay,Yadav,vjyaav257@gmail.com,All Users -Vijay,Yadav,vjyaav258@gmail.com,All Users -Vijay,Yadav,vjyaav259@gmail.com,All Users -Vijay,Yadav,vjyaav260@gmail.com,All Users -Vijay,Yadav,vjyaav261@gmail.com,All Users -Vijay,Yadav,vjyaav262@gmail.com,All Users -Vijay,Yadav,vjyaav263@gmail.com,All Users -Vijay,Yadav,vjyaav264@gmail.com,All Users -Vijay,Yadav,vjyaav265@gmail.com,All Users -Vijay,Yadav,vjyaav266@gmail.com,All Users -Vijay,Yadav,vjyaav267@gmail.com,All Users -Vijay,Yadav,vjyaav268@gmail.com,All Users -Vijay,Yadav,vjyaav269@gmail.com,All Users -Vijay,Yadav,vjyaav270@gmail.com,All Users -Vijay,Yadav,vjyaav271@gmail.com,All Users -Vijay,Yadav,vjyaav272@gmail.com,All Users -Vijay,Yadav,vjyaav273@gmail.com,All Users -Vijay,Yadav,vjyaav274@gmail.com,All Users -Vijay,Yadav,vjyaav275@gmail.com,All Users -Vijay,Yadav,vjyaav276@gmail.com,All Users -Vijay,Yadav,vjyaav277@gmail.com,All Users -Vijay,Yadav,vjyaav278@gmail.com,All Users -Vijay,Yadav,vjyaav279@gmail.com,All Users -Vijay,Yadav,vjyaav280@gmail.com,All Users -Vijay,Yadav,vjyaav281@gmail.com,All Users -Vijay,Yadav,vjyaav282@gmail.com,All Users -Vijay,Yadav,vjyaav283@gmail.com,All Users -Vijay,Yadav,vjyaav284@gmail.com,All Users -Vijay,Yadav,vjyaav285@gmail.com,All Users -Vijay,Yadav,vjyaav286@gmail.com,All Users -Vijay,Yadav,vjyaav287@gmail.com,All Users -Vijay,Yadav,vjyaav288@gmail.com,All Users -Vijay,Yadav,vjyaav289@gmail.com,All Users -Vijay,Yadav,vjyaav290@gmail.com,All Users -Vijay,Yadav,vjyaav291@gmail.com,All Users -Vijay,Yadav,vjyaav292@gmail.com,All Users -Vijay,Yadav,vjyaav293@gmail.com,All Users -Vijay,Yadav,vjyaav294@gmail.com,All Users -Vijay,Yadav,vjyaav295@gmail.com,All Users -Vijay,Yadav,vjyaav296@gmail.com,All Users -Vijay,Yadav,vjyaav297@gmail.com,All Users -Vijay,Yadav,vjyaav298@gmail.com,All Users -Vijay,Yadav,vjyaav299@gmail.com,All Users -Vijay,Yadav,vjyaav300@gmail.com,All Users -Vijay,Yadav,vjyaav301@gmail.com,All Users -Vijay,Yadav,vjyaav302@gmail.com,All Users -Vijay,Yadav,vjyaav303@gmail.com,All Users -Vijay,Yadav,vjyaav304@gmail.com,All Users -Vijay,Yadav,vjyaav305@gmail.com,All Users -Vijay,Yadav,vjyaav306@gmail.com,All Users -Vijay,Yadav,vjyaav307@gmail.com,All Users -Vijay,Yadav,vjyaav308@gmail.com,All Users -Vijay,Yadav,vjyaav309@gmail.com,All Users -Vijay,Yadav,vjyaav310@gmail.com,All Users -Vijay,Yadav,vjyaav311@gmail.com,All Users -Vijay,Yadav,vjyaav312@gmail.com,All Users -Vijay,Yadav,vjyaav313@gmail.com,All Users -Vijay,Yadav,vjyaav314@gmail.com,All Users -Vijay,Yadav,vjyaav315@gmail.com,All Users -Vijay,Yadav,vjyaav316@gmail.com,All Users -Vijay,Yadav,vjyaav317@gmail.com,All Users -Vijay,Yadav,vjyaav318@gmail.com,All Users -Vijay,Yadav,vjyaav319@gmail.com,All Users -Vijay,Yadav,vjyaav320@gmail.com,All Users -Vijay,Yadav,vjyaav321@gmail.com,All Users -Vijay,Yadav,vjyaav322@gmail.com,All Users -Vijay,Yadav,vjyaav323@gmail.com,All Users -Vijay,Yadav,vjyaav324@gmail.com,All Users -Vijay,Yadav,vjyaav325@gmail.com,All Users -Vijay,Yadav,vjyaav326@gmail.com,All Users -Vijay,Yadav,vjyaav327@gmail.com,All Users -Vijay,Yadav,vjyaav328@gmail.com,All Users -Vijay,Yadav,vjyaav329@gmail.com,All Users -Vijay,Yadav,vjyaav330@gmail.com,All Users -Vijay,Yadav,vjyaav331@gmail.com,All Users -Vijay,Yadav,vjyaav332@gmail.com,All Users -Vijay,Yadav,vjyaav333@gmail.com,All Users -Vijay,Yadav,vjyaav334@gmail.com,All Users -Vijay,Yadav,vjyaav335@gmail.com,All Users -Vijay,Yadav,vjyaav336@gmail.com,All Users -Vijay,Yadav,vjyaav337@gmail.com,All Users -Vijay,Yadav,vjyaav338@gmail.com,All Users -Vijay,Yadav,vjyaav339@gmail.com,All Users -Vijay,Yadav,vjyaav340@gmail.com,All Users -Vijay,Yadav,vjyaav341@gmail.com,All Users -Vijay,Yadav,vjyaav342@gmail.com,All Users -Vijay,Yadav,vjyaav343@gmail.com,All Users -Vijay,Yadav,vjyaav344@gmail.com,All Users -Vijay,Yadav,vjyaav345@gmail.com,All Users -Vijay,Yadav,vjyaav346@gmail.com,All Users -Vijay,Yadav,vjyaav347@gmail.com,All Users -Vijay,Yadav,vjyaav348@gmail.com,All Users -Vijay,Yadav,vjyaav349@gmail.com,All Users -Vijay,Yadav,vjyaav350@gmail.com,All Users -Vijay,Yadav,vjyaav351@gmail.com,All Users -Vijay,Yadav,vjyaav352@gmail.com,All Users -Vijay,Yadav,vjyaav353@gmail.com,All Users -Vijay,Yadav,vjyaav354@gmail.com,All Users -Vijay,Yadav,vjyaav355@gmail.com,All Users -Vijay,Yadav,vjyaav356@gmail.com,All Users -Vijay,Yadav,vjyaav357@gmail.com,All Users -Vijay,Yadav,vjyaav358@gmail.com,All Users -Vijay,Yadav,vjyaav359@gmail.com,All Users -Vijay,Yadav,vjyaav360@gmail.com,All Users -Vijay,Yadav,vjyaav361@gmail.com,All Users -Vijay,Yadav,vjyaav362@gmail.com,All Users -Vijay,Yadav,vjyaav363@gmail.com,All Users -Vijay,Yadav,vjyaav364@gmail.com,All Users -Vijay,Yadav,vjyaav365@gmail.com,All Users -Vijay,Yadav,vjyaav366@gmail.com,All Users -Vijay,Yadav,vjyaav367@gmail.com,All Users -Vijay,Yadav,vjyaav368@gmail.com,All Users -Vijay,Yadav,vjyaav369@gmail.com,All Users -Vijay,Yadav,vjyaav370@gmail.com,All Users -Vijay,Yadav,vjyaav371@gmail.com,All Users -Vijay,Yadav,vjyaav372@gmail.com,All Users -Vijay,Yadav,vjyaav373@gmail.com,All Users -Vijay,Yadav,vjyaav374@gmail.com,All Users -Vijay,Yadav,vjyaav375@gmail.com,All Users -Vijay,Yadav,vjyaav376@gmail.com,All Users -Vijay,Yadav,vjyaav377@gmail.com,All Users -Vijay,Yadav,vjyaav378@gmail.com,All Users -Vijay,Yadav,vjyaav379@gmail.com,All Users -Vijay,Yadav,vjyaav380@gmail.com,All Users -Vijay,Yadav,vjyaav381@gmail.com,All Users -Vijay,Yadav,vjyaav382@gmail.com,All Users -Vijay,Yadav,vjyaav383@gmail.com,All Users -Vijay,Yadav,vjyaav384@gmail.com,All Users -Vijay,Yadav,vjyaav385@gmail.com,All Users -Vijay,Yadav,vjyaav386@gmail.com,All Users -Vijay,Yadav,vjyaav387@gmail.com,All Users -Vijay,Yadav,vjyaav388@gmail.com,All Users -Vijay,Yadav,vjyaav389@gmail.com,All Users -Vijay,Yadav,vjyaav390@gmail.com,All Users -Vijay,Yadav,vjyaav391@gmail.com,All Users -Vijay,Yadav,vjyaav392@gmail.com,All Users -Vijay,Yadav,vjyaav393@gmail.com,All Users -Vijay,Yadav,vjyaav394@gmail.com,All Users -Vijay,Yadav,vjyaav395@gmail.com,All Users -Vijay,Yadav,vjyaav396@gmail.com,All Users -Vijay,Yadav,vjyaav397@gmail.com,All Users -Vijay,Yadav,vjyaav398@gmail.com,All Users -Vijay,Yadav,vjyaav399@gmail.com,All Users -Vijay,Yadav,vjyaav400@gmail.com,All Users -Vijay,Yadav,vjyaav401@gmail.com,All Users -Vijay,Yadav,vjyaav402@gmail.com,All Users -Vijay,Yadav,vjyaav403@gmail.com,All Users -Vijay,Yadav,vjyaav404@gmail.com,All Users -Vijay,Yadav,vjyaav405@gmail.com,All Users -Vijay,Yadav,vjyaav406@gmail.com,All Users -Vijay,Yadav,vjyaav407@gmail.com,All Users -Vijay,Yadav,vjyaav408@gmail.com,All Users -Vijay,Yadav,vjyaav409@gmail.com,All Users -Vijay,Yadav,vjyaav410@gmail.com,All Users -Vijay,Yadav,vjyaav411@gmail.com,All Users -Vijay,Yadav,vjyaav412@gmail.com,All Users -Vijay,Yadav,vjyaav413@gmail.com,All Users -Vijay,Yadav,vjyaav414@gmail.com,All Users -Vijay,Yadav,vjyaav415@gmail.com,All Users -Vijay,Yadav,vjyaav416@gmail.com,All Users -Vijay,Yadav,vjyaav417@gmail.com,All Users -Vijay,Yadav,vjyaav418@gmail.com,All Users -Vijay,Yadav,vjyaav419@gmail.com,All Users -Vijay,Yadav,vjyaav420@gmail.com,All Users -Vijay,Yadav,vjyaav421@gmail.com,All Users -Vijay,Yadav,vjyaav422@gmail.com,All Users -Vijay,Yadav,vjyaav423@gmail.com,All Users -Vijay,Yadav,vjyaav424@gmail.com,All Users -Vijay,Yadav,vjyaav425@gmail.com,All Users -Vijay,Yadav,vjyaav426@gmail.com,All Users -Vijay,Yadav,vjyaav427@gmail.com,All Users -Vijay,Yadav,vjyaav428@gmail.com,All Users -Vijay,Yadav,vjyaav429@gmail.com,All Users -Vijay,Yadav,vjyaav430@gmail.com,All Users -Vijay,Yadav,vjyaav431@gmail.com,All Users -Vijay,Yadav,vjyaav432@gmail.com,All Users -Vijay,Yadav,vjyaav433@gmail.com,All Users -Vijay,Yadav,vjyaav434@gmail.com,All Users -Vijay,Yadav,vjyaav435@gmail.com,All Users -Vijay,Yadav,vjyaav436@gmail.com,All Users -Vijay,Yadav,vjyaav437@gmail.com,All Users -Vijay,Yadav,vjyaav438@gmail.com,All Users -Vijay,Yadav,vjyaav439@gmail.com,All Users -Vijay,Yadav,vjyaav440@gmail.com,All Users -Vijay,Yadav,vjyaav441@gmail.com,All Users -Vijay,Yadav,vjyaav442@gmail.com,All Users -Vijay,Yadav,vjyaav443@gmail.com,All Users -Vijay,Yadav,vjyaav444@gmail.com,All Users -Vijay,Yadav,vjyaav445@gmail.com,All Users -Vijay,Yadav,vjyaav446@gmail.com,All Users -Vijay,Yadav,vjyaav447@gmail.com,All Users -Vijay,Yadav,vjyaav448@gmail.com,All Users -Vijay,Yadav,vjyaav449@gmail.com,All Users -Vijay,Yadav,vjyaav450@gmail.com,All Users -Vijay,Yadav,vjyaav451@gmail.com,All Users -Vijay,Yadav,vjyaav452@gmail.com,All Users -Vijay,Yadav,vjyaav453@gmail.com,All Users -Vijay,Yadav,vjyaav454@gmail.com,All Users -Vijay,Yadav,vjyaav455@gmail.com,All Users -Vijay,Yadav,vjyaav456@gmail.com,All Users -Vijay,Yadav,vjyaav457@gmail.com,All Users -Vijay,Yadav,vjyaav458@gmail.com,All Users -Vijay,Yadav,vjyaav459@gmail.com,All Users -Vijay,Yadav,vjyaav460@gmail.com,All Users -Vijay,Yadav,vjyaav461@gmail.com,All Users -Vijay,Yadav,vjyaav462@gmail.com,All Users -Vijay,Yadav,vjyaav463@gmail.com,All Users -Vijay,Yadav,vjyaav464@gmail.com,All Users -Vijay,Yadav,vjyaav465@gmail.com,All Users -Vijay,Yadav,vjyaav466@gmail.com,All Users -Vijay,Yadav,vjyaav467@gmail.com,All Users -Vijay,Yadav,vjyaav468@gmail.com,All Users -Vijay,Yadav,vjyaav469@gmail.com,All Users -Vijay,Yadav,vjyaav470@gmail.com,All Users -Vijay,Yadav,vjyaav471@gmail.com,All Users -Vijay,Yadav,vjyaav472@gmail.com,All Users -Vijay,Yadav,vjyaav473@gmail.com,All Users -Vijay,Yadav,vjyaav474@gmail.com,All Users -Vijay,Yadav,vjyaav475@gmail.com,All Users -Vijay,Yadav,vjyaav476@gmail.com,All Users -Vijay,Yadav,vjyaav477@gmail.com,All Users -Vijay,Yadav,vjyaav478@gmail.com,All Users -Vijay,Yadav,vjyaav479@gmail.com,All Users -Vijay,Yadav,vjyaav480@gmail.com,All Users -Vijay,Yadav,vjyaav481@gmail.com,All Users -Vijay,Yadav,vjyaav482@gmail.com,All Users -Vijay,Yadav,vjyaav483@gmail.com,All Users -Vijay,Yadav,vjyaav484@gmail.com,All Users -Vijay,Yadav,vjyaav485@gmail.com,All Users -Vijay,Yadav,vjyaav486@gmail.com,All Users -Vijay,Yadav,vjyaav487@gmail.com,All Users -Vijay,Yadav,vjyaav488@gmail.com,All Users -Vijay,Yadav,vjyaav489@gmail.com,All Users -Vijay,Yadav,vjyaav490@gmail.com,All Users -Vijay,Yadav,vjyaav491@gmail.com,All Users -Vijay,Yadav,vjyaav492@gmail.com,All Users -Vijay,Yadav,vjyaav493@gmail.com,All Users -Vijay,Yadav,vjyaav494@gmail.com,All Users -Vijay,Yadav,vjyaav495@gmail.com,All Users -Vijay,Yadav,vjyaav496@gmail.com,All Users -Vijay,Yadav,vjyaav497@gmail.com,All Users -Vijay,Yadav,vjyaav498@gmail.com,All Users -Vijay,Yadav,vjyaav499@gmail.com,All Users -Vijay,Yadav,vjyaav500@gmail.com,All Users -Vijay,Yadav,vjyaav501@gmail.com,All Users -Vijay,Yadav,vjyaav502@gmail.com,All Users -Vijay,Yadav,vjyaav503@gmail.com,All Users -Vijay,Yadav,vjyaav504@gmail.com,All Users -Vijay,Yadav,vjyaav505@gmail.com,All Users -Vijay,Yadav,vjyaav506@gmail.com,All Users -Vijay,Yadav,vjyaav507@gmail.com,All Users -Vijay,Yadav,vjyaav508@gmail.com,All Users -Vijay,Yadav,vjyaav509@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +Vijay,Yadav,vjyaav1@gmail.com,Admin, +Vijay,Yadav,vjyaav2@gmail.com,Builder, +Vijay,Yadav,vjyaav3@gmail.com,Builder, +Vijay,Yadav,vjyaav4@gmail.com,End User, +Vijay,Yadav,vjyaav5@gmail.com,End User, +Vijay,Yadav,vjyaav6@gmail.com,End User, +Vijay,Yadav,vjyaav7@gmail.com,End User, +Vijay,Yadav,vjyaav8@gmail.com,End User, +Vijay,Yadav,vjyaav9@gmail.com,End User, +Vijay,Yadav,vjyaav10@gmail.com,End User, +Vijay,Yadav,vjyaav11@gmail.com,End User, +Vijay,Yadav,vjyaav12@gmail.com,End User, +Vijay,Yadav,vjyaav13@gmail.com,End User, +Vijay,Yadav,vjyaav14@gmail.com,End User, +Vijay,Yadav,vjyaav15@gmail.com,End User, +Vijay,Yadav,vjyaav16@gmail.com,End User, +Vijay,Yadav,vjyaav17@gmail.com,End User, +Vijay,Yadav,vjyaav18@gmail.com,End User, +Vijay,Yadav,vjyaav19@gmail.com,End User, +Vijay,Yadav,vjyaav20@gmail.com,End User, +Vijay,Yadav,vjyaav21@gmail.com,End User, +Vijay,Yadav,vjyaav22@gmail.com,End User, +Vijay,Yadav,vjyaav23@gmail.com,End User, +Vijay,Yadav,vjyaav24@gmail.com,End User, +Vijay,Yadav,vjyaav25@gmail.com,End User, +Vijay,Yadav,vjyaav26@gmail.com,End User, +Vijay,Yadav,vjyaav27@gmail.com,End User, +Vijay,Yadav,vjyaav28@gmail.com,End User, +Vijay,Yadav,vjyaav29@gmail.com,End User, +Vijay,Yadav,vjyaav30@gmail.com,End User, +Vijay,Yadav,vjyaav31@gmail.com,End User, +Vijay,Yadav,vjyaav32@gmail.com,End User, +Vijay,Yadav,vjyaav33@gmail.com,End User, +Vijay,Yadav,vjyaav34@gmail.com,End User, +Vijay,Yadav,vjyaav35@gmail.com,End User, +Vijay,Yadav,vjyaav36@gmail.com,End User, +Vijay,Yadav,vjyaav37@gmail.com,End User, +Vijay,Yadav,vjyaav38@gmail.com,End User, +Vijay,Yadav,vjyaav39@gmail.com,End User, +Vijay,Yadav,vjyaav40@gmail.com,End User, +Vijay,Yadav,vjyaav41@gmail.com,End User, +Vijay,Yadav,vjyaav42@gmail.com,End User, +Vijay,Yadav,vjyaav43@gmail.com,End User, +Vijay,Yadav,vjyaav44@gmail.com,End User, +Vijay,Yadav,vjyaav45@gmail.com,End User, +Vijay,Yadav,vjyaav46@gmail.com,End User, +Vijay,Yadav,vjyaav47@gmail.com,End User, +Vijay,Yadav,vjyaav48@gmail.com,End User, +Vijay,Yadav,vjyaav49@gmail.com,End User, +Vijay,Yadav,vjyaav50@gmail.com,End User, +Vijay,Yadav,vjyaav51@gmail.com,End User, +Vijay,Yadav,vjyaav52@gmail.com,End User, +Vijay,Yadav,vjyaav53@gmail.com,End User, +Vijay,Yadav,vjyaav54@gmail.com,End User, +Vijay,Yadav,vjyaav55@gmail.com,End User, +Vijay,Yadav,vjyaav56@gmail.com,End User, +Vijay,Yadav,vjyaav57@gmail.com,End User, +Vijay,Yadav,vjyaav58@gmail.com,End User, +Vijay,Yadav,vjyaav59@gmail.com,End User, +Vijay,Yadav,vjyaav60@gmail.com,End User, +Vijay,Yadav,vjyaav61@gmail.com,End User, +Vijay,Yadav,vjyaav62@gmail.com,End User, +Vijay,Yadav,vjyaav63@gmail.com,End User, +Vijay,Yadav,vjyaav64@gmail.com,End User, +Vijay,Yadav,vjyaav65@gmail.com,End User, +Vijay,Yadav,vjyaav66@gmail.com,End User, +Vijay,Yadav,vjyaav67@gmail.com,End User, +Vijay,Yadav,vjyaav68@gmail.com,End User, +Vijay,Yadav,vjyaav69@gmail.com,End User, +Vijay,Yadav,vjyaav70@gmail.com,End User, +Vijay,Yadav,vjyaav71@gmail.com,End User, +Vijay,Yadav,vjyaav72@gmail.com,End User, +Vijay,Yadav,vjyaav73@gmail.com,End User, +Vijay,Yadav,vjyaav74@gmail.com,End User, +Vijay,Yadav,vjyaav75@gmail.com,End User, +Vijay,Yadav,vjyaav76@gmail.com,End User, +Vijay,Yadav,vjyaav77@gmail.com,End User, +Vijay,Yadav,vjyaav78@gmail.com,End User, +Vijay,Yadav,vjyaav79@gmail.com,End User, +Vijay,Yadav,vjyaav80@gmail.com,End User, +Vijay,Yadav,vjyaav81@gmail.com,End User, +Vijay,Yadav,vjyaav82@gmail.com,End User, +Vijay,Yadav,vjyaav83@gmail.com,End User, +Vijay,Yadav,vjyaav84@gmail.com,End User, +Vijay,Yadav,vjyaav85@gmail.com,End User, +Vijay,Yadav,vjyaav86@gmail.com,End User, +Vijay,Yadav,vjyaav87@gmail.com,End User, +Vijay,Yadav,vjyaav88@gmail.com,End User, +Vijay,Yadav,vjyaav89@gmail.com,End User, +Vijay,Yadav,vjyaav90@gmail.com,End User, +Vijay,Yadav,vjyaav91@gmail.com,End User, +Vijay,Yadav,vjyaav92@gmail.com,End User, +Vijay,Yadav,vjyaav93@gmail.com,End User, +Vijay,Yadav,vjyaav94@gmail.com,End User, +Vijay,Yadav,vjyaav95@gmail.com,End User, +Vijay,Yadav,vjyaav96@gmail.com,End User, +Vijay,Yadav,vjyaav97@gmail.com,End User, +Vijay,Yadav,vjyaav98@gmail.com,End User, +Vijay,Yadav,vjyaav99@gmail.com,End User, +Vijay,Yadav,vjyaav100@gmail.com,End User, +Vijay,Yadav,vjyaav101@gmail.com,End User, +Vijay,Yadav,vjyaav102@gmail.com,End User, +Vijay,Yadav,vjyaav103@gmail.com,End User, +Vijay,Yadav,vjyaav104@gmail.com,End User, +Vijay,Yadav,vjyaav105@gmail.com,End User, +Vijay,Yadav,vjyaav106@gmail.com,End User, +Vijay,Yadav,vjyaav107@gmail.com,End User, +Vijay,Yadav,vjyaav108@gmail.com,End User, +Vijay,Yadav,vjyaav109@gmail.com,End User, +Vijay,Yadav,vjyaav110@gmail.com,End User, +Vijay,Yadav,vjyaav111@gmail.com,End User, +Vijay,Yadav,vjyaav112@gmail.com,End User, +Vijay,Yadav,vjyaav113@gmail.com,End User, +Vijay,Yadav,vjyaav114@gmail.com,End User, +Vijay,Yadav,vjyaav115@gmail.com,End User, +Vijay,Yadav,vjyaav116@gmail.com,End User, +Vijay,Yadav,vjyaav117@gmail.com,End User, +Vijay,Yadav,vjyaav118@gmail.com,End User, +Vijay,Yadav,vjyaav119@gmail.com,End User, +Vijay,Yadav,vjyaav120@gmail.com,End User, +Vijay,Yadav,vjyaav121@gmail.com,End User, +Vijay,Yadav,vjyaav122@gmail.com,End User, +Vijay,Yadav,vjyaav123@gmail.com,End User, +Vijay,Yadav,vjyaav124@gmail.com,End User, +Vijay,Yadav,vjyaav125@gmail.com,End User, +Vijay,Yadav,vjyaav126@gmail.com,End User, +Vijay,Yadav,vjyaav127@gmail.com,End User, +Vijay,Yadav,vjyaav128@gmail.com,End User, +Vijay,Yadav,vjyaav129@gmail.com,End User, +Vijay,Yadav,vjyaav130@gmail.com,End User, +Vijay,Yadav,vjyaav131@gmail.com,End User, +Vijay,Yadav,vjyaav132@gmail.com,End User, +Vijay,Yadav,vjyaav133@gmail.com,End User, +Vijay,Yadav,vjyaav134@gmail.com,End User, +Vijay,Yadav,vjyaav135@gmail.com,End User, +Vijay,Yadav,vjyaav136@gmail.com,End User, +Vijay,Yadav,vjyaav137@gmail.com,End User, +Vijay,Yadav,vjyaav138@gmail.com,End User, +Vijay,Yadav,vjyaav139@gmail.com,End User, +Vijay,Yadav,vjyaav140@gmail.com,End User, +Vijay,Yadav,vjyaav141@gmail.com,End User, +Vijay,Yadav,vjyaav142@gmail.com,End User, +Vijay,Yadav,vjyaav143@gmail.com,End User, +Vijay,Yadav,vjyaav144@gmail.com,End User, +Vijay,Yadav,vjyaav145@gmail.com,End User, +Vijay,Yadav,vjyaav146@gmail.com,End User, +Vijay,Yadav,vjyaav147@gmail.com,End User, +Vijay,Yadav,vjyaav148@gmail.com,End User, +Vijay,Yadav,vjyaav149@gmail.com,End User, +Vijay,Yadav,vjyaav150@gmail.com,End User, +Vijay,Yadav,vjyaav151@gmail.com,End User, +Vijay,Yadav,vjyaav152@gmail.com,End User, +Vijay,Yadav,vjyaav153@gmail.com,End User, +Vijay,Yadav,vjyaav154@gmail.com,End User, +Vijay,Yadav,vjyaav155@gmail.com,End User, +Vijay,Yadav,vjyaav156@gmail.com,End User, +Vijay,Yadav,vjyaav157@gmail.com,End User, +Vijay,Yadav,vjyaav158@gmail.com,End User, +Vijay,Yadav,vjyaav159@gmail.com,End User, +Vijay,Yadav,vjyaav160@gmail.com,End User, +Vijay,Yadav,vjyaav161@gmail.com,End User, +Vijay,Yadav,vjyaav162@gmail.com,End User, +Vijay,Yadav,vjyaav163@gmail.com,End User, +Vijay,Yadav,vjyaav164@gmail.com,End User, +Vijay,Yadav,vjyaav165@gmail.com,End User, +Vijay,Yadav,vjyaav166@gmail.com,End User, +Vijay,Yadav,vjyaav167@gmail.com,End User, +Vijay,Yadav,vjyaav168@gmail.com,End User, +Vijay,Yadav,vjyaav169@gmail.com,End User, +Vijay,Yadav,vjyaav170@gmail.com,End User, +Vijay,Yadav,vjyaav171@gmail.com,End User, +Vijay,Yadav,vjyaav172@gmail.com,End User, +Vijay,Yadav,vjyaav173@gmail.com,End User, +Vijay,Yadav,vjyaav174@gmail.com,End User, +Vijay,Yadav,vjyaav175@gmail.com,End User, +Vijay,Yadav,vjyaav176@gmail.com,End User, +Vijay,Yadav,vjyaav177@gmail.com,End User, +Vijay,Yadav,vjyaav178@gmail.com,End User, +Vijay,Yadav,vjyaav179@gmail.com,End User, +Vijay,Yadav,vjyaav180@gmail.com,End User, +Vijay,Yadav,vjyaav181@gmail.com,End User, +Vijay,Yadav,vjyaav182@gmail.com,End User, +Vijay,Yadav,vjyaav183@gmail.com,End User, +Vijay,Yadav,vjyaav184@gmail.com,End User, +Vijay,Yadav,vjyaav185@gmail.com,End User, +Vijay,Yadav,vjyaav186@gmail.com,End User, +Vijay,Yadav,vjyaav187@gmail.com,End User, +Vijay,Yadav,vjyaav188@gmail.com,End User, +Vijay,Yadav,vjyaav189@gmail.com,End User, +Vijay,Yadav,vjyaav190@gmail.com,End User, +Vijay,Yadav,vjyaav191@gmail.com,End User, +Vijay,Yadav,vjyaav192@gmail.com,End User, +Vijay,Yadav,vjyaav193@gmail.com,End User, +Vijay,Yadav,vjyaav194@gmail.com,End User, +Vijay,Yadav,vjyaav195@gmail.com,End User, +Vijay,Yadav,vjyaav196@gmail.com,End User, +Vijay,Yadav,vjyaav197@gmail.com,End User, +Vijay,Yadav,vjyaav198@gmail.com,End User, +Vijay,Yadav,vjyaav199@gmail.com,End User, +Vijay,Yadav,vjyaav200@gmail.com,End User, +Vijay,Yadav,vjyaav201@gmail.com,End User, +Vijay,Yadav,vjyaav202@gmail.com,End User, +Vijay,Yadav,vjyaav203@gmail.com,End User, +Vijay,Yadav,vjyaav204@gmail.com,End User, +Vijay,Yadav,vjyaav205@gmail.com,End User, +Vijay,Yadav,vjyaav206@gmail.com,End User, +Vijay,Yadav,vjyaav207@gmail.com,End User, +Vijay,Yadav,vjyaav208@gmail.com,End User, +Vijay,Yadav,vjyaav209@gmail.com,End User, +Vijay,Yadav,vjyaav210@gmail.com,End User, +Vijay,Yadav,vjyaav211@gmail.com,End User, +Vijay,Yadav,vjyaav212@gmail.com,End User, +Vijay,Yadav,vjyaav213@gmail.com,End User, +Vijay,Yadav,vjyaav214@gmail.com,End User, +Vijay,Yadav,vjyaav215@gmail.com,End User, +Vijay,Yadav,vjyaav216@gmail.com,End User, +Vijay,Yadav,vjyaav217@gmail.com,End User, +Vijay,Yadav,vjyaav218@gmail.com,End User, +Vijay,Yadav,vjyaav219@gmail.com,End User, +Vijay,Yadav,vjyaav220@gmail.com,End User, +Vijay,Yadav,vjyaav221@gmail.com,End User, +Vijay,Yadav,vjyaav222@gmail.com,End User, +Vijay,Yadav,vjyaav223@gmail.com,End User, +Vijay,Yadav,vjyaav224@gmail.com,End User, +Vijay,Yadav,vjyaav225@gmail.com,End User, +Vijay,Yadav,vjyaav226@gmail.com,End User, +Vijay,Yadav,vjyaav227@gmail.com,End User, +Vijay,Yadav,vjyaav228@gmail.com,End User, +Vijay,Yadav,vjyaav229@gmail.com,End User, +Vijay,Yadav,vjyaav230@gmail.com,End User, +Vijay,Yadav,vjyaav231@gmail.com,End User, +Vijay,Yadav,vjyaav232@gmail.com,End User, +Vijay,Yadav,vjyaav233@gmail.com,End User, +Vijay,Yadav,vjyaav234@gmail.com,End User, +Vijay,Yadav,vjyaav235@gmail.com,End User, +Vijay,Yadav,vjyaav236@gmail.com,End User, +Vijay,Yadav,vjyaav237@gmail.com,End User, +Vijay,Yadav,vjyaav238@gmail.com,End User, +Vijay,Yadav,vjyaav239@gmail.com,End User, +Vijay,Yadav,vjyaav240@gmail.com,End User, +Vijay,Yadav,vjyaav241@gmail.com,End User, +Vijay,Yadav,vjyaav242@gmail.com,End User, +Vijay,Yadav,vjyaav243@gmail.com,End User, +Vijay,Yadav,vjyaav244@gmail.com,End User, +Vijay,Yadav,vjyaav245@gmail.com,End User, +Vijay,Yadav,vjyaav246@gmail.com,End User, +Vijay,Yadav,vjyaav247@gmail.com,End User, +Vijay,Yadav,vjyaav248@gmail.com,End User, +Vijay,Yadav,vjyaav249@gmail.com,End User, +Vijay,Yadav,vjyaav250@gmail.com,End User, +Vijay,Yadav,vjyaav251@gmail.com,End User, \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/empty_first_and_last_name - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/empty_first_and_last_name - Sheet1.csv index 03f89777d6..8276f35cc0 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/empty_first_and_last_name - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/empty_first_and_last_name - Sheet1.csv @@ -1,6 +1,6 @@ -First Name,Last Name,Email,Groups -,,test12empty@gmail.com,All Users -Test,Example,test12empty@gmail.com,All Users -Test,Example,test14empty@gmail.com,All Users -Test,Example,test14empty@gmail.com,All Users -Test,Example,test16empty@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +,,test12empty@gmail.com,Admin,Admin +Test,Example,test12empty@gmail.com,Builder,Builder +Test,Example,test14empty@gmail.com,End User,End User +Test,Example,test14empty@gmail.com,End User,End User +Test,Example,test16empty@gmail.com,End User,End User \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/invalid_group_name - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/invalid_group_name - Sheet1.csv index 3d07ab09c0..8433bf0f2e 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/invalid_group_name - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/invalid_group_name - Sheet1.csv @@ -1,12 +1,3 @@ -First Name,Last Name,Email,Groups -Test,Example,test12@gmail.com,All-users -Test,Example,test13@gmail.com,All-users -Test,Example,test14@gmail.com,All-users -Test,Example,test15@gmail.com,All-users -Test,Example,test16@gmail.com,All-users -Test,Example,test17@gmail.com,All-users -Test,Example,test18@gmail.com,All-users -Test,Example,test19@gmail.com,All-users -Test,Example,test20@gmail.com,All-users -Test,Example,test21@gmail.com,All-users -Test,Example,test22@gmail.com,All-users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +Test,Example,test12@gmail.com,Admin,ABC +Test,Example,test13@gmail.com,Builder,Test diff --git a/cypress-tests/cypress/fixtures/bulkUser/invite_users - Sheet1 .csv b/cypress-tests/cypress/fixtures/bulkUser/invite_users - Sheet1 .csv index ddbb573859..4886865635 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/invite_users - Sheet1 .csv +++ b/cypress-tests/cypress/fixtures/bulkUser/invite_users - Sheet1 .csv @@ -1,251 +1,251 @@ -First Name,Last Name,Email,Groups -Test,Example,test12@gmail.com,All Users|Admin -Test,Example,test13@gmail.com,All Users -Test,Example,test14@gmail.com,All Users -Test,Example,test15@gmail.com,All Users -Test,Example,test16@gmail.com,All Users -Test,Example,test17@gmail.com,All Users -Test,Example,test18@gmail.com,All Users -Test,Example,test19@gmail.com,All Users -Test,Example,test20@gmail.com,All Users -Test,Example,test21@gmail.com,All Users -Test,Example,test22@gmail.com,All Users -Test,Example,test23@gmail.com,All Users -Test,Example,test24@gmail.com,All Users -Test,Example,test25@gmail.com,All Users -Test,Example,test26@gmail.com,All Users -Test,Example,test27@gmail.com,All Users -Test,Example,test28@gmail.com,All Users -Test,Example,test29@gmail.com,All Users -Test,Example,test30@gmail.com,All Users -Test,Example,test31@gmail.com,All Users -Test,Example,test32@gmail.com,All Users -Test,Example,test33@gmail.com,All Users -Test,Example,test34@gmail.com,All Users -Test,Example,test35@gmail.com,All Users -Test,Example,test36@gmail.com,All Users -Test,Example,test37@gmail.com,All Users -Test,Example,test38@gmail.com,All Users -Test,Example,test39@gmail.com,All Users -Test,Example,test40@gmail.com,All Users -Test,Example,test41@gmail.com,All Users -Test,Example,test42@gmail.com,All Users -Test,Example,test43@gmail.com,All Users -Test,Example,test44@gmail.com,All Users -Test,Example,test45@gmail.com,All Users -Test,Example,test46@gmail.com,All Users -Test,Example,test47@gmail.com,All Users -Test,Example,test48@gmail.com,All Users -Test,Example,test49@gmail.com,All Users -Test,Example,test50@gmail.com,All Users -Test,Example,test51@gmail.com,All Users -Test,Example,test52@gmail.com,All Users -Test,Example,test53@gmail.com,All Users -Test,Example,test54@gmail.com,All Users -Test,Example,test55@gmail.com,All Users -Test,Example,test56@gmail.com,All Users -Test,Example,test57@gmail.com,All Users -Test,Example,test58@gmail.com,All Users -Test,Example,test59@gmail.com,All Users -Test,Example,test60@gmail.com,All Users -Test,Example,test61@gmail.com,All Users -Test,Example,test62@gmail.com,All Users -Test,Example,test63@gmail.com,All Users -Test,Example,test64@gmail.com,All Users -Test,Example,test65@gmail.com,All Users -Test,Example,test66@gmail.com,All Users -Test,Example,test67@gmail.com,All Users -Test,Example,test68@gmail.com,All Users -Test,Example,test69@gmail.com,All Users -Test,Example,test70@gmail.com,All Users -Test,Example,test71@gmail.com,All Users -Test,Example,test72@gmail.com,All Users -Test,Example,test73@gmail.com,All Users -Test,Example,test74@gmail.com,All Users -Test,Example,test75@gmail.com,All Users -Test,Example,test76@gmail.com,All Users -Test,Example,test77@gmail.com,All Users -Test,Example,test78@gmail.com,All Users -Test,Example,test79@gmail.com,All Users -Test,Example,test80@gmail.com,All Users -Test,Example,test81@gmail.com,All Users -Test,Example,test82@gmail.com,All Users -Test,Example,test83@gmail.com,All Users -Test,Example,test84@gmail.com,All Users -Test,Example,test85@gmail.com,All Users -Test,Example,test86@gmail.com,All Users -Test,Example,test87@gmail.com,All Users -Test,Example,test88@gmail.com,All Users -Test,Example,test89@gmail.com,All Users -Test,Example,test90@gmail.com,All Users -Test,Example,test91@gmail.com,All Users -Test,Example,test92@gmail.com,All Users -Test,Example,test93@gmail.com,All Users -Test,Example,test94@gmail.com,All Users -Test,Example,test95@gmail.com,All Users -Test,Example,test96@gmail.com,All Users -Test,Example,test97@gmail.com,All Users -Test,Example,test98@gmail.com,All Users -Test,Example,test99@gmail.com,All Users -Test,Example,test100@gmail.com,All Users -Test,Example,test101@gmail.com,All Users -Test,Example,test102@gmail.com,All Users -Test,Example,test103@gmail.com,All Users -Test,Example,test104@gmail.com,All Users -Test,Example,test105@gmail.com,All Users -Test,Example,test106@gmail.com,All Users -Test,Example,test107@gmail.com,All Users -Test,Example,test108@gmail.com,All Users -Test,Example,test109@gmail.com,All Users -Test,Example,test110@gmail.com,All Users -Test,Example,test111@gmail.com,All Users -Test,Example,test112@gmail.com,All Users -Test,Example,test113@gmail.com,All Users -Test,Example,test114@gmail.com,All Users -Test,Example,test115@gmail.com,All Users -Test,Example,test116@gmail.com,All Users -Test,Example,test117@gmail.com,All Users -Test,Example,test118@gmail.com,All Users -Test,Example,test119@gmail.com,All Users -Test,Example,test120@gmail.com,All Users -Test,Example,test121@gmail.com,All Users -Test,Example,test122@gmail.com,All Users -Test,Example,test123@gmail.com,All Users -Test,Example,test124@gmail.com,All Users -Test,Example,test125@gmail.com,All Users -Test,Example,test126@gmail.com,All Users -Test,Example,test127@gmail.com,All Users -Test,Example,test128@gmail.com,All Users -Test,Example,test129@gmail.com,All Users -Test,Example,test130@gmail.com,All Users -Test,Example,test131@gmail.com,All Users -Test,Example,test132@gmail.com,All Users -Test,Example,test133@gmail.com,All Users -Test,Example,test134@gmail.com,All Users -Test,Example,test135@gmail.com,All Users -Test,Example,test136@gmail.com,All Users -Test,Example,test137@gmail.com,All Users -Test,Example,test138@gmail.com,All Users -Test,Example,test139@gmail.com,All Users -Test,Example,test140@gmail.com,All Users -Test,Example,test141@gmail.com,All Users -Test,Example,test142@gmail.com,All Users -Test,Example,test143@gmail.com,All Users -Test,Example,test144@gmail.com,All Users -Test,Example,test145@gmail.com,All Users -Test,Example,test146@gmail.com,All Users -Test,Example,test147@gmail.com,All Users -Test,Example,test148@gmail.com,All Users -Test,Example,test149@gmail.com,All Users -Test,Example,test150@gmail.com,All Users -Test,Example,test151@gmail.com,All Users -Test,Example,test152@gmail.com,All Users -Test,Example,test153@gmail.com,All Users -Test,Example,test154@gmail.com,All Users -Test,Example,test155@gmail.com,All Users -Test,Example,test156@gmail.com,All Users -Test,Example,test157@gmail.com,All Users -Test,Example,test158@gmail.com,All Users -Test,Example,test159@gmail.com,All Users -Test,Example,test160@gmail.com,All Users -Test,Example,test161@gmail.com,All Users -Test,Example,test162@gmail.com,All Users -Test,Example,test163@gmail.com,All Users -Test,Example,test164@gmail.com,All Users -Test,Example,test165@gmail.com,All Users -Test,Example,test166@gmail.com,All Users -Test,Example,test167@gmail.com,All Users -Test,Example,test168@gmail.com,All Users -Test,Example,test169@gmail.com,All Users -Test,Example,test170@gmail.com,All Users -Test,Example,test171@gmail.com,All Users -Test,Example,test172@gmail.com,All Users -Test,Example,test173@gmail.com,All Users -Test,Example,test174@gmail.com,All Users -Test,Example,test175@gmail.com,All Users -Test,Example,test176@gmail.com,All Users -Test,Example,test177@gmail.com,All Users -Test,Example,test178@gmail.com,All Users -Test,Example,test179@gmail.com,All Users -Test,Example,test180@gmail.com,All Users -Test,Example,test181@gmail.com,All Users -Test,Example,test182@gmail.com,All Users -Test,Example,test183@gmail.com,All Users -Test,Example,test184@gmail.com,All Users -Test,Example,test185@gmail.com,All Users -Test,Example,test186@gmail.com,All Users -Test,Example,test187@gmail.com,All Users -Test,Example,test188@gmail.com,All Users -Test,Example,test189@gmail.com,All Users -Test,Example,test190@gmail.com,All Users -Test,Example,test191@gmail.com,All Users -Test,Example,test192@gmail.com,All Users -Test,Example,test193@gmail.com,All Users -Test,Example,test194@gmail.com,All Users -Test,Example,test195@gmail.com,All Users -Test,Example,test196@gmail.com,All Users -Test,Example,test197@gmail.com,All Users -Test,Example,test198@gmail.com,All Users -Test,Example,test199@gmail.com,All Users -Test,Example,test200@gmail.com,All Users -Test,Example,test201@gmail.com,All Users -Test,Example,test202@gmail.com,All Users -Test,Example,test203@gmail.com,All Users -Test,Example,test204@gmail.com,All Users -Test,Example,test205@gmail.com,All Users -Test,Example,test206@gmail.com,All Users -Test,Example,test207@gmail.com,All Users -Test,Example,test208@gmail.com,All Users -Test,Example,test209@gmail.com,All Users -Test,Example,test210@gmail.com,All Users -Test,Example,test211@gmail.com,All Users -Test,Example,test212@gmail.com,All Users -Test,Example,test213@gmail.com,All Users -Test,Example,test214@gmail.com,All Users -Test,Example,test215@gmail.com,All Users -Test,Example,test216@gmail.com,All Users -Test,Example,test217@gmail.com,All Users -Test,Example,test218@gmail.com,All Users -Test,Example,test219@gmail.com,All Users -Test,Example,test220@gmail.com,All Users -Test,Example,test221@gmail.com,All Users -Test,Example,test222@gmail.com,All Users -Test,Example,test223@gmail.com,All Users -Test,Example,test224@gmail.com,All Users -Test,Example,test225@gmail.com,All Users -Test,Example,test226@gmail.com,All Users -Test,Example,test227@gmail.com,All Users -Test,Example,test228@gmail.com,All Users -Test,Example,test229@gmail.com,All Users -Test,Example,test230@gmail.com,All Users -Test,Example,test231@gmail.com,All Users -Test,Example,test232@gmail.com,All Users -Test,Example,test233@gmail.com,All Users -Test,Example,test234@gmail.com,All Users -Test,Example,test235@gmail.com,All Users -Test,Example,test236@gmail.com,All Users -Test,Example,test237@gmail.com,All Users -Test,Example,test238@gmail.com,All Users -Test,Example,test239@gmail.com,All Users -Test,Example,test240@gmail.com,All Users -Test,Example,test241@gmail.com,All Users -Test,Example,test242@gmail.com,All Users -Test,Example,test243@gmail.com,All Users -Test,Example,test244@gmail.com,All Users -Test,Example,test245@gmail.com,All Users -Test,Example,test246@gmail.com,All Users -Test,Example,test247@gmail.com,All Users -Test,Example,test248@gmail.com,All Users -Test,Example,test249@gmail.com,All Users -Test,Example,test250@gmail.com,All Users -Test,Example,test251@gmail.com,All Users -Test,Example,test252@gmail.com,All Users -Test,Example,test253@gmail.com,All Users -Test,Example,test254@gmail.com,All Users -Test,Example,test255@gmail.com,All Users -Test,Example,test256@gmail.com,All Users -Test,Example,test257@gmail.com,All Users -Test,Example,test258@gmail.com,All Users -Test,Example,test259@gmail.com,All Users -Test,Example,test260@gmail.com,All Users -Test,Example,test261@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +test,test,test1@gmail.com,Admin,Admin +test,test,test2@gmail.com,Builder,Builder +test,test,test3@gmail.com,Builder,Builder +test,test,test4@gmail.com,End User,End User +test,test,test5@gmail.com,End User,End User +test,test,test6@gmail.com,End User,End User +test,test,test7@gmail.com,End User,End User +test,test,test8@gmail.com,End User,End User +test,test,test9@gmail.com,End User,End User +test,test,test10@gmail.com,End User,End User +test,test,test11@gmail.com,End User,End User +test,test,test12@gmail.com,End User,End User +test,test,test13@gmail.com,End User,End User +test,test,test14@gmail.com,End User,End User +test,test,test15@gmail.com,End User,End User +test,test,test16@gmail.com,End User,End User +test,test,test17@gmail.com,End User,End User +test,test,test18@gmail.com,End User,End User +test,test,test19@gmail.com,End User,End User +test,test,test20@gmail.com,End User,End User +test,test,test21@gmail.com,End User,End User +test,test,test22@gmail.com,End User,End User +test,test,test23@gmail.com,End User,End User +test,test,test24@gmail.com,End User,End User +test,test,test25@gmail.com,End User,End User +test,test,test26@gmail.com,End User,End User +test,test,test27@gmail.com,End User,End User +test,test,test28@gmail.com,End User,End User +test,test,test29@gmail.com,End User,End User +test,test,test30@gmail.com,End User,End User +test,test,test31@gmail.com,End User,End User +test,test,test32@gmail.com,End User,End User +test,test,test33@gmail.com,End User,End User +test,test,test34@gmail.com,End User,End User +test,test,test35@gmail.com,End User,End User +test,test,test36@gmail.com,End User,End User +test,test,test37@gmail.com,End User,End User +test,test,test38@gmail.com,End User,End User +test,test,test39@gmail.com,End User,End User +test,test,test40@gmail.com,End User,End User +test,test,test41@gmail.com,End User,End User +test,test,test42@gmail.com,End User,End User +test,test,test43@gmail.com,End User,End User +test,test,test44@gmail.com,End User,End User +test,test,test45@gmail.com,End User,End User +test,test,test46@gmail.com,End User,End User +test,test,test47@gmail.com,End User,End User +test,test,test48@gmail.com,End User,End User +test,test,test49@gmail.com,End User,End User +test,test,test50@gmail.com,End User,End User +test,test,test51@gmail.com,End User,End User +test,test,test52@gmail.com,End User,End User +test,test,test53@gmail.com,End User,End User +test,test,test54@gmail.com,End User,End User +test,test,test55@gmail.com,End User,End User +test,test,test56@gmail.com,End User,End User +test,test,test57@gmail.com,End User,End User +test,test,test58@gmail.com,End User,End User +test,test,test59@gmail.com,End User,End User +test,test,test60@gmail.com,End User,End User +test,test,test61@gmail.com,End User,End User +test,test,test62@gmail.com,End User,End User +test,test,test63@gmail.com,End User,End User +test,test,test64@gmail.com,End User,End User +test,test,test65@gmail.com,End User,End User +test,test,test66@gmail.com,End User,End User +test,test,test67@gmail.com,End User,End User +test,test,test68@gmail.com,End User,End User +test,test,test69@gmail.com,End User,End User +test,test,test70@gmail.com,End User,End User +test,test,test71@gmail.com,End User,End User +test,test,test72@gmail.com,End User,End User +test,test,test73@gmail.com,End User,End User +test,test,test74@gmail.com,End User,End User +test,test,test75@gmail.com,End User,End User +test,test,test76@gmail.com,End User,End User +test,test,test77@gmail.com,End User,End User +test,test,test78@gmail.com,End User,End User +test,test,test79@gmail.com,End User,End User +test,test,test80@gmail.com,End User,End User +test,test,test81@gmail.com,End User,End User +test,test,test82@gmail.com,End User,End User +test,test,test83@gmail.com,End User,End User +test,test,test84@gmail.com,End User,End User +test,test,test85@gmail.com,End User,End User +test,test,test86@gmail.com,End User,End User +test,test,test87@gmail.com,End User,End User +test,test,test88@gmail.com,End User,End User +test,test,test89@gmail.com,End User,End User +test,test,test90@gmail.com,End User,End User +test,test,test91@gmail.com,End User,End User +test,test,test92@gmail.com,End User,End User +test,test,test93@gmail.com,End User,End User +test,test,test94@gmail.com,End User,End User +test,test,test95@gmail.com,End User,End User +test,test,test96@gmail.com,End User,End User +test,test,test97@gmail.com,End User,End User +test,test,test98@gmail.com,End User,End User +test,test,test99@gmail.com,End User,End User +test,test,test100@gmail.com,End User,End User +test,test,test101@gmail.com,End User,End User +test,test,test102@gmail.com,End User,End User +test,test,test103@gmail.com,End User,End User +test,test,test104@gmail.com,End User,End User +test,test,test105@gmail.com,End User,End User +test,test,test106@gmail.com,End User,End User +test,test,test107@gmail.com,End User,End User +test,test,test108@gmail.com,End User,End User +test,test,test109@gmail.com,End User,End User +test,test,test110@gmail.com,End User,End User +test,test,test111@gmail.com,End User,End User +test,test,test112@gmail.com,End User,End User +test,test,test113@gmail.com,End User,End User +test,test,test114@gmail.com,End User,End User +test,test,test115@gmail.com,End User,End User +test,test,test116@gmail.com,End User,End User +test,test,test117@gmail.com,End User,End User +test,test,test118@gmail.com,End User,End User +test,test,test119@gmail.com,End User,End User +test,test,test120@gmail.com,End User,End User +test,test,test121@gmail.com,End User,End User +test,test,test122@gmail.com,End User,End User +test,test,test123@gmail.com,End User,End User +test,test,test124@gmail.com,End User,End User +test,test,test125@gmail.com,End User,End User +test,test,test126@gmail.com,End User,End User +test,test,test127@gmail.com,End User,End User +test,test,test128@gmail.com,End User,End User +test,test,test129@gmail.com,End User,End User +test,test,test130@gmail.com,End User,End User +test,test,test131@gmail.com,End User,End User +test,test,test132@gmail.com,End User,End User +test,test,test133@gmail.com,End User,End User +test,test,test134@gmail.com,End User,End User +test,test,test135@gmail.com,End User,End User +test,test,test136@gmail.com,End User,End User +test,test,test137@gmail.com,End User,End User +test,test,test138@gmail.com,End User,End User +test,test,test139@gmail.com,End User,End User +test,test,test140@gmail.com,End User,End User +test,test,test141@gmail.com,End User,End User +test,test,test142@gmail.com,End User,End User +test,test,test143@gmail.com,End User,End User +test,test,test144@gmail.com,End User,End User +test,test,test145@gmail.com,End User,End User +test,test,test146@gmail.com,End User,End User +test,test,test147@gmail.com,End User,End User +test,test,test148@gmail.com,End User,End User +test,test,test149@gmail.com,End User,End User +test,test,test150@gmail.com,End User,End User +test,test,test151@gmail.com,End User,End User +test,test,test152@gmail.com,End User,End User +test,test,test153@gmail.com,End User,End User +test,test,test154@gmail.com,End User,End User +test,test,test155@gmail.com,End User,End User +test,test,test156@gmail.com,End User,End User +test,test,test157@gmail.com,End User,End User +test,test,test158@gmail.com,End User,End User +test,test,test159@gmail.com,End User,End User +test,test,test160@gmail.com,End User,End User +test,test,test161@gmail.com,End User,End User +test,test,test162@gmail.com,End User,End User +test,test,test163@gmail.com,End User,End User +test,test,test164@gmail.com,End User,End User +test,test,test165@gmail.com,End User,End User +test,test,test166@gmail.com,End User,End User +test,test,test167@gmail.com,End User,End User +test,test,test168@gmail.com,End User,End User +test,test,test169@gmail.com,End User,End User +test,test,test170@gmail.com,End User,End User +test,test,test171@gmail.com,End User,End User +test,test,test172@gmail.com,End User,End User +test,test,test173@gmail.com,End User,End User +test,test,test174@gmail.com,End User,End User +test,test,test175@gmail.com,End User,End User +test,test,test176@gmail.com,End User,End User +test,test,test177@gmail.com,End User,End User +test,test,test178@gmail.com,End User,End User +test,test,test179@gmail.com,End User,End User +test,test,test180@gmail.com,End User,End User +test,test,test181@gmail.com,End User,End User +test,test,test182@gmail.com,End User,End User +test,test,test183@gmail.com,End User,End User +test,test,test184@gmail.com,End User,End User +test,test,test185@gmail.com,End User,End User +test,test,test186@gmail.com,End User,End User +test,test,test187@gmail.com,End User,End User +test,test,test188@gmail.com,End User,End User +test,test,test189@gmail.com,End User,End User +test,test,test190@gmail.com,End User,End User +test,test,test191@gmail.com,End User,End User +test,test,test192@gmail.com,End User,End User +test,test,test193@gmail.com,End User,End User +test,test,test194@gmail.com,End User,End User +test,test,test195@gmail.com,End User,End User +test,test,test196@gmail.com,End User,End User +test,test,test197@gmail.com,End User,End User +test,test,test198@gmail.com,End User,End User +test,test,test199@gmail.com,End User,End User +test,test,test200@gmail.com,End User,End User +test,test,test201@gmail.com,End User,End User +test,test,test202@gmail.com,End User,End User +test,test,test203@gmail.com,End User,End User +test,test,test204@gmail.com,End User,End User +test,test,test205@gmail.com,End User,End User +test,test,test206@gmail.com,End User,End User +test,test,test207@gmail.com,End User,End User +test,test,test208@gmail.com,End User,End User +test,test,test209@gmail.com,End User,End User +test,test,test210@gmail.com,End User,End User +test,test,test211@gmail.com,End User,End User +test,test,test212@gmail.com,End User,End User +test,test,test213@gmail.com,End User,End User +test,test,test214@gmail.com,End User,End User +test,test,test215@gmail.com,End User,End User +test,test,test216@gmail.com,End User,End User +test,test,test217@gmail.com,End User,End User +test,test,test218@gmail.com,End User,End User +test,test,test219@gmail.com,End User,End User +test,test,test220@gmail.com,End User,End User +test,test,test221@gmail.com,End User,End User +test,test,test222@gmail.com,End User,End User +test,test,test223@gmail.com,End User,End User +test,test,test224@gmail.com,End User,End User +test,test,test225@gmail.com,End User,End User +test,test,test226@gmail.com,End User,End User +test,test,test227@gmail.com,End User,End User +test,test,test228@gmail.com,End User,End User +test,test,test229@gmail.com,End User,End User +test,test,test230@gmail.com,End User,End User +test,test,test231@gmail.com,End User,End User +test,test,test232@gmail.com,End User,End User +test,test,test233@gmail.com,End User,End User +test,test,test234@gmail.com,End User,End User +test,test,test235@gmail.com,End User,End User +test,test,test236@gmail.com,End User,End User +test,test,test237@gmail.com,End User,End User +test,test,test238@gmail.com,End User,End User +test,test,test239@gmail.com,End User,End User +test,test,test240@gmail.com,End User,End User +test,test,test241@gmail.com,End User,End User +test,test,test242@gmail.com,End User,End User +test,test,test243@gmail.com,End User,End User +test,test,test244@gmail.com,End User,End User +test,test,test245@gmail.com,End User,End User +test,test,test246@gmail.com,End User,End User +test,test,test247@gmail.com,End User,End User +test,test,test248@gmail.com,End User,End User +test,test,test249@gmail.com,End User,End User +test,test,test250@gmail.com,End User,End User \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/multiple_groups - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/multiple_groups - Sheet1.csv index 20a08b8931..e35de511b1 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/multiple_groups - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/multiple_groups - Sheet1.csv @@ -1,7 +1,7 @@ -First Name,Last Name,Email,Groups -Test,Example,test12@example.com,All Users|Admin|Test -Test,Example,test13@example.com,All Users -Test,Example,test14@example.com,All Users -Test,Example,test15@example.com,All Users -Test,Example,test16@example.com,All Users -Test,Example,test17@example.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +Test,Example,test12@example.com,Admin,Admin|Builder +Test,Example,test13@example.com,Buider,Buider|Test +Test,Example,test14@example.com,End user,End user|Abc +Test,Example,test15@example.com,End user,End user|Abc +Test,Example,test16@example.com,End user,End user|Abc +Test,Example,test17@example.com,End user,End user|Abc \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/non_existing_group -Sheet1 .csv b/cypress-tests/cypress/fixtures/bulkUser/non_existing_group -Sheet1 .csv index 2f77412dbf..9de5b6cd9a 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/non_existing_group -Sheet1 .csv +++ b/cypress-tests/cypress/fixtures/bulkUser/non_existing_group -Sheet1 .csv @@ -1,251 +1,3 @@ -First Name,Last Name,Email,Groups -Test,Example,test12@gmail.com,All Users|Test -Test,Example,test13@gmail.com,All Users -Test,Example,test14@gmail.com,All Users -Test,Example,test15@gmail.com,All Users -Test,Example,test16@gmail.com,All Users -Test,Example,test17@gmail.com,All Users -Test,Example,test18@gmail.com,All Users -Test,Example,test19@gmail.com,All Users -Test,Example,test20@gmail.com,All Users -Test,Example,test21@gmail.com,All Users -Test,Example,test22@gmail.com,All Users -Test,Example,test23@gmail.com,All Users -Test,Example,test24@gmail.com,All Users -Test,Example,test25@gmail.com,All Users -Test,Example,test26@gmail.com,All Users -Test,Example,test27@gmail.com,All Users -Test,Example,test28@gmail.com,All Users -Test,Example,test29@gmail.com,All Users -Test,Example,test30@gmail.com,All Users -Test,Example,test31@gmail.com,All Users -Test,Example,test32@gmail.com,All Users -Test,Example,test33@gmail.com,All Users -Test,Example,test34@gmail.com,All Users -Test,Example,test35@gmail.com,All Users -Test,Example,test36@gmail.com,All Users -Test,Example,test37@gmail.com,All Users -Test,Example,test38@gmail.com,All Users -Test,Example,test39@gmail.com,All Users -Test,Example,test40@gmail.com,All Users -Test,Example,test41@gmail.com,All Users -Test,Example,test42@gmail.com,All Users -Test,Example,test43@gmail.com,All Users -Test,Example,test44@gmail.com,All Users -Test,Example,test45@gmail.com,All Users -Test,Example,test46@gmail.com,All Users -Test,Example,test47@gmail.com,All Users -Test,Example,test48@gmail.com,All Users -Test,Example,test49@gmail.com,All Users -Test,Example,test50@gmail.com,All Users -Test,Example,test51@gmail.com,All Users -Test,Example,test52@gmail.com,All Users -Test,Example,test53@gmail.com,All Users -Test,Example,test54@gmail.com,All Users -Test,Example,test55@gmail.com,All Users -Test,Example,test56@gmail.com,All Users -Test,Example,test57@gmail.com,All Users -Test,Example,test58@gmail.com,All Users -Test,Example,test59@gmail.com,All Users -Test,Example,test60@gmail.com,All Users -Test,Example,test61@gmail.com,All Users -Test,Example,test62@gmail.com,All Users -Test,Example,test63@gmail.com,All Users -Test,Example,test64@gmail.com,All Users -Test,Example,test65@gmail.com,All Users -Test,Example,test66@gmail.com,All Users -Test,Example,test67@gmail.com,All Users -Test,Example,test68@gmail.com,All Users -Test,Example,test69@gmail.com,All Users -Test,Example,test70@gmail.com,All Users -Test,Example,test71@gmail.com,All Users -Test,Example,test72@gmail.com,All Users -Test,Example,test73@gmail.com,All Users -Test,Example,test74@gmail.com,All Users -Test,Example,test75@gmail.com,All Users -Test,Example,test76@gmail.com,All Users -Test,Example,test77@gmail.com,All Users -Test,Example,test78@gmail.com,All Users -Test,Example,test79@gmail.com,All Users -Test,Example,test80@gmail.com,All Users -Test,Example,test81@gmail.com,All Users -Test,Example,test82@gmail.com,All Users -Test,Example,test83@gmail.com,All Users -Test,Example,test84@gmail.com,All Users -Test,Example,test85@gmail.com,All Users -Test,Example,test86@gmail.com,All Users -Test,Example,test87@gmail.com,All Users -Test,Example,test88@gmail.com,All Users -Test,Example,test89@gmail.com,All Users -Test,Example,test90@gmail.com,All Users -Test,Example,test91@gmail.com,All Users -Test,Example,test92@gmail.com,All Users -Test,Example,test93@gmail.com,All Users -Test,Example,test94@gmail.com,All Users -Test,Example,test95@gmail.com,All Users -Test,Example,test96@gmail.com,All Users -Test,Example,test97@gmail.com,All Users -Test,Example,test98@gmail.com,All Users -Test,Example,test99@gmail.com,All Users -Test,Example,test100@gmail.com,All Users -Test,Example,test101@gmail.com,All Users -Test,Example,test102@gmail.com,All Users -Test,Example,test103@gmail.com,All Users -Test,Example,test104@gmail.com,All Users -Test,Example,test105@gmail.com,All Users -Test,Example,test106@gmail.com,All Users -Test,Example,test107@gmail.com,All Users -Test,Example,test108@gmail.com,All Users -Test,Example,test109@gmail.com,All Users -Test,Example,test110@gmail.com,All Users -Test,Example,test111@gmail.com,All Users -Test,Example,test112@gmail.com,All Users -Test,Example,test113@gmail.com,All Users -Test,Example,test114@gmail.com,All Users -Test,Example,test115@gmail.com,All Users -Test,Example,test116@gmail.com,All Users -Test,Example,test117@gmail.com,All Users -Test,Example,test118@gmail.com,All Users -Test,Example,test119@gmail.com,All Users -Test,Example,test120@gmail.com,All Users -Test,Example,test121@gmail.com,All Users -Test,Example,test122@gmail.com,All Users -Test,Example,test123@gmail.com,All Users -Test,Example,test124@gmail.com,All Users -Test,Example,test125@gmail.com,All Users -Test,Example,test126@gmail.com,All Users -Test,Example,test127@gmail.com,All Users -Test,Example,test128@gmail.com,All Users -Test,Example,test129@gmail.com,All Users -Test,Example,test130@gmail.com,All Users -Test,Example,test131@gmail.com,All Users -Test,Example,test132@gmail.com,All Users -Test,Example,test133@gmail.com,All Users -Test,Example,test134@gmail.com,All Users -Test,Example,test135@gmail.com,All Users -Test,Example,test136@gmail.com,All Users -Test,Example,test137@gmail.com,All Users -Test,Example,test138@gmail.com,All Users -Test,Example,test139@gmail.com,All Users -Test,Example,test140@gmail.com,All Users -Test,Example,test141@gmail.com,All Users -Test,Example,test142@gmail.com,All Users -Test,Example,test143@gmail.com,All Users -Test,Example,test144@gmail.com,All Users -Test,Example,test145@gmail.com,All Users -Test,Example,test146@gmail.com,All Users -Test,Example,test147@gmail.com,All Users -Test,Example,test148@gmail.com,All Users -Test,Example,test149@gmail.com,All Users -Test,Example,test150@gmail.com,All Users -Test,Example,test151@gmail.com,All Users -Test,Example,test152@gmail.com,All Users -Test,Example,test153@gmail.com,All Users -Test,Example,test154@gmail.com,All Users -Test,Example,test155@gmail.com,All Users -Test,Example,test156@gmail.com,All Users -Test,Example,test157@gmail.com,All Users -Test,Example,test158@gmail.com,All Users -Test,Example,test159@gmail.com,All Users -Test,Example,test160@gmail.com,All Users -Test,Example,test161@gmail.com,All Users -Test,Example,test162@gmail.com,All Users -Test,Example,test163@gmail.com,All Users -Test,Example,test164@gmail.com,All Users -Test,Example,test165@gmail.com,All Users -Test,Example,test166@gmail.com,All Users -Test,Example,test167@gmail.com,All Users -Test,Example,test168@gmail.com,All Users -Test,Example,test169@gmail.com,All Users -Test,Example,test170@gmail.com,All Users -Test,Example,test171@gmail.com,All Users -Test,Example,test172@gmail.com,All Users -Test,Example,test173@gmail.com,All Users -Test,Example,test174@gmail.com,All Users -Test,Example,test175@gmail.com,All Users -Test,Example,test176@gmail.com,All Users -Test,Example,test177@gmail.com,All Users -Test,Example,test178@gmail.com,All Users -Test,Example,test179@gmail.com,All Users -Test,Example,test180@gmail.com,All Users -Test,Example,test181@gmail.com,All Users -Test,Example,test182@gmail.com,All Users -Test,Example,test183@gmail.com,All Users -Test,Example,test184@gmail.com,All Users -Test,Example,test185@gmail.com,All Users -Test,Example,test186@gmail.com,All Users -Test,Example,test187@gmail.com,All Users -Test,Example,test188@gmail.com,All Users -Test,Example,test189@gmail.com,All Users -Test,Example,test190@gmail.com,All Users -Test,Example,test191@gmail.com,All Users -Test,Example,test192@gmail.com,All Users -Test,Example,test193@gmail.com,All Users -Test,Example,test194@gmail.com,All Users -Test,Example,test195@gmail.com,All Users -Test,Example,test196@gmail.com,All Users -Test,Example,test197@gmail.com,All Users -Test,Example,test198@gmail.com,All Users -Test,Example,test199@gmail.com,All Users -Test,Example,test200@gmail.com,All Users -Test,Example,test201@gmail.com,All Users -Test,Example,test202@gmail.com,All Users -Test,Example,test203@gmail.com,All Users -Test,Example,test204@gmail.com,All Users -Test,Example,test205@gmail.com,All Users -Test,Example,test206@gmail.com,All Users -Test,Example,test207@gmail.com,All Users -Test,Example,test208@gmail.com,All Users -Test,Example,test209@gmail.com,All Users -Test,Example,test210@gmail.com,All Users -Test,Example,test211@gmail.com,All Users -Test,Example,test212@gmail.com,All Users -Test,Example,test213@gmail.com,All Users -Test,Example,test214@gmail.com,All Users -Test,Example,test215@gmail.com,All Users -Test,Example,test216@gmail.com,All Users -Test,Example,test217@gmail.com,All Users -Test,Example,test218@gmail.com,All Users -Test,Example,test219@gmail.com,All Users -Test,Example,test220@gmail.com,All Users -Test,Example,test221@gmail.com,All Users -Test,Example,test222@gmail.com,All Users -Test,Example,test223@gmail.com,All Users -Test,Example,test224@gmail.com,All Users -Test,Example,test225@gmail.com,All Users -Test,Example,test226@gmail.com,All Users -Test,Example,test227@gmail.com,All Users -Test,Example,test228@gmail.com,All Users -Test,Example,test229@gmail.com,All Users -Test,Example,test230@gmail.com,All Users -Test,Example,test231@gmail.com,All Users -Test,Example,test232@gmail.com,All Users -Test,Example,test233@gmail.com,All Users -Test,Example,test234@gmail.com,All Users -Test,Example,test235@gmail.com,All Users -Test,Example,test236@gmail.com,All Users -Test,Example,test237@gmail.com,All Users -Test,Example,test238@gmail.com,All Users -Test,Example,test239@gmail.com,All Users -Test,Example,test240@gmail.com,All Users -Test,Example,test241@gmail.com,All Users -Test,Example,test242@gmail.com,All Users -Test,Example,test243@gmail.com,All Users -Test,Example,test244@gmail.com,All Users -Test,Example,test245@gmail.com,All Users -Test,Example,test246@gmail.com,All Users -Test,Example,test247@gmail.com,All Users -Test,Example,test248@gmail.com,All Users -Test,Example,test249@gmail.com,All Users -Test,Example,test250@gmail.com,All Users -Test,Example,test251@gmail.com,All Users -Test,Example,test252@gmail.com,All Users -Test,Example,test253@gmail.com,All Users -Test,Example,test254@gmail.com,All Users -Test,Example,test255@gmail.com,All Users -Test,Example,test256@gmail.com,All Users -Test,Example,test257@gmail.com,All Users -Test,Example,test258@gmail.com,All Users -Test,Example,test259@gmail.com,All Users -Test,Example,test260@gmail.com,All Users -Test,Example,test261@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +test,test,demo1@gmail.com,Admin,test +test,test,demo2@gmail.com,Builder,abc diff --git a/cypress-tests/cypress/fixtures/bulkUser/same_email - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/same_email - Sheet1.csv index 6174d94374..2537cc16f7 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/same_email - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/same_email - Sheet1.csv @@ -1,6 +1,4 @@ -First Name,Last Name,Email,Groups -Test,Example,test12@gmail.com,All Users -Test,Example,test12@gmail.com,All Users -Test,Example,test14@gmail.com,All Users -Test,Example,test14@gmail.com,All Users -Test,Example,test16@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +test,test,demo11@gmail.com,Admin, +test,test,demo11@gmail.com,Builder, +test,test,demo12@gmail.com,Builder, diff --git a/cypress-tests/cypress/fixtures/bulkUser/without_email - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/without_email - Sheet1.csv index c6e364c363..834aba042d 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/without_email - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/without_email - Sheet1.csv @@ -1,12 +1,11 @@ -First Name,Last Name,Email,Groups -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users -Test,Example,,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +test,test,,Admin,Admin +test,test,,Builder,Builder +test,test,,Builder,Builder +test,test,,End User,End User +test,test,,End User,End User +test,test,,End User,End User +test,test,,End User,End User +test,test,,End User,End User +test,test,,End User,End User +test,test,,End User,End User \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/without_firstname - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/without_firstname - Sheet1.csv index c67c527082..5cc0a1df62 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/without_firstname - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/without_firstname - Sheet1.csv @@ -1,6 +1,4 @@ -First Name,Last Name,Email,Groups -,Example,test12withoutfirstname@gmail.com,All Users -,Example,test13withoutfirstname@gmail.com,All Users -,Example,test14withoutfirstname@gmail.com,All Users -,Example,test15withoutfirstname@gmail.com,All Users -,Example,test16withoutfirstname@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +,test,demo1@gmail.com,Admin, +,test,demo2@gmail.com,Builder, +,test,demo3@gmail.com,End User, diff --git a/cypress-tests/cypress/fixtures/bulkUser/without_group - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/without_group - Sheet1.csv index 7f779dbf8e..6584572410 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/without_group - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/without_group - Sheet1.csv @@ -1,6 +1,6 @@ -First Name,Last Name,Email,Groups -Test,Example,test12@gmail.com, -Test,Example,test13@gmail.com, -Test,Example,test14@gmail.com, -Test,Example,test15@gmail.com, -Test,Example,test16@gmail.com, \ No newline at end of file +First Name,Last Name,Email,User Role,Group +Test,Example,test12@gmail.com,Admin, +Test,Example,test13@gmail.com,Builder, +Test,Example,test14@gmail.com,End User, +Test,Example,test15@gmail.com,End User, +Test,Example,test16@gmail.com,End User, \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/without_lastname - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/without_lastname - Sheet1.csv index 4cfc7cbf34..325b556043 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/without_lastname - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/without_lastname - Sheet1.csv @@ -1,6 +1,11 @@ -First Name,Last Name,Email,Groups -Test,,test12withoutlastname@gmail.com,All Users -Test,,test13withoutlastname@gmail.com,All Users -Test,,test14withoutlastname@gmail.com,All Users -Test,,test15withoutlastname@gmail.com,All Users -Test,,test16withoutlastname@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +test,,withoutlastname1@gmail.com,Admin,Admin +test,,withoutlastname2@gmail.com,Builder,Builder +test,,withoutlastname3@gmail.com,Builder,Builder +test,,withoutlastname4@gmail.com,End User,End User +test,,withoutlastname5@gmail.com,End User,End User +test,,withoutlastname6@gmail.com,End User,End User +test,,withoutlastname7@gmail.com,End User,End User +test,,withoutlastname8@gmail.com,End User,End User +test,,withoutlastname9@gmail.com,End User,End User +test,,withoutlastname10@gmail.com,End User,End User \ No newline at end of file diff --git a/cypress-tests/cypress/fixtures/bulkUser/without_name - Sheet1.csv b/cypress-tests/cypress/fixtures/bulkUser/without_name - Sheet1.csv index dc73e9b377..5db5b53489 100644 --- a/cypress-tests/cypress/fixtures/bulkUser/without_name - Sheet1.csv +++ b/cypress-tests/cypress/fixtures/bulkUser/without_name - Sheet1.csv @@ -1,12 +1,11 @@ -First Name,Last Name,Email,Groups -,,test12@gmail.com,All Users -,,test13@gmail.com,All Users -,,test14@gmail.com,All Users -,,test15@gmail.com,All Users -,,test16@gmail.com,All Users -,,test17@gmail.com,All Users -,,test18@gmail.com,All Users -,,test19@gmail.com,All Users -,,test20@gmail.com,All Users -,,test21@gmail.com,All Users -,,test22@gmail.com,All Users \ No newline at end of file +First Name,Last Name,Email,User Role,Group +,,withoutname1@gmail.com,Admin,Admin +,,withoutname2@gmail.com,Builder,Builder +,,withoutname3@gmail.com,Builder,Builder +,,withoutname4@gmail.com,End User,End User +,,withoutname5@gmail.com,End User,End User +,,withoutname6@gmail.com,End User,End User +,,withoutname7@gmail.com,End User,End User +,,withoutname8@gmail.com,End User,End User +,,withoutname9@gmail.com,End User,End User +,,withoutname10@gmail.com,End User,End User \ No newline at end of file diff --git a/cypress-tests/cypress/support/utils/dashboard.js b/cypress-tests/cypress/support/utils/dashboard.js index d23984a9fe..27b2b6a420 100644 --- a/cypress-tests/cypress/support/utils/dashboard.js +++ b/cypress-tests/cypress/support/utils/dashboard.js @@ -11,9 +11,9 @@ import { export const login = () => { cy.visit("/"); - cy.clearAndType(commonSelectors.workEmailInputField, "dev@tooljet.io"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.loginButton).click(); + cy.clearAndType(onboardingSelectors.emailInput, "dev@tooljet.io"); + cy.clearAndType(onboardingSelectors.passwordInput, "password"); + cy.get(onboardingSelectors.signInButton).click(); }; export const modifyAndVerifyAppCardIcon = (appName) => { diff --git a/cypress-tests/cypress/support/utils/manageSSO.js b/cypress-tests/cypress/support/utils/manageSSO.js index ba77205619..beecb970fe 100644 --- a/cypress-tests/cypress/support/utils/manageSSO.js +++ b/cypress-tests/cypress/support/utils/manageSSO.js @@ -235,18 +235,18 @@ export const workspaceLoginPageElements = (workspaceName) => { }; export const passwordLoginVisible = () => { - cy.get(commonSelectors.workEmailInputField).should("be.visible"); - cy.get(commonSelectors.passwordInputField).should("be.visible"); - cy.get(commonSelectors.loginButton).verifyVisibleElement( + cy.get(onboardingSelectors.emailInput).should("be.visible"); + cy.get(onboardingSelectors.passwordInput).should("be.visible"); + cy.get(onboardingSelectors.signInButton).verifyVisibleElement( "have.text", commonText.loginButton ); }; export const workspaceLogin = (workspaceName) => { - cy.clearAndType(commonSelectors.workEmailInputField, "dev@tooljet.io"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.loginButton).click(); + cy.clearAndType(onboardingSelectors.emailInput, "dev@tooljet.io"); + cy.clearAndType(onboardingSelectors.passwordInput, "password"); + cy.get(onboardingSelectors.signInButton).click(); cy.wait(2000); cy.get(commonSelectors.homePageLogo).should("be.visible"); cy.get(commonSelectors.workspaceName).verifyVisibleElement( @@ -295,13 +295,13 @@ export const signInPageElements = () => { "have.text", commonText.forgotPasswordLink ); - cy.get(commonSelectors.loginButton).verifyVisibleElement( + cy.get(onboardingSelectors.signInButton).verifyVisibleElement( "have.text", commonText.loginButton ); - cy.get(commonSelectors.workEmailInputField).should("be.visible"); - cy.get(commonSelectors.passwordInputField).should("be.visible"); + cy.get(onboardingSelectors.emailInput).should("be.visible"); + cy.get(onboardingSelectors.passwordInput).should("be.visible"); cy.get("body").then(($el) => { if ($el.text().includes("Google")) { @@ -477,7 +477,7 @@ export const invitePageElements = () => { "have.text", commonText.passwordLabel ); - cy.get(commonSelectors.passwordInputField).should("be.visible"); + cy.get(onboardingSelectors.passwordInput).should("be.visible"); cy.get(commonSelectors.acceptInviteButton).verifyVisibleElement( "have.text", commonText.acceptInviteButton diff --git a/cypress-tests/cypress/support/utils/manageUsers.js b/cypress-tests/cypress/support/utils/manageUsers.js index 9bfc404d1b..e13f987ce0 100644 --- a/cypress-tests/cypress/support/utils/manageUsers.js +++ b/cypress-tests/cypress/support/utils/manageUsers.js @@ -6,6 +6,8 @@ import { ssoSelector } from "Selectors/manageSSO"; import { ssoText } from "Texts/manageSSO"; import * as common from "Support/utils/common"; import { commonText } from "Texts/common"; +import { onboardingSelectors } from "Selectors/onboarding"; + export const manageUsersElements = () => { cy.get(commonSelectors.breadcrumbTitle).should(($el) => { @@ -150,19 +152,19 @@ export const manageUsersElements = () => { export const inviteUser = (firstName, email) => { cy.userInviteApi(firstName, email); fetchAndVisitInviteLink(email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); + cy.clearAndType(onboardingSelectors.passwordInput, "password"); cy.get(commonSelectors.acceptInviteButton).click(); }; export const confirmInviteElements = (email) => { - cy.get(commonSelectors.SignUpSectionHeader).verifyVisibleElement( + cy.get(commonSelectors.signUpSectionHeader).verifyVisibleElement( "have.text", "Sign up"); - cy.get('[data-cy="workspace-signup-header"]').verifyVisibleElement( - "have.text", "Sign up to the workspace - My workspace"); + cy.get('[data-cy="signup-info"]').verifyVisibleElement( + "have.text", "Sign up to the workspace - My workspace. "); - cy.verifyLabel("Email") - cy.verifyLabel("Create a password") + // cy.verifyLabel("Email") + // cy.verifyLabel("Create a password") cy.get(commonSelectors.invitedUserEmail).verifyVisibleElement( "have.text", email); @@ -215,7 +217,6 @@ export const bulkUserUpload = (file, fileName, toastMessage) => { .should("be.visible") .and("have.text", toastMessage); cy.get(usersSelector.toastCloseButton).click(); - cy.wait(200); }; @@ -242,8 +243,8 @@ export const copyInvitationLink = (firstName, email) => { export const fillUserInviteForm = (firstName, email) => { cy.get(usersSelector.buttonAddUsers).click(); - cy.clearAndType(commonSelectors.inputFieldFullName, firstName); - cy.clearAndType(commonSelectors.inputFieldEmailAddress, email); + cy.clearAndType(onboardingSelectors.nameInput, firstName); + cy.clearAndType(onboardingSelectors.signupEmailInput, email); }; export const selectUserGroup = (groupName) => { @@ -293,7 +294,8 @@ export const inviteUserWithUserGroups = ( cy.wait(1000); fetchAndVisitInviteLink(email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); + cy.wait(2000); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "password"); // cy.intercept('GET', '/api/organizations').as('org') cy.get(commonSelectors.signUpButton).click(); cy.wait(2000); @@ -372,7 +374,7 @@ export const inviteUserWithUserRole = ( cy.wait(1000); fetchAndVisitInviteLink(email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "password"); cy.get(commonSelectors.signUpButton).click(); cy.wait(2000); cy.get(commonSelectors.acceptInviteButton).click(); diff --git a/cypress-tests/cypress/support/utils/onboarding.js b/cypress-tests/cypress/support/utils/onboarding.js index ca04e906e9..982408488d 100644 --- a/cypress-tests/cypress/support/utils/onboarding.js +++ b/cypress-tests/cypress/support/utils/onboarding.js @@ -8,11 +8,12 @@ import { import { navigateToManageUsers, logout } from "Support/utils/common"; import { ssoSelector } from "Selectors/manageSSO"; import { ssoText } from "Texts/manageSSO"; +import { onboardingSelectors } from "Selectors/onboarding"; + export const verifyConfirmEmailPage = (email) => { cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.emailImage).should("be.visible"); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( + cy.get('[data-cy="check-your-mail-header"]').verifyVisibleElement( "have.text", commonText.emailPageHeader ); @@ -31,32 +32,17 @@ export const verifyConfirmEmailPage = (email) => { "have.text", commonText.onboardingSeperatorText ); + cy.get(commonSelectors.resendEmailButton).should("be.visible"); - cy.get(commonSelectors.editEmailButton).verifyVisibleElement( + cy.get('[data-cy="back-to-signup"]').verifyVisibleElement( "have.text", - commonText.editEmailButton + "Back to sign up" ); }; -export const verifyConfirmPageElements = () => { - cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.emailImage).should("be.visible"); - cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( - "have.text", - commonText.emailVerifiedText - ); - - cy.get(commonSelectors.onboardingPageDescription).verifyVisibleElement( - "have.text", - commonText.continueToSetUp - ); - cy.get(commonSelectors.setUpToolJetButton).verifyVisibleElement( - "have.text", - commonText.setUpToolJetButton - ); -}; export const verifyOnboardingQuestions = (fullName, workspaceName) => { + cy.wait(5000); cy.get(commonSelectors.pageLogo).should("be.visible"); cy.get(commonSelectors.userAccountNameAvatar).should("be.visible"); cy.get(commonSelectors.createAccountCheckMark).should("be.visible"); @@ -125,7 +111,7 @@ export const verifyOnboardingQuestions = (fullName, workspaceName) => { export const verifyInvalidInvitationLink = () => { cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.emailImage).should("be.visible"); + // cy.get(commonSelectors.emailImage).should("be.visible"); cy.get(commonSelectors.onboardingPageHeader).verifyVisibleElement( "have.text", @@ -136,20 +122,24 @@ export const verifyInvalidInvitationLink = () => { commonText.inalidInvitationLinkDescription ); - cy.get(commonSelectors.backtoSignUpButton).verifyVisibleElement( - "have.text", - commonText.backtoSignUpButton - ); + // cy.get(commonSelectors.backtoSignUpButton).verifyVisibleElement( + // "have.text", + // commonText.backtoSignUpButton + // ); }; export const userSignUp = (fullName, email, workspaceName) => { let invitationLink; + cy.intercept("GET", "/api/organizations/public-configs").as("publicConfig"); cy.visit("/"); - cy.wait(1000); - cy.get(commonSelectors.createAnAccountLink).realClick(); - cy.clearAndType(commonSelectors.nameInputField, fullName); - cy.clearAndType(commonSelectors.emailInputField, email); - cy.clearAndType(commonSelectors.passwordInputField, commonText.password); + cy.wait("@publicConfig"); // Wait for the API response + cy.get(commonSelectors.createAnAccountLink).realClick(); // Proceed to click the link + cy.get(onboardingSelectors.nameInput).should('not.be.disabled'); + cy.wait(3000) + cy.get(onboardingSelectors.nameInput).clear(); + cy.get(onboardingSelectors.nameInput).type(fullName); + cy.clearAndType(onboardingSelectors.emailInput, email); + cy.clearAndType(onboardingSelectors.passwordInput, commonText.password); cy.get(commonSelectors.signUpButton).click(); cy.wait(500); @@ -159,10 +149,9 @@ export const userSignUp = (fullName, email, workspaceName) => { }).then((resp) => { invitationLink = `/invitations/${resp.rows[0].invitation_token}`; cy.visit(invitationLink); - cy.get(commonSelectors.setUpToolJetButton).click(); cy.wait(4000); - verifyOnboardingQuestions(fullName, workspaceName); - updateWorkspaceName(email, workspaceName); + cy.clearAndType('[data-cy="onboarding-workspace-name-input"]', workspaceName) + cy.get('[data-cy="onboarding-submit-button"]').click(); }); }; @@ -211,10 +200,10 @@ export const inviteUser = (firstName, email) => { cy.userInviteApi(firstName, email); fetchAndVisitInviteLink(email); cy.wait(1000); - cy.get(commonSelectors.passwordInputField).should("be.visible"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); + cy.get(onboardingSelectors.loginPasswordInput).should("be.visible"); + cy.clearAndType(onboardingSelectors.loginPasswordInput, "password"); // cy.intercept("GET", "/api/organizations").as("org"); - cy.get(commonSelectors.signUpButton).click(); + cy.get(commonSelectors.continueButton).click(); cy.wait(2000); cy.get(commonSelectors.acceptInviteButton).click(); }; @@ -222,7 +211,7 @@ export const inviteUser = (firstName, email) => { export const addNewUser = (firstName, email) => { navigateToManageUsers(); inviteUser(firstName, email); - updateWorkspaceName(email); + // updateWorkspaceName(email); }; export const updateWorkspaceName = (email, workspaceName = email) => { @@ -300,19 +289,32 @@ export const visitWorkspaceInvitation = (email, workspaceName) => { export const SignUpPageElements = () => { cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.SignUpSectionHeader).verifyVisibleElement( + cy.get(commonSelectors.signUpSectionHeader).verifyVisibleElement( "have.text", "Sign up" ); cy.get(commonSelectors.signUpButton).verifyVisibleElement( "have.text", - commonText.getStartedButton + "Sign up" ); - cy.get(commonSelectors.signInRedirectText).should(($el) => { - expect($el.contents().first().text().trim()).to.eq( - commonText.signInRedirectText - ); - }); + + // cy.get('[data-cy="signup-info"]').should(($el) => { + // expect($el.contents().first().text().trim()).to.eq( + // commonText.signInRedirectText + // ); + // }); + + cy.get(onboardingSelectors.signupNameLabel).verifyVisibleElement("have.text", "Name *"); + cy.get(onboardingSelectors.nameInput).should('be.visible'); + cy.get(onboardingSelectors.emailLabel).verifyVisibleElement( + "have.text", + "Email *" + ); + // cy.get(commonSelectors.loginPasswordLabel).verifyVisibleElement("have.text", "Password *"); + + cy.get(onboardingSelectors.loginPasswordInput).should("be.visible"); + + cy.get(commonSelectors.signInRedirectLink).verifyVisibleElement( "have.text", commonText.signInRedirectLink @@ -357,5 +359,6 @@ export const signUpLink = (email) => { }).then((resp) => { invitationLink = `/invitations/${resp.rows[0].invitation_token}`; cy.visit(invitationLink); + cy.wait(3000); }); } \ No newline at end of file diff --git a/cypress-tests/cypress/support/utils/selfHostSignUp.js b/cypress-tests/cypress/support/utils/selfHostSignUp.js index c0626fb99e..93df52045c 100644 --- a/cypress-tests/cypress/support/utils/selfHostSignUp.js +++ b/cypress-tests/cypress/support/utils/selfHostSignUp.js @@ -3,27 +3,27 @@ import { commonText } from "Texts/common"; export const selfHostCommonElements = () => { cy.get(commonSelectors.pageLogo).should("be.visible"); - cy.get(commonSelectors.setUpadminCheckPoint).verifyVisibleElement( - "have.text", - commonText.setUpadminCheckPoint - ); + // cy.get(commonSelectors.setUpadminCheckPoint).verifyVisibleElement( + // "have.text", + // commonText.setUpadminCheckPoint + // ); cy.get(commonSelectors.setUpworkspaceCheckPoint).verifyVisibleElement( "have.text", commonText.setUpworkspaceCheckPoint ); - cy.get(commonSelectors.companyProfileCheckPoint).verifyVisibleElement( - "have.text", - commonText.companyProfileCheckPoint - ); - cy.get(commonSelectors.onboardingPageSubHeader).verifyVisibleElement( - "have.text", - commonText.onboardingPageSubHeader - ); - cy.get(commonSelectors.continueButton).verifyVisibleElement( + // cy.get(commonSelectors.companyProfileCheckPoint).verifyVisibleElement( + // "have.text", + // commonText.companyProfileCheckPoint + // ); + // cy.get(commonSelectors.onboardingPageSubHeader).verifyVisibleElement( + // "have.text", + // commonText.onboardingPageSubHeader + // ); + cy.get(commonSelectors.OnbordingContinue).verifyVisibleElement( "have.text", commonText.continueButton ); - cy.get(commonSelectors.continueButton).should("be.disabled"); + // cy.get(commonSelectors.OnbordingContinue).should("be.disabled"); }; export const commonElementsWorkspaceSetup = () => { diff --git a/cypress-tests/package-lock.json b/cypress-tests/package-lock.json index 20353756a4..3fb7b9549a 100644 --- a/cypress-tests/package-lock.json +++ b/cypress-tests/package-lock.json @@ -18,7 +18,7 @@ "@cypress/code-coverage": "^3.12.12", "@cypress/webpack-preprocessor": "^5.12.0", "@faker-js/faker": "^7.3.0", - "cypress": "^12.5.1" + "cypress": "^13.16.0" } }, "node_modules/@ampproject/remapping": { @@ -35,12 +35,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -48,30 +49,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -87,56 +88,57 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7", + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", "dev": true, "peer": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -145,20 +147,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -169,14 +169,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, "engines": { @@ -187,9 +187,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "peer": true, "dependencies": { @@ -203,81 +203,42 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "peer": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -287,22 +248,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "peer": true, "engines": { @@ -310,15 +271,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -328,15 +289,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -346,120 +307,96 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", "dev": true, + "peer": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "peer": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.26.0" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -468,14 +405,30 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -485,13 +438,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "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.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.9", + "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.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -501,15 +454,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -519,14 +472,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -548,82 +501,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -633,149 +518,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -802,13 +551,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -818,16 +567,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -837,15 +585,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -855,13 +603,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -871,13 +619,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -887,14 +635,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -904,15 +652,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -922,19 +669,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -945,14 +690,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -962,13 +707,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -978,14 +723,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -995,13 +740,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1010,15 +755,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1028,14 +789,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1045,14 +806,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1062,14 +822,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1079,15 +839,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1097,14 +857,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1114,13 +873,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1130,14 +889,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1147,13 +905,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1163,14 +921,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1180,15 +938,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1198,16 +956,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1217,14 +975,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1234,14 +992,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1251,13 +1009,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1267,14 +1025,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1284,14 +1041,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1301,16 +1057,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1320,14 +1075,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1337,14 +1092,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1354,15 +1108,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1372,13 +1125,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1388,14 +1141,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1405,16 +1158,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1424,13 +1176,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1440,13 +1192,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1456,14 +1208,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1473,13 +1242,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1489,14 +1258,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1506,13 +1275,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1522,13 +1291,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1538,13 +1307,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1554,13 +1323,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1570,14 +1339,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1587,14 +1356,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1604,14 +1373,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1621,92 +1390,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", "dev": true, "peer": true, "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.7", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.7", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.7", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "engines": { @@ -1731,17 +1488,10 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true, - "peer": true - }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "peer": true, "dependencies": { @@ -1752,33 +1502,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1787,14 +1534,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1810,15 +1556,15 @@ } }, "node_modules/@cypress/code-coverage": { - "version": "3.12.39", - "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.12.39.tgz", - "integrity": "sha512-ja7I/GRmkSAW9e3O7pideWcNUEHao0WT6sRyXQEURoxkJUASJssJ7Kb/bd3eMYmkUCiD5CRFqWR5BGF4mWVaUw==", + "version": "3.13.7", + "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.13.7.tgz", + "integrity": "sha512-E8oT0D1cA363cot4q7wonaDATAPybj7/DJ3PAE+BCmEBy41aYWn5DaEYWLRYe8eg+h4IlNPkZG1QMVo33pMcfw==", "dev": true, "dependencies": { "@cypress/webpack-preprocessor": "^6.0.0", "chalk": "4.1.2", - "dayjs": "1.11.10", - "debug": "4.3.4", + "dayjs": "1.11.13", + "debug": "4.3.7", "execa": "4.1.0", "globby": "11.1.0", "istanbul-lib-coverage": "^3.0.0", @@ -1850,97 +1596,10 @@ "webpack": "^4 || ^5" } }, - "node_modules/@cypress/code-coverage/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@cypress/code-coverage/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, - "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/@cypress/code-coverage/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@cypress/code-coverage/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@cypress/code-coverage/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@cypress/code-coverage/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cypress/code-coverage/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@cypress/request": { - "version": "2.88.12", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", - "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.6.tgz", + "integrity": "sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1948,16 +1607,16 @@ "combined-stream": "~1.0.6", "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.10.3", + "qs": "6.13.0", "safe-buffer": "^5.1.2", - "tough-cookie": "^4.1.3", + "tough-cookie": "^5.0.0", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" }, @@ -2100,9 +1759,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { @@ -2151,9 +1810,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "peer": true, "dependencies": { @@ -2173,9 +1832,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, "peer": true }, @@ -2187,9 +1846,10 @@ "peer": true }, "node_modules/@types/node": { - "version": "16.18.101", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.101.tgz", - "integrity": "sha512-AAsx9Rgz2IzG8KJ6tXd6ndNkVcu+GYB6U/SnFAaokSPNx2N7dcIIfnighYUNumvj6YS2q39Dejz5tT0NCV7CWA==" + "version": "16.18.119", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.119.tgz", + "integrity": "sha512-ia7V9a2FnhUFfetng4/sRPBMTwHZUkPFY736rb1cg9AgG7MZdR97q7/nLR9om+sq5f1la9C857E0l/nrI0RiFQ==", + "devOptional": true }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", @@ -2197,9 +1857,9 @@ "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" }, "node_modules/@types/sizzle": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" + "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==" }, "node_modules/@types/yauzl": { "version": "2.10.3", @@ -2211,73 +1871,73 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "peer": true, "dependencies": { @@ -2285,9 +1945,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "peer": true, "dependencies": { @@ -2295,79 +1955,79 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -2386,9 +2046,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "peer": true, "bin": { @@ -2398,16 +2058,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -2421,16 +2071,16 @@ } }, "node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -2499,15 +2149,17 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/append-transform": { @@ -2587,9 +2239,9 @@ } }, "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -2613,14 +2265,14 @@ } }, "node_modules/aws4": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", - "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==" }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, "peer": true, "dependencies": { @@ -2636,14 +2288,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "peer": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -2651,27 +2303,27 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "peer": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -2744,9 +2396,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -2763,10 +2415,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -2864,9 +2516,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001638", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001638.tgz", - "integrity": "sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==", + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", "dev": true, "funding": [ { @@ -2889,17 +2541,18 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/check-more-types": { @@ -2921,9 +2574,9 @@ } }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "funding": [ { "type": "github", @@ -2993,39 +2646,6 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/cliui/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -3041,19 +2661,20 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colorette": { "version": "2.0.20", @@ -3113,13 +2734,13 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", "dev": true, "peer": true, "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.24.2" }, "funding": { "type": "opencollective", @@ -3132,9 +2753,9 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3145,23 +2766,23 @@ } }, "node_modules/cypress": { - "version": "12.17.4", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", - "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "version": "13.16.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.16.0.tgz", + "integrity": "sha512-g6XcwqnvzXrqiBQR/5gN+QsyRmKRhls1y5E42fyOvsmU7JuY+wM6uHJWj4ZPttjabzbnRvxcik2WemR8+xT6FA==", "hasInstallScript": true, "dependencies": { - "@cypress/request": "2.88.12", + "@cypress/request": "^3.0.6", "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", "blob-util": "^2.0.2", "bluebird": "^3.7.2", - "buffer": "^5.6.0", + "buffer": "^5.7.1", "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", + "ci-info": "^4.0.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", "commander": "^6.2.1", @@ -3176,7 +2797,6 @@ "figures": "^3.2.0", "fs-extra": "^9.1.0", "getos": "^3.2.1", - "is-ci": "^3.0.0", "is-installed-globally": "~0.4.0", "lazy-ass": "^1.6.0", "listr2": "^3.8.3", @@ -3190,7 +2810,8 @@ "request-progress": "^3.0.0", "semver": "^7.5.3", "supports-color": "^8.1.1", - "tmp": "~0.2.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", "untildify": "^4.0.0", "yauzl": "^2.10.0" }, @@ -3198,7 +2819,7 @@ "cypress": "bin/cypress" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=18.0.0" + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, "node_modules/cypress-real-events": { @@ -3209,79 +2830,15 @@ "cypress": "^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x" } }, - "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==", - "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==" }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cypress/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/cypress/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/cypress/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -3315,16 +2872,16 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3405,9 +2962,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.814", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.814.tgz", - "integrity": "sha512-GVulpHjFu1Y9ZvikvbArHmAhZXtm3wHlpjTMcXNGKl4IQ4jMQjlnz8yMQYYqdLHKi/jEL2+CBC2akWVCoIGUdw==", + "version": "1.5.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz", + "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==", "dev": true }, "node_modules/emoji-regex": { @@ -3424,9 +2981,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "peer": true, "dependencies": { @@ -3482,9 +3039,9 @@ "dev": true }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -3678,6 +3235,13 @@ "dev": true, "peer": true }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true, + "peer": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -3773,16 +3337,16 @@ } }, "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" } }, "node_modules/fromentries": { @@ -4008,12 +3572,11 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -4092,13 +3655,13 @@ "dev": true }, "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", - "sshpk": "^1.14.1" + "sshpk": "^1.18.0" }, "engines": { "node": ">=0.10" @@ -4132,9 +3695,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -4182,21 +3745,10 @@ "node": ">=10" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "peer": true, "dependencies": { @@ -4395,15 +3947,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -4420,9 +3963,9 @@ } }, "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4431,18 +3974,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -4485,16 +4016,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "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", @@ -4535,15 +4056,15 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-parse-even-better-errors": { @@ -4701,70 +4222,6 @@ "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==", - "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", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "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==", - "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", @@ -4782,36 +4239,6 @@ "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==", - "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/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "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", @@ -4880,9 +4307,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -4948,9 +4375,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/neo-async": { "version": "2.6.2", @@ -4977,9 +4404,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/node-xlsx": { @@ -5102,9 +4529,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "engines": { "node": ">= 0.4" }, @@ -5277,13 +4704,13 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pg": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", - "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", + "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", "dependencies": { - "pg-connection-string": "^2.6.4", - "pg-pool": "^3.6.2", - "pg-protocol": "^1.6.1", + "pg-connection-string": "^2.7.0", + "pg-pool": "^3.7.0", + "pg-protocol": "^1.7.0", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -5309,9 +4736,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", - "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -5322,17 +4749,17 @@ } }, "node_modules/pg-pool": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", - "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -5358,9 +4785,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -5529,9 +4956,9 @@ } }, "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", + "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", "dev": true, "dependencies": { "fromentries": "^1.2.0" @@ -5545,15 +4972,10 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -5563,16 +4985,18 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "peer": true, "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -5581,11 +5005,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5624,9 +5043,9 @@ "peer": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "peer": true, "dependencies": { @@ -5654,16 +5073,16 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "peer": true, "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -5671,29 +5090,26 @@ "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, + "peer": true + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "peer": true, "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -5739,11 +5155,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -5993,36 +5404,6 @@ "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6140,15 +5521,14 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -6175,9 +5555,9 @@ } }, "node_modules/terser": { - "version": "5.31.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz", - "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, "peer": true, "dependencies": { @@ -6315,6 +5695,22 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, + "node_modules/tldts": { + "version": "6.1.64", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.64.tgz", + "integrity": "sha512-ph4AE5BXWIOsSy9stpoeo7bYe/Cy7VfpciIH4RhVZUPItCJmhqWCN0EVzxd8BOHiyNb42vuJc6NWTjJkg91Tuw==", + "dependencies": { + "tldts-core": "^6.1.64" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.64", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.64.tgz", + "integrity": "sha512-uqnl8vGV16KsyflHOzqrYjjArjfXaU6rMPXYy2/ZWoRKCkXtghgB4VwTDXUG+t0OTGeSewNAG31/x1gCTfLt+Q==" + }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -6323,15 +5719,6 @@ "node": ">=14.14" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=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", @@ -6345,31 +5732,28 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -6408,9 +5792,9 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "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, "peer": true, "engines": { @@ -6432,9 +5816,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "peer": true, "engines": { @@ -6468,9 +5852,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -6487,8 +5871,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -6507,15 +5891,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -6538,9 +5913,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "peer": true, "dependencies": { @@ -6552,22 +5927,21 @@ } }, "node_modules/webpack": { - "version": "5.92.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", - "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, "peer": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -6698,36 +6072,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6810,9 +6154,9 @@ } }, "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "peer": true, "engines": { diff --git a/cypress-tests/package.json b/cypress-tests/package.json index 1bfb253c0f..57f609edef 100644 --- a/cypress-tests/package.json +++ b/cypress-tests/package.json @@ -10,7 +10,7 @@ "@cypress/code-coverage": "^3.12.12", "@cypress/webpack-preprocessor": "^5.12.0", "@faker-js/faker": "^7.3.0", - "cypress": "^12.5.1" + "cypress": "^13.16.0" }, "dependencies": { "cypress-real-events": "^1.7.6", diff --git a/frontend/.version b/frontend/.version index 3ee906ea61..7f73218cc7 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -3.2.4-ce \ No newline at end of file +3.2.0-ce diff --git a/frontend/assets/images/icons/ai-tag.svg b/frontend/assets/images/icons/ai-tag.svg new file mode 100644 index 0000000000..58916f24af --- /dev/null +++ b/frontend/assets/images/icons/ai-tag.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/src/AppBuilder/QueryManager/Components/QueryManagerBody.jsx b/frontend/src/AppBuilder/QueryManager/Components/QueryManagerBody.jsx index c891ba4c95..40ec900be4 100644 --- a/frontend/src/AppBuilder/QueryManager/Components/QueryManagerBody.jsx +++ b/frontend/src/AppBuilder/QueryManager/Components/QueryManagerBody.jsx @@ -279,6 +279,12 @@ export const QueryManagerBody = ({ darkMode, options, setOptions, activeTab }) = if (isEmpty(selectableDataSources)) { return ''; } + const isSampleDb = selectedDataSource?.type === DATA_SOURCE_TYPE.SAMPLE; + const docLink = isSampleDb + ? 'https://docs.tooljet.com/docs/data-sources/sample-data-sources' + : selectedDataSource?.pluginId && selectedDataSource.pluginId.trim() !== '' + ? `https://docs.tooljet.com/docs/marketplace/plugins/marketplace-plugin-${selectedDataSource?.kind}/` + : `https://docs.tooljet.com/docs/data-sources/${selectedDataSource?.kind}`; return ( <>
@@ -299,7 +305,7 @@ export const QueryManagerBody = ({ darkMode, options, setOptions, activeTab }) = > Source
-
+
+
+ {`To know more about querying ${selectedDataSource?.kind} data,`} +   + + {t('globals.readDocumentation', 'read documentation').toLowerCase()} + +
diff --git a/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabBody.jsx b/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabBody.jsx index 012aa04d52..ab3d6610b0 100644 --- a/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabBody.jsx +++ b/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabBody.jsx @@ -3,12 +3,13 @@ import TabContent from './TabContent'; export default ({ options = [], - jsonBody, + jsonBody, // FIXME: Remove this once data migration to raw_body is complete + rawBody, theme, removeKeyValuePair, addNewKeyValuePair, onChange, - onJsonBodyChange, + onRawBodyChange, componentName, bodyToggle, }) => { @@ -19,10 +20,11 @@ export default ({ theme={theme} removeKeyValuePair={removeKeyValuePair} onChange={onChange} - onJsonBodyChange={onJsonBodyChange} + onRawBodyChange={onRawBodyChange} componentName={componentName} tabType={'body'} - jsonBody={jsonBody} + jsonBody={jsonBody} // FIXME: Remove this once data migration to raw_body is complete + rawBody={rawBody} paramType={'body'} bodyToggle={bodyToggle} addNewKeyValuePair={addNewKeyValuePair} diff --git a/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabContent.jsx b/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabContent.jsx index 402dbcdc64..9f0616b0d1 100644 --- a/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabContent.jsx +++ b/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/TabContent.jsx @@ -12,8 +12,9 @@ export default ({ options = [], theme, onChange, - jsonBody, - onJsonBodyChange, + jsonBody, // FIXME: Remove this once data migration to raw_body is complete + rawBody, + onRawBodyChange, componentName, removeKeyValuePair, paramType, @@ -86,11 +87,10 @@ export default ({
onJsonBodyChange(value)} + onChange={(value) => onRawBodyChange(value)} componentName={`${componentName}/${tabType}`} />
diff --git a/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/Tabs.jsx b/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/Tabs.jsx index 7b5a580b6e..07b0807b0f 100644 --- a/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/Tabs.jsx +++ b/frontend/src/AppBuilder/QueryManager/QueryEditors/Restapi/Tabs.jsx @@ -10,7 +10,7 @@ function ControlledTabs({ options, theme, onChange, - onJsonBodyChange, + onRawBodyChange, removeKeyValuePair, addNewKeyValuePair, darkMode, @@ -34,7 +34,7 @@ function ControlledTabs({ {key === 'body' && (
- Raw JSON   + Raw    { + handleRawBodyChanged = (rawBody) => { const { options } = deepClone(this.state); - options['json_body'] = jsonBody; + + // If this is the first time raw_body is set, nullify json_body for data migration + // FIXME: Remove this if condition once data migration to raw_body is complete + if (!options['raw_body'] && options['json_body']) { + options['json_body'] = null; + } + + options['raw_body'] = rawBody; this.setState({ options }, () => { this.props.optionsChanged(options); @@ -188,7 +203,7 @@ class Restapi extends React.Component {

- + this.changeOperation(value)} - width={'100%'} - useMenuPortal={true} - customOption={this.renderOperationOption} - styles={queryManagerSelectComponentStyle(this.props.darkMode, '100%')} - useCustomStyles={true} - /> - - {selectedOperation && ( - - )} -
- - - {selectedOperation && ( -
- {pathParams.length > 0 && ( -
-
{this.props.t('globals.path', 'PATH')}
-
- {pathParams.map((param) => ( -
-
-
- -
-
- this.changeParam('path', param.name, value)} - /> -
- this.removeParam('path', param.name)} - > - - - - -
-
- ))} -
-
- )} - - {queryParams.length > 0 && ( -
-
{this.props.t('globals.query'.toUpperCase(), 'QUERY')}
-
- {queryParams.map((param) => ( -
-
-
- -
-
- this.changeParam('query', param.name, value)} - /> -
- this.removeParam('query', param.name)} - > - - - - -
-
- ))} -
-
- )} - - {requestBody.schema.properties && ( -
-
{this.props.t('globals.requestBody', 'REQUEST BODY')}
-
= 1 && 'input-group-parent-container' - }`} - > - {Object.keys(requestBody.schema.properties).map((param) => ( -
-
-
- -
-
- this.changeParam('request', param, value)} - /> -
- this.removeParam('request', param)} - > - - - - -
-
- ))} -
-
- )} -
- )} - - )} - - ); - } -} - -export const Stripe = withTranslation()(StripeComponent); diff --git a/frontend/src/AppBuilder/QueryManager/QueryEditors/index.js b/frontend/src/AppBuilder/QueryManager/QueryEditors/index.js index a87e807b1b..51d231dc33 100644 --- a/frontend/src/AppBuilder/QueryManager/QueryEditors/index.js +++ b/frontend/src/AppBuilder/QueryManager/QueryEditors/index.js @@ -6,7 +6,6 @@ import { Restapi } from './Restapi'; // eslint-disable-next-line import/no-unresolved import { Runjs } from './Runjs'; import { Runpy } from './Runpy'; -import { Stripe } from './Stripe'; import { Openapi } from './Openapi'; import { Workflows } from './Workflows'; import Grpc from './GRPC'; @@ -37,7 +36,6 @@ export const allSources = { Restapi, Runjs, Runpy, - Stripe, Openapi, Grpc, Workflows, diff --git a/frontend/src/AppBuilder/Widgets/Container.jsx b/frontend/src/AppBuilder/Widgets/Container.jsx index 11ce20e464..2022a0a7ad 100644 --- a/frontend/src/AppBuilder/Widgets/Container.jsx +++ b/frontend/src/AppBuilder/Widgets/Container.jsx @@ -65,7 +65,7 @@ export const Container = ({ return (
-
- {selectedDataSource && this.props.showBackButton && ( -
this.setState({ selectedDataSource: false }, () => this.onExit())} - > - -
- )} - - {selectedDataSource && !isSampleDb ? ( -
- {getSvgIcon(dataSourceMeta?.kind?.toLowerCase(), 35, 35, selectedDataSourceIcon)} -
- this.onNameChanged(e.target.value)} - className="form-control-plaintext form-control-plaintext-sm color-slate12" - value={decodeEntities(selectedDataSource.name)} - style={{ width: '160px' }} - data-cy="data-source-name-input-filed" - autoFocus - autoComplete="off" - /> - {!this.props.isEditing && ( - - - - )} -
-
- ) : ( -
-
- -
-
Sample data source
+
+
+ {selectedDataSource && this.props.showBackButton && ( +
this.setState({ selectedDataSource: false }, () => this.onExit())} + > +
)} - {!selectedDataSource && ( - - {this.props.t('editor.queryManager.dataSourceManager.addNewDataSource', 'Add new datasource')} + + {selectedDataSource && !isSampleDb ? ( +
+ {getSvgIcon(dataSourceMeta?.kind?.toLowerCase(), 35, 35, selectedDataSourceIcon)} +
+ this.onNameChanged(e.target.value)} + className="form-control-plaintext form-control-plaintext-sm color-slate12" + value={decodeEntities(selectedDataSource.name)} + style={{ width: '160px' }} + data-cy="data-source-name-input-filed" + autoFocus + autoComplete="off" + disabled={!canUpdateDataSource(selectedDataSource.id)} + /> + {!this.props.isEditing && ( + + + + )} +
+
+ ) : ( +
+
+ +
+
+ {' '} + Sample data source +
+
+ )} + {!selectedDataSource && ( + + {this.props.t('editor.queryManager.dataSourceManager.addNewDataSource', 'Add new datasource')} + + )} +
+ {!this.props.isEditing && ( + this.hideModal()} + > + )} - - {!this.props.isEditing && ( - this.hideModal()} - > - - - )} +
+
+ {this.props.tags && + this.props.tags.map((tag) => { + if (tag === 'AI') { + return ( +
+ + {tag} +
+ ); + } + })} +
{this.renderEnvironmentsTab(selectedDataSource)} diff --git a/frontend/src/Editor/QueryManager/Components/QueryManagerBody.jsx b/frontend/src/Editor/QueryManager/Components/QueryManagerBody.jsx index ee81aa4484..c746c306fd 100644 --- a/frontend/src/Editor/QueryManager/Components/QueryManagerBody.jsx +++ b/frontend/src/Editor/QueryManager/Components/QueryManagerBody.jsx @@ -12,7 +12,12 @@ import { ChangeDataSource } from './ChangeDataSource'; import { CustomToggleSwitch } from './CustomToggleSwitch'; import { EventManager } from '@/Editor/Inspector/EventManager'; import { staticDataSources, customToggles, mockDataQueryAsComponent, RestAPIToggles } from '../constants'; -import { DataSourceTypes } from '../../DataSourceManager/SourceComponents'; +import { + DataSourceTypes, + DataBaseSources, + ApiSources, + CloudStorageSources, +} from '../../DataSourceManager/SourceComponents'; import { useDataSources, useGlobalDataSources, useSampleDataSource } from '@/_stores/dataSourcesStore'; import { useDataQueriesActions } from '@/_stores/dataQueriesStore'; import { useSelectedQuery, useSelectedDataSource } from '@/_stores/queryPanelStore'; @@ -21,6 +26,7 @@ import { shallow } from 'zustand/shallow'; import SuccessNotificationInputs from './SuccessNotificationInputs'; import ParameterList from './ParameterList'; import { deepClone } from '@/_helpers/utilities/utils.helpers'; +import { DATA_SOURCE_TYPE } from '@/_helpers/constants'; export const QueryManagerBody = ({ darkMode, @@ -49,6 +55,10 @@ export const QueryManagerBody = ({ - Ref PR #6763 */ const [selectedQueryId, setSelectedQueryId] = useState(selectedQuery?.id); + const [dataSourcesKinds, setDataSourcesKinds] = useState([]); + const [userDefinedSources, setUserDefinedSources] = useState( + [...dataSources, ...globalDataSources, !!sampleDataSource && sampleDataSource].filter(Boolean) + ); const queryName = selectedQuery?.name ?? ''; const sourcecomponentName = selectedDataSource?.kind?.charAt(0).toUpperCase() + selectedDataSource?.kind?.slice(1); @@ -64,6 +74,24 @@ export const QueryManagerBody = ({ shallow ); + useEffect(() => { + const shouldAddSampleDataSource = !!sampleDataSource; + const allDataSources = [...dataSources, ...globalDataSources, shouldAddSampleDataSource && sampleDataSource].filter( + Boolean + ); + setUserDefinedSources(allDataSources); + const dataSourceKindsList = [...DataBaseSources, ...ApiSources, ...CloudStorageSources]; + allDataSources.forEach(({ plugin }) => { + //plugin names are fetched from list data source api call only + if (isEmpty(plugin)) { + return; + } + dataSourceKindsList.push({ name: plugin.name, kind: plugin.pluginId }); + }); + setDataSourcesKinds(dataSourceKindsList); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dataSources]); + useEffect(() => { setDataSourceMeta( selectedQuery?.pluginId @@ -308,6 +336,14 @@ export const QueryManagerBody = ({ if (isEmpty(selectableDataSources)) { return ''; } + const isSampleDb = selectedDataSource?.type === DATA_SOURCE_TYPE.SAMPLE; + const docLink = isSampleDb + ? 'https://docs.tooljet.com/docs/data-sources/sample-data-sources' + : selectedDataSource?.pluginId && selectedDataSource.pluginId.trim() !== '' + ? `https://docs.tooljet.com/docs/marketplace/plugins/marketplace-plugin-${selectedDataSource?.kind}/` + : `https://docs.tooljet.com/docs/data-sources/${selectedDataSource?.kind}`; + const selectedDataSourceName = + dataSourcesKinds.find((dsk) => dsk.kind === selectedDataSource.kind)?.name || selectedDataSource.kind; return ( <>
@@ -329,10 +365,11 @@ export const QueryManagerBody = ({ >
Source
-
+
+
+ {`To know more about querying ${selectedDataSourceName} data,`} +   + + {t('globals.readDocumentation', 'read documentation').toLowerCase()} + +
diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabBody.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabBody.jsx index 012aa04d52..ab3d6610b0 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabBody.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabBody.jsx @@ -3,12 +3,13 @@ import TabContent from './TabContent'; export default ({ options = [], - jsonBody, + jsonBody, // FIXME: Remove this once data migration to raw_body is complete + rawBody, theme, removeKeyValuePair, addNewKeyValuePair, onChange, - onJsonBodyChange, + onRawBodyChange, componentName, bodyToggle, }) => { @@ -19,10 +20,11 @@ export default ({ theme={theme} removeKeyValuePair={removeKeyValuePair} onChange={onChange} - onJsonBodyChange={onJsonBodyChange} + onRawBodyChange={onRawBodyChange} componentName={componentName} tabType={'body'} - jsonBody={jsonBody} + jsonBody={jsonBody} // FIXME: Remove this once data migration to raw_body is complete + rawBody={rawBody} paramType={'body'} bodyToggle={bodyToggle} addNewKeyValuePair={addNewKeyValuePair} diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabContent.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabContent.jsx index 6935bf8ae4..7226c6d646 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabContent.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/TabContent.jsx @@ -10,8 +10,9 @@ export default ({ options = [], theme, onChange, - jsonBody, - onJsonBodyChange, + jsonBody, // FIXME: Remove this once data migration to raw_body is complete + rawBody, + onRawBodyChange, componentName, removeKeyValuePair, paramType, @@ -74,11 +75,10 @@ export default ({
onJsonBodyChange(value)} + onChange={(value) => onRawBodyChange(value)} componentName={`${componentName}/${tabType}`} />
diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/Tabs.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/Tabs.jsx index 7b5a580b6e..07b0807b0f 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/Tabs.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/Tabs.jsx @@ -10,7 +10,7 @@ function ControlledTabs({ options, theme, onChange, - onJsonBodyChange, + onRawBodyChange, removeKeyValuePair, addNewKeyValuePair, darkMode, @@ -34,7 +34,7 @@ function ControlledTabs({ {key === 'body' && (
- Raw JSON   + Raw    { + handleRawBodyChanged = (rawBody) => { const { options } = this.state; - options['json_body'] = jsonBody; + + // If this is the first time raw_body is set, nullify json_body for data migration + // FIXME: Remove this if condition once data migration to raw_body is complete + if (!options['raw_body'] && options['json_body']) { + options['json_body'] = null; + } + + options['raw_body'] = rawBody; this.setState({ options }, () => { this.props.optionsChanged(options); @@ -163,12 +178,12 @@ class Restapi extends React.Component { const currentValue = { label: options.method?.toUpperCase(), value: options.method }; return ( -
- {this.props.selectedDataSource?.scope == 'global' &&
}{' '} -
+
+ {this.props?.queryName !== 'workflowNode' &&
Request
} +
- + this.changeOperation(value)} - width={'100%'} - useMenuPortal={true} - customOption={this.renderOperationOption} - styles={queryManagerSelectComponentStyle(this.props.darkMode, '100%')} - useCustomStyles={true} - /> - - {selectedOperation && ( - - )} -
-
- - {selectedOperation && ( -
- {pathParams.length > 0 && ( -
-
{this.props.t('globals.path', 'PATH')}
-
- {pathParams.map((param) => ( -
-
-
- -
-
- this.changeParam('path', param.name, value)} - /> -
- this.removeParam('path', param.name)} - > - - - - -
-
- ))} -
-
- )} - - {queryParams.length > 0 && ( -
-
{this.props.t('globals.query'.toUpperCase(), 'QUERY')}
-
- {queryParams.map((param) => ( -
-
-
- -
-
- this.changeParam('query', param.name, value)} - /> -
- this.removeParam('query', param.name)} - > - - - - -
-
- ))} -
-
- )} - - {requestBody.schema.properties && ( -
-
{this.props.t('globals.requestBody', 'REQUEST BODY')}
-
= 1 && 'input-group-parent-container' - }`} - > - {Object.keys(requestBody.schema.properties).map((param) => ( -
-
-
- -
-
- this.changeParam('request', param, value)} - /> -
- this.removeParam('request', param)} - > - - - - -
-
- ))} -
-
- )} -
- )} -
- )} -
- ); - } -} - -export const Stripe = withTranslation()(StripeComponent); diff --git a/frontend/src/Editor/QueryManager/QueryEditors/index.js b/frontend/src/Editor/QueryManager/QueryEditors/index.js index 52fdc1e2d4..e847b60e53 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/index.js +++ b/frontend/src/Editor/QueryManager/QueryEditors/index.js @@ -6,7 +6,6 @@ import { Restapi } from './Restapi'; // eslint-disable-next-line import/no-unresolved import { Runjs } from './Runjs'; import { Runpy } from './Runpy'; -import { Stripe } from './Stripe'; import { Openapi } from './Openapi'; import Grpc from './GRPC'; import tooljetDbOperations from './TooljetDatabase/operations.json'; @@ -36,7 +35,6 @@ export const allSources = { Restapi, Runjs, Runpy, - Stripe, Openapi, Grpc, }; diff --git a/frontend/src/Editor/WidgetManager/configs/table.js b/frontend/src/Editor/WidgetManager/configs/table.js index c8da1d96b0..df2abc4cbd 100644 --- a/frontend/src/Editor/WidgetManager/configs/table.js +++ b/frontend/src/Editor/WidgetManager/configs/table.js @@ -289,6 +289,7 @@ export const tableConfig = { onCellValueChanged: { displayName: 'Cell value changed' }, onFilterChanged: { displayName: 'Filter changed' }, onNewRowsAdded: { displayName: 'Add new rows' }, + onTableDataDownload: { displayName: 'Download data' }, }, styles: { textColor: { diff --git a/frontend/src/GlobalDatasources/GlobalDataSourcesPage/index.jsx b/frontend/src/GlobalDatasources/GlobalDataSourcesPage/index.jsx index d976c510b1..fb685e8ae4 100644 --- a/frontend/src/GlobalDatasources/GlobalDataSourcesPage/index.jsx +++ b/frontend/src/GlobalDatasources/GlobalDataSourcesPage/index.jsx @@ -13,19 +13,21 @@ import { CloudStorageSources, CommonlyUsedDataSources, } from '@/Editor/DataSourceManager/SourceComponents'; -import { pluginsService, globalDatasourceService, authenticationService } from '@/_services'; +import { pluginsService, globalDatasourceService, authenticationService, marketplaceService } from '@/_services'; import { Card } from '@/_ui/Card'; import { SegregatedList } from '../SegregatedList'; import { SearchBox } from '@/_components'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import SolidIcon from '@/_ui/Icon/SolidIcons'; import { BreadCrumbContext } from '@/App'; +import { canDeleteDataSource } from '@/_helpers'; import { fetchAndSetWindowTitle, pageTitles } from '@white-label/whiteLabelling'; import HeaderSkeleton from '../../_ui/FolderSkeleton/HeaderSkeleton'; import Skeleton from 'react-loading-skeleton'; export const GlobalDataSourcesPage = ({ darkMode = false, updateSelectedDatasource }) => { const containerRef = useRef(null); const [plugins, setPlugins] = useState([]); + const [marketplacePlugins, setMarketplacePlugins] = useState([]); const [filteredDataSources, setFilteredDataSources] = useState([]); const [queryString, setQueryString] = useState(''); const [addingDataSource, setAddingDataSource] = useState(false); @@ -54,7 +56,10 @@ export const GlobalDataSourcesPage = ({ darkMode = false, updateSelectedDatasour setCurrentEnvironment, activeDatasourceList, setActiveDatasourceList, + canCreateDataSource, + canUpdateDataSource, isLoading, + environmentLoading, } = useContext(GlobalDataSourcesContext); const { updateSidebarNAV } = useContext(BreadCrumbContext); @@ -66,6 +71,13 @@ export const GlobalDataSourcesPage = ({ darkMode = false, updateSelectedDatasour .catch((error) => { toast.error(error?.message || 'Failed to fetch plugins'); }); + + marketplaceService + .findAll() + .then(({ data = [] }) => setMarketplacePlugins([...data])) + .catch((error) => { + toast.error(error?.message || 'Failed to fetch plugins'); + }); }, []); useEffect(() => { @@ -320,23 +332,38 @@ export const GlobalDataSourcesPage = ({ darkMode = false, updateSelectedDatasour }; }); + const pluginsWithTags = marketplacePlugins.reduce((acc, plugin) => { + const isInDatasources = datasources.some((datasource) => { + return datasource.kind === plugin.id || datasource.pluginId === plugin.id || datasource.plugin_id === plugin.id; + }); + if (isInDatasources && plugin.tags) { + acc[plugin.id] = plugin.tags; + } + return acc; + }, {}); + return ( <>
- {datasources.map((item) => ( - - ))} + {datasources.map((item) => { + const tags = + pluginsWithTags[item.kind] || pluginsWithTags[item.pluginId] || pluginsWithTags[item.plugin_id] || []; + return ( + + ); + })} {type === 'Plugins' && (
-
+
+ plugin.id === selectedDataSource?.kind || + plugin.id === selectedDataSource?.pluginId || + plugin.id === selectedDataSource?.plugin_id + ); + + const tags = selectedPlugin?.tags || []; + return (
@@ -438,6 +474,9 @@ export const GlobalDataSourcesPage = ({ darkMode = false, updateSelectedDatasour container={selectedDataSource ? containerRef?.current : null} isEditing={isEditing} updateSelectedDatasource={updateSelectedDatasource} + showSaveBtn={canCreateDataSource() || canUpdateDataSource(selectedDataSource?.id) || canDeleteDataSource()} + environmentLoading={environmentLoading} + tags={tags} /> )} {isLoading && loadingState()} diff --git a/frontend/src/ManageOrgConstants/ConstantForm.jsx b/frontend/src/ManageOrgConstants/ConstantForm.jsx index 1eecc5fbbf..e04e4ed292 100644 --- a/frontend/src/ManageOrgConstants/ConstantForm.jsx +++ b/frontend/src/ManageOrgConstants/ConstantForm.jsx @@ -193,17 +193,19 @@ const ConstantForm = ({ {error['name']} {!error['name'] && ( - Name must be unique and max 50 characters + + Name must be unique and max 50 characters + )}
-