Merge branch 'master' into develop

This commit is contained in:
ElevateBart
2021-06-01 10:45:00 -05:00
62 changed files with 790 additions and 9514 deletions

View File

@@ -1327,7 +1327,7 @@ jobs:
npm-vue:
<<: *defaults
resource_class: medium
parallelism: 4
parallelism: 3
steps:
- restore_cached_workspace
- run:

View File

@@ -1,3 +1,10 @@
# [@cypress/react-v5.9.0](https://github.com/cypress-io/cypress/compare/@cypress/react-v5.8.1...@cypress/react-v5.9.0) (2021-05-31)
### Features
* react-scripts. allow parametrise webpack config path ([#16644](https://github.com/cypress-io/cypress/issues/16644)) ([c618d30](https://github.com/cypress-io/cypress/commit/c618d30f3df99394df5c0b81ea3817caf0a7eaf4))
# [@cypress/react-v5.8.1](https://github.com/cypress-io/cypress/compare/@cypress/react-v5.8.0...@cypress/react-v5.8.1) (2021-05-26)

View File

@@ -1,3 +1,97 @@
# [@cypress/vite-dev-server-v2.0.0](https://github.com/cypress-io/cypress/compare/@cypress/vite-dev-server-v1.2.7...@cypress/vite-dev-server-v2.0.0) (2021-05-31)
### Continuous Integration
* deliver vue3 on master ([#16728](https://github.com/cypress-io/cypress/issues/16728)) ([0ee001f](https://github.com/cypress-io/cypress/commit/0ee001f6250604711653caf5365d8aca063a9cad)), closes [#15100](https://github.com/cypress-io/cypress/issues/15100)
### BREAKING CHANGES
* no support for vue 2 anymore
* build: disable auto deliver of next vue
* Revert "feat(vue): vue 3 support in @cypress/vue"
This reverts commit 8f55d7baaff1f240677239ae5fdc4180c4a06475.
* Revert "build: disable auto deliver of next vue"
This reverts commit ed46c9e5c551e57901dbdc75db2e83bf194c4b18.
* chore: release @cypress/vue-v1.1.0-alpha.1
[skip ci]
* dropped support for vue 2 in favor of vue 3
* test: remove filter tests not relevant in vue 3
* build: try publishing as a private new major
* chore: release @cypress/vue-v3.0.0-alpha.1
[skip ci]
* chore: bring back access public
* fix: update dependency to webpack dev server
* chore: release @cypress/vue-v3.0.0-alpha.2
[skip ci]
* chore: remove unnecessary dependency
* fix: mistreatment of monorepo dependency
* chore: release @cypress/vue-v3.0.0-alpha.3
[skip ci]
* chore: release @cypress/vue-v3.0.0-alpha.4
[skip ci]
* fix: use __cy_root at the root element
* build: avoid using array spread (tslib imports issue)
* fix: setup for cypress vue tests
* fix: add cleanup event
* test: make sure we use the right build of compiler
* chore: downgrade VTU to rc-1
* chore: release @cypress/vue-v3.0.0
[skip ci]
* chore: upgrade vue version to 3.0.11
* fix: adjust optional peer deps
* fix: allow fo any VTU 2 version using ^
* test: ignore nuxt example
* test: update yarn lock on vue cli
* chore: release @cypress/vue-v3.0.1
[skip ci]
* ci: release vue@next on master
* test: fix vue3 examples
* ci: open only needed server in circle npm-vue
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
# [@cypress/vite-dev-server-v1.2.7](https://github.com/cypress-io/cypress/compare/@cypress/vite-dev-server-v1.2.6...@cypress/vite-dev-server-v1.2.7) (2021-05-11)

View File

@@ -17,7 +17,7 @@
},
"devDependencies": {
"@cypress/react": "0.0.0-development",
"@cypress/vue": "3.0.1",
"@cypress/vue": "0.0.0-development",
"@testing-library/cypress": "7.0.4",
"@vitejs/plugin-vue": "1.2.0",
"@vue/compiler-sfc": "3.0.9",

View File

@@ -1,7 +1,7 @@
module.exports = {
...require('../../.releaserc.base'),
branches: [
{ name: 'master' },
{ name: 'next/npm/vue', channel: 'next', prerelease: 'alpha' },
{ name: 'next/npm/vue2' },
{ name: 'master', channel: 'next', prerelease: 'beta' },
],
}

View File

@@ -1,22 +1,185 @@
# [@cypress/vue-v2.2.3](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.2.2...@cypress/vue-v2.2.3) (2021-05-11)
# [@cypress/vue-v3.0.0-beta.1](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.2.3...@cypress/vue-v3.0.0-beta.1) (2021-05-31)
### Continuous Integration
* deliver vue3 on master ([#16728](https://github.com/cypress-io/cypress/issues/16728)) ([0ee001f](https://github.com/cypress-io/cypress/commit/0ee001f6250604711653caf5365d8aca063a9cad)), closes [#15100](https://github.com/cypress-io/cypress/issues/15100)
### BREAKING CHANGES
* no support for vue 2 anymore
* build: disable auto deliver of next vue
* Revert "feat(vue): vue 3 support in @cypress/vue"
This reverts commit 8f55d7baaff1f240677239ae5fdc4180c4a06475.
* Revert "build: disable auto deliver of next vue"
This reverts commit ed46c9e5c551e57901dbdc75db2e83bf194c4b18.
* chore: release @cypress/vue-v1.1.0-alpha.1
[skip ci]
* dropped support for vue 2 in favor of vue 3
* test: remove filter tests not relevant in vue 3
* build: try publishing as a private new major
* chore: release @cypress/vue-v3.0.0-alpha.1
[skip ci]
* chore: bring back access public
* fix: update dependency to webpack dev server
* chore: release @cypress/vue-v3.0.0-alpha.2
[skip ci]
* chore: remove unnecessary dependency
* fix: mistreatment of monorepo dependency
* chore: release @cypress/vue-v3.0.0-alpha.3
[skip ci]
* chore: release @cypress/vue-v3.0.0-alpha.4
[skip ci]
* fix: use __cy_root at the root element
* build: avoid using array spread (tslib imports issue)
* fix: setup for cypress vue tests
* fix: add cleanup event
* test: make sure we use the right build of compiler
* chore: downgrade VTU to rc-1
* chore: release @cypress/vue-v3.0.0
[skip ci]
* chore: upgrade vue version to 3.0.11
* fix: adjust optional peer deps
* fix: allow fo any VTU 2 version using ^
* test: ignore nuxt example
* test: update yarn lock on vue cli
* chore: release @cypress/vue-v3.0.1
[skip ci]
* ci: release vue@next on master
* test: fix vue3 examples
* ci: open only needed server in circle npm-vue
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
# [@cypress/vue-v3.0.1](https://github.com/cypress-io/cypress/compare/@cypress/vue-v3.0.0...@cypress/vue-v3.0.1) (2021-04-08)
### Bug Fixes
* adjust optional peer deps ([735d61d](https://github.com/cypress-io/cypress/commit/735d61d15a34c04729bff692861faad2dc1b6a35))
* allow fo any VTU 2 version using ^ ([a1da052](https://github.com/cypress-io/cypress/commit/a1da0520651eaa1d83db96fe9d692b28ad2fc727))
# [@cypress/vue-v3.0.0](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.2.0...@cypress/vue-v3.0.0) (2021-04-07)
### Bug Fixes
* add cleanup event ([cf51935](https://github.com/cypress-io/cypress/commit/cf51935bf5a49594b012e9a6bd9cabe983fbe500))
* mistreatment of monorepo dependency ([a21afb2](https://github.com/cypress-io/cypress/commit/a21afb2f2204debd191586bcb250bb64ecbdfd25))
* setup for cypress vue tests ([c27dc77](https://github.com/cypress-io/cypress/commit/c27dc77ecdb9b33c68737db690432e0418181286))
* update dependency to webpack dev server ([717ea3a](https://github.com/cypress-io/cypress/commit/717ea3a628c26743a9fe8868e01291ad6b8c0977))
* use __cy_root at the root element ([9cf102a](https://github.com/cypress-io/cypress/commit/9cf102ad6248a90a91ca766e2ff9267db0f208fa))
### Features
* vue3 support for @cypress/vue ([#15100](https://github.com/cypress-io/cypress/issues/15100)) ([71e85a0](https://github.com/cypress-io/cypress/commit/71e85a03682d577344e705548b5350ec84c29382))
### Reverts
* Revert "feat(vue): vue 3 support in @cypress/vue" ([53fc995](https://github.com/cypress-io/cypress/commit/53fc9958d111a8e60c6dcd873c9d89666c86dfc8))
### BREAKING CHANGES
* dropped support for vue 2 in favor of vue 3
* test: remove filter tests not relevant in vue 3
# [@cypress/vue-v3.0.0-alpha.4](https://github.com/cypress-io/cypress/compare/@cypress/vue-v3.0.0-alpha.3...@cypress/vue-v3.0.0-alpha.4) (2021-03-10)
### Bug Fixes
* **component-testing:** video recording for single browser session mode ([#15328](https://github.com/cypress-io/cypress/issues/15328)) ([cce08d2](https://github.com/cypress-io/cypress/commit/cce08d23b781b219635d43419e5b6177927e1ba5))
# [@cypress/vue-v3.0.0-alpha.3](https://github.com/cypress-io/cypress/compare/@cypress/vue-v3.0.0-alpha.2...@cypress/vue-v3.0.0-alpha.3) (2021-02-24)
### Bug Fixes
* mistreatment of monorepo dependency ([a21afb2](https://github.com/cypress-io/cypress/commit/a21afb2f2204debd191586bcb250bb64ecbdfd25))
# [@cypress/vue-v3.0.0-alpha.2](https://github.com/cypress-io/cypress/compare/@cypress/vue-v3.0.0-alpha.1...@cypress/vue-v3.0.0-alpha.2) (2021-02-24)
### Bug Fixes
* make webpack-dev-server a peer dependency ([#15163](https://github.com/cypress-io/cypress/issues/15163)) ([fa969fb](https://github.com/cypress-io/cypress/commit/fa969fba78d86494b5d920f573768677301fad13))
* update dependency to webpack dev server ([717ea3a](https://github.com/cypress-io/cypress/commit/717ea3a628c26743a9fe8868e01291ad6b8c0977))
# [@cypress/vue-v3.0.0-alpha.1](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.0.1...@cypress/vue-v3.0.0-alpha.1) (2021-02-18)
### Features
* vue3 support for @cypress/vue ([#15100](https://github.com/cypress-io/cypress/issues/15100)) ([71e85a0](https://github.com/cypress-io/cypress/commit/71e85a03682d577344e705548b5350ec84c29382))
### Reverts
* Revert "feat(vue): vue 3 support in @cypress/vue" ([53fc995](https://github.com/cypress-io/cypress/commit/53fc9958d111a8e60c6dcd873c9d89666c86dfc8))
### BREAKING CHANGES
* dropped support for vue 2 in favor of vue 3
* test: remove filter tests not relevant in vue 3
# [@cypress/vue-v2.2.3](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.2.2...@cypress/vue-v2.2.3) (2021-05-11)
### Bug Fixes
* accept webapck 4 & 5 as peer dependencies of @cypress/vue and @cypress/react ([#16290](https://github.com/cypress-io/cypress/issues/16290)) ([c4151fb](https://github.com/cypress-io/cypress/commit/c4151fbd9f3c10de28e3e8dd3a75d0e0973b52e2))
# [@cypress/vue-v2.2.2](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.2.1...@cypress/vue-v2.2.2) (2021-05-05)
### Bug Fixes
* accept webapck 4 & 5 as peer dependencies of @cypress/vue and @cypress/react ([#16290](https://github.com/cypress-io/cypress/issues/16290)) ([500cab9](https://github.com/cypress-io/cypress/commit/500cab95ef7a7d6b74b366ba8066bcf73f2955aa))
# [@cypress/vue-v2.2.1](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.2.0...@cypress/vue-v2.2.1) (2021-04-21)
### Bug Fixes
* improve handling of userland injected styles in component testing ([#16024](https://github.com/cypress-io/cypress/issues/16024)) ([fe0b63c](https://github.com/cypress-io/cypress/commit/fe0b63c299947470c9cdce3a0d00364a1e224bdb))
# [@cypress/vue-v2.2.0](https://github.com/cypress-io/cypress/compare/@cypress/vue-v2.1.1...@cypress/vue-v2.2.0) (2021-04-05)

View File

@@ -15,11 +15,6 @@ describe('Message', () => {
cy.wrap(Cypress).its('vue.message').should('equal', 'hey')
})
it('has no cat property', () => {
createCmp({ cat: 'hey', message: 'hey' })
cy.wrap(Cypress).its('vue').should('not.have.property', 'cat')
})
it('Paco is the default author', () => {
createCmp({ message: 'hey' })
cy.wrap(Cypress).its('vue.author').should('equal', 'Paco')
@@ -65,14 +60,10 @@ describe('Message', () => {
it('triggers a message-clicked event clicked', () => {
createCmp({ message: 'Cat' }).then(() => {
const stub = cy.spy()
Cypress.vue.$on('message-clicked', stub)
cy.get('.message')
.click()
.then(() => {
expect(stub).to.be.calledOnce
expect(stub).to.be.calledWith('Cat')
expect(Cypress.vueWrapper.emitted()).to.have.property('message-clicked')
})
})
})

View File

@@ -1,8 +1,7 @@
/// <reference types="cypress" />
import Vue from 'vue'
import TranslatedMessageWithJSON from './TranslatedJSONMessage.vue'
import TranslatedMessageI18nBlock from './TranslatedI18nMessage.vue'
import VueI18n from 'vue-i18n'
import { createI18n } from 'vue-i18n'
import { mount } from '@cypress/vue'
import messages from './translations.json'
@@ -22,13 +21,11 @@ function expectHelloWorldGreeting () {
}
describe('VueI18n', () => {
Vue.use(VueI18n)
describe('with i18n block', () => {
beforeEach(() => {
const i18n = new VueI18n({ locale: 'en' })
const i18n = createI18n({ locale: 'en' })
mount(TranslatedMessageI18nBlock, { i18n })
mount(TranslatedMessageI18nBlock, { global: { plugins: [i18n] } })
})
it('shows HelloWorld for all locales', expectHelloWorldGreeting)
@@ -36,9 +33,9 @@ describe('VueI18n', () => {
describe('with messages argument', () => {
beforeEach(() => {
const i18n = new VueI18n({ locale: 'en', messages })
const i18n = createI18n({ locale: 'en', messages })
mount(TranslatedMessageWithJSON, { i18n })
mount(TranslatedMessageWithJSON, { global: { plugins: [i18n] } })
})
it('shows HelloWorld for all locales', expectHelloWorldGreeting)

View File

@@ -1,5 +1,6 @@
/// <reference types="cypress" />
import { mount } from '@cypress/vue'
import { h as createElement } from 'vue'
describe('Single render function component', () => {
// the component definition
@@ -118,18 +119,19 @@ describe('Component with slot', () => {
describe('Component with arguments', () => {
// the component definition
const appComponent = {
render (createElement) {
render () {
let a = this.elementtype.split(',')
return createElement(
a[0],
{
attrs: {
id: a[3],
style: `color:${a[1]};font-size:${a[2]};`,
id: a[3],
style: {
color: a[1],
'font-size': `${a[2]}pt`,
},
},
this.$slots.default || '<EMPTY>',
this.$slots.default ? this.$slots.default() : '<EMPTY>',
)
},
props: {
@@ -144,7 +146,7 @@ describe('Component with arguments', () => {
// we want to use custom app component above
extensions: {
components: {
'app-component': appComponent,
appComponent,
},
},
}
@@ -168,13 +170,13 @@ describe('Component with arguments', () => {
cy.contains('h3', 'Hello Peter').should(
'have.attr',
'style',
'color:red;font-size:30;',
'color: red; font-size: 30pt;',
)
cy.contains('p', 'Hello John').should(
'have.attr',
'style',
'color:green;font-size:30;',
'color: green; font-size: 30pt;',
)
})
@@ -189,7 +191,7 @@ describe('Component with arguments', () => {
cy.contains('<EMPTY>').should(
'have.attr',
'style',
'color:red;font-size:30;',
'color: red; font-size: 30pt;',
)
})
})

View File

@@ -1,13 +0,0 @@
# filters
You can register global Vue filters when mounting the component. See [spec.js](spec.js)
```js
mount(component, {
extensions: {
filters: { ... }
}
})
```
Read [Vue global filters docs](https://vuejs.org/v2/api/#Vue-filter)

View File

@@ -1,6 +0,0 @@
/**
* Reverses a string
* @param {string} s String to reverse
* @returns {string} Reversed string
*/
export const reverse = (s) => s.split('').reverse().join('')

View File

@@ -1,35 +0,0 @@
/// <reference types="cypress" />
import { mountCallback } from '@cypress/vue'
import { reverse } from './reverse'
describe('Global filters', () => {
const filters = {
reverse,
}
// use reverse filter in template
const template = `
<div>{{ "foo-bar" | reverse }}</div>
`
// extend Vue with global filters
const extensions = {
filters,
}
beforeEach(mountCallback({ template }, { extensions }))
it('registers global filter', () => {
cy.wrap(window.Vue)
.invoke('filter', 'reverse')
.should('equal', filters.reverse)
})
it('tests the reverse function', () => {
expect(reverse('Hello')).to.equal('olleH')
})
it('reverses the string', () => {
cy.contains('rab-oof')
})
})

View File

@@ -23,8 +23,4 @@ describe('Mount component', () => {
it('shows hello', () => {
cy.contains('Hello Vue!')
})
it('has version', () => {
cy.window().its('Vue.version').should('be.a', 'string')
})
})

View File

@@ -1,9 +1,9 @@
// https://vuejs.org/v2/guide/plugins.html
// https://alligator.io/vuejs/creating-custom-plugins/
export const MyPlugin = {
install (Vue) {
install (app) {
// 1. add global method or property
Vue.aPluginMethod = function () {
app.config.globalProperties.aPluginMethod = function () {
return 'foo'
}
},

View File

@@ -1,13 +1,13 @@
// https://vuejs.org/v2/guide/plugins.html
// https://alligator.io/vuejs/creating-custom-plugins/
export const MyPluginWithOptions = {
install (Vue, options) {
install (app, options) {
if (!options) {
throw new Error('MyPlugin is missing options!')
}
// this method uses options argument
Vue.anotherPluginMethod = function () {
app.config.globalProperties.anotherPluginMethod = function () {
return options.label
}
},

View File

@@ -16,7 +16,7 @@ describe('Single component mount', () => {
mount(EmptyComponent, { extensions })
cy.window().its('Vue').invoke('aPluginMethod').should('equal', 'foo')
cy.wrap(Cypress).its('vue').invoke('aPluginMethod').should('equal', 'foo')
})
})
@@ -32,11 +32,11 @@ describe('Custom plugin MyPlugin', () => {
beforeEach(mountCallback(EmptyComponent, { extensions }))
it('registers global method on Vue instance', () => {
cy.window().its('Vue').its('aPluginMethod').should('be.a', 'function')
cy.wrap(Cypress).its('vue').its('aPluginMethod').should('be.a', 'function')
})
it('can call this global function', () => {
cy.window().its('Vue').invoke('aPluginMethod').should('equal', 'foo')
cy.wrap(Cypress).its('vue').invoke('aPluginMethod').should('equal', 'foo')
})
})
@@ -55,10 +55,9 @@ describe('Plugins with options', () => {
mount(EmptyComponent, { extensions })
// first plugin works
cy.window().its('Vue').invoke('aPluginMethod').should('equal', 'foo')
cy.wrap(Cypress).its('vue').invoke('aPluginMethod').should('equal', 'foo')
// second plugin works
cy.window()
.its('Vue')
cy.wrap(Cypress).its('vue')
.invoke('anotherPluginMethod')
.should('equal', 'testing')
})

View File

@@ -29,16 +29,12 @@ describe('Props', () => {
it('shows messages', () => {
getItems().should('not.exist')
// after mounting we can set props using "Cypress.vue"
// after mounting we can set props using "vueWrapper.setProps"
cy.log('setting messages').then(() => {
Cypress.vue.messages = ['one', 'two']
Cypress.vueWrapper.setProps({ messages: ['one', 'two'] })
})
getItems().should('have.length', 2)
cy.then(() => {
Cypress.vue.messages.push('three')
getItems().should('have.length', 3)
})
})
})

View File

@@ -28,8 +28,8 @@ describe('Card', () => {
it('renders scopedSlots', () => {
mount(Card, {
scopedSlots: {
default: '<p>Yay! {{props.content}}</p>',
slots: {
default: '<template #default="props"><p>Yay! {{props.content}}</p></template>',
},
})

View File

@@ -23,8 +23,8 @@ describe('Declarative rendering', () => {
})
it('changes message if data changes', () => {
// mounted Vue instance is available under Cypress.vue
Cypress.vue.message = 'Vue rocks!'
// mounted Vue instance is available under Cypress.vueWrapper
Cypress.vueWrapper.setData({ message: 'Vue rocks!' })
cy.contains('Vue rocks!')
})
})

View File

@@ -14,14 +14,11 @@ describe('ButtonCounter', () => {
})
it('emits "increment" event on click', () => {
const spy = cy.spy()
Cypress.vue.$on('increment', spy)
cy.get('button')
.click()
.click()
.then(() => {
expect(spy).to.be.calledTwice
cy.wrap(Cypress.vueWrapper.emitted()).should('have.property', 'increment')
})
})
})

View File

@@ -2,14 +2,13 @@
// https://github.com/vuejs/vuex/tree/dev/examples/counter
import Counter from './Counter.vue'
import store from './store'
import Vuex from 'vuex'
import { mountCallback } from '@cypress/vue'
/* eslint-env mocha */
describe('Vuex Counter', () => {
// configure component
const extensions = {
plugins: [Vuex],
plugins: [store],
components: {
Counter,
},

View File

@@ -1,7 +1,4 @@
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
import { createStore } from 'vuex'
// root state object.
// each Vuex instance is just a single state tree.
@@ -53,7 +50,7 @@ const getters = {
// A Vuex instance is created by combining the state, mutations, actions,
// and getters.
export default new Vuex.Store({
export default createStore({
state,
getters,
actions,

View File

@@ -1,12 +1,10 @@
<template>
<div class="shop-home">
<router-link
:to="{ name: 'order' }"
tag="button"
class="order"
>
Place Your Order
</router-link>
<router-link
:to="{ name: 'order' }"
custom v-slot="{ navigate }">
<button class="order" @click="navigate">Place Your Order</button>
</router-link>
<br>
<h4>Or select a popular option:</h4>
<router-link

View File

@@ -1,12 +1,10 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
import { createRouter, createWebHashHistory } from 'vue-router'
import PizzaShop from './index.vue'
import Home from './Home.vue'
import Order from './Order.vue'
Vue.use(VueRouter)
export default new VueRouter({
export default createRouter({
history: createWebHashHistory(),
routes: [
{
path: '/',

View File

@@ -1,12 +1,11 @@
import PizzaShop from './PizzaShop'
import router from './PizzaShop/router'
import VueRouter from 'vue-router'
import { mountCallback } from '@cypress/vue'
describe('Vue Router - Pizza Shop', () => {
// configure component
const extensions = {
plugins: [VueRouter],
plugins: [router],
components: {
PizzaShop,
},
@@ -85,7 +84,7 @@ describe('Vue Router - Pizza Shop', () => {
const { path, query } = Cypress.vue.$route
expect(path).to.eql('/order')
expect(query).to.eql({ cheese: true })
expect(query).to.eql({ cheese: 'true' })
})
// cheese topping should be in the order overview

View File

@@ -10,6 +10,15 @@ module.exports = (on, config) => {
throw Error(`This is a component testing project. testingType should be 'component'. Received ${config.testingType}`)
}
if (!webpackConfig.resolve) {
webpackConfig.resolve = {}
}
webpackConfig.resolve.alias = {
...webpackConfig.resolve.alias,
'@vue/compiler-core$': '@vue/compiler-core/dist/compiler-core.cjs.js',
}
require('@cypress/code-coverage/task')(on, config)
on('dev-server:start', (options) => startDevServer({ options, webpackConfig }))

View File

@@ -1,4 +1,3 @@
/examples/nuxt
/examples/code-coverage
/examples/vue-cli

View File

@@ -24,9 +24,8 @@
"nyc": "14.1.1",
"sass": "1.32.11",
"sass-loader": "7.3.1",
"vue": "2.6.12",
"vue-loader": "15.9.6",
"vue-template-compiler": "2.6.12",
"vue": "3.0.11",
"vue-loader": "16.2.0",
"webpack": "4.46.0"
},
"license": "MIT",

View File

@@ -1,5 +1,5 @@
const path = require('path')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const { VueLoaderPlugin } = require('vue-loader')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
@@ -32,7 +32,6 @@ module.exports = {
new HtmlWebpackPlugin(),
],
resolve: {
alias: { vue: 'vue/dist/vue.esm.js' },
extensions: ['*', '.js', '.vue', '.json'],
},
stats: {

View File

@@ -224,6 +224,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
"@babel/helper-validator-identifier@^7.14.0":
version "7.14.0"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288"
integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==
"@babel/helper-validator-option@^7.12.17":
version "7.12.17"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
@@ -257,6 +262,11 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.12.0":
version "7.14.1"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.1.tgz#1bd644b5db3f5797c4479d89ec1817fe02b84c47"
integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q==
"@babel/parser@^7.12.13", "@babel/parser@^7.13.16", "@babel/parser@^7.4.3", "@babel/parser@^7.4.5":
version "7.13.16"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37"
@@ -742,6 +752,14 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.12.0":
version "7.14.1"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.1.tgz#095bd12f1c08ab63eff6e8f7745fa7c9cc15a9db"
integrity sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA==
dependencies:
"@babel/helper-validator-identifier" "^7.14.0"
to-fast-properties "^2.0.0"
"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17", "@babel/types@^7.4.0", "@babel/types@^7.4.4":
version "7.13.17"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4"
@@ -887,21 +905,53 @@
"@types/webpack-sources" "*"
source-map "^0.6.0"
"@vue/component-compiler-utils@^3.1.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz#8f85182ceed28e9b3c75313de669f83166d11e5d"
integrity sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==
"@vue/compiler-core@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.11.tgz#5ef579e46d7b336b8735228758d1c2c505aae69a"
integrity sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==
dependencies:
consolidate "^0.15.1"
hash-sum "^1.0.2"
lru-cache "^4.1.2"
merge-source-map "^1.1.0"
postcss "^7.0.14"
postcss-selector-parser "^6.0.2"
source-map "~0.6.1"
vue-template-es2015-compiler "^1.9.0"
optionalDependencies:
prettier "^1.18.2"
"@babel/parser" "^7.12.0"
"@babel/types" "^7.12.0"
"@vue/shared" "3.0.11"
estree-walker "^2.0.1"
source-map "^0.6.1"
"@vue/compiler-dom@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz#b15fc1c909371fd671746020ba55b5dab4a730ee"
integrity sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==
dependencies:
"@vue/compiler-core" "3.0.11"
"@vue/shared" "3.0.11"
"@vue/reactivity@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.11.tgz#07b588349fd05626b17f3500cbef7d4bdb4dbd0b"
integrity sha512-SKM3YKxtXHBPMf7yufXeBhCZ4XZDKP9/iXeQSC8bBO3ivBuzAi4aZi0bNoeE2IF2iGfP/AHEt1OU4ARj4ao/Xw==
dependencies:
"@vue/shared" "3.0.11"
"@vue/runtime-core@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.11.tgz#c52dfc6acf3215493623552c1c2919080c562e44"
integrity sha512-87XPNwHfz9JkmOlayBeCCfMh9PT2NBnv795DSbi//C/RaAnc/bGZgECjmkD7oXJ526BZbgk9QZBPdFT8KMxkAg==
dependencies:
"@vue/reactivity" "3.0.11"
"@vue/shared" "3.0.11"
"@vue/runtime-dom@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.11.tgz#7a552df21907942721feb6961c418e222a699337"
integrity sha512-jm3FVQESY3y2hKZ2wlkcmFDDyqaPyU3p1IdAX92zTNeCH7I8zZ37PtlE1b9NlCtzV53WjB4TZAYh9yDCMIEumA==
dependencies:
"@vue/runtime-core" "3.0.11"
"@vue/shared" "3.0.11"
csstype "^2.6.8"
"@vue/shared@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.11.tgz#20d22dd0da7d358bb21c17f9bde8628152642c77"
integrity sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==
"@webassemblyjs/ast@1.9.0":
version "1.9.0"
@@ -1385,7 +1435,7 @@ bluebird@3.5.3:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
bluebird@^3.1.1, bluebird@^3.5.5:
bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -1779,7 +1829,7 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
chalk@4.1.1:
chalk@4.1.1, chalk@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
@@ -2009,13 +2059,6 @@ console-browserify@^1.1.0:
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
consolidate@^0.15.1:
version "0.15.1"
resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
dependencies:
bluebird "^3.1.1"
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"
@@ -2194,6 +2237,11 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
csstype@^2.6.8:
version "2.6.17"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e"
integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==
cyclist@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
@@ -2216,11 +2264,6 @@ dayjs@1.10.4:
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
de-indent@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
debug@4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
@@ -2575,6 +2618,11 @@ estraverse@^5.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
estree-walker@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
events@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5"
@@ -3042,10 +3090,10 @@ hash-base@^3.0.0:
readable-stream "^3.6.0"
safe-buffer "^5.2.0"
hash-sum@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=
hash-sum@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
hash.js@^1.0.0, hash.js@^1.0.3:
version "1.1.7"
@@ -3070,7 +3118,7 @@ hasha@^5.0.0:
is-stream "^2.0.0"
type-fest "^0.8.0"
he@^1.1.0, he@^1.2.0:
he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@@ -3757,7 +3805,7 @@ loader-runner@^2.4.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
loader-utils@^1.0.1, loader-utils@^1.2.3, loader-utils@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
@@ -3766,6 +3814,15 @@ loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2
emojis-list "^3.0.0"
json5 "^1.0.1"
loader-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
dependencies:
big.js "^5.2.2"
emojis-list "^3.0.0"
json5 "^2.1.2"
locate-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
@@ -3820,7 +3877,7 @@ lower-case@^2.0.2:
dependencies:
tslib "^2.0.3"
lru-cache@^4.0.1, lru-cache@^4.1.2:
lru-cache@^4.0.1:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -4635,11 +4692,6 @@ postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
source-map "^0.6.1"
supports-color "^6.1.0"
prettier@^1.18.2:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
pretty-error@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
@@ -5911,47 +5963,23 @@ vm-browserify@^1.0.0, vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
vue-hot-reload-api@^2.3.0:
version "2.3.4"
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-loader@15.9.6:
version "15.9.6"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b"
integrity sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==
vue-loader@16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.2.0.tgz#046a53308dd47e58efe20ddec1edec027ce3b46e"
integrity sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==
dependencies:
"@vue/component-compiler-utils" "^3.1.0"
hash-sum "^1.0.2"
loader-utils "^1.1.0"
vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0"
chalk "^4.1.0"
hash-sum "^2.0.0"
loader-utils "^2.0.0"
vue-style-loader@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35"
integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==
vue@3.0.11:
version "3.0.11"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.11.tgz#c82f9594cbf4dcc869241d4c8dd3e08d9a8f4b5f"
integrity sha512-3/eUi4InQz8MPzruHYSTQPxtM3LdZ1/S/BvaU021zBnZi0laRUyH6pfuE4wtUeLvI8wmUNwj5wrZFvbHUXL9dw==
dependencies:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
vue-template-compiler@2.6.12:
version "2.6.12"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e"
integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
vue-template-es2015-compiler@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@2.6.12:
version "2.6.12"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
"@vue/compiler-dom" "3.0.11"
"@vue/runtime-dom" "3.0.11"
"@vue/shared" "3.0.11"
watchify@3.11.1:
version "3.11.1"

View File

@@ -1,13 +0,0 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

View File

@@ -1,90 +0,0 @@
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# Nuxt generate
dist
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# IDE / Editor
.idea
# Service worker
sw.*
# macOS
.DS_Store
# Vim swap files
*.swp

View File

@@ -1,131 +0,0 @@
# cypress-ct-example-nuxt
Example of usage of Cypress component testing within Nuxt
## Disclaimer
This package is meant to run within the cypress monorepo.
If you copy this project out of the Cypress monorepo, It will work.
Do not forget to replace the cypress commands in the `package.json` scripts:
- Open `package.json`
- find the `test` and `cy:open` scripts
- In those scripts, replace `node ../../../../scripts/cypress` by only `cypress`
You should obtain
```diff
{
"scripts":{
- "cy:open": "node ../../../../scripts/cypress open-ct",
+ "cy:open": "cypress open-ct",
- "test": "node ../../../../scripts/cypress run-ct"
+ "test": "cypress run-ct"
}
}
```
## Build Setup
```bash
# install dependencies
$ yarn install
# serve with hot reload at localhost:3000
$ yarn dev
# build for production and launch server
$ yarn build
$ yarn start
# generate static project
$ yarn generate
# start Cypress component testing
$ yarn cy:open
# run all component tests at once for example on CI
$ yarn test
```
## Installing Cypress component testing
In a project created using nuxt-create-app, install Cypress component testing by following these steps:
### Install dependencies
TLDR:
```bash
yarn add -D cypress @cypress/webpack-dev-server @cypress/vue
```
We need to install:
- `cypress` as it contains all the tools for finding items, clicking on buttons and do what we would do in the tests.
- `@cypress/webpack-dev-server` to see the tested components in an environment similar to your app, where they will be used,. We do this to enable importing css files, importing typescript libraries, allow custom webpack aliases. This will enable for example the use of `~` `require('~/assets/styles.css')`.
- `@cypress/vue` will offer a simple and standard function to mount the components in our test window so that we can use cypress to check if they behave as we expect.
### Configure Cypress
To setup any Cypress runner, the standard way is to create a `cypress.json` file at the root of your project. Checkout [the docs](https://docs.cypress.io/guides/references/configuration) to know the extend of your options.
Here is the `cypress.json` file at work in this project:
```js
// cypress.json
{
// Set this porperty to false to avoid cypress creating
// example `fixture` and `support` folders for fixtures and support files
// Remove the 2 lines if you are
"fixturesFolder": false,
"supportFile": false,
// Tell Cypress how to recognize spec files
"testFiles": "**/*spec.ts",
// All the component test files are
// located in this directory and its sub-directory
"componentFolder": "components"
}
```
### Setup Cypress plugins
For the last step of the install process, create a `cypress/plugin/index.js` file.
This file will let Cypress know how to start the testing server with your Nuxt configuration.
Since Nuxt is using webpack under the hood to build your app, it contains awebpack config.
We can ask to see this webpack config using the `getWebpackConfig()` function.
```js
/// <reference types="cypress" />
const { startDevServer } = require('@cypress/webpack-dev-server')
const { getWebpackConfig } = require('nuxt')
/**
* @type Cypress.PluginConfig
*/
module.exports = (on, config) => {
on('dev-server:start', async (options) => {
// This function asks Nuxt to build its webpack config,
// but insteak of launching a Nuxt Server, it returns the config
// object fo us to do as we please
let webpackConfig = await getWebpackConfig('modern', 'dev')
// We can then start the server with the created config
return startDevServer({
options,
webpackConfig,
})
})
return config
}
```
> NOTE: both the `on` handler function and the PluginConfig return something. Don't forget those returns.

View File

@@ -1,7 +0,0 @@
# ASSETS
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked).

View File

@@ -1,9 +0,0 @@
import { mount } from '@cypress/vue'
import Logo from './Logo.vue'
describe('<Logo />', () => {
it('contains an svg', () => {
mount(Logo)
cy.get('svg').should('be.visible')
})
})

View File

@@ -1,29 +0,0 @@
<template>
<svg class="NuxtLogo" width="245" height="180" viewBox="0 0 452 342" xmlns="http://www.w3.org/2000/svg">
<path
d="M139 330l-1-2c-2-4-2-8-1-13H29L189 31l67 121 22-16-67-121c-1-2-9-14-22-14-6 0-15 2-22 15L5 303c-1 3-8 16-2 27 4 6 10 12 24 12h136c-14 0-21-6-24-12z"
fill="#00C58E"
/>
<path
d="M447 304L317 70c-2-2-9-15-22-15-6 0-15 3-22 15l-17 28v54l39-67 129 230h-49a23 23 0 0 1-2 14l-1 1c-6 11-21 12-23 12h76c3 0 17-1 24-12 3-5 5-14-2-26z"
fill="#108775"
/>
<path
d="M376 330v-1l1-2c1-4 2-8 1-12l-4-12-102-178-15-27h-1l-15 27-102 178-4 12a24 24 0 0 0 2 15c4 6 10 12 24 12h190c3 0 18-1 25-12zM256 152l93 163H163l93-163z"
fill="#2F495E"
/>
</svg>
</template>
<style>
.NuxtLogo {
animation: 1s appear;
margin: auto;
}
@keyframes appear {
0% {
opacity: 0;
}
}
</style>

View File

@@ -1,7 +0,0 @@
# COMPONENTS
**This directory is not required, you can delete it if you don't want to use it.**
The components directory contains your Vue.js Components.
_Nuxt.js doesn't supercharge these components._

View File

@@ -1,7 +0,0 @@
{
"video": false,
"fixturesFolder": false,
"supportFile": false,
"testFiles": "**/*spec.ts",
"componentFolder": "components"
}

View File

@@ -1,21 +0,0 @@
/// <reference types="cypress" />
const { startDevServer } = require('@cypress/webpack-dev-server')
const { getWebpackConfig } = require('nuxt')
/**
* @type Cypress.PluginConfig
*/
module.exports = (on, config) => {
on('dev-server:start', async (options) => {
// Use the modern configuration of webpack since we
// will never use it with Internet Explorer within cypress
let webpackConfig = await getWebpackConfig('modern', 'dev')
return startDevServer({
options,
webpackConfig,
})
})
return config
}

View File

@@ -1,7 +0,0 @@
# LAYOUTS
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your Application Layouts.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).

View File

@@ -1,62 +0,0 @@
<template>
<div>
<Nuxt />
</div>
</template>
<style>
html {
font-family:
'Source Sans Pro',
-apple-system,
BlinkMacSystemFont,
'Segoe UI',
Roboto,
'Helvetica Neue',
Arial,
sans-serif;
font-size: 16px;
word-spacing: 1px;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
box-sizing: border-box;
}
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
}
.button--green {
display: inline-block;
border-radius: 4px;
border: 1px solid #3b8070;
color: #3b8070;
text-decoration: none;
padding: 10px 30px;
}
.button--green:hover {
color: #fff;
background-color: #3b8070;
}
.button--grey {
display: inline-block;
border-radius: 4px;
border: 1px solid #35495e;
color: #35495e;
text-decoration: none;
padding: 10px 30px;
margin-left: 15px;
}
.button--grey:hover {
color: #fff;
background-color: #35495e;
}
</style>

View File

@@ -1,8 +0,0 @@
# MIDDLEWARE
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your application middleware.
Middleware let you define custom functions that can be run before rendering either a page or a group of pages.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing#middleware).

View File

@@ -1,42 +0,0 @@
export default {
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
title: 'cypress-ct-example-nuxt',
htmlAttrs: {
lang: 'en',
},
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: '' },
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
],
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
],
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
],
// Auto import components: https://go.nuxtjs.dev/config-components
components: true,
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [
// https://go.nuxtjs.dev/typescript
'@nuxt/typescript-build',
],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [
],
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {
},
}

View File

@@ -1,24 +0,0 @@
{
"name": "cypress-ct-example-nuxt",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "nuxt build",
"cy:open": "node ../../../../scripts/cypress open-ct",
"dev": "nuxt",
"generate": "nuxt generate",
"start": "nuxt start",
"test": "node ../../../../scripts/cypress run-ct"
},
"dependencies": {
"core-js": "^3.9.1",
"nuxt": "^2.15.3"
},
"devDependencies": {
"@cypress/vue": "file:../../dist",
"@nuxt/types": "^2.15.3",
"@nuxt/typescript-build": "^2.1.0",
"mocha-junit-reporter": "^2.0.0",
"mocha-multi-reporters": "^1.5.1"
}
}

View File

@@ -1,6 +0,0 @@
# PAGES
This directory contains your Application Views and Routes.
The framework reads all the `*.vue` files inside this directory and creates the router of your application.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).

View File

@@ -1,75 +0,0 @@
<template>
<div class="container">
<div>
<Logo />
<h1 class="title">
cypress-ct-example-nuxt
</h1>
<div class="links">
<a
href="https://nuxtjs.org/"
target="_blank"
rel="noopener noreferrer"
class="button--green"
>
Documentation
</a>
<a
href="https://github.com/nuxt/nuxt.js"
target="_blank"
rel="noopener noreferrer"
class="button--grey"
>
GitHub
</a>
</div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({})
</script>
<style>
.container {
margin: 0 auto;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
.title {
font-family:
'Quicksand',
'Source Sans Pro',
-apple-system,
BlinkMacSystemFont,
'Segoe UI',
Roboto,
'Helvetica Neue',
Arial,
sans-serif;
display: block;
font-weight: 300;
font-size: 100px;
color: #35495e;
letter-spacing: 1px;
}
.subtitle {
font-weight: 300;
font-size: 42px;
color: #526488;
word-spacing: 5px;
padding-bottom: 15px;
}
.links {
padding-top: 15px;
}
</style>

View File

@@ -1,7 +0,0 @@
# PLUGINS
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains Javascript plugins that you want to run before mounting the root Vue.js application.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins).

View File

@@ -1,4 +0,0 @@
declare module '*.vue' {
import Vue from 'vue'
export default Vue
}

View File

@@ -1,11 +0,0 @@
# STATIC
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your static files.
Each file inside this directory is mapped to `/`.
Thus you'd want to delete this README.md before deploying to production.
Example: `/static/robots.txt` is mapped as `/robots.txt`.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,10 +0,0 @@
# STORE
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your Vuex Store files.
Vuex Store option is implemented in the Nuxt.js framework.
Creating a file in this directory automatically activates the option in the framework.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).

View File

@@ -1,36 +0,0 @@
{
"compilerOptions": {
"target": "ES2018",
"module": "ESNext",
"moduleResolution": "Node",
"lib": [
"ESNext",
"ESNext.AsyncIterable",
"DOM"
],
"esModuleInterop": true,
"allowJs": true,
"sourceMap": true,
"strict": true,
"noEmit": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./*"
]
},
"types": [
"@nuxt/types",
"@types/node"
]
},
"exclude": [
"node_modules",
".nuxt",
"dist"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@
"dependencies": {
"core-js": "^3.6.5",
"register-service-worker": "^1.7.1",
"vue": "^2.6.11"
"vue": "^3.0.11"
},
"devDependencies": {
"@cypress/code-coverage": "^3.9.5",

View File

@@ -325,7 +325,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.12.13", "@babel/parser@^7.13.13":
"@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.13":
version "7.13.13"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
@@ -1110,7 +1110,7 @@
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.4.4":
"@babel/types@^7.0.0", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.4.4":
version "7.13.14"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d"
integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==
@@ -1681,6 +1681,25 @@
semver "^6.1.0"
strip-ansi "^6.0.0"
"@vue/compiler-core@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.11.tgz#5ef579e46d7b336b8735228758d1c2c505aae69a"
integrity sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==
dependencies:
"@babel/parser" "^7.12.0"
"@babel/types" "^7.12.0"
"@vue/shared" "3.0.11"
estree-walker "^2.0.1"
source-map "^0.6.1"
"@vue/compiler-dom@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz#b15fc1c909371fd671746020ba55b5dab4a730ee"
integrity sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==
dependencies:
"@vue/compiler-core" "3.0.11"
"@vue/shared" "3.0.11"
"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz#8f85182ceed28e9b3c75313de669f83166d11e5d"
@@ -1702,6 +1721,35 @@
resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab"
integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==
"@vue/reactivity@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.11.tgz#07b588349fd05626b17f3500cbef7d4bdb4dbd0b"
integrity sha512-SKM3YKxtXHBPMf7yufXeBhCZ4XZDKP9/iXeQSC8bBO3ivBuzAi4aZi0bNoeE2IF2iGfP/AHEt1OU4ARj4ao/Xw==
dependencies:
"@vue/shared" "3.0.11"
"@vue/runtime-core@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.11.tgz#c52dfc6acf3215493623552c1c2919080c562e44"
integrity sha512-87XPNwHfz9JkmOlayBeCCfMh9PT2NBnv795DSbi//C/RaAnc/bGZgECjmkD7oXJ526BZbgk9QZBPdFT8KMxkAg==
dependencies:
"@vue/reactivity" "3.0.11"
"@vue/shared" "3.0.11"
"@vue/runtime-dom@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.11.tgz#7a552df21907942721feb6961c418e222a699337"
integrity sha512-jm3FVQESY3y2hKZ2wlkcmFDDyqaPyU3p1IdAX92zTNeCH7I8zZ37PtlE1b9NlCtzV53WjB4TZAYh9yDCMIEumA==
dependencies:
"@vue/runtime-core" "3.0.11"
"@vue/shared" "3.0.11"
csstype "^2.6.8"
"@vue/shared@3.0.11":
version "3.0.11"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.11.tgz#20d22dd0da7d358bb21c17f9bde8628152642c77"
integrity sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==
"@vue/web-component-wrapper@^1.2.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a"
@@ -3559,6 +3607,11 @@ csso@^4.0.2:
dependencies:
css-tree "^1.1.2"
csstype@^2.6.8:
version "2.6.16"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.16.tgz#544d69f547013b85a40d15bff75db38f34fe9c39"
integrity sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==
cyclist@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
@@ -4090,6 +4143,11 @@ estraverse@^5.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
estree-walker@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -9119,10 +9177,14 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@^2.6.11:
version "2.6.12"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
vue@^3.0.11:
version "3.0.11"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.11.tgz#c82f9594cbf4dcc869241d4c8dd3e08d9a8f4b5f"
integrity sha512-3/eUi4InQz8MPzruHYSTQPxtM3LdZ1/S/BvaU021zBnZi0laRUyH6pfuE4wtUeLvI8wmUNwj5wrZFvbHUXL9dw==
dependencies:
"@vue/compiler-dom" "3.0.11"
"@vue/runtime-dom" "3.0.11"
"@vue/shared" "3.0.11"
watchify@3.11.1:
version "3.11.1"

View File

@@ -14,7 +14,7 @@
},
"dependencies": {
"@cypress/mount-utils": "0.0.0-development",
"@vue/test-utils": "^1.1.3"
"@vue/test-utils": "^2.0.0-rc.4"
},
"devDependencies": {
"@babel/core": "7.9.0",
@@ -22,11 +22,12 @@
"@babel/preset-env": "7.9.5",
"@cypress/code-coverage": "3.8.1",
"@cypress/webpack-dev-server": "0.0.0-development",
"@intlify/vue-i18n-loader": "1.0.0",
"@intlify/vue-i18n-loader": "2.0.0-rc.1",
"@rollup/plugin-commonjs": "^17.1.0",
"@rollup/plugin-node-resolve": "^11.1.1",
"@vue/cli-plugin-babel": "~4.4.0",
"@vue/cli-service": "~4.4.0",
"@vue/compiler-sfc": "^3.0.5",
"axios": "0.19.2",
"babel-loader": "8.1.0",
"babel-plugin-istanbul": "6.0.0",
@@ -42,22 +43,19 @@
"rollup-plugin-istanbul": "2.0.1",
"rollup-plugin-typescript2": "^0.29.0",
"tailwindcss": "1.1.4",
"tslib": "^2.1.0",
"typescript": "^4.2.3",
"unfetch": "4.1.0",
"vue": "2.6.12",
"vue-i18n": "8.9.0",
"vue-loader": "15.9.3",
"vue-router": "3.0.5",
"typescript": "3.9.6",
"vue": "3.0.11",
"vue-i18n": "9.0.0-rc.6",
"vue-loader": "16.1.2",
"vue-router": "^4.0.0",
"vue-style-loader": "4.1.2",
"vue-template-compiler": "2.6.12",
"vuex": "3.1.1",
"vuex": "^4.0.0",
"webpack": "4.42.0"
},
"peerDependencies": {
"@cypress/webpack-dev-server": "*",
"cypress": ">=4.5.0",
"vue": "^2.0.0"
"cypress": ">=7.0.0",
"vue": ">=3.0.0"
},
"files": [
"dist/**/*",
@@ -83,6 +81,9 @@
"peerDependenciesMeta": {
"@cypress/webpack-dev-server": {
"optional": true
},
"babel-loader": {
"optional": true
}
},
"publishConfig": {

View File

@@ -82,6 +82,4 @@ export default [
createEntry({ format: 'es', input: 'src/index.ts', isBrowser: true }),
createEntry({ format: 'iife', input: 'src/index.ts', isBrowser: true }),
createEntry({ format: 'cjs', input: 'src/index.ts', isBrowser: false }),
createEntry({ format: 'cjs', input: 'src/support.js', isBrowser: false }),
createEntry({ format: 'cjs', input: 'src/plugins/webpack/index.js', isBrowser: false }),
]

View File

@@ -1,12 +1,6 @@
/// <reference types="cypress" />
import Vue from 'vue'
import {
createLocalVue,
mount as testUtilsMount,
VueTestUtilsConfigOptions,
Wrapper,
enableAutoDestroy,
} from '@vue/test-utils'
import { Component, ComponentPublicInstance } from 'vue'
import { MountingOptions, VueWrapper, mount as VTUmount } from '@vue/test-utils'
import {
injectStylesBeforeElement,
StyleOptions,
@@ -14,232 +8,7 @@ import {
setupHooks,
} from '@cypress/mount-utils'
const defaultOptions: (keyof MountOptions)[] = [
'vue',
'extensions',
]
const registerGlobalComponents = (Vue, options) => {
const globalComponents = Cypress._.get(options, 'extensions.components')
if (Cypress._.isPlainObject(globalComponents)) {
Cypress._.forEach(globalComponents, (component, id) => {
Vue.component(id, component)
})
}
}
const installFilters = (Vue, options) => {
const filters: VueFilters | undefined = Cypress._.get(
options,
'extensions.filters',
)
if (Cypress._.isPlainObject(filters)) {
Object.keys(filters).forEach((name) => {
Vue.filter(name, filters[name])
})
}
}
const installPlugins = (Vue, options, props) => {
const plugins: VuePlugins =
Cypress._.get(props, 'plugins') ||
Cypress._.get(options, 'extensions.use') ||
Cypress._.get(options, 'extensions.plugins') ||
[]
// @ts-ignore
plugins.forEach((p) => {
Array.isArray(p) ? Vue.use(...p) : Vue.use(p)
})
}
const installMixins = (Vue, options) => {
const mixins =
Cypress._.get(options, 'extensions.mixin') ||
Cypress._.get(options, 'extensions.mixins')
if (Cypress._.isArray(mixins)) {
mixins.forEach((mixin) => {
Vue.mixin(mixin)
})
}
}
const hasStore = ({ store }: { store: any }) => Boolean(store && store._vm)
const forEachValue = <T>(obj: Record<string, T>, fn: (value: T, key: string) => void) => {
return Object.keys(obj).forEach((key) => fn(obj[key], key))
}
const resetStoreVM = (Vue, { store }) => {
// bind store public getters
store.getters = {}
const wrappedGetters = store._wrappedGetters as Record<string, (store: any) => void>
const computed = {}
forEachValue(wrappedGetters, (fn, key) => {
// use computed to leverage its lazy-caching mechanism
computed[key] = () => fn(store)
Object.defineProperty(store.getters, key, {
get: () => store._vm[key],
enumerable: true, // for local getters
})
})
store._watcherVM = new Vue()
store._vm = new Vue({
data: {
$$state: store._vm._data.$$state,
},
computed,
})
return store
}
/**
* Type for component passed to "mount"
*
* @interface VueComponent
* @example
* import Hello from './Hello.vue'
* ^^^^^ this type
* mount(Hello)
*/
type VueComponent = Vue.ComponentOptions<any> | Vue.VueConstructor
/**
* Options to pass to the component when creating it, like
* props.
*
* @interface ComponentOptions
*/
type ComponentOptions = Record<string, unknown>
// local placeholder types
type VueLocalComponents = Record<string, VueComponent>
type VueFilters = {
[key: string]: (value: string) => string
}
type VueMixin = unknown
type VueMixins = VueMixin | VueMixin[]
type VuePluginOptions = unknown
type VuePlugin = unknown | [unknown, VuePluginOptions]
/**
* A single Vue plugin or a list of plugins to register
*/
type VuePlugins = VuePlugin[]
/**
* Additional Vue services to register while mounting the component, like
* local components, plugins, etc.
*
* @interface MountOptionsExtensions
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
*/
interface MountOptionsExtensions {
/**
* Extra local components
*
* @memberof MountOptionsExtensions
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
* @example
* import Hello from './Hello.vue'
* // imagine Hello needs AppComponent
* // that it uses in its template like <app-component ... />
* // during testing we can replace it with a mock component
* const appComponent = ...
* const components = {
* 'app-component': appComponent
* },
* mount(Hello, { extensions: { components }})
*/
components?: VueLocalComponents
/**
* Optional Vue filters to install while mounting the component
*
* @memberof MountOptionsExtensions
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
* @example
* const filters = {
* reverse: (s) => s.split('').reverse().join(''),
* }
* mount(Hello, { extensions: { filters }})
*/
filters?: VueFilters
/**
* Optional Vue mixin(s) to install when mounting the component
*
* @memberof MountOptionsExtensions
* @alias mixins
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
*/
mixin?: VueMixins
/**
* Optional Vue mixin(s) to install when mounting the component
*
* @memberof MountOptionsExtensions
* @alias mixin
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
*/
mixins?: VueMixins
/**
* A single plugin or multiple plugins.
*
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
* @alias plugins
* @memberof MountOptionsExtensions
*/
use?: VuePlugins
/**
* A single plugin or multiple plugins.
*
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
* @alias use
* @memberof MountOptionsExtensions
*/
plugins?: VuePlugins
}
/**
* Options controlling how the component is going to be mounted,
* including global Vue plugins and extensions.
*
* @interface MountOptions
*/
interface MountOptions {
/**
* Vue instance to use.
*
* @deprecated
* @memberof MountOptions
*/
vue: unknown
/**
* Extra Vue plugins, mixins, local components to register while
* mounting this component
*
* @memberof MountOptions
* @see https://github.com/cypress-io/cypress/tree/master/npm/vue#examples
*/
extensions: MountOptionsExtensions
}
/**
* Utility type for union of options passed to "mount(..., options)"
*/
type MountOptionsArgument = Partial<ComponentOptions & MountOptions & StyleOptions & VueTestUtilsConfigOptions>
const DEFAULT_COMP_NAME = 'unknown'
// when we mount a Vue component, we add it to the global Cypress object
// so here we extend the global Cypress namespace and its Cypress interface
@@ -247,110 +16,55 @@ declare global {
// eslint-disable-next-line no-redeclare
namespace Cypress {
interface Cypress {
/**
* Mounted Vue instance is available under Cypress.vue
* @memberof Cypress
* @example
* mount(Greeting)
* .then(() => {
* Cypress.vue.message = 'Hello There'
* })
* // new message is displayed
* cy.contains('Hello There').should('be.visible')
*/
vue: Vue
vueWrapper: Wrapper<Vue>
vueWrapper: VueWrapper<ComponentPublicInstance>
vue: ComponentPublicInstance
}
}
}
/**
* Direct Vue errors to the top error handler
* where they will fail Cypress test
* @see https://vuejs.org/v2/api/#errorHandler
* @see https://github.com/cypress-io/cypress/issues/7910
*/
function failTestOnVueError (err, vm, info) {
console.error(`Vue error`)
console.error(err)
console.error('component:', vm)
console.error('info:', info)
window.top.onerror(err)
}
type CyMountOptions<Props> = Omit<MountingOptions<Props>, 'attachTo'> & {
log?: boolean
/**
* @deprecated use vue-test-utils `global` instead
*/
extensions?: MountingOptions<Props>['global'] & {
use?: MountingOptions<Props>['global']['plugins']
mixin?: MountingOptions<Props>['global']['mixins']
}
} & Partial<StyleOptions>
function registerAutoDestroy ($destroy: () => void) {
let initialInnerHtml = ''
Cypress.on('run:start', () => {
initialInnerHtml = document.head.innerHTML
Cypress.on('test:before:run', () => {
$destroy()
})
}
enableAutoDestroy(registerAutoDestroy)
const injectStyles = (options: StyleOptions) => {
const el = document.getElementById(ROOT_ID)
return injectStylesBeforeElement(options, document, el)
}
/**
* Mounts a Vue component inside Cypress browser.
* @param {object} component imported from Vue file
* @example
* import Greeting from './Greeting.vue'
* import { mount } from '@cypress/vue'
* it('works', () => {
* // pass props, additional extensions, etc
* mount(Greeting, { ... })
* // use any Cypress command to test the component
* cy.get('#greeting').should('be.visible')
* })
*/
export const mount = (
component: VueComponent,
optionsOrProps: MountOptionsArgument = {},
) => {
const options: Partial<MountOptions> = Cypress._.pick(
optionsOrProps,
defaultOptions,
)
const props: Partial<ComponentOptions> = Cypress._.omit(
optionsOrProps,
defaultOptions,
)
return cy
.window({
log: false,
})
.then(() => {
const { style, stylesheets, stylesheet, styles, cssFiles, cssFile } = optionsOrProps
injectStyles({
style,
stylesheets,
stylesheet,
styles,
cssFiles,
cssFile,
})
})
.then((win) => {
const localVue = createLocalVue()
Cypress.vueWrapper?.unmount()
// @ts-ignore
win.Vue = localVue
localVue.config.errorHandler = failTestOnVueError
const document: Document = cy.state('document')
let el = document.getElementById(ROOT_ID)
// set global Vue instance:
// 1. convenience for debugging in DevTools
// 2. some libraries might check for this global
// appIframe.contentWindow.Vue = localVue
el.innerHTML = ''
document.head.innerHTML = initialInnerHtml
})
})
// refresh inner Vue instance of Vuex store
// @ts-ignore
if (hasStore(component)) {
// @ts-ignore
component.store = resetStoreVM(localVue, component)
export function mount<Props = any> (
comp: Component<Props>,
options: CyMountOptions<Props> = {},
) {
// TODO: get the real displayName and props from VTU shallowMount
const componentName = DEFAULT_COMP_NAME
const message = `<${componentName} ... />`
let logInstance: Cypress.Log
// then wait for cypress to load
return cy.then(() => {
if (options.log !== false) {
logInstance = Cypress.log({
name: 'mount',
message: [message],
})
}
// @ts-ignore
@@ -358,24 +72,40 @@ export const mount = (
let el = document.getElementById(ROOT_ID)
injectStylesBeforeElement(options, document, el)
// merge the extensions with global
if (options.extensions) {
options.extensions.plugins = [].concat(options.extensions.plugins || [], options.extensions.use || [])
options.extensions.mixins = [].concat(options.extensions.mixins || [], options.extensions.mixin || [])
options.global = { ...options.extensions, ...options.global }
}
const componentNode = document.createElement('div')
componentNode.id = '__cy_vue_root'
el.append(componentNode)
// setup Vue instance
installFilters(localVue, options)
installMixins(localVue, options)
installPlugins(localVue, options, props)
registerGlobalComponents(localVue, options)
// mount the component using VTU and return the wrapper in Cypress.VueWrapper
const wrapper = VTUmount(comp as any, { attachTo: componentNode, ...options })
props.attachTo = componentNode
Cypress.vueWrapper = wrapper
Cypress.vue = wrapper.vm
const wrapper = localVue.extend(component as any)
return cy
.wrap(wrapper, { log: false })
.wait(1, { log: false })
.then(() => {
if (logInstance) {
logInstance.snapshot('mounted')
logInstance.end()
}
const VTUWrapper = testUtilsMount(wrapper, { localVue, ...props })
Cypress.vue = VTUWrapper.vm
Cypress.vueWrapper = VTUWrapper
// by returning undefined we keep the previous subject
// which is the mounted component
return undefined
})
})
}
@@ -385,11 +115,11 @@ export const mount = (
* import {mountCallback} from '@cypress/vue'
* beforeEach(mountVue(component, options))
*/
export const mountCallback = (
component: VueComponent,
options?: MountOptionsArgument,
) => {
return () => mount(component, options)
export function mountCallback<Props = any> (
component: Component<Props>,
options: CyMountOptions<Props> = {},
): () => void {
return () => mount<Props>(component, options)
}
setupHooks()

View File

@@ -1,25 +0,0 @@
/// <reference types="cypress" />
const { startDevServer } = require('@cypress/webpack-dev-server')
/**
* Registers Cypress preprocessor for Vue component testing.
* IMPORTANT to return the config object with
* with the any changed environment variables.
*
* @param {Cypress.PluginConfigOptions} config Cypress config object.
* @example
* // in your project's plugins/index.js file
* const preprocessor = require('@cypress/vue/dist/plugins/webpack')
* module.exports = (on, config) => {
* preprocessor(on, config)
* // IMPORTANT return the config object
* return config
* }
*/
const cypressPluginsFn = (on, config, webpackConfig) => {
on('dev-server:start', (options) => startDevServer({ options, webpackConfig }))
return config
}
module.exports = cypressPluginsFn

View File

@@ -1,5 +0,0 @@
// empty to keep backwards compat
// FIXME: delete in next major
console.error('Avoid using this file, it will be deleted in the next major')

View File

@@ -1,8 +1,7 @@
// A basic webpack configuration
// The default for running tests in this project
// https://vue-loader.vuejs.org/guide/#manual-setup
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { VueLoaderPlugin } = require('vue-loader')
const path = require('path')
const pkg = require('package.json')
@@ -18,9 +17,8 @@ module.exports = {
resolve: {
extensions: ['.js', '.json', '.vue'],
alias: {
// point at the built file
vue$: 'vue/dist/vue.esm-bundler.js',
'@cypress/vue': path.join(__dirname, pkg.main),
vue: 'vue/dist/vue.esm.js',
},
},
module: {

258
yarn.lock
View File

@@ -2504,13 +2504,6 @@
dependencies:
css.escape "^1.5.1"
"@cypress/vue@3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@cypress/vue/-/vue-3.0.1.tgz#9899718dfb8608f98c343fe35a7cfc0a50376011"
integrity sha512-7aSdwbtvCJnKR7MDZdJs3TB718LNo44JXvIidrtcZacOSPXjahvkZ8nQCyLIt/owKBFFaV4dvSn267Lq4ZIbzQ==
dependencies:
"@vue/test-utils" "^2.0.0-rc.4"
"@cypress/webpack-preprocessor@5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.7.0.tgz#653c92662fe885260f176f5a1bd630dfd2cee8ca"
@@ -3133,13 +3126,113 @@
cssnano-preset-default "^4.0.0"
postcss "^7.0.0"
"@intlify/vue-i18n-loader@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@intlify/vue-i18n-loader/-/vue-i18n-loader-1.0.0.tgz#4350a9b03fd62e7d7f44c7496d5509bff3229c79"
integrity sha512-y7LlpKEQ01u7Yq14l4VNlbFYEHMmSEH1QXXASOMWspj9ZcIdCebhhvHCHqk5Oy5Epw3PtoxyRJNpb6Wle5udgA==
"@intlify/cli@^0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@intlify/cli/-/cli-0.2.0.tgz#631f4ab2e97cfe2848e2e96aa38e6681316265ed"
integrity sha512-KIB6KggamrUoQJXa2CZad9D0dIH6FijPpRv020VtXvPFphprJKipG19GHndPgKRPK70t6Aj7zsJEqt5GvljKXg==
dependencies:
js-yaml "^3.13.1"
json5 "^2.1.1"
"@intlify/core" "^9.0.0-beta.16"
"@intlify/core-base" "^9.0.0-beta.16"
"@intlify/message-compiler" "^9.0.0-beta.16"
"@intlify/shared" "^9.0.0-beta.16"
chalk "^4.1.0"
debug "^4.3.1"
glob "^7.1.6"
jsonc-eslint-parser "^0.6.0"
yaml-eslint-parser "^0.2.0"
yargs "^16.2.0"
"@intlify/core-base@9.0.0-beta.16":
version "9.0.0-beta.16"
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.0.0-beta.16.tgz#ab35802b982f52db20d4758d020c2dcd1724e7f9"
integrity sha512-PJLDVYy3x8Mf9+XtWljEfk4Lo6mudopYlRvB89NQR3TkR+Tqkbcsegj09XdXpTKBYiq+yQrlZKZ0KEHb7l5Zuw==
dependencies:
"@intlify/message-compiler" "9.0.0-beta.16"
"@intlify/message-resolver" "9.0.0-beta.16"
"@intlify/runtime" "9.0.0-beta.16"
"@intlify/shared" "9.0.0-beta.16"
"@intlify/core-base@9.0.0-rc.6", "@intlify/core-base@^9.0.0-beta.16":
version "9.0.0-rc.6"
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.0.0-rc.6.tgz#e0d61d9412ae1ea3f8ec9475d4c0f005fc006c95"
integrity sha512-UG8H+q1GZ2ZD6Rg9nuc6NPqj9K9OeXHt4kerKRDRgZ+h2wPNoWItIQXSrShg5GJKvEN+rRuJvvnh61oMNS0sWw==
dependencies:
"@intlify/message-compiler" "9.0.0-rc.6"
"@intlify/message-resolver" "9.0.0-rc.6"
"@intlify/runtime" "9.0.0-rc.6"
"@intlify/shared" "9.0.0-rc.6"
"@intlify/core@^9.0.0-beta.16":
version "9.0.0-beta.16"
resolved "https://registry.yarnpkg.com/@intlify/core/-/core-9.0.0-beta.16.tgz#d74d4678868b37b641bdf999552b237d84dacb88"
integrity sha512-tPXf9rr+ZzG1zXgdLo8rCO2jws6eIXzJSaTvgnanZpfyyMKE+T8Ra5vVu3f/Sm0J7flT+z/Q3kLfnbpOMQ1UiQ==
dependencies:
"@intlify/core-base" "9.0.0-beta.16"
"@intlify/message-compiler@9.0.0-beta.16":
version "9.0.0-beta.16"
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.0.0-beta.16.tgz#359993251a303f148b3a325eca055cdbaf0cd95f"
integrity sha512-dE4UZsbVl5TKogYdfrJ6nQKdin1R4XMKVBVa9dE1A8HVvVHBSLy6iQiYpcw8TwcEHIa+rFjuuHuh+IdN3eCw+g==
dependencies:
"@intlify/message-resolver" "9.0.0-beta.16"
"@intlify/shared" "9.0.0-beta.16"
source-map "0.6.1"
"@intlify/message-compiler@9.0.0-rc.6", "@intlify/message-compiler@^9.0.0-beta.16":
version "9.0.0-rc.6"
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.0.0-rc.6.tgz#c15e8b6e120804e30306a6af42305c6d970714b1"
integrity sha512-WyvvFBoJ6qZk/3G/LjHuZJhY0ww8PZD+30wdPy5lJEB4+uTDoAAupwfnQ1suek7wsnFbPiuUE2j48qRogY0QJQ==
dependencies:
"@intlify/message-resolver" "9.0.0-rc.6"
"@intlify/shared" "9.0.0-rc.6"
source-map "0.6.1"
"@intlify/message-resolver@9.0.0-beta.16":
version "9.0.0-beta.16"
resolved "https://registry.yarnpkg.com/@intlify/message-resolver/-/message-resolver-9.0.0-beta.16.tgz#f8960344201050d17560f8d01f63e3cd0b9bf59c"
integrity sha512-xwjsFuDDYEv7g1KE5QZRbrPgfsrNsDhYLtNYR7Tn4inzbmB6ipak2UlDzDcQGLieSFbe1WwAoNL0IXy4sUKboQ==
"@intlify/message-resolver@9.0.0-rc.6":
version "9.0.0-rc.6"
resolved "https://registry.yarnpkg.com/@intlify/message-resolver/-/message-resolver-9.0.0-rc.6.tgz#c4fcc5fbc2a5bb3578b897baa2307bfd782193fe"
integrity sha512-yY+hM8WqliAIayYP0/8iITfScn4oSYXVrUwIn7ZWUONhuXCQXlxStukmQ1e1lWkL4Jyi4qTRXupDllq5yvW9BA==
"@intlify/runtime@9.0.0-beta.16":
version "9.0.0-beta.16"
resolved "https://registry.yarnpkg.com/@intlify/runtime/-/runtime-9.0.0-beta.16.tgz#6a210a5b0984f9e295025e3dde5262108e0e69d9"
integrity sha512-py+stHrbkBoEB2OsBB+rySevR+54uhybF54LToGjErr740R/AVuOVTJEKRS/LF9VvinGZZTu/WVOXcPpMfqt8Q==
dependencies:
"@intlify/message-compiler" "9.0.0-beta.16"
"@intlify/message-resolver" "9.0.0-beta.16"
"@intlify/shared" "9.0.0-beta.16"
"@intlify/runtime@9.0.0-rc.6":
version "9.0.0-rc.6"
resolved "https://registry.yarnpkg.com/@intlify/runtime/-/runtime-9.0.0-rc.6.tgz#033af22fe2d7dfcf4970f013a4f9645609907a70"
integrity sha512-z1lc4mmpRknTHjN3w5m9vmACidCo+Xm/2J6zMHhh23UEbCrIoaSKTFqs87aj5crX1CJvAc8rwGD1s2+QcHaEZQ==
dependencies:
"@intlify/message-compiler" "9.0.0-rc.6"
"@intlify/message-resolver" "9.0.0-rc.6"
"@intlify/shared" "9.0.0-rc.6"
"@intlify/shared@9.0.0-beta.16":
version "9.0.0-beta.16"
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.0.0-beta.16.tgz#51a80ca4705c93cb14c8f06398dfc550df09d67d"
integrity sha512-A7GSOovcZn/NMoAmDc8FG9uRcFv6iygriK8+C6HFeOnMQ9X+T9f5A9bPtXhCOCiRpQm9SUtGqXedxO5Y8rz9/A==
"@intlify/shared@9.0.0-rc.6", "@intlify/shared@^9.0.0-beta.16", "@intlify/shared@^9.0.0-rc.5":
version "9.0.0-rc.6"
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.0.0-rc.6.tgz#577cd9be261dd54472d934b2fefd2c6a8e6a23fe"
integrity sha512-6TFGAUcxgEIGvNxeBAUTvzyAdd/rAjsOLTIUTKLQX2JYypCwmTRPsT3wGWAUfvLxnKK62wyE+s4pI3dPNGz+vQ==
"@intlify/vue-i18n-loader@2.0.0-rc.1":
version "2.0.0-rc.1"
resolved "https://registry.yarnpkg.com/@intlify/vue-i18n-loader/-/vue-i18n-loader-2.0.0-rc.1.tgz#d58cee8989eb585c73bfc01bf9360efbd92bd334"
integrity sha512-7d4MTfF4UnBexdn/E+xY6FjgtjsSVQ38FE48pp28sKIx+SrM7SIhSEBNvkM1gKxcoJv0R6B1UJ3VSfqvykDVBQ==
dependencies:
"@intlify/cli" "^0.2.0"
"@intlify/shared" "^9.0.0-rc.5"
loader-utils "^2.0.0"
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
@@ -8830,7 +8923,7 @@
"@vue/compiler-core" "3.0.9"
"@vue/shared" "3.0.9"
"@vue/compiler-sfc@3.0.9":
"@vue/compiler-sfc@3.0.9", "@vue/compiler-sfc@^3.0.5":
version "3.0.9"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.9.tgz#0f993a6e159ca6ad351d8ee0c4734771d2590115"
integrity sha512-meneFRb9xIDgv/gYWCr9xKryvPi0tVffQzLjCkyN4RF1EndqLS71xugUX9wQsS4F1SAP+zlZbcgMFmTSC4OpHw==
@@ -8876,6 +8969,11 @@
optionalDependencies:
prettier "^1.18.2"
"@vue/devtools-api@^6.0.0-beta.5":
version "6.0.0-beta.6"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.6.tgz#bceabad6631156c57bdf790bfbbd5df27545e2a2"
integrity sha512-BRQOUjncqTRmYRXH76TWYYzi3O+Xhto2/wD6GN30pbFoYimgJHCwfYaeL8iSZ2aBTNHgO9Rd73qXt1kn9p3S8g==
"@vue/preload-webpack-plugin@^1.1.0":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab"
@@ -8915,15 +9013,6 @@
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.9.tgz#09882d745ded52b07e4481d036659d733edd2a9a"
integrity sha512-lv20q1O5dybwro+V+vnxHCmSIxi9mvTORSgAbGrANGYK8zF4K1S9TOankIvdkcvfZ88IR95O2pTI2Pb3c3BaNg==
"@vue/test-utils@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.3.tgz#747f5683d8d4633c85a385fe2e02c1bb35bec153"
integrity sha512-BAY1Cwe9JpkJseimC295EW3YlAmgIJI9OPkg2FSP62+PHZooB0B+wceDi9TYyU57oqzL0yLbcP73JKFpKiLc9A==
dependencies:
dom-event-types "^1.0.0"
lodash "^4.17.15"
pretty "^2.0.0"
"@vue/test-utils@^2.0.0-rc.4":
version "2.0.0-rc.6"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.0.0-rc.6.tgz#d0aac24d20450d379e183f70542c0822670b8783"
@@ -16444,11 +16533,6 @@ dom-converter@^0.2:
dependencies:
utila "~0.4"
dom-event-types@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae"
integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==
dom-helpers@^3.2.1, dom-helpers@^3.3.1, dom-helpers@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8"
@@ -17810,6 +17894,15 @@ eslint@^6.1.0, eslint@^6.6.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
"espree@^6.0.0 || ^7.2.0", espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
dependencies:
acorn "^7.4.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
espree@^6.1.2, espree@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
@@ -17819,15 +17912,6 @@ espree@^6.1.2, espree@^6.2.1:
acorn-jsx "^5.2.0"
eslint-visitor-keys "^1.1.0"
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
dependencies:
acorn "^7.4.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
esprima-fb@~15001.1001.0-dev-harmony-fb:
version "15001.1001.0-dev-harmony-fb"
resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz#43beb57ec26e8cf237d3dd8b33e42533577f2659"
@@ -24206,13 +24290,21 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
json5@^2.1.0, json5@^2.1.1, json5@^2.1.2, json5@^2.1.3:
json5@^2.1.0, json5@^2.1.2, json5@^2.1.3:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
dependencies:
minimist "^1.2.5"
jsonc-eslint-parser@^0.6.0:
version "0.6.2"
resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-0.6.2.tgz#f538179902f1c2edcb710507194b5333294b7079"
integrity sha512-8WlcrtXwiio5/E1J1cpaeBW5jFTHMcFLmlqOhQTbta0kn5hiOM/B56tky/ZJQP7SyHhpVj3zDvaXkVyedYi/LA==
dependencies:
eslint-visitor-keys "^1.3.0"
espree "^6.0.0 || ^7.2.0"
jsonc-parser@3.0.0, jsonc-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
@@ -31006,7 +31098,7 @@ pretty-ms@7.0.0:
dependencies:
parse-ms "^2.1.0"
pretty@2.0.0, pretty@^2.0.0:
pretty@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5"
integrity sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=
@@ -33741,13 +33833,6 @@ rxjs@6.4.0:
dependencies:
tslib "^1.9.0"
rxjs@6.6.2:
version "6.6.2"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2"
integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==
dependencies:
tslib "^1.9.0"
rxjs@6.6.3:
version "6.6.3"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
@@ -33755,7 +33840,7 @@ rxjs@6.6.3:
dependencies:
tslib "^1.9.0"
rxjs@6.6.7, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.4, rxjs@^6.6.0, rxjs@^6.6.6:
rxjs@6.6.7, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.4, rxjs@^6.6.0, rxjs@^6.6.6, rxjs@~6.6.0:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
@@ -37395,7 +37480,7 @@ tslib@2.1.0, tslib@~2.1.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
tslib@2.2.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0:
tslib@2.2.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"
integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==
@@ -37614,6 +37699,11 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@3.9.6:
version "3.9.6"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a"
integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==
typescript@4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72"
@@ -38858,12 +38948,25 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-i18n@8.9.0:
version "8.9.0"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.9.0.tgz#5f084001fe5b4c7ad8c00ee5f11396a88ff2e55b"
integrity sha512-8wr/D9yU8CLC8ne9stdQn/N58E7GRSUSO75bCucj2AIFTDyjGfoze5RxFvh2w3e7yxgnz5x+ooOIcoX59PHguQ==
vue-i18n@9.0.0-rc.6:
version "9.0.0-rc.6"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.0.0-rc.6.tgz#c92fcc6981ca84aee350cd8f939c226f5a1814b9"
integrity sha512-CrFLzT/BhTjtemgZ9qOjPxvrVxBxj6osV5oYeCLo5Xd8My617sIu72NGLwDjXRLGW5A/UCh0SUffMYlKL/eecw==
dependencies:
"@intlify/core-base" "9.0.0-rc.6"
"@intlify/shared" "9.0.0-rc.6"
"@vue/devtools-api" "^6.0.0-beta.5"
vue-loader@15.9.3, vue-loader@^15.9.2:
vue-loader@16.1.2:
version "16.1.2"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.1.2.tgz#5c03b6c50d2a5f983c7ceba15c50d78ca2b298f4"
integrity sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==
dependencies:
chalk "^4.1.0"
hash-sum "^2.0.0"
loader-utils "^2.0.0"
vue-loader@^15.9.2:
version "15.9.3"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.3.tgz#0de35d9e555d3ed53969516cac5ce25531299dda"
integrity sha512-Y67VnGGgVLH5Voostx8JBZgPQTlDQeOVBLOEsjc2cXbCYBKexSKEpOA56x0YZofoDOTszrLnIShyOX1p9uCEHA==
@@ -38874,12 +38977,12 @@ vue-loader@15.9.3, vue-loader@^15.9.2:
vue-hot-reload-api "^2.3.0"
vue-style-loader "^4.1.0"
vue-router@3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.5.tgz#24636923c7f1a62da3a577cf75a058f9fa328581"
integrity sha512-DGU+7+eeiSq/oNZ6epA/rcNkAd0m2+uugR5i4Eh4KBvclUmorvNJ6iForYjQkgvKi9GdamybaMpl85eDgxM2eQ==
vue-router@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.3.tgz#8b26050c88b2dec7e27a88835f71046b365823ec"
integrity sha512-AD1OjtVPyQHTSpoRsEGfPpxRQwhAhxcacOYO3zJ3KNkYP/r09mileSp6kdMQKhZWP2cFsPR3E2M3PZguSN5/ww==
vue-style-loader@4.1.2, vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
vue-style-loader@4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8"
integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==
@@ -38887,6 +38990,14 @@ vue-style-loader@4.1.2, vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
version "4.1.3"
resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35"
integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==
dependencies:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
vue-template-compiler@2.6.12, vue-template-compiler@^2.6.11:
version "2.6.12"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e"
@@ -38900,11 +39011,6 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@2.6.12:
version "2.6.12"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==
vue@3.0.11:
version "3.0.11"
resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.11.tgz#c82f9594cbf4dcc869241d4c8dd3e08d9a8f4b5f"
@@ -38914,10 +39020,10 @@ vue@3.0.11:
"@vue/runtime-dom" "3.0.11"
"@vue/shared" "3.0.11"
vuex@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.1.tgz#0c264bfe30cdbccf96ab9db3177d211828a5910e"
integrity sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==
vuex@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.0.0.tgz#ac877aa76a9c45368c979471e461b520d38e6cf5"
integrity sha512-56VPujlHscP5q/e7Jlpqc40sja4vOhC4uJD1llBCWolVI8ND4+VzisDVkUMl+z5y0MpIImW6HjhNc+ZvuizgOw==
w3c-hr-time@^1.0.1:
version "1.0.2"
@@ -40304,6 +40410,24 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yaml-eslint-parser@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-0.2.2.tgz#20106054b369bb16f91c93d80bdee34009042abe"
integrity sha512-Fkq4kSc8VvEFEM6aOnpHy3iM2erxZedIc+kU97+FvGiJyI8MmbZdMfdw4tbemaa2Qvl/gFUnKyuIQz6PcHEj1A==
dependencies:
eslint-visitor-keys "^1.3.0"
yaml "^1.10.0"
yaml-unist-parser "^1.2.1"
yaml-unist-parser@^1.2.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/yaml-unist-parser/-/yaml-unist-parser-1.3.1.tgz#4305a54d8f8750dfff782bb998ff93d0da538d1a"
integrity sha512-4aHBMpYcnByF8l2OKj5hlBJlxSYIMON8Z1Hm57ymbBL4omXMlGgY+pEf4Di6h2qNT8ZG8seTVvAQYNOa7CZ9eA==
dependencies:
lines-and-columns "^1.1.6"
tslib "^1.10.0"
yaml "^1.10.0"
yaml@^1.10.0, yaml@^1.7.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"