From f3beba674dfe39cd789b27e11231e958682098d3 Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sun, 27 May 2018 01:58:39 +0800 Subject: [PATCH] test: set up test for core (#480) --- .babelrc | 9 + .eslintrc.js | 3 +- lib/app/app.js | 2 +- lib/app/dataMixin.js | 137 +-- lib/markdown/index.js | 16 +- lib/util/index.js | 2 - package.json | 14 +- test/app/Content.spec.js | 30 + test/default-theme/DropdownLink.spec.js | 31 + test/default-theme/NavLink.spec.js | 34 + .../__snapshots__/DropdownLink.spec.js.snap | 33 + .../__snapshots__/NavLink.spec.js.snap | 19 + test/{simple => docs-simple}/README.md | 0 test/hoc.js | 19 + test/jest.config.js | 20 + .../__snapshots__/containers.spec.js.snap | 28 + .../__snapshots__/highlight.spec.js.snap | 6 + .../__snapshots__/highlightLines.spec.js.snap | 20 + .../markdown/__snapshots__/hoist.spec.js.snap | 30 + .../__snapshots__/lineNumers.spec.js.snap | 26 + test/markdown/containers.spec.js | 15 + .../fragments/code-highlightLines-multiple.md | 8 + .../fragments/code-highlightLines-single.md | 3 + test/markdown/fragments/code.md | 3 + test/markdown/fragments/container-danger.md | 3 + test/markdown/fragments/container-tip.md | 3 + test/markdown/fragments/container-v-pre.md | 3 + test/markdown/fragments/container-warning.md | 3 + test/markdown/fragments/hoist.md | 10 + test/markdown/highlight.spec.js | 15 + test/markdown/highlightLines.spec.js | 26 + test/markdown/hoist.spec.js | 23 + test/markdown/lineNumers.spec.js | 23 + test/markdown/util.js | 20 + test/prepare.js | 21 + test/util.js | 42 + yarn.lock | 993 +++++++++++++++++- 37 files changed, 1582 insertions(+), 111 deletions(-) create mode 100644 .babelrc create mode 100644 test/app/Content.spec.js create mode 100644 test/default-theme/DropdownLink.spec.js create mode 100644 test/default-theme/NavLink.spec.js create mode 100644 test/default-theme/__snapshots__/DropdownLink.spec.js.snap create mode 100644 test/default-theme/__snapshots__/NavLink.spec.js.snap rename test/{simple => docs-simple}/README.md (100%) create mode 100644 test/hoc.js create mode 100644 test/jest.config.js create mode 100644 test/markdown/__snapshots__/containers.spec.js.snap create mode 100644 test/markdown/__snapshots__/highlight.spec.js.snap create mode 100644 test/markdown/__snapshots__/highlightLines.spec.js.snap create mode 100644 test/markdown/__snapshots__/hoist.spec.js.snap create mode 100644 test/markdown/__snapshots__/lineNumers.spec.js.snap create mode 100644 test/markdown/containers.spec.js create mode 100644 test/markdown/fragments/code-highlightLines-multiple.md create mode 100644 test/markdown/fragments/code-highlightLines-single.md create mode 100644 test/markdown/fragments/code.md create mode 100644 test/markdown/fragments/container-danger.md create mode 100644 test/markdown/fragments/container-tip.md create mode 100644 test/markdown/fragments/container-v-pre.md create mode 100644 test/markdown/fragments/container-warning.md create mode 100644 test/markdown/fragments/hoist.md create mode 100644 test/markdown/highlight.spec.js create mode 100644 test/markdown/highlightLines.spec.js create mode 100644 test/markdown/hoist.spec.js create mode 100644 test/markdown/lineNumers.spec.js create mode 100644 test/markdown/util.js create mode 100644 test/prepare.js create mode 100644 test/util.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000000..427e7a4d01 --- /dev/null +++ b/.babelrc @@ -0,0 +1,9 @@ +{ + "env": { + "test": { + "presets": [ + ["@babel/preset-env", { "targets": { "node": 8 }}] + ] + } + } +} diff --git a/.eslintrc.js b/.eslintrc.js index 204e8efba3..343f1b9f9a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,8 @@ module.exports = { root: true, extends: [ - 'plugin:vue-libs/recommended' + 'plugin:vue-libs/recommended', + 'plugin:jest/recommended' ], rules: { indent: ['error', 2, { MemberExpression: 'off' }] diff --git a/lib/app/app.js b/lib/app/app.js index ceaa7b905b..d8da7dccc0 100644 --- a/lib/app/app.js +++ b/lib/app/app.js @@ -26,7 +26,7 @@ if (module.hot) { Vue.config.productionTip = false Vue.use(Router) // mixin for exposing $site and $page -Vue.mixin(dataMixin) +Vue.mixin(dataMixin(siteData)) // component for rendering markdown content and setting title etc. Vue.component('Content', Content) Vue.component('OutboundLink', OutboundLink) diff --git a/lib/app/dataMixin.js b/lib/app/dataMixin.js index 5b249b4589..d2f85afb2a 100644 --- a/lib/app/dataMixin.js +++ b/lib/app/dataMixin.js @@ -1,7 +1,75 @@ import Vue from 'vue' -import { siteData } from './.temp/siteData' import { findPageForPath } from './util' +export default function dataMixin (siteData) { + prepare(siteData) + const store = new Vue({ + data: { siteData } + }) + + if (module.hot) { + module.hot.accept('./.temp/siteData', () => { + prepare(siteData) + store.siteData = siteData + }) + } + + return { + computed: { + $site () { + return store.siteData + }, + $localeConfig () { + const { locales = {}} = this.$site + let targetLang + let defaultLang + for (const path in locales) { + if (path === '/') { + defaultLang = locales[path] + } else if (this.$page.path.indexOf(path) === 0) { + targetLang = locales[path] + } + } + return targetLang || defaultLang || {} + }, + $siteTitle () { + return this.$localeConfig.title || this.$site.title || '' + }, + $title () { + const page = this.$page + const siteTitle = this.$siteTitle + const selfTitle = page.frontmatter.home ? null : ( + page.frontmatter.title || // explicit title + page.title // inferred title + ) + return siteTitle + ? selfTitle + ? (siteTitle + ' | ' + selfTitle) + : siteTitle + : selfTitle || 'VuePress' + }, + $description () { + return this.$page.frontmatter.description || this.$localeConfig.description || this.$site.description || '' + }, + $lang () { + return this.$page.frontmatter.lang || this.$localeConfig.lang || 'en-US' + }, + $localePath () { + return this.$localeConfig.path || '/' + }, + $themeLocaleConfig () { + return (this.$site.themeConfig.locales || {})[this.$localePath] || {} + }, + $page () { + return findPageForPath( + this.$site.pages, + this.$route.path + ) + } + } + } +} + function prepare (siteData) { siteData.pages.forEach(page => { if (!page.frontmatter) { @@ -15,70 +83,3 @@ function prepare (siteData) { } Object.freeze(siteData) } - -prepare(siteData) -const store = new Vue({ - data: { siteData } -}) - -if (module.hot) { - module.hot.accept('./.temp/siteData', () => { - prepare(siteData) - store.siteData = siteData - }) -} - -export default { - computed: { - $site () { - return store.siteData - }, - $localeConfig () { - const { locales = {}} = this.$site - let targetLang - let defaultLang - for (const path in locales) { - if (path === '/') { - defaultLang = locales[path] - } else if (this.$page.path.indexOf(path) === 0) { - targetLang = locales[path] - } - } - return targetLang || defaultLang || {} - }, - $siteTitle () { - return this.$localeConfig.title || this.$site.title || '' - }, - $title () { - const page = this.$page - const siteTitle = this.$siteTitle - const selfTitle = page.frontmatter.home ? null : ( - page.frontmatter.title || // explicit title - page.title // inferred title - ) - return siteTitle - ? selfTitle - ? (siteTitle + ' | ' + selfTitle) - : siteTitle - : selfTitle || 'VuePress' - }, - $description () { - return this.$page.frontmatter.description || this.$localeConfig.description || this.$site.description || '' - }, - $lang () { - return this.$page.frontmatter.lang || this.$localeConfig.lang || 'en-US' - }, - $localePath () { - return this.$localeConfig.path || '/' - }, - $themeLocaleConfig () { - return (this.$site.themeConfig.locales || {})[this.$localePath] || {} - }, - $page () { - return findPageForPath( - this.$site.pages, - this.$route.path - ) - } - } -} diff --git a/lib/markdown/index.js b/lib/markdown/index.js index 29c994039b..872df7bbc4 100644 --- a/lib/markdown/index.js +++ b/lib/markdown/index.js @@ -10,7 +10,7 @@ const emoji = require('markdown-it-emoji') const anchor = require('markdown-it-anchor') const toc = require('markdown-it-table-of-contents') const _slugify = require('./slugify') -const { parseHeaders } = require('../util') +const parseHeaders = require('../util/parseHeaders') module.exports = ({ markdown = {}} = {}) => { // allow user config slugify @@ -54,6 +54,15 @@ module.exports = ({ markdown = {}} = {}) => { md.use(lineNumbers) } + module.exports.dataReturnable(md) + + // expose slugify + md.slugify = slugify + + return md +} + +module.exports.dataReturnable = function dataReturnable (md) { // override render to allow custom plugins return data const render = md.render md.render = (...args) => { @@ -64,9 +73,4 @@ module.exports = ({ markdown = {}} = {}) => { data: md.__data } } - - // expose slugify - md.slugify = slugify - - return md } diff --git a/lib/util/index.js b/lib/util/index.js index 61010daaca..4924ebe0ab 100644 --- a/lib/util/index.js +++ b/lib/util/index.js @@ -5,8 +5,6 @@ exports.encodePath = path => { return path.split('/').map(item => encodeURIComponent(item)).join('/') } -exports.parseHeaders = parseHeaders - exports.normalizeHeadTag = tag => { if (typeof tag === 'string') { tag = [tag] diff --git a/package.json b/package.json index 356be87c72..39f2fb41c2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "dev": "node bin/vuepress dev docs", "build": "node bin/vuepress build docs", "lint": "eslint --fix --ext .js,.vue bin/ lib/ test/", - "prepublishOnly": "conventional-changelog -p angular -r 2 -i CHANGELOG.md -s" + "prepublishOnly": "conventional-changelog -p angular -r 2 -i CHANGELOG.md -s", + "test": "node test/prepare.js && jest --config test/jest.config.js" }, "repository": { "type": "git", @@ -37,10 +38,10 @@ ] }, "dependencies": { - "autoprefixer": "^8.2.0", "@babel/core": "7.0.0-beta.47", - "babel-loader": "8.0.0-beta.3", "@vue/babel-preset-app": "3.0.0-beta.11", + "autoprefixer": "^8.2.0", + "babel-loader": "8.0.0-beta.3", "cache-loader": "^1.2.2", "chalk": "^2.3.2", "chokidar": "^2.0.3", @@ -94,10 +95,17 @@ "workbox-build": "^3.1.0" }, "devDependencies": { + "@vue/test-utils": "^1.0.0-beta.16", + "babel-core": "^7.0.0-0", + "babel-jest": "^23.0.0", "conventional-changelog-cli": "^1.3.22", "eslint": "^4.19.1", + "eslint-plugin-jest": "^21.15.1", "eslint-plugin-vue-libs": "^3.0.0", + "jest": "^23.0.0", + "jest-serializer-vue": "^1.0.0", "lint-staged": "^7.0.4", + "vue-jest": "^2.6.0", "vuepress-theme-vue": "^1.0.2", "yorkie": "^1.0.3" }, diff --git a/test/app/Content.spec.js b/test/app/Content.spec.js new file mode 100644 index 0000000000..b5790443e0 --- /dev/null +++ b/test/app/Content.spec.js @@ -0,0 +1,30 @@ +import Content from '@/app/Content.js' +import { mount } from '@vue/test-utils' +import { getRouter, modeTestRunner } from '../util' + +function test (mode, localVue) { + it(`${mode} - add custom class by default.`, () => { + const wrapper = mount(Content, { + localVue, + router: getRouter() + }) + expect(wrapper.contains('.custom')).toBe(true) + }) + + it(`${mode} - remove custom when custom set to false.`, () => { + const wrapper = mount(Content, { + // https://vue-test-utils.vuejs.org/api/options.html#context + context: { + props: { + custom: false + } + }, + localVue, + router: getRouter() + }) + expect(wrapper.contains('.custom')).toBe(false) + }) +} + +modeTestRunner('Content', test) + diff --git a/test/default-theme/DropdownLink.spec.js b/test/default-theme/DropdownLink.spec.js new file mode 100644 index 0000000000..ef868a70a7 --- /dev/null +++ b/test/default-theme/DropdownLink.spec.js @@ -0,0 +1,31 @@ +import { mount, RouterLinkStub } from '@vue/test-utils' +import DropdownLink from '@/default-theme/DropdownLink.vue' +import { modeTestRunner } from '../util' + +function test (mode, localVue) { + it(`$${mode} - renders dropdown link.`, () => { + const item = { + text: 'VuePress', + items: [ + { + text: 'Guide', + link: '/guide/' + }, + { + text: 'Config Reference', + link: '/config/' + } + ] + } + const wrapper = mount(DropdownLink, { + localVue, + stubs: { + 'router-link': RouterLinkStub + }, + propsData: { item } + }) + expect(wrapper.html()).toMatchSnapshot() + }) +} + +modeTestRunner('DropdownLink', test) diff --git a/test/default-theme/NavLink.spec.js b/test/default-theme/NavLink.spec.js new file mode 100644 index 0000000000..86e501fc90 --- /dev/null +++ b/test/default-theme/NavLink.spec.js @@ -0,0 +1,34 @@ +import { mount, RouterLinkStub } from '@vue/test-utils' +import { modeTestRunner } from '../util' +import NavLink from '@/default-theme/NavLink.vue' + +function test (mode, localVue) { + it(`$${mode} - renders nav link with internal link`, () => { + const item = { + link: '/', + text: 'VuePress' + } + const wrapper = mount(NavLink, { + localVue, + stubs: { + 'router-link': RouterLinkStub + }, + propsData: { item } + }) + expect(wrapper.html()).toMatchSnapshot() + }) + + it(`$${mode} - renders nav link with external link`, () => { + const item = { + link: 'http://vuejs.org/', + text: 'Vue' + } + const wrapper = mount(NavLink, { + localVue, + propsData: { item } + }) + expect(wrapper.html()).toMatchSnapshot() + }) +} + +modeTestRunner('NavLink', test) diff --git a/test/default-theme/__snapshots__/DropdownLink.spec.js.snap b/test/default-theme/__snapshots__/DropdownLink.spec.js.snap new file mode 100644 index 0000000000..a302d2112a --- /dev/null +++ b/test/default-theme/__snapshots__/DropdownLink.spec.js.snap @@ -0,0 +1,33 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DropdownLink $i18n - renders dropdown link. 1`] = ` + +`; + +exports[`DropdownLink $simple - renders dropdown link. 1`] = ` + +`; diff --git a/test/default-theme/__snapshots__/NavLink.spec.js.snap b/test/default-theme/__snapshots__/NavLink.spec.js.snap new file mode 100644 index 0000000000..4b9cd02ccc --- /dev/null +++ b/test/default-theme/__snapshots__/NavLink.spec.js.snap @@ -0,0 +1,19 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NavLink $i18n - renders nav link with external link 1`] = ` + + Vue + + +`; + +exports[`NavLink $i18n - renders nav link with internal link 1`] = `VuePress`; + +exports[`NavLink $simple - renders nav link with external link 1`] = ` + + Vue + + +`; + +exports[`NavLink $simple - renders nav link with internal link 1`] = `VuePress`; diff --git a/test/simple/README.md b/test/docs-simple/README.md similarity index 100% rename from test/simple/README.md rename to test/docs-simple/README.md diff --git a/test/hoc.js b/test/hoc.js new file mode 100644 index 0000000000..219b214865 --- /dev/null +++ b/test/hoc.js @@ -0,0 +1,19 @@ +const Component = { + props: ['name'], + render (h) { + return h('p', { + class: ['component', this.name] + }, this.name) + } +} + +// When the child component is a pure presentation component, +// we want to be able to display a sub-component with minimal info, +// rather than stubbing it directly. +export function mockComponent (name) { + return { + render (h) { + return h(Component, { props: { name }}) + } + } +} diff --git a/test/jest.config.js b/test/jest.config.js new file mode 100644 index 0000000000..4d76006df3 --- /dev/null +++ b/test/jest.config.js @@ -0,0 +1,20 @@ +// https://github.com/facebook/jest/tree/master/packages/babel-jest +// TODO remove 'babel-core@^7.0.0-0' when babel-jest can work with '@babel/core' + +module.exports = { + verbose: true, + moduleFileExtensions: [ + 'js', + 'vue' + ], + moduleNameMapper: { + '^@/(.*)$': '/../lib/$1' + }, + transform: { + '^.+\\.js$': '/../node_modules/babel-jest', + '.*\\.(vue)$': '/../node_modules/vue-jest' + }, + snapshotSerializers: [ + '/../node_modules/jest-serializer-vue' + ] +} diff --git a/test/markdown/__snapshots__/containers.spec.js.snap b/test/markdown/__snapshots__/containers.spec.js.snap new file mode 100644 index 0000000000..4169c028c3 --- /dev/null +++ b/test/markdown/__snapshots__/containers.spec.js.snap @@ -0,0 +1,28 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`containers danger 1`] = ` +
+

WARNING

+

I am a danger

+
+`; + +exports[`containers tip 1`] = ` +
+

TIP

+

I am a tip

+
+`; + +exports[`containers v-pre 1`] = ` +
+

I am a v-pre

+
+`; + +exports[`containers warning 1`] = ` +
+

WARNING

+

I am a warning

+
+`; diff --git a/test/markdown/__snapshots__/highlight.spec.js.snap b/test/markdown/__snapshots__/highlight.spec.js.snap new file mode 100644 index 0000000000..4435911643 --- /dev/null +++ b/test/markdown/__snapshots__/highlight.spec.js.snap @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`highlight should highlight code 1`] = ` +
new Vue()
+
+`; diff --git a/test/markdown/__snapshots__/highlightLines.spec.js.snap b/test/markdown/__snapshots__/highlightLines.spec.js.snap new file mode 100644 index 0000000000..793a306d9b --- /dev/null +++ b/test/markdown/__snapshots__/highlightLines.spec.js.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`highlightLines highlight multiple lines 1`] = ` +
+
 
+
 
+
+
 
+
 
+
+
+
const app = new Vue({ render, router }) app.$mount('#app') +`; + +exports[`highlightLines highlight single line 1`] = ` +
+
 
+
+
new Vue() +`; diff --git a/test/markdown/__snapshots__/hoist.spec.js.snap b/test/markdown/__snapshots__/hoist.spec.js.snap new file mode 100644 index 0000000000..b622990431 --- /dev/null +++ b/test/markdown/__snapshots__/hoist.spec.js.snap @@ -0,0 +1,30 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`hoist Should keep script and style when not using hoist 1`] = ` +

H1

+ + +

H2

+`; + +exports[`hoist Should miss script and style when using hoist 1`] = ` +

H1

+

H2

+`; + +exports[`hoist Should miss script and style when using hoist 2`] = ` +Object { + "hoistedTags": Array [ + , + , + ], +} +`; diff --git a/test/markdown/__snapshots__/lineNumers.spec.js.snap b/test/markdown/__snapshots__/lineNumers.spec.js.snap new file mode 100644 index 0000000000..b2b71eb307 --- /dev/null +++ b/test/markdown/__snapshots__/lineNumers.spec.js.snap @@ -0,0 +1,26 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`lineNumbers should lineNumbers work with highlightLines 1`] = ` + +
+ +
+
 
+
+
new Vue() +
+ +
+ +`; + +exports[`lineNumbers should render lineNumbers 1`] = ` + +
+
new Vue()
+
+
+ +
+ +`; diff --git a/test/markdown/containers.spec.js b/test/markdown/containers.spec.js new file mode 100644 index 0000000000..84f4def77f --- /dev/null +++ b/test/markdown/containers.spec.js @@ -0,0 +1,15 @@ +import { Md, getFragment } from './util' +import containers from '@/markdown/containers.js' + +const mdC = Md().use(containers) + +describe('containers', () => { + const containerLabels = ['tip', 'warning', 'danger', 'v-pre'] + containerLabels.forEach(label => { + test(label, async () => { + const input = await getFragment(`container-${label}`) + const output = mdC.render(input) + expect(output).toMatchSnapshot() + }) + }) +}) diff --git a/test/markdown/fragments/code-highlightLines-multiple.md b/test/markdown/fragments/code-highlightLines-multiple.md new file mode 100644 index 0000000000..1f597b1cc5 --- /dev/null +++ b/test/markdown/fragments/code-highlightLines-multiple.md @@ -0,0 +1,8 @@ +``` js {1-2,4-5} +const app = new Vue({ + render, + router +}) + +app.$mount('#app') +``` diff --git a/test/markdown/fragments/code-highlightLines-single.md b/test/markdown/fragments/code-highlightLines-single.md new file mode 100644 index 0000000000..3cf996be45 --- /dev/null +++ b/test/markdown/fragments/code-highlightLines-single.md @@ -0,0 +1,3 @@ +``` js {1} +new Vue() +``` diff --git a/test/markdown/fragments/code.md b/test/markdown/fragments/code.md new file mode 100644 index 0000000000..af4a84a927 --- /dev/null +++ b/test/markdown/fragments/code.md @@ -0,0 +1,3 @@ +``` js +new Vue() +``` diff --git a/test/markdown/fragments/container-danger.md b/test/markdown/fragments/container-danger.md new file mode 100644 index 0000000000..2f2aa62ca6 --- /dev/null +++ b/test/markdown/fragments/container-danger.md @@ -0,0 +1,3 @@ +::: danger +I am a danger +::: diff --git a/test/markdown/fragments/container-tip.md b/test/markdown/fragments/container-tip.md new file mode 100644 index 0000000000..e9b82b19fd --- /dev/null +++ b/test/markdown/fragments/container-tip.md @@ -0,0 +1,3 @@ +::: tip +I am a tip +::: diff --git a/test/markdown/fragments/container-v-pre.md b/test/markdown/fragments/container-v-pre.md new file mode 100644 index 0000000000..f1694023b7 --- /dev/null +++ b/test/markdown/fragments/container-v-pre.md @@ -0,0 +1,3 @@ +::: v-pre +I am a v-pre +::: diff --git a/test/markdown/fragments/container-warning.md b/test/markdown/fragments/container-warning.md new file mode 100644 index 0000000000..37aa641bc0 --- /dev/null +++ b/test/markdown/fragments/container-warning.md @@ -0,0 +1,3 @@ +::: warning +I am a warning +::: diff --git a/test/markdown/fragments/hoist.md b/test/markdown/fragments/hoist.md new file mode 100644 index 0000000000..91f4b3379c --- /dev/null +++ b/test/markdown/fragments/hoist.md @@ -0,0 +1,10 @@ +# H1 + + + + +## H2 diff --git a/test/markdown/highlight.spec.js b/test/markdown/highlight.spec.js new file mode 100644 index 0000000000..19522235f8 --- /dev/null +++ b/test/markdown/highlight.spec.js @@ -0,0 +1,15 @@ +import { Md, getFragment } from './util' +import highlight from '@/markdown/highlight.js' + +const md = Md() +const mdH = Md().set({ highlight }) + +describe('highlight', () => { + test('should highlight code', async () => { + const input = await getFragment('code') + const output1 = md.render(input) + const output2 = mdH.render(input) + expect(output1 === output2).toBe(false) + expect(output2).toMatchSnapshot() + }) +}) diff --git a/test/markdown/highlightLines.spec.js b/test/markdown/highlightLines.spec.js new file mode 100644 index 0000000000..49fe7065c4 --- /dev/null +++ b/test/markdown/highlightLines.spec.js @@ -0,0 +1,26 @@ +import { Md, getFragment } from './util' +import highlightLines from '@/markdown/highlightLines.js' + +const md = Md() +const mdH = Md().use(highlightLines) + +describe('highlightLines', () => { + test('should the output not change when highlightLines is not detected', async () => { + const input = await getFragment('code') + const output1 = md.render(input) + const output2 = mdH.render(input) + expect(output1).toBe(output2) + }) + + test('highlight single line', async () => { + const input = await getFragment('code-highlightLines-single') + const output = mdH.render(input) + expect(output).toMatchSnapshot() + }) + + test('highlight multiple lines', async () => { + const input = await getFragment('code-highlightLines-multiple') + const output = mdH.render(input) + expect(output).toMatchSnapshot() + }) +}) diff --git a/test/markdown/hoist.spec.js b/test/markdown/hoist.spec.js new file mode 100644 index 0000000000..b2c5281b27 --- /dev/null +++ b/test/markdown/hoist.spec.js @@ -0,0 +1,23 @@ +import { Md, getFragment } from './util' +import hoist from '@/markdown/hoist.js' +import { dataReturnable } from '@/markdown/index.js' + +const md = Md().set({ html: true }) +const mdH = Md().set({ html: true }).use(hoist) + +dataReturnable(mdH) + +describe('hoist', () => { + test('Should keep script and style when not using hoist', async () => { + const input = await getFragment('hoist') + const output = md.render(input) + expect(output).toMatchSnapshot() + }) + + test('Should miss script and style when using hoist', async () => { + const input = await getFragment('hoist') + const { html, data } = mdH.render(input) + expect(html).toMatchSnapshot() + expect(data).toMatchSnapshot() + }) +}) diff --git a/test/markdown/lineNumers.spec.js b/test/markdown/lineNumers.spec.js new file mode 100644 index 0000000000..f7efafb85f --- /dev/null +++ b/test/markdown/lineNumers.spec.js @@ -0,0 +1,23 @@ +import { Md, getFragment } from './util' +import preWrapper from '@/markdown/preWrapper.js' +import lineNumbers from '@/markdown/lineNumbers.js' +import highlightLines from '@/markdown/highlightLines.js' + +// lineNumbers must be chained after preWrapper. +// since lineNumbers needs to add extra stateful class to its block wrapper. +const mdL = Md().use(preWrapper).use(lineNumbers) +const mdLH = Md().use(highlightLines).use(preWrapper).use(lineNumbers) + +describe('lineNumbers', () => { + test('should render lineNumbers', async () => { + const input = await getFragment('code') + const output = mdL.render(input) + expect(output).toMatchSnapshot() + }) + + test('should lineNumbers work with highlightLines', async () => { + const input = await getFragment('code-highlightLines-single') + const output = mdLH.render(input) + expect(output).toMatchSnapshot() + }) +}) diff --git a/test/markdown/util.js b/test/markdown/util.js new file mode 100644 index 0000000000..3920b7df1b --- /dev/null +++ b/test/markdown/util.js @@ -0,0 +1,20 @@ +import fs from 'fs-extra' +import LRU from 'lru-cache' +import path from 'path' + +const cache = LRU({ max: 1000 }) + +export function Md () { + return require('markdown-it')() +} + +export async function getFragment (name) { + let content = cache.get(name) + if (content) { + return content + } + const target = path.resolve(__dirname, `fragments/${name}.md`) + content = await fs.readFile(target, 'utf-8') + cache.set(name, content) + return content +} diff --git a/test/prepare.js b/test/prepare.js new file mode 100644 index 0000000000..9960d5dfb1 --- /dev/null +++ b/test/prepare.js @@ -0,0 +1,21 @@ +const path = require('path') +const fs = require('fs-extra') +const prepare = require('../lib/prepare') +const logger = require('../lib/util/logger') + +const tempPath = path.resolve(__dirname, '.temp') +const siteDatePath = path.resolve(__dirname, '../lib/app/.temp/siteData.js') + +async function prepareForTest () { + await fs.ensureDir(tempPath) + + await prepare(path.resolve(__dirname, '../docs')) + await fs.copy(siteDatePath, path.join(tempPath, 'siteData-i18n.js')) + + await prepare(path.resolve(__dirname, 'docs-simple')) + await fs.copy(siteDatePath, path.join(tempPath, 'siteData-simple.js')) +} + +prepareForTest().then(() => { + logger.wait('Preparing for testing ...') +}) diff --git a/test/util.js b/test/util.js new file mode 100644 index 0000000000..1696c5c552 --- /dev/null +++ b/test/util.js @@ -0,0 +1,42 @@ +import { createLocalVue } from '@vue/test-utils' +import dataMixin from '@/app/dataMixin' +import Router from 'vue-router' +import { mockComponent } from './hoc' +import { siteData as i18nSiteData } from './.temp/siteData-i18n' +import { siteData as simpleSiteData } from './.temp/siteData-simple' + +export function getRouter () { + return new Router() +} + +export function getLocalVueByMode (mode) { + const localVue = createLocalVue() + localVue.use(Router) + + // register global component + localVue.component('OutboundLink', mockComponent('outbound-link')) + + // register page component in root route. + localVue.component(i18nSiteData.pages[0].key, mockComponent('page-component')) + localVue.component(simpleSiteData.pages[0].key, mockComponent('page-component')) + + // data mixin + if (mode === 'i18n') { + localVue.mixin(dataMixin(i18nSiteData)) + } else { + localVue.mixin(dataMixin(simpleSiteData)) + } + + return localVue +} + +export function modeTestRunner (description, testFn, modes = ['simple', 'i18n']) { + if (!Array.isArray(modes)) { + modes = [modes] + } + modes.forEach(mode => { + describe(description, () => { + testFn(mode, getLocalVueByMode(mode)) + }) + }) +} diff --git a/yarn.lock b/yarn.lock index 626a497da5..05a3e3d395 100644 --- a/yarn.lock +++ b/yarn.lock @@ -745,6 +745,14 @@ "@shellscape/koa-send" "^4.1.0" debug "^2.6.8" +"@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" + +"@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" + "@vue/babel-preset-app@3.0.0-beta.11": version "3.0.0-beta.11" resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-3.0.0-beta.11.tgz#c8b889aa73464050f9cd3f9dc621951d85c24508" @@ -772,6 +780,12 @@ source-map "^0.5.6" vue-template-es2015-compiler "^1.6.0" +"@vue/test-utils@^1.0.0-beta.16": + version "1.0.0-beta.16" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.16.tgz#dcf7a30304391422e382b5f97db6eb9508112906" + dependencies: + lodash "^4.17.4" + "@webassemblyjs/ast@1.4.3": version "1.4.3" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.3.tgz#3b3f6fced944d8660273347533e6d4d315b5934a" @@ -1057,6 +1071,12 @@ app-root-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1156,6 +1176,10 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -1168,6 +1192,12 @@ async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@^2.1.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1220,6 +1250,34 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-core@^6.0.0, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-core@^7.0.0-0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + babel-eslint@^8.2.3: version "8.2.3" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.3.tgz#1a2e6681cc9bc4473c32899e59915e19cd6733cf" @@ -1231,10 +1289,37 @@ babel-eslint@^8.2.3: eslint-scope "~3.7.1" eslint-visitor-keys "^1.0.0" +babel-generator@^6.18.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + babel-helper-vue-jsx-merge-props@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.0.0.tgz#0e383a2aa6b3535e197db2929570a2182bd084e8" + dependencies: + babel-plugin-istanbul "^4.1.6" + babel-preset-jest "^23.0.0" + babel-loader@8.0.0-beta.3: version "8.0.0-beta.3" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.0-beta.3.tgz#49efeea6e8058d5af860a18a6de88b8c1450645b" @@ -1244,29 +1329,120 @@ babel-loader@8.0.0-beta.3: mkdirp "^0.5.1" util.promisify "^1.0.0" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + babel-plugin-dynamic-import-node@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.2.0.tgz#f91631e703e0595e47d4beafbb088576c87fbeee" dependencies: babel-plugin-syntax-dynamic-import "^6.18.0" +babel-plugin-istanbul@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.13.0" + find-up "^2.1.0" + istanbul-lib-instrument "^1.10.1" + test-exclude "^4.2.1" + +babel-plugin-jest-hoist@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.0.tgz#e61e68799f743391a1e6306ee270477aacf946c8" + babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" +babel-plugin-syntax-object-rest-spread@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-transform-es2015-modules-commonjs@^6.26.0: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babel-plugin-transform-vue-jsx@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-4.0.1.tgz#2c8bddce87a6ef09eaa59869ff1bfbeeafc5f88d" dependencies: esutils "^2.0.2" -babel-runtime@^6.26.0: +babel-preset-jest@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.0.0.tgz#49de0303f1b6875dcad6163eaa7eb8330d54824d" + dependencies: + babel-plugin-jest-hoist "^23.0.0" + babel-plugin-syntax-object-rest-spread "^6.13.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +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" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.18.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + babylon@7.0.0-beta.44: version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" @@ -1275,6 +1451,10 @@ babylon@7.0.0-beta.47: version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -1313,7 +1493,7 @@ binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" -bluebird@^3.1.1, bluebird@^3.5.1: +bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -1466,6 +1646,12 @@ browserslist@^3.2.7: caniuse-lite "^1.0.30000835" electron-to-chromium "^1.3.45" +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + dependencies: + node-int64 "^0.4.0" + buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" @@ -1604,6 +1790,12 @@ caniuse-lite@^1.0.30000844: version "1.0.30000846" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz#2092911eecad71a89dae1faa62bcc202fde7f959" +capture-exit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + dependencies: + rsvp "^3.3.3" + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -1757,6 +1949,18 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone@2.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -1849,6 +2053,10 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" +compare-versions@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7" + component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1866,6 +2074,21 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +condense-newlines@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" + dependencies: + extend-shallow "^2.0.1" + is-whitespace "^0.3.0" + kind-of "^3.0.2" + +config-chain@~1.1.5: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" @@ -2056,7 +2279,7 @@ conventional-commits-parser@^2.1.7: through2 "^2.0.0" trim-off-newlines "^1.0.0" -convert-source-map@^1.1.0: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2095,7 +2318,7 @@ copy-webpack-plugin@^4.5.1: p-limit "^1.0.0" serialize-javascript "^1.4.0" -core-js@^2.4.0, core-js@^2.5.3: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: version "2.5.6" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.6.tgz#0fe6d45bf3cac3ac364a9d72de7576f4eb221b9d" @@ -2250,6 +2473,15 @@ css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" +css@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.3.tgz#f861f4ba61e79bedc962aa548e5780fd95cbc6be" + dependencies: + inherits "^2.0.1" + source-map "^0.1.38" + source-map-resolve "^0.5.1" + urix "^0.1.0" + cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" @@ -2366,7 +2598,7 @@ debug@*, debug@^3.1.0: dependencies: ms "2.0.0" -debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.1, debug@^2.6.3, debug@^2.6.8: +debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.1, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -2379,7 +2611,7 @@ decamelize-keys@^1.0.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2: +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2407,6 +2639,12 @@ deepmerge@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -2476,10 +2714,20 @@ destroy@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + diacritics@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" @@ -2603,6 +2851,16 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +editorconfig@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" + dependencies: + bluebird "^3.0.5" + commander "^2.9.0" + lru-cache "^3.2.0" + semver "^5.1.0" + sigmund "^1.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2740,6 +2998,10 @@ escodegen@^1.9.0: optionalDependencies: source-map "~0.6.1" +eslint-plugin-jest@^21.15.1: + version "21.15.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.15.2.tgz#d55898636291d97e0c0a5dbe205bef0235157a34" + eslint-plugin-vue-libs@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-vue-libs/-/eslint-plugin-vue-libs-3.0.0.tgz#9b81ae18c654eb2370b9c17d44b58ab759eadf2b" @@ -2857,6 +3119,12 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + dependencies: + merge "^1.1.3" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -2897,6 +3165,10 @@ exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -2932,6 +3204,17 @@ expect@^22.4.3: jest-message-util "^22.4.3" jest-regex-util "^22.4.3" +expect@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.0.0.tgz#2c3ab0a44dae319e00a73e3561762768d03a2b27" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^23.0.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^23.0.0" + jest-message-util "^23.0.0" + jest-regex-util "^23.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2976,6 +3259,12 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-from-css@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/extract-from-css/-/extract-from-css-0.4.4.tgz#1ea7df2e7c7c6eb9922fa08e8adaea486f6f8f92" + dependencies: + css "^2.1.0" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -3015,6 +3304,12 @@ fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + dependencies: + bser "^2.0.0" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -3046,6 +3341,13 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" @@ -3065,6 +3367,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +find-babel-config@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.1.0.tgz#acc01043a6749fec34429be6b64f542ebb5d6355" + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" @@ -3188,7 +3497,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.1.2: +fsevents@^1.1.2, fsevents@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" dependencies: @@ -3216,6 +3525,10 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + get-own-enumerable-property-symbols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" @@ -3345,6 +3658,10 @@ globals@^11.0.1, globals@^11.1.0: version "11.5.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -3414,7 +3731,11 @@ gray-matter@^4.0.1: section-matter "^1.0.0" strip-bom-string "^1.0.0" -handlebars@^4.0.2: +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + +handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -3540,6 +3861,13 @@ hogan.js@^3.0.2: mkdirp "0.3.0" nopt "1.0.10" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + hosted-git-info@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" @@ -3722,6 +4050,10 @@ invariant@^2.2.0, invariant@^2.2.2: dependencies: loose-envify "^1.0.0" +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" @@ -4013,6 +4345,10 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -4057,10 +4393,119 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istanbul-api@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" + dependencies: + async "^2.1.4" + compare-versions "^3.1.0" + fileset "^2.0.2" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-hook "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-report "^1.1.4" + istanbul-lib-source-maps "^1.2.4" + istanbul-reports "^1.3.0" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" + +istanbul-lib-hook@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.0" + semver "^5.3.0" + +istanbul-lib-report@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" + dependencies: + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" + dependencies: + handlebars "^4.0.3" + javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" +jest-changed-files@^22.2.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" + dependencies: + throat "^4.0.0" + +jest-cli@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.0.0.tgz#29287498c9d844dcda5aaf011a4c82f9a888836e" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.11" + import-local "^1.0.0" + is-ci "^1.0.10" + istanbul-api "^1.3.1" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-source-maps "^1.2.4" + jest-changed-files "^22.2.0" + jest-config "^23.0.0" + jest-environment-jsdom "^23.0.0" + jest-get-type "^22.1.0" + jest-haste-map "^23.0.0" + jest-message-util "^23.0.0" + jest-regex-util "^23.0.0" + jest-resolve-dependencies "^23.0.0" + jest-runner "^23.0.0" + jest-runtime "^23.0.0" + jest-snapshot "^23.0.0" + jest-util "^23.0.0" + jest-validate "^23.0.0" + jest-worker "^23.0.0" + micromatch "^2.3.11" + node-notifier "^5.2.1" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + yargs "^11.0.0" + jest-config@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403" @@ -4077,6 +4522,24 @@ jest-config@^22.4.3: jest-validate "^22.4.3" pretty-format "^22.4.3" +jest-config@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.0.0.tgz#9444d858873ad567376f8cfe139fd8828e8d494b" + dependencies: + babel-core "^6.0.0" + babel-jest "^23.0.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^23.0.0" + jest-environment-node "^23.0.0" + jest-get-type "^22.1.0" + jest-jasmine2 "^23.0.0" + jest-regex-util "^23.0.0" + jest-resolve "^23.0.0" + jest-util "^23.0.0" + jest-validate "^23.0.0" + pretty-format "^23.0.0" + jest-diff@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" @@ -4086,6 +4549,21 @@ jest-diff@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" +jest-diff@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.0.0.tgz#0a00b2157f518eec338121ccf8879c529269a88e" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.0.0" + +jest-docblock@^22.4.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" + dependencies: + detect-newline "^2.1.0" + jest-environment-jsdom@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" @@ -4094,6 +4572,14 @@ jest-environment-jsdom@^22.4.3: jest-util "^22.4.3" jsdom "^11.5.1" +jest-environment-jsdom@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.0.0.tgz#57b0f0dd263359a86d7952a4b712b3fabca1a625" + dependencies: + jest-mock "^23.0.0" + jest-util "^23.0.0" + jsdom "^11.5.1" + jest-environment-node@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" @@ -4101,10 +4587,29 @@ jest-environment-node@^22.4.3: jest-mock "^22.4.3" jest-util "^22.4.3" -jest-get-type@^22.4.3: +jest-environment-node@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.0.0.tgz#ef93a414a612484cf585c8b32ccc5ae30ce6095c" + dependencies: + jest-mock "^23.0.0" + jest-util "^23.0.0" + +jest-get-type@^22.1.0, jest-get-type@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" +jest-haste-map@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.0.0.tgz#09be1c9a37c16b2e2f25398864eb2806d309ca96" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^22.4.0" + jest-serializer "^23.0.0" + jest-worker "^23.0.0" + micromatch "^2.3.11" + sane "^2.0.0" + jest-jasmine2@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965" @@ -4121,6 +4626,27 @@ jest-jasmine2@^22.4.3: jest-util "^22.4.3" source-map-support "^0.5.0" +jest-jasmine2@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.0.0.tgz#ea26f87b5c223e1a70985032f0727d8f855e59df" + dependencies: + chalk "^2.0.1" + co "^4.6.0" + expect "^23.0.0" + is-generator-fn "^1.0.0" + jest-diff "^23.0.0" + jest-matcher-utils "^23.0.0" + jest-message-util "^23.0.0" + jest-snapshot "^23.0.0" + jest-util "^23.0.0" + pretty-format "^23.0.0" + +jest-leak-detector@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.0.0.tgz#ec93d755b21e8b2c4c4e59b8cccab1805a704ab3" + dependencies: + pretty-format "^23.0.0" + jest-matcher-utils@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" @@ -4129,6 +4655,14 @@ jest-matcher-utils@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" +jest-matcher-utils@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.0.0.tgz#ca2168fe5a7a416c0d7f2916e969e89dcce9d92a" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^23.0.0" + jest-message-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" @@ -4139,14 +4673,39 @@ jest-message-util@^22.4.3: slash "^1.0.0" stack-utils "^1.0.1" +jest-message-util@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.0.0.tgz#073f3d76c701f7c718a4b9af1eb7f138792c4796" + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + jest-mock@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" +jest-mock@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.0.0.tgz#d9d897a1b74dc05c66a737213931496215897dd8" + jest-regex-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" +jest-regex-util@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.0.0.tgz#dd5c1fde0c46f4371314cf10f7a751a23f4e8f76" + +jest-resolve-dependencies@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.0.tgz#c3e1cfee0e543dee10e6ec0628df69cd239244c9" + dependencies: + jest-regex-util "^23.0.0" + jest-snapshot "^23.0.0" + jest-resolve@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" @@ -4154,6 +4713,68 @@ jest-resolve@^22.4.3: browser-resolve "^1.11.2" chalk "^2.0.1" +jest-resolve@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.0.0.tgz#f04362fd0531b4546399df76c55c3214a9f45e02" + dependencies: + browser-resolve "^1.11.2" + chalk "^2.0.1" + realpath-native "^1.0.0" + +jest-runner@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.0.0.tgz#b198a2dd78d57a2c0f3f8d7c7f97b62673922020" + dependencies: + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^23.0.0" + jest-docblock "^22.4.0" + jest-haste-map "^23.0.0" + jest-jasmine2 "^23.0.0" + jest-leak-detector "^23.0.0" + jest-message-util "^23.0.0" + jest-runtime "^23.0.0" + jest-util "^23.0.0" + jest-worker "^23.0.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.0.0.tgz#8619227fe2e01603d542b9101dd3e64ef4593f66" + dependencies: + babel-core "^6.0.0" + babel-plugin-istanbul "^4.1.6" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^23.0.0" + jest-haste-map "^23.0.0" + jest-message-util "^23.0.0" + jest-regex-util "^23.0.0" + jest-resolve "^23.0.0" + jest-snapshot "^23.0.0" + jest-util "^23.0.0" + jest-validate "^23.0.0" + json-stable-stringify "^1.0.1" + micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^11.0.0" + +jest-serializer-vue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jest-serializer-vue/-/jest-serializer-vue-1.0.0.tgz#82514e9b3d94a17fe618df3ede84046090f94815" + dependencies: + pretty "2.0.0" + +jest-serializer@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.0.tgz#263411ac92e1e3dde243858642bb04e8a986e8ca" + jest-snapshot@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" @@ -4165,6 +4786,17 @@ jest-snapshot@^22.4.3: natural-compare "^1.4.0" pretty-format "^22.4.3" +jest-snapshot@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.0.0.tgz#49cdb92a69b9999dbf92e0634d5ba1e8a8586803" + dependencies: + chalk "^2.0.1" + jest-diff "^23.0.0" + jest-matcher-utils "^23.0.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^23.0.0" + jest-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" @@ -4177,6 +4809,18 @@ jest-util@^22.4.3: mkdirp "^0.5.1" source-map "^0.6.0" +jest-util@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.0.0.tgz#86386800ffbe3fe17a06320e0cf9ca9b7868263b" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^23.0.0" + mkdirp "^0.5.1" + source-map "^0.6.0" + jest-validate@^22.4.0, jest-validate@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" @@ -4187,6 +4831,28 @@ jest-validate@^22.4.0, jest-validate@^22.4.3: leven "^2.1.0" pretty-format "^22.4.3" +jest-validate@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.0.0.tgz#f88bc897b6cc376979aff0262d1025df1302d520" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^23.0.0" + +jest-worker@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.0.0.tgz#e6b1378b81f8e6a108f3be33a1faa830c22ea450" + dependencies: + merge-stream "^1.0.1" + +jest@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.0.0.tgz#9282980309f5cde27aadc59ae583f1117c0e4430" + dependencies: + import-local "^1.0.0" + jest-cli "^23.0.0" + joi@^11.1.1: version "11.4.0" resolved "https://registry.yarnpkg.com/joi/-/joi-11.4.0.tgz#f674897537b625e9ac3d0b7e1604c828ad913ccb" @@ -4199,11 +4865,20 @@ js-base64@^2.1.9: version "2.4.5" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" +js-beautify@^1.6.12, js-beautify@^1.6.14: + version "1.7.5" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919" + dependencies: + config-chain "~1.1.5" + editorconfig "^0.13.2" + mkdirp "~0.5.0" + nopt "~3.0.1" + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.11.0, js-yaml@^3.4.3, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.11.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: @@ -4252,6 +4927,10 @@ jsdom@^11.5.1: ws "^4.0.0" xml-name-validator "^3.0.0" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + jsesc@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" @@ -4276,11 +4955,17 @@ json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.0: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -4290,6 +4975,10 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -4435,6 +5124,12 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + leb@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/leb/-/leb-0.3.0.tgz#32bee9fad168328d6aea8522d833f4180eed1da3" @@ -4632,7 +5327,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@^4.13.1, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: +lodash@4.x, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -4699,6 +5394,12 @@ lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + dependencies: + pseudomap "^1.0.1" + lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" @@ -4716,6 +5417,12 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -4788,6 +5495,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -4836,10 +5549,20 @@ merge-source-map@^1.1.0: dependencies: source-map "^0.6.1" +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + merge2@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -4922,7 +5645,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -4939,7 +5662,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -5106,6 +5829,17 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +node-cache@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-4.2.0.tgz#48ac796a874e762582692004a376d26dfa875811" + dependencies: + clone "2.x" + lodash "4.x" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" @@ -5134,6 +5868,15 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" +node-notifier@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + dependencies: + growly "^1.3.0" + semver "^5.4.1" + shellwords "^0.1.1" + which "^1.3.0" + node-pre-gyp@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" @@ -5162,6 +5905,12 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +nopt@~3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" @@ -5385,7 +6134,15 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5513,7 +6270,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@1.0.1, path-is-absolute@^1.0.0: +path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -5927,6 +6684,13 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +pretty-format@^23.0.0: + version "23.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.0.0.tgz#b66dc584a0907b1969783c4c20e4d1180b18ac75" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + pretty-time@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.0.0.tgz#544784adecaa2cd7d045ff8a8f1d4791c8e06e23" @@ -5934,13 +6698,21 @@ pretty-time@^1.0.0: is-number "^5.0.0" nanoseconds "^1.0.0" +pretty@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" + dependencies: + condense-newlines "^0.2.1" + extend-shallow "^2.0.1" + js-beautify "^1.6.12" + prismjs@^1.13.0: version "1.14.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.14.0.tgz#bbccfdb8be5d850d26453933cb50122ca0362ae0" optionalDependencies: clipboard "^2.0.0" -private@^0.1.6: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -5964,11 +6736,15 @@ promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" -pseudomap@^1.0.2: +pseudomap@^1.0.1, pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -6130,6 +6906,12 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" +realpath-native@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + dependencies: + util.promisify "^1.0.0" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -6333,6 +7115,10 @@ request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + require-from-string@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" @@ -6341,6 +7127,10 @@ require-from-string@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -6420,6 +7210,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rsvp@^3.3.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -6462,6 +7256,21 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" +sane@^2.0.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + sax@0.5.x: version "0.5.8" resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" @@ -6506,7 +7315,7 @@ serialize-javascript@^1.3.0, serialize-javascript@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -6557,6 +7366,14 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6618,7 +7435,7 @@ source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" -source-map-resolve@^0.5.0: +source-map-resolve@^0.5.0, source-map-resolve@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" dependencies: @@ -6628,7 +7445,13 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.0: +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.0, source-map-support@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" dependencies: @@ -6639,7 +7462,7 @@ source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" -source-map@0.1.x: +source-map@0.1.x, source-map@^0.1.38: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" dependencies: @@ -6649,7 +7472,7 @@ source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -6798,6 +7621,13 @@ string-argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -6851,16 +7681,16 @@ strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" +strip-bom@3.0.0, strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -6875,7 +7705,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.0, 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" @@ -6902,7 +7732,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.2.3: +supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -6989,6 +7819,16 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" +test-exclude@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" + dependencies: + arrify "^1.0.1" + micromatch "^3.1.8" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + text-extensions@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" @@ -7009,6 +7849,10 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + through2@^2.0.0, through2@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -7044,6 +7888,10 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -7052,6 +7900,10 @@ to-factory@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/to-factory/-/to-factory-1.0.0.tgz#8738af8bd97120ad1d4047972ada5563bf9479b1" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -7120,6 +7972,15 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + 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" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -7419,6 +8280,21 @@ vue-hot-reload-api@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz#97976142405d13d8efae154749e88c4e358cf926" +vue-jest@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/vue-jest/-/vue-jest-2.6.0.tgz#23dc99a4dce0bb59fea3946e1317b234968cf12a" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.26.0" + chalk "^2.1.0" + extract-from-css "^0.4.4" + find-babel-config "^1.1.0" + js-beautify "^1.6.14" + node-cache "^4.1.1" + object-assign "^4.1.1" + source-map "^0.5.6" + tsconfig "^7.0.0" + vue-template-es2015-compiler "^1.6.0" + vue-loader@^15.2.1: version "15.2.1" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.2.1.tgz#89a13b6b7dec63614729c73b1b46a571a69bb20e" @@ -7490,6 +8366,19 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" @@ -7659,12 +8548,22 @@ whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + which@^1.2.10, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" +which@^1.2.12, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -7794,6 +8693,13 @@ worker-farm@^1.5.2: dependencies: errno "~0.1.7" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -7805,7 +8711,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^2.0.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -7838,6 +8744,10 @@ xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -7850,6 +8760,29 @@ yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.0" + +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"