diff --git a/.circleci/config.yml b/.circleci/config.yml
index d5d30803..de8b0335 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -24,4 +24,4 @@ jobs:
key: node-10-dependencies-{{ checksum "package.json" }}
# run tests!
- - run: npm run test
+ - run: yarn test
diff --git a/e2e/3.x/babel-in-package/components/Basic.vue b/e2e/3.x/babel-in-package/components/Basic.vue
new file mode 100644
index 00000000..a37429b0
--- /dev/null
+++ b/e2e/3.x/babel-in-package/components/Basic.vue
@@ -0,0 +1,47 @@
+
+
+
{{ msg }}
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/babel-in-package/components/Coffee.vue b/e2e/3.x/babel-in-package/components/Coffee.vue
new file mode 100644
index 00000000..565a528b
--- /dev/null
+++ b/e2e/3.x/babel-in-package/components/Coffee.vue
@@ -0,0 +1,9 @@
+
+ Coffee
+
+
+
diff --git a/e2e/3.x/babel-in-package/components/TypeScript.vue b/e2e/3.x/babel-in-package/components/TypeScript.vue
new file mode 100644
index 00000000..5abb6115
--- /dev/null
+++ b/e2e/3.x/babel-in-package/components/TypeScript.vue
@@ -0,0 +1,22 @@
+
+
+
+ {{ exclamationMarks }}
+
+
+
+
+
+
diff --git a/e2e/3.x/babel-in-package/components/TypeScriptChild.vue b/e2e/3.x/babel-in-package/components/TypeScriptChild.vue
new file mode 100644
index 00000000..299bc3b8
--- /dev/null
+++ b/e2e/3.x/babel-in-package/components/TypeScriptChild.vue
@@ -0,0 +1,13 @@
+
+ {{ exclamationMarks }}
+
+
+
diff --git a/e2e/3.x/babel-in-package/package.json b/e2e/3.x/babel-in-package/package.json
new file mode 100644
index 00000000..23c24c39
--- /dev/null
+++ b/e2e/3.x/babel-in-package/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "vue3-babel-in-package",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache test.js"
+ },
+ "dependencies": {
+ "vue": "^3.0.3"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "@vue/compiler-sfc": "^3.0.3",
+ "coffeescript": "^2.3.2",
+ "jest": "^26.0.0",
+ "ts-jest": "^26.4.4",
+ "typescript": "^4.1.2",
+ "vue3-jest": "^26.0.0-alpha.10"
+ },
+ "jest": {
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transform": {
+ "^.+\\.js$": "babel-jest",
+ "^.+\\.vue$": "vue3-jest"
+ }
+ },
+ "babel": {
+ "presets": [
+ "@babel/env"
+ ]
+ }
+}
diff --git a/e2e/3.x/babel-in-package/test.js b/e2e/3.x/babel-in-package/test.js
new file mode 100644
index 00000000..8bc52e74
--- /dev/null
+++ b/e2e/3.x/babel-in-package/test.js
@@ -0,0 +1,36 @@
+import { createApp, h } from 'vue'
+
+import TypeScript from './components/TypeScript.vue'
+import Basic from './components/Basic.vue'
+import Coffee from './components/Coffee.vue'
+
+function mount(Component, props, slots) {
+ document.getElementsByTagName('html')[0].innerHTML = ''
+ const el = document.createElement('div')
+ el.id = 'app'
+ document.body.appendChild(el)
+ const Parent = {
+ render() {
+ return h(Component, props, slots)
+ }
+ }
+ createApp(Parent).mount(el)
+}
+
+test('processes .vue files', () => {
+ mount(Basic)
+ expect(document.querySelector('h1').textContent).toBe(
+ 'Welcome to Your Vue.js App'
+ )
+})
+
+test('processes .vue file with lang set to coffee', () => {
+ mount(Coffee)
+ expect(document.querySelector('h1').textContent).toBe('Coffee')
+})
+
+test('processes .vue files with lang set to typescript', () => {
+ mount(TypeScript)
+ expect(document.querySelector('#parent').textContent).toBe('Parent')
+ expect(document.querySelector('#child').textContent).toBe('Child')
+})
diff --git a/e2e/3.x/babel-in-package/tsconfig.json b/e2e/3.x/babel-in-package/tsconfig.json
new file mode 100644
index 00000000..d3fd602d
--- /dev/null
+++ b/e2e/3.x/babel-in-package/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "target": "ES2017",
+ "lib": ["dom", "es6"],
+ "module": "ES2015",
+ "moduleResolution": "node",
+ "types": ["vue-typescript-import-dts", "node"],
+ "isolatedModules": false,
+ "experimentalDecorators": true,
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "removeComments": true,
+ "emitDecoratorMetadata": true,
+ "suppressImplicitAnyIndexErrors": true,
+ "allowSyntheticDefaultImports": true,
+ "sourceMap": true
+ }
+}
diff --git a/e2e/3.x/basic/__snapshots__/test.js.snap b/e2e/3.x/basic/__snapshots__/test.js.snap
new file mode 100644
index 00000000..a10f241c
--- /dev/null
+++ b/e2e/3.x/basic/__snapshots__/test.js.snap
@@ -0,0 +1,91 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`generates source maps for .vue files 1`] = `
+"\\"use strict\\";
+
+Object.defineProperty(exports, \\"__esModule\\", {
+ value: true
+});
+exports[\\"default\\"] = void 0;
+var _default = {
+ name: 'basic',
+ computed: {
+ headingClasses: function headingClasses() {
+ return {
+ red: this.isCrazy,
+ blue: !this.isCrazy,
+ shadow: this.isCrazy
+ };
+ }
+ },
+ data: function data() {
+ return {
+ msg: 'Welcome to Your Vue.js App',
+ isCrazy: false
+ };
+ },
+ methods: {
+ toggleClass: function toggleClass() {
+ this.isCrazy = !this.isCrazy;
+ }
+ }
+};
+exports[\\"default\\"] = _default;
+\\"use strict\\";
+Object.defineProperty(exports, \\"__esModule\\", { value: true });
+exports.render = void 0;
+var vue_1 = require(\\"vue\\");
+var _hoisted_1 = { class: \\"hello\\" };
+function render(_ctx, _cache) {
+ return (vue_1.openBlock(), vue_1.createBlock(\\"div\\", _hoisted_1, [
+ vue_1.createVNode(\\"h1\\", { class: _ctx.headingClasses }, vue_1.toDisplayString(_ctx.msg), 3 /* TEXT, CLASS */)
+ ]));
+}
+exports.render = render;
+;exports.default = {...exports.default, render};;exports.default = {...exports.default, __cssModules: {\\"css\\":{\\"testA\\":\\"testA\\"},\\"$style\\":{\\"testB\\":\\"testB\\"}}}"
+`;
+
+exports[`generates source maps using src attributes 1`] = `
+"\\"use strict\\";
+
+Object.defineProperty(exports, \\"__esModule\\", {
+ value: true
+});
+exports[\\"default\\"] = void 0;
+var _default = {
+ name: 'basic',
+ computed: {
+ headingClasses: function headingClasses() {
+ return {
+ red: this.isCrazy,
+ blue: !this.isCrazy,
+ shadow: this.isCrazy
+ };
+ }
+ },
+ data: function data() {
+ return {
+ msg: 'Welcome to Your Vue.js App',
+ isCrazy: false
+ };
+ },
+ methods: {
+ toggleClass: function toggleClass() {
+ this.isCrazy = !this.isCrazy;
+ }
+ }
+};
+exports[\\"default\\"] = _default;
+\\"use strict\\";
+Object.defineProperty(exports, \\"__esModule\\", { value: true });
+exports.render = void 0;
+var vue_1 = require(\\"vue\\");
+var _hoisted_1 = { class: \\"hello\\" };
+function render(_ctx, _cache) {
+ return (vue_1.openBlock(), vue_1.createBlock(\\"div\\", _hoisted_1, [
+ vue_1.createVNode(\\"h1\\", { class: _ctx.headingClasses }, vue_1.toDisplayString(_ctx.msg), 3 /* TEXT, CLASS */)
+ ]));
+}
+exports.render = render;
+;exports.default = {...exports.default, render};"
+`;
diff --git a/e2e/3.x/basic/babel.config.js b/e2e/3.x/basic/babel.config.js
new file mode 100644
index 00000000..3ba5f43c
--- /dev/null
+++ b/e2e/3.x/basic/babel.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+ presets: ['@babel/preset-env'],
+ plugins: ['transform-vue-jsx']
+}
diff --git a/e2e/3.x/basic/components/Basic.vue b/e2e/3.x/basic/components/Basic.vue
new file mode 100644
index 00000000..a37429b0
--- /dev/null
+++ b/e2e/3.x/basic/components/Basic.vue
@@ -0,0 +1,47 @@
+
+
+
{{ msg }}
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/basic/components/BasicSrc.html b/e2e/3.x/basic/components/BasicSrc.html
new file mode 100644
index 00000000..67c4dfde
--- /dev/null
+++ b/e2e/3.x/basic/components/BasicSrc.html
@@ -0,0 +1,3 @@
+
+
{{ msg }}
+
\ No newline at end of file
diff --git a/e2e/3.x/basic/components/BasicSrc.js b/e2e/3.x/basic/components/BasicSrc.js
new file mode 100644
index 00000000..3aeef17c
--- /dev/null
+++ b/e2e/3.x/basic/components/BasicSrc.js
@@ -0,0 +1,23 @@
+export default {
+ name: 'basic',
+ computed: {
+ headingClasses: function headingClasses() {
+ return {
+ red: this.isCrazy,
+ blue: !this.isCrazy,
+ shadow: this.isCrazy
+ }
+ }
+ },
+ data: function data() {
+ return {
+ msg: 'Welcome to Your Vue.js App',
+ isCrazy: false
+ }
+ },
+ methods: {
+ toggleClass: function toggleClass() {
+ this.isCrazy = !this.isCrazy
+ }
+ }
+}
diff --git a/e2e/3.x/basic/components/BasicSrc.vue b/e2e/3.x/basic/components/BasicSrc.vue
new file mode 100644
index 00000000..2fbf9f1e
--- /dev/null
+++ b/e2e/3.x/basic/components/BasicSrc.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/e2e/3.x/basic/components/ClassComponent.vue b/e2e/3.x/basic/components/ClassComponent.vue
new file mode 100644
index 00000000..2902ddd7
--- /dev/null
+++ b/e2e/3.x/basic/components/ClassComponent.vue
@@ -0,0 +1,27 @@
+
+
+
{{ computedMsg }}
+ {{ msg }}
+ {{ dataText }}
+
+
+
+
+
diff --git a/e2e/3.x/basic/components/ClassComponentProperty.vue b/e2e/3.x/basic/components/ClassComponentProperty.vue
new file mode 100644
index 00000000..413c9eba
--- /dev/null
+++ b/e2e/3.x/basic/components/ClassComponentProperty.vue
@@ -0,0 +1,20 @@
+
+
+
{{ computedMsg }}
+ {{ msg }}
+
+
+
+
diff --git a/e2e/3.x/basic/components/ClassComponentWithMixin.vue b/e2e/3.x/basic/components/ClassComponentWithMixin.vue
new file mode 100644
index 00000000..807ecb61
--- /dev/null
+++ b/e2e/3.x/basic/components/ClassComponentWithMixin.vue
@@ -0,0 +1,12 @@
+
+
+
{{ message }}
+
+
+
+
diff --git a/e2e/3.x/basic/components/ClassMixin.ts b/e2e/3.x/basic/components/ClassMixin.ts
new file mode 100644
index 00000000..560fc353
--- /dev/null
+++ b/e2e/3.x/basic/components/ClassMixin.ts
@@ -0,0 +1,5 @@
+import { Vue } from 'vue-class-component'
+
+export default class ClassMixin extends Vue {
+ message = 'Hello world!'
+}
diff --git a/e2e/3.x/basic/components/Coffee.vue b/e2e/3.x/basic/components/Coffee.vue
new file mode 100644
index 00000000..565a528b
--- /dev/null
+++ b/e2e/3.x/basic/components/Coffee.vue
@@ -0,0 +1,9 @@
+
+ Coffee
+
+
+
diff --git a/e2e/3.x/basic/components/CoffeeScript.vue b/e2e/3.x/basic/components/CoffeeScript.vue
new file mode 100644
index 00000000..5b1adc0f
--- /dev/null
+++ b/e2e/3.x/basic/components/CoffeeScript.vue
@@ -0,0 +1,8 @@
+
+ CoffeeScript
+
+
+
diff --git a/e2e/3.x/basic/components/Constructor.vue b/e2e/3.x/basic/components/Constructor.vue
new file mode 100644
index 00000000..c81625e8
--- /dev/null
+++ b/e2e/3.x/basic/components/Constructor.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/e2e/3.x/basic/components/FunctionalRenderFn.vue b/e2e/3.x/basic/components/FunctionalRenderFn.vue
new file mode 100644
index 00000000..eccb3f2e
--- /dev/null
+++ b/e2e/3.x/basic/components/FunctionalRenderFn.vue
@@ -0,0 +1,12 @@
+
diff --git a/e2e/3.x/basic/components/FunctionalSFC.vue b/e2e/3.x/basic/components/FunctionalSFC.vue
new file mode 100644
index 00000000..1395f320
--- /dev/null
+++ b/e2e/3.x/basic/components/FunctionalSFC.vue
@@ -0,0 +1,5 @@
+
+
+ {{ props.msg.title }}
+
+
diff --git a/e2e/3.x/basic/components/FunctionalSFCParent.vue b/e2e/3.x/basic/components/FunctionalSFCParent.vue
new file mode 100644
index 00000000..01509456
--- /dev/null
+++ b/e2e/3.x/basic/components/FunctionalSFCParent.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/e2e/3.x/basic/components/Jade.vue b/e2e/3.x/basic/components/Jade.vue
new file mode 100644
index 00000000..4195a137
--- /dev/null
+++ b/e2e/3.x/basic/components/Jade.vue
@@ -0,0 +1,9 @@
+
+ .jade
+
+
+
diff --git a/e2e/3.x/basic/components/Jsx.vue b/e2e/3.x/basic/components/Jsx.vue
new file mode 100644
index 00000000..958891b9
--- /dev/null
+++ b/e2e/3.x/basic/components/Jsx.vue
@@ -0,0 +1,7 @@
+
diff --git a/e2e/3.x/basic/components/NamedExport.vue b/e2e/3.x/basic/components/NamedExport.vue
new file mode 100644
index 00000000..1d2c6f0f
--- /dev/null
+++ b/e2e/3.x/basic/components/NamedExport.vue
@@ -0,0 +1,7 @@
+
diff --git a/e2e/3.x/basic/components/NoScript.vue b/e2e/3.x/basic/components/NoScript.vue
new file mode 100644
index 00000000..976b9f7d
--- /dev/null
+++ b/e2e/3.x/basic/components/NoScript.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/e2e/3.x/basic/components/Pug.vue b/e2e/3.x/basic/components/Pug.vue
new file mode 100644
index 00000000..c6a467a8
--- /dev/null
+++ b/e2e/3.x/basic/components/Pug.vue
@@ -0,0 +1,11 @@
+
+extends /components/PugBase.pug
+block component
+ div(class="pug-extended")
+
+
+
diff --git a/e2e/3.x/basic/components/PugBase.pug b/e2e/3.x/basic/components/PugBase.pug
new file mode 100644
index 00000000..93fdad14
--- /dev/null
+++ b/e2e/3.x/basic/components/PugBase.pug
@@ -0,0 +1,2 @@
+div(class='pug-base')
+ block component
\ No newline at end of file
diff --git a/e2e/3.x/basic/components/PugRelativeExtends.vue b/e2e/3.x/basic/components/PugRelativeExtends.vue
new file mode 100644
index 00000000..dd528953
--- /dev/null
+++ b/e2e/3.x/basic/components/PugRelativeExtends.vue
@@ -0,0 +1,11 @@
+
+extends ./relative/PugRelativeBase.pug
+block component
+ div(class="pug-extended")
+
+
+
diff --git a/e2e/3.x/basic/components/RenderFunction.vue b/e2e/3.x/basic/components/RenderFunction.vue
new file mode 100644
index 00000000..1fe90c5c
--- /dev/null
+++ b/e2e/3.x/basic/components/RenderFunction.vue
@@ -0,0 +1,9 @@
+
diff --git a/e2e/3.x/basic/components/ScriptSetup.vue b/e2e/3.x/basic/components/ScriptSetup.vue
new file mode 100644
index 00000000..b077ffcb
--- /dev/null
+++ b/e2e/3.x/basic/components/ScriptSetup.vue
@@ -0,0 +1,18 @@
+
+
+
+ {{ msg }}
+
+
+
diff --git a/e2e/3.x/basic/components/SourceMapsSrc.vue b/e2e/3.x/basic/components/SourceMapsSrc.vue
new file mode 100644
index 00000000..2fbf9f1e
--- /dev/null
+++ b/e2e/3.x/basic/components/SourceMapsSrc.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/e2e/3.x/basic/components/TsSrc.ts b/e2e/3.x/basic/components/TsSrc.ts
new file mode 100644
index 00000000..3aeef17c
--- /dev/null
+++ b/e2e/3.x/basic/components/TsSrc.ts
@@ -0,0 +1,23 @@
+export default {
+ name: 'basic',
+ computed: {
+ headingClasses: function headingClasses() {
+ return {
+ red: this.isCrazy,
+ blue: !this.isCrazy,
+ shadow: this.isCrazy
+ }
+ }
+ },
+ data: function data() {
+ return {
+ msg: 'Welcome to Your Vue.js App',
+ isCrazy: false
+ }
+ },
+ methods: {
+ toggleClass: function toggleClass() {
+ this.isCrazy = !this.isCrazy
+ }
+ }
+}
diff --git a/e2e/3.x/basic/components/TsSrc.vue b/e2e/3.x/basic/components/TsSrc.vue
new file mode 100644
index 00000000..c4054806
--- /dev/null
+++ b/e2e/3.x/basic/components/TsSrc.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/e2e/3.x/basic/components/TypeScript.vue b/e2e/3.x/basic/components/TypeScript.vue
new file mode 100644
index 00000000..5abb6115
--- /dev/null
+++ b/e2e/3.x/basic/components/TypeScript.vue
@@ -0,0 +1,22 @@
+
+
+
+ {{ exclamationMarks }}
+
+
+
+
+
+
diff --git a/e2e/3.x/basic/components/TypeScriptChild.vue b/e2e/3.x/basic/components/TypeScriptChild.vue
new file mode 100644
index 00000000..299bc3b8
--- /dev/null
+++ b/e2e/3.x/basic/components/TypeScriptChild.vue
@@ -0,0 +1,13 @@
+
+ {{ exclamationMarks }}
+
+
+
diff --git a/e2e/3.x/basic/components/coffee.spec.js b/e2e/3.x/basic/components/coffee.spec.js
new file mode 100644
index 00000000..163edcb2
--- /dev/null
+++ b/e2e/3.x/basic/components/coffee.spec.js
@@ -0,0 +1,28 @@
+import { shallowMount, mount } from '@vue/test-utils'
+import Coffee from './resources/Coffee.vue'
+import CoffeeScript from './resources/CoffeeScript.vue'
+import CoffeeES6 from './resources/CoffeeES6.vue'
+import CoffeeScriptES6 from './resources/CoffeeScriptES6.vue'
+
+describe('Test CoffeeScript - coffee.spec.js', () => {
+ test('processes .vue file with lang set to coffee', () => {
+ shallowMount(Coffee)
+ })
+
+ test('processes .vue file with lang set to coffeescript', () => {
+ shallowMount(CoffeeScript)
+ })
+
+ test('processes .vue file with lang set to coffee (ES6)', () => {
+ shallowMount(CoffeeES6)
+ })
+
+ test('processes .vue file with lang set to coffeescript (ES6)', () => {
+ shallowMount(CoffeeScriptES6)
+ })
+
+ test('processes .vue file with lang set to coffeescript (ES6)', () => {
+ const wrapper = mount(CoffeeScriptES6)
+ expect(typeof wrapper).toBe('object')
+ })
+})
diff --git a/e2e/3.x/basic/components/relative/PugRelativeBase.pug b/e2e/3.x/basic/components/relative/PugRelativeBase.pug
new file mode 100644
index 00000000..2347fc06
--- /dev/null
+++ b/e2e/3.x/basic/components/relative/PugRelativeBase.pug
@@ -0,0 +1,2 @@
+div(class='pug-relative-base')
+ block component
\ No newline at end of file
diff --git a/e2e/3.x/basic/package.json b/e2e/3.x/basic/package.json
new file mode 100644
index 00000000..95365075
--- /dev/null
+++ b/e2e/3.x/basic/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "vue3-basic",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache --coverage test.js"
+ },
+ "dependencies": {
+ "vue": "^3.0.3"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "@vue/compiler-sfc": "^3.0.3",
+ "babel-helper-vue-jsx-merge-props": "^2.0.3",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "babel-plugin-transform-vue-jsx": "^3.7.0",
+ "coffeescript": "^2.3.2",
+ "jade": "^1.11.0",
+ "jest": "^26.0.0",
+ "pug": "^2.0.3",
+ "ts-jest": "^26.4.4",
+ "typescript": "^4.1.2",
+ "vue-class-component": "^8.0.0-beta.4",
+ "vue3-jest": "^26.0.0-alpha.10",
+ "vue-property-decorator": "^10.0.0-rc.3"
+ },
+ "jest": {
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue",
+ "ts"
+ ],
+ "transform": {
+ "^.+\\.ts$": "ts-jest",
+ "^.+\\.js$": "babel-jest",
+ "^.+\\.vue$": "vue3-jest"
+ },
+ "moduleNameMapper": {
+ "^~?__styles/(.*)$": "/components/styles/$1"
+ },
+ "globals": {
+ "vue-jest": {
+ "pug": {
+ "basedir": "./"
+ }
+ }
+ }
+ }
+}
diff --git a/e2e/3.x/basic/test.js b/e2e/3.x/basic/test.js
new file mode 100644
index 00000000..16360102
--- /dev/null
+++ b/e2e/3.x/basic/test.js
@@ -0,0 +1,190 @@
+import { createApp, h, nextTick } from 'vue'
+import { resolve } from 'path'
+import { readFileSync } from 'fs'
+
+import BasicSrc from './components/BasicSrc.vue'
+import TsSrc from './components/TsSrc.vue'
+import Pug from './components/Pug.vue'
+import Coffee from './components/Coffee.vue'
+import Basic from './components/Basic.vue'
+import ClassComponent from './components/ClassComponent.vue'
+import ClassComponentWithMixin from './components/ClassComponentWithMixin.vue'
+import ClassComponentProperty from './components/ClassComponentProperty.vue'
+import TypeScript from './components/TypeScript.vue'
+import jestVue from 'vue3-jest'
+import RenderFunction from './components/RenderFunction.vue'
+import FunctionalSFC from './components/FunctionalSFC.vue'
+import CoffeeScript from './components/CoffeeScript.vue'
+import FunctionalSFCParent from './components/FunctionalSFCParent.vue'
+import NoScript from './components/NoScript.vue'
+import PugRelative from './components/PugRelativeExtends.vue'
+import { randomExport } from './components/NamedExport.vue'
+import ScriptSetup from './components/ScriptSetup.vue'
+import FunctionalRenderFn from './components/FunctionalRenderFn.vue'
+
+// TODO: JSX for Vue 3? TSX?
+import Jsx from './components/Jsx.vue'
+
+function mount(Component, props, slots) {
+ document.getElementsByTagName('html')[0].innerHTML = ''
+ const el = document.createElement('div')
+ el.id = 'app'
+ document.body.appendChild(el)
+ const Parent = {
+ render() {
+ return h(Component, props, slots)
+ }
+ }
+ createApp(Parent).mount(el)
+}
+
+test('supports
diff --git a/e2e/3.x/javascript/components/Coffee.vue b/e2e/3.x/javascript/components/Coffee.vue
new file mode 100644
index 00000000..565a528b
--- /dev/null
+++ b/e2e/3.x/javascript/components/Coffee.vue
@@ -0,0 +1,9 @@
+
+ Coffee
+
+
+
diff --git a/e2e/3.x/javascript/package.json b/e2e/3.x/javascript/package.json
new file mode 100644
index 00000000..64b0db6e
--- /dev/null
+++ b/e2e/3.x/javascript/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "vue3-javascript",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache test.js"
+ },
+ "dependencies": {
+ "vue": "^3.0.3"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "coffeescript": "^2.3.2",
+ "jest": "^26.0.0",
+ "vue3-jest": "^26.0.0-alpha.10"
+ },
+ "jest": {
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transform": {
+ "^.+\\.js$": "babel-jest",
+ "^.+\\.vue$": "vue3-jest"
+ }
+ },
+ "babel": {
+ "presets": [
+ "@babel/env"
+ ]
+ }
+}
diff --git a/e2e/3.x/javascript/test.js b/e2e/3.x/javascript/test.js
new file mode 100644
index 00000000..01b9fe18
--- /dev/null
+++ b/e2e/3.x/javascript/test.js
@@ -0,0 +1,29 @@
+import { createApp, h } from 'vue'
+
+import Basic from './components/Basic.vue'
+import Coffee from './components/Coffee.vue'
+
+function mount(Component, props, slots) {
+ document.getElementsByTagName('html')[0].innerHTML = ''
+ const el = document.createElement('div')
+ el.id = 'app'
+ document.body.appendChild(el)
+ const Parent = {
+ render() {
+ return h(Component, props, slots)
+ }
+ }
+ createApp(Parent).mount(el)
+}
+
+test('processes .vue files', () => {
+ mount(Basic)
+ expect(document.querySelector('h1').textContent).toBe(
+ 'Welcome to Your Vue.js App'
+ )
+})
+
+test('processes .vue file with lang set to coffee', () => {
+ mount(Coffee)
+ expect(document.querySelector('h1').textContent).toBe('Coffee')
+})
diff --git a/e2e/3.x/style/babel.config.js b/e2e/3.x/style/babel.config.js
new file mode 100644
index 00000000..7db9b6f5
--- /dev/null
+++ b/e2e/3.x/style/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['@babel/preset-env']
+}
diff --git a/e2e/3.x/style/components/External.vue b/e2e/3.x/style/components/External.vue
new file mode 100644
index 00000000..90b1df56
--- /dev/null
+++ b/e2e/3.x/style/components/External.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/e2e/3.x/style/components/Less.vue b/e2e/3.x/style/components/Less.vue
new file mode 100644
index 00000000..dcbcba42
--- /dev/null
+++ b/e2e/3.x/style/components/Less.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
diff --git a/e2e/3.x/style/components/PostCss.vue b/e2e/3.x/style/components/PostCss.vue
new file mode 100644
index 00000000..a96aadec
--- /dev/null
+++ b/e2e/3.x/style/components/PostCss.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/style/components/Sass.vue b/e2e/3.x/style/components/Sass.vue
new file mode 100644
index 00000000..77228766
--- /dev/null
+++ b/e2e/3.x/style/components/Sass.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/style/components/Scss.vue b/e2e/3.x/style/components/Scss.vue
new file mode 100644
index 00000000..5f987a89
--- /dev/null
+++ b/e2e/3.x/style/components/Scss.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/style/components/Stylus.vue b/e2e/3.x/style/components/Stylus.vue
new file mode 100644
index 00000000..b1db654c
--- /dev/null
+++ b/e2e/3.x/style/components/Stylus.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/style/components/relative/resource.styl b/e2e/3.x/style/components/relative/resource.styl
new file mode 100644
index 00000000..a1417501
--- /dev/null
+++ b/e2e/3.x/style/components/relative/resource.styl
@@ -0,0 +1 @@
+standard-space = 11px
\ No newline at end of file
diff --git a/e2e/3.x/style/components/styles/external.css b/e2e/3.x/style/components/styles/external.css
new file mode 100644
index 00000000..365af23e
--- /dev/null
+++ b/e2e/3.x/style/components/styles/external.css
@@ -0,0 +1,3 @@
+.testClass {
+ background-color: red;
+}
diff --git a/e2e/3.x/style/components/styles/less-a.less b/e2e/3.x/style/components/styles/less-a.less
new file mode 100644
index 00000000..6b45a74c
--- /dev/null
+++ b/e2e/3.x/style/components/styles/less-a.less
@@ -0,0 +1,7 @@
+@import "variables";
+.c {
+ color: @primary-color;
+}
+.d {
+ background-color: @primary-color;
+}
diff --git a/e2e/3.x/style/components/styles/sass-a.sass b/e2e/3.x/style/components/styles/sass-a.sass
new file mode 100644
index 00000000..222ddb76
--- /dev/null
+++ b/e2e/3.x/style/components/styles/sass-a.sass
@@ -0,0 +1,4 @@
+@import "./sass-b"
+
+.a
+ background-color: blue
diff --git a/e2e/3.x/style/components/styles/sass-b.sass b/e2e/3.x/style/components/styles/sass-b.sass
new file mode 100644
index 00000000..ec96d2c0
--- /dev/null
+++ b/e2e/3.x/style/components/styles/sass-b.sass
@@ -0,0 +1,2 @@
+.b
+ background-color: blue
diff --git a/e2e/3.x/style/components/styles/scss-a.scss b/e2e/3.x/style/components/styles/scss-a.scss
new file mode 100644
index 00000000..30630635
--- /dev/null
+++ b/e2e/3.x/style/components/styles/scss-a.scss
@@ -0,0 +1,5 @@
+@import "./scss-b";
+
+.a {
+ background-color: blue
+}
diff --git a/e2e/3.x/style/components/styles/scss-b.scss b/e2e/3.x/style/components/styles/scss-b.scss
new file mode 100644
index 00000000..b8341292
--- /dev/null
+++ b/e2e/3.x/style/components/styles/scss-b.scss
@@ -0,0 +1,3 @@
+.b {
+ background-color: blue;
+}
diff --git a/e2e/3.x/style/package.json b/e2e/3.x/style/package.json
new file mode 100644
index 00000000..2e3724b2
--- /dev/null
+++ b/e2e/3.x/style/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "vue3-style",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache test.js"
+ },
+ "dependencies": {
+ "@vue/compiler-sfc": "^3.0.3",
+ "vue": "^3.0.3"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "@vue/test-utils": "^1.1.0",
+ "jest": "^26.0.0",
+ "less": "^3.9.0",
+ "postcss": "^7.0.13",
+ "sass": "^1.23.7",
+ "stylus": "^0.54.5",
+ "vue3-jest": "^26.0.0-alpha.10"
+ },
+ "jest": {
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transform": {
+ "^.+\\.js$": "babel-jest",
+ "^.+\\.vue$": "vue3-jest"
+ },
+ "moduleNameMapper": {
+ "^~?__styles/(.*)$": "/components/styles/$1"
+ },
+ "globals": {
+ "vue-jest": {
+ "resources": {
+ "scss": [
+ "variables.scss"
+ ],
+ "less": [
+ "variables.less"
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/e2e/3.x/style/test.js b/e2e/3.x/style/test.js
new file mode 100644
index 00000000..f4c6047e
--- /dev/null
+++ b/e2e/3.x/style/test.js
@@ -0,0 +1,81 @@
+// TODO: Support styles
+//
+import { createApp, h } from 'vue'
+
+import Less from './components/Less.vue'
+import Stylus from './components/Stylus.vue'
+import Scss from './components/Scss.vue'
+import Sass from './components/Sass.vue'
+import PostCss from './components/PostCss.vue'
+import External from './components/External.vue'
+
+function mount(Component, props, slots) {
+ document.getElementsByTagName('html')[0].innerHTML = ''
+ const el = document.createElement('div')
+ el.id = 'app'
+ document.body.appendChild(el)
+ const Parent = {
+ render() {
+ return h(Component, props, slots)
+ }
+ }
+ createApp(Parent).mount(el)
+}
+
+test('processes Less', () => {
+ mount(Less)
+ expect(document.getElementById('app').innerHTML).toEqual(
+ ''
+ )
+})
+
+test('processes PostCSS', () => {
+ mount(PostCss)
+ expect(document.getElementById('app').innerHTML).toEqual(
+ ''
+ )
+ // expect(wrapper.is('section')).toBeTruthy()
+ // expect(wrapper.vm.$style.a).toEqual('a')
+ // expect(wrapper.vm.$style.b).toEqual('b')
+})
+
+test('processes Sass', () => {
+ mount(Sass)
+ expect(document.getElementById('app').innerHTML).toEqual(
+ ''
+ )
+ // expect(wrapper.vm.$style.a).toEqual('a')
+ // expect(wrapper.vm.$style.b).toEqual('b')
+ // expect(wrapper.vm.$style.c).toEqual('c')
+ // expect(wrapper.vm.$style.light).toBeUndefined()
+})
+
+test('processes SCSS with resources', () => {
+ mount(Scss)
+ expect(document.getElementById('app').innerHTML).toEqual(
+ ''
+ )
+ // expect(wrapper.vm.$style.a).toEqual('a')
+ // expect(wrapper.vm.$style.b).toEqual('b')
+ // expect(wrapper.vm.$style.c).toEqual('c')
+})
+
+test('process Stylus', () => {
+ mount(Stylus)
+ expect(document.getElementById('app').innerHTML).toEqual(
+ ''
+ )
+ // expect(wrapper.vm).toBeTruthy()
+ // expect(wrapper.vm.css.a).toEqual('a')
+ // expect(wrapper.vm.$style.b).toEqual('b')
+})
+
+test('process External', () => {
+ mount(External)
+ expect(document.getElementById('app').innerHTML).toEqual(
+ ''
+ )
+ // expect(wrapper.vm).toBeTruthy()
+ // expect(wrapper.vm.$style.xtestClass).toEqual('xtestClass')
+ // expect(wrapper.vm.css.a).toEqual('a')
+})
diff --git a/e2e/3.x/style/variables.less b/e2e/3.x/style/variables.less
new file mode 100644
index 00000000..7b9ea3f9
--- /dev/null
+++ b/e2e/3.x/style/variables.less
@@ -0,0 +1 @@
+@primary-color: "red";
diff --git a/e2e/3.x/style/variables.scss b/e2e/3.x/style/variables.scss
new file mode 100644
index 00000000..d7cf8edb
--- /dev/null
+++ b/e2e/3.x/style/variables.scss
@@ -0,0 +1 @@
+$primary-color: #333;
diff --git a/e2e/3.x/typescript/package.json b/e2e/3.x/typescript/package.json
new file mode 100644
index 00000000..293dd389
--- /dev/null
+++ b/e2e/3.x/typescript/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "vue3-typescript",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache ./sub-project/test.js"
+ },
+ "dependencies": {
+ "@vue/compiler-sfc": "^3.0.3",
+ "vue": "^3.0.3"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "jest": "^26.0.0",
+ "ts-jest": "^26.4.4",
+ "typescript": "^4.1.2",
+ "vue3-jest": "^26.0.0-alpha.10"
+ },
+ "jest": {
+ "globals": {
+ "vue-jest": {
+ "tsConfig": "./sub-project/tsconfig.json"
+ }
+ },
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transform": {
+ "^.+\\.js$": "babel-jest",
+ "^.+\\.vue$": "vue3-jest"
+ }
+ },
+ "babel": {
+ "presets": [
+ "@babel/env"
+ ]
+ }
+}
diff --git a/e2e/3.x/typescript/sub-project/components/Basic.vue b/e2e/3.x/typescript/sub-project/components/Basic.vue
new file mode 100644
index 00000000..7e5a8d1f
--- /dev/null
+++ b/e2e/3.x/typescript/sub-project/components/Basic.vue
@@ -0,0 +1,48 @@
+
+
+
{{ msg }}
+
+
+
+
+
+
+
+
diff --git a/e2e/3.x/typescript/sub-project/test.js b/e2e/3.x/typescript/sub-project/test.js
new file mode 100644
index 00000000..e2a326ae
--- /dev/null
+++ b/e2e/3.x/typescript/sub-project/test.js
@@ -0,0 +1,23 @@
+import { createApp, h } from 'vue'
+
+import Basic from './components/Basic.vue'
+
+function mount(Component, props, slots) {
+ document.getElementsByTagName('html')[0].innerHTML = ''
+ const el = document.createElement('div')
+ el.id = 'app'
+ document.body.appendChild(el)
+ const Parent = {
+ render() {
+ return h(Component, props, slots)
+ }
+ }
+ createApp(Parent).mount(el)
+}
+
+test('processes .vue files', () => {
+ mount(Basic)
+ expect(document.querySelector('h1').textContent).toBe(
+ 'Welcome to Your Vue.js App'
+ )
+})
diff --git a/e2e/3.x/typescript/sub-project/tsconfig.json b/e2e/3.x/typescript/sub-project/tsconfig.json
new file mode 100644
index 00000000..8073706e
--- /dev/null
+++ b/e2e/3.x/typescript/sub-project/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "es6"],
+ "module": "es2015",
+ "moduleResolution": "node",
+ "types": ["vue-typescript-import-dts", "node"],
+ "isolatedModules": false,
+ "experimentalDecorators": true,
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "removeComments": true,
+ "emitDecoratorMetadata": true,
+ "suppressImplicitAnyIndexErrors": true,
+ "allowSyntheticDefaultImports": true,
+ "sourceMap": true,
+ "allowJs": true
+ }
+}
diff --git a/package.json b/package.json
index db023e05..7fb27fef 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,9 @@
"packages": [
"packages/*",
"e2e/**"
+ ],
+ "nohoist": [
+ "**/vue"
]
},
"scripts": {
diff --git a/packages/vue3-jest/lib/constants.js b/packages/vue3-jest/lib/constants.js
new file mode 100644
index 00000000..742ef7d4
--- /dev/null
+++ b/packages/vue3-jest/lib/constants.js
@@ -0,0 +1,6 @@
+module.exports = {
+ vueOptionsNamespace: '__options__',
+ defaultVueJestConfig: {
+ transform: {}
+ }
+}
diff --git a/packages/vue3-jest/lib/ensure-require.js b/packages/vue3-jest/lib/ensure-require.js
new file mode 100644
index 00000000..17f40920
--- /dev/null
+++ b/packages/vue3-jest/lib/ensure-require.js
@@ -0,0 +1,40 @@
+const throwError = require('./utils').throwError
+
+module.exports = function(name, deps) {
+ let i, len
+ let missing = []
+ if (typeof deps === 'string') {
+ deps = [deps]
+ }
+ for (i = 0, len = deps.length; i < len; i++) {
+ let mis
+ let req = deps[i]
+ if (typeof req === 'string') {
+ mis = req
+ } else {
+ mis = req[1]
+ req = req[0]
+ }
+ try {
+ // hack for babel-runtime because it does not expose "main" field
+ if (req === 'babel-runtime') {
+ req = 'babel-runtime/core-js'
+ }
+ require.resolve(req)
+ } catch (e) {
+ missing.push(mis)
+ }
+ }
+ if (missing.length > 0) {
+ let message = 'You are trying to use "' + name + '". '
+ let npmInstall = 'npm install --save-dev ' + missing.join(' ')
+ if (missing.length > 1) {
+ const last = missing.pop()
+ message += missing.join(', ') + ' and ' + last + ' are '
+ } else {
+ message += missing[0] + ' is '
+ }
+ message += 'missing.\n\nTo install run:\n' + npmInstall
+ throwError(message)
+ }
+}
diff --git a/packages/vue3-jest/lib/generate-code.js b/packages/vue3-jest/lib/generate-code.js
new file mode 100644
index 00000000..f4af783a
--- /dev/null
+++ b/packages/vue3-jest/lib/generate-code.js
@@ -0,0 +1,67 @@
+const { SourceNode, SourceMapConsumer } = require('source-map')
+
+function addToSourceMap(node, result) {
+ if (result && result.code) {
+ if (result.map) {
+ node.add(
+ SourceNode.fromStringWithSourceMap(
+ result.code,
+ new SourceMapConsumer(result.map)
+ )
+ )
+ } else {
+ node.add(result.code)
+ }
+ }
+}
+
+module.exports = function generateCode(
+ scriptResult,
+ scriptSetupResult,
+ templateResult,
+ filename,
+ stylesResult
+) {
+ var node = new SourceNode(null, null, null)
+ addToSourceMap(node, scriptResult)
+ addToSourceMap(node, scriptSetupResult)
+ addToSourceMap(node, templateResult)
+
+ var tempOutput = node.toString()
+
+ if (
+ // vue-property-decorator also exports Vue, which can be used to create a class component.
+ // In that case vue-class-component is not present in the tempOutput.
+ tempOutput.includes('vue-class-component') ||
+ tempOutput.includes('vue-property-decorator')
+ ) {
+ node.add(`
+ ;exports.default = {
+ ...exports.default.__vccBase,
+ ...exports.default.__vccOpts
+ };`)
+ }
+
+ if (tempOutput.includes('exports.render = render;')) {
+ node.add(';exports.default = {...exports.default, render};')
+ } else {
+ // node.add(';exports.default = {...exports.default};')
+ }
+ if (Array.isArray(stylesResult)) {
+ const mergedStyle = {}
+ stylesResult.forEach(styleObj => {
+ const { code, moduleName } = styleObj
+ mergedStyle[moduleName] = {
+ ...(mergedStyle[moduleName] || {}),
+ ...(JSON.parse(code) || {})
+ }
+ })
+ node.add(
+ `;exports.default = {...exports.default, __cssModules: ${JSON.stringify(
+ mergedStyle
+ )}}`
+ )
+ }
+
+ return node.toStringWithSourceMap({ file: filename })
+}
diff --git a/packages/vue3-jest/lib/index.js b/packages/vue3-jest/lib/index.js
new file mode 100644
index 00000000..616e6263
--- /dev/null
+++ b/packages/vue3-jest/lib/index.js
@@ -0,0 +1,24 @@
+const crypto = require('crypto')
+const babelJest = require('babel-jest')
+
+module.exports = {
+ process: require('./process'),
+ getCacheKey: function getCacheKey(
+ fileData,
+ filename,
+ configString,
+ { config, instrument, rootDir }
+ ) {
+ return crypto
+ .createHash('md5')
+ .update(
+ babelJest.getCacheKey(fileData, filename, configString, {
+ config,
+ instrument,
+ rootDir
+ }),
+ 'hex'
+ )
+ .digest('hex')
+ }
+}
diff --git a/packages/vue3-jest/lib/map-lines.js b/packages/vue3-jest/lib/map-lines.js
new file mode 100644
index 00000000..c05b69ce
--- /dev/null
+++ b/packages/vue3-jest/lib/map-lines.js
@@ -0,0 +1,55 @@
+const { SourceMapGenerator, SourceMapConsumer } = require('source-map')
+
+// based on @vue/compiler-sfc mapLines
+module.exports = function mapLines(oldMap, newMap) {
+ if (!oldMap) return newMap
+ if (!newMap) return oldMap
+
+ const oldMapConsumer = new SourceMapConsumer(oldMap)
+ const newMapConsumer = new SourceMapConsumer(newMap)
+ const mergedMapGenerator = new SourceMapGenerator()
+
+ newMapConsumer.eachMapping(m => {
+ if (m.originalLine == null) {
+ return
+ }
+
+ const origPosInOldMap = oldMapConsumer.originalPositionFor({
+ line: m.originalLine,
+ column: m.originalColumn
+ })
+
+ if (origPosInOldMap.source == null) {
+ return
+ }
+
+ mergedMapGenerator.addMapping({
+ generated: {
+ line: m.generatedLine,
+ column: m.generatedColumn
+ },
+ original: {
+ line: origPosInOldMap.line, // map line
+ // use current column, since the oldMap produced by @vue/compiler-sfc
+ // does not
+ column: m.originalColumn
+ },
+ source: origPosInOldMap.source,
+ name: origPosInOldMap.name
+ })
+ })
+
+ // source-map's type definition is incomplete
+ const generator = mergedMapGenerator
+ oldMapConsumer.sources.forEach(sourceFile => {
+ generator._sources.add(sourceFile)
+ const sourceContent = oldMapConsumer.sourceContentFor(sourceFile)
+ if (sourceContent != null) {
+ mergedMapGenerator.setSourceContent(sourceFile, sourceContent)
+ }
+ })
+
+ generator._sourceRoot = oldMap.sourceRoot
+ generator._file = oldMap.file
+ return generator.toJSON()
+}
diff --git a/packages/vue3-jest/lib/module-name-mapper-helper.js b/packages/vue3-jest/lib/module-name-mapper-helper.js
new file mode 100644
index 00000000..85ed1c23
--- /dev/null
+++ b/packages/vue3-jest/lib/module-name-mapper-helper.js
@@ -0,0 +1,57 @@
+const path = require('path')
+const matchModuleImport = /^[^?]*~/
+/**
+ * Resolves the path to the file/module.
+ *
+ * @param {String} to - the name of the file to resolve to
+ * @param {String} importPath - the local path
+ * @param {String} fileType - extension of the file to be resolved
+ * @returns {String} path - path to the file to import
+ */
+function resolve(to, importPath, fileType) {
+ importPath =
+ path.extname(importPath) === '' ? `${importPath}.${fileType}` : importPath
+ if (path.isAbsolute(importPath)) {
+ return importPath
+ } else if (matchModuleImport.test(importPath)) {
+ return require.resolve(importPath.replace(matchModuleImport, ''))
+ }
+ return path.join(path.dirname(to), importPath)
+}
+
+/**
+ * Applies the moduleNameMapper substitution from the jest config
+ *
+ * @param {String} source - the original string
+ * @param {String} filePath - the path of the current file (where the source originates)
+ * @param {Object} jestConfig - the jestConfig holding the moduleNameMapper settings
+ * @param {Object} fileType - extn of the file to be resolved
+ * @returns {String} path - the final path to import (including replacements via moduleNameMapper)
+ */
+module.exports = function applyModuleNameMapper(
+ source,
+ filePath,
+ jestConfig = {},
+ fileType = ''
+) {
+ if (!jestConfig.moduleNameMapper) return source
+ // Extract the moduleNameMapper settings from the jest config. TODO: In case of development via babel@7, somehow the jestConfig.moduleNameMapper might end up being an Array. After a proper upgrade to babel@7 we should probably fix this.
+ const module = Array.isArray(jestConfig.moduleNameMapper)
+ ? jestConfig.moduleNameMapper
+ : Object.entries(jestConfig.moduleNameMapper)
+
+ const importPath = module.reduce((acc, [regex, replacement]) => {
+ const matches = acc.match(regex)
+
+ if (matches === null) {
+ return acc
+ }
+
+ return replacement.replace(
+ /\$([0-9]+)/g,
+ (_, index) => matches[parseInt(index, 10)]
+ )
+ }, source)
+
+ return resolve(filePath, importPath, fileType)
+}
diff --git a/packages/vue3-jest/lib/process-custom-blocks.js b/packages/vue3-jest/lib/process-custom-blocks.js
new file mode 100644
index 00000000..17516fa5
--- /dev/null
+++ b/packages/vue3-jest/lib/process-custom-blocks.js
@@ -0,0 +1,41 @@
+const { getVueJestConfig, getCustomTransformer } = require('./utils')
+const vueOptionsNamespace = require('./constants').vueOptionsNamespace
+
+function applyTransformer(
+ transformer,
+ blocks,
+ vueOptionsNamespace,
+ filename,
+ config
+) {
+ return transformer.process({ blocks, vueOptionsNamespace, filename, config })
+}
+
+function groupByType(acc, block) {
+ acc[block.type] = acc[block.type] || []
+ acc[block.type].push(block)
+ return acc
+}
+
+module.exports = function(allBlocks, filename, config) {
+ const blocksByType = allBlocks.reduce(groupByType, {})
+ const code = []
+ for (const [type, blocks] of Object.entries(blocksByType)) {
+ const transformer = getCustomTransformer(
+ getVueJestConfig(config).transform,
+ type
+ )
+ if (transformer) {
+ const codeStr = applyTransformer(
+ transformer,
+ blocks,
+ vueOptionsNamespace,
+ filename,
+ config
+ )
+ code.push(codeStr)
+ }
+ }
+
+ return code.length ? code.join('\n') : ''
+}
diff --git a/packages/vue3-jest/lib/process-style.js b/packages/vue3-jest/lib/process-style.js
new file mode 100644
index 00000000..14a59305
--- /dev/null
+++ b/packages/vue3-jest/lib/process-style.js
@@ -0,0 +1,102 @@
+const { compileStyle } = require('@vue/compiler-sfc')
+const path = require('path')
+const fs = require('fs')
+const cssExtract = require('extract-from-css')
+const getVueJestConfig = require('./utils').getVueJestConfig
+const applyModuleNameMapper = require('./module-name-mapper-helper')
+const getCustomTransformer = require('./utils').getCustomTransformer
+const logResultErrors = require('./utils').logResultErrors
+const loadSrc = require('./utils').loadSrc
+
+function getGlobalResources(resources, lang) {
+ let globalResources = ''
+ if (resources && resources[lang]) {
+ globalResources = resources[lang]
+ .map(resource => path.resolve(process.cwd(), resource))
+ .filter(resourcePath => fs.existsSync(resourcePath))
+ .map(resourcePath => fs.readFileSync(resourcePath).toString())
+ .join('\n')
+ }
+ return globalResources
+}
+
+function extractClassMap(cssCode) {
+ const cssNames = cssExtract.extractClasses(cssCode)
+ const cssMap = {}
+ for (let i = 0, l = cssNames.length; i < l; i++) {
+ cssMap[cssNames[i]] = cssNames[i]
+ }
+ return cssMap
+}
+
+function getPreprocessOptions(lang, filePath, jestConfig) {
+ if (lang === 'scss' || lang === 'sass') {
+ return {
+ importer: (url, prev, done) => ({
+ file: applyModuleNameMapper(
+ url,
+ prev === 'stdin' ? filePath : prev,
+ jestConfig,
+ lang
+ )
+ })
+ }
+ }
+ if (lang === 'styl' || lang === 'stylus' || lang === 'less') {
+ return {
+ paths: [path.dirname(filePath), process.cwd()]
+ }
+ }
+}
+
+module.exports = function processStyle(stylePart, filePath, config = {}) {
+ const vueJestConfig = getVueJestConfig(config)
+
+ if (stylePart.src && !stylePart.content) {
+ stylePart.content = loadSrc(stylePart.src, filePath)
+ }
+
+ if (vueJestConfig.experimentalCSSCompile === false || !stylePart.content) {
+ return '{}'
+ }
+
+ let content =
+ getGlobalResources(vueJestConfig.resources, stylePart.lang) +
+ stylePart.content
+
+ const transformer =
+ getCustomTransformer(vueJestConfig['transform'], stylePart.lang) || {}
+
+ // pre process
+ if (transformer.preprocess) {
+ content = transformer.preprocess(content, filePath, config, stylePart.attrs)
+ }
+
+ // transform
+ if (transformer.process) {
+ content = transformer.process(content, filePath, config, stylePart.attrs)
+ } else {
+ const preprocessOptions = getPreprocessOptions(
+ stylePart.lang,
+ filePath,
+ config
+ )
+ const result = compileStyle({
+ id: `vue-jest-${filePath}`,
+ source: content,
+ filePath,
+ preprocessLang: stylePart.lang,
+ preprocessOptions,
+ scoped: false
+ })
+ logResultErrors(result)
+ content = result.code
+ }
+
+ // post process
+ if (transformer.postprocess) {
+ return transformer.postprocess(content, filePath, config, stylePart.attrs)
+ }
+
+ return JSON.stringify(extractClassMap(content))
+}
diff --git a/packages/vue3-jest/lib/process.js b/packages/vue3-jest/lib/process.js
new file mode 100644
index 00000000..d16f330f
--- /dev/null
+++ b/packages/vue3-jest/lib/process.js
@@ -0,0 +1,158 @@
+const { parse, compileTemplate, compileScript } = require('@vue/compiler-sfc')
+const { transform } = require('@babel/core')
+const babelTransformer = require('babel-jest')
+
+const typescriptTransformer = require('./transformers/typescript')
+const coffeescriptTransformer = require('./transformers/coffee')
+const _processStyle = require('./process-style')
+// const processCustomBlocks = require('./process-custom-blocks')
+const getVueJestConfig = require('./utils').getVueJestConfig
+const getTsJestConfig = require('./utils').getTsJestConfig
+const logResultErrors = require('./utils').logResultErrors
+const stripInlineSourceMap = require('./utils').stripInlineSourceMap
+const getCustomTransformer = require('./utils').getCustomTransformer
+const loadSrc = require('./utils').loadSrc
+const generateCode = require('./generate-code')
+const mapLines = require('./map-lines')
+
+function resolveTransformer(lang = 'js', vueJestConfig) {
+ const transformer = getCustomTransformer(vueJestConfig['transform'], lang)
+ if (/^typescript$|tsx?$/.test(lang)) {
+ return transformer || typescriptTransformer
+ } else if (/^coffee$|coffeescript$/.test(lang)) {
+ return transformer || coffeescriptTransformer
+ } else {
+ return transformer || babelTransformer
+ }
+}
+
+function processScript(scriptPart, filePath, config) {
+ if (!scriptPart) {
+ return null
+ }
+
+ let content = scriptPart.content
+ let filename = filePath
+ if (scriptPart.src) {
+ content = loadSrc(scriptPart.src, filePath)
+ filename = scriptPart.src
+ }
+
+ const vueJestConfig = getVueJestConfig(config)
+ const transformer = resolveTransformer(scriptPart.lang, vueJestConfig)
+
+ const result = transformer.process(content, filename, config)
+ result.code = stripInlineSourceMap(result.code)
+ result.map = mapLines(scriptPart.map, result.map)
+ return result
+}
+
+function processScriptSetup(descriptor, filePath, config) {
+ if (!descriptor.scriptSetup) {
+ return null
+ }
+ const content = compileScript(descriptor, { id: filePath })
+ const contentMap = mapLines(descriptor.scriptSetup.map, content.map)
+
+ const vueJestConfig = getVueJestConfig(config)
+ const transformer = resolveTransformer(
+ descriptor.scriptSetup.lang,
+ vueJestConfig
+ )
+
+ const result = transformer.process(content.content, filePath, config)
+ result.map = mapLines(contentMap, result.map)
+
+ return result
+}
+
+function processTemplate(descriptor, filename, config) {
+ const { template, scriptSetup } = descriptor
+
+ if (!template) {
+ return null
+ }
+
+ const vueJestConfig = getVueJestConfig(config)
+
+ if (template.src) {
+ template.content = loadSrc(template.src, filename)
+ }
+
+ let bindings
+ if (scriptSetup) {
+ const scriptSetupResult = compileScript(descriptor, { id: filename })
+ bindings = scriptSetupResult.bindings
+ }
+
+ const result = compileTemplate({
+ id: filename,
+ source: template.content,
+ filename,
+ preprocessLang: template.lang,
+ preprocessOptions: vueJestConfig[template.lang],
+ compilerOptions: {
+ bindingMetadata: bindings,
+ mode: 'module'
+ }
+ })
+
+ logResultErrors(result)
+
+ const tsconfig = getTsJestConfig(config)
+
+ if (tsconfig) {
+ // they are using TypeScript.
+ const { transpileModule } = require('typescript')
+ const { outputText } = transpileModule(result.code, { tsconfig })
+ return { code: outputText }
+ } else {
+ // babel
+ const babelify = transform(result.code, { filename: 'file.js' })
+
+ return {
+ code: babelify.code
+ }
+ }
+}
+
+function processStyle(styles, filename, config) {
+ if (!styles) {
+ return null
+ }
+
+ const filteredStyles = styles
+ .filter(style => style.module)
+ .map(style => ({
+ code: _processStyle(style, filename, config),
+ moduleName: style.module === true ? '$style' : style.module
+ }))
+
+ return filteredStyles.length ? filteredStyles : null
+}
+
+module.exports = function(src, filename, config) {
+ const { descriptor } = parse(src, { filename })
+
+ const templateResult = processTemplate(descriptor, filename, config)
+ const scriptResult = processScript(descriptor.script, filename, config)
+ const scriptSetupResult = processScriptSetup(descriptor, filename, config)
+ const stylesResult = processStyle(descriptor.styles, filename, config)
+ // const customBlocksResult = processCustomBlocks(
+ // descriptor.customBlocks,
+ // filename,
+ // config
+ // )
+ const output = generateCode(
+ scriptResult,
+ scriptSetupResult,
+ templateResult,
+ filename,
+ stylesResult
+ )
+
+ return {
+ code: output.code,
+ map: output.map.toString()
+ }
+}
diff --git a/packages/vue3-jest/lib/transformers/coffee.js b/packages/vue3-jest/lib/transformers/coffee.js
new file mode 100644
index 00000000..8455ff6f
--- /dev/null
+++ b/packages/vue3-jest/lib/transformers/coffee.js
@@ -0,0 +1,26 @@
+const ensureRequire = require('../ensure-require.js')
+const throwError = require('../utils').throwError
+const getBabelOptions = require('../utils').getBabelOptions
+
+module.exports = {
+ process(src, filename, config) {
+ ensureRequire('coffee', ['coffeescript'])
+ const coffee = require('coffeescript')
+ const babelOptions = getBabelOptions(filename)
+ let compiled
+ try {
+ compiled = coffee.compile(src, {
+ filename,
+ bare: true,
+ sourceMap: true,
+ transpile: babelOptions
+ })
+ } catch (err) {
+ throwError(err)
+ }
+ return {
+ code: compiled.js,
+ map: compiled.v3SourceMap
+ }
+ }
+}
diff --git a/packages/vue3-jest/lib/transformers/typescript.js b/packages/vue3-jest/lib/transformers/typescript.js
new file mode 100644
index 00000000..a3913f77
--- /dev/null
+++ b/packages/vue3-jest/lib/transformers/typescript.js
@@ -0,0 +1,52 @@
+const ensureRequire = require('../ensure-require')
+const babelJest = require('babel-jest')
+const {
+ getBabelOptions,
+ getTsJestConfig,
+ stripInlineSourceMap,
+ getCustomTransformer,
+ getVueJestConfig
+} = require('../utils')
+
+module.exports = {
+ process(scriptContent, filePath, config) {
+ ensureRequire('typescript', ['typescript'])
+ const typescript = require('typescript')
+ const vueJestConfig = getVueJestConfig(config)
+ const tsconfig = getTsJestConfig(config)
+ const babelOptions = getBabelOptions(filePath)
+
+ const res = typescript.transpileModule(scriptContent, {
+ ...tsconfig,
+ fileName: filePath
+ })
+
+ res.outputText = stripInlineSourceMap(res.outputText)
+
+ const inputSourceMap =
+ res.sourceMapText !== undefined ? JSON.parse(res.sourceMapText) : ''
+
+ // handle ES modules in TS source code in case user uses non commonjs module
+ // output and there is no .babelrc.
+ let inlineBabelOptions = {}
+ if (
+ tsconfig.compilerOptions.module !== typescript.ModuleKind.CommonJS &&
+ !babelOptions
+ ) {
+ inlineBabelOptions = {
+ plugins: [require('@babel/plugin-transform-modules-commonjs')]
+ }
+ }
+ const customTransformer =
+ getCustomTransformer(vueJestConfig['transform'], 'js') || {}
+ const transformer = customTransformer.process
+ ? customTransformer
+ : babelJest.createTransformer(
+ Object.assign(inlineBabelOptions, {
+ inputSourceMap
+ })
+ )
+
+ return transformer.process(res.outputText, filePath, config)
+ }
+}
diff --git a/packages/vue3-jest/lib/utils.js b/packages/vue3-jest/lib/utils.js
new file mode 100644
index 00000000..2949ed21
--- /dev/null
+++ b/packages/vue3-jest/lib/utils.js
@@ -0,0 +1,170 @@
+const constants = require('./constants')
+const loadPartialConfig = require('@babel/core').loadPartialConfig
+const { resolveSync: resolveTsConfigSync } = require('tsconfig')
+const chalk = require('chalk')
+const path = require('path')
+const fs = require('fs')
+
+const fetchTransformer = function fetchTransformer(key, obj) {
+ for (const exp in obj) {
+ const matchKey = new RegExp(exp)
+ if (matchKey.test(key)) {
+ return obj[exp]
+ }
+ }
+ return null
+}
+
+const resolvePath = function resolvePath(pathToResolve) {
+ return /^(\.\.\/|\.\/|\/)/.test(pathToResolve)
+ ? path.resolve(process.cwd(), pathToResolve)
+ : pathToResolve
+}
+
+const info = function info(msg) {
+ console.info(chalk.blue('\n[vue-jest]: ' + msg + '\n'))
+}
+
+const warn = function warn(msg) {
+ console.warn(chalk.red('\n[vue-jest]: ' + msg + '\n'))
+}
+
+const transformContent = function transformContent(
+ content,
+ filePath,
+ config,
+ transformer,
+ attrs
+) {
+ if (!transformer) {
+ return content
+ }
+ try {
+ return transformer(content, filePath, config, attrs)
+ } catch (err) {
+ warn(`There was an error while compiling ${filePath} ${err}`)
+ }
+ return content
+}
+
+const getVueJestConfig = function getVueJestConfig(jestConfig) {
+ return (
+ (jestConfig && jestConfig.globals && jestConfig.globals['vue-jest']) || {}
+ )
+}
+const getBabelOptions = function loadBabelOptions(filename, options = {}) {
+ const opts = Object.assign(options, {
+ caller: {
+ name: 'vue-jest',
+ supportsStaticESM: false
+ },
+ filename,
+ sourceMaps: 'both'
+ })
+ return loadPartialConfig(opts).options
+}
+
+const getTsJestConfig = function getTsJestConfig(config) {
+ const tsConfigPath = path.resolve(
+ process.cwd(),
+ getVueJestConfig(config).tsConfig || ''
+ )
+ const isUsingTs = resolveTsConfigSync(tsConfigPath)
+ if (!isUsingTs) {
+ return null
+ }
+
+ const createTransformer = require('ts-jest').createTransformer
+ const tr = createTransformer()
+ const configSet = tr.configsFor(config)
+ const tsConfig = configSet.typescript || configSet.parsedTsConfig
+ // Force es5 to prevent const vue_1 = require('vue') from conflicting
+ return { compilerOptions: { ...tsConfig.options, target: 'es5' } }
+}
+
+function isValidTransformer(transformer) {
+ return (
+ isFunction(transformer.process) ||
+ isFunction(transformer.postprocess) ||
+ isFunction(transformer.preprocess)
+ )
+}
+
+const isFunction = fn => typeof fn === 'function'
+
+const getCustomTransformer = function getCustomTransformer(
+ transform = {},
+ lang
+) {
+ transform = { ...constants.defaultVueJestConfig.transform, ...transform }
+
+ const transformerPath = fetchTransformer(lang, transform)
+
+ if (!transformerPath) {
+ return null
+ }
+
+ let transformer
+ if (
+ typeof transformerPath === 'string' &&
+ require(resolvePath(transformerPath))
+ ) {
+ transformer = require(resolvePath(transformerPath))
+ } else if (typeof transformerPath === 'object') {
+ transformer = transformerPath
+ }
+
+ if (!isValidTransformer(transformer)) {
+ throwError(
+ `transformer must contain at least one process, preprocess, or ` +
+ `postprocess method`
+ )
+ }
+
+ return transformer
+}
+
+const throwError = function error(msg) {
+ throw new Error('\n[vue-jest] Error: ' + msg + '\n')
+}
+
+const stripInlineSourceMap = function(str) {
+ return str.slice(0, str.indexOf('//# sourceMappingURL'))
+}
+
+const logResultErrors = result => {
+ if (result.errors.length) {
+ result.errors.forEach(function(msg) {
+ console.error('\n' + chalk.red(msg) + '\n')
+ })
+ throwError('Vue template compilation failed')
+ }
+}
+
+const loadSrc = (src, filePath) => {
+ var dir = path.dirname(filePath)
+ var srcPath = path.resolve(dir, src)
+ try {
+ return fs.readFileSync(srcPath, 'utf-8')
+ } catch (e) {
+ throwError(
+ 'Failed to load src: "' + src + '" from file: "' + filePath + '"'
+ )
+ }
+}
+
+module.exports = {
+ stripInlineSourceMap,
+ throwError,
+ logResultErrors,
+ getCustomTransformer,
+ getTsJestConfig,
+ getBabelOptions,
+ getVueJestConfig,
+ transformContent,
+ info,
+ warn,
+ resolvePath,
+ fetchTransformer,
+ loadSrc
+}
diff --git a/packages/vue3-jest/package.json b/packages/vue3-jest/package.json
new file mode 100644
index 00000000..6e8286ed
--- /dev/null
+++ b/packages/vue3-jest/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "vue3-jest",
+ "version": "26.0.0-alpha.10",
+ "description": "Jest Vue transform",
+ "main": "lib/index.js",
+ "files": [
+ "lib"
+ ],
+ "keywords": [
+ "jest",
+ "vue",
+ "jest vue",
+ "jest vue transform",
+ "jest vue preprocessor",
+ "vue jest",
+ "vue jest",
+ "vue jest transform",
+ "vue jest preprocessor"
+ ],
+ "scripts": {
+ "release": "semantic-release",
+ "test": "echo \"There are no unit tests yet. Run e2e/3.x/ tests instead.\""
+ },
+ "author": "Edd Yerburgh",
+ "license": "MIT",
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@vue/compiler-sfc": "^3.0.3",
+ "babel-core": "^7.0.0-bridge.0",
+ "babel-jest": "^26.0.0",
+ "conventional-changelog": "^1.1.5",
+ "jest": "^26.0.0",
+ "semantic-release": "^15.13.2",
+ "ts-jest": "^26.4.4",
+ "typescript": "^4.1.2",
+ "vue": "^3.0.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "7.x",
+ "babel-jest": "26.x",
+ "jest": "26.x",
+ "ts-jest": "26.x",
+ "typescript": ">= 3.x",
+ "vue": "^3.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "ts-jest": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ },
+ "dependencies": {
+ "@babel/plugin-transform-modules-commonjs": "^7.2.0",
+ "chalk": "^2.1.0",
+ "convert-source-map": "^1.6.0",
+ "extract-from-css": "^0.4.4",
+ "source-map": "0.5.6",
+ "tsconfig": "^7.0.0"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/vuejs/vue-jest.git"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.{js,json,css,md,vue}": [
+ "yarn format",
+ "git add"
+ ]
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 0f5e4c1f..ce3033d7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -257,6 +257,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
+"@babel/helper-plugin-utils@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
+ integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
+
"@babel/helper-regex@^7.10.4":
version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0"
@@ -338,6 +343,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.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8"
+ integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==
+
"@babel/helper-wrap-function@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87"
@@ -391,6 +401,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037"
integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==
+"@babel/parser@^7.12.0", "@babel/parser@^7.13.9":
+ version "7.14.7"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595"
+ integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==
+
"@babel/parser@^7.6.0", "@babel/parser@^7.9.6":
version "7.13.12"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.12.tgz#ba320059420774394d3b0c0233ba40e4250b81d1"
@@ -594,6 +609,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
+"@babel/plugin-syntax-top-level-await@^7.8.3":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
"@babel/plugin-transform-arrow-functions@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd"
@@ -1008,6 +1030,14 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
+"@babel/types@^7.12.0", "@babel/types@^7.13.0":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff"
+ integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.14.5"
+ to-fast-properties "^2.0.0"
+
"@babel/types@^7.6.1", "@babel/types@^7.9.6":
version "7.13.12"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.12.tgz#edbf99208ef48852acdff1c8a681a1e4ade580cd"
@@ -1213,6 +1243,27 @@
source-map "^0.6.1"
write-file-atomic "^3.0.0"
+"@jest/transform@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b"
+ integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^26.6.2"
+ babel-plugin-istanbul "^6.0.0"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-haste-map "^26.6.2"
+ jest-regex-util "^26.0.0"
+ jest-util "^26.6.2"
+ micromatch "^4.0.2"
+ pirates "^4.0.1"
+ slash "^3.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "^3.0.0"
+
"@jest/types@^25.5.0":
version "25.5.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
@@ -1234,6 +1285,17 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+"@jest/types@^26.6.2":
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
+ integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+
"@nodelib/fs.scandir@2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
@@ -1419,6 +1481,11 @@
dependencies:
"@sinonjs/commons" "^1.7.0"
+"@types/babel-types@*", "@types/babel-types@^7.0.0":
+ version "7.0.9"
+ resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.9.tgz#01d7b86949f455402a94c788883fe4ba574cad41"
+ integrity sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA==
+
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.9"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d"
@@ -1452,10 +1519,22 @@
dependencies:
"@babel/types" "^7.3.0"
+"@types/babylon@^6.16.2":
+ version "6.16.5"
+ resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4"
+ integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==
+ dependencies:
+ "@types/babel-types" "*"
+
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
+"@types/estree@^0.0.48":
+ version "0.0.48"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74"
+ integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==
+
"@types/events@*":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
@@ -1537,6 +1616,16 @@
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
+"@types/strip-bom@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2"
+ integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=
+
+"@types/strip-json-comments@0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
+ integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==
+
"@types/yargs-parser@*":
version "15.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
@@ -1548,6 +1637,56 @@
dependencies:
"@types/yargs-parser" "*"
+"@vue/compiler-core@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.2.tgz#31ab1d88e1706a5c7a545faeeb64c31bd0101db0"
+ integrity sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q==
+ dependencies:
+ "@babel/parser" "^7.12.0"
+ "@babel/types" "^7.12.0"
+ "@vue/shared" "3.1.2"
+ estree-walker "^2.0.1"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz#75a7731bcc5d9718183a3c56c18e992f7c13e7b1"
+ integrity sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg==
+ dependencies:
+ "@vue/compiler-core" "3.1.2"
+ "@vue/shared" "3.1.2"
+
+"@vue/compiler-sfc@^3.0.3":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz#23ff1e366d887b964899568bffcb11e3d0511fc4"
+ integrity sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw==
+ dependencies:
+ "@babel/parser" "^7.13.9"
+ "@babel/types" "^7.13.0"
+ "@types/estree" "^0.0.48"
+ "@vue/compiler-core" "3.1.2"
+ "@vue/compiler-dom" "3.1.2"
+ "@vue/compiler-ssr" "3.1.2"
+ "@vue/shared" "3.1.2"
+ 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.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz#e33ad0876d9b96f0950e22b0e174b94c1b049d2d"
+ integrity sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg==
+ dependencies:
+ "@vue/compiler-dom" "3.1.2"
+ "@vue/shared" "3.1.2"
+
"@vue/component-compiler-utils@^3.1.0":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.1.tgz#d4ef8f80292674044ad6211e336a302e4d2a6575"
@@ -1562,6 +1701,35 @@
source-map "~0.6.1"
vue-template-es2015-compiler "^1.9.0"
+"@vue/reactivity@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.2.tgz#66fa530dd726d2fef285ae55d02106a727db463b"
+ integrity sha512-glJzJoN2xE7I2lRvwKM5u1BHRPTd1yc8iaf//Lai/78/uYAvE5DXp5HzWRFOwMlbRvMGJHIQjOqoxj87cDAaag==
+ dependencies:
+ "@vue/shared" "3.1.2"
+
+"@vue/runtime-core@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.1.2.tgz#f4dbc503cfc9a02ab5f1ebe002c3322512064a54"
+ integrity sha512-gsPZG4dRIkixuuKmoj4P9IHgfT0yaFLcqWOM5F/bCk0nxQn1XtxH8oUehWuET726KhbukvDoJfe9G2CKviy80w==
+ dependencies:
+ "@vue/reactivity" "3.1.2"
+ "@vue/shared" "3.1.2"
+
+"@vue/runtime-dom@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.1.2.tgz#0fd8724f14bc7ba64b6c954d874a8d8a4fcb5fe9"
+ integrity sha512-QvINxjLucEZFzp5f0NVu7JqWYCv5TKQfkH2FDs/N6QNE4iKcYtKrWdT0HKfABnVXG28Znqv6rIH0dH4ZAOwxpA==
+ dependencies:
+ "@vue/runtime-core" "3.1.2"
+ "@vue/shared" "3.1.2"
+ csstype "^2.6.8"
+
+"@vue/shared@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.2.tgz#1069c0bc7d6f4bd15ccf3a5f3be29450aca368f9"
+ integrity sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg==
+
"@vue/test-utils@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.0.tgz#76305e73a786c921ede1352849614e26c7113f94"
@@ -1594,6 +1762,13 @@ acorn-globals@^1.0.3:
dependencies:
acorn "^2.1.0"
+acorn-globals@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+ integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=
+ dependencies:
+ acorn "^4.0.4"
+
acorn-globals@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
@@ -1619,6 +1794,16 @@ acorn@^2.1.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
+acorn@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+acorn@^4.0.4, acorn@~4.0.2:
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+ integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
+
acorn@^6.0.2, acorn@^6.0.7:
version "6.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
@@ -1969,6 +2154,20 @@ babel-jest@^23.6.0:
babel-plugin-istanbul "^4.1.6"
babel-preset-jest "^23.2.0"
+babel-jest@^26.0.0:
+ version "26.6.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056"
+ integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==
+ dependencies:
+ "@jest/transform" "^26.6.2"
+ "@jest/types" "^26.6.2"
+ "@types/babel__core" "^7.1.7"
+ babel-plugin-istanbul "^6.0.0"
+ babel-preset-jest "^26.6.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ slash "^3.0.0"
+
babel-jest@^26.3.0:
version "26.3.0"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463"
@@ -2036,6 +2235,16 @@ babel-plugin-jest-hoist@^26.2.0:
"@types/babel__core" "^7.0.0"
"@types/babel__traverse" "^7.0.6"
+babel-plugin-jest-hoist@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d"
+ integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.0.0"
+ "@types/babel__traverse" "^7.0.6"
+
babel-plugin-syntax-jsx@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
@@ -2069,6 +2278,24 @@ babel-preset-current-node-syntax@^0.1.3:
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
+babel-preset-current-node-syntax@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
+ integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
+ dependencies:
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-bigint" "^7.8.3"
+ "@babel/plugin-syntax-class-properties" "^7.8.3"
+ "@babel/plugin-syntax-import-meta" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.8.3"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-top-level-await" "^7.8.3"
+
babel-preset-jest@^23.2.0:
version "23.2.0"
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46"
@@ -2084,6 +2311,14 @@ babel-preset-jest@^26.3.0:
babel-plugin-jest-hoist "^26.2.0"
babel-preset-current-node-syntax "^0.1.3"
+babel-preset-jest@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee"
+ integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==
+ dependencies:
+ babel-plugin-jest-hoist "^26.6.2"
+ babel-preset-current-node-syntax "^1.0.0"
+
babel-runtime@^6.22.0, babel-runtime@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
@@ -2170,6 +2405,11 @@ before-after-hook@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635"
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
bin-links@^1.1.2, bin-links@^1.1.7:
version "1.1.8"
resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.8.tgz#bd39aadab5dc4bdac222a07df5baf1af745b2228"
@@ -2186,7 +2426,7 @@ binary-extensions@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
-bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
+bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@@ -2470,7 +2710,7 @@ character-parser@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-1.2.1.tgz#c0dde4ab182713b919b970959a123ecc1a30fcd6"
-character-parser@^2.2.0:
+character-parser@^2.1.1, character-parser@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0"
integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A=
@@ -2533,6 +2773,13 @@ clean-css@^3.1.9:
commander "2.8.x"
source-map "0.4.x"
+clean-css@^4.1.11:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
+ integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
+ dependencies:
+ source-map "~0.6.0"
+
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
@@ -2806,6 +3053,23 @@ 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"
+
+constantinople@^3.0.1, constantinople@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647"
+ integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==
+ dependencies:
+ "@types/babel-types" "^7.0.0"
+ "@types/babylon" "^6.16.2"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+
constantinople@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-4.0.1.tgz#0def113fa0e4dc8de83331a5cf79c8b325213151"
@@ -3151,6 +3415,11 @@ cssstyle@^2.2.0:
dependencies:
cssom "~0.3.6"
+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==
+
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -3482,6 +3751,11 @@ emoji-regex@^8.0.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
@@ -3774,6 +4048,11 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+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"
@@ -4218,6 +4497,13 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
+generic-names@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872"
+ integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==
+ dependencies:
+ loader-utils "^1.1.0"
+
genfun@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537"
@@ -4541,6 +4827,11 @@ hash-sum@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
+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==
+
he@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -4647,6 +4938,16 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
dependencies:
safer-buffer ">= 2.1.2 < 3"
+icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+
+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==
+
iferr@^0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
@@ -4935,6 +5236,14 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
+is-expression@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f"
+ integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=
+ dependencies:
+ acorn "~4.0.2"
+ object-assign "^4.0.1"
+
is-expression@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-4.0.0.tgz#c33155962abf21d0afd2552514d67d2ec16fd2ab"
@@ -5455,6 +5764,27 @@ jest-haste-map@^26.3.0:
optionalDependencies:
fsevents "^2.1.2"
+jest-haste-map@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa"
+ integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/graceful-fs" "^4.1.2"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-regex-util "^26.0.0"
+ jest-serializer "^26.6.2"
+ jest-util "^26.6.2"
+ jest-worker "^26.6.2"
+ micromatch "^4.0.2"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.1.2"
+
jest-jasmine2@^26.4.2:
version "26.4.2"
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz#18a9d5bec30904267ac5e9797570932aec1e2257"
@@ -5618,6 +5948,14 @@ jest-serializer@^26.3.0:
"@types/node" "*"
graceful-fs "^4.2.4"
+jest-serializer@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1"
+ integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==
+ dependencies:
+ "@types/node" "*"
+ graceful-fs "^4.2.4"
+
jest-snapshot@^26.4.2:
version "26.4.2"
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.2.tgz#87d3ac2f2bd87ea8003602fbebd8fcb9e94104f6"
@@ -5651,6 +5989,18 @@ jest-util@26.x, jest-util@^26.3.0:
is-ci "^2.0.0"
micromatch "^4.0.2"
+jest-util@^26.1.0, jest-util@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1"
+ integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==
+ dependencies:
+ "@jest/types" "^26.6.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ is-ci "^2.0.0"
+ micromatch "^4.0.2"
+
jest-validate@^26.4.2:
version "26.4.2"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.4.2.tgz#e871b0dfe97747133014dcf6445ee8018398f39c"
@@ -5685,6 +6035,15 @@ jest-worker@^26.3.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
+jest-worker@^26.6.2:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
jest@26.x, jest@^26.0.0:
version "26.4.2"
resolved "https://registry.yarnpkg.com/jest/-/jest-26.4.2.tgz#7e8bfb348ec33f5459adeaffc1a25d5752d9d312"
@@ -5704,7 +6063,7 @@ js-beautify@^1.6.12:
mkdirp "~0.5.1"
nopt "~4.0.1"
-js-stringify@^1.0.2:
+js-stringify@^1.0.1, js-stringify@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds=
@@ -5803,6 +6162,13 @@ json5@2.x, json5@^2.1.2:
dependencies:
minimist "^1.2.5"
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
json5@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e"
@@ -6168,6 +6534,15 @@ load-json-file@^4.0.0:
pify "^3.0.0"
strip-bom "^3.0.0"
+loader-utils@^1.1.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==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
@@ -6228,6 +6603,11 @@ lodash._root@~3.0.0:
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
lodash.capitalize@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9"
@@ -6304,7 +6684,7 @@ lodash.without@~4.4.0:
resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=
-lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.2.1:
+lodash@4.x, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.2.1:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -6376,6 +6756,13 @@ macos-release@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f"
+magic-string@^0.25.7:
+ version "0.25.7"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ dependencies:
+ sourcemap-codec "^1.4.4"
+
make-dir@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
@@ -6722,6 +7109,11 @@ mute-stream@~0.0.4:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+nanoid@^3.1.23:
+ version "3.1.23"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
+ integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
+
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -7648,6 +8040,48 @@ postcss-message-helpers@^2.0.0:
resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=
+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@^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@^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@^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@^4.0.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.1.3.tgz#c4c4c41d98d97d24c70e88dacfc97af5a4b3e21d"
+ integrity sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==
+ 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-selector-parser@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
@@ -7656,11 +8090,24 @@ postcss-selector-parser@^6.0.2:
indexes-of "^1.0.1"
uniq "^1.0.1"
+postcss-selector-parser@^6.0.4:
+ version "6.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
+ integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
postcss-value-parser@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+postcss-value-parser@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
+ integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
+
postcss@^6.0.23:
version "6.0.23"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
@@ -7679,6 +8126,15 @@ postcss@^7.0.13, postcss@^7.0.14:
source-map "^0.6.1"
supports-color "^6.1.0"
+postcss@^8.1.10:
+ version "8.3.5"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709"
+ integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==
+ dependencies:
+ colorette "^1.2.2"
+ nanoid "^3.1.23"
+ source-map-js "^0.6.2"
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -7813,6 +8269,15 @@ psl@^1.1.28:
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+pug-attrs@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336"
+ integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==
+ dependencies:
+ constantinople "^3.0.1"
+ js-stringify "^1.0.1"
+ pug-runtime "^2.0.5"
+
pug-attrs@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-3.0.0.tgz#b10451e0348165e31fad1cc23ebddd9dc7347c41"
@@ -7822,6 +8287,20 @@ pug-attrs@^3.0.0:
js-stringify "^1.0.2"
pug-runtime "^3.0.0"
+pug-code-gen@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.3.tgz#122eb9ada9b5bf601705fe15aaa0a7d26bc134ab"
+ integrity sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==
+ dependencies:
+ constantinople "^3.1.2"
+ doctypes "^1.1.0"
+ js-stringify "^1.0.1"
+ pug-attrs "^2.0.4"
+ pug-error "^1.3.3"
+ pug-runtime "^2.0.5"
+ void-elements "^2.0.1"
+ with "^5.0.0"
+
pug-code-gen@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz#ad190f4943133bf186b60b80de483100e132e2ce"
@@ -7836,11 +8315,29 @@ pug-code-gen@^3.0.2:
void-elements "^3.1.0"
with "^7.0.0"
+pug-error@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6"
+ integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==
+
pug-error@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-2.0.0.tgz#5c62173cb09c34de2a2ce04f17b8adfec74d8ca5"
integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==
+pug-filters@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7"
+ integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==
+ dependencies:
+ clean-css "^4.1.11"
+ constantinople "^3.0.1"
+ jstransformer "1.0.0"
+ pug-error "^1.3.3"
+ pug-walk "^1.1.8"
+ resolve "^1.1.6"
+ uglify-js "^2.6.1"
+
pug-filters@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-4.0.0.tgz#d3e49af5ba8472e9b7a66d980e707ce9d2cc9b5e"
@@ -7852,6 +8349,15 @@ pug-filters@^4.0.0:
pug-walk "^2.0.0"
resolve "^1.15.1"
+pug-lexer@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd"
+ integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==
+ dependencies:
+ character-parser "^2.1.1"
+ is-expression "^3.0.0"
+ pug-error "^1.3.3"
+
pug-lexer@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-5.0.1.tgz#ae44628c5bef9b190b665683b288ca9024b8b0d5"
@@ -7861,6 +8367,14 @@ pug-lexer@^5.0.0:
is-expression "^4.0.0"
pug-error "^2.0.0"
+pug-linker@^3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb"
+ integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==
+ dependencies:
+ pug-error "^1.3.3"
+ pug-walk "^1.1.8"
+
pug-linker@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-4.0.0.tgz#12cbc0594fc5a3e06b9fc59e6f93c146962a7708"
@@ -7869,6 +8383,14 @@ pug-linker@^4.0.0:
pug-error "^2.0.0"
pug-walk "^2.0.0"
+pug-load@^2.0.12:
+ version "2.0.12"
+ resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b"
+ integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==
+ dependencies:
+ object-assign "^4.1.0"
+ pug-walk "^1.1.8"
+
pug-load@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-3.0.0.tgz#9fd9cda52202b08adb11d25681fb9f34bd41b662"
@@ -7877,6 +8399,14 @@ pug-load@^3.0.0:
object-assign "^4.1.1"
pug-walk "^2.0.0"
+pug-parser@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9"
+ integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==
+ dependencies:
+ pug-error "^1.3.3"
+ token-stream "0.0.1"
+
pug-parser@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-6.0.0.tgz#a8fdc035863a95b2c1dc5ebf4ecf80b4e76a1260"
@@ -7885,11 +8415,23 @@ pug-parser@^6.0.0:
pug-error "^2.0.0"
token-stream "1.0.0"
+pug-runtime@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a"
+ integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==
+
pug-runtime@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-3.0.1.tgz#f636976204723f35a8c5f6fad6acda2a191b83d7"
integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==
+pug-strip-comments@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8"
+ integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==
+ dependencies:
+ pug-error "^1.3.3"
+
pug-strip-comments@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz#f94b07fd6b495523330f490a7f554b4ff876303e"
@@ -7897,11 +8439,30 @@ pug-strip-comments@^2.0.0:
dependencies:
pug-error "^2.0.0"
+pug-walk@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a"
+ integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==
+
pug-walk@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-2.0.0.tgz#417aabc29232bb4499b5b5069a2b2d2a24d5f5fe"
integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==
+pug@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d"
+ integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==
+ dependencies:
+ pug-code-gen "^2.0.2"
+ pug-filters "^3.1.1"
+ pug-lexer "^4.1.0"
+ pug-linker "^3.0.6"
+ pug-load "^2.0.12"
+ pug-parser "^5.0.1"
+ pug-runtime "^2.0.5"
+ pug-strip-comments "^1.0.4"
+
pug@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/pug/-/pug-3.0.1.tgz#9b287554043e6d18852673a382b0350595bdc067"
@@ -8376,6 +8937,14 @@ resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+resolve@^1.1.6, resolve@^1.15.1:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
resolve@^1.10.0, resolve@^1.17.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
@@ -8389,14 +8958,6 @@ resolve@^1.12.0, resolve@^1.13.1:
dependencies:
path-parse "^1.0.6"
-resolve@^1.15.1:
- version "1.20.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
- integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
- dependencies:
- is-core-module "^2.2.0"
- path-parse "^1.0.6"
-
resolve@^1.3.2, resolve@^1.8.1:
version "1.9.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06"
@@ -8772,6 +9333,11 @@ sorted-union-stream@~2.1.3:
from2 "^1.3.0"
stream-iterate "^1.1.0"
+source-map-js@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
+ integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
+
source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
version "0.5.3"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
@@ -8823,6 +9389,11 @@ source-map@~0.1.7:
dependencies:
amdefine ">=0.0.4"
+sourcemap-codec@^1.4.4:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
spawn-error-forwarder@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029"
@@ -8967,6 +9538,11 @@ string-argv@^0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
+string-hash@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
+
string-length@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1"
@@ -9131,7 +9707,7 @@ strip-indent@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
-strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
+strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -9357,6 +9933,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
+token-stream@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"
+ integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=
+
token-stream@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4"
@@ -9435,6 +10016,32 @@ ts-jest@^26.3.0:
semver "7.x"
yargs-parser "18.x"
+ts-jest@^26.4.4:
+ version "26.5.6"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35"
+ integrity sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==
+ dependencies:
+ bs-logger "0.x"
+ buffer-from "1.x"
+ fast-json-stable-stringify "2.x"
+ jest-util "^26.1.0"
+ json5 "2.x"
+ lodash "4.x"
+ make-error "1.x"
+ mkdirp "1.x"
+ semver "7.x"
+ yargs-parser "20.x"
+
+tsconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7"
+ integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==
+ dependencies:
+ "@types/strip-bom" "^3.0.0"
+ "@types/strip-json-comments" "0.0.30"
+ strip-bom "^3.0.0"
+ strip-json-comments "^2.0.0"
+
tslib@^1.10.0, tslib@^1.9.0:
version "1.11.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
@@ -9495,7 +10102,12 @@ typescript@^3.2.2:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
-uglify-js@^2.4.19:
+typescript@^4.1.2:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc"
+ integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==
+
+uglify-js@^2.4.19, uglify-js@^2.6.1:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
dependencies:
@@ -9658,7 +10270,7 @@ use@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
@@ -9718,14 +10330,19 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
+void-elements@^2.0.1, void-elements@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+
void-elements@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=
-void-elements@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+vue-class-component@^8.0.0-beta.4:
+ version "8.0.0-rc.1"
+ resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-8.0.0-rc.1.tgz#db692cd97656eb9a08206c03d0b7398cdb1d9420"
+ integrity sha512-w1nMzsT/UdbDAXKqhwTmSoyuJzUXKrxLE77PCFVuC6syr8acdFDAq116xgvZh9UCuV0h+rlCtxXolr3Hi3HyPQ==
vue-eslint-parser@^5.0.0:
version "5.0.0"
@@ -9738,6 +10355,11 @@ vue-eslint-parser@^5.0.0:
esquery "^1.0.1"
lodash "^4.17.11"
+vue-property-decorator@^10.0.0-rc.3:
+ version "10.0.0-rc.3"
+ resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-10.0.0-rc.3.tgz#bb0cb2c7c31dc41149eb432f2104fb82dc3d95be"
+ integrity sha512-EGqjf8Lq+kTausZzfLB1ynWOcyay8ZLAc5p2VlKGEX2q+BjYw84oZxr6IcdwuxGIdNmriZqPUX6AlAluBdnbEg==
+
vue-template-compiler@^2.4.2, vue-template-compiler@^2.5.21:
version "2.6.14"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763"
@@ -9755,6 +10377,15 @@ vue@^2.4.2, vue@^2.5.21:
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235"
integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==
+vue@^3.0.3:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.1.2.tgz#647f8e3949a3d600771dca25d50225dc3e594c64"
+ integrity sha512-q/rbKpb7aofax4ugqu2k/uj7BYuNPcd6Z5/qJtfkJQsE0NkwVoCyeSh7IZGH61hChwYn3CEkh4bHolvUPxlQ+w==
+ dependencies:
+ "@vue/compiler-dom" "3.1.2"
+ "@vue/runtime-dom" "3.1.2"
+ "@vue/shared" "3.1.2"
+
w3c-hr-time@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
@@ -9854,6 +10485,14 @@ windows-release@^3.1.0:
dependencies:
execa "^1.0.0"
+with@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe"
+ integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=
+ dependencies:
+ acorn "^3.1.0"
+ acorn-globals "^3.0.0"
+
with@^7.0.0:
version "7.0.2"
resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac"
@@ -10011,6 +10650,11 @@ yargs-parser@18.x, yargs-parser@^18.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
+yargs-parser@20.x:
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
yargs-parser@^10.0.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"