diff --git a/cypress.json b/cypress.json new file mode 100644 index 000000000..912094a02 --- /dev/null +++ b/cypress.json @@ -0,0 +1,10 @@ +{ + "baseUrl": "http://localhost:3000", + "fixturesFolder": "test/e2e/fixtures", + "integrationFolder": "test/e2e/integration", + "pluginsFile": "test/e2e/plugins/index.js", + "screenshotsFolder": "test/e2e/screenshots", + "supportFile": "test/e2e/support/index.js", + "videosFolder": "test/e2e/videos", + "ignoreTestFiles": "*.js" +} diff --git a/examples/vic-gov-au/nuxt.config.js b/examples/vic-gov-au/nuxt.config.js index 5642d0f46..f220244fb 100644 --- a/examples/vic-gov-au/nuxt.config.js +++ b/examples/vic-gov-au/nuxt.config.js @@ -6,6 +6,7 @@ const tideFilters = require('./tide/tide.mapping-filters') // .env variables. require('dotenv').config() +process.env.DEBUG = 'nuxt:*' // display nuxt.js logs export default { /* diff --git a/examples/vic-gov-au/package.json b/examples/vic-gov-au/package.json index 467ab0a0d..9bf9cbcb1 100644 --- a/examples/vic-gov-au/package.json +++ b/examples/vic-gov-au/package.json @@ -17,11 +17,10 @@ "dependencies": { "@dpc-sdp/ripple-nuxt-tide": "1.0.0-beta.5", "@dpc-sdp/ripple-nuxt-ui": "1.0.0-beta.5", - "@nuxtjs/axios": "^5.3.1", - "@nuxtjs/proxy": "^1.2.4", "@nuxtjs/robots": "^2.0.0", "@nuxtjs/style-resources": "^0.1.2", "basic-auth": "^2.0.0", + "cookieparser": "^0.1.0", "csvtojson": "^2.0.8", "dotenv": "^5.0.1", "nuxt": "2.6.3", @@ -31,9 +30,9 @@ "svgo-loader": "^2.1.0" }, "devDependencies": { - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@vue/test-utils": "1.0.0-beta.29", + "@vue/test-utils": "^1.0.0-beta.29", "babel-eslint": "^10.0.1", + "babel-plugin-dynamic-import-node": "^2.2.0", "cross-env": "^5.2.0", "eslint": "^4.15.0", "eslint-config-standard": "^10.2.1", diff --git a/package.json b/package.json index d54f388ea..7221015b4 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,28 @@ "packages/ripple-nuxt-tide", "packages/ripple-nuxt-ui", "packages/ripple-create-app", + "packages/ripple-test-tools", "examples/**/*" ], "scripts": { "publish": "lerna publish", "start:storybook": "cd packages/ripple-ui-components/ && yarn run storybook", - "start:example": "cd examples/vic-gov-au/ && yarn run dev" + "start:example": "cd examples/vic-gov-au/ && yarn run dev", + "test:dev": "NODE_ENV=dev start-server-and-test start:example http://localhost:3000 cy:open", + "test:storybook": "cd packages/ripple-ui-components/ && yarn run test", + "cy:open": "cypress open" + }, "devDependencies": { - "lerna": "^3.0.0" + "lerna": "^3.0.0", + "cypress": "^3.1.5", + "cypress-axe": "^0.4.0", + "cypress-cucumber-preprocessor": "^1.11.0", + "axe-core": "^3.2.2", + "start-server-and-test": "^1.7.11" + }, + "cypress-cucumber-preprocessor": { + "nonGlobalStepDefinitions": true }, "browserslist": [ "> 1%", diff --git a/packages/ripple-nuxt-tide/lib/core/tide.js b/packages/ripple-nuxt-tide/lib/core/tide.js index 8d4dc5cb1..fb321ad66 100644 --- a/packages/ripple-nuxt-tide/lib/core/tide.js +++ b/packages/ripple-nuxt-tide/lib/core/tide.js @@ -45,7 +45,6 @@ export const tide = (axios, site, config) => ({ if (!_.isEmpty(headers)) { _.merge(config, {headers: headers}) } - return axios.$get(url, config) }, diff --git a/packages/ripple-nuxt-tide/package.json b/packages/ripple-nuxt-tide/package.json index b9909a378..0c9c5080e 100755 --- a/packages/ripple-nuxt-tide/package.json +++ b/packages/ripple-nuxt-tide/package.json @@ -48,6 +48,8 @@ "@dpc-sdp/ripple-timeline": "1.0.0-beta.5", "@dpc-sdp/ripple-updated-date": "1.0.0-beta.5", "@dpc-sdp/ripple-whats-next": "1.0.0-beta.5", + "@nuxtjs/proxy": "^1.2.4", + "@nuxtjs/axios": "^5.3.1", "cheerio": "^1.0.0-rc.2", "cookies": "^0.7.3", "elastic-builder": "^2.0.2", @@ -65,7 +67,6 @@ }, "peerDependencies": { "@nuxtjs/axios": "^5.3.1", - "@nuxtjs/proxy": "^1.2.4", "nuxt": "^2.4.3" } } diff --git a/packages/ripple-test-tools/commands.js b/packages/ripple-test-tools/commands.js new file mode 100644 index 000000000..78e64615d --- /dev/null +++ b/packages/ripple-test-tools/commands.js @@ -0,0 +1,38 @@ +/* eslint-disable no-undef */ +const csv = require('csvtojson') +const faker = require('faker') + +function rippleCommands () { + Cypress.Commands.add('csvFixture', fixturePath => { + const csvToJson = async data => { + faker.locale = 'en_AU' + const csvData = await csv().fromString(data) + if (csvData) { + return csvData.reduce((o, val) => { + let value = val.value + if (value.length === 0 && val.Random && val.Random.length > 0) { + if (val.Random.charAt(0) === '{') { + value = faker.fake(val.Random) + } else if (val.Random.charAt(0) === '[') { + const randomValues = val.Random.substr( + 1, + val.Random.length - 2 + ).split(',') + value = + randomValues[Math.floor(Math.random() * randomValues.length)] + } + } + o[Cypress._.camelCase(val.key)] = value + return o + }, {}) + } + } + + cy.fixture(fixturePath).then(async data => { + const fixtureData = await csvToJson(data) + return fixtureData + }) + }) +} + +module.exports = rippleCommands diff --git a/packages/ripple-test-tools/index.js b/packages/ripple-test-tools/index.js new file mode 100644 index 000000000..20ff9b00a --- /dev/null +++ b/packages/ripple-test-tools/index.js @@ -0,0 +1,27 @@ + +const TideAdmin = require('./tide-admin') + +module.exports = (on, config) => { + on('task', { + createLandingPage (data) { + return new TideAdmin().createLandingPage(data) + }, + deleteUser (userId) { + return new TideAdmin().deleteUser(userId) + }, + createGrantPage (data) { + return new TideAdmin().createGrantPage(data) + }, + createUser (user) { + return new TideAdmin().createUser(user) + }, + configureProtectedContent (options) { + return new TideAdmin().configureProtectedContent(options) + }, + deleteNode (userId) { + return new TideAdmin().deleteNode(userId) + } + }) + + return config +} diff --git a/packages/ripple-test-tools/package.json b/packages/ripple-test-tools/package.json new file mode 100644 index 000000000..8741c2c6d --- /dev/null +++ b/packages/ripple-test-tools/package.json @@ -0,0 +1,17 @@ +{ + "name": "@dpc-sdp/ripple-test-tools", + "version": "1.0.0-beta.5", + "description": "Cypress.io helper library for testing a ripple nuxt site and tide backend", + "license": "Apache-2.0", + "contributors": [ + { + "name": "Dylan Kelly " + } + ], + "main": "index.js", + "dependencies": { + "csvtojson": "^2.0.8", + "faker": "^4.1.0", + "puppeteer": "^1.13.0" + } +} diff --git a/packages/ripple-test-tools/page-models.js b/packages/ripple-test-tools/page-models.js new file mode 100644 index 000000000..d803080b7 --- /dev/null +++ b/packages/ripple-test-tools/page-models.js @@ -0,0 +1,157 @@ +const { dataSel, hrefSel } = require('./util') + +const adminPageModels = { + login: { + name: '#edit-name', + pass: '#edit-pass', + form: '#user-login-form' + }, + common: { + title: dataSel('edit-title-0-value'), + summary: dataSel('edit-field-landing-page-summary-0-value'), + topic: dataSel('edit-field-topic-0-target-id'), + siteCheckbox: (site) => dataSel(`edit-field-node-site-${site}`), + primarySite: (site) => dataSel(`edit-field-node-primary-site-${site}`), + moderationState: dataSel('edit-moderation-state-0-state') + }, + landingPage: { + formId: dataSel('node-landing-page-form'), + componentSelect: dataSel('edit-field-landing-page-component-add-more-add-more-select'), + componentAddButton: dataSel('edit-field-landing-page-component-add-more-add-more-button'), + webFormTitle: dataSel('edit-field-landing-page-component-0-subform-field-paragraph-title-0-value'), + webFormType: dataSel('edit-field-landing-page-component-0-subform-field-paragraph-webform-0-target-id'), + authenticatedContent: dataSel('edit-field-authenticated-content'), + components: { + accordion: { + title: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-paragraph-title-0-value`), + style: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-paragraph-accordion-style`), + item: { + name: (cmpIdx, accIdx) => dataSel(`edit-field-landing-page-component-${cmpIdx}-subform-field-paragraph-accordion-${accIdx}-subform-field-paragraph-accordion-name-0-value`), + content: (cmpIdx, accIdx) => dataSel(`edit-field-landing-page-component-${cmpIdx}-subform-field-paragraph-accordion-${accIdx}-subform-field-paragraph-accordion-body-wrapper`), + addItemBtn: (cmpIdx) => `[name="field_landing_page_component_${cmpIdx}_subform_field_paragraph_accordion_accordion_content_add_more"]` + } + }, + basic: { + wysiwyg: '.paragraph-type--basic-text:first-child .form-textarea-wrapper' + }, + webform: { + title: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-paragraph-title-0-value`), + type: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-paragraph-webform-0-target-id`) + }, + cardEventAuto: { + cta: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-paragraph-cta-text-0-value`), + event: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-paragraph-reference-0-target-id`) + }, + userAuthBlock: { + nextPage: (idx) => dataSel(`edit-field-landing-page-component-${idx}-subform-field-next-page-0-uri`) + } + } + }, + createUser: { + email: dataSel('edit-mail'), + username: dataSel('edit-name'), + password: dataSel('edit-pass-pass1'), + passwordConfirm: dataSel('edit-pass-pass2'), + statusBlocked: dataSel('edit-status-0'), + statusConfirmed: dataSel('edit-status-1'), + submitButton: dataSel('edit-submit'), + memberRole: dataSel('edit-roles-member') + }, + deleteUser: { + deleteAccountAndContent: dataSel('edit-user-cancel-method-user-cancel-delete') + }, + grantPage: { + tabs: { + grantDetails: hrefSel('#edit-group-body-content'), + grantAuthor: hrefSel('#edit-group-grant-author') + }, + grantDetails: { + tabs: { + overview: hrefSel('#edit-group-grant-overview'), + timeline: hrefSel('#edit-group-grant-timeline'), + guidelines: hrefSel('#edit-group-guidelines'), + supportingDocs: hrefSel('#edit-group-supporting-documents') + }, + overview: { + title: dataSel('edit-field-overview-title-0-value'), + funding: { + from: dataSel('edit-field-node-funding-level-0-from'), + to: dataSel('edit-field-node-funding-level-0-to') + }, + audienceAddMore: dataSel('edit-field-audience-add-more'), + audience1: dataSel('edit-field-audience-0-target-id'), + audience2: dataSel('edit-field-audience-1-target-id'), + ongoingCheckbox: dataSel('edit-field-node-on-going-value'), + cta: { + uri: dataSel('edit-field-call-to-action-0-uri'), + title: dataSel('edit-field-call-to-action-0-title') + }, + date: { + startdate: dataSel('edit-field-node-dates-0-value-date'), + starttime: dataSel('edit-field-node-dates-0-value-time'), + enddate: dataSel('edit-field-node-dates-0-end-value-date'), + endtime: dataSel('edit-field-node-dates-0-end-value-time') + }, + description: dataSel('edit-field-description-wrapper'), + websiteUrl: dataSel('edit-field-node-link-0-uri') + }, + timeline: { + title: dataSel('edit-field-node-timeline-0-subform-field-paragraph-title-0-value'), + item: { + title: dataSel('edit-field-node-timeline-0-subform-field-timeline-0-subform-field-paragraph-title-0-value'), + summary: dataSel('edit-field-node-timeline-0-subform-field-timeline-0-subform-field-paragraph-summary-0-value'), + startdate: dataSel('edit-field-node-timeline-0-subform-field-timeline-0-subform-field-paragraph-date-range-0-value-date'), + starttime: dataSel('edit-field-node-timeline-0-subform-field-timeline-0-subform-field-paragraph-date-range-0-value-time'), + enddate: dataSel('edit-field-node-timeline-0-subform-field-timeline-0-subform-field-paragraph-date-range-0-end-value-date'), + endtime: dataSel('edit-field-node-timeline-0-subform-field-timeline-0-subform-field-paragraph-date-range-0-end-value-time') + } + }, + guidelines: { + eligibility: { + title: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-0-subform-field-paragraph-accordion-name-0-value'), + text: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-0-subform-field-paragraph-accordion-body-wrapper') + }, + criteria: { + title: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-1-subform-field-paragraph-accordion-name-0-value'), + text: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-1-subform-field-paragraph-accordion-body-wrapper') + }, + process: { + title: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-2-subform-field-paragraph-accordion-name-0-value'), + text: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-2-subform-field-paragraph-accordion-body-wrapper') + }, + howToApply: { + title: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-3-subform-field-paragraph-accordion-name-0-value'), + text: dataSel('edit-field-node-guidelines-0-subform-field-paragraph-accordion-3-subform-field-paragraph-accordion-body-wrapper') + } + } + }, + grantAuthor: { + fullName: dataSel('edit-field-node-author-0-value'), + email: dataSel('edit-field-node-email-0-value'), + phone: dataSel('edit-field-node-phone-0-value'), + department: dataSel('edit-field-node-department') + } + }, + jwt: { + expiry: dataSel('edit-jwt-exp'), + key: dataSel('edit-jwt-key') + }, + accounts: { + adminApproval: dataSel('edit-user-register-visitors-admin-approval') + } + +} + +const frontEndPageModels = { + grant: { + + }, + landingPage: { + + } +} + +module.exports = { + adminPageModels, + frontEndPageModels +} diff --git a/packages/ripple-test-tools/tide-admin.js b/packages/ripple-test-tools/tide-admin.js new file mode 100644 index 000000000..666ea1876 --- /dev/null +++ b/packages/ripple-test-tools/tide-admin.js @@ -0,0 +1,588 @@ +const puppeteer = require('puppeteer') +const utils = require('./util') + +/** + * Library for controlling Tide Drupal backend via puppeteer + * + * @class TideAdmin + */ +module.exports = class TideAdmin { + constructor () { + this.browser = null + this.page = null + this.backendURL = process.env.CONTENT_API_SERVER + + this.httpAuth = { + username: process.env.AUTH_USER, + password: process.env.AUTH_PASS + } + this.adminCredentials = { + username: process.env.CYPRESS_ADMIN_USERNAME, + password: process.env.CYPRESS_ADMIN_PASSWORD + } + + this.options = { + wait: { waitUntil: 'networkidle2', timeout: 0 }, + start: { + headless: process.env.NODE_ENV !== 'dev' + } + } + this.pageModels = require('./page-models').adminPageModels + } + + async setup () { + this.browser = await puppeteer.launch(this.options.start) + this.page = await this.browser.newPage() + await this.page.authenticate(this.httpAuth) + await this.page.setViewport({ width: 1280, height: 1064 }) + return this.page + } + + async login () { + await this.page.goto(this.backendURL) + await this.page.waitForSelector('#edit-actions', this.options.wait) + await this.page.type( + this.pageModels.login.name, + this.adminCredentials.username + ) + await this.page.type( + this.pageModels.login.pass, + this.adminCredentials.password + ) + return Promise.all([ + this.page.$eval(this.pageModels.login.form, form => form.submit()), + this.page.waitForNavigation(this.options.wait), + this.page.waitForSelector('#drupal-live-announce', this.options.wait) + ]) + } + + /** + * Creates a landing page given testdata in json format + * @param {*} testData + * @returns nodeId + */ + async createLandingPage (testData) { + if (!testData) return null + // create browser and page + const page = await this.setup() + + // Login + await this.login() + // aliases + const lPage = this.pageModels['landingPage'] + + // Create Landing page + await page.goto(`${this.backendURL}/node/add/landing_page`) + await page.waitForSelector('#drupal-live-announce', this.options.wait) + await page.type(this.pageModels.common.title, testData.title) + await page.type(this.pageModels.common.summary, testData.summary) + await page.type(this.pageModels.common.topic, testData.topic) + await page.click(this.pageModels.common.siteCheckbox(testData.siteNumber)) + await page.click(this.pageModels.common.primarySite(testData.siteNumber)) + + // protected content + if (testData.authenticatedContentGroup) { + const acGroup = await page.$$eval( + lPage.authenticatedContent + ' option', + (nodes, data) => { + const item = Array.from(nodes).find(node => node.text === data) + if (item) { + return item.value + } + }, + testData.authenticatedContentGroup + ) + await page.select(lPage.authenticatedContent, acGroup) + } + + // Components + await page.click( + '.horizontal-tabs .horizontal-tab-button-3 a', + this.options.wait + ) + await page.waitForSelector('#edit-group-components', this.options.wait) + + const setLandingPageComponentType = async (type, index) => { + await page.select(lPage.componentSelect, type) + await page.click(lPage.componentAddButton) + await page.waitForSelector( + utils.dataSel(`edit-field-landing-page-component-${index}`), + this.options.wait + ) + await page.waitFor(3000) + return Promise.resolve() + } + + // Create an async func for each component + // webform + const setWebForm = async (component, index) => { + await setLandingPageComponentType('embedded_webform', index) + await page.type( + lPage.components.webform.title(index), + component.formTitle + ) + await page.select( + lPage.components.webform.type(index), + component.formType + ) + return Promise.resolve() + } + + // User Authentication Block + const setUserAuthBlock = async (component, index) => { + await setLandingPageComponentType('user_authentication_block', index) + await page.type( + lPage.components.userAuthBlock.nextPage(index), + component.nextPage + ) + return Promise.resolve() + } + + // Card Event Automated + const setCardEventAutomated = async (component, index) => { + await setLandingPageComponentType('card_event_auto', index) + await page.type( + lPage.components.cardEventAuto.cta(index), + component.cta + ) + await page.type( + lPage.components.cardEventAuto.event(index), + component.event + ) + return Promise.resolve() + } + + // wysiwyg + const setBasicText = async (component, index) => { + await setLandingPageComponentType('basic_text', index) + await page.waitFor(3000) + await utils.setWysiwygText( + utils.dataSel(`edit-field-landing-page-component-${index}`), + component.content, + page + ) + return Promise.resolve() + } + + // Accordion + const setAccordion = async (component, index) => { + await setLandingPageComponentType('accordion', index) + await page.type(lPage.components.accordion.title(index), component.title) + await page.select( + lPage.components.accordion.style(index), + component.style + ) + async function addAccordionItems (items) { + for (let accIdx = 0; accIdx < items.length; accIdx++) { + const item = items[accIdx] + if (accIdx === 0) { + // first item is already open + await page.type(lPage.components.accordion.item.name(index, accIdx), item.name) + await utils.setWysiwygText( + lPage.components.accordion.item.content(index, accIdx), + item.content, + page + ) + } else { + await page.click(lPage.components.accordion.item.addItemBtn(index)) + await page.waitFor(3000) + await page.type(lPage.components.accordion.item.name(index, accIdx), item.name) + await utils.setWysiwygText( + lPage.components.accordion.item.content(index, accIdx), + item.content, + page + ) + } + } + } + + await addAccordionItems(component.accordionItems) + return Promise.resolve() + } + + const addComponent = async (component, index) => { + switch (component.type) { + case 'Embedded Webform': + await setWebForm(component, index) + break + case 'Basic Text': + await setBasicText(component, index) + break + case 'Accordion': + await setAccordion(component, index) + break + case 'User Authentication Block': + await setUserAuthBlock(component, index) + break + case 'Card Event Automated': + await setCardEventAutomated(component, index) + break + } + } + + async function addComponents () { + for (let i = 0; i < testData.components.length; i++) { + await addComponent(testData.components[i], i) + } + } + + await addComponents() + + // Set moderation state to published + await page.select(this.pageModels.common.moderationState, 'published') + + // Submit + await this.submitPage() + // get nodeid + await page.waitForSelector('#drupal-live-announce', this.options.wait) + const nodeId = await page.$eval('.tabs__tab .is-active', el => + el + .getAttribute('data-drupal-link-system-path') + .split('/') + .pop() + ) + + // Cleanup + await this.close() + + // Return nodeId + return Promise.resolve(nodeId) + } + + async createGrantPage (testData) { + // create browser and page + const page = await this.setup() + const gPage = this.pageModels['grantPage'] + + // Login + await this.login() + + // Create Grant page + await page.goto(`${this.backendURL}/node/add/grant`) + await page.waitForSelector('#drupal-live-announce', this.options.wait) + await page.type(this.pageModels.common.title, testData.title) + await page.type(this.pageModels.common.summary, testData.summary) + await page.type(this.pageModels.common.topic, testData.topic) + await page.click(this.pageModels.common.primarySite(testData.siteNumber)) + await page.click(this.pageModels.common.siteCheckbox(testData.siteNumber)) + + // details tab + // Overview + await page.click(gPage.tabs.grantDetails) + await page.type( + gPage.grantDetails.overview.title, + testData.grantDetailsOverviewTitle + ) + await utils.setWysiwygText( + gPage.grantDetails.overview.description, + testData.grantDetailsOverviewDescription, + page + ) + await page.type( + gPage.grantDetails.overview.funding.from, + testData.grantDetailsOverviewFundingFrom + ) + await page.type( + gPage.grantDetails.overview.funding.to, + testData.grantDetailsOverviewFundingTo + ) + if (testData.grantDetailsOverviewAudience1) { + await page.type( + gPage.grantDetails.overview.audience1, + testData.grantDetailsOverviewAudience1 + ) + } + if (testData.grantDetailsOverviewAudience2) { + await page.click(gPage.grantDetails.overview.audienceAddMore) + await page.waitFor(2000) + await page.type( + gPage.grantDetails.overview.audience2, + testData.grantDetailsOverviewAudience2 + ) + } + + if (testData.grantDetailsOverviewOngoing === 'true') { + await page.click(gPage.grantDetails.overview.ongoingCheckbox) + } else { + await page.type( + gPage.grantDetails.overview.date.startdate, + testData.grantDetailsOverviewStartDate + ) + await page.type( + gPage.grantDetails.overview.date.starttime, + testData.grantDetailsOverviewStartTime + ) + await page.type( + gPage.grantDetails.overview.date.enddate, + testData.grantDetailsOverviewEndDate + ) + await page.type( + gPage.grantDetails.overview.date.endtime, + testData.grantDetailsOverviewEndTime + ) + } + + await page.type( + gPage.grantDetails.overview.cta.uri, + testData.grantDetailsOverviewCtaUri + ) + await page.type( + gPage.grantDetails.overview.cta.title, + testData.grantDetailsOverviewCtaTitle + ) + + // Timeline + await page.click(gPage.grantDetails.tabs.timeline) + await page.type( + gPage.grantDetails.timeline.title, + testData.grantTimelineTitle + ) + await page.type( + gPage.grantDetails.timeline.item.title, + testData.grantTimelineItem1Title + ) + await page.type( + gPage.grantDetails.timeline.item.summary, + testData.grantTimelineItem1Summary + ) + await page.type( + gPage.grantDetails.timeline.item.startdate, + testData.grantTimelineItem1Startdate + ) + await page.type( + gPage.grantDetails.timeline.item.starttime, + testData.grantTimelineItem1Starttime + ) + await page.type( + gPage.grantDetails.timeline.item.enddate, + testData.grantTimelineItem1Enddate + ) + await page.type( + gPage.grantDetails.timeline.item.endtime, + testData.grantTimelineItem1Endtime + ) + + // Guidelines + await page.click(gPage.grantDetails.tabs.guidelines) + await page.click(gPage.grantDetails.guidelines.eligibility.title, { + clickCount: 3 + }) + await page.type( + gPage.grantDetails.guidelines.eligibility.title, + testData.grantGuidelinesEligibilityTitle + ) + await utils.setWysiwygText( + gPage.grantDetails.guidelines.eligibility.text, + testData.grantGuidelinesEligibilityText, + page + ) + await page.click(gPage.grantDetails.guidelines.criteria.title, { + clickCount: 3 + }) + await page.type( + gPage.grantDetails.guidelines.criteria.title, + testData.grantGuidelinesCriteriaTitle + ) + await utils.setWysiwygText( + gPage.grantDetails.guidelines.criteria.text, + testData.grantGuidelinesCriteriaText, + page + ) + await page.click(gPage.grantDetails.guidelines.process.title, { + clickCount: 3 + }) + await page.type( + gPage.grantDetails.guidelines.process.title, + testData.grantGuidelinesProcessTitle + ) + await utils.setWysiwygText( + gPage.grantDetails.guidelines.process.text, + testData.grantGuidelinesProcessText, + page + ) + await page.click(gPage.grantDetails.guidelines.howToApply.title, { + clickCount: 3 + }) + await page.type( + gPage.grantDetails.guidelines.howToApply.title, + testData.grantGuidelinesHowToApplyTitle + ) + await utils.setWysiwygText( + gPage.grantDetails.guidelines.howToApply.text, + testData.grantGuidelinesHowToApplyText, + page + ) + + // Grant author + await page.click(gPage.tabs.grantAuthor) + await page.type(gPage.grantAuthor.fullName, testData.grantAuthorFullName) + await page.type(gPage.grantAuthor.email, testData.grantAuthorEmail) + await page.type(gPage.grantAuthor.phone, testData.grantAuthorPhone) + await page.type( + gPage.grantAuthor.department, + testData.grantAuthorDepartment + ) + + // Set moderation state to published + await page.select(this.pageModels.common.moderationState, 'published') + + // Submit + await this.submitPage() + + // get nodeid + await page.waitForSelector('#drupal-live-announce', this.options.wait) + const nodeId = await page.$eval('.tabs__tab .is-active', el => + el + .getAttribute('data-drupal-link-system-path') + .split('/') + .pop() + ) + await this.close() + + // Return nodeId + return Promise.resolve(nodeId) + } + + async createUser (user) { + if (!user) return null + + const page = await this.setup() + const createUserPage = this.pageModels['createUser'] + + await this.login() + + await page.goto(`${this.backendURL}/admin/people/create`) + await page.type(createUserPage.username, user.login) + await page.type(createUserPage.email, user.email) + await page.type(createUserPage.password, user.password) + await page.waitFor(2000) + await page.click(createUserPage.passwordConfirm) + await page.waitFor(2000) + await page.type(createUserPage.passwordConfirm, user.password) + + if (user.active) { + await page.click(createUserPage.statusConfirmed) + } + switch (user.role) { + case 'Member': + await page.click(createUserPage.memberRole) + break + } + + await page.waitFor(3000) + + // Submit + await Promise.all([ + page.waitForNavigation(this.options.wait), + await page.click(utils.dataSel('edit-submit')) + ]) + + // get userId + await page.waitForSelector('#drupal-live-announce', this.options.wait) + const userId = await page.$eval('.messages--status a', el => + el + .getAttribute('href') + .split('/') + .pop() + ) + + // Cleanup + await this.close() + + return userId + } + + async deleteUser (userId) { + if (userId) { + const page = await this.setup() + const deleteUserPage = this.pageModels['deleteUser'] + await this.login() + + await page.goto(`${this.backendURL}/user/${userId}/cancel`) + + await this.page.click(deleteUserPage.deleteAccountAndContent) + + // Submit + await page.waitForSelector( + utils.dataSel('edit-user-cancel-method-user-cancel-delete'), + this.options.wait + ) + + await this.close() + + return Promise.resolve('ok') + } + } + + async deleteNode (id) { + if (id) { + const page = await this.setup() + await this.login() + + await page.goto(`${this.backendURL}/node/${id}/delete`) + await this.submitPage() + await this.close() + return Promise.resolve('ok') + } + return Promise.reject(new Error('no id')) + } + + /** + * Submit a page + * + * @returns + */ + async submitPage () { + return Promise.all([ + this.page.waitForNavigation(this.options.wait), + await this.page.click(utils.dataSel('edit-submit')) + ]) + } + + /** + * Close the page and browser to clean up + * + * @returns + */ + async close () { + await this.page.close() + await this.browser.close() + return Promise.resolve() + } + + async configureProtectedContent (options) { + const jwtPage = this.pageModels.jwt + const page = await this.setup() + await this.login() + + let error = false + + await page.goto(`${this.backendURL}/admin/config/system/jwt`) + const privateKey = await page.$eval(jwtPage.key, el => el.value) + + if (privateKey === 'authenticated_content') { + await page.$eval(jwtPage.expiry, el => (el.value = '')) //eslint-disable-line + await page.type(jwtPage.expiry, options.sessionExpiry) + await this.submitPage() + } else { + error = 'no key set' + } + + // await page.goto(`${backendURL}/admin/config/people/accounts`) + // const adminApproval = await page.$eval(pageModels.accounts.adminApproval, el => { + // return el.getAttribute('checked') === 'checked' + // }) + + // if (!adminApproval) { + // await page.click(pageModels.accounts.adminApproval) + // await savePage(page) + // } + + await this.close() + + if (error) { + return Promise.reject(new Error(error)) + } + return Promise.resolve('ok') + } +} diff --git a/packages/ripple-test-tools/util.js b/packages/ripple-test-tools/util.js new file mode 100644 index 000000000..9947bd446 --- /dev/null +++ b/packages/ripple-test-tools/util.js @@ -0,0 +1,24 @@ +const dataSel = (elName) => `[data-drupal-selector="${elName}"]` +const hrefSel = (href) => `a[href="${href}"]` +const valueSel = (value) => `[value="${value}"]` + +const setWysiwygText = async (selector, content, page) => { + await page.waitForSelector(selector) + return page.$eval(selector, (el, data) => { + const ckEditor = el.querySelector('.cke_wysiwyg_frame') + if (ckEditor) { + const iframe = ckEditor.contentDocument || ckEditor.contentWindow.document + const bodyEditor = iframe.querySelector('body') + if (bodyEditor) { + bodyEditor.innerHTML = data + } + } + }, content) +} + +module.exports = { + dataSel, + valueSel, + hrefSel, + setWysiwygText +} diff --git a/packages/ripple-ui-components/jest.config.js b/packages/ripple-ui-components/jest.config.js index 2610ebc3f..9c27a5ce9 100644 --- a/packages/ripple-ui-components/jest.config.js +++ b/packages/ripple-ui-components/jest.config.js @@ -1,21 +1,22 @@ module.exports = { moduleFileExtensions: [ - "js", - "json", - "vue" + 'js', + 'json', + 'vue' ], transform: { - "^.+\\.js$": "/node_modules/babel-jest", - ".*\\.(vue)$": "/node_modules/vue-jest", - "^.+\\.md?$": "markdown-loader-jest" + '^.+\\.js$': '/../../node_modules/babel-jest', + '.*\\.(vue)$': '/node_modules/vue-jest', + '^.+\\.md?$': 'markdown-loader-jest' }, transformIgnorePatterns: [ - "/node_modules/(?!(@storybook/.*\\.vue$|storybook-addon-vue-info|ol))" + '/../../node_modules/(?!(@storybook/.*\\.vue$|storybook-addon-vue-info|ol))', + '/node_modules/(?!(@storybook/.*\\.vue$|storybook-addon-vue-info|ol))' ], moduleNameMapper: { - "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/fileMock.js", - "\\.(css|scss)$": "/__mocks__/styleMock.js" + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mocks__/fileMock.js', + '\\.(css|scss)$': '/__mocks__/styleMock.js' }, verbose: true, - setupFiles: ["jest-canvas-mock"] + setupFiles: ['jest-canvas-mock'] } diff --git a/test/e2e/fixtures/Forms/Grant/tc9c.csv b/test/e2e/fixtures/Forms/Grant/tc9c.csv new file mode 100644 index 000000000..2b529d486 --- /dev/null +++ b/test/e2e/fixtures/Forms/Grant/tc9c.csv @@ -0,0 +1,17 @@ +key,value,random +name,Extra special grant, +description,this is the description, +openDate,23/04/2019, +closeDate,23/05/2019, +ongoing,FALSE, +topic,Communities, +audience,"Government, Individual", +amountFrom,123123, +amountTo,234234, +applyUrl,http://www.google.com, +infoUrl,http://www.google.com, +contactName,Stan Grant, +contactDepartment,DPC, +contactEmail,stan@mailinator.com, +contactPhone,03 91222222, +acknowledge,TRUE, \ No newline at end of file diff --git a/test/e2e/fixtures/Forms/Grant/tc9c_submission.json b/test/e2e/fixtures/Forms/Grant/tc9c_submission.json new file mode 100644 index 000000000..891ad3688 --- /dev/null +++ b/test/e2e/fixtures/Forms/Grant/tc9c_submission.json @@ -0,0 +1,67 @@ +{ + "data": { + "type": "webform_submission--tide_grant_submission", + "id": "676206fe-cd10-45e9-8961-047a3b33db2f", + "links": { + "self": { + "href": "https://www.develop.content.vic.gov.au/api/v1/webform_submission/tide_grant_submission/676206fe-cd10-45e9-8961-047a3b33db2f" + } + }, + "attributes": { + "serial": 35, + "drupal_internal__sid": 1678, + "token": "Kem7EbKwhwIORFG5CLG_RCo-G32n0b-V6HQ7PBpswD4", + "uri": "/api/v1/webform_submission/tide_grant_submission", + "created": "2019-05-02T23:49:32+00:00", + "completed": "2019-05-02T23:49:32+00:00", + "changed": "2019-05-02T23:49:32+00:00", + "in_draft": false, + "current_page": null, + "remote_addr": "110.175.218.22", + "langcode": "en", + "entity_type": null, + "entity_id": null, + "locked": false, + "sticky": false, + "notes": null, + "metatag": null, + "metatag_normalized": [], + "data": null + }, + "relationships": { + "uid": { + "data": null, + "links": { + "self": { + "href": "https://www.develop.content.vic.gov.au/api/v1/webform_submission/tide_grant_submission/676206fe-cd10-45e9-8961-047a3b33db2f/relationships/uid" + } + } + }, + "webform_id": { + "data": { + "type": "webform--webform", + "id": "44306317-f07a-4744-8017-a21a32063190" + }, + "links": { + "self": { + "href": "https://www.develop.content.vic.gov.au/api/v1/webform_submission/tide_grant_submission/676206fe-cd10-45e9-8961-047a3b33db2f/relationships/webform_id" + }, + "related": { + "href": "https://www.develop.content.vic.gov.au/api/v1/webform_submission/tide_grant_submission/676206fe-cd10-45e9-8961-047a3b33db2f/webform_id" + } + } + } + } + }, + "jsonapi": { + "version": "1.0", + "meta": { + "links": { "self": { "href": "http://jsonapi.org/format/1.0/" } } + } + }, + "links": { + "self": { + "href": "https://www.develop.content.vic.gov.au/api/v1/webform_submission/tide_grant_submission" + } + } +} diff --git a/test/e2e/fixtures/Forms/Grant/tc9d.csv b/test/e2e/fixtures/Forms/Grant/tc9d.csv new file mode 100644 index 000000000..7ea1ac5c9 --- /dev/null +++ b/test/e2e/fixtures/Forms/Grant/tc9d.csv @@ -0,0 +1,17 @@ +key,value,random +name,, +description,, +openDate,, +closeDate,, +ongoing,, +topic,, +audience,, +amountFrom,, +amountTo,, +applyUrl,, +infoUrl,, +contactName,, +contactDepartment,, +contactEmail,, +contactPhone,, +acknowledge,, \ No newline at end of file diff --git a/test/e2e/fixtures/Forms/addgrant.json b/test/e2e/fixtures/Forms/addgrant.json new file mode 100644 index 000000000..6b717ac50 --- /dev/null +++ b/test/e2e/fixtures/Forms/addgrant.json @@ -0,0 +1,8 @@ +{ + "name": "sample grant", + "description": "grant description", + "websiteUrl": "http://www.google.com", + "name": "First Last", + "email": "email@domain.com", + "phone": "039393399" +} \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/Grant/tc10a.csv b/test/e2e/fixtures/Pages/Grant/tc10a.csv new file mode 100644 index 000000000..b1be542c7 --- /dev/null +++ b/test/e2e/fixtures/Pages/Grant/tc10a.csv @@ -0,0 +1,37 @@ +key,value,Random,Notes +title,TC-10a Grant page - Complete,,Page title +summary,Introduction Text,, +topic,"\""Arts, culture and heritage (1)\""",,One of topic values - in quotes +site number,4,, +grant details overview title,Overview Title,, +grant details overview funding from,12345,, +grant details overview funding to,23456,, +grant details overview audience1,Individual (80),, +grant details overview audience2,Government (81),, +grant details overview cta uri,http://www.google.com,, +grant details overview cta title,Google,, +grant details overview description,,{{lorem.paragraphs}}, +Grant details overview website url,http://www.vic.gov.au,, +Grant details overview start date,7/4/2019,, +Grant details overview start time,23:21:21,, +Grant details overview end date,8/4/2019,, +Grant details overview end time,23:21:21,, +Grant timeline title,Timeline title,, +Grant timeline item 1 title,Timeline item 1,,Array item +Grant timeline item 1 summary,,{{lorem.paragraphs}}, +Grant timeline item 1 startdate,8/4/2019,, +Grant timeline item 1 starttime,23:21:21,, +Grant timeline item 1 enddate,8/5/2019,, +Grant timeline item 1 endtime,23:21:21,, +Grant guidelines eligibility title,test1,, +Grant guidelines eligibility text,,{{lorem.paragraphs}}, +Grant guidelines criteria title,test2,, +Grant guidelines criteria text,,{{lorem.paragraphs}}, +Grant guidelines process title,test3,, +Grant guidelines process text,,{{lorem.paragraphs}}, +Grant guidelines how to apply title,test4,, +Grant guidelines how to apply text,,{{lorem.paragraphs}}, +Grant author full name,John Smith,{{name.findName}},http://marak.github.io/faker.js/#toc9__anchor +Grant author email,email@domain.com,{{internet.email}}, +Grant author phone,03 0000 00000,{{phone.phoneNumber}}, +Grant author department,Department of Magic,{{commerce.department}}, \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/Grant/tc9a.csv b/test/e2e/fixtures/Pages/Grant/tc9a.csv new file mode 100644 index 000000000..deb293833 --- /dev/null +++ b/test/e2e/fixtures/Pages/Grant/tc9a.csv @@ -0,0 +1,34 @@ +key,value,Random,Notes +title,TC- 9a Grant- Simple Test - Date Range,,Page title +summary,Introduction Text,, +topic,"\""Arts, culture and heritage (1)\""",,One of topic values - in quotes +site number,4,, +grant details overview title,Overview Title,, +grant details overview funding from,11326,, +grant details overview funding to,26494,, +grant details overview funding expected,"$11,326 - $26,494",, +grant details overview audience1,Individual (80),, +grant details overview cta uri,http://www.google.com,, +grant details overview cta title,Google,, +grant details overview description,,{{lorem.paragraphs}}, +Grant details overview website url,http://www.vic.gov.au,, +Grant details overview ongoing,true,, +Grant timeline title,Timeline title,, +Grant timeline item 1 title,Timeline item 1,,Array item +Grant timeline item 1 summary,,{{lorem.paragraphs}}, +Grant timeline item 1 startdate,8/4/19,, +Grant timeline item 1 starttime,23:21:21,, +Grant timeline item 1 enddate,8/5/19,, +Grant timeline item 1 endtime,23:21:21,, +Grant guidelines eligibility title,,, +Grant guidelines eligibility text,,{{lorem.paragraphs}}, +Grant guidelines criteria title,,, +Grant guidelines criteria text,,{{lorem.paragraphs}}, +Grant guidelines process title,,, +Grant guidelines process text,,{{lorem.paragraphs}}, +Grant guidelines how to apply title,,, +Grant guidelines how to apply text,,{{lorem.paragraphs}}, +Grant author full name,John Smith,{{name.findName}},http://marak.github.io/faker.js/#toc9__anchor +Grant author email,email@domain.com,{{internet.email}}, +Grant author phone,03 0000 00000,{{phone.phoneNumber}}, +Grant author department,Department of Magic,{{commerce.department}}, \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/Grant/tc9b.csv b/test/e2e/fixtures/Pages/Grant/tc9b.csv new file mode 100644 index 000000000..0f781b933 --- /dev/null +++ b/test/e2e/fixtures/Pages/Grant/tc9b.csv @@ -0,0 +1,37 @@ +key,value,Random,Notes +title,TC- 9b Grant- Simple Test - Closed,,Page title +summary,Introduction Text,, +topic,"\""Arts, culture and heritage (1)\""",,One of topic values - in quotes +site number,4,, +grant details overview title,Overview Title,, +grant details overview funding from,12345,, +grant details overview funding to,23456,, +grant details overview audience1,Individual (80),, +grant details overview cta uri,http://www.google.com,, +grant details overview cta title,Google,, +grant details overview description,,{{lorem.paragraphs}}, +Grant details overview website url,http://www.vic.gov.au,, +Grant details overview ongoing,false,, +Grant details overview start date,7/4/19,, +Grant details overview start time,23:21:21,, +Grant details overview end date,8/4/19,, +Grant details overview end time,23:21:21,, +Grant timeline title,Timeline title,, +Grant timeline item 1 title,Timeline item 1,,Array item +Grant timeline item 1 summary,,{{lorem.paragraphs}}, +Grant timeline item 1 startdate,7/4/19,, +Grant timeline item 1 starttime,23:21:21,, +Grant timeline item 1 enddate,8/4/19,, +Grant timeline item 1 endtime,23:21:21,, +Grant guidelines eligibility title,test1,, +Grant guidelines eligibility text,,{{lorem.paragraphs}}, +Grant guidelines criteria title,test2,, +Grant guidelines criteria text,,{{lorem.paragraphs}}, +Grant guidelines process title,test3,, +Grant guidelines process text,,{{lorem.paragraphs}}, +Grant guidelines how to apply title,test4,, +Grant guidelines how to apply text,,{{lorem.paragraphs}}, +Grant author full name,John Smith,{{name.findName}},http://marak.github.io/faker.js/#toc9__anchor +Grant author email,email@domain.com,{{internet.email}}, +Grant author phone,03 0000 00000,{{phone.phoneNumber}}, +Grant author department,Department of Magic,{{commerce.department}}, \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/LandingPage/complex.json b/test/e2e/fixtures/Pages/LandingPage/complex.json new file mode 100644 index 000000000..f19680a45 --- /dev/null +++ b/test/e2e/fixtures/Pages/LandingPage/complex.json @@ -0,0 +1,44 @@ +{ + "title": "Test landing page automation", + "summary": "Testing a summary", + "topic": "\"Arts, culture and heritage (1)\"", + "siteNumber": 4, + "components": [ + { + "type": "Basic Text", + "content": "

