mirror of
https://github.com/cypress-io/cypress.git
synced 2026-03-05 22:39:28 -06:00
feat: simplify vite server (#15416)
This commit is contained in:
committed by
GitHub
parent
651df1b2ad
commit
adc2fc893f
@@ -1164,7 +1164,13 @@ jobs:
|
||||
at: ~/
|
||||
- run:
|
||||
name: Run tests
|
||||
command: yarn workspace @cypress/vite-dev-server test
|
||||
command: yarn test --reporter cypress-circleci-reporter --reporter-options resultsDir=./test_results
|
||||
working_directory: npm/vite-dev-server
|
||||
- store_test_results:
|
||||
path: npm/vite-dev-server/test_results
|
||||
- store_artifacts:
|
||||
path: npm/vite-dev-server/cypress/videos
|
||||
- store-npm-logs
|
||||
|
||||
npm-rollup-dev-server:
|
||||
<<: *defaults
|
||||
|
||||
@@ -12,6 +12,5 @@
|
||||
"**/__image_snapshots__/*"
|
||||
],
|
||||
"componentFolder": "src",
|
||||
"experimentalFetchPolyfill": true,
|
||||
"fixturesFolder": false
|
||||
}
|
||||
@@ -1,72 +1,11 @@
|
||||
// @ts-check
|
||||
const { startDevServer } = require('@cypress/webpack-dev-server')
|
||||
const path = require('path')
|
||||
const babelConfig = require('../../babel.config.js')
|
||||
|
||||
/** @type import("webpack").Configuration */
|
||||
const webpackConfig = {
|
||||
resolve: {
|
||||
extensions: ['.js', '.ts', '.jsx', '.tsx', '.scss', '.css'],
|
||||
},
|
||||
mode: 'development',
|
||||
devtool: false,
|
||||
output: {
|
||||
publicPath: '/',
|
||||
chunkFilename: '[name].bundle.js',
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.(js|jsx|mjs|ts|tsx)$/,
|
||||
loader: 'babel-loader',
|
||||
options: { ...babelConfig, cacheDirectory: path.resolve(__dirname, '..', '..', '.babel-cache') },
|
||||
},
|
||||
{
|
||||
test: /\.modules?\.s[ac]ss$/i,
|
||||
exclude: [/node_modules/],
|
||||
use: [
|
||||
'style-loader',
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
modules: true,
|
||||
},
|
||||
},
|
||||
'sass-loader',
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.s[ac]ss$/i,
|
||||
exclude: [/node_modules/, /\.modules?\.s[ac]ss$/i],
|
||||
use: ['style-loader', 'css-loader', 'sass-loader'],
|
||||
},
|
||||
{
|
||||
// some of our examples import SVG
|
||||
test: /\.svg$/,
|
||||
loader: 'svg-url-loader',
|
||||
},
|
||||
{
|
||||
// some of our examples import SVG
|
||||
test: /\.svg$/,
|
||||
loader: 'svg-url-loader',
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpg)$/,
|
||||
use: ['file-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.(svg|eot|woff|woff2|ttf)$/,
|
||||
use: ['file-loader'],
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
const { startDevServer } = require('@cypress/vite-dev-server')
|
||||
|
||||
/**
|
||||
* @type Cypress.PluginConfig
|
||||
*/
|
||||
module.exports = (on, config) => {
|
||||
on('dev-server:start', (options) => startDevServer({ options, webpackConfig, disableLazyCompilation: false }))
|
||||
on('dev-server:start', (options) => startDevServer({ options }))
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
11
npm/design-system/index.html
Normal file
11
npm/design-system/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>AUT Frame</title>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
@@ -31,7 +31,7 @@
|
||||
"@babel/preset-react": "7.0.0",
|
||||
"@babel/preset-typescript": "7.10.4",
|
||||
"@cypress/react": "0.0.0-development",
|
||||
"@cypress/webpack-dev-server": "0.0.0-development",
|
||||
"@cypress/vite-dev-server": "0.0.0-development",
|
||||
"@percy/cypress": "2.3.2",
|
||||
"@rollup/plugin-commonjs": "^17.1.0",
|
||||
"@rollup/plugin-image": "2.0.6",
|
||||
@@ -53,11 +53,8 @@
|
||||
"rollup-plugin-postcss-modules": "2.0.2",
|
||||
"rollup-plugin-typescript2": "^0.29.0",
|
||||
"sass": "1.32.8",
|
||||
"sass-loader": "10.1.1",
|
||||
"style-loader": "0.23.1",
|
||||
"svg-url-loader": "3.0.3",
|
||||
"typescript": "4.0.3",
|
||||
"webpack": "4.44.1"
|
||||
"vite": "2.1.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^=16.x || ^=17.x",
|
||||
|
||||
@@ -21,13 +21,34 @@
|
||||
return node
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the requested spec file.
|
||||
* Nollup writes everything to a single directory (eg /dist)
|
||||
* All outputted files are *.js.
|
||||
* RunnerCt requests specs using the original filename including extension.
|
||||
*
|
||||
* Example usage:
|
||||
* formatSpecName('/cypress/component/foo.spec.tsx') //=> 'foo.spec.js'
|
||||
*/
|
||||
function formatSpecName (filename) {
|
||||
const split = filename.split('/')
|
||||
const name = split[split.length - 1]
|
||||
const pos = name.lastIndexOf('.')
|
||||
const newName = `${name.substr(0, pos < 0 ? name.length : pos)}.js`
|
||||
|
||||
return `/${newName}`
|
||||
}
|
||||
|
||||
const Cypress = window.Cypress = parent.Cypress
|
||||
|
||||
const specPath = `/__cypress/src/${formatSpecName(window.location.pathname)}`
|
||||
|
||||
const importsToLoad = [
|
||||
() => import('{{{specPath}}}'),
|
||||
() => {
|
||||
{{{supportFile}}}
|
||||
}
|
||||
},
|
||||
() => import(specPath),
|
||||
|
||||
]
|
||||
|
||||
Cypress.onSpecWindow(window, importsToLoad)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"build-prod": "tsc",
|
||||
"cy:open": "node ../../scripts/start.js --component-testing --project ${PWD}",
|
||||
"cy:open": "node ../../scripts/cypress.js open-ct --project ${PWD}",
|
||||
"cy:run": "node ../../scripts/cypress.js run-ct --project ${PWD}",
|
||||
"test": "yarn cy:run",
|
||||
"watch": "tsc -w"
|
||||
|
||||
@@ -6,33 +6,11 @@ import { Express } from 'express'
|
||||
const indexHtmlPath = resolve(__dirname, '../index-template.html')
|
||||
const readIndexHtml = () => readFileSync(indexHtmlPath).toString()
|
||||
|
||||
/**
|
||||
* Rormat the requested spec file.
|
||||
* Nollup writes everything to a single directory (eg /dist)
|
||||
* All outputted files are *.js.
|
||||
* RunnerCt requests specs using the original filename including extension.
|
||||
*
|
||||
* Example usage:
|
||||
* formatSpecName('/cypress/component/foo.spec.tsx') //=> 'foo.spec.js'
|
||||
*/
|
||||
function formatSpecName (publicPath: string, filename: string) {
|
||||
const split = filename.split('/')
|
||||
const name = split[split.length - 1]
|
||||
const pos = name.lastIndexOf('.')
|
||||
const newName = `${name.substr(0, pos < 0 ? name.length : pos)}.js`
|
||||
|
||||
return `${publicPath}/${newName}`
|
||||
}
|
||||
|
||||
function handleIndex (indexHtml: string, publicPath: string, supportFilePath: string, cypressSpecPath: string) {
|
||||
const specPath = `/${cypressSpecPath}`
|
||||
|
||||
console.log(supportFilePath)
|
||||
function handleIndex (indexHtml: string, projectRoot: string, supportFilePath: string) {
|
||||
const supportFile = readFileSync(supportFilePath).toString()
|
||||
|
||||
return render(indexHtml, {
|
||||
supportFile,
|
||||
specPath: formatSpecName(publicPath, specPath),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -47,9 +25,8 @@ export const makeHtmlPlugin = (
|
||||
server.use(`${publicPath}/index.html`, (req, res) => {
|
||||
const html = handleIndex(
|
||||
indexHtml,
|
||||
publicPath,
|
||||
projectRoot,
|
||||
supportFilePath,
|
||||
req.headers.__cypress_spec_path as string,
|
||||
)
|
||||
|
||||
res.end(html)
|
||||
|
||||
48
npm/vite-dev-server/client/initCypressTests.js
Normal file
48
npm/vite-dev-server/client/initCypressTests.js
Normal file
@@ -0,0 +1,48 @@
|
||||
// This file is merged in a <script type=module> into index.html
|
||||
// it will be used to load and kick start the selected spec
|
||||
|
||||
const supportPath = import.meta.env.__cypress_supportPath
|
||||
const originAutUrl = import.meta.env.__cypress_originAutUrl
|
||||
|
||||
const specPath = window.location.pathname.replace(originAutUrl, '')
|
||||
|
||||
const importsToLoad = [() => import(/* @vite-ignore */ specPath)]
|
||||
|
||||
if (supportPath) {
|
||||
importsToLoad.unshift(() => import(/* @vite-ignore */ supportPath))
|
||||
}
|
||||
|
||||
const CypressInstance = window.Cypress = parent.Cypress
|
||||
|
||||
if (!CypressInstance) {
|
||||
throw new Error('Tests cannot run without a reference to Cypress!')
|
||||
}
|
||||
|
||||
// load the support and spec
|
||||
CypressInstance.onSpecWindow(window, importsToLoad)
|
||||
|
||||
// then start the test process
|
||||
CypressInstance.action('app:window:before:load', window)
|
||||
|
||||
// Before all tests we are mounting the root element,
|
||||
// Cleaning up platform between tests is the responsibility of the specific adapter
|
||||
// because unmounting react/vue component should be done using specific framework API
|
||||
// (for devtools and to get rid of global event listeners from previous tests.)
|
||||
CypressInstance.on('test:before:run', () => {
|
||||
// leave the error overlay alone if it exists
|
||||
if (document.body.querySelectorAll('vite-error-overlay').length) {
|
||||
// make the error more readable by giving it more space
|
||||
Cypress.action('cy:viewport:changed', { viewportWidth: 1000, viewportHeight: 500 })
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// reset the viewport to default when in normal mode
|
||||
Cypress.action('cy:viewport:changed', {
|
||||
viewportWidth: Cypress.config('viewportWidth'),
|
||||
viewportHeight: Cypress.config('viewportHeight'),
|
||||
})
|
||||
})
|
||||
|
||||
// Make usage of node test plugins possible
|
||||
window.global = window
|
||||
@@ -1,5 +0,0 @@
|
||||
import React from 'react'
|
||||
|
||||
export const Foo: React.FC = () => {
|
||||
return <div>Hello world!!!!</div>
|
||||
}
|
||||
10
npm/vite-dev-server/cypress/components/react/Foo.tsx
Normal file
10
npm/vite-dev-server/cypress/components/react/Foo.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import React from 'react'
|
||||
import './foo.css'
|
||||
import logo from './logo.png'
|
||||
|
||||
export const Foo: React.FC = () => {
|
||||
return (<>
|
||||
<div>Hello world!!!!</div>
|
||||
<img src={logo} />
|
||||
</>)
|
||||
}
|
||||
10
npm/vite-dev-server/cypress/components/react/foo.css
Normal file
10
npm/vite-dev-server/cypress/components/react/foo.css
Normal file
@@ -0,0 +1,10 @@
|
||||
div{
|
||||
color: white;
|
||||
background: hotpink;
|
||||
padding: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
img{
|
||||
width:50%;
|
||||
}
|
||||
BIN
npm/vite-dev-server/cypress/components/react/logo.png
Normal file
BIN
npm/vite-dev-server/cypress/components/react/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
@@ -13,10 +13,12 @@ describe('React', () => {
|
||||
cy.get('div').contains('Hello world')
|
||||
})
|
||||
|
||||
it('renders a react component #3', () => {
|
||||
mount(<Foo />)
|
||||
cy.get('div').contains('Hello world')
|
||||
})
|
||||
it('renders a react component with a different viewport',
|
||||
{ viewportWidth: 200, viewportHeight: 170 },
|
||||
() => {
|
||||
mount(<Foo />)
|
||||
cy.get('div').contains('Hello world')
|
||||
})
|
||||
|
||||
it('renders a react component #4', () => {
|
||||
mount(<Foo />)
|
||||
41
npm/vite-dev-server/cypress/components/vue/Card/Card.spec.js
Normal file
41
npm/vite-dev-server/cypress/components/vue/Card/Card.spec.js
Normal file
@@ -0,0 +1,41 @@
|
||||
// In this test file we demo how to test a component with slots and a scoped slot.
|
||||
|
||||
// Usage is the same as Vue Test Utils, since slots and scopedSlots
|
||||
// in the render options are directly passed through to the Utils mount().
|
||||
|
||||
/// <reference types="cypress" />
|
||||
import { mount } from '@cypress/vue'
|
||||
|
||||
import Card from './Card.vue'
|
||||
|
||||
describe('Card', () => {
|
||||
it('skipped slots', () => {
|
||||
mount(Card)
|
||||
cy.contains('Nothing used the Scoped content!').should('be.visible')
|
||||
})
|
||||
|
||||
it('renders slots', () => {
|
||||
mount(Card, {
|
||||
slots: {
|
||||
header: '<h1>HEADER</h1>',
|
||||
footer: '<div>FOOTER</div>',
|
||||
},
|
||||
})
|
||||
|
||||
cy.contains('h1', 'HEADER')
|
||||
cy.contains('div', 'FOOTER')
|
||||
})
|
||||
|
||||
it('renders scopedSlots', () => {
|
||||
mount(Card, {
|
||||
slots: {
|
||||
default: `<template #default="props">
|
||||
<p>Yay! {{props.content}}</p>
|
||||
</template>`,
|
||||
},
|
||||
})
|
||||
|
||||
cy.contains('Yay! Scoped content!').should('be.visible')
|
||||
cy.contains('Nothing used the Scoped content!').should('not.exist')
|
||||
})
|
||||
})
|
||||
24
npm/vite-dev-server/cypress/components/vue/Card/Card.vue
Normal file
24
npm/vite-dev-server/cypress/components/vue/Card/Card.vue
Normal file
@@ -0,0 +1,24 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<img src="./logo.png" />
|
||||
<slot name="header" />
|
||||
<slot :content="content">
|
||||
<!-- Fallback content if no default slot is given -->
|
||||
<p>Nothing used the {{ content }}</p>
|
||||
</slot>
|
||||
<slot name="footer" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// example from https://github.com/testing-library/vue-testing-library/blob/master/src/__tests__/components/Card.vue
|
||||
// For the sake of demoing scopedSlots, this Card component
|
||||
// passes a simple string down to its default slot.
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
content: "Scoped content!",
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
BIN
npm/vite-dev-server/cypress/components/vue/Card/logo.png
Normal file
BIN
npm/vite-dev-server/cypress/components/vue/Card/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
@@ -0,0 +1,16 @@
|
||||
/// <reference types="cypress" />
|
||||
import { mount } from '@cypress/vue'
|
||||
import Hello from './Hello.vue'
|
||||
|
||||
describe('Hello', () => {
|
||||
it('shows error for short text', () => {
|
||||
cy.viewport(300, 200)
|
||||
mount(Hello)
|
||||
// use the component like a real user
|
||||
cy.findByRole('textbox').type('abc')
|
||||
cy.contains('.error', 'enter a longer username')
|
||||
// now enter a longer string
|
||||
cy.findByRole('textbox').type('12345')
|
||||
cy.get('.error').should('not.exist')
|
||||
})
|
||||
})
|
||||
43
npm/vite-dev-server/cypress/components/vue/Hello/Hello.vue
Normal file
43
npm/vite-dev-server/cypress/components/vue/Hello/Hello.vue
Normal file
@@ -0,0 +1,43 @@
|
||||
<template>
|
||||
<div class="wrapper">
|
||||
<input v-model="username" />
|
||||
<div v-if="error" class="error">{{ error }}</div>
|
||||
<img src="./logo.png" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "Hello",
|
||||
data() {
|
||||
return {
|
||||
username: "",
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
error() {
|
||||
console.log(this.username);
|
||||
return this.username.trim().length < 7
|
||||
? "Please enter a longer username"
|
||||
: "";
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.wrapper {
|
||||
background: hotpink;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
input {
|
||||
display: block;
|
||||
margin: 20px auto;
|
||||
}
|
||||
img {
|
||||
width: 50px;
|
||||
}
|
||||
</style>
|
||||
BIN
npm/vite-dev-server/cypress/components/vue/Hello/logo.png
Normal file
BIN
npm/vite-dev-server/cypress/components/vue/Hello/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
@@ -1,7 +1,13 @@
|
||||
import { startDevServer } from '@cypress/vite-dev-server'
|
||||
import viteConfig from '../vite.config'
|
||||
|
||||
module.exports = (on, config) => {
|
||||
on('dev-server:start', async (options) => startDevServer({ options }))
|
||||
on('dev-server:start', async (options) => {
|
||||
return startDevServer({
|
||||
options,
|
||||
viteConfig,
|
||||
})
|
||||
})
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import '@testing-library/cypress/add-commands'
|
||||
|
||||
before(() => {
|
||||
window.supportFileWasLoaded = true
|
||||
})
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Components App</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module">
|
||||
|
||||
function appendTargetIfNotExists (id, tag = 'div', parent = document.body) {
|
||||
let node = document.getElementById(id)
|
||||
|
||||
if (!node) {
|
||||
node = document.createElement(tag)
|
||||
node.setAttribute('id', id)
|
||||
parent.appendChild(node)
|
||||
}
|
||||
|
||||
node.innerHTML = ''
|
||||
|
||||
return node
|
||||
}
|
||||
|
||||
const specPath = "{{{specPath}}}"
|
||||
|
||||
let importsToLoad = [() => import(specPath).catch(e => {
|
||||
// if the import failed, it might be because of dependencies
|
||||
// so we try a quick refresh just in case it is
|
||||
|
||||
// Since vite does not work with IE we can use URLSearchParams without polyfill
|
||||
const searchParams = new URLSearchParams(window.location.search);
|
||||
const r = searchParams.has("refresh") ? parseInt(searchParams.get("refresh"), 10) + 1 : 0
|
||||
// limit the number of refresh (dependency discovery depths)
|
||||
// to 2 instead of 1 for React-DOM
|
||||
if (r < 2) {
|
||||
searchParams.set('refresh', r)
|
||||
window.location.search = searchParams
|
||||
} else {
|
||||
throw new Error(`
|
||||
**Error during compilation.**
|
||||
Check the terminal log for more info
|
||||
`, e)
|
||||
}
|
||||
})];
|
||||
if ("{{{supportPath}}}") {
|
||||
importsToLoad.push(() => import("{{{supportPath}}}"));
|
||||
}
|
||||
|
||||
const Cypress = window.Cypress = parent.Cypress
|
||||
|
||||
if (!Cypress) {
|
||||
throw new Error('Tests cannot run without a reference to Cypress!')
|
||||
}
|
||||
|
||||
Cypress.onSpecWindow(window, importsToLoad)
|
||||
Cypress.action('app:window:before:load', window)
|
||||
|
||||
before(() => {
|
||||
const root = appendTargetIfNotExists('__cy_root')
|
||||
|
||||
root.appendChild(appendTargetIfNotExists('__cy_app'))
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
3
npm/vite-dev-server/index.d.ts
vendored
3
npm/vite-dev-server/index.d.ts
vendored
@@ -1,2 +1 @@
|
||||
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
||||
/// <reference path="../../cli/types/cypress.d.ts" />
|
||||
export * from "./dist"
|
||||
|
||||
12
npm/vite-dev-server/index.html
Normal file
12
npm/vite-dev-server/index.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>AUT Frame</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="__cy_root"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -12,19 +12,27 @@
|
||||
"watch": "tsc -w"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": "4.3.2",
|
||||
"mustache": "4.1.0"
|
||||
"debug": "4.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/mustache": "4.1.1",
|
||||
"vite": "2.0.5"
|
||||
"@cypress/react": "0.0.0-development",
|
||||
"@cypress/vue": "3.0.0-alpha.4",
|
||||
"@testing-library/cypress": "7.0.4",
|
||||
"@vitejs/plugin-vue": "1.2.0",
|
||||
"@vue/compiler-sfc": "3.0.9",
|
||||
"cypress": "0.0.0-development",
|
||||
"cypress-circleci-reporter": "0.2.0",
|
||||
"react": "17.0.2",
|
||||
"vite": "2.1.3",
|
||||
"vue": "3.0.9"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vite": ">= 2"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"index-template.html"
|
||||
"client",
|
||||
"index.html"
|
||||
],
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -33,6 +41,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/cypress-io/cypress/tree/master/npm/vite-dev-server#readme",
|
||||
"bugs": "https://github.com/cypress-io/cypress/issues/new?template=1-bug-report.md",
|
||||
"module": "dist/index.js",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
|
||||
@@ -27,11 +27,10 @@ export interface ResolvedDevServerConfig {
|
||||
export async function startDevServer (startDevServerArgs: StartDevServer): Promise<ResolvedDevServerConfig> {
|
||||
const viteDevServer = await createDevServer(startDevServerArgs)
|
||||
|
||||
return new Promise(async (resolve) => {
|
||||
const app = await viteDevServer.listen()
|
||||
const port = app.config.server.port
|
||||
const app = await viteDevServer.listen()
|
||||
const port = app.config.server.port
|
||||
|
||||
debug('Component testing vite server started on port', port)
|
||||
resolve({ port, server: app.httpServer })
|
||||
})
|
||||
debug('Component testing vite server started on port', port)
|
||||
|
||||
return { port, server: app.httpServer }
|
||||
}
|
||||
|
||||
@@ -1,41 +1,58 @@
|
||||
import { EventEmitter } from 'events'
|
||||
import { relative, resolve } from 'path'
|
||||
import { readFileSync } from 'fs'
|
||||
import { resolve } from 'path'
|
||||
import { readFile } from 'fs'
|
||||
import { promisify } from 'util'
|
||||
import { Plugin, ViteDevServer } from 'vite'
|
||||
import { render } from 'mustache'
|
||||
|
||||
const read = promisify(readFile)
|
||||
|
||||
const pluginName = 'cypress-transform-html'
|
||||
const indexHtmlPath = resolve(__dirname, '../index-template.html')
|
||||
const readIndexHtml = () => readFileSync(indexHtmlPath).toString()
|
||||
|
||||
function handleIndex (indexHtml, projectRoot, publicPath, supportFilePath, req, res) {
|
||||
const specPath = `${publicPath}/${req.headers.__cypress_spec_path}`
|
||||
const supportPath = supportFilePath ? `/${relative(projectRoot, supportFilePath)}` : null
|
||||
|
||||
res.end(render(indexHtml, { supportPath, specPath }))
|
||||
}
|
||||
const INIT_FILEPATH = resolve(__dirname, '../client/initCypressTests.js')
|
||||
|
||||
export const makeCypressPlugin = (
|
||||
projectRoot: string,
|
||||
supportFilePath: string,
|
||||
publicPath: string,
|
||||
devServerEvents: EventEmitter,
|
||||
): Plugin => {
|
||||
let base = '/'
|
||||
|
||||
return {
|
||||
name: pluginName,
|
||||
enforce: 'pre',
|
||||
configureServer: (server: ViteDevServer) => {
|
||||
const indexHtml = readIndexHtml()
|
||||
config (_, env) {
|
||||
if (env) {
|
||||
return {
|
||||
define: {
|
||||
'import.meta.env.__cypress_supportPath': JSON.stringify(resolve(projectRoot, supportFilePath)),
|
||||
'import.meta.env.__cypress_originAutUrl': JSON.stringify('__cypress/iframes/'),
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
configResolved (config) {
|
||||
base = config.base
|
||||
},
|
||||
transformIndexHtml () {
|
||||
return [
|
||||
{
|
||||
tag: 'script',
|
||||
attrs: { type: 'module', src: INIT_FILEPATH },
|
||||
},
|
||||
]
|
||||
},
|
||||
configureServer: async (server: ViteDevServer) => {
|
||||
const indexHtml = await read(resolve(__dirname, '..', 'index.html'), { encoding: 'utf8' })
|
||||
|
||||
server.middlewares.use(`${publicPath}/index.html`, (req, res) => handleIndex(indexHtml, projectRoot, publicPath, supportFilePath, req, res))
|
||||
const transformedIndexHtml = await server.transformIndexHtml(base, indexHtml)
|
||||
|
||||
server.middlewares.use(`${base}index.html`, (req, res) => res.end(transformedIndexHtml))
|
||||
},
|
||||
handleHotUpdate: () => {
|
||||
// restart tests when code is updated
|
||||
devServerEvents.emit('dev-server:compile:success')
|
||||
|
||||
return []
|
||||
},
|
||||
// TODO subscribe on the compile error hook and call the
|
||||
// devServerEvents.emit('dev-server:compile:error', err)
|
||||
// it looks like for now (02.02.2021) there is no way to subscribe to an error
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,28 @@
|
||||
import Debug from 'debug'
|
||||
import { StartDevServer } from '.'
|
||||
import { createServer, ViteDevServer, InlineConfig } from 'vite'
|
||||
import { resolve } from 'path'
|
||||
import { dirname, resolve } from 'path'
|
||||
import { makeCypressPlugin } from './makeCypressPlugin'
|
||||
import { EventEmitter } from 'events'
|
||||
|
||||
const debug = Debug('cypress:vite-dev-server:start')
|
||||
|
||||
// TODO: Pull in types for Options so we can infer these
|
||||
const serverConfig = (projectRoot: string, supportFilePath: string, publicPath: string, devServerEvents: EventEmitter): InlineConfig => {
|
||||
const serverConfig = (projectRoot: string, supportFilePath: string, devServerEvents: EventEmitter): InlineConfig => {
|
||||
return {
|
||||
root: resolve(__dirname, projectRoot),
|
||||
base: '/__cypress/src/',
|
||||
plugins: [makeCypressPlugin(projectRoot, supportFilePath, publicPath, devServerEvents)],
|
||||
plugins: [makeCypressPlugin(projectRoot, supportFilePath, devServerEvents)],
|
||||
server: {
|
||||
port: 0,
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
// Necessary to avoid a "prefixIdentifiers" issue from slots mounting
|
||||
// Could be resolved in test-utils
|
||||
'@vue/compiler-core': resolve(dirname(require.resolve('@vue/compiler-core')), 'dist', 'compiler-core.cjs.js'),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +30,6 @@ const resolveServerConfig = ({ viteConfig, options }: StartDevServer) => {
|
||||
const defaultServerConfig = serverConfig(
|
||||
options.config.projectRoot,
|
||||
options.config.supportFile,
|
||||
options.config.devServerPublicPathRoute,
|
||||
options.devServerEvents,
|
||||
)
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Basic Options */
|
||||
"target": "es2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */,
|
||||
"target": "ESNEXT" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */,
|
||||
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
|
||||
"moduleResolution": "node",
|
||||
"skipLibCheck": true,
|
||||
"lib": [
|
||||
"es2015",
|
||||
|
||||
8
npm/vite-dev-server/vite.config.js
Normal file
8
npm/vite-dev-server/vite.config.js
Normal file
@@ -0,0 +1,8 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
vue(),
|
||||
],
|
||||
})
|
||||
1
npm/vue/cypress/support/index.js
Normal file
1
npm/vue/cypress/support/index.js
Normal file
@@ -0,0 +1 @@
|
||||
// created automatically when cy:open starts
|
||||
@@ -41,12 +41,12 @@
|
||||
"tailwindcss": "1.1.4",
|
||||
"typescript": "3.9.6",
|
||||
"unfetch": "4.1.0",
|
||||
"vue": "2.6.11",
|
||||
"vue": "2.6.12",
|
||||
"vue-i18n": "8.9.0",
|
||||
"vue-loader": "15.9.3",
|
||||
"vue-router": "3.0.5",
|
||||
"vue-style-loader": "4.1.2",
|
||||
"vue-template-compiler": "2.6.11",
|
||||
"vue-template-compiler": "2.6.12",
|
||||
"vuex": "3.1.1",
|
||||
"webpack": "4.42.0"
|
||||
},
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
"expect": "^26.6.2",
|
||||
"mocha": "^8.1.3"
|
||||
},
|
||||
"peerDependencies": {},
|
||||
"files": [
|
||||
"src"
|
||||
]
|
||||
|
||||
300
yarn.lock
300
yarn.lock
@@ -522,11 +522,21 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
|
||||
integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
|
||||
|
||||
"@babel/parser@^7.12.0":
|
||||
version "7.13.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88"
|
||||
integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==
|
||||
|
||||
"@babel/parser@^7.12.3":
|
||||
version "7.12.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd"
|
||||
integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==
|
||||
|
||||
"@babel/parser@^7.13.9":
|
||||
version "7.13.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
|
||||
integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.10.4", "@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.2.0", "@babel/plugin-proposal-async-generator-functions@^7.8.3":
|
||||
version "7.12.12"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566"
|
||||
@@ -1866,6 +1876,24 @@
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.12.0":
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
|
||||
integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.12.11"
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.13.0":
|
||||
version "7.13.14"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d"
|
||||
integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.12.11"
|
||||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.5.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae"
|
||||
@@ -2285,6 +2313,23 @@
|
||||
dependencies:
|
||||
css.escape "^1.5.1"
|
||||
|
||||
"@cypress/vue@3.0.0-alpha.4":
|
||||
version "3.0.0-alpha.4"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/vue/-/vue-3.0.0-alpha.4.tgz#32a75f56e0b6e10081083da62b6ab3d0ef9ea183"
|
||||
integrity sha512-AMPfyeRK+Ljo4qYFXWJEx5ATux13sMMK868ncH0DIWxE68NMueDqeClZaouDTjxwRTYj8BfmeGqVlqxY6VoIFw==
|
||||
dependencies:
|
||||
"@cypress/webpack-dev-server" "1.0.3"
|
||||
"@vue/test-utils" "^2.0.0-rc.1"
|
||||
|
||||
"@cypress/webpack-dev-server@1.0.3":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/webpack-dev-server/-/webpack-dev-server-1.0.3.tgz#efe261faa9d4724a90aeafdf679516dc23662c71"
|
||||
integrity sha512-lp2lKrhf1fLEtmmVBmHlFbbwbq+eagoJSk3Jynx0XvXQK1t2SbIUto//ZQvZpHCKb/SVaS+ZiibKPL8EsbROaw==
|
||||
dependencies:
|
||||
debug "4.3.2"
|
||||
semver "^7.3.4"
|
||||
webpack-merge "^5.4.0"
|
||||
|
||||
"@cypress/what-is-circular@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/what-is-circular/-/what-is-circular-1.0.1.tgz#c88adb7106a4e1624e403512fc87c18e9700c877"
|
||||
@@ -5363,6 +5408,14 @@
|
||||
"@babel/runtime" "^7.11.2"
|
||||
"@testing-library/dom" "^7.22.2"
|
||||
|
||||
"@testing-library/cypress@7.0.4":
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-7.0.4.tgz#38a55880712f222ddb9671bc899fe80f8c41bfc0"
|
||||
integrity sha512-5I1amLVB2ExIRWuHlvG35dVFVC2KiNBZ0U1ASJUJZASFPQ0BhqJG4s0B8B8wNAE7TrR8KWlrzcNutkgxXL6VOg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@testing-library/dom" "^7.28.1"
|
||||
|
||||
"@testing-library/dom@^7.22.2":
|
||||
version "7.29.2"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.2.tgz#6cba65d961d8b36d621a98caa8537444075fb42e"
|
||||
@@ -5377,6 +5430,20 @@
|
||||
lz-string "^1.4.4"
|
||||
pretty-format "^26.6.2"
|
||||
|
||||
"@testing-library/dom@^7.28.1":
|
||||
version "7.30.0"
|
||||
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.30.0.tgz#53697851f7708a1448cc30b74a2ea056dd709cd6"
|
||||
integrity sha512-v4GzWtltaiDE0yRikLlcLAfEiiK8+ptu6OuuIebm9GdC2XlZTNDPGEfM2UkEtnH7hr9TRq2sivT5EA9P1Oy7bw==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@types/aria-query" "^4.2.0"
|
||||
aria-query "^4.2.2"
|
||||
chalk "^4.1.0"
|
||||
dom-accessibility-api "^0.5.4"
|
||||
lz-string "^1.4.4"
|
||||
pretty-format "^26.6.2"
|
||||
|
||||
"@tootallnate/once@1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
|
||||
@@ -6414,6 +6481,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
||||
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
|
||||
|
||||
"@vitejs/plugin-vue@1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.2.0.tgz#f0a92470b74761f90afc8cda204fa3bec9df09f4"
|
||||
integrity sha512-IhSJfJH6IDNEAnhr91+2vhLLe/1SqkA/2BP19jwtn54DGI+cNbZIxiPhHIdKUpdRo0QwErOh6Jy1Maxk2uVo7A==
|
||||
|
||||
"@vue/babel-helper-vue-jsx-merge-props@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81"
|
||||
@@ -6642,6 +6714,55 @@
|
||||
semver "^6.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
"@vue/compiler-core@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.9.tgz#ec7efa676889aee006fc43739ee4a67a952ac623"
|
||||
integrity sha512-bHAPwfVoLhGx8d6KV/OfGf/3gwpymVirgfmSyhgv5YuXDybLa6BwjSLvhNMAyDP+4q4pp0p6g248LuoOy5W6OA==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.12.0"
|
||||
"@babel/types" "^7.12.0"
|
||||
"@vue/shared" "3.0.9"
|
||||
estree-walker "^2.0.1"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-dom@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.9.tgz#1fd554097d9ab36eca73bc6d0d9607fecf94e71c"
|
||||
integrity sha512-tkq6umPSELaghvOExWfGNwrCRc7FTul3RLykKzBZWhb87sSESq0XxiKELfBOfEbzdhWg6BJ1WXKDeq+al/viEQ==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.0.9"
|
||||
"@vue/shared" "3.0.9"
|
||||
|
||||
"@vue/compiler-sfc@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.9.tgz#0f993a6e159ca6ad351d8ee0c4734771d2590115"
|
||||
integrity sha512-meneFRb9xIDgv/gYWCr9xKryvPi0tVffQzLjCkyN4RF1EndqLS71xugUX9wQsS4F1SAP+zlZbcgMFmTSC4OpHw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.13.9"
|
||||
"@babel/types" "^7.13.0"
|
||||
"@vue/compiler-core" "3.0.9"
|
||||
"@vue/compiler-dom" "3.0.9"
|
||||
"@vue/compiler-ssr" "3.0.9"
|
||||
"@vue/shared" "3.0.9"
|
||||
consolidate "^0.16.0"
|
||||
estree-walker "^2.0.1"
|
||||
hash-sum "^2.0.0"
|
||||
lru-cache "^5.1.1"
|
||||
magic-string "^0.25.7"
|
||||
merge-source-map "^1.1.0"
|
||||
postcss "^8.1.10"
|
||||
postcss-modules "^4.0.0"
|
||||
postcss-selector-parser "^6.0.4"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-ssr@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.9.tgz#aebce25e573b9db34964b682bb1631a7240ba43d"
|
||||
integrity sha512-99h5k6Up+s8AzTNH1ljtXE/QlnG8yaGLePwQ4XQaWfk23ESUnmGZWEC+y+ZXznf8pIfJ0uPeD9EVgQzQAyZ2aA==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.0.9"
|
||||
"@vue/shared" "3.0.9"
|
||||
|
||||
"@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"
|
||||
@@ -6663,6 +6784,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.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.9.tgz#875f241b8c10262560b190ccdeff2d0ab7053e11"
|
||||
integrity sha512-W1AbGhzphVjY+TL32lQDwLDNvLzZKOcUgaIaLOoALWMtjzN4ExOUJzrR1FC3ynlpMHIEfcUo8GPgfnNmvMGdgQ==
|
||||
dependencies:
|
||||
"@vue/shared" "3.0.9"
|
||||
|
||||
"@vue/runtime-core@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.9.tgz#9665f149468355a524a304cb8f260147a4d294e6"
|
||||
integrity sha512-j94xZ/wRZTVhqpoUgmxBTlojnPFu6TTXNw1Vw8oQkW1ZTGD0IwiJe3ycsKd1bpleXEMVt55GzGlCopI33/Gdmg==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.0.9"
|
||||
"@vue/shared" "3.0.9"
|
||||
|
||||
"@vue/runtime-dom@3.0.9":
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.9.tgz#16a1d001dc746a9f346ee7fb9de90d52ad097b61"
|
||||
integrity sha512-6NCjpwa5hNBFDdokquAgMl2tNEYyQD6kBy9Mh6M2776bxYLXZCqL4/e0UrpBuBiHTrkAlUGODD7PyYGaqH6fyA==
|
||||
dependencies:
|
||||
"@vue/runtime-core" "3.0.9"
|
||||
"@vue/shared" "3.0.9"
|
||||
csstype "^2.6.8"
|
||||
|
||||
"@vue/shared@3.0.9":
|
||||
version "3.0.9"
|
||||
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"
|
||||
@@ -6672,6 +6822,11 @@
|
||||
lodash "^4.17.15"
|
||||
pretty "^2.0.0"
|
||||
|
||||
"@vue/test-utils@^2.0.0-rc.1":
|
||||
version "2.0.0-rc.4"
|
||||
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.0.0-rc.4.tgz#536175be968e7c5741e9c95f117024d5053ea54c"
|
||||
integrity sha512-DocrrFP28M7NO7y7iGiX9sf9n1AKEqkxXO5wedtp5FkHiAkc0xfmD4lvxgi4re5+xw7Zzb9U/vrhXKQZ0I4Q9g==
|
||||
|
||||
"@vue/web-component-wrapper@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1"
|
||||
@@ -11575,6 +11730,11 @@ colorette@^1.2.1:
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
|
||||
integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
|
||||
|
||||
colorette@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
|
||||
integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
|
||||
|
||||
colors@1.0.3, colors@1.0.x:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
|
||||
@@ -11910,6 +12070,13 @@ consolidate@^0.15.1:
|
||||
dependencies:
|
||||
bluebird "^3.1.1"
|
||||
|
||||
consolidate@^0.16.0:
|
||||
version "0.16.0"
|
||||
resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16"
|
||||
integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==
|
||||
dependencies:
|
||||
bluebird "^3.7.2"
|
||||
|
||||
constant-case@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46"
|
||||
@@ -12833,6 +13000,11 @@ csstype@^2.5.2, csstype@^2.5.7:
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.14.tgz#004822a4050345b55ad4dcc00be1d9cf2f4296de"
|
||||
integrity sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A==
|
||||
|
||||
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==
|
||||
|
||||
csstype@^3.0.2:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef"
|
||||
@@ -14839,10 +15011,10 @@ es6-weak-map@^2.0.1:
|
||||
es6-iterator "^2.0.3"
|
||||
es6-symbol "^3.1.1"
|
||||
|
||||
esbuild@^0.8.52:
|
||||
version "0.8.57"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926"
|
||||
integrity sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA==
|
||||
esbuild@^0.9.3:
|
||||
version "0.9.6"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.9.6.tgz#2cae519e7ce2328ecf57ae738090d07ce7245850"
|
||||
integrity sha512-F6vASxU0wT/Davt9aj2qtDwDNSkQxh9VbyO56M7PDWD+D/Vgq/rmUDGDQo7te76W5auauVojjnQr/wTu3vpaUA==
|
||||
|
||||
escalade@^3.0.1, escalade@^3.1.1:
|
||||
version "3.1.1"
|
||||
@@ -19062,6 +19234,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.0, icss-utils@^4.1.1:
|
||||
dependencies:
|
||||
postcss "^7.0.14"
|
||||
|
||||
icss-utils@^5.0.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
|
||||
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
|
||||
|
||||
identity-obj-proxy@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
|
||||
@@ -27172,6 +27349,11 @@ postcss-modules-extract-imports@^2.0.0:
|
||||
dependencies:
|
||||
postcss "^7.0.5"
|
||||
|
||||
postcss-modules-extract-imports@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
|
||||
integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
|
||||
|
||||
postcss-modules-local-by-default@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
|
||||
@@ -27199,6 +27381,15 @@ postcss-modules-local-by-default@^3.0.2, postcss-modules-local-by-default@^3.0.3
|
||||
postcss-selector-parser "^6.0.2"
|
||||
postcss-value-parser "^4.1.0"
|
||||
|
||||
postcss-modules-local-by-default@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
|
||||
integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
|
||||
dependencies:
|
||||
icss-utils "^5.0.0"
|
||||
postcss-selector-parser "^6.0.2"
|
||||
postcss-value-parser "^4.1.0"
|
||||
|
||||
postcss-modules-scope@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
|
||||
@@ -27215,6 +27406,13 @@ postcss-modules-scope@^2.1.0, postcss-modules-scope@^2.1.1, postcss-modules-scop
|
||||
postcss "^7.0.6"
|
||||
postcss-selector-parser "^6.0.0"
|
||||
|
||||
postcss-modules-scope@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
|
||||
integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.4"
|
||||
|
||||
postcss-modules-values@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
|
||||
@@ -27239,6 +27437,13 @@ postcss-modules-values@^3.0.0:
|
||||
icss-utils "^4.0.0"
|
||||
postcss "^7.0.6"
|
||||
|
||||
postcss-modules-values@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
|
||||
integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
|
||||
dependencies:
|
||||
icss-utils "^5.0.0"
|
||||
|
||||
postcss-modules@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-2.0.0.tgz#473d0d7326651d8408585c2a154115d5cb36cce0"
|
||||
@@ -27265,6 +27470,20 @@ postcss-modules@^3.2.0:
|
||||
postcss-modules-values "^3.0.0"
|
||||
string-hash "^1.1.1"
|
||||
|
||||
postcss-modules@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b"
|
||||
integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw==
|
||||
dependencies:
|
||||
generic-names "^2.0.1"
|
||||
icss-replace-symbols "^1.1.0"
|
||||
lodash.camelcase "^4.3.0"
|
||||
postcss-modules-extract-imports "^3.0.0"
|
||||
postcss-modules-local-by-default "^4.0.0"
|
||||
postcss-modules-scope "^3.0.0"
|
||||
postcss-modules-values "^4.0.0"
|
||||
string-hash "^1.1.1"
|
||||
|
||||
postcss-nested@^4.1.1:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.2.3.tgz#c6f255b0a720549776d220d00c4b70cd244136f6"
|
||||
@@ -27546,7 +27765,7 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
|
||||
indexes-of "^1.0.1"
|
||||
uniq "^1.0.1"
|
||||
|
||||
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
|
||||
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
|
||||
version "6.0.4"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
|
||||
integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
|
||||
@@ -27657,6 +27876,15 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, po
|
||||
source-map "^0.6.1"
|
||||
supports-color "^6.1.0"
|
||||
|
||||
postcss@^8.1.10:
|
||||
version "8.2.8"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece"
|
||||
integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==
|
||||
dependencies:
|
||||
colorette "^1.2.2"
|
||||
nanoid "^3.1.20"
|
||||
source-map "^0.6.1"
|
||||
|
||||
postcss@^8.2.1:
|
||||
version "8.2.4"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04"
|
||||
@@ -29000,6 +29228,14 @@ react@16.8.6:
|
||||
prop-types "^15.6.2"
|
||||
scheduler "^0.13.6"
|
||||
|
||||
react@17.0.2:
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
||||
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
|
||||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
react@^15.3.2:
|
||||
version "15.7.0"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-15.7.0.tgz#10308fd42ac6912a250bf00380751abc41ac7106"
|
||||
@@ -30386,17 +30622,6 @@ sass-loader@10.1.0:
|
||||
schema-utils "^3.0.0"
|
||||
semver "^7.3.2"
|
||||
|
||||
sass-loader@10.1.1, sass-loader@^10.0.3:
|
||||
version "10.1.1"
|
||||
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d"
|
||||
integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==
|
||||
dependencies:
|
||||
klona "^2.0.4"
|
||||
loader-utils "^2.0.0"
|
||||
neo-async "^2.6.2"
|
||||
schema-utils "^3.0.0"
|
||||
semver "^7.3.2"
|
||||
|
||||
sass-loader@7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f"
|
||||
@@ -30419,6 +30644,17 @@ sass-loader@8.0.2:
|
||||
schema-utils "^2.6.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
sass-loader@^10.0.3:
|
||||
version "10.1.1"
|
||||
resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d"
|
||||
integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==
|
||||
dependencies:
|
||||
klona "^2.0.4"
|
||||
loader-utils "^2.0.0"
|
||||
neo-async "^2.6.2"
|
||||
schema-utils "^3.0.0"
|
||||
semver "^7.3.2"
|
||||
|
||||
sass-lookup@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-3.0.0.tgz#3b395fa40569738ce857bc258e04df2617c48cac"
|
||||
@@ -34956,12 +35192,12 @@ vinyl@^2.0.0, vinyl@^2.1.0, vinyl@^2.2.0:
|
||||
remove-trailing-separator "^1.0.1"
|
||||
replace-ext "^1.0.0"
|
||||
|
||||
vite@2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-2.0.5.tgz#ac46857a3fa8686d077921e61bd48a986931df1d"
|
||||
integrity sha512-QTgEDbq1WsTtr6j+++ewjhBFEk6c8v0xz4fb/OWJQKNYU8ZZtphOshwOqAlnarSstPBtWCBR0tsugXx6ajfoUg==
|
||||
vite@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-2.1.3.tgz#a31a844d26d3846b5a78f06970d1ea1f8a442955"
|
||||
integrity sha512-bUzArZIUwADVJS/3ywCr4KKFn3a7izs4M87ZDlAlY2V34E4g1kH6p3sVNAh8/IXCn/56fwgMh3rRavPUW7qEQQ==
|
||||
dependencies:
|
||||
esbuild "^0.8.52"
|
||||
esbuild "^0.9.3"
|
||||
postcss "^8.2.1"
|
||||
resolve "^1.19.0"
|
||||
rollup "^2.38.5"
|
||||
@@ -35047,10 +35283,10 @@ 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-template-compiler@2.6.11:
|
||||
version "2.6.11"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080"
|
||||
integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==
|
||||
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"
|
||||
@@ -35060,16 +35296,20 @@ 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.11"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
|
||||
integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
|
||||
|
||||
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.9:
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.9.tgz#c68ffc0e4aa2b0f1905124a9037b6e352de469ad"
|
||||
integrity sha512-MOvqDpvDslMWJo5kyGW1nTsTIPAuSzgVqmlzSQInIEqkHOu16pNbXuTjnG7jc/yIvQYFSQZqv6Pvad0iO5QkyQ==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.0.9"
|
||||
"@vue/runtime-dom" "3.0.9"
|
||||
"@vue/shared" "3.0.9"
|
||||
|
||||
vuex@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.1.tgz#0c264bfe30cdbccf96ab9db3177d211828a5910e"
|
||||
|
||||
Reference in New Issue
Block a user