diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 4ca79bf2b0..0773deea63 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -33,10 +33,10 @@ jobs: run: npx http-server ./build -P http://localhost:8180/auth/ & sleep 30 - name: Create admin user and add Admin Console client - run: cd tests && npx cypress run --headless --browser chrome --spec cypress/integration/00_set_new_admin_console.spec.js && cd .. + run: cd tests && npx cypress run --headless --browser chrome --spec cypress/integration/00_set_new_admin_console.spec.ts && cd .. - name: Cypress run - run: cd tests && npx cypress run --headless --browser chrome --config ignoreTestFiles=00_set_new_admin_console.spec.js && cd .. + run: cd tests && npx cypress run --headless --browser chrome --config ignoreTestFiles=00_set_new_admin_console.spec.ts && cd .. - name: Add Cypress videos artifacts uses: actions/upload-artifact@v2 diff --git a/package.json b/package.json index 66ec75d880..d7c002aa67 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,8 @@ "version": "1.0.0", "main": "index.js", "license": "MIT", + "private": true, + "workspaces": ["tests"], "scripts": { "build": "snowpack build", "build-storybook": "build-storybook -s public", @@ -15,7 +17,7 @@ "storybook": "start-storybook -p 6006 -s public", "test": "jest", "start:cypress": "cd tests && npx cypress open", - "start:cypress-tests": "cd tests && npx cypress run --config ignoreTestFiles=00_set_new_admin_console.spec.js" + "start:cypress-tests": "cd tests && npx cypress run --config ignoreTestFiles=00_set_new_admin_console.spec.ts" }, "dependencies": { "@patternfly/patternfly": "^4.80.2", diff --git a/tests/cypress/integration/00_set_new_admin_console.spec.js b/tests/cypress/integration/00_set_new_admin_console.spec.js deleted file mode 100644 index 33444d29b4..0000000000 --- a/tests/cypress/integration/00_set_new_admin_console.spec.js +++ /dev/null @@ -1,25 +0,0 @@ -import LoginPage from '../support/pages/LoginPage.js' -import WelcomePage from '../support/pages/WelcomePage.js' -import OldClientPage from '../support/pages/admin_console/manage/clients/OldClientPage.js' - -const loginPage = new LoginPage(); -const welcomePage = new WelcomePage(); -const oldClientPage = new OldClientPage(); - -describe("Set up test", function () { - beforeEach(function () { - cy.visit("http://localhost:8180/auth") - }) - - it("Create admin user and adds admin console client", function () { - welcomePage - .createAdminUser() - .goToAdminConsole(); - - loginPage.logIn(); - - oldClientPage - .goToClients() - .addNewAdminConsole(); - }); -}) \ No newline at end of file diff --git a/tests/cypress/integration/00_set_new_admin_console.spec.ts b/tests/cypress/integration/00_set_new_admin_console.spec.ts new file mode 100644 index 0000000000..e9a9756925 --- /dev/null +++ b/tests/cypress/integration/00_set_new_admin_console.spec.ts @@ -0,0 +1,21 @@ +import LoginPage from "../support/pages/LoginPage"; +import WelcomePage from "../support/pages/WelcomePage"; +import OldClientPage from "../support/pages/admin_console/manage/clients/OldClientPage"; + +const loginPage = new LoginPage(); +const welcomePage = new WelcomePage(); +const oldClientPage = new OldClientPage(); + +describe("Set up test", function () { + beforeEach(function () { + cy.visit("http://localhost:8180/auth"); + }); + + it("Create admin user and adds admin console client", function () { + welcomePage.createAdminUser().goToAdminConsole(); + + loginPage.logIn(); + + oldClientPage.goToClients().addNewAdminConsole(); + }); +}); diff --git a/tests/cypress/integration/client_scopes_test.spec.js b/tests/cypress/integration/client_scopes_test.spec.ts similarity index 74% rename from tests/cypress/integration/client_scopes_test.spec.js rename to tests/cypress/integration/client_scopes_test.spec.ts index 88660894b9..8122476ecf 100644 --- a/tests/cypress/integration/client_scopes_test.spec.js +++ b/tests/cypress/integration/client_scopes_test.spec.ts @@ -1,8 +1,8 @@ -import LoginPage from "../support/pages/LoginPage.js"; -import Masthead from "../support/pages/admin_console/Masthead.js"; -import ListingPage from "../support/pages/admin_console/ListingPage.js"; -import SidebarPage from "../support/pages/admin_console/SidebarPage.js"; -import CreateClientScopePage from "../support/pages/admin_console/manage/client_scopes/CreateClientScopePage.js"; +import LoginPage from "../support/pages/LoginPage"; +import Masthead from "../support/pages/admin_console/Masthead"; +import ListingPage from "../support/pages/admin_console/ListingPage"; +import SidebarPage from "../support/pages/admin_console/SidebarPage"; +import CreateClientScopePage from "../support/pages/admin_console/manage/client_scopes/CreateClientScopePage"; let itemId = "client_scope_crud"; const loginPage = new LoginPage(); @@ -36,26 +36,20 @@ describe("Client Scopes test", function () { ); }); - it('Client scope CRUD test',async function () { + it("Client scope CRUD test", () => { itemId += "_" + (Math.random() + 1).toString(36).substring(7); // Create - listingPage - .itemExist(itemId, false) - .goToCreateItem(); + listingPage.itemExist(itemId, false).goToCreateItem(); - createClientScopePage - .fillClientScopeData(itemId) - .save(); + createClientScopePage.fillClientScopeData(itemId).save(); masthead.checkNotificationMessage("Client scope created"); sidebarPage.goToClientScopes(); // Delete - listingPage - .itemExist(itemId) - .deleteItem(itemId); // There should be a confirmation pop-up + listingPage.itemExist(itemId).deleteItem(itemId); // There should be a confirmation pop-up masthead.checkNotificationMessage("The client scope has been deleted"); @@ -63,4 +57,4 @@ describe("Client Scopes test", function () { .itemExist(itemId, false); }); }); -}) \ No newline at end of file +}); diff --git a/tests/cypress/integration/clients_test.spec.js b/tests/cypress/integration/clients_test.spec.ts similarity index 85% rename from tests/cypress/integration/clients_test.spec.js rename to tests/cypress/integration/clients_test.spec.ts index b6d9a6382e..6d805dd486 100644 --- a/tests/cypress/integration/clients_test.spec.js +++ b/tests/cypress/integration/clients_test.spec.ts @@ -1,8 +1,8 @@ -import LoginPage from "../support/pages/LoginPage.js"; -import Masthead from "../support/pages/admin_console/Masthead.js"; -import ListingPage from "../support/pages/admin_console/ListingPage.js"; -import SidebarPage from "../support/pages/admin_console/SidebarPage.js"; -import CreateClientPage from "../support/pages/admin_console/manage/clients/CreateClientPage.js"; +import LoginPage from "../support/pages/LoginPage"; +import Masthead from "../support/pages/admin_console/Masthead"; +import ListingPage from "../support/pages/admin_console/ListingPage"; +import SidebarPage from "../support/pages/admin_console/SidebarPage"; +import CreateClientPage from "../support/pages/admin_console/manage/clients/CreateClientPage"; let itemId = "client_crud"; const loginPage = new LoginPage(); @@ -51,7 +51,7 @@ describe("Clients test", function () { it("Client CRUD test", function () { itemId += "_" + (Math.random() + 1).toString(36).substring(7); - + // Create listingPage.itemExist(itemId, false).goToCreateItem(); @@ -65,13 +65,10 @@ describe("Clients test", function () { sidebarPage.goToClients(); - listingPage - .searchItem(itemId) - .itemExist(itemId); + listingPage.searchItem(itemId).itemExist(itemId); // Delete - listingPage - .deleteItem(itemId); // There should be a confirmation pop-up + listingPage.deleteItem(itemId); // There should be a confirmation pop-up masthead.checkNotificationMessage("The client has been deleted"); diff --git a/tests/cypress/integration/login_test.spec.js b/tests/cypress/integration/login_test.spec.ts similarity index 82% rename from tests/cypress/integration/login_test.spec.js rename to tests/cypress/integration/login_test.spec.ts index c2a0a14651..1786262ad1 100644 --- a/tests/cypress/integration/login_test.spec.js +++ b/tests/cypress/integration/login_test.spec.ts @@ -1,5 +1,5 @@ -import LoginPage from "./../support/pages/LoginPage.js"; -import Masthead from "./../support/pages/admin_console/Masthead.js"; +import LoginPage from "../support/pages/LoginPage"; +import Masthead from "../support/pages/admin_console/Masthead"; const username = "admin"; const password = "admin"; diff --git a/tests/cypress/integration/masthead_test.spec.js b/tests/cypress/integration/masthead_test.spec.ts similarity index 92% rename from tests/cypress/integration/masthead_test.spec.js rename to tests/cypress/integration/masthead_test.spec.ts index 3ba0851cfc..85d438fb27 100644 --- a/tests/cypress/integration/masthead_test.spec.js +++ b/tests/cypress/integration/masthead_test.spec.ts @@ -1,7 +1,7 @@ -import ListingPage from "../support/pages/admin_console/ListingPage.js"; -import LoginPage from "../support/pages/LoginPage.js"; -import SidebarPage from "../support/pages/admin_console/SidebarPage.js"; -import Masthead from "../support/pages/admin_console/Masthead.js"; +import ListingPage from "../support/pages/admin_console/ListingPage"; +import LoginPage from "../support/pages/LoginPage"; +import SidebarPage from "../support/pages/admin_console/SidebarPage"; +import Masthead from "../support/pages/admin_console/Masthead"; const loginPage = new LoginPage(); const masthead = new Masthead(); diff --git a/tests/cypress/integration/realm_roles_test.spec.js b/tests/cypress/integration/realm_roles_test.spec.ts similarity index 78% rename from tests/cypress/integration/realm_roles_test.spec.js rename to tests/cypress/integration/realm_roles_test.spec.ts index 7fe938fcc3..2a772fdae8 100644 --- a/tests/cypress/integration/realm_roles_test.spec.js +++ b/tests/cypress/integration/realm_roles_test.spec.ts @@ -1,9 +1,9 @@ -import LoginPage from "../support/pages/LoginPage.js"; -import Masthead from "../support/pages/admin_console/Masthead.js"; -import ModalUtils from "../support/util/ModalUtils.js"; -import ListingPage from "../support/pages/admin_console/ListingPage.js"; -import SidebarPage from "../support/pages/admin_console/SidebarPage.js"; -import CreateRealmRolePage from "../support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.js"; +import LoginPage from "../support/pages/LoginPage"; +import Masthead from "../support/pages/admin_console/Masthead"; +import ModalUtils from "../support/util/ModalUtils"; +import ListingPage from "../support/pages/admin_console/ListingPage"; +import SidebarPage from "../support/pages/admin_console/SidebarPage"; +import CreateRealmRolePage from "../support/pages/admin_console/manage/realm_roles/CreateRealmRolePage"; let itemId = "realm_role_crud"; const loginPage = new LoginPage(); @@ -39,9 +39,7 @@ describe("Realm roles test", function () { itemId += "_" + (Math.random() + 1).toString(36).substring(7); // Create - listingPage - .itemExist(itemId, false) - .goToCreateItem(); + listingPage.itemExist(itemId, false).goToCreateItem(); createRealmRolePage.fillRealmRoleData(itemId).save(); @@ -49,15 +47,12 @@ describe("Realm roles test", function () { sidebarPage.goToRealmRoles(); - listingPage - .searchItem(itemId) - .itemExist(itemId); + listingPage.searchItem(itemId).itemExist(itemId); // Update - + // Delete - listingPage - .deleteItem(itemId); + listingPage.deleteItem(itemId); modalUtils.checkModalTitle("Delete role?").confirmModal(); diff --git a/tests/cypress/integration/realm_test.spec.js b/tests/cypress/integration/realm_test.spec.ts similarity index 88% rename from tests/cypress/integration/realm_test.spec.js rename to tests/cypress/integration/realm_test.spec.ts index 667ceea815..1221c5d627 100644 --- a/tests/cypress/integration/realm_test.spec.js +++ b/tests/cypress/integration/realm_test.spec.ts @@ -1,7 +1,7 @@ -import LoginPage from "../support/pages/LoginPage.js"; -import SidebarPage from "../support/pages/admin_console/SidebarPage.js"; -import CreateRealmPage from "../support/pages/admin_console/CreateRealmPage.js"; -import Masthead from "../support/pages/admin_console/Masthead.js"; +import LoginPage from "../support/pages/LoginPage"; +import SidebarPage from "../support/pages/admin_console/SidebarPage"; +import CreateRealmPage from "../support/pages/admin_console/CreateRealmPage"; +import Masthead from "../support/pages/admin_console/Masthead"; const masthead = new Masthead(); const loginPage = new LoginPage(); diff --git a/tests/cypress/support/pages/LoginPage.js b/tests/cypress/support/pages/LoginPage.ts similarity index 60% rename from tests/cypress/support/pages/LoginPage.js rename to tests/cypress/support/pages/LoginPage.ts index 6d065ad855..7b0c9f3dcf 100644 --- a/tests/cypress/support/pages/LoginPage.js +++ b/tests/cypress/support/pages/LoginPage.ts @@ -1,9 +1,17 @@ export default class LoginPage { + userNameInput: string; + passwordInput: string; + submitBtn: string; + errorText: string; + userDrpDwn: string; + oldLoadContainer: string; + loadContainer: string; constructor() { this.userNameInput = "#username"; this.passwordInput = "#password"; this.submitBtn = "#kc-login"; + this.userDrpDwn = "#user-dropdown"; this.errorText = ".kc-feedback-text"; this.oldLoadContainer = "#loading"; @@ -21,14 +29,16 @@ export default class LoginPage { cy.get(this.oldLoadContainer).should("not.exist"); cy.get(this.loadContainer).should("not.exist"); - cy.get("body").children().then((children) => { - if(children.length == 1) { - cy.get(this.userNameInput).type(userName); - cy.get(this.passwordInput).type(password); - - cy.get(this.submitBtn).click(); - } - }); + cy.get("body") + .children() + .then((children) => { + if (children.length == 1) { + cy.get(this.userNameInput).type(userName); + cy.get(this.passwordInput).type(password); + + cy.get(this.submitBtn).click(); + } + }); } checkErrorIsDisplayed() { @@ -37,9 +47,9 @@ export default class LoginPage { return this; } - checkErrorMessage(message) { + checkErrorMessage(message: string) { cy.get(this.errorText).invoke("text").should("contain", message); return this; } -} \ No newline at end of file +} diff --git a/tests/cypress/support/pages/WelcomePage.js b/tests/cypress/support/pages/WelcomePage.js deleted file mode 100644 index 7353cfa44f..0000000000 --- a/tests/cypress/support/pages/WelcomePage.js +++ /dev/null @@ -1,27 +0,0 @@ -export default class WelcomePage { - - constructor() { - this.userNameInput = "#username"; - this.passwordInput = "#password"; - this.confirmPasswordInput = "#passwordConfirmation"; - this.createBtn = "#create-button"; - - this.adminConsoleBtn = ".welcome-primary-link a"; - } - - createAdminUser(userName = "admin", password = "admin") { - cy.get(this.userNameInput).type(userName); - cy.get(this.passwordInput).type(password); - cy.get(this.confirmPasswordInput).type(password); - - cy.get(this.createBtn).click(); - - return this; - } - - goToAdminConsole() { - cy.get(this.adminConsoleBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/WelcomePage.ts b/tests/cypress/support/pages/WelcomePage.ts new file mode 100644 index 0000000000..cd7db5e54c --- /dev/null +++ b/tests/cypress/support/pages/WelcomePage.ts @@ -0,0 +1,32 @@ +export default class WelcomePage { + userNameInput: string; + passwordInput: string; + confirmPasswordInput: string; + createBtn: string; + adminConsoleBtn: string; + + constructor() { + this.userNameInput = "#username"; + this.passwordInput = "#password"; + this.confirmPasswordInput = "#passwordConfirmation"; + this.createBtn = "#create-button"; + + this.adminConsoleBtn = ".welcome-primary-link a"; + } + + createAdminUser(userName = "admin", password = "admin") { + cy.get(this.userNameInput).type(userName); + cy.get(this.passwordInput).type(password); + cy.get(this.confirmPasswordInput).type(password); + + cy.get(this.createBtn).click(); + + return this; + } + + goToAdminConsole() { + cy.get(this.adminConsoleBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/CreateRealmPage.js b/tests/cypress/support/pages/admin_console/CreateRealmPage.js deleted file mode 100644 index ca324d89e8..0000000000 --- a/tests/cypress/support/pages/admin_console/CreateRealmPage.js +++ /dev/null @@ -1,25 +0,0 @@ -export default class CreateRealmPage { - - constructor() { - this.browseBtn = '#kc-realm-filename-browse-button'; - this.clearBtn = '.pf-c-file-upload__file-select button:last-child'; - this.realmFileNameInput = '#kc-realm-filename'; - this.realmNameInput = '#kc-realm-name'; - this.enabledSwitch = '[for="kc-realm-enabled-switch"] span.pf-c-switch__toggle'; - - this.createBtn = '.pf-c-form__group:last-child button[type="submit"]'; - this.cancelBtn = '.pf-c-form__group:last-child button[type="button"]'; - } - - fillRealmName(realmName) { - cy.get(this.realmNameInput).type(realmName); - - return this; - } - - createRealm() { - cy.get(this.createBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/CreateRealmPage.ts b/tests/cypress/support/pages/admin_console/CreateRealmPage.ts new file mode 100644 index 0000000000..1329fdf12c --- /dev/null +++ b/tests/cypress/support/pages/admin_console/CreateRealmPage.ts @@ -0,0 +1,33 @@ +export default class CreateRealmPage { + browseBtn: string; + clearBtn: string; + realmFileNameInput: string; + realmNameInput: string; + enabledSwitch: string; + createBtn: string; + cancelBtn: string; + + constructor() { + this.browseBtn = "#kc-realm-filename-browse-button"; + this.clearBtn = ".pf-c-file-upload__file-select button:last-child"; + this.realmFileNameInput = "#kc-realm-filename"; + this.realmNameInput = "#kc-realm-name"; + this.enabledSwitch = + '[for="kc-realm-enabled-switch"] span.pf-c-switch__toggle'; + + this.createBtn = '.pf-c-form__group:last-child button[type="submit"]'; + this.cancelBtn = '.pf-c-form__group:last-child button[type="button"]'; + } + + fillRealmName(realmName: string) { + cy.get(this.realmNameInput).type(realmName); + + return this; + } + + createRealm() { + cy.get(this.createBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/ListingPage.js b/tests/cypress/support/pages/admin_console/ListingPage.js deleted file mode 100644 index df4bc09409..0000000000 --- a/tests/cypress/support/pages/admin_console/ListingPage.js +++ /dev/null @@ -1,58 +0,0 @@ -export default class ListingPage { - - constructor() { - this.searchInput = '.pf-c-toolbar__item [type="search"]'; - this.itemsRows = '.pf-c-page__main-section table'; - this.itemRowDrpDwn = '.pf-c-dropdown > button'; - this.exportBtn = '[role="menuitem"]:nth-child(1)'; - this.deleteBtn = '[role="menuitem"]:nth-child(2)'; - this.searchBtn = '.pf-c-page__main .pf-c-toolbar__content-section button.pf-m-control'; - this.createBtn = '.pf-c-page__main .pf-c-toolbar__content-section button.pf-m-primary'; - this.importBtn = '.pf-c-page__main .pf-c-toolbar__content-section button.pf-m-link'; - } - - goToCreateItem() { - cy.get(this.createBtn).click(); - - return this; - } - - goToImportItem() { - cy.get(this.importBtn).click(); - - return this; - } - - searchItem(searchValue) { - cy.get(this.searchInput).type(searchValue); - cy.get(this.searchBtn).click(); - - return this; - } - - itemExist(itemName, exist = true) { - cy.get(this.itemsRows).contains(itemName).should((!exist ? 'not.': '') + 'exist') - - return this; - } - - goToItemDetails(itemName) { - cy.get(this.itemsRows).contains(itemName).click(); - - return this; - } - - deleteItem(itemName) { - cy.get(this.itemsRows).contains(itemName).parentsUntil('tbody').find(this.itemRowDrpDwn).click(); - cy.get(this.itemsRows).contains('Delete').click(); - - return this; - } - - exportItem(itemName) { - cy.get(this.itemsRows).contains(itemName).parentsUntil('tbody').find(this.itemRowDrpDwn).click(); - cy.get(this.itemsRows).contains('Export').click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/ListingPage.ts b/tests/cypress/support/pages/admin_console/ListingPage.ts new file mode 100644 index 0000000000..61b1291466 --- /dev/null +++ b/tests/cypress/support/pages/admin_console/ListingPage.ts @@ -0,0 +1,79 @@ +export default class ListingPage { + searchInput: string; + itemsRows: string; + itemRowDrpDwn: string; + exportBtn: string; + deleteBtn: string; + searchBtn: string; + createBtn: string; + importBtn: string; + + constructor() { + this.searchInput = '.pf-c-toolbar__item [type="search"]'; + this.itemsRows = ".pf-c-page__main-section table"; + this.itemRowDrpDwn = ".pf-c-dropdown > button"; + this.exportBtn = '[role="menuitem"]:nth-child(1)'; + this.deleteBtn = '[role="menuitem"]:nth-child(2)'; + this.searchBtn = + ".pf-c-page__main .pf-c-toolbar__content-section button.pf-m-control"; + this.createBtn = + ".pf-c-page__main .pf-c-toolbar__content-section button.pf-m-primary"; + this.importBtn = + ".pf-c-page__main .pf-c-toolbar__content-section button.pf-m-link"; + } + + goToCreateItem() { + cy.get(this.createBtn).click(); + + return this; + } + + goToImportItem() { + cy.get(this.importBtn).click(); + + return this; + } + + searchItem(searchValue: string) { + cy.get(this.searchInput).type(searchValue); + cy.get(this.searchBtn).click(); + + return this; + } + + itemExist(itemName: string, exist = true) { + cy.get(this.itemsRows) + .contains(itemName) + .should((!exist ? "not." : "") + "exist"); + + return this; + } + + goToItemDetails(itemName: string) { + cy.get(this.itemsRows).contains(itemName).click(); + + return this; + } + + deleteItem(itemName: string) { + cy.get(this.itemsRows) + .contains(itemName) + .parentsUntil("tbody") + .find(this.itemRowDrpDwn) + .click(); + cy.get(this.itemsRows).contains("Delete").click(); + + return this; + } + + exportItem(itemName: string) { + cy.get(this.itemsRows) + .contains(itemName) + .parentsUntil("tbody") + .find(this.itemRowDrpDwn) + .click(); + cy.get(this.itemsRows).contains("Export").click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/Masthead.js b/tests/cypress/support/pages/admin_console/Masthead.ts similarity index 71% rename from tests/cypress/support/pages/admin_console/Masthead.js rename to tests/cypress/support/pages/admin_console/Masthead.ts index 0c9f5b38dc..23e184b05e 100644 --- a/tests/cypress/support/pages/admin_console/Masthead.js +++ b/tests/cypress/support/pages/admin_console/Masthead.ts @@ -1,4 +1,10 @@ export default class Masthead { + menuBtn: string; + logoBtn: string; + helpBtn: string; + userDrpDwn: string; + userDrpDwnKebab: string; + isMobile: boolean; constructor() { this.menuBtn = "#nav-toggle"; this.logoBtn = "#masthead-logo"; @@ -6,6 +12,7 @@ export default class Masthead { this.userDrpDwn = "#user-dropdown"; this.userDrpDwnKebab = "#user-dropdown-kebab"; + this.isMobile = false; } isAdminConsole() { @@ -15,15 +22,16 @@ export default class Masthead { return this; } - isMobileMode() { - return cy.window().specWindow.parent[0].innerWidth < 768; + get isMobileMode() { + return this.isMobile; } - setMobileMode(isMobileMode) { + setMobileMode(isMobileMode: boolean) { + this.isMobile = isMobileMode; if (isMobileMode) { cy.viewport("iphone-6"); } else { - cy.viewport(); + cy.viewport(1024, 768); } } @@ -33,7 +41,7 @@ export default class Masthead { } userDropdown() { - if (this.isMobileMode()) { + if (this.isMobileMode) { return cy.get(this.userDrpDwnKebab); } else { return cy.get(this.userDrpDwn); @@ -50,7 +58,7 @@ export default class Masthead { cy.get("#manage-account").click(); } - checkNotificationMessage(message) { + checkNotificationMessage(message: string) { cy.contains(message).should("exist"); return this; diff --git a/tests/cypress/support/pages/admin_console/SidebarPage.js b/tests/cypress/support/pages/admin_console/SidebarPage.js deleted file mode 100644 index 44f3bb4d33..0000000000 --- a/tests/cypress/support/pages/admin_console/SidebarPage.js +++ /dev/null @@ -1,105 +0,0 @@ -export default class SidebarPage { - - constructor() { - this.realmsDrpDwn = '#realm-select-toggle'; - this.realmsList = '#realm-select ul'; - this.createRealmBtn = '#realm-select li:last-child a'; - - this.clientsBtn = '#nav-item-clients'; - this.clientScopesBtn = '#nav-item-client-scopes'; - this.realmRolesBtn = '#nav-item-roles'; - this.usersBtn = '#nav-item-users'; - this.groupsBtn = '#nav-item-groups'; - this.sessionsBtn = '#nav-item-sessions'; - this.eventsBtn = '#nav-item-events'; - - this.realmSettingsBtn = '#nav-item-realm-settings'; - this.authenticationBtn = '#nav-item-authentication'; - this.identityProvidersBtn = '#nav-item-identity-providers'; - this.userFederationBtn = '#nav-item-user-federation'; - } - - getCurrentRealm() { - return cy.get(this.realmsDrpDwn).invoke('text'); - } - - goToRealm(realmName) { - cy.get(this.realmsDrpDwn).click(); - cy.get(this.realmsList).contains(realmName).click(); - - return this; - } - - goToCreateRealm() { - cy.get(this.realmsDrpDwn).click(); - cy.get(this.createRealmBtn).click(); - - return this; - } - - goToClients() { - cy.get(this.clientsBtn).click(); - - return this; - } - - goToClientScopes() { - cy.get(this.clientScopesBtn).click(); - - return this; - } - - goToRealmRoles() { - cy.get(this.realmRolesBtn).click(); - - return this; - } - - goToUsers() { - cy.get(this.usersBtn).click(); - - return this; - } - - goToGroups() { - cy.get(this.groupsBtn).click(); - - return this; - } - - goToSessions() { - cy.get(this.sessionsBtn).click(); - - return this; - } - - goToEvents() { - cy.get(this.eventsBtn).click(); - - return this; - } - - goToRealmSettings() { - cy.get(this.realmSettingsBtn).click(); - - return this; - } - - goToAuthentication() { - cy.get(this.authenticationBtn).click(); - - return this; - } - - goToIdentityProviders() { - cy.get(this.identityProvidersBtn).click(); - - return this; - } - - goToUserFederation() { - cy.get(this.userFederationBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/SidebarPage.ts b/tests/cypress/support/pages/admin_console/SidebarPage.ts new file mode 100644 index 0000000000..ff9b8ff43e --- /dev/null +++ b/tests/cypress/support/pages/admin_console/SidebarPage.ts @@ -0,0 +1,119 @@ +export default class SidebarPage { + realmsDrpDwn: string; + realmsList: string; + createRealmBtn: string; + clientsBtn: string; + clientScopesBtn: string; + realmRolesBtn: string; + usersBtn: string; + groupsBtn: string; + sessionsBtn: string; + eventsBtn: string; + realmSettingsBtn: string; + authenticationBtn: string; + identityProvidersBtn: string; + userFederationBtn: string; + + constructor() { + this.realmsDrpDwn = "#realm-select-toggle"; + this.realmsList = "#realm-select ul"; + this.createRealmBtn = "#realm-select li:last-child a"; + + this.clientsBtn = "#nav-item-clients"; + this.clientScopesBtn = "#nav-item-client-scopes"; + this.realmRolesBtn = "#nav-item-roles"; + this.usersBtn = "#nav-item-users"; + this.groupsBtn = "#nav-item-groups"; + this.sessionsBtn = "#nav-item-sessions"; + this.eventsBtn = "#nav-item-events"; + + this.realmSettingsBtn = "#nav-item-realm-settings"; + this.authenticationBtn = "#nav-item-authentication"; + this.identityProvidersBtn = "#nav-item-identity-providers"; + this.userFederationBtn = "#nav-item-user-federation"; + } + + getCurrentRealm() { + return cy.get(this.realmsDrpDwn).invoke("text"); + } + + goToRealm(realmName: string) { + cy.get(this.realmsDrpDwn).click(); + cy.get(this.realmsList).contains(realmName).click(); + + return this; + } + + goToCreateRealm() { + cy.get(this.realmsDrpDwn).click(); + cy.get(this.createRealmBtn).click(); + + return this; + } + + goToClients() { + cy.get(this.clientsBtn).click(); + + return this; + } + + goToClientScopes() { + cy.get(this.clientScopesBtn).click(); + + return this; + } + + goToRealmRoles() { + cy.get(this.realmRolesBtn).click(); + + return this; + } + + goToUsers() { + cy.get(this.usersBtn).click(); + + return this; + } + + goToGroups() { + cy.get(this.groupsBtn).click(); + + return this; + } + + goToSessions() { + cy.get(this.sessionsBtn).click(); + + return this; + } + + goToEvents() { + cy.get(this.eventsBtn).click(); + + return this; + } + + goToRealmSettings() { + cy.get(this.realmSettingsBtn).click(); + + return this; + } + + goToAuthentication() { + cy.get(this.authenticationBtn).click(); + + return this; + } + + goToIdentityProviders() { + cy.get(this.identityProvidersBtn).click(); + + return this; + } + + goToUserFederation() { + cy.get(this.userFederationBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/manage/client_scopes/CreateClientScopePage.js b/tests/cypress/support/pages/admin_console/manage/client_scopes/CreateClientScopePage.js deleted file mode 100644 index 5be170397d..0000000000 --- a/tests/cypress/support/pages/admin_console/manage/client_scopes/CreateClientScopePage.js +++ /dev/null @@ -1,81 +0,0 @@ -export default class CreateClientScopePage { - - constructor() { - this.settingsTab = '.pf-c-tabs__item:nth-child(1)'; - this.mappersTab = '.pf-c-tabs__item:nth-child(2)'; - - this.clientScopeNameInput = '#kc-name'; - this.clientScopeNameError = '#kc-name-helper'; - this.clientScopeDescriptionInput = '#kc-description'; - this.clientScopeTypeDrpDwn = '#kc-protocol'; - this.clientScopeTypeList = '#kc-protocol + ul'; - this.displayOnConsentSwitch = '[id="kc-display.on.consent.screen"] + .pf-c-switch__toggle'; - this.consentScreenTextInput = '#kc-consent-screen-text'; - this.includeInTokenSwitch = '[id="includeInTokenScope"] + .pf-c-switch__toggle'; - this.displayOrderInput = '#kc-gui-order'; - - this.saveBtn = '[type="submit"]'; - this.cancelBtn = '[type="button"]'; - } - - //#region General Settings - fillClientScopeData(name, description = '', consentScreenText = '', displayOrder = '') { - cy.get(this.clientScopeNameInput).clear(); - - if(name) { - cy.get(this.clientScopeNameInput).type(name); - } - - if(description) { - cy.get(this.clientScopeDescriptionInput).type(description); - } - - if(consentScreenText) { - cy.get(this.consentScreenTextInput).type(consentScreenText); - } - - if(displayOrder) { - cy.get(this.displayOrderInput).type(displayOrder); - } - - return this; - } - - selectClientScopeType(clientScopeType) { - cy.get(this.clientScopeTypeDrpDwn).click(); - cy.get(this.clientScopeTypeList).contains(clientScopeType).click(); - - return this; - } - - checkClientNameRequiredMessage(exist = true) { - cy.get(this.clientScopeNameError).should((!exist ? 'not.': '') + 'exist'); - - return this; - } - - switchDisplayOnConsentScreen() { - cy.get(this.displayOnConsentSwitch).click(); - - return this; - } - - switchIncludeInTokenScope() { - cy.get(this.includeInTokenSwitch).click(); - - return this; - } - //#endregion - - save() { - cy.get(this.saveBtn).click(); - - return this; - } - - cancel() { - cy.get(this.cancelBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/manage/client_scopes/CreateClientScopePage.ts b/tests/cypress/support/pages/admin_console/manage/client_scopes/CreateClientScopePage.ts new file mode 100644 index 0000000000..cc349d4d21 --- /dev/null +++ b/tests/cypress/support/pages/admin_console/manage/client_scopes/CreateClientScopePage.ts @@ -0,0 +1,101 @@ +export default class CreateClientScopePage { + settingsTab: string; + mappersTab: string; + clientScopeNameInput: string; + clientScopeNameError: string; + clientScopeDescriptionInput: string; + clientScopeTypeDrpDwn: string; + clientScopeTypeList: string; + displayOnConsentSwitch: string; + consentScreenTextInput: string; + includeInTokenSwitch: string; + displayOrderInput: string; + saveBtn: string; + cancelBtn: string; + + constructor() { + this.settingsTab = ".pf-c-tabs__item:nth-child(1)"; + this.mappersTab = ".pf-c-tabs__item:nth-child(2)"; + + this.clientScopeNameInput = "#kc-name"; + this.clientScopeNameError = "#kc-name-helper"; + this.clientScopeDescriptionInput = "#kc-description"; + this.clientScopeTypeDrpDwn = "#kc-protocol"; + this.clientScopeTypeList = "#kc-protocol + ul"; + this.displayOnConsentSwitch = + '[id="kc-display.on.consent.screen"] + .pf-c-switch__toggle'; + this.consentScreenTextInput = "#kc-consent-screen-text"; + this.includeInTokenSwitch = + '[id="includeInTokenScope"] + .pf-c-switch__toggle'; + this.displayOrderInput = "#kc-gui-order"; + + this.saveBtn = '[type="submit"]'; + this.cancelBtn = '[type="button"]'; + } + + //#region General Settings + fillClientScopeData( + name: string, + description = "", + consentScreenText = "", + displayOrder = "" + ) { + cy.get(this.clientScopeNameInput).clear(); + + if (name) { + cy.get(this.clientScopeNameInput).type(name); + } + + if (description) { + cy.get(this.clientScopeDescriptionInput).type(description); + } + + if (consentScreenText) { + cy.get(this.consentScreenTextInput).type(consentScreenText); + } + + if (displayOrder) { + cy.get(this.displayOrderInput).type(displayOrder); + } + + return this; + } + + selectClientScopeType(clientScopeType: string) { + cy.get(this.clientScopeTypeDrpDwn).click(); + cy.get(this.clientScopeTypeList).contains(clientScopeType).click(); + + return this; + } + + checkClientNameRequiredMessage(exist = true) { + cy.get(this.clientScopeNameError).should((!exist ? "not." : "") + "exist"); + + return this; + } + + switchDisplayOnConsentScreen() { + cy.get(this.displayOnConsentSwitch).click(); + + return this; + } + + switchIncludeInTokenScope() { + cy.get(this.includeInTokenSwitch).click(); + + return this; + } + //#endregion + + save() { + cy.get(this.saveBtn).click(); + + return this; + } + + cancel() { + cy.get(this.cancelBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/manage/clients/CreateClientPage.js b/tests/cypress/support/pages/admin_console/manage/clients/CreateClientPage.js deleted file mode 100644 index 5836922ee7..0000000000 --- a/tests/cypress/support/pages/admin_console/manage/clients/CreateClientPage.js +++ /dev/null @@ -1,118 +0,0 @@ -export default class CreateClientPage { - - constructor() { - this.clientTypeDrpDwn = '.pf-c-select__toggle'; - this.clientTypeError = '.pf-c-select + div'; - this.clientTypeList = '.pf-c-select__toggle + ul'; - this.clientIdInput = '#kc-client-id'; - this.clientIdError = '#kc-client-id + div'; - this.clientNameInput = '#kc-name'; - this.clientDescriptionInput = '#kc-description'; - - this.clientAuthenticationSwitch = '[for="kc-authentication"] .pf-c-switch__toggle'; - this.clientAuthorizationSwitch = '[for="kc-authorization"] .pf-c-switch__toggle'; - this.standardFlowChkBx = '#kc-flow-standard'; - this.directAccessChkBx = '#kc-flow-direct'; - this.implicitFlowChkBx = '#kc-flow-implicit'; - this.serviceAccountRolesChkBx = '#kc-flow-service-account'; - - this.continueBtn = '.pf-c-wizard__footer .pf-m-primary'; - this.backBtn = '.pf-c-wizard__footer .pf-m-secondary'; - this.cancelBtn = '.pf-c-wizard__footer .pf-m-link'; - } - - //#region General Settings - selectClientType(clientType) { - cy.get(this.clientTypeDrpDwn).click(); - cy.get(this.clientTypeList).contains(clientType).click(); - - return this; - } - - fillClientData(id, name = '', description = '') { - cy.get(this.clientIdInput).clear(); - - if(id) { - cy.get(this.clientIdInput).type(id); - } - - if(name) { - cy.get(this.clientNameInput).type(name); - } - - if(description) { - cy.get(this.clientDescriptionInput).type(description); - } - - return this; - } - - checkClientTypeRequiredMessage(exist = true) { - cy.get(this.clientTypeError).should((!exist ? 'not.': '') + 'exist'); - - return this; - } - - checkClientIdRequiredMessage(exist = true) { - cy.get(this.clientIdError).should((!exist ? 'not.': '') + 'exist'); - - return this; - } - //#endregion - - //#region Capability config - switchClientAuthentication() { - cy.get(this.clientAuthenticationSwitch).click(); - - return this; - } - - switchClientAuthorization() { - cy.get(this.clientAuthorizationSwitch).click(); - - return this; - } - - clickStandardFlow() { - cy.get(this.standardFlowChkBx).click(); - - return this; - } - - clickDirectAccess() { - cy.get(this.directAccessChkBx).click(); - - return this; - } - - clickImplicitFlow() { - cy.get(this.implicitFlowChkBx).click(); - - return this; - } - - clickServiceAccountRoles() { - cy.get(this.serviceAccountRolesChkBx).click(); - - return this; - } - //#endregion - - continue() { - cy.get(this.continueBtn).click(); - - return this; - } - - back() { - cy.get(this.backBtn).click(); - - return this; - } - - cancel() { - cy.get(this.cancelBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/manage/clients/CreateClientPage.ts b/tests/cypress/support/pages/admin_console/manage/clients/CreateClientPage.ts new file mode 100644 index 0000000000..556c825c27 --- /dev/null +++ b/tests/cypress/support/pages/admin_console/manage/clients/CreateClientPage.ts @@ -0,0 +1,129 @@ +export default class CreateClientPage { + clientTypeDrpDwn: string; + clientTypeError: string; + clientTypeList: string; + clientIdInput: string; + clientIdError: string; + clientDescriptionInput: string; + clientAuthenticationSwitch: string; + standardFlowChkBx: string; + directAccessChkBx: string; + implicitFlowChkBx: string; + serviceAccountRolesChkBx: string; + continueBtn: string; + backBtn: string; + cancelBtn: string; + clientNameInput: string; + + constructor() { + this.clientTypeDrpDwn = ".pf-c-select__toggle"; + this.clientTypeError = ".pf-c-select + div"; + this.clientTypeList = ".pf-c-select__toggle + ul"; + this.clientIdInput = "#kc-client-id"; + this.clientIdError = "#kc-client-id + div"; + this.clientNameInput = "#kc-name"; + this.clientDescriptionInput = "#kc-description"; + + this.clientAuthenticationSwitch = + '[for="kc-authentication"] .pf-c-switch__toggle'; + this.clientAuthenticationSwitch = + '[for="kc-authorization"] .pf-c-switch__toggle'; + this.standardFlowChkBx = "#kc-flow-standard"; + this.directAccessChkBx = "#kc-flow-direct"; + this.implicitFlowChkBx = "#kc-flow-implicit"; + this.serviceAccountRolesChkBx = "#kc-flow-service-account"; + + this.continueBtn = ".pf-c-wizard__footer .pf-m-primary"; + this.backBtn = ".pf-c-wizard__footer .pf-m-secondary"; + this.cancelBtn = ".pf-c-wizard__footer .pf-m-link"; + } + + //#region General Settings + selectClientType(clientType: string) { + cy.get(this.clientTypeDrpDwn).click(); + cy.get(this.clientTypeList).contains(clientType).click(); + + return this; + } + + fillClientData(id: string, name = "", description = "") { + cy.get(this.clientIdInput).clear(); + + if (id) { + cy.get(this.clientIdInput).type(id); + } + + if (name) { + cy.get(this.clientNameInput).type(name); + } + + if (description) { + cy.get(this.clientDescriptionInput).type(description); + } + + return this; + } + + checkClientTypeRequiredMessage(exist = true) { + cy.get(this.clientTypeError).should((!exist ? "not." : "") + "exist"); + + return this; + } + + checkClientIdRequiredMessage(exist = true) { + cy.get(this.clientIdError).should((!exist ? "not." : "") + "exist"); + + return this; + } + //#endregion + + //#region Capability config + switchClientAuthentication() { + cy.get(this.clientAuthenticationSwitch).click(); + + return this; + } + + clickStandardFlow() { + cy.get(this.standardFlowChkBx).click(); + + return this; + } + + clickDirectAccess() { + cy.get(this.directAccessChkBx).click(); + + return this; + } + + clickImplicitFlow() { + cy.get(this.implicitFlowChkBx).click(); + + return this; + } + + clickServiceAccountRoles() { + cy.get(this.serviceAccountRolesChkBx).click(); + + return this; + } + //#endregion + + continue() { + cy.get(this.continueBtn).click(); + + return this; + } + + back() { + cy.get(this.backBtn).click(); + + return this; + } + + cancel() { + cy.get(this.cancelBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/manage/clients/OldClientPage.js b/tests/cypress/support/pages/admin_console/manage/clients/OldClientPage.js deleted file mode 100644 index 4921c0fd0f..0000000000 --- a/tests/cypress/support/pages/admin_console/manage/clients/OldClientPage.js +++ /dev/null @@ -1,29 +0,0 @@ -export default class CreateClientPage { - - constructor() { - this.goToClientsBtn = '[href="#/realms/master/clients"]'; - this.createClientBtn = '#createClient'; - - this.clientIdInput = '#clientId'; - this.rootUrlInput = '#rootUrl'; - - this.saveBtn = '[kc-save]'; - } - - goToClients() { - cy.get(this.goToClientsBtn).click(); - - return this; - } - - addNewAdminConsole() { - cy.get(this.createClientBtn).click(); - - cy.get(this.clientIdInput).type('security-admin-console-v2'); - cy.get(this.rootUrlInput).type('http://localhost:8080/'); - - cy.get(this.saveBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/manage/clients/OldClientPage.ts b/tests/cypress/support/pages/admin_console/manage/clients/OldClientPage.ts new file mode 100644 index 0000000000..48cc906ff5 --- /dev/null +++ b/tests/cypress/support/pages/admin_console/manage/clients/OldClientPage.ts @@ -0,0 +1,34 @@ +export default class CreateClientPage { + goToClientsBtn: string; + createClientBtn: string; + clientIdInput: string; + rootUrlInput: string; + saveBtn: string; + + constructor() { + this.goToClientsBtn = '[href="#/realms/master/clients"]'; + this.createClientBtn = "#createClient"; + + this.clientIdInput = "#clientId"; + this.rootUrlInput = "#rootUrl"; + + this.saveBtn = "[kc-save]"; + } + + goToClients() { + cy.get(this.goToClientsBtn).click(); + + return this; + } + + addNewAdminConsole() { + cy.get(this.createClientBtn).click(); + + cy.get(this.clientIdInput).type("security-admin-console-v2"); + cy.get(this.rootUrlInput).type("http://localhost:8080/"); + + cy.get(this.saveBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.js b/tests/cypress/support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.js deleted file mode 100644 index c7ac859af1..0000000000 --- a/tests/cypress/support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.js +++ /dev/null @@ -1,45 +0,0 @@ -export default class CreateRealmRolePage { - - constructor() { - this.realmRoleNameInput = '#kc-name'; - this.realmRoleNameError = '#kc-name-helper'; - this.realmRoleDescriptionInput = '#kc-role-description'; - - this.saveBtn = '[type="submit"]'; - this.cancelBtn = '[type="button"]'; - } - - //#region General Settings - fillRealmRoleData(name, description = '') { - cy.get(this.realmRoleNameInput).clear(); - - if(name) { - cy.get(this.realmRoleNameInput).type(name); - } - - if(description) { - cy.get(this.realmRoleDescriptionInput).type(description); - } - - return this; - } - - checkRealmRoleNameRequiredMessage(exist = true) { - cy.get(this.realmRoleNameError).should((!exist ? 'not.': '') + 'exist'); - - return this; - } - //#endregion - - save() { - cy.get(this.saveBtn).click(); - - return this; - } - - cancel() { - cy.get(this.cancelBtn).click(); - - return this; - } -} \ No newline at end of file diff --git a/tests/cypress/support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.ts b/tests/cypress/support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.ts new file mode 100644 index 0000000000..86636dd1a8 --- /dev/null +++ b/tests/cypress/support/pages/admin_console/manage/realm_roles/CreateRealmRolePage.ts @@ -0,0 +1,50 @@ +export default class CreateRealmRolePage { + realmRoleNameInput: string; + realmRoleNameError: string; + realmRoleDescriptionInput: string; + saveBtn: string; + cancelBtn: string; + + constructor() { + this.realmRoleNameInput = "#kc-name"; + this.realmRoleNameError = "#kc-name-helper"; + this.realmRoleDescriptionInput = "#kc-role-description"; + + this.saveBtn = '[type="submit"]'; + this.cancelBtn = '[type="button"]'; + } + + //#region General Settings + fillRealmRoleData(name: string, description = "") { + cy.get(this.realmRoleNameInput).clear(); + + if (name) { + cy.get(this.realmRoleNameInput).type(name); + } + + if (description) { + cy.get(this.realmRoleDescriptionInput).type(description); + } + + return this; + } + + checkRealmRoleNameRequiredMessage(exist = true) { + cy.get(this.realmRoleNameError).should((!exist ? "not." : "") + "exist"); + + return this; + } + //#endregion + + save() { + cy.get(this.saveBtn).click(); + + return this; + } + + cancel() { + cy.get(this.cancelBtn).click(); + + return this; + } +} diff --git a/tests/cypress/support/util/ModalUtils.js b/tests/cypress/support/util/ModalUtils.ts similarity index 79% rename from tests/cypress/support/util/ModalUtils.js rename to tests/cypress/support/util/ModalUtils.ts index f794c3721d..e7895bcbc0 100644 --- a/tests/cypress/support/util/ModalUtils.js +++ b/tests/cypress/support/util/ModalUtils.ts @@ -1,4 +1,9 @@ export default class ModalUtils { + modalTitle: string; + modalMessage: string; + confirmModalBtn: string; + cancelModalBtn: string; + closeModalBtn: string; constructor() { this.modalTitle = ".pf-c-modal-box .pf-c-modal-box__title-text"; this.modalMessage = ".pf-c-modal-box .pf-c-modal-box__body"; @@ -26,13 +31,13 @@ export default class ModalUtils { return this; } - checkModalTitle(title) { + checkModalTitle(title: string) { cy.get(this.modalTitle).invoke("text").should("eq", title); return this; } - checkModalMessage(message) { + checkModalMessage(message: string) { cy.get(this.modalMessage).invoke("text").should("eq", message); return this; diff --git a/tests/package.json b/tests/package.json index 30412ac506..ee6dd169ee 100644 --- a/tests/package.json +++ b/tests/package.json @@ -4,6 +4,7 @@ "description": "UI tests for Keycloak using Cypress.", "main": "index.js", "scripts": { + "build": "tsc", "test": "cypress open" }, "author": "", diff --git a/tests/yarn.lock b/tests/yarn.lock index de1a318fa9..3a0dedd70e 100644 --- a/tests/yarn.lock +++ b/tests/yarn.lock @@ -359,10 +359,10 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cypress@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" - integrity sha512-cs5vG3E2JLldAc16+5yQxaVRLLqMVya5RlrfPWkC72S5xrlHFdw7ovxPb61s4wYweROKTyH01WQc2PFzwwVvyQ== +cypress@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.3.0.tgz#e27bba01d7e493265700e1e85333dca0b0127ede" + integrity sha512-Ec6TAFOxdSB2HPINNJ1f7z75pENXcfCaQkz+A9j0eGSvusFJ2NNErq650DexCbNJAnCQkPqXB4XPH9kXnSQnUA== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" @@ -1325,6 +1325,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== + universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" diff --git a/tsconfig.json b/tsconfig.json index ae8d827e38..e9801e8ae5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -59,5 +59,6 @@ /* Advanced Options */ // "declarationDir": "lib" /* Output directory for generated declaration files. */ "skipLibCheck": true, + "types": ["jest", "cypress"] } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e5fdb1e961..a764f24961 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2859,6 +2859,50 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@cypress/listr-verbose-renderer@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" + integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +"@cypress/request@^2.88.5": + version "2.88.5" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" + integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +"@cypress/xvfb@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" + integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== + dependencies: + debug "^3.1.0" + lodash.once "^4.1.1" + "@emotion/cache@^10.0.27": version "10.0.29" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" @@ -3605,6 +3649,13 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + dependencies: + any-observable "^0.3.0" + "@sindresorhus/is@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-2.1.1.tgz#ceff6a28a5b4867c2dd4a1ba513de278ccbe8bb1" @@ -4948,6 +4999,16 @@ dependencies: "@types/node" "*" +"@types/sinonjs__fake-timers@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== + +"@types/sizzle@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" + integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== + "@types/snowpack-env@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@types/snowpack-env/-/snowpack-env-2.3.0.tgz#a5cb4aeef86700df0245ad1a9c830ebe8cc8f752" @@ -5710,6 +5771,11 @@ ansi-to-html@^0.6.11: dependencies: entities "^1.1.2" +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -5736,6 +5802,11 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +arch@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -5988,6 +6059,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + async@~1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -6657,7 +6733,12 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bluebird@^3.3.5, bluebird@^3.5.5: +blob-util@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" + integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== + +bluebird@^3.3.5, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -7221,7 +7302,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -7268,6 +7349,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-more-types@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" + integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= + cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -7391,6 +7477,20 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= + dependencies: + restore-cursor "^1.0.1" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -7398,7 +7498,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-table3@0.6.0: +cli-table3@0.6.0, cli-table3@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== @@ -7408,6 +7508,14 @@ cli-table3@0.6.0: optionalDependencies: colors "^1.1.2" +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -7595,7 +7703,7 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^5.0.0: +commander@^5.0.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== @@ -7652,7 +7760,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -8230,6 +8338,50 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +cypress@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.2.1.tgz#27d5fbcf008c698c390fdb0c03441804176d06c4" + integrity sha512-OYkSgzA4J4Q7eMjZvNf5qWpBLR4RXrkqjL3UZ1UzGGLAskO0nFTi/RomNTG6TKvL3Zp4tw4zFY1gp5MtmkCZrA== + dependencies: + "@cypress/listr-verbose-renderer" "^0.4.1" + "@cypress/request" "^2.88.5" + "@cypress/xvfb" "^1.2.4" + "@types/sinonjs__fake-timers" "^6.0.1" + "@types/sizzle" "^2.3.2" + arch "^2.1.2" + blob-util "2.0.2" + bluebird "^3.7.2" + cachedir "^2.3.0" + chalk "^4.1.0" + check-more-types "^2.24.0" + cli-table3 "~0.6.0" + commander "^5.1.0" + common-tags "^1.8.0" + debug "^4.1.1" + eventemitter2 "^6.4.2" + execa "^4.0.2" + executable "^4.1.1" + extract-zip "^1.7.0" + fs-extra "^9.0.1" + getos "^3.2.1" + is-ci "^2.0.0" + is-installed-globally "^0.3.2" + lazy-ass "^1.6.0" + listr "^0.14.3" + lodash "^4.17.19" + log-symbols "^4.0.0" + minimist "^1.2.5" + moment "^2.27.0" + ospath "^1.2.2" + pretty-bytes "^5.4.1" + ramda "~0.26.1" + request-progress "^3.0.0" + supports-color "^7.2.0" + tmp "~0.2.1" + untildify "^4.0.0" + url "^0.11.0" + yauzl "^2.10.0" + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -8268,6 +8420,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + dateformat@~3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -8292,6 +8449,13 @@ debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: dependencies: ms "^2.1.1" +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -8829,6 +8993,11 @@ electron-to-chromium@^1.3.591: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.609.tgz#938735afa300ebf4eaec7e3fff96b7f3d74ac5f0" integrity sha512-kcmRWmlHsUKKLfsSKSf7VqeTX4takM5ndjVTM3et3qpDCceITYI1DixvIfSDIngALoaTnpoMXD3SXSMpzHkYKA== +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + element-resize-detector@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" @@ -9474,6 +9643,11 @@ etag@^1.8.1, etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eventemitter2@^6.4.2: + version "6.4.3" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" + integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== + eventemitter2@~0.4.13: version "0.4.14" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" @@ -9543,6 +9717,21 @@ execa@^3.2.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" @@ -9558,6 +9747,18 @@ execa@^4.0.3: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +executable@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= + exit@^0.1.2, exit@~0.1.1, exit@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -9693,6 +9894,16 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-zip@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -9817,6 +10028,21 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -10231,6 +10457,16 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -10371,6 +10607,13 @@ getobject@~0.1.0: resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= +getos@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== + dependencies: + async "^3.2.0" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -10450,6 +10693,13 @@ glob@~5.0.0: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" + integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== + dependencies: + ini "1.3.7" + global-modules@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -11299,6 +11549,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -11337,7 +11592,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5: +ini@1.3.7, ini@^1.3.4, ini@^1.3.5: version "1.3.7" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== @@ -11699,6 +11954,14 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-installed-globally@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + is-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" @@ -11746,6 +12009,13 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -11765,6 +12035,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -11794,6 +12069,11 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-reference@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -13257,6 +13537,11 @@ last-call-webpack-plugin@^3.0.0: lodash "^4.17.5" webpack-sources "^1.1.0" +lazy-ass@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" + integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= + lazy-cache@^0.2.3: version "0.2.7" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" @@ -13337,6 +13622,50 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -13450,6 +13779,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.once@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -13485,6 +13819,13 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + log-symbols@^2.1.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -13492,6 +13833,22 @@ log-symbols@^2.1.0, log-symbols@^2.2.0: dependencies: chalk "^2.0.1" +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + loglevel@^1.6.6: version "1.6.8" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" @@ -13862,6 +14219,11 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -13997,7 +14359,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -14009,7 +14371,7 @@ mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment@^2.29.1: +moment@^2.27.0, moment@^2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -14535,6 +14897,18 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -14652,6 +15026,11 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +ospath@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" + integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= + overlayscrollbars@^1.10.2: version "1.13.0" resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.0.tgz#1edb436328133b94877b558f77966d5497ca36a7" @@ -15090,7 +15469,7 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -15996,6 +16375,11 @@ pretty-bytes@^5.1.0: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== +pretty-bytes@^5.4.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" + integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== + pretty-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -16294,6 +16678,11 @@ ramda@^0.21.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= +ramda@~0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" + integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== + randexp@0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" @@ -17136,6 +17525,13 @@ replace-ext@1.0.0: resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= +request-progress@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" + integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= + dependencies: + throttleit "^1.0.0" + request-promise-core@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" @@ -17320,6 +17716,22 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -17455,6 +17867,13 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rxjs@^6.3.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + rxjs@^6.5.3, rxjs@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" @@ -17858,6 +18277,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -18494,6 +18918,13 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" @@ -18526,6 +18957,11 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -18718,6 +19154,11 @@ throttle-debounce@^2.1.0: resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.2.1.tgz#fbd933ae6793448816f7d5b3cae259d464c98137" integrity sha512-i9hAVld1f+woAiyNGqWelpDD5W1tpMroL3NofTz9xzwq6acWBlO2dC8k5EFSZepU6oOINtV5Q3aSPoRg7o4+fA== +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -18782,6 +19223,13 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -19028,6 +19476,11 @@ typescript@^3.8.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== + ua-parser-js@^0.7.18: version "0.7.21" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" @@ -19209,6 +19662,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -19227,6 +19685,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -20034,6 +20497,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -20224,7 +20695,7 @@ yargs@^15.0.2, yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yauzl@^2.4.2: +yauzl@^2.10.0, yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=