From b429cacc29a2dbfc93cc8ca6d83a798437e715bf Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 10 Nov 2020 10:55:07 +0200 Subject: [PATCH] basic cypress setup --- cypress.json | 13 ++ cypress/.gitignore | 4 + cypress/fixtures/users/manager.json | 4 + cypress/fixtures/users/user.json | 4 + cypress/integration/base/no-op.spec.ts | 17 +++ cypress/plugins/index.js | 20 +++ cypress/support/commands.js | 43 ++++++ cypress/support/index.d.ts | 20 +++ cypress/support/index.js | 20 +++ cypress/tsconfig.json | 8 ++ fcb21c8336cd | 0 package.json | 191 +++++++++++++------------ tsconfig.json | 3 + yarn.lock | 119 ++++++++++----- 14 files changed, 334 insertions(+), 132 deletions(-) create mode 100644 cypress.json create mode 100644 cypress/.gitignore create mode 100644 cypress/fixtures/users/manager.json create mode 100644 cypress/fixtures/users/user.json create mode 100644 cypress/integration/base/no-op.spec.ts create mode 100644 cypress/plugins/index.js create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/index.d.ts create mode 100644 cypress/support/index.js create mode 100644 cypress/tsconfig.json delete mode 100644 fcb21c8336cd create mode 100644 tsconfig.json diff --git a/cypress.json b/cypress.json new file mode 100644 index 000000000..47db238c1 --- /dev/null +++ b/cypress.json @@ -0,0 +1,13 @@ +{ + "reporter": "junit", + "baseUrl": "http://localhost:4200", + "env": { + "api_url": "https://timo-redaction-dev.iqser.cloud", + "auth_base_url": "https://redkc-staging.iqser.cloud/auth", + "auth_realm": "redaction", + "auth_client_id": "redaction" + }, + "reporterOptions": { + "mochaFile": "cypress/test-reports/test-[hash].xml" + } +} diff --git a/cypress/.gitignore b/cypress/.gitignore new file mode 100644 index 000000000..f638ce500 --- /dev/null +++ b/cypress/.gitignore @@ -0,0 +1,4 @@ +/videos +/screenshots +/results +/test-reports \ No newline at end of file diff --git a/cypress/fixtures/users/manager.json b/cypress/fixtures/users/manager.json new file mode 100644 index 000000000..740e65f97 --- /dev/null +++ b/cypress/fixtures/users/manager.json @@ -0,0 +1,4 @@ +{ + "username": "manager", + "password": "OsloImWinter" +} diff --git a/cypress/fixtures/users/user.json b/cypress/fixtures/users/user.json new file mode 100644 index 000000000..0fcb3ce05 --- /dev/null +++ b/cypress/fixtures/users/user.json @@ -0,0 +1,4 @@ +{ + "username": "user", + "password": "OsloImWinter" +} diff --git a/cypress/integration/base/no-op.spec.ts b/cypress/integration/base/no-op.spec.ts new file mode 100644 index 000000000..a155a70c6 --- /dev/null +++ b/cypress/integration/base/no-op.spec.ts @@ -0,0 +1,17 @@ +/// +/// + +describe('it should only test login/logout flow', () => { + before(() => { + cy.init('user'); + }); + + after(() => { + cy.cleanup(); + }); + + it('it should land on homepage with no projects', () => { + cy.visit('/ui/projects'); + cy.get('redaction-project-listing-empty', { timeout: 30000 }); + }); +}); diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js new file mode 100644 index 000000000..0f13eafa2 --- /dev/null +++ b/cypress/plugins/index.js @@ -0,0 +1,20 @@ +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +module.exports = (on, config) => { + return config; +}; diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 000000000..aa5337a59 --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,43 @@ +import 'cypress-localstorage-commands'; +import 'cypress-file-upload'; +import 'cypress-keycloak-commands'; + +Cypress.Commands.add('cleanup', () => { + localStorage.clear(); + cy.clearLocalStorageSnapshot(); + cy.kcLogout(); +}); + +Cypress.Commands.add('init', (user) => { + cy.kcLogin('MANAGER').as('tokens'); + cy.deleteAllProjects(); + cy.kcLogout(); + cy.kcLogin(user).as('tokens'); +}); + +Cypress.Commands.add('deleteAllProjects', () => { + cy.get('@tokens').then((tokens) => { + const projectListRequest = { + method: 'GET', + url: Cypress.env('api_url') + '/project', + headers: { + Authorization: 'bearer ' + tokens.access_token + } + }; + + cy.request(projectListRequest).then((projects) => { + projects.body.forEach((project) => { + const deleteProjectRequest = { + method: 'DELETE', + url: Cypress.env('api_url') + '/project/' + project.projectId, + headers: { + Authorization: 'bearer ' + tokens.access_token + } + }; + cy.request(deleteProjectRequest).then((response) => { + console.log('Project Deleted', project.projectId, response); + }); + }); + }); + }); +}); diff --git a/cypress/support/index.d.ts b/cypress/support/index.d.ts new file mode 100644 index 000000000..db6925276 --- /dev/null +++ b/cypress/support/index.d.ts @@ -0,0 +1,20 @@ +/// + +declare namespace Cypress { + interface Chainable { + /** + * Should run before each spec! + */ + init(user?: string): Chainable; + + /** + * Should run after each spec! + */ + cleanup(): Chainable; + + /** + * Deletes user uploads before tests + */ + deleteAllProjects(): Chainable; + } +} diff --git a/cypress/support/index.js b/cypress/support/index.js new file mode 100644 index 000000000..37a498fb5 --- /dev/null +++ b/cypress/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands'; + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 000000000..dee68d8cf --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["es5", "dom"], + "types": ["cypress"] + }, + "include": ["**/*.ts"] +} diff --git a/fcb21c8336cd b/fcb21c8336cd deleted file mode 100644 index e69de29bb..000000000 diff --git a/package.json b/package.json index 476b4326e..870ea14e6 100644 --- a/package.json +++ b/package.json @@ -1,96 +1,101 @@ { - "name": "redaction", - "version": "0.0.129", - "license": "MIT", - "husky": { - "hooks": { - "pre-commit": "pretty-quick --staged && ng lint --project=red-ui-http && ng lint --project=red-ui --fix" + "name": "redaction", + "version": "0.0.130", + "license": "MIT", + "husky": { + "hooks": { + "pre-commit": "pretty-quick --staged && ng lint --project=red-ui-http && ng lint --project=red-ui --fix" + } + }, + "scripts": { + "build-lint-all": "ng lint --project=red-ui-http --fix && ng build --project=red-ui-http && ng lint --project=red-ui --fix && ng build --project=red-ui --prod", + "nx": "nx", + "start": "nx serve", + "build": "nx build", + "test": "nx test", + "lint": "nx workspace-lint && nx lint", + "e2e": "nx e2e", + "affected:apps": "nx affected:apps", + "affected:libs": "nx affected:libs", + "affected:build": "nx affected:build", + "affected:e2e": "nx affected:e2e", + "affected:test": "nx affected:test", + "affected:lint": "nx affected:lint", + "affected:dep-graph": "nx affected:dep-graph", + "affected": "nx affected", + "format": "nx format:write", + "format:write": "nx format:write", + "format:check": "nx format:check", + "update": "nx migrate latest", + "workspace-schematic": "nx workspace-schematic", + "dep-graph": "nx dep-graph", + "help": "nx help", + "postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points" + }, + "private": true, + "dependencies": { + "@angular/animations": "^10.0.0", + "@angular/cdk": "^10.2.3", + "@angular/common": "^10.0.0", + "@angular/core": "^10.0.0", + "@angular/forms": "^10.0.0", + "@angular/material": "^10.2.1", + "@angular/platform-browser": "^10.0.0", + "@angular/platform-browser-dynamic": "^10.0.0", + "@angular/router": "^10.0.0", + "@angular/service-worker": "^10.0.0", + "@ngx-translate/core": "^13.0.0", + "@ngx-translate/http-loader": "^6.0.0", + "@nrwl/angular": "^10.2.0", + "@pdftron/webviewer": "^7.0.1", + "file-saver": "^2.0.2", + "jwt-decode": "^3.0.0", + "keycloak-angular": "^8.0.1", + "keycloak-js": "10.0.2", + "lint-staged": "^10.5.0", + "ng2-file-upload": "^1.4.0", + "ngp-sort-pipe": "^0.0.4", + "ngx-dropzone": "^2.2.2", + "ngx-toastr": "^13.0.0", + "rxjs": "~6.5.5", + "scroll-into-view-if-needed": "^2.2.26", + "zone.js": "^0.10.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.1000.0", + "@angular-devkit/build-ng-packagr": "^0.1001.3", + "@angular/cli": "^10.1.2", + "@angular/compiler": "^10.0.0", + "@angular/compiler-cli": "^10.0.0", + "@angular/language-service": "^10.0.0", + "@nrwl/cypress": "10.2.0", + "@nrwl/jest": "10.2.0", + "@nrwl/workspace": "10.2.0", + "@types/cypress": "^1.1.3", + "@types/jest": "26.0.8", + "@types/node": "~8.9.4", + "codelyzer": "~5.0.1", + "cypress": "^5.6.0", + "cypress-file-upload": "^4.1.1", + "cypress-keycloak": "^1.5.0", + "cypress-keycloak-commands": "^1.2.0", + "cypress-localstorage-commands": "^1.2.4", + "dotenv": "6.2.0", + "eslint": "6.8.0", + "google-translate-api-browser": "^1.1.71", + "husky": "^4.3.0", + "jest": "26.2.2", + "jest-preset-angular": "8.2.1", + "lodash": "^4.17.20", + "moment": "^2.29.1", + "ng-packagr": "^10.1.2", + "prettier": "2.0.4", + "pretty-quick": "^3.1.0", + "superagent": "^6.1.0", + "superagent-promise": "^1.1.0", + "ts-jest": "26.1.4", + "ts-node": "~7.0.0", + "tslint": "~6.0.0", + "typescript": "~3.9.3" } - }, - "scripts": { - "build-lint-all": "ng lint --project=red-ui-http --fix && ng build --project=red-ui-http && ng lint --project=red-ui --fix && ng build --project=red-ui --prod", - "nx": "nx", - "start": "nx serve", - "build": "nx build", - "test": "nx test", - "lint": "nx workspace-lint && nx lint", - "e2e": "nx e2e", - "affected:apps": "nx affected:apps", - "affected:libs": "nx affected:libs", - "affected:build": "nx affected:build", - "affected:e2e": "nx affected:e2e", - "affected:test": "nx affected:test", - "affected:lint": "nx affected:lint", - "affected:dep-graph": "nx affected:dep-graph", - "affected": "nx affected", - "format": "nx format:write", - "format:write": "nx format:write", - "format:check": "nx format:check", - "update": "nx migrate latest", - "workspace-schematic": "nx workspace-schematic", - "dep-graph": "nx dep-graph", - "help": "nx help", - "postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points" - }, - "private": true, - "dependencies": { - "@angular/animations": "^10.0.0", - "@angular/cdk": "^10.2.3", - "@angular/common": "^10.0.0", - "@angular/core": "^10.0.0", - "@angular/forms": "^10.0.0", - "@angular/material": "^10.2.1", - "@angular/platform-browser": "^10.0.0", - "@angular/platform-browser-dynamic": "^10.0.0", - "@angular/router": "^10.0.0", - "@angular/service-worker": "^10.0.0", - "@ngx-translate/core": "^13.0.0", - "@ngx-translate/http-loader": "^6.0.0", - "@nrwl/angular": "^10.2.0", - "@pdftron/webviewer": "^7.0.1", - "file-saver": "^2.0.2", - "jwt-decode": "^3.0.0", - "keycloak-angular": "^8.0.1", - "keycloak-js": "10.0.2", - "lint-staged": "^10.5.0", - "ng2-file-upload": "^1.4.0", - "ngp-sort-pipe": "^0.0.4", - "ngx-dropzone": "^2.2.2", - "ngx-toastr": "^13.0.0", - "rxjs": "~6.5.5", - "scroll-into-view-if-needed": "^2.2.26", - "zone.js": "^0.10.2" - }, - "devDependencies": { - "@angular-devkit/build-angular": "~0.1000.0", - "@angular-devkit/build-ng-packagr": "^0.1001.3", - "@angular/cli": "^10.1.2", - "@angular/compiler": "^10.0.0", - "@angular/compiler-cli": "^10.0.0", - "@angular/language-service": "^10.0.0", - "@nrwl/cypress": "10.2.0", - "@nrwl/jest": "10.2.0", - "@nrwl/workspace": "10.2.0", - "@types/jest": "26.0.8", - "@types/node": "~8.9.4", - "codelyzer": "~5.0.1", - "cypress": "^4.1.0", - "dotenv": "6.2.0", - "eslint": "6.8.0", - "google-translate-api-browser": "^1.1.71", - "husky": "^4.3.0", - "jest": "26.2.2", - "jest-preset-angular": "8.2.1", - "lodash": "^4.17.20", - "moment": "^2.29.1", - "ng-packagr": "^10.1.2", - "prettier": "2.0.4", - "pretty-quick": "^3.1.0", - "superagent": "^6.1.0", - "superagent-promise": "^1.1.0", - "ts-jest": "26.1.4", - "ts-node": "~7.0.0", - "tslint": "~6.0.0", - "typescript": "~3.9.3" - } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..3ee7a6c6e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./tsconfig.base.json" +} diff --git a/yarn.lock b/yarn.lock index a73533a42..2c1eab310 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1813,6 +1813,13 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/cypress@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/cypress/-/cypress-1.1.3.tgz#0a700c040d53e9e12b5af98e41d4a88c39f39b6a" + integrity sha512-OXe0Gw8LeCflkG1oPgFpyrYWJmEKqYncBsD/J0r17r0ETx/TnIGDNLwXt/pFYSYuYTpzcq1q3g62M9DrfsBL4g== + dependencies: + cypress "*" + "@types/estree@*": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" @@ -2752,6 +2759,11 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +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.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" @@ -3324,13 +3336,13 @@ cli-spinners@^2.2.0, cli-spinners@^2.4.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== -cli-table3@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== +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== dependencies: object-assign "^4.1.0" - string-width "^2.1.1" + string-width "^4.2.0" optionalDependencies: colors "^1.1.2" @@ -3506,10 +3518,10 @@ commander@^2.11.0, commander@^2.12.1, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +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== commander@^6.0.0: version "6.1.0" @@ -3995,10 +4007,32 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cypress@^4.1.0: - version "4.12.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-4.12.1.tgz#0ead1b9f4c0917d69d8b57f996b6e01fe693b6ec" - integrity sha512-9SGIPEmqU8vuRA6xst2CMTYd9sCFCxKSzrHt0wr+w2iAQMCIIsXsQ5Gplns1sT6LDbZcmLv6uehabAOl3fhc9Q== +cypress-file-upload@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/cypress-file-upload/-/cypress-file-upload-4.1.1.tgz#952713c8104ab7008de99c65bd63f74b244fe4df" + integrity sha512-tX6UhuJ63rNgjdzxglpX+ZYf/bM6PDhFMtt1qCBljLtAgdearqyfD1AHqyh59rOHCjfM+bf6FA3o9b/mdaX6pw== + dependencies: + mime "^2.4.4" + +cypress-keycloak-commands@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/cypress-keycloak-commands/-/cypress-keycloak-commands-1.2.0.tgz#7f241e8e104ebd389f9a844966dcca43694d0645" + integrity sha512-j0THu0XMVlWah7YjDoVlFg2bIwSiBSda6g5Pm8HpC/9U2Glk0Hrp4yLggoseft3ThAlrpIkoLaIKMDbmvtgicw== + +cypress-keycloak@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cypress-keycloak/-/cypress-keycloak-1.5.0.tgz#5e4f5cce7ec1badb010e8b92268a350abce35dc5" + integrity sha512-JZ2RWTd6dmoZdbvG4xAGNDmFgMdOwJ0sKAXNOHyoEIjBlegtaBfdISgvdzE5VeGgwVAmNrH3v/L/dj0PvYDp+A== + +cypress-localstorage-commands@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/cypress-localstorage-commands/-/cypress-localstorage-commands-1.2.4.tgz#05f38a67c7f4a441d9654deb8724a7bd30b1a997" + integrity sha512-5qrQNTopI11BCxItBmNYD7hXQofn5ANHWmxrDKKAeo6o3HFHi8onJSTlSJ2Ouwcq3Z9k4Pz3H2CiYiuQF/00yw== + +cypress@*, cypress@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" + integrity sha512-cs5vG3E2JLldAc16+5yQxaVRLLqMVya5RlrfPWkC72S5xrlHFdw7ovxPb61s4wYweROKTyH01WQc2PFzwwVvyQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" @@ -4006,34 +4040,35 @@ cypress@^4.1.0: "@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 "^2.4.2" + chalk "^4.1.0" check-more-types "^2.24.0" - cli-table3 "~0.5.1" - commander "^4.1.1" + cli-table3 "~0.6.0" + commander "^5.1.0" common-tags "^1.8.0" debug "^4.1.1" eventemitter2 "^6.4.2" - execa "^1.0.0" + execa "^4.0.2" executable "^4.1.1" extract-zip "^1.7.0" - fs-extra "^8.1.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 "^3.0.0" + log-symbols "^4.0.0" minimist "^1.2.5" moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" + pretty-bytes "^5.4.1" ramda "~0.26.1" request-progress "^3.0.0" - supports-color "^7.1.0" - tmp "~0.1.0" + supports-color "^7.2.0" + tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" yauzl "^2.10.0" @@ -4818,6 +4853,21 @@ execa@^4.0.0, execa@^4.0.3: 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" + executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -5294,16 +5344,7 @@ fs-extra@6.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: +fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== @@ -9109,7 +9150,7 @@ prettier@2.0.4: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== -pretty-bytes@^5.3.0: +pretty-bytes@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== @@ -10759,7 +10800,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.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== @@ -10969,12 +11010,12 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== +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 "^2.6.3" + rimraf "^3.0.0" tmpl@1.0.x: version "1.0.4"