test \"test\"

" + }, + { + "type": "Accordion", + "title": "Accordion title", + "style": "basic", + "accordionItems": [ + { + "name": "test1", + "content": "

test 1

" + }, + { + "name": "test2", + "content": "

test 2

" + }, + { + "name": "test3", + "content": "

test 3

" + }, + { + "name": "test4", + "content": "

test 4

" + } + ] + }, + { + "type": "User Authentication Block", + "nextPage": "Mrs Patricia Bigham (125)" + }, + { + "type": "Card Event Automated", + "cta": "Card Event Automated CTA Text", + "event": "2019 Bright Autumn Festival (1229)" + } + ] +} \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/LandingPage/simple.json b/test/e2e/fixtures/Pages/LandingPage/simple.json new file mode 100644 index 000000000..01d54f26d --- /dev/null +++ b/test/e2e/fixtures/Pages/LandingPage/simple.json @@ -0,0 +1,20 @@ +{ + "title": "Test landing page basic", + "summary": "Testing a summary", + "topic": "\"Arts, culture and heritage (1)\"", + "siteNumber": 4, + "components": [ + { + "type": "Basic Text1", + "content": "

test \"test\"

" + }, + { + "type": "Basic Text2", + "content": "

test \"test\"

" + }, + { + "type": "Basic Text3", + "content": "

test \"test\"

" + } + ] +} \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/ProtectedContent/tc-pc1.json b/test/e2e/fixtures/Pages/ProtectedContent/tc-pc1.json new file mode 100644 index 000000000..c2331029d --- /dev/null +++ b/test/e2e/fixtures/Pages/ProtectedContent/tc-pc1.json @@ -0,0 +1,13 @@ +{ + "title": "protected content page", + "summary": "Testing a summary", + "topic": "\"Arts, culture and heritage (1)\"", + "siteNumber": 4, + "authenticatedContentGroup": "Authenticated Content", + "components": [ + { + "type": "Basic Text", + "content": "

test

" + } + ] +} \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/grantjson.json b/test/e2e/fixtures/Pages/grantjson.json new file mode 100644 index 000000000..b6c44de8b --- /dev/null +++ b/test/e2e/fixtures/Pages/grantjson.json @@ -0,0 +1,55 @@ +{ + "title": "Grants ongoing basic test", + "summary": "Summary test", + "topic": "\"Arts, culture and heritage (1)\"", + "siteNumber": 4, + "grantDetails": { + "overview": { + "title": "grant title", + "funding": { + "from": "10,000", + "to": "20,000" + }, + "audience": "", + "cta": { + "uri": "", + "title": "" + }, + "description": "", + "websiteUrl": "" + }, + "timeline": { + "title": "", + "items": [ + { + "title": "" + } + ] + }, + "guidelines": { + "eligibility": { + "title": "", + "text": "" + }, + "criteria": { + "title": "", + "text": "" + }, + "process": { + "title": "", + "text": "" + }, + "howToApply": { + "title": "", + "text": "" + } + } + }, + "grantAuthor": { + "fullName": "", + "email": "", + "phone": "", + "department": "" + } + +} \ No newline at end of file diff --git a/test/e2e/fixtures/Pages/grantlandingpage.json b/test/e2e/fixtures/Pages/grantlandingpage.json new file mode 100644 index 000000000..6ad2f0c68 --- /dev/null +++ b/test/e2e/fixtures/Pages/grantlandingpage.json @@ -0,0 +1,13 @@ +{ + "title": "Submit a grant landing page", + "summary": "Testing a summary", + "topic": "\"Arts, culture and heritage (1)\"", + "siteNumber": 4, + "components": [ + { + "type": "Embedded Webform", + "formTitle": "Submit a grant", + "formType": "tide_grant_submission" + } + ] +} \ No newline at end of file diff --git a/test/e2e/integration/Grants/GrantPage.feature b/test/e2e/integration/Grants/GrantPage.feature new file mode 100644 index 000000000..157f2ea9a --- /dev/null +++ b/test/e2e/integration/Grants/GrantPage.feature @@ -0,0 +1,69 @@ +Feature: Grant page + + As a citizen I can view information about a specific grant, including grant amount, audience, etc. + https://digital-engagement.atlassian.net/browse/SDPA-175 + + # Before hook + # - Logs into backend + # - Creates grant page from fixture data @pageData and saves node id as @nodeId + + # After hook + # - Deletes node id @nodeId + + Scenario: TC-9a Grant - Simple Test - Date Range + Given I have created a grant page with the fixture "Pages/Grant/tc9a" + And I have navigated to the created page + Then the page title should be "TC- 9a Grant- Simple Test - Date Range" + And the grant overview title should match test data + And the grant overview price should be "$11,326 - $26,494" + And the grant overview audience should be "Individuals" + And the grant overview open status is "Ongoing" + And the grant overview description should match test data + And the timeline component should exist + And the timeline section title should match test data + And the timeline item title should match test data + And the timeline item date should be "08 April to 08 May 0019" + And the grant guideline section title should be "Guidelines" + And the grant guideline should have the following accordions + | "Eligibility" | + | "Assessment criteria" | + | "Assessment process" | + | "How to apply" | + + + Scenario: TC-9b Grant page - Closed + Given I have created a grant page with the fixture "Pages/Grant/tc9b" + And that the current date is "April 10, 2019 03:24:00" + And I have navigated to the created page + Then the page title should be "TC- 9b Grant- Simple Test - Closed" + And the grant overview title should match test data + And the grant overview price should be "$12,345 - $23,456" + And the grant overview audience should be "Individuals" + And the grant overview open status is "Closed" + And the grant overview description should match test data + And the timeline component should exist + And the timeline section title should match test data + And the timeline item title should match test data + And the timeline item date s\hould be "07 to 08 April" + And the grant guideline section title should be "Guidelines" + + Scenario: TC-10a Grant page - Complete + Given I have created a grant page with the fixture "Pages/Grant/tc10a" + And that the current date is "April 10, 2019 03:24:00" + And I have navigated to the created page + Then the page title should be "TC-10a Grant page - Complete" + And the grant overview title should match test data + And the grant overview price should be "$12,345 - $23,456" + And the grant overview audience should be "Individuals, government" + And the grant overview open status is "Closed" + And the grant overview description should match test data + And the timeline component should exist + And the timeline section title should match test data + And the timeline item title should match test data + And the timeline item date should be "08 April to 08 May 2019" + And the grant guideline section title should be "Guidelines" + And the grant guideline should have the following accordions + | "test1" | + | "test2" | + | "test3" | + | "test4" | \ No newline at end of file diff --git a/test/e2e/integration/Grants/GrantPage/hooks.js b/test/e2e/integration/Grants/GrantPage/hooks.js new file mode 100644 index 000000000..e2a60e7b6 --- /dev/null +++ b/test/e2e/integration/Grants/GrantPage/hooks.js @@ -0,0 +1,9 @@ +/* global afterEach, cy */ + +afterEach(() => { + cy.get('@nodeId').then(nodeId => { + if (nodeId) { + cy.task('deleteNode', nodeId) + } + }) +}) diff --git a/test/e2e/integration/Grants/GrantPage/step_definition.js b/test/e2e/integration/Grants/GrantPage/step_definition.js new file mode 100644 index 000000000..a12640e7f --- /dev/null +++ b/test/e2e/integration/Grants/GrantPage/step_definition.js @@ -0,0 +1,97 @@ +/* global cy */ + +import { Then, Given } from 'cypress-cucumber-preprocessor/steps' + +Given(`I have created a grant page with the fixture {string}`, (fixture) => { + cy.csvFixture(fixture).as('pageData') + cy.get('@pageData').then(data => { + cy.task('createGrantPage', data).then((nodeId) => { + cy.wrap(nodeId).as('nodeId') + }) + }) +}) + +Then(`the grant overview title should match test data`, () => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-grants-overview__list .rpl-list__title .rpl-list__title-inner') + .should('contain', pageData.grantDetailsOverviewTitle) + }) +}) + +Then(`the grant overview title should be {string}`, (title) => { + cy.get('.rpl-grants-overview__list .rpl-list__title .rpl-list__title-inner') + .should('contain', title) +}) + +Then(`the grant overview price should be {string}`, (price) => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-grants-overview__list .rpl-list__list-item:nth-child(1) .rpl-list__text') + .should('contain', price) + }) +}) + +Then(`the grant overview description should match test data`, () => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-grants-overview__description .rpl-markup__inner') + .should('contain', pageData.grantDetailsOverviewDescription.replace(/(\r\n|\n|\r)/gm, '')) + }) +}) + +Then(`the grant overview audience should be {string}`, (audience) => { + cy.get(':nth-child(2) > .rpl-list__text') + .should('contain', audience) +}) + +Then(`the grant overview open status is {string}`, (status) => { + cy.get(':nth-child(3) > .rpl-list__text') + .should('contain', status) +}) + +Then(`the timeline section title should match test data`, () => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-timeline__title') + .should('contain', pageData.grantTimelineTitle) + }) +}) + +Then(`the timeline item title should match test data`, () => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-timeline__item-title') + .should('contain', pageData.grantTimelineItem1Title) + }) +}) + +Then(`the timeline item description should match test data`, (title) => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-timeline__item-description') + .should('contain', pageData.grantTimelineItem1Summary) + }) +}) + +Then(`the timeline item date should be {string}`, (date) => { + cy.get('.rpl-timeline__item-subtitle').should('contain', date) +}) + +Then(`the grant overview price should be {string}`, (title) => { + cy.get('.rpl-grants-overview__list .rpl-list__title .rpl-list__title-inner') + .should('contain', title) +}) + +Then(`the timeline title should be set`, () => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-timeline__title') + .should('contain', pageData.grantTimeline.title) + }) +}) + +Then(`the grant guideline section title should be {string}`, (title) => { + cy.get('.tide-guidelines__title').should('contain', title) +}) + +Then(`the grant guideline should have the following accordions`, (dataTable) => { + const titles = dataTable.rawTable.map(itm => itm[0].replace(/['"]+/g, '')) + cy.get('.tide-guidelines .rpl-accordion__list .rpl-accordion__list-item').each(($el) => { + const title = $el.find('.rpl-accordion__button-text').text() + expect(titles.includes(title)).to.be.true // eslint-disable-line + }) +}) diff --git a/test/e2e/integration/Grants/SubmitAGrant.feature b/test/e2e/integration/Grants/SubmitAGrant.feature new file mode 100644 index 000000000..349badfed --- /dev/null +++ b/test/e2e/integration/Grants/SubmitAGrant.feature @@ -0,0 +1,20 @@ +Feature: Submit a grant + + Form to submit a grant + + # Before : Create Landing page with submit a grant form + + Scenario: Submitting a form successfully + Given I have navigated to the created page + Then the page title should be "Submit a grant landing page" + Then the form title should be "Submit a grant" + Given I have entered the form correctly + When I submit the form + Then I should see the form success message + And the form submission should be saved + + Scenario: Client side error validation + Given I have navigated to the created test page + And I dont fill out any fields + When I submit the form + Then I should see 10 validation errors \ No newline at end of file diff --git a/test/e2e/integration/Grants/SubmitAGrant/hooks.js b/test/e2e/integration/Grants/SubmitAGrant/hooks.js new file mode 100644 index 000000000..1b954eaf5 --- /dev/null +++ b/test/e2e/integration/Grants/SubmitAGrant/hooks.js @@ -0,0 +1,14 @@ +/* global before, after, cy */ + +before(function () { + cy.fixture('Pages/grantlandingpage').as('pageData') + cy.get('@pageData').then(data => { + cy.task('createLandingPage', data).as('nodeId') + }) +}) + +after(function () { + if (this.nodeId) { + cy.task('deleteNode', this.nodeId) + } +}) diff --git a/test/e2e/integration/Grants/SubmitAGrant/step_definition.js b/test/e2e/integration/Grants/SubmitAGrant/step_definition.js new file mode 100644 index 000000000..e7d698af0 --- /dev/null +++ b/test/e2e/integration/Grants/SubmitAGrant/step_definition.js @@ -0,0 +1,83 @@ +/* global cy */ + +import { Given, Then, When } from 'cypress-cucumber-preprocessor/steps' + +Then(`the form title should be {string}`, (title) => { + cy.get('.rpl-form__title').should('contain', title) +}) + +Given(`I have entered the form correctly`, () => { + cy.csvFixture('Forms/Grant/tc9c').as('sampleFormSubmission') + cy.get('@sampleFormSubmission').then(sampleFormSubmission => { + cy.log(sampleFormSubmission) + cy.get(':nth-child(5) > .rpl-fieldset__inner > .form-group > .field-wrap > .rpl-checkbox > .rpl-checkbox__box').click() + cy.get('#name-of-grant-or-program').type(sampleFormSubmission.name) + cy.get('#describe-the-grant-or-program').type(sampleFormSubmission.description) + cy.get('[for="open-date"] + div input').type(sampleFormSubmission.openDate) + cy.get('#describe-the-grant-or-program').click() + cy.get('[for="close-date"] + div input').type(sampleFormSubmission.closeDate) + cy.get('#describe-the-grant-or-program').click() + + cy.get('[for="topic"] + div .rpl-select__trigger').click() + cy.get('[for="topic"] + div .rpl-select__listbox').type('{downarrow}') + cy.get('[for="topic"] + div .rpl-select__trigger').click() + + cy.get('[for="who-is-the-grant-or-program-for"] + div .rpl-select__trigger').click() + cy.get('[for="who-is-the-grant-or-program-for"] + div .rpl-select__listbox').type('{downarrow}') + cy.get('[for="who-is-the-grant-or-program-for"] + div .rpl-select__trigger').click() + + cy.get('#funding-amount-from').type(sampleFormSubmission.amountFrom) + cy.get('#funding-amount-to').type(sampleFormSubmission.amountTo) + + cy.get('#website-url-to-apply-for-grant-or-program').type(sampleFormSubmission.applyUrl) + // cy.get('[id^="this-grant-program-is-ongoing-and-does-have-an-open-close-dates-"]').check({force: true}) + cy.get('#website-url-for-grant-or-program-information').type(sampleFormSubmission.infoUrl) + cy.get('#contact-person').type(sampleFormSubmission.contactName) + cy.get('[for="department-agency-or-provider-organisation"] + div .rpl-select__trigger').click() + cy.get('[for="department-agency-or-provider-organisation"] + div .rpl-select__listbox').type('{downarrow}') + cy.get('[for="department-agency-or-provider-organisation"] + div .rpl-select__trigger').click() + + cy.get('#contact-email-address').type(sampleFormSubmission.contactEmail) + cy.get('#contact-telephone-number').type(sampleFormSubmission.contactPhone) + + if (sampleFormSubmission.acknowledge === 'TRUE') { + cy.get('[id^="agree-privacy-statement-"]').check({force: true}) + } + }) +}) + +When('I submit the form', () => { + cy.fixture('/Forms/Grant/tc9c_submission.json').as('formSubmissionResponse') + cy.server() // enable response stubbing + cy.route('POST', '/api/v1/webform_submission/tide_grant_submission', '@formSubmissionResponse').as('formSubmissionRequest') + cy.get('form.rpl-form').first().submit() + cy.get('@formSubmissionRequest').then(submissionData => { + cy.log(submissionData) + }) +}) + +Then('I should see the form success message', () => { + cy.get('.rpl-form-alert', { timeout: 10000 }).should('have.class', 'rpl-form-alert--success') +}) +Then('I should see the failure message', () => { + cy.get('.rpl-form-alert', { timeout: 10000 }).should('have.class', 'rpl-form-alert--error') +}) + +Then('I should see {int} validation errors', (errors) => { + cy.get('.form-group.error').should('have.length', errors) +}) + +Given(`I have navigated to the created test page`, function () { + cy.visit(`/node/${this.nodeId}`, {failOnStatusCode: false}) +}) + +Given(`I dont fill out any fields`, () => { + // doesn't do nothing to nobody +}) + +Then(`the form submission should be saved`, () => { + cy.wait('@formSubmissionRequest') + cy.get('@formSubmissionRequest').then(submissionData => { + cy.wrap(submissionData.request.body.data.attributes.data).should('equal', `{"name_of_grant_or_program":"Extra special grant","describe_the_grant_or_program":"this is the description","open_date":null,"close_date":null,"this_grant_program_is_ongoing_and_does_have_an_open_close_dates_":true,"topic":"2","who_is_the_grant_or_program_for_":["82"],"funding_level_from":123123,"funding_level_to":234234,"website_url_to_apply_for_grant_or_program":"http://www.google.com","website_url_for_grant_or_program_information":"http://www.google.com","horizontal_rule_1":null,"required_contact_details":null,"contact_person":"Stan Grant","department_agency_or_provider_organisation":"99","contact_email_address":"stan@mailinator.com","contact_telephone_number":"03 91222222","horizontal_rule_2":null,"privacy_statement_disclaimer":null,"agree_privacy_statement":true,"actions":null}`) + }) +}) diff --git a/test/e2e/integration/Homepage/Homepage.feature b/test/e2e/integration/Homepage/Homepage.feature new file mode 100644 index 000000000..e347a9deb --- /dev/null +++ b/test/e2e/integration/Homepage/Homepage.feature @@ -0,0 +1,20 @@ +Feature: Home Page + + Home landing page + + Background: + Given I visit the page "/" + + @smoke + Scenario: Home landing page loads correctly + And the page title should be set + And the h1 should be set + And the breadcrumbs should not exist + And the site header is visible + And the site footer is visible + And the campaign primary banner component should exist + +# Need to fix existing errors or work out ruleset to skip + @a11y + Scenario: There are no accessibility errors + Then it has no detectable a11y violations on load \ No newline at end of file diff --git a/test/e2e/integration/LandingPage/DemoLandingPage.feature b/test/e2e/integration/LandingPage/DemoLandingPage.feature new file mode 100644 index 000000000..558abcd92 --- /dev/null +++ b/test/e2e/integration/LandingPage/DemoLandingPage.feature @@ -0,0 +1,42 @@ +Feature: Demo Page + + Demo landing page with all components + + Background: + Given I visit the page "/demo-landing-page" + + @smoke + Scenario: Demo landing page loads correctly + And the page title should be "Demo Landing Page" + And the h1 should be "Demo Landing Page" + And the breadcrumbs should exist + And there should be 2 breadcrumb items + And the site header is visible + And the site footer is visible + # All components load correctly + And the anchor links component should exist + And the content rating component should exist + And the hero banner component should exist + And the intro banner component should exist + And the campaign primary banner component should exist + And the body markup component should exist + And the featured news list component should exist + And the featured card navigation component should exist + And the card event component should exist + And the card event component should exist + And the card CTA component should exist + And the card keydates component should exist + And the card promotion component should exist + And the card carousel component should exist + And the accordion component should exist + And the news listing component should exist + And the timeline component should exist + And the image gallery component should exist + And the related links component should exist + And the contact component should exist + And the whats next component should exist + And the share this component should exist + +# Need to fix existing errors or work out ruleset to skip + # Scenario: There are no accessibility errors + # Then it has no detectable a11y violations on load \ No newline at end of file diff --git a/test/e2e/integration/LandingPage/DemoLandingPage/step_definition.js b/test/e2e/integration/LandingPage/DemoLandingPage/step_definition.js new file mode 100644 index 000000000..80d9c40c4 --- /dev/null +++ b/test/e2e/integration/LandingPage/DemoLandingPage/step_definition.js @@ -0,0 +1,16 @@ +/* global cy */ + +import { Then } from 'cypress-cucumber-preprocessor/steps' + +Then(`the campaign title should be {string}`, title => { + cy.get('.rpl-campaign-primary__title').should('contain', title) +}) + +Then(`the anchor link title should be {string}`, title => { + cy.get('.rpl-anchor-links__title').should('contain', title) +}) + +Then(`there should be {int} anchor links`, length => { + cy.get('.rpl-anchor-links__items').children().should('have.length', length) + cy.log('test') +}) diff --git a/test/e2e/integration/LandingPage/LandingPage.feature b/test/e2e/integration/LandingPage/LandingPage.feature new file mode 100644 index 000000000..a27ca6cf0 --- /dev/null +++ b/test/e2e/integration/LandingPage/LandingPage.feature @@ -0,0 +1,23 @@ +Feature: Landing Page Components + + Creating a landing page with components + + # After : Delete node @nodeId + + Scenario: Simple landing page example + Given I have created a landing page with the json fixture "Pages/LandingPage/simple" + And I have navigated to the created test page + Then the site header is visible + + + Scenario: Complex landing page example + Given I have created a landing page with the json fixture "Pages/LandingPage/complex" + And I have navigated to the created test page + Then the site header is visible + Then the site footer is visible + + @a11y + Scenario: There are no accessibility errors + Given I have created a landing page with the json fixture "Pages/LandingPage/simple" + And I have navigated to the created test page + Then it has no detectable a11y violations on load \ No newline at end of file diff --git a/test/e2e/integration/LandingPage/LandingPage/hooks.js b/test/e2e/integration/LandingPage/LandingPage/hooks.js new file mode 100644 index 000000000..67cbd4546 --- /dev/null +++ b/test/e2e/integration/LandingPage/LandingPage/hooks.js @@ -0,0 +1,7 @@ +/* global afterEach, cy */ + +afterEach(function () { + if (this.nodeId) { + cy.task('deleteNode', this.nodeId) + } +}) diff --git a/test/e2e/integration/Protected-content/ProtectedContent.feature b/test/e2e/integration/Protected-content/ProtectedContent.feature new file mode 100644 index 000000000..9c6b6a66d --- /dev/null +++ b/test/e2e/integration/Protected-content/ProtectedContent.feature @@ -0,0 +1,89 @@ +Feature: Protected content + + As authorized I want to be able to login to the site so I can view pages which are not for the general public + + Scenario: Login form renders correctly + Given I visit the page "/login" + Then there should be a login form with the title "Login" + And there should be a form field with the label "Username" + And there should be a form field with the label "Password" + And there should be a submit button with the text "Submit" + And there should be a login form button with the text "Register" + And there should be a login form button with the text "Forgot password" + + Scenario: Login success + Given there is a user in the system with the following credentials: + | login | password | active | email | + | testuser1 | Password-111 | true | testuser1@mailinator.com | + And I visit the page "/login" + When I enter the the following login credentials: + | login | password | + | testuser1 | Password-111 | + And I submit the login form + Then the login status colour should should be "green" + And the login status message should be "Login Successful." + And the created user should be removed + + Scenario: Login failure + Given I visit the page "/login" + When I enter the the following login credentials: + | login | password | + | dummyuser | Pasword-21 | + And I submit the login form + Then the login status colour should should be "red" + And the login status message should be "Login Failed. Please try again" + + Scenario: Accessing a protected content page when unauthenticated + Given I have created a landing page with the json fixture "Pages/ProtectedContent/tc-pc1" + When I have navigated to the created test page + Then I should see a 404 page + And the created page should be removed + + Scenario: Accessing a protected content page when authenticated + Given I have created a landing page with the json fixture "Pages/ProtectedContent/tc-pc1" + And there is a user in the system with the following credentials: + | login | password | active | email | role | + | testuser2 | Password-222 | true | testuser2@mailinator.com | Member | + And I visit the page "/login" + When I enter the the following login credentials: + | login | password | + | testuser2 | Password-222 | + And I submit the login form + Then I should be redirected to the page "/" + Given I have navigated to the created test page + Then the page title should be "protected content page" + And the h1 should be "protected content page" + And the created user should be removed + And the created page should be removed + + Scenario: Can still navigate after session is expired + Given I have created a landing page with the json fixture "Pages/ProtectedContent/tc-pc1" + And there is a user in the system with the following credentials: + | login | password | active | email | role | + | testuser3 | Password-333 | true | testuser3@mailinator.com | Member | + And I visit the page "/login" + When I enter the the following login credentials: + | login | password | + | testuser3 | Password-333 | + And I submit the login form + Then I should be redirected to the page "/" + Given I have navigated to the created test page + Then the page title should be "protected content page" + And the h1 should be "protected content page" + When I wait for 60 seconds + Given I have navigated to the created test page + Then the menu should have 2 top level items + And the logout button should not be visible + And the created user should be removed + And the created page should be removed + + # Scenario: Login on a landing page with a login component + # Given I have configured authenticated content in the backend + # And I have created a landing page with the fixture "Pages/ProtectedContent/tc-pc2" + # When I have navigated to the created test page + # Then there should be a login form with the title "Login" + # And there should be a form field with the label "Username" + # And there should be a form field with the label "Password" + # And there should be a submit button with the text "Submit" + # And there should be a login form button with the text "Register" + # And there should be a login form button with the text "Forgot password" diff --git a/test/e2e/integration/Protected-content/ProtectedContent/hooks.js b/test/e2e/integration/Protected-content/ProtectedContent/hooks.js new file mode 100644 index 000000000..43d19fe98 --- /dev/null +++ b/test/e2e/integration/Protected-content/ProtectedContent/hooks.js @@ -0,0 +1,17 @@ +/* global before, after, cy */ + +before(function () { + cy.task('configureProtectedContent', { + sessionExpiry: '1' + }) +}) + +afterEach(() => { + +}) + +after(function () { + cy.task('configureProtectedContent', { + sessionExpiry: '10' + }) +}) diff --git a/test/e2e/integration/Protected-content/ProtectedContent/step_definition.js b/test/e2e/integration/Protected-content/ProtectedContent/step_definition.js new file mode 100644 index 000000000..dfd08775b --- /dev/null +++ b/test/e2e/integration/Protected-content/ProtectedContent/step_definition.js @@ -0,0 +1,97 @@ +/* global cy */ + +import { Then, When, Given } from 'cypress-cucumber-preprocessor/steps' + +Then(`there should be a login form with the title {string}`, (title) => { + cy.get('.tide-login__form .tide-login__wrapper h2').should('contain', title) +}) + +Then(`there should be a form field with the label {string}`, (label) => { + cy.get('.tide-login__form label').contains(label).should('exist') +}) + +Then(`there should be a submit button with the text {string}`, (label) => { + cy.get('.tide-login__form .field-submit').contains(label).should('exist') +}) + +Then(`there should be a login form button with the text {string}`, (label) => { + cy.get('.tide-login__switch-list .rpl-button').contains(label).should('exist') +}) + +When(`I enter the the following login credentials:`, (dataTable) => { + const login = dataTable.hashes()[0].login + const password = dataTable.hashes()[0].password + cy.get('#username').type(login) + cy.get('#password').type(password) +}) + +When(`I submit the login form`, () => { + cy.get('.field-wrap > input[value="Submit"]').click() +}) + +Then(`the login status colour should should be {string}`, (status) => { + switch (status) { + case 'green': + cy.get('.rpl-form-alert').should('have.class', 'rpl-form-alert--success') + break + case 'red': + cy.get('.rpl-form-alert').should('have.class', 'rpl-form-alert--danger') + break + } +}) + +Then(`the login status message should be {string}`, (status) => { + cy.get('.rpl-form-alert').should('contain', status) +}) + +Given(`there is a user in the system with the following credentials:`, (dataTable) => { + const user = dataTable.hashes()[0] + const active = Boolean(dataTable.hashes()[0].active === 'true') + + cy.task('createUser', { ...user, active }).as('userId') +}) + +Then(`the created user should be removed`, () => { + cy.get('@userId').then(userId => { + if (userId) { + cy.task('deleteUser', userId) + } + }) +}) + +Given(`I have configured authenticated content in the backend`, (dataTable) => { + const options = { + ...dataTable.hashes()[0] + } + cy.task('configureProtectedContent', options) +}) + +Then(`I should reset authenticated content in the backend to :`, (dataTable) => { + const options = { + ...dataTable.hashes()[0] + } + cy.task('configureProtectedContent', options) +}) + +When(`I wait for {int} seconds`, seconds => { + cy.wait(seconds * 1000) +}) + +Then(`the menu should have {int} top level items`, (number) => { + cy.get('.rpl-menu__items--root').children().should('have.length', number) +}) + +Given(`I have navigated to the created test page`, () => { + cy.get('@nodeId').then(nodeId => { + cy.visit(`/node/${nodeId}`, {failOnStatusCode: false}) + }) +}) + +// Then(`there are no console errors`, () => { +// const spy = cy.window().then((win) => { cy.spy(win.console, 'log') }).as('logger') +// expect(spy).to.be.called // eslint-disable-line +// }) + +Then(`the logout button should not be visible`, () => { + cy.get('.rpl-site-header__btn--logout').should('not.be.visible') +}) diff --git a/test/e2e/integration/common/components.js b/test/e2e/integration/common/components.js new file mode 100644 index 000000000..817cfb054 --- /dev/null +++ b/test/e2e/integration/common/components.js @@ -0,0 +1,126 @@ +/* global cy */ + +import { Then } from 'cypress-cucumber-preprocessor/steps' + +/* + Component exists tests +*/ + +// Layout common elements + +// Breadcrumbs +Then(`the breadcrumbs should exist`, () => { + cy.get('.rpl-breadcrumbs').should('be.visible') +}) +Then(`the breadcrumbs should not exist`, () => { + cy.get('.rpl-breadcrumbs').should('not.exist') +}) + +Then(`there should be {int} breadcrumb items`, length => { + cy.get('.rpl-breadcrumbs__items').children().should('have.length', length) +}) + +// Anchor Links +Then(`the anchor links component should exist`, () => { + cy.get('.rpl-anchor-links').should('exist') +}) + +// Content rating +Then(`the content rating component should exist`, () => { + cy.get('.app-content-rating').should('exist') +}) +// Header +Then(`the page header should exist`, () => { + cy.get('.rpl-site-header').should('exist') +}) +// Footer +Then(`the page header should exist`, () => { + cy.get('.rpl-site-footer').should('exist') +}) + +// Above content elements + +// Hero banner +Then(`the hero banner component should exist`, () => { + cy.get('.rpl-hero-banner').should('exist') +}) +// Intro Banner +Then(`the intro banner component should exist`, () => { + cy.get('.rpl-intro-banner').should('exist') +}) +// Intro Banner +Then(`the campaign primary banner component should exist`, () => { + cy.get('.rpl-campaign-primary').should('exist') +}) + +// Body markup +Then(`the body markup component should exist`, () => { + cy.get('.rpl-markup').should('exist') +}) +// featured news list +Then(`the featured news list component should exist`, () => { + cy.get('.rpl-featured-news-list').should('exist') +}) +// featured card navigation +Then(`the featured card navigation component should exist`, () => { + cy.get('.rpl-card-navigation-featured').should('exist') +}) +// card event +Then(`the card event component should exist`, () => { + cy.get('.rpl-card-event').should('exist') +}) +// card event +Then(`the card event component should exist`, () => { + cy.get('.rpl-card-event').should('exist') +}) +// card CTA +Then(`the card CTA component should exist`, () => { + cy.get('.rpl-card-cta, .rpl-call-to-action').should('exist') +}) +// card keydates +Then(`the card keydates component should exist`, () => { + cy.get('.rpl-card-keydates').should('exist') +}) +// card promotion +Then(`the card promotion component should exist`, () => { + cy.get('.rpl-card-promotion').should('exist') +}) +// card carousel +Then(`the card carousel component should exist`, () => { + cy.get('.rpl-card-carousel').should('exist') +}) +// accordion +Then(`the accordion component should exist`, () => { + cy.get('.rpl-accordion').should('exist') +}) +// news listing' +Then(`the news listing component should exist`, () => { + cy.get('.rpl-news-listing').should('exist') +}) +// timeline +Then(`the timeline component should exist`, () => { + cy.get('.rpl-timeline').should('exist') +}) +// image gallery +Then(`the image gallery component should exist`, () => { + cy.get('.rpl-image-gallery').should('exist') +}) + +// Sidebar components + +// Related links +Then(`the related links component should exist`, () => { + cy.get('.rpl-related-links').should('exist') +}) +// contact +Then(`the contact component should exist`, () => { + cy.get('.rpl-contact').should('exist') +}) +// whats next +Then(`the whats next component should exist`, () => { + cy.get('.rpl-whats-next').should('exist') +}) +// share this +Then(`the share this component should exist`, () => { + cy.get('.rpl-share-this').should('exist') +}) diff --git a/test/e2e/integration/common/index.js b/test/e2e/integration/common/index.js new file mode 100644 index 000000000..391008979 --- /dev/null +++ b/test/e2e/integration/common/index.js @@ -0,0 +1,100 @@ +/* global cy, Cypress */ + +import { Then, Given } from 'cypress-cucumber-preprocessor/steps' + +Given(`I visit the page {string}`, url => { + cy.visit(url) +}) + +Then(`the page title should be {string}`, title => { + cy.title().should('include', title) +}) + +Then(`the page title should be set`, () => { + cy.title().should('exist') +}) + +Then(`the page title should match test data`, () => { + cy.get('@pageData').then(pageData => { + cy.get('.rpl-hero-banner__title') + .should('contain', pageData.title) + }) +}) + +Given(`I have created a landing page with the json fixture {string}`, (fixture) => { + cy.fixture(fixture).as('pageData') + cy.get('@pageData').then(data => { + cy.task('createLandingPage', data).then((nodeId) => { + cy.wrap(nodeId).as('nodeId') + }) + }) +}) + +Given(`I have navigated to the created page`, () => { + cy.get('@nodeId').then(nodeId => { + cy.visit(`/node/${nodeId}`) + }) +}) + +Then(`the h1 should be {string}`, title => { + cy.get('h1').should('contain', title) +}) + +Then(`the h1 should be set`, () => { + cy.get('h1').should('exist') +}) + +Then(`I should see a 404 page`, () => { + cy.get('.app-error').should('exist') +}) + +Given(`I have navigated to the created test page`, () => { + cy.get('@nodeId').then(nodeId => { + cy.visit(`/node/${nodeId}`, {failOnStatusCode: false}) + }) +}) + +Then(`I should be redirected to the page {string}`, (path) => { + cy.wait(3000) + cy.url().should('eq', `${Cypress.config().baseUrl}${path}`) +}) + +Then(`the site header is visible`, () => { + cy.get('.rpl-site-header').should('be.visible') +}) + +Then(`the site footer is visible`, () => { + cy.get('.rpl-site-footer').should('be.visible') +}) + +Given(`that the current date is {string}`, (datestring) => { + const now = new Date(datestring).getTime() + if (datestring) { + cy.clock(now) + } +}) + +Then('it has no detectable a11y violations on load', () => { + // Test the page at initial load + cy.injectAxe() + cy.checkA11y({ + runOnly: { + type: 'tag', + values: ['wcag2a', 'wcag2aa'] + } + }) +}) + +Then(`the page title should be set`, () => { + cy.get('@pageData').then(pageData => { + cy.title().should('include', pageData.title) + }) +}) + +Then(`the created page should be removed`, () => { + cy.get('@nodeId').then(nodeId => { + if (nodeId) { + cy.task('deleteNode', nodeId) + } + }) +}) diff --git a/test/e2e/plugins/index.js b/test/e2e/plugins/index.js new file mode 100644 index 000000000..f07b6bd35 --- /dev/null +++ b/test/e2e/plugins/index.js @@ -0,0 +1,25 @@ + +const cucumber = require('cypress-cucumber-preprocessor').default +const tideAdmin = require('@dpc-sdp/ripple-test-tools') + +module.exports = (on, config) => { + + on('file:preprocessor', cucumber()) + + tideAdmin(on, config) + + // Environment variables that need exposing to cypress go here + if (process.env.NODE_ENV === 'dev' || process.env.NODE_ENV === 'test') { + require('dotenv').config() + } + + config.env = { + ADMIN_USERNAME: process.env.CYPRESS_ADMIN_USERNAME, + ADMIN_PASSWORD: process.env.CYPRESS_ADMIN_PASSWORD, + AUTH_USER: process.env.AUTH_USER, + AUTH_PASS: process.env.AUTH_PASS, + CONTENT_API_SERVER: process.env.CONTENT_API_SERVER + } + + return config +} diff --git a/test/e2e/support/commands.js b/test/e2e/support/commands.js new file mode 100644 index 000000000..f5ec914f7 --- /dev/null +++ b/test/e2e/support/commands.js @@ -0,0 +1,10 @@ +// *********************************************** +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +import rippleCommands from '@dpc-sdp/ripple-test-tools/commands.js' + +rippleCommands() diff --git a/test/e2e/support/index.js b/test/e2e/support/index.js new file mode 100644 index 000000000..bf43148c2 --- /dev/null +++ b/test/e2e/support/index.js @@ -0,0 +1,17 @@ +// *********************************************************** +// 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 'cypress-axe' +import './commands' diff --git a/yarn.lock b/yarn.lock index 0978c669e..bffca87a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,6 +8,26 @@ dependencies: "@babel/highlight" "^7.0.0" +"@babel/core@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.0.tgz#08958f1371179f62df6966d8a614003d11faeb04" + integrity sha512-9EWmD0cQAbcXSc+31RIoYgEHx3KQ2CCSMDBhnXrShWvo45TMw+3/55KVxlhkG53kw9tl87DqINgHDgFVhZJV/Q== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helpers" "^7.1.0" + "@babel/parser" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + convert-source-map "^1.1.0" + debug "^3.1.0" + json5 "^0.5.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.1.0", "@babel/core@^7.4.3": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" @@ -27,7 +47,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": +"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" dependencies: @@ -50,6 +70,14 @@ "@babel/helper-explode-assignable-expression" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-builder-react-jsx@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" + integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== + dependencies: + "@babel/types" "^7.3.0" + esutils "^2.0.0" + "@babel/helper-call-delegate@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" @@ -184,9 +212,10 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.4.4": +"@babel/helpers@^7.1.0", "@babel/helpers@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== dependencies: "@babel/template" "^7.4.4" "@babel/traverse" "^7.4.4" @@ -204,14 +233,27 @@ version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" -"@babel/plugin-proposal-async-generator-functions@^7.2.0": +"@babel/plugin-proposal-async-generator-functions@^7.1.0", "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" "@babel/plugin-syntax-async-generators" "^7.2.0" +"@babel/plugin-proposal-class-properties@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4" + integrity sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-proposal-class-properties@^7.4.0": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" @@ -227,41 +269,60 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-decorators" "^7.2.0" -"@babel/plugin-proposal-json-strings@^7.2.0": +"@babel/plugin-proposal-json-strings@^7.0.0", "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.4.4": +"@babel/plugin-proposal-object-rest-spread@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": +"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.0.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-syntax-async-generators@^7.2.0": +"@babel/plugin-syntax-async-generators@^7.0.0", "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812" + integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" @@ -292,42 +353,47 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": +"@babel/plugin-syntax-optional-catch-binding@^7.0.0", "@babel/plugin-syntax-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@^7.2.0": +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.4.4": +"@babel/plugin-transform-async-to-generator@^7.1.0", "@babel/plugin-transform-async-to-generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" + integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.4.4": +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.11" -"@babel/plugin-transform-classes@^7.4.4": +"@babel/plugin-transform-classes@^7.1.0", "@babel/plugin-transform-classes@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-define-map" "^7.4.4" @@ -338,55 +404,63 @@ "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.2.0": +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.4.4": +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.0.0", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.2.0": +"@babel/plugin-transform-duplicate-keys@^7.0.0", "@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": +"@babel/plugin-transform-exponentiation-operator@^7.1.0", "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-for-of@^7.4.4": +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.4.4": +"@babel/plugin-transform-function-name@^7.1.0", "@babel/plugin-transform-function-name@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== dependencies: "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@^7.2.0": +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -396,31 +470,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.2.0": +"@babel/plugin-transform-modules-amd@^7.1.0", "@babel/plugin-transform-modules-amd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-commonjs@^7.4.4": +"@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" + integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== dependencies: "@babel/helper-module-transforms" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-systemjs@^7.4.4": +"@babel/plugin-transform-modules-systemjs@^7.0.0", "@babel/plugin-transform-modules-systemjs@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" + integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== dependencies: "@babel/helper-hoist-variables" "^7.4.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-umd@^7.2.0": +"@babel/plugin-transform-modules-umd@^7.1.0", "@babel/plugin-transform-modules-umd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== dependencies: "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -431,22 +509,25 @@ dependencies: regexp-tree "^0.1.6" -"@babel/plugin-transform-new-target@^7.4.4": +"@babel/plugin-transform-new-target@^7.0.0", "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.2.0": +"@babel/plugin-transform-object-super@^7.1.0", "@babel/plugin-transform-object-super@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.1.0" -"@babel/plugin-transform-parameters@^7.4.4": +"@babel/plugin-transform-parameters@^7.1.0", "@babel/plugin-transform-parameters@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== dependencies: "@babel/helper-call-delegate" "^7.4.4" "@babel/helper-get-function-arity" "^7.0.0" @@ -458,9 +539,42 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-regenerator@^7.4.5": +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" + integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" + integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== + dependencies: + "@babel/helper-builder-react-jsx" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== dependencies: regenerator-transform "^0.14.0" @@ -470,6 +584,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-runtime@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.1.0.tgz#9f76920d42551bb577e2dc594df229b5f7624b63" + integrity sha512-WFLMgzu5DLQEah0lKTJzYb14vd6UiES7PTnXcvrPZ1VrwFeJ+mTbvr65fFAsXYMt2bIoOoC0jk76zY1S7HZjUg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + "@babel/plugin-transform-runtime@^7.4.3": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" @@ -479,46 +603,99 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.2.0": +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.2.0": +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.2.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@^7.2.0": +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.4.4": +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typeof-symbol@^7.2.0": +"@babel/plugin-transform-typeof-symbol@^7.0.0", "@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-unicode-regex@^7.4.4": +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" +"@babel/preset-env@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.0.tgz#e67ea5b0441cfeab1d6f41e9b5c79798800e8d11" + integrity sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.1.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.1.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.1.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.1.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.1.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.1.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.1.0" + "@babel/plugin-transform-parameters" "^7.1.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + browserslist "^4.1.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + "@babel/preset-env@^7.4.3": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" @@ -572,6 +749,24 @@ js-levenshtein "^1.1.3" semver "^5.5.0" +"@babel/preset-react@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/runtime@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== + dependencies: + regenerator-runtime "^0.12.0" + "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" @@ -619,6 +814,45 @@ version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" +"@cypress/browserify-preprocessor@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-1.1.2.tgz#5c82f9552564a6fb3b9993b50ef58fdf9f4a2148" + integrity sha512-QLLV0zQIBJ6eKzbrEfIybcCwJftVCsV6AlV3OpT+pbPvVEaI2KFZ95n3xo1Bz5EFdSuEOfzfSC70R3XvdLCP8A== + dependencies: + "@babel/core" "7.1.0" + "@babel/plugin-proposal-class-properties" "7.1.0" + "@babel/plugin-proposal-object-rest-spread" "7.0.0" + "@babel/plugin-transform-runtime" "7.1.0" + "@babel/preset-env" "7.1.0" + "@babel/preset-react" "7.0.0" + "@babel/runtime" "7.0.0" + babel-plugin-add-module-exports "1.0.0" + babelify "10.0.0" + bluebird "3.5.2" + browserify "16.2.2" + cjsxify "0.3.0" + debug "4.0.1" + fs-extra "7.0.0" + watchify "3.11.0" + +"@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/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" + "@evocateur/libnpmaccess@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.0.tgz#e546ee4e4bedca54ed9303948ec54c985cec33e4" @@ -2156,7 +2390,7 @@ source-map "~0.6.1" vue-template-es2015-compiler "^1.9.0" -"@vue/test-utils@1.0.0-beta.29", "@vue/test-utils@^1.0.0-beta.29": +"@vue/test-utils@^1.0.0-beta.29": version "1.0.0-beta.29" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0" dependencies: @@ -2299,7 +2533,7 @@ version "4.2.2" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" -JSONStream@^1.0.4, JSONStream@^1.3.4: +JSONStream@^1.0.3, JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" dependencies: @@ -2344,6 +2578,16 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" +acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.7.0.tgz#aac6a559d27af6176b076ab6fb13c5974c213e3b" + integrity sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw== + dependencies: + acorn "^6.1.1" + acorn-dynamic-import "^4.0.0" + acorn-walk "^6.1.1" + xtend "^4.0.1" + acorn-walk@^6.0.1, acorn-walk@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" @@ -2360,9 +2604,10 @@ acorn@^5.0.0, acorn@^5.5.0, acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" -acorn@^6.0.1, acorn@^6.0.5, acorn@^6.0.7: +acorn@^6.0.1, acorn@^6.0.5, acorn@^6.0.7, acorn@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== add-stream@^1.0.0: version "1.0.0" @@ -2488,9 +2733,10 @@ ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" -ansi-escapes@^1.1.0: +ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" @@ -2538,6 +2784,19 @@ ansi-yellow@^0.1.1: dependencies: ansi-wrap "0.1.0" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2559,6 +2818,11 @@ aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" +arch@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" + integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== + 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" @@ -2712,13 +2976,28 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -assert@^1.1.1: +assert@^1.1.1, assert@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: object-assign "^4.1.1" util "0.10.3" +assertion-error-formatter@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz#6bbdffaec8e2fa9e2b0eb158bfe353132d7c0a9b" + integrity sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q== + dependencies: + diff "^3.0.0" + pad-right "^0.2.2" + repeat-string "^1.6.1" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -2731,7 +3010,7 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" -async-each@^1.0.1: +async-each@^1.0.0, async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2743,6 +3022,13 @@ async-limiter@^1.0.0, async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" +async@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== + dependencies: + lodash "^4.17.10" + async@^1.3.0, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -2807,6 +3093,11 @@ aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" +axe-core@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.2.2.tgz#b06d6e9ae4636d706068843272bfaeed3fe97362" + integrity sha512-gAy4kMSPpuRJV3mwictJqlg5LhE84Vw2CydKdC4tvrLhR6+G3KW51zbL/vYujcLA2jvWOq3HMHrVeNuw+mrLVA== + axios-retry@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.1.2.tgz#4f4dcbefb0b434e22b72bd5e28a027d77b8a3458" @@ -3128,13 +3419,20 @@ babel-messages@^6.22.0, babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-add-module-exports@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.0.tgz#72b5424d941a336c6a35357f373d8b8366263031" + integrity sha512-m0sMxPL4FaN2K69GQgaRJa4Ny15qKSdoknIcpN+gz+NaJlAW9pge/povs13tPYsKDboflrEQC+/3kfIsONBTaw== + optionalDependencies: + chokidar "^2.0.4" + babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" dependencies: babel-runtime "^6.22.0" -babel-plugin-dynamic-import-node@^2.0.0: +babel-plugin-dynamic-import-node@^2.0.0, babel-plugin-dynamic-import-node@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" dependencies: @@ -3829,6 +4127,11 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.22. lodash "^4.17.4" to-fast-properties "^1.0.3" +babelify@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" + integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== + babylon@7.0.0-beta.22: version "7.0.0-beta.22" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65" @@ -3873,6 +4176,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +becke-ch--regex--s0-0-v1--base--pl--lib@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz#429ceebbfa5f7e936e78d73fbdc7da7162b20e20" + integrity sha1-Qpzuu/pffpNueNc/vcfacWKyDiA= + before-after-hook@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" @@ -3908,14 +4216,24 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^2.9.33: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" +bluebird@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= -bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: +bluebird@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== + +bluebird@3.5.5, bluebird@^3.1.1, bluebird@^3.4.1, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" +bluebird@^2.9.33: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -3998,13 +4316,26 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-pack@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" + integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.8.0" + defined "^1.0.0" + safe-buffer "^5.1.1" + through2 "^2.0.0" + umd "^3.0.0" + browser-process-hrtime@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" -browser-resolve@^1.11.3: +browser-resolve@^1.11.0, browser-resolve@^1.11.3, browser-resolve@^1.7.0: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" @@ -4055,12 +4386,121 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@^0.2.0: +browserify-zlib@^0.2.0, browserify-zlib@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" +browserify@16.2.2: + version "16.2.2" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.2.tgz#4b1f66ba0e54fa39dbc5aa4be9629142143d91b0" + integrity sha512-fMES05wq1Oukts6ksGUU2TMVHHp06LyQt0SIwbXIHm7waSrQmNBZePsU0iM/4f94zbvb/wHma+D1YrdzWYnF/A== + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "^1.6.0" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "^1.2.0" + duplexer2 "~0.1.2" + events "^2.0.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + mkdirp "^0.5.0" + module-deps "^6.0.0" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "^1.1.1" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "0.0.1" + url "~0.11.0" + util "~0.10.1" + vm-browserify "^1.0.0" + xtend "^4.0.0" + +browserify@^16.1.0: + version "16.2.3" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b" + integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ== + dependencies: + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "^1.6.0" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "^1.2.0" + duplexer2 "~0.1.2" + events "^2.0.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + mkdirp "^0.5.0" + module-deps "^6.0.0" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "^1.1.1" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "0.0.1" + url "~0.11.0" + util "~0.10.1" + vm-browserify "^1.0.0" + xtend "^4.0.0" + browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -4082,9 +4522,10 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.4.2, browserslist@^4.6.0, browserslist@^4.6.1, browserslist@^4.6.2: +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.4.2, browserslist@^4.6.0, browserslist@^4.6.1, browserslist@^4.6.2: version "4.6.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.3.tgz#0530cbc6ab0c1f3fc8c819c72377ba55cf647f05" + integrity sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ== dependencies: caniuse-lite "^1.0.30000975" electron-to-chromium "^1.3.164" @@ -4100,6 +4541,11 @@ btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -4116,6 +4562,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.0.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4201,6 +4655,18 @@ cache-loader@^2.0.1: normalize-path "^3.0.0" schema-utils "^1.0.0" +cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" + integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== + +cachedir@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-1.3.0.tgz#5e01928bf2d95b5edd94b0942188246740e0dbc4" + integrity sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg== + dependencies: + os-homedir "^1.0.1" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -4338,6 +4804,18 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chai@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + 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" @@ -4348,7 +4826,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" dependencies: @@ -4364,6 +4842,16 @@ chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +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= + check-types@^7.3.0: version "7.4.0" resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" @@ -4379,9 +4867,26 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.2, chokidar@^2.1.5: +chokidar@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.5: version "2.1.6" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -4426,6 +4931,16 @@ circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +cjsxify@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/cjsxify/-/cjsxify-0.3.0.tgz#058fb39988df05f69a8ee602c39d7821989a5b44" + integrity sha1-BY+zmYjfBfaajuYCw514IZiaW0Q= + dependencies: + coffee-react-transform "^3.1.0" + coffee-script "^1.9.0" + convert-source-map "^0.4.1" + through "^2.3.6" + clap@^1.0.9: version "1.2.3" resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" @@ -4455,9 +4970,10 @@ cli-boxes@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" -cli-cursor@^1.0.1: +cli-cursor@^1.0.1, 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" @@ -4467,6 +4983,26 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw= + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= + dependencies: + colors "1.0.3" + +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.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -4553,6 +5089,16 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +coffee-react-transform@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/coffee-react-transform/-/coffee-react-transform-3.3.0.tgz#f1f90fa22de8d767fca2793e3b70f0f7d7a2e467" + integrity sha1-8fkPoi3o12f8onk+O3Dw99ei5Gc= + +coffee-script@^1.9.0: + version "1.12.7" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" + integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4610,6 +5156,16 @@ colormin@^1.0.5: css-color-names "0.0.4" has "^1.0.1" +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + +colors@^1.1.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -4621,6 +5177,16 @@ columnify@^1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" +combine-source-map@^0.8.0, combine-source-map@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" + integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -4633,11 +5199,16 @@ command-join@^2.0.0: dependencies: "@improved/node" "^1.0.0" +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" -commander@^2.15.0, commander@^2.18.0, commander@^2.19.0, commander@^2.8.1, commander@~2.20.0: +commander@^2.15.0, commander@^2.18.0, commander@^2.19.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -4655,9 +5226,10 @@ commander@~2.9.0: dependencies: graceful-readlink ">= 1.0.0" -common-tags@^1.7.2: +common-tags@1.8.0, common-tags@^1.7.2: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== commondir@^1.0.1: version "1.0.1" @@ -4696,7 +5268,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@1.6.2, concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0: +concat-stream@1.6.2, concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -4756,9 +5328,10 @@ consolidate@^0.15.1: dependencies: bluebird "^3.1.1" -constants-browserify@^1.0.0: +constants-browserify@^1.0.0, constants-browserify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= contains-path@^0.1.0: version "0.1.0" @@ -5000,12 +5573,22 @@ conventional-recommended-bump@^4.0.4: meow "^4.0.0" q "^1.5.1" +convert-source-map@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.4.1.tgz#f919a0099fe31f80fc5a1d0eb303161b394070c7" + integrity sha1-+RmgCZ/jH4D8Wh0OswMWGzlAcMc= + convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" dependencies: safe-buffer "~5.1.1" +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -5018,6 +5601,11 @@ cookie@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +cookieparser@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cookieparser/-/cookieparser-0.1.0.tgz#ea12cb1085c174f3167faeaf7985f79abe671d0e" + integrity sha1-6hLLEIXBdPMWf66veYX3mr5nHQ4= + cookies@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.7.3.tgz#7912ce21fbf2e8c2da70cf1c3f351aecf59dadfa" @@ -5056,7 +5644,7 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.6.5: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.5.7, core-js@^2.6.5: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" @@ -5076,6 +5664,16 @@ cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: parse-json "^2.2.0" require-from-string "^1.1.0" +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -5160,9 +5758,10 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -crypto-browserify@^3.11.0: +crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -5463,6 +6062,59 @@ csvtojson@^2.0.8: lodash "^4.17.3" strip-bom "^2.0.0" +cucumber-expressions@^5.0.13: + version "5.0.18" + resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-5.0.18.tgz#6c70779efd3aebc5e9e7853938b1110322429596" + integrity sha1-bHB3nv0668Xp54U5OLERAyJClZY= + dependencies: + becke-ch--regex--s0-0-v1--base--pl--lib "^1.2.0" + +cucumber-expressions@^6.0.1: + version "6.6.2" + resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-6.6.2.tgz#d89640eccc72a78380b6c210eae36a64e7462b81" + integrity sha512-WcFSVBiWNLJbIcAAC3t/ACU46vaOKfe1UIF5H3qveoq+Y4XQm9j3YwHurQNufRKBBg8nCnpU7Ttsx7egjS3hwA== + dependencies: + becke-ch--regex--s0-0-v1--base--pl--lib "^1.2.0" + +cucumber-tag-expressions@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz#7f5c7b70009bc2b666591bfe64854578bedee85a" + integrity sha1-f1x7cACbwrZmWRv+ZIVFeL7e6Fo= + +cucumber@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-4.2.1.tgz#64cfff6150bbe6b5e94b173470057353d6206719" + integrity sha512-3gQ0Vv4kSHsvXEFC6b1c+TfLRDzWD1/kU7e5vm8Kh8j35b95k6favan9/4ixcBNqd7UsU1T6FYcawC87+DlNKw== + dependencies: + assertion-error-formatter "^2.0.1" + babel-runtime "^6.11.6" + bluebird "^3.4.1" + cli-table "^0.3.1" + colors "^1.1.2" + commander "^2.9.0" + cucumber-expressions "^5.0.13" + cucumber-tag-expressions "^1.1.1" + duration "^0.2.0" + escape-string-regexp "^1.0.5" + figures "2.0.0" + gherkin "^5.0.0" + glob "^7.0.0" + indent-string "^3.1.0" + is-generator "^1.0.2" + is-stream "^1.1.0" + knuth-shuffle-seeded "^1.0.6" + lodash "^4.17.4" + mz "^2.4.0" + progress "^2.0.0" + resolve "^1.3.3" + serialize-error "^2.1.0" + stack-chain "^2.0.0" + stacktrace-js "^2.0.0" + string-argv "0.0.2" + title-case "^2.1.1" + util-arity "^1.0.2" + verror "^1.9.0" + cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -5477,6 +6129,65 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" +cypress-axe@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cypress-axe/-/cypress-axe-0.4.1.tgz#18ba5844d9d97693ef6ff6d2bb0fd2b32681a5ee" + integrity sha512-qgemqMDbT2fwrANormAuVLn/qzX1ytZ6zUHHLfzsd8NizK6YV0zLvo+oU4k850hj3+AiQ9LSbSitPIPLnvPmPg== + +cypress-cucumber-preprocessor@^1.11.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-1.12.0.tgz#092428ba267331e3d2cc6e1309c331d17632b8b1" + integrity sha512-uKrWbs51hGeHiLgcSZcjFvvVEW9UdStsLVpD1snuPuik9WE61kbZv7xumlPjRmkMF81zTUGnNLwZuAk3CV9dEw== + dependencies: + "@cypress/browserify-preprocessor" "^1.1.2" + chai "^4.1.2" + chokidar "^2.0.4" + cosmiconfig "^4.0.0" + cucumber "^4.2.1" + cucumber-expressions "^6.0.1" + cucumber-tag-expressions "^1.1.1" + debug "^3.0.1" + gherkin "^5.1.0" + glob "^7.1.2" + through "^2.3.8" + +cypress@^3.1.5: + version "3.3.2" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-3.3.2.tgz#105d9283c747884d534b88a8e6c857d977887024" + integrity sha512-d2gFX0KBBdNfMMZ/ud9ouNqjDtMM3Tf5Z50hkl8Ldb8T+jKc7RLFo/4FjMu9i28T2x+50Sx8sN/kLzxr2oeWNg== + dependencies: + "@cypress/listr-verbose-renderer" "0.4.1" + "@cypress/xvfb" "1.2.4" + arch "2.1.1" + bluebird "3.5.0" + cachedir "1.3.0" + chalk "2.4.2" + check-more-types "2.24.0" + commander "2.15.1" + common-tags "1.8.0" + debug "3.2.6" + execa "0.10.0" + executable "4.1.1" + extract-zip "1.6.7" + fs-extra "5.0.0" + getos "3.1.1" + glob "7.1.3" + is-ci "1.2.1" + is-installed-globally "0.1.0" + lazy-ass "1.6.0" + listr "0.12.0" + lodash "4.17.11" + log-symbols "2.2.0" + minimist "1.2.0" + moment "2.24.0" + ramda "0.24.1" + request "2.88.0" + request-progress "0.4.0" + supports-color "5.5.0" + tmp "0.1.0" + url "0.11.0" + yauzl "2.10.0" + d@1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -5490,6 +6201,11 @@ dargs@^4.0.1: dependencies: number-is-nan "^1.0.0" +dash-ast@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" + integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -5504,6 +6220,11 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.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== + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -5528,13 +6249,20 @@ debug@3.1.0, debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.0.1, debug@^3.1.0, debug@^3.2.6: +debug@3.2.6, debug@^3.0.1, debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b" + integrity sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw== + dependencies: + ms "^2.1.1" + +debug@4.1.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" dependencies: @@ -5563,6 +6291,13 @@ dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -5660,6 +6395,16 @@ deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" +deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U= + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" + des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -5706,6 +6451,15 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +detective@^5.0.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" @@ -5717,9 +6471,10 @@ diff-sequences@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" -diff@^3.2.0: +diff@^3.0.0, diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diffie-hellman@^5.0.0: version "5.0.3" @@ -5776,9 +6531,10 @@ dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" -domain-browser@^1.1.1: +domain-browser@^1.1.1, domain-browser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" @@ -5850,11 +6606,18 @@ dotenv@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -duplexer@^0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -5867,6 +6630,14 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +duration@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" + integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== + dependencies: + d "1" + es5-ext "~0.10.46" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -5921,6 +6692,11 @@ electron-to-chromium@^1.3.164: version "1.3.171" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.171.tgz#ca226f0dcc3e02d9762de4d40948b0a116e6ef51" +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= + elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -5998,9 +6774,10 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.0: +error-stack-parser@^2.0.0, error-stack-parser@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" + integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw== dependencies: stackframe "^1.0.4" @@ -6023,7 +6800,7 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.46: version "0.10.50" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" dependencies: @@ -6398,7 +7175,7 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" -esutils@^2.0.2: +esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -6417,6 +7194,19 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +event-stream@=3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter3@^3.0.0, eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" @@ -6456,6 +7246,32 @@ exec-sh@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" +execa@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.11.0.tgz#0b3c71daf9b9159c252a863cd981af1b4410d97a" + integrity sha512-k5AR22vCt1DcfeiRixW46U5tMLtBg44ssdJM9PiXw3D8Bn5qyxFCSnKY/eR22y+ctFDGPqafpaXg2G4Emyua4A== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -6492,6 +7308,13 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.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" + exenv@^1.2.0, exenv@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" @@ -6670,9 +7493,10 @@ extract-from-css@^0.4.4: dependencies: css "^2.1.0" -extract-zip@^1.6.6: +extract-zip@1.6.7, extract-zip@^1.6.6: version "1.6.7" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= dependencies: concat-stream "1.6.2" debug "2.6.9" @@ -6687,6 +7511,11 @@ extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" +faker@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" + integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= + fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" @@ -6752,22 +7581,30 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" +figures@2.0.0, figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 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" +figures@^1.3.5, 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@^3.0.0: version "3.0.0" @@ -7015,6 +7852,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + front-matter@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb" @@ -7025,6 +7867,24 @@ fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" +fs-extra@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" + integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" @@ -7068,7 +7928,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.2.3, fsevents@^1.2.7: +fsevents@^1.0.0, fsevents@^1.2.3, fsevents@^1.2.7: version "1.2.9" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" dependencies: @@ -7139,10 +7999,20 @@ genfun@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" +get-assigned-identifiers@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" + integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -7192,12 +8062,24 @@ get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" +getos@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.1.tgz#967a813cceafee0156b0483f7cffa5b3eff029c5" + integrity sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg== + dependencies: + async "2.6.1" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" dependencies: assert-plus "^1.0.0" +gherkin@^5.0.0, gherkin@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-5.1.0.tgz#684bbb03add24eaf7bdf544f58033eb28fb3c6d5" + integrity sha1-aEu7A63STq9731RPWAM+so+zxtU= + git-raw-commits@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" @@ -7361,7 +8243,19 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" dependencies: @@ -7383,6 +8277,13 @@ glob@~7.0.3: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -7655,6 +8556,16 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoek@5.x.x: + version "5.0.4" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.4.tgz#0f7fa270a1cafeb364a4b2ddfaa33f864e4157da" + integrity sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w== + +hoek@6.x.x: + version "6.1.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c" + integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ== + hoist-non-react-statics@1.x.x, hoist-non-react-statics@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" @@ -7771,6 +8682,11 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= + htmlparser2@^3.3.0, htmlparser2@^3.8.3, htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" @@ -7952,7 +8868,7 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: +indent-string@^3.0.0, indent-string@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -7996,6 +8912,13 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" +inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" + integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= + dependencies: + source-map "~0.5.3" + inline-style-prefixer@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz#c153c7e88fd84fef5c602e95a8168b2770671fe7" @@ -8069,6 +8992,22 @@ insert-css@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" +insert-module-globals@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" + integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== + dependencies: + JSONStream "^1.0.3" + acorn-node "^1.5.2" + combine-source-map "^0.8.0" + concat-stream "^1.6.1" + is-buffer "^1.1.0" + path-is-absolute "^1.0.1" + process "~0.11.0" + through2 "^2.0.0" + undeclared-identifiers "^1.1.2" + xtend "^4.0.0" + interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -8132,7 +9071,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.0.2, is-buffer@^1.1.5: +is-buffer@^1.0.2, is-buffer@^1.1.0, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -8144,7 +9083,7 @@ is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" -is-ci@^1.0.10: +is-ci@1.2.1, is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" dependencies: @@ -8269,6 +9208,11 @@ is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" +is-generator@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" + integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= + is-glob@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-1.1.3.tgz#b4c64b8303d39114492a460d364ccfb0d3c0a045" @@ -8291,6 +9235,14 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-installed-globally@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + is-my-ip-valid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" @@ -8325,6 +9277,13 @@ is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + is-plain-obj@^1.0.0, is-plain-obj@^1.1, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -8463,6 +9422,13 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isemail@3.x.x: + version "3.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" + integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== + dependencies: + punycode "2.x.x" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -9235,6 +10201,15 @@ jest@^24.4.0: import-local "^2.0.0" jest-cli "^24.8.0" +joi@^13.0.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-13.7.0.tgz#cfd85ebfe67e8a1900432400b4d03bbd93fb879f" + integrity sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q== + dependencies: + hoek "5.x.x" + isemail "3.x.x" + topo "3.x.x" + js-base64@^2.1.8, js-base64@^2.1.9: version "2.5.1" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" @@ -9265,7 +10240,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" -js-yaml@^3.13.1, js-yaml@^3.4.3, js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.7.0, js-yaml@^3.9.1: +js-yaml@^3.13.1, js-yaml@^3.4.3, js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" dependencies: @@ -9363,6 +10338,13 @@ json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= + dependencies: + jsonify "~0.0.0" + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -9478,6 +10460,21 @@ known-css-properties@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" +knuth-shuffle-seeded@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz#01f1b65733aa7540ee08d8b0174164d22081e4e1" + integrity sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE= + dependencies: + seed-random "~2.2.0" + +labeled-stream-splicer@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" + integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== + dependencies: + inherits "^2.0.1" + stream-splicer "^2.0.0" + last-call-webpack-plugin@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" @@ -9498,6 +10495,11 @@ launch-editor@^2.2.1: chalk "^2.3.0" shell-quote "^1.6.1" +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.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.1.0.tgz#d6cd450251d415b70103765f63130a0049a03795" @@ -9611,6 +10613,57 @@ linkify-it@^2.0.0: dependencies: uc.micro "^1.0.1" +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.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9" + integrity sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk= + 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 "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU= + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a" + integrity sha1-a84sD1YD+klYDqF81qAMwOX6RRo= + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.2.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.0.0-beta.11" + stream-to-observable "^0.1.0" + strip-ansi "^3.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -9787,6 +10840,11 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= + lodash.merge@^4.6.1: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" @@ -9795,6 +10853,11 @@ lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" +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.pick@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" @@ -9844,10 +10907,32 @@ lodash.uniqueid@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz#3268f26a7c88e4f4b1758d679271814e31fa5b26" -lodash@4.x, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10: +lodash@4.17.11, lodash@4.x, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" +log-symbols@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +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-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -9951,6 +11036,11 @@ map-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -10157,9 +11247,10 @@ micromatch@3.1.0: snapdragon "^0.8.1" to-regex "^3.0.1" -micromatch@^2.3.11, micromatch@^2.3.7: +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= dependencies: arr-diff "^2.0.0" array-unique "^0.2.1" @@ -10283,14 +11374,14 @@ minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" +minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -10366,15 +11457,37 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" +module-deps@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.1.tgz#cfe558784060e926824f474b4e647287837cda50" + integrity sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A== + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.2" + concat-stream "~1.6.0" + defined "^1.0.0" + detective "^5.0.2" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.4.0" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + moment-timezone@0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.21.tgz#3cba247d84492174dbf71de2a9848fa13207b845" dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.21.0, moment@^2.22.1, moment@^2.6.0: +moment@2.24.0, "moment@>= 2.9.0", moment@^2.21.0, moment@^2.22.1, moment@^2.6.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== move-concurrently@^1.0.1: version "1.0.1" @@ -10424,6 +11537,15 @@ mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1, nan@^2.13.2: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -10491,6 +11613,11 @@ node-emoji@1.8.1: dependencies: lodash.toarray "^4.4.0" +node-eta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.1.1.tgz#4066109b39371c761c72b7ebda9a9ea0a5de121f" + integrity sha1-QGYQmzk3HHYccrfr2pqeoKXeEh8= + node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" @@ -10662,7 +11789,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -10962,15 +12089,26 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q= + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + original@>=0.0.5: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" dependencies: url-parse "^1.4.3" -os-browserify@^0.3.0: +os-browserify@^0.3.0, os-browserify@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" @@ -11024,6 +12162,13 @@ outlayer@^2.1.0: fizzy-ui-utils "^2.0.0" get-size "^2.0.2" +outpipe@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" + integrity sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I= + dependencies: + shell-quote "^1.4.2" + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -11072,7 +12217,7 @@ p-map-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-map@^1.2.0: +p-map@^1.1.1, p-map@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" @@ -11113,6 +12258,13 @@ package-json@^4.0.1: registry-url "^3.0.3" semver "^5.1.0" +pad-right@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" + integrity sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q= + dependencies: + repeat-string "^1.5.2" + pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -11131,6 +12283,13 @@ param-case@2.1.x, param-case@^2.1.1: dependencies: no-case "^2.2.0" +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= + dependencies: + path-platform "~0.11.15" + parse-asn1@^5.0.0: version "5.1.4" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" @@ -11221,9 +12380,10 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" -path-browserify@0.0.1: +path-browserify@0.0.1, path-browserify@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" @@ -11255,6 +12415,11 @@ path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -11279,6 +12444,18 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + pbf@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.1.0.tgz#f70004badcb281761eabb1e76c92f179f08189e9" @@ -11304,7 +12481,7 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -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" @@ -12338,9 +13515,10 @@ process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" -process@^0.11.10: +process@^0.11.10, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= progress@^1.1.8: version "1.1.8" @@ -12444,6 +13622,13 @@ prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" +ps-tree@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" + integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== + dependencies: + event-stream "=3.3.4" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -12489,13 +13674,27 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@^1.2.4, punycode@^1.4.1: +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +puppeteer@^1.13.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.18.1.tgz#4a66f3bdab01115ededf70443ec904c99917a815" + integrity sha512-luUy0HPSuWPsPZ1wAp6NinE0zgetWtudf5zwZ6dHjMWfYpTQcmKveFRox7VBNhQ98OjNA9PQ9PzQyX8k/KrxTg== + dependencies: + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^2.2.1" + mime "^2.0.3" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" puppeteer@^1.2.0: version "1.17.0" @@ -12529,9 +13728,10 @@ query-string@^4.1.0, query-string@^4.3.2: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring-es3@^0.2.0: +querystring-es3@^0.2.0, querystring-es3@~0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0, querystring@^0.2.0: version "0.2.0" @@ -12558,6 +13758,11 @@ radium@^0.19.0: inline-style-prefixer "^2.0.5" prop-types "^15.5.8" +ramda@0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" + integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc= + randomatic@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" @@ -12784,6 +13989,13 @@ read-cmd-shim@^1.0.1: dependencies: graceful-fs "^4.1.2" +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" + integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= + dependencies: + readable-stream "^2.0.2" + "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" @@ -12892,7 +14104,7 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.2.1: +readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" dependencies: @@ -12986,9 +14198,10 @@ regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" -regenerator-runtime@^0.12.1: +regenerator-runtime@^0.12.0, regenerator-runtime@^0.12.1: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== regenerator-runtime@^0.13.2: version "0.13.2" @@ -13133,6 +14346,14 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +request-progress@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.4.0.tgz#c1954e39086aa85269c5660bcee0142a6a70d7e7" + integrity sha1-wZVOOQhqqFJpxWYLzuAUKmpw1+c= + dependencies: + node-eta "^0.1.1" + throttleit "^0.0.2" + request-promise-core@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" @@ -13147,7 +14368,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@2.88.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" dependencies: @@ -13180,6 +14401,11 @@ require-from-string@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -13245,15 +14471,15 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" +resolve@^1.1.4, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" dependencies: path-parse "^1.0.6" -resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" dependencies: path-parse "^1.0.6" @@ -13355,6 +14581,18 @@ rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= + +rxjs@^5.0.0-beta.11: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" @@ -13494,6 +14732,11 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" +seed-random@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" + integrity sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ= + select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" @@ -13532,6 +14775,11 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= + serialize-javascript@^1.3.0, serialize-javascript@^1.4.0, serialize-javascript@^1.6.1, serialize-javascript@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" @@ -13602,7 +14850,7 @@ setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" -sha.js@^2.4.0, sha.js@^2.4.8: +sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" dependencies: @@ -13627,6 +14875,14 @@ shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -13637,9 +14893,10 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@1.6.1, shell-quote@^1.6.1: +shell-quote@1.6.1, shell-quote@^1.4.2, shell-quote@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= dependencies: array-filter "~0.0.0" array-map "~0.0.0" @@ -13674,6 +14931,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -13819,7 +15081,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -13861,6 +15123,13 @@ split2@^2.0.0: dependencies: through2 "^2.0.2" +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + dependencies: + through "2" + split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" @@ -13901,6 +15170,18 @@ stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" +stack-chain@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-2.0.0.tgz#d73d1172af89565f07438b5bcc086831b6689b2d" + integrity sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg== + +stack-generator@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.3.tgz#bb74385c67ffc4ccf3c4dee5831832d4e509c8a0" + integrity sha512-kdzGoqrnqsMxOEuXsXyQTmvWXZmG0f3Ql2GDx5NtmZs59sT2Bt9Vdyq0XdtxUi58q/+nxtbF9KOQ9HkV1QznGg== + dependencies: + stackframe "^1.0.4" + stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -13913,6 +15194,36 @@ stackframe@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" +stacktrace-gps@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz#33f8baa4467323ab2bd1816efa279942ba431ccc" + integrity sha512-9o+nWhiz5wFnrB3hBHs2PTyYrS60M1vvpSzHxwxnIbtY2q9Nt51hZvhrG1+2AxD374ecwyS+IUwfkHRE/2zuGg== + dependencies: + source-map "0.5.6" + stackframe "^1.0.4" + +stacktrace-js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.0.tgz#776ca646a95bc6c6b2b90776536a7fc72c6ddb58" + integrity sha1-d2ymRqlbxsayuQd2U2p/xyxt21g= + dependencies: + error-stack-parser "^2.0.1" + stack-generator "^2.0.1" + stacktrace-gps "^3.0.1" + +start-server-and-test@^1.7.11: + version "1.9.1" + resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-1.9.1.tgz#401fcf869c2a10b7d224a6ef2cfc38e2a69954a2" + integrity sha512-vRtUxxW34Li+EvemuWtgASyR2KBE+DPoEJ/l5REe+cKxm31jadGm1PSDVBronqQVsvhncRGm4iZc53pFH+FNEA== + dependencies: + bluebird "3.5.5" + check-more-types "2.24.0" + debug "4.1.1" + execa "0.11.0" + lazy-ass "1.6.0" + ps-tree "1.2.0" + wait-on "3.2.0" + starts-with@^1.0.0, starts-with@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/starts-with/-/starts-with-1.0.2.tgz#16793a729d89d4cf3d4fb2eda2f908ae357f196f" @@ -13965,13 +15276,29 @@ storybook-readme@4.0.2: prismjs "^1.9.0" string-raw "^1.0.1" -stream-browserify@^2.0.1: +stream-browserify@^2.0.0, stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -13979,9 +15306,10 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.7.2: +stream-http@^2.0.0, stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -13993,10 +15321,28 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +stream-splicer@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" + integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.2" + +stream-to-observable@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" + integrity sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4= + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" +string-argv@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= + string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -14162,6 +15508,19 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= + dependencies: + minimist "^1.1.0" + +supports-color@5.5.0, supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -14178,12 +15537,6 @@ supports-color@^4.2.1: dependencies: has-flag "^2.0.0" -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - dependencies: - has-flag "^3.0.0" - supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" @@ -14275,6 +15628,11 @@ svgo@^1.0.0, svgo@^1.0.5: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + symbol-observable@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -14289,6 +15647,13 @@ symbol.prototype.description@^1.0.0: dependencies: has-symbols "^1.0.0" +syntax-error@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" + integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== + dependencies: + acorn-node "^1.2.0" + table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -14421,6 +15786,20 @@ text-table@0.2.0, text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + thread-loader@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-1.2.0.tgz#35dedb23cf294afbbce6c45c1339b950ed17e7a4" @@ -14433,6 +15812,11 @@ throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" +throttleit@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" + integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8= + through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -14446,7 +15830,7 @@ through2@^3.0.0: dependencies: readable-stream "2 || 3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.1, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -14462,6 +15846,13 @@ timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= + dependencies: + process "~0.11.0" + timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" @@ -14480,6 +15871,21 @@ tinycolor2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" +title-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -14528,6 +15934,13 @@ toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" +topo@3.x.x: + version "3.0.3" + resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.3.tgz#d5a67fb2e69307ebeeb08402ec2a2a6f5f7ad95c" + integrity sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ== + dependencies: + hoek "6.x.x" + toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" @@ -14599,6 +16012,11 @@ tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -14623,6 +16041,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -14717,10 +16140,26 @@ umask@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" +umd@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" + integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== + unc-path-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" +undeclared-identifiers@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" + integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== + dependencies: + acorn-node "^1.3.0" + dash-ast "^1.0.0" + get-assigned-identifiers "^1.2.0" + simple-concat "^1.0.0" + xtend "^4.0.1" + underscore@: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" @@ -14814,9 +16253,10 @@ upath@^1.1.1, upath@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" -upper-case@^1.1.1: +upper-case@^1.0.3, upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: version "4.2.2" @@ -14867,9 +16307,10 @@ url-template@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" -url@^0.11.0: +url@0.11.0, url@^0.11.0, url@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" @@ -14884,6 +16325,11 @@ user-home@^2.0.0: dependencies: os-homedir "^1.0.0" +util-arity@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" + integrity sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA= + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -14901,9 +16347,10 @@ util@0.10.3: dependencies: inherits "2.0.1" -util@^0.10.3: +util@^0.10.3, util@~0.10.1: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" @@ -14963,7 +16410,7 @@ vendors@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" -verror@1.10.0: +verror@1.10.0, verror@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" dependencies: @@ -14971,9 +16418,10 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@^1.0.1: +vm-browserify@^1.0.0, vm-browserify@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== vue-carousel@^0.18.0: version "0.18.0" @@ -15164,6 +16612,17 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +wait-on@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.2.0.tgz#c83924df0fc42a675c678324c49c769d378bcb85" + integrity sha512-QUGNKlKLDyY6W/qHdxaRlXUAgLPe+3mLL/tRByHpRNcHs/c7dZXbu+OnJWGNux6tU1WFh/Z8aEwvbuzSAu79Zg== + dependencies: + core-js "^2.5.7" + joi "^13.0.0" + minimist "^1.2.0" + request "^2.88.0" + rx "^4.1.0" + walk@2.3.x: version "2.3.14" resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.14.tgz#60ec8631cfd23276ae1e7363ce11d626452e1ef3" @@ -15189,6 +16648,19 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" +watchify@3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.0.tgz#03f1355c643955e7ab8dcbf399f624644221330f" + integrity sha512-7jWG0c3cKKm2hKScnSAMUEUjRJKXUShwMPk0ASVhICycQhwND3IMAdhJYmc1mxxKzBUJTSF5HZizfrKrS6BzkA== + dependencies: + anymatch "^1.3.0" + browserify "^16.1.0" + chokidar "^1.0.0" + defined "^1.0.0" + outpipe "^1.1.0" + through2 "^2.0.0" + xtend "^4.0.0" + watchpack@^1.4.0, watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" @@ -15521,7 +16993,7 @@ xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -15657,6 +17129,14 @@ yargs@~3.10.0: decamelize "^1.0.0" window-size "0.1.0" +yauzl@2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yauzl@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